De quoi s'agit-il
Les historiques de conversation réels sont désordonnés. À côté des réponses que vous souhaitez voir le modèle reproduire, ils contiennent des messages d'erreur, des refus émanant d'une couche de sécurité, un balisage que seule l'interface de chat comprend, des réponses indiquant simplement qu'un fichier est prêt, et la même conversation enregistrée deux fois. Le nettoyage est la première étape de la préparation des données : il supprime ou répare ces enregistrements avant que quoi que ce soit ne soit converti en fichier d'entraînement.
C'est important car le fine-tuning n'a aucune notion de « mauvais exemple ». Chaque réponse cible qui atteint le fichier d'entraînement est traitée comme la bonne réponse, et le modèle est incité à la rendre plus probable. Un message d'erreur utilisé dix fois comme cible apprend au modèle que les messages d'erreur constituent une réponse normale.
Comment cela fonctionne
Chaque étape recherche un modèle spécifique, et chacune a une raison fondée sur le fonctionnement de l'entraînement. Certaines étapes suppriment une réponse cible (elle reste lisible en tant que contexte, elle n'est simplement pas évaluée) ; d'autres suppriment un enregistrement entier ou réécrivent sa structure.
| Étape | Ce qu'il détecte | Pourquoi cela nuirait à l'entraînement |
|---|---|---|
| Balisage de l'interface utilisateur | Balises utilisées par l'interface de chat pour afficher des boutons, des panneaux rétractables et autres éléments similaires | Un modèle utilisé en dehors de cette interface afficherait des balises brutes dans ses réponses |
| Réponses d'erreur | « Erreur lors du traitement de la requête… » et autres défaillances système similaires | Le modèle apprendrait à échouer délibérément |
| Blocages de sécurité | Refus insérés par une couche de sécurité de la plateforme, et non rédigés par le modèle | Enseigne des refus pour des questions auxquelles il était tout à fait possible de répondre |
| Annonces de fichiers | Réponses courtes dont le véritable résultat était un fichier généré, par ex. « Votre présentation est prête » | Le fichier n'étant pas dans le texte, le modèle apprend à s'attribuer un travail qu'il n'a pas effectué |
| Structure | Une conversation qui s'ouvre avec l'assistant ; deux messages consécutifs du même rôle | Les formats d'entraînement exigent une alternance des tours entre l'utilisateur et l'assistant, en commençant par l'utilisateur |
| Doublons | La même conversation avec la même réponse, enregistrée ou importée deux fois | Compte un exemple deux fois : plus de poids, plus de mémorisation, aucune nouvelle information |
| Réponses répétées | Une réponse identique utilisée comme cible à de nombreuses reprises, comme une salutation ou un avertissement standard | Quelques phrases toutes faites domineraient et le modèle y aurait recours partout |
Les doublons méritent une attention particulière. Les recherches sur les grands jeux d'entraînement ont révélé que le texte répété est un facteur majeur de mémorisation : Lee et al. (2021) ont montré que la déduplication des données d'entraînement permettait aux modèles de générer du texte mémorisé dix fois moins souvent, et Carlini et al. (2022) ont découvert que la fréquence de duplication d'une séquence est l'un des indicateurs les plus fiables pour savoir si un modèle la répétera mot pour mot. Un jeu de fine-tuning étant beaucoup plus petit, une seule conversation répétée cinq fois représente une part importante de ce que le modèle voit.
L'étape de plafonnement des réponses répétées est plus souple que la déduplication. Une réponse courte et identique telle que « Ravi de vous aider — autre chose ? » peut être tout à fait pertinente, elle est donc conservée jusqu'à une certaine limite et seules les copies excédentaires cessent d'être des cibles. Le modèle apprend toujours la phrase, sans pour autant apprendre à la dire à tout bout de champ.
- Une équipe d'assistance sélectionne 1 000 conversations contenant 1 850 réponses de l'assistant marquées comme cibles.
- 38 cibles sont des messages d'erreur datant d'une semaine de panne de service et 12 sont des refus liés aux garde-fous. Ces 50 éléments ne sont plus considérés comme des cibles.
- 27 cibles sont des messages « Votre rapport est prêt » dont le véritable résultat était un PDF. Supprimées : le texte seul ne peut pas apprendre au modèle à produire un PDF.
- 64 cibles se trouvent dans des conversations qui ont été importées deux fois. Une seule copie de chaque est conservée.
- La formule de politesse « Puis-je vous aider avec autre chose ? » apparaît comme cible à 71 reprises. Avec un plafond fixé, par exemple, à 30, 41 copies ne sont plus considérées comme des cibles.
- Il reste 1 668 cibles, soit environ 90 %. L'entraînement coûte légèrement moins cher, et les 10 % supprimés correspondaient aux réponses les plus susceptibles de dégrader le modèle.
Quand cela est pertinent
- Toujours pour les journaux d'un produit en production. Les pannes, les couches de sécurité et les fonctionnalités de l'interface laissent toutes des traces qui ressemblent à des réponses.
- Davantage pour les petits jeux de données. Sur 200 cibles, dix mauvaises représentent 5 % du signal ; sur 20 000, elles ne sont que du bruit.
- Conversations importées. Les exportations provenant d'autres outils contiennent souvent des conversations répétées ou qui se chevauchent partiellement.
- Lorsque le modèle s'exécutera en dehors de l'interface de chat. C'est à ce moment-là que le balisage de l'interface utilisateur doit disparaître ; ne le conservez que si le modèle sera utilisé dans la même interface que celle qui l'affiche.
Désactivé par défaut. Ne l'activez que si le modèle entraîné doit répondre dans la même interface de chat qui comprend ces balises, et que vous souhaitez qu'il continue à produire des boutons et des sections rétractables.
Erreurs courantes
- Partir du principe qu'un grand jeu de données rend le nettoyage inutile : les doublons et les réponses toutes faites augmentent avec la taille du jeu de données.
- Entraîner le modèle sur des réponses du type « Votre fichier est prêt », puis s'étonner qu'il prétende avoir créé des fichiers qu'il n'a jamais produits.
- Conserver le balisage de l'interface pour un modèle qui sera exécuté dans un autre produit, où les balises apparaîtront sous forme de texte brut.
- Corriger les symptômes à chaque préparation au lieu de s'attaquer à la source : si de nombreuses réponses sont des erreurs ou des refus, les conversations sous-jacentes ou le flux du produit nécessitent une attention particulière.
- Dédupliquer par message plutôt que par conversation, ce qui peut laisser une réponse sans la question qui la justifie.
Références et lectures complémentaires
Les sources externes s'ouvrent dans un nouvel onglet.
- 01Deduplicating Training Data Makes Language Models BetterLee et al., 2021 · arXiv · arxiv.orgMontre la quantité de texte répété dans les jeux de données réels et comment sa suppression réduit la mémorisation.
- 02Quantifying Memorization Across Neural Language ModelsCarlini et al., 2022 · arXiv · arxiv.orgLa mémorisation augmente avec la taille du modèle, avec la fréquence de duplication d'un exemple et avec la longueur du prompt.
- 03LIMA: Less Is More for AlignmentZhou et al., 2023 · arXiv · arxiv.org1 000 exemples soigneusement sélectionnés ont suffi pour obtenir de solides résultats : la qualité prime sur la quantité.
- 04Supervised fine-tuningOpenAI API docs · developers.openai.comLe point de vue d'un fournisseur sur ce que devrait contenir un exemple d'entraînement.