Préparer vos données pour affiner un modèle de complétion de conversation
Lorsque vous décidez que vous voulez affiner un modèle de langage, vous devez identifier le jeu de données que vous pouvez utiliser pour affiner votre modèle de langage.
Comme pour n’importe quel modèle Machine Learning, la qualité du jeu de données a un effet considérable sur la qualité de votre modèle. Même si vous avez besoin de moins de données que lorsque vous entraînez un modèle de langage à partir de zéro, vous pourriez néanmoins avoir besoin de suffisamment de données pour optimiser la cohérence du comportement souhaité de votre modèle. La quantité de données dont vous avez besoin dépend de votre cas d’usage.
Lorsque vous affinez un modèle de langage pour la complétion des conversations, les données que vous utilisez pour affiner ce modèle sont une collection d’exemples de conversations. Plus précisément, les données doivent contenir trois composants :
- Message système
- Le message utilisateur
- La réponse de l’assistant
Les trois variables sont rassemblées dans un fichier JSON Lines, ou JSONL. Par exemple, une ligne dans un tel jeu de données pourrait ressembler à ceci :
{"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Is Xbox better than PlayStation?"}, {"role": "assistant", "content": "I apologize, but I cannot provide personal opinions. My primary job is to assist you with any issues related to your Xbox device. Do you have any Xbox-related issues that need addressing?"}]}
Le jeu de données doit montrer le comportement idéal du modèle. Vous pouvez créer ce jeu de données en fonction de l’historique des conversations d’une application de conversation dont vous disposez. Voici quelques points à garder à l’esprit lorsque vous utilisez des données réelles :
- Supprimez toutes les informations personnelles ou sensibles.
- Ne vous concentrez pas uniquement sur la création d’un jeu de données d’entraînement volumineux, mais assurez-vous également que votre jeu de données inclut un ensemble diversifié d’exemples.
Vous pouvez inclure plusieurs tours d’une conversation sur une seule ligne dans le jeu de données. Si vous souhaitez affiner uniquement des messages spécifiques de l’assistant, vous pouvez éventuellement utiliser la paire clé-valeur weight
. Lorsque le poids est défini sur 0, le message est ignoré, lorsque vous le définissez sur 1, le message est inclus pour l’entraînement.
Exemple de format de fichier de conversation à plusieurs tour avec des pondérations :
{"messages": [{"role": "system", "content": "Marv is a factual chatbot that is also sarcastic."}, {"role": "user", "content": "What's the capital of France?"}, {"role": "assistant", "content": "Paris", "weight": 0}, {"role": "user", "content": "Can you be more sarcastic?"}, {"role": "assistant", "content": "Paris, as if everyone doesn't know that already.", "weight": 1}]}
Lorsque vous préparez votre jeu de données pour affiner un modèle de langage, vous devez comprendre les comportements souhaités de votre modèle, créer un jeu de données au format JSONL et vérifier que les exemples que vous incluez sont de haute qualité et divers. En préparant votre jeu de données, vous avez plus de chances que le modèle affiné améliore les performances de votre application de conversation.