Ressources/Entraînement du modèle/Des conversations aux exemples d'entraînement

Concept

Conversations à tours multiples et pondérations

Comment une conversation avec plusieurs réponses de l'assistant devient des données d'entraînement, les deux formats utilisés par les fournisseurs à cet effet, et l'effet secondaire à surveiller.

Chapitre 33 min de lecture4 références

Le problème

Les conversations réelles se résument rarement à une question et une réponse. Un échange avec le support peut compter jusqu'à dix interactions : des salutations, une question de clarification, deux réponses partielles et une solution finale. Certaines de ces réponses de l'assistant méritent d'être apprises, d'autres non. Un format d'entraînement doit exprimer à la fois le contexte complet et le choix des réponses qui comptent.

Poids par message · un enregistrement
userBonjourassistant · weight 0contexte uniquementuserExporter mon rapport en PDFassistant · weight 1appris
Sans poids · un enregistrement par cible
userBonjourassistantappris quand mêmeuserExporter mon rapport en PDFassistantappris✂
La même discussion, où seule la deuxième réponse a été choisie. Avec des poids, la première réponse reste du contexte. Sans poids, l'enregistrement est coupé après la réponse choisie, et chaque réponse de l'assistant à l'intérieur est apprise.

Approche 1 : poids par message

Certains formats permettent à chaque message de l'assistant de porter un poids. L'ensemble de la conversation constitue un seul enregistrement ; les réponses marquées weight: 1 sont apprises, et celles marquées weight: 0 servent uniquement de contexte — lues, mais non évaluées.

Poids par message
{"messages": [
  {"role": "user",      "content": "Hi"},
  {"role": "assistant", "content": "Hello! How can I help?", "weight": 0},
  {"role": "user",      "content": "Export my report as PDF"},
  {"role": "assistant", "content": "Open the report, click Export → PDF…", "weight": 1}
]}

C'est l'option la plus efficace. Chaque enregistrement est traité une seule fois, toutes les cibles d'une conversation partagent son contexte, et le choix de ce qui doit être appris est précis.

Approche 2 : un enregistrement par cible

Les formats sans pondération peuvent seulement dire « voici une conversation ; apprenez les réponses de son assistant ». Pour apprendre une réponse en particulier, la conversation est coupée juste après celle-ci et enregistrée comme une entrée distincte. Une conversation avec trois cibles devient trois enregistrements, chacun plus long que le précédent.

Sans poids — l'enregistrement est coupé après la réponse choisie
{"messages": [
  {"role": "user",      "content": "Hi"},
  {"role": "assistant", "content": "Hello! How can I help?"},
  {"role": "user",      "content": "Export my report as PDF"},
  {"role": "assistant", "content": "Open the report, click Export → PDF…"}
]}

Il y a deux effets secondaires. Toute réponse antérieure de l'assistant au sein d'un enregistrement est également apprise, car le format ne peut pas la marquer uniquement comme contexte — y compris les réponses que vous n'avez pas choisies. De plus, le début de la conversation apparaît dans plusieurs enregistrements, il est donc traité, et facturé, plusieurs fois.

Exemple chiffré
  1. Une conversation comporte quatre échanges d'environ 250 jetons chacun. Les réponses 2 et 4 sont des cibles ; les réponses 1 et 3 ne le sont pas.
  2. Avec poids : un enregistrement d'environ 1 000 jetons. Les réponses 2 et 4 sont apprises une fois chacune ; les réponses 1 et 3 servent de contexte.
  3. Sans poids : un enregistrement coupé après la réponse 2 (environ 500 jetons) et un coupé après la réponse 4 (environ 1 000 jetons) — 1 500 jetons au total, soit 50 % de plus.
  4. Chaque réponse de l'assistant dans un enregistrement est apprise : les réponses 1 et 2 deux fois, les réponses 3 et 4 une fois. Les réponses 1 et 3, que vous n'avez pas choisies, sont tout de même apprises.

Quand cela compte

La différence est minime lorsque les conversations sont courtes ou que chaque réponse de l'assistant est bonne. Elle a son importance lorsque les conversations sont longues, lorsque les premières réponses sont médiocres (une première tentative erronée corrigée par la suite), ou lorsque vous avez délibérément omis des réponses. Avec un fournisseur qui prend en charge les pondérations, vous obtenez exactement ce que vous avez choisi ; avec un fournisseur qui ne le fait pas, il est préférable de corriger les réponses faibles avant l'entraînement.

Erreurs courantes

  • Supposer qu'une réponse que vous n'avez pas marquée ne sera jamais apprise, quel que soit le format du fournisseur.
  • Laisser une mauvaise réponse initiale dans une longue conversation lorsque le fournisseur ne peut pas l'exclure.
  • Comparer le nombre de jetons entre les fournisseurs sans tenir compte du contexte répété.
  • Répartir les enregistrements d'une même conversation entre l'entraînement et la validation ; c'est pour cette raison que la répartition s'effectue par conversation.

Références et lectures complémentaires

Les sources externes s'ouvrent dans un nouvel onglet.

  1. 01SFT TrainerHugging Face TRL docs · huggingface.coEntraînement sur les tours de l'assistant uniquement au sein d'une conversation complète.
  2. 02Chat templatesHugging Face Transformers docs · huggingface.coComment les chats à tours multiples sont structurés pour un modèle, et comment les tours de l'assistant sont localisés.
  3. 03Supervised fine-tuningOpenAI API docs · developers.openai.comLes données d'entraînement au format chat d'un fournisseur, y compris des exemples à tours multiples.
  4. 04Prepare supervised fine-tuning data for Gemini modelsGoogle Cloud documentation · docs.cloud.google.comLe format du contenu avec les rôles de l'utilisateur et du modèle.

Transformez des semaines de travail d'expert en quelques minutes

Découvrez comment Scalata s'adapte à votre équipe, à vos données et à vos contrôles.

Contacter le service commercial