Préparer vos données pour affiner un modèle de complétion de conversation
Le réglage précis implique la combinaison d’un modèle de base approprié à utiliser en tant que base et d’un ensemble de données d’apprentissage qui incluent des exemples d’invites et de réponses que le modèle peut apprendre. Cette unité couvre la compréhension du format des données d’apprentissage, la préparation des jeux de données à partir de données réelles et la génération de données synthétiques pour le réglage précis.
Comprendre le format des données d’apprentissage
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
- 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?"}]}
Préparer des jeux de données à partir de données réelles
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}]}
Générer des données synthétiques pour un réglage précis
La création manuelle de jeux de données d’entraînement de haute qualité peut être fastidieuse et coûteuse. Microsoft Foundry fournit des fonctionnalités de génération de données synthétiques qui peuvent vous aider à créer des données d’apprentissage à partir de documents de référence ou de spécifications d’API.
La génération de données synthétiques est particulièrement utile quand :
- Les données réelles sont rares ou difficiles à collecter
- Vous devez conserver la confidentialité tout en conservant une structure utile
- Vous souhaitez générer des données spécifiques au domaine à partir de documents ou de code existants
- Vous souhaitez réduire le coût par rapport à la collecte manuelle de données
Choisir des générateurs de données synthétiques
Microsoft Foundry propose deux types de générateurs de données synthétiques :
Générateur Q&A simple : convertit les documents de domaine (PDF, Markdown ou texte brut jusqu’à 20 Mo) en paires questions-réponses affinées. Vous pouvez configurer le type de question :
- Réponse longue : génère des questions qui nécessitent un raisonnement analytique dans la réponse du modèle
- Réponse courte : génère des questions axées sur la concision factuelle
Générateur d'utilisation d'outils : crée des dialogues en plusieurs étapes avec des appels d'outils basés sur votre surface d'API. Nécessite une spécification OpenAPI 3.0.x ou 3.1.x valide (format JSON, jusqu’à 20 Mo) qui décrit les API que vous souhaitez que le modèle apprenne à appeler en tant qu’outils.
Générer des données synthétiques dans le portail
Pour générer des données synthétiques dans Microsoft Foundry :
- Accéder à Data > génération de données synthétiques dans le portail
- Sélectionner Générer des données
- Choisir un type de tâche (simple Q&A ou utilisation de l’outil)
- Configurer les paramètres de génération le cas échéant
- Charger votre fichier de référence
- Spécifiez le nombre d’échantillons à générer (entre 50 et 1 000)
- Sélectionnez le modèle à utiliser pour la génération de données
- Activer éventuellement un fractionnement de validation de 80/20
- Envoi du travail
Le jeu de données généré est automatiquement mis en forme en tant que fichiers JSONL compatibles avec les workflows de réglage précis de Microsoft Foundry. Vous pouvez télécharger le jeu de données pour révision ou l’utiliser directement dans un réglage précis.
Appliquer les meilleures pratiques pour les données synthétiques
Pour obtenir les meilleurs résultats lors de l’utilisation de données synthétiques :
- Utilisez des fichiers de référence de haute qualité : la qualité de votre fichier de référence affecte directement les données générées. Utilisez des documents pertinents et bien structurés avec une mise en forme claire et évitez un bruit excessif ou des informations non pertinentes.
- Commencez petit et itérer : commencez par une taille d’échantillon plus petite pour évaluer la qualité, puis augmentez la taille après examen et affinement de votre approche.
- Combiner avec des données réelles : dans la mesure du possible, mélanger des données synthétiques avec des exemples réels pour améliorer les performances et la généralisation des modèles.
- Tester des hyperparamètres : lors de l’optimisation des données synthétiques, vous devez ajuster les taux d’apprentissage et d’autres paramètres différemment des données réelles pour éviter le surajustement.
- Surveillez les performances : évaluez régulièrement votre modèle affiné sur les tâches réelles pour vous assurer qu’il répond à vos besoins.
Lors de la préparation de votre jeu de données pour affiner un modèle de langage, vous devez comprendre les comportements de votre modèle souhaité, créer un jeu de données au format JSONL (manuellement ou par le biais d’une génération synthétique) et vous assurer que les exemples que vous incluez sont de haute qualité et diversifiés. En préparant soigneusement votre jeu de données, vous avez une plus grande chance que le modèle affiné améliore les performances de votre application de conversation.