View a markdown version of this page

Préparation des données pour SFT sur Amazon Nova 2 - Amazon Nova

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Préparation des données pour SFT sur Amazon Nova 2

SFT sur Amazon Nova 2 permet de comprendre du texte, des images, des vidéos et des documents, ainsi que d'appeler des outils, avec ou sans support de raisonnement. Cette page décrit les contraintes, les formats pris en charge et les meilleures pratiques pour préparer les données d'entraînement SFT pour les modèles Amazon Nova 2 Understanding.

Astuce

Pour valider le format de votre jeu de données avant de commencer une tâche de formation, consultezOutils de validation.

Format de données

Les données Amazon Nova 2 SFT utilisent le même format d'API Converse qu'Amazon Nova 1, avec l'ajout de champs de contenu de raisonnement facultatifs.

Chaque ligne de votre fichier d'entraînement JSONL est un objet JSON avec les champs de niveau supérieur suivants. Développez une section pour en savoir plus :

Obligatoire. Le messages champ est un tableau d'objets de message, dont chacun définit un tournant dans la conversation. Un objet de message contient les champs suivants :

  • rôle — Obligatoire. Définit si le message provient de user (l'invite envoyée au modèle) ou assistant (la réponse du modèle). Le premier tour doit avoir lieuuser, le dernier doit l'être et assistant les tours doivent alterner.

  • contenu — Obligatoire. Un tableau de blocs de contenu pour ce tour.

Le content champ correspond à un tableau de blocs de contenu. Les données Amazon Nova 2 SFT prennent en charge les blocs suivants :

text

Chaîne spécifiant le contenu du texte. Pris en charge à la fois user et assistant tour à tour.

Voici un exemple d'objet de message avec un content tableau contenant uniquement un bloc de text contenu :

{ "role": "user", "content": [ { "text": "string" } ] }
image

Un objet image spécifiant son format et son emplacement S3. Pris en charge uniquement à user tour de rôle.

Voici un exemple d'objet de message avec un tableau de contenu contenant uniquement un bloc de contenu d'image :

{ "role": "user", "content": [ { "image": { "format": "jpeg", "source": { "s3Location": { "uri": "s3://your-bucket/your-image.jpg", "bucketOwner": "account-id" } } } } ] }
video

Un objet vidéo spécifiant son format et son emplacement S3. Pris en charge uniquement à user tour de rôle.

Voici un exemple d'objet de message avec un tableau de contenu contenant uniquement un bloc de contenu vidéo :

{ "role": "user", "content": [ { "video": { "format": "mp4", "source": { "s3Location": { "uri": "s3://your-bucket/your-video.mp4", "bucketOwner": "account-id" } } } } ] }
document

Un objet de document spécifiant son format et son emplacement S3. Pris en charge uniquement à user tour de rôle.

Voici un exemple d'objet de message avec un tableau de contenu contenant uniquement un bloc de contenu de document :

{ "role": "user", "content": [ { "document": { "format": "pdf", "source": { "s3Location": { "uri": "s3://your-bucket/your-document.pdf", "bucketOwner": "account-id" } } } } ] }
reasoningContent

Un objet de trace de raisonnement. Pris en charge uniquement à assistant tour de rôle. Seul le raisonnement basé sur le texte est pris en charge ; le contenu de raisonnement basé sur des images n'est pas pris en charge.

Voici un exemple d'objet de message avec un tableau de contenu contenant uniquement un bloc de contenu raisonné :

{ "role": "assistant", "content": [ { "reasoningContent": { "reasoningText": { "text": "string" } } }, { "text": "final answer" } ] }
toolUse

Un objet d'invocation d'outil. Pris en charge uniquement à assistant tour de rôle. toolUseIdIl doit être unique par conversation et name doit correspondre à un outil défini danstoolConfig.

Voici un exemple d'objet de message avec un tableau de contenu contenant uniquement un bloc de contenu utilisant un outil :

{ "role": "assistant", "content": [ { "toolUse": { "toolUseId": "unique-id", "name": "tool-name", "input": { ... } } } ] }
toolResult

Un objet de résultat d'outil. Pris en charge uniquement à user tour de rôle. Chacun toolUseId doit faire référence à un précédent toolUse et être utilisé exactement une fois. Le contenu doit être uniquement du texte ou du JSON.

Voici un exemple d'objet de message avec un tableau de contenu contenant uniquement un bloc de contenu de résultat d'outil :

{ "role": "user", "content": [ { "toolResult": { "toolUseId": "matching-id", "content": [ { "text": "result" } ] } } ] }

Tableau facultatif qui définit une invite système : instructions ou contexte pour le modèle concernant la tâche qu'il doit effectuer ou le personnage qu'il doit adopter. Pour de meilleurs résultats, utilisez la même invite du système pendant l'entraînement et lors de l'inférence.

"system": [ { "text": "You are a helpful assistant." } ]

Objet facultatif qui définit les outils que le modèle peut utiliser pendant la conversation. Chaque outil est défini avec un nom, une description et un schéma JSON pour ses paramètres d'entrée.

"toolConfig": { "tools": [ { "toolSpec": { "name": "tool-name", "description": "tool-description", "inputSchema": { "json": { "type": "object", "properties": { "param": { "type": "string", "description": "param-description" } }, "required": ["param"] } } } } ] }

Obligatoire. Champ de chaîne identifiant la version du schéma. Il peut s'agir de n'importe quelle valeur de chaîne.

"schemaVersion": "bedrock-conversation-2024"

Validation de vos données

Avant de soumettre votre projet de formation, validez votre ensemble de données pour détecter rapidement les problèmes de mise en forme. Pour les outils de validation disponibles, consultezOutils de validation.

Entrées d'échantillons

Vous trouverez ci-dessous des exemples complets d'objets JSON montrant comment combiner les champs et les blocs de contenu pour différentes modalités.

Text-only (Nova 1.0 compatible)
{ "schemaVersion": "bedrock-conversation-2024", "system": [ { "text": "You are a digital assistant with a friendly personality" } ], "messages": [ { "role": "user", "content": [ { "text": "What country is right next to Australia?" } ] }, { "role": "assistant", "content": [ { "text": "The closest country is New Zealand" } ] } ] }
Image + text input
{ "schemaVersion": "bedrock-conversation-2024", "system": [ { "text": "You are a helpful assistant." } ], "messages": [ { "role": "user", "content": [ { "image": { "format": "jpeg", "source": { "s3Location": { "uri": "s3://your-bucket/your-path/your-image.jpg", "bucketOwner": "your-aws-account-id" } } } }, { "text": "Which country is highlighted in the image?" } ] }, { "role": "assistant", "content": [ { "reasoningContent": { "reasoningText": { "text": "I will determine the highlighted country by examining its location on the map and using my geographical knowledge" } } }, { "text": "The highlighted country is New Zealand" } ] } ] }
Video + text input
{ "schemaVersion": "bedrock-conversation-2024", "system": [ { "text": "You are a helpful assistant." } ], "messages": [ { "role": "user", "content": [ { "video": { "format": "mp4", "source": { "s3Location": { "uri": "s3://your-bucket/your-path/your-video.mp4", "bucketOwner": "your-aws-account-id" } } } }, { "text": "What is shown in this video?" } ] }, { "role": "assistant", "content": [ { "reasoningContent": { "reasoningText": { "text": "I will analyze the video content to identify key elements" } } }, { "text": "The video shows a map with New Zealand highlighted" } ] } ] }
Document + text input
{ "schemaVersion": "bedrock-conversation-2024", "messages": [ { "role": "user", "content": [ { "text": "What are the ways in which a customer can experience issues during checkout on Amazon?" }, { "document": { "format": "pdf", "source": { "s3Location": { "uri": "s3://my-bucket-name/path/to/documents/customer_service_debugging.pdf", "bucketOwner": "123456789012" } } } } ] }, { "role": "assistant", "content": [ { "reasoningContent": { "reasoningText": { "text": "I need to find the relevant section in the document to answer the question." } } }, { "text": "Customers can experience issues with 1. Data entry, 2. Payment methods, 3. Connectivity while placing the order. Which one would you like to dive into?" } ] } ] }
Text with tool calling
{ "schemaVersion": "bedrock-conversation-2024", "system": [ { "text": "You are an expert in composing function calls." } ], "toolConfig": { "tools": [ { "toolSpec": { "name": "getItemAvailability", "description": "Retrieve whether an item is available in a given location", "inputSchema": { "json": { "type": "object", "properties": { "zipcode": { "type": "string", "description": "The zipcode of the location to check in" }, "quantity": { "type": "integer", "description": "The number of items to check availability for" }, "item_id": { "type": "string", "description": "The ASIN of item to check availability for" } }, "required": ["item_id", "zipcode"] } } } } ] }, "messages": [ { "role": "user", "content": [ { "text": "I need to check whether there are twenty pieces of the following item available. Here is the item ASIN on Amazon: id-123. Please check for the zipcode 94086" } ] }, { "role": "assistant", "content": [ { "reasoningContent": { "reasoningText": { "text": "The user wants to check how many pieces of the item with ASIN id-123 are available in the zipcode 94086" } } }, { "toolUse": { "toolUseId": "getItemAvailability_0", "name": "getItemAvailability", "input": { "zipcode": "94086", "quantity": 20, "item_id": "id-123" } } } ] }, { "role": "user", "content": [ { "toolResult": { "toolUseId": "getItemAvailability_0", "content": [ { "text": "[{\"name\": \"getItemAvailability\", \"results\": {\"availability\": true}}]" } ] } } ] }, { "role": "assistant", "content": [ { "text": "Yes, there are twenty pieces of item id-123 available at 94086. Would you like to place an order or know the total cost?" } ] } ] }
Text with reasoning
{ "schemaVersion": "bedrock-conversation-2024", "system": [ { "text": "You are a digital assistant with a friendly personality" } ], "messages": [ { "role": "user", "content": [ { "text": "What country is right next to Australia?" } ] }, { "role": "assistant", "content": [ { "reasoningContent": { "reasoningText": { "text": "I need to use my world knowledge of geography to answer this question" } } }, { "text": "The closest country to Australia is New Zealand, located to the southeast across the Tasman Sea." } ] } ] }

Fonctionnalités prises en charge

Le tableau suivant compare les fonctionnalités prises en charge par SFT dans toutes les versions du modèle Nova.

Prise en charge des fonctionnalités SFT par version de modèle
Fonctionnalité SFT sur Nova 2.0
Compréhension de texte Pris en charge sur Nova 2.0 Lite. Consultez General/Text compréhension.
Compréhension des images Pris en charge sur Nova 2.0 Lite. Consultez Compréhension des images.
Compréhension des vidéos Pris en charge sur Nova 2.0 Lite. Consultez Compréhension des vidéos.
Compréhension des documents Pris en charge sur Nova 2.0 Lite. Consultez Compréhension des documents.
Appel d'outils Pris en charge sur Nova 2.0 Lite. Consultez Appel d'outils.
Raisonnement Pris en charge sur Nova 2.0 Lite. Consultez Raisonnement.

General/Text compréhension

Cette section récapitule les contraintes générales liées à la préparation des données d'entraînement SFT sur Amazon Nova 2.

Contraintes

Contraintes générales du jeu de données
Contrainte Détails
Format du jeu de données JSONL (un objet JSON par ligne). Les noms de fichiers ne peuvent être composés que de caractères alphanumériques, de traits de soulignement, de tirets, de barres obliques et de points.
Échantillons minimum 8
Nombre maximum d'échantillons 20 000
Longueur de contexte 32 000
Homogénéité des ensembles de données Un ensemble de données ne peut pas mélanger différentes modalités médiatiques. Utilisez du texte avec des images, du texte avec des vidéos ou du texte avec des documents, mais pas une combinaison des deux.
Mots-clés réservés User:,Bot:, Assistant:System:,<image>,<video>,[EOS]. Les instructions contenant ces mots clés entraîneront l'échec de la tâche de formation. Remplacez-les par différents mots clés ayant des significations similaires.

Bonnes pratiques

  • La taille minimale des données à ajuster dépend de la tâche (complexe ou simple), mais nous vous recommandons de disposer d'au moins 200 échantillons pour chaque tâche que vous souhaitez que le modèle apprenne.

  • Nous vous recommandons d’utiliser votre invite optimisée dans un paramètre zero-shot pendant l’entraînement et l’inférence afin d’obtenir les meilleurs résultats.

  • Privilégiez la qualité à la quantité. Quelques centaines d'exemples cohérents et de haute qualité surpassent généralement des milliers d'exemples bruyants ou contradictoires.

Exemple d'entrée

  • schemaVersion peut être n’importe quelle valeur de chaîne

  • Les rôles pris en charge sont user et assistant. Le tour (facultatif) system peut être une invite système personnalisée fournie par le client.

  • Le premier tour dans messages doit toujours commencer par "role": "user". Le dernier tour est la réponse du bot, indiquée par"role": "assistant".

{ "schemaVersion": "bedrock-conversation-2024", "system": [ { "text": "You are a digital assistant with a friendly personality" } ], "messages": [ { "role": "user", "content": [ { "text": "What country is right next to Australia?" } ] }, { "role": "assistant", "content": [ { "text": "The closest country is New Zealand" } ] } ] }

Compréhension des images

SFT prend en charge la formation sur les tâches basées sur l'image, permettant à votre modèle d'apprendre à analyser les images et à y répondre.

Contraintes

Contraintes relatives aux images
Contrainte Détails
Formats pris en charge PNG, JPEG, GIF, WebP
Nombre maximum d'images par échantillon 10
Taille maximale du fichier image 10 Mo
Homogénéité des ensembles de données Un échantillon peut contenir des images et du texte, mais ne peut pas comporter d'images combinées à d'autres modalités (vidéos, documents).
Emplacement S3 image.source.s3Location.uriIl doit se trouver dans le même compartiment Amazon S3 que votre ensemble de données. Par exemple, si votre jeu de données se trouve dans s3://amzn-s3-demo-bucket/train/train.jsonl, vos images ou vidéos doivent se trouver dans s3://amzn-s3-demo-bucket

Bonnes pratiques

  • Assurez-vous que les images sont de haute qualité et pertinentes pour la tâche.

  • Fournissez divers exemples couvrant différents types d'images et formats de questions.

  • Incluez des questions claires qui font référence à des aspects spécifiques du contenu de l'image.

Exemple d'entrée

{ "schemaVersion": "bedrock-conversation-2024", "system": [ { "text": "You are a helpful assistant." } ], "messages": [ { "role": "user", "content": [ { "image": { "format": "jpeg", "source": { "s3Location": { "uri": "s3://your-bucket/your-path/your-image.jpg", "bucketOwner": "your-aws-account-id" } } } }, { "text": "Which country is highlighted in the image?" } ] }, { "role": "assistant", "content": [ { "text": "The highlighted country is New Zealand" } ] } ] }

Compréhension des vidéos

SFT prend en charge la formation sur les tâches basées sur la vidéo, permettant à votre modèle d'apprendre à analyser le contenu vidéo et à y répondre.

Contraintes

Contraintes liées aux vidéos
Contrainte Détails
Formats pris en charge MOV, MKV, MP4, WebM
Nombre maximum de vidéos par échantillon 1
Taille maximale du fichier vidéo 50 Mo
Durée maximale de la vidéo 15 minutes
Homogénéité des ensembles de données Un échantillon peut contenir de la vidéo et du texte, mais ne peut pas combiner la vidéo avec d'autres modalités (images, documents).
Emplacement S3 video.source.s3Location.uriIl doit se trouver dans le même compartiment Amazon S3 que votre ensemble de données. Par exemple, si votre jeu de données se trouve danss3://amzn-s3-demo-bucket/train/train.jsonl, vos vidéos doivent être dans s3://amzn-s3-demo-bucket

Bonnes pratiques

  • Veillez à ce que les vidéos soient concises et centrées sur le contenu pertinent pour votre tâche.

  • Assurez-vous que la qualité vidéo est suffisante pour que le modèle puisse extraire des informations pertinentes.

  • Posez des questions claires qui font référence à des aspects spécifiques du contenu vidéo.

  • Incluez divers exemples couvrant différents types de vidéos et formats de questions.

Exemple d'entrée

{ "schemaVersion": "bedrock-conversation-2024", "messages": [ { "role": "user", "content": [ { "text": "What are the ways in which a customer can experience issues during checkout on Amazon?" }, { "video": { "format": "mp4", "source": { "s3Location": { "uri": "s3://my-bucket-name/path/to/videos/customer_service_debugging.mp4", "bucketOwner": "123456789012" } } } } ] }, { "role": "assistant", "content": [ { "text": "Customers can experience issues with 1. Data entry, 2. Payment methods, 3. Connectivity while placing the order. Which one would you like to dive into?" } ] } ] }

Compréhension des documents

SFT prend en charge la formation sur les tâches basées sur des documents, permettant à votre modèle d'apprendre à analyser les documents PDF et à y répondre.

Contraintes

Contraintes liées aux documents
Contrainte Détails
Format pris en charge PDF
Taille maximale du document 10 Mo
Homogénéité des ensembles de données Un échantillon peut contenir des documents et du texte, mais ne peut pas contenir de documents mélangés à d'autres modalités (images, vidéos).
Emplacement S3 document.source.s3Location.uriIl doit se trouver dans le même compartiment Amazon S3 que votre ensemble de données. Par exemple, si votre jeu de données se trouve danss3://amzn-s3-demo-bucket/train/train.jsonl, alors vos documents doivent être dans s3://amzn-s3-demo-bucket

Bonnes pratiques

  • Assurez-vous que les documents sont clairement mis en forme et que le texte est extractible.

  • Fournissez divers exemples couvrant différents types de documents et formats de questions.

  • Incluez un contenu de raisonnement pour aider le modèle à apprendre les modèles d'analyse des documents.

Exemple d'entrée

{ "schemaVersion": "bedrock-conversation-2024", "messages": [ { "role": "user", "content": [ { "text": "What are the ways in which a customer can experience issues during checkout on Amazon?" }, { "document": { "format": "pdf", "source": { "s3Location": { "uri": "s3://my-bucket-name/path/to/documents/customer_service_debugging.pdf", "bucketOwner": "123456789012" } } } } ] }, { "role": "assistant", "content": [ { "text": "Customers can experience issues with 1. Data entry, 2. Payment methods, 3. Connectivity while placing the order. Which one would you like to dive into?" } ] } ] }

Appel d'outils

SFT prend en charge les modèles d'entraînement sur les modèles d'appel d'outils, permettant à votre modèle d'apprendre quand et comment invoquer des outils ou des fonctions externes.

Contraintes

Contraintes relatives aux appels d'outils
Contrainte Détails
Formats pris en charge Texte ou JSON pour le ToolResult contenu
ToolUse placement ToolUse doit apparaître uniquement dans les tours d'assistant
ToolResult placement ToolResult doit apparaître uniquement lors des tours des utilisateurs
Format de schéma d'entrée L'InputSchema dans le ToolSpec doit être un objet JSON Schema valide
UseId correspondance des outils Chacun ToolResult doit faire référence à un outil valide UseId d'un assistant précédent ToolUse, chaque outil étant UseId utilisé exactement une fois par conversation

Bonnes pratiques

  • Assurez-vous que les définitions de vos outils sont cohérentes dans tous les exemples de formation.

  • Le modèle apprend les modèles d'appel des outils à partir des démonstrations que vous fournissez.

  • Incluez divers exemples indiquant quand utiliser chaque outil et quand ne pas utiliser les outils.

Exemple d'entrée

{ "schemaVersion": "bedrock-conversation-2024", "system": [ { "text": "You are an expert in composing function calls." } ], "toolConfig": { "tools": [ { "toolSpec": { "name": "getItemAvailability", "description": "Retrieve whether an item is available in a given location", "inputSchema": { "json": { "type": "object", "properties": { "zipcode": { "type": "string", "description": "The zipcode of the location to check in" }, "quantity": { "type": "integer", "description": "The number of items to check availability for" }, "item_id": { "type": "string", "description": "The ASIN of item to check availability for" } }, "required": ["item_id", "zipcode"] } } } } ] }, "messages": [ { "role": "user", "content": [ { "text": "I need to check whether there are twenty pieces of the following item available. Here is the item ASIN on Amazon: id-123. Please check for the zipcode 94086" } ] }, { "role": "assistant", "content": [ { "toolUse": { "toolUseId": "getItemAvailability_0", "name": "getItemAvailability", "input": { "zipcode": "94086", "quantity": 20, "item_id": "id-123" } } } ] }, { "role": "user", "content": [ { "toolResult": { "toolUseId": "getItemAvailability_0", "content": [ { "text": "[{\"name\": \"getItemAvailability\", \"results\": {\"availability\": true}}]" } ] } } ] }, { "role": "assistant", "content": [ { "text": "Yes, there are twenty pieces of item id-123 available at 94086. Would you like to place an order or know the total cost?" } ] } ] }

Raisonnement

Le contenu du raisonnement (également appelé chaîne de pensée) capture les étapes de réflexion intermédiaires du modèle avant de générer une réponse finale.

Contraintes

Contraintes de raisonnement
Contrainte Détails
Format pris en charge Texte uniquement. Image-based le contenu du raisonnement n'est pas pris en charge.
Placement L'assistant tourne uniquement, via le reasoningContent terrain.
Mise en forme Utilisez du texte brut. Évitez les balises de balisage telles que « <thinking> et », </thinking> sauf si cela est spécifiquement requis par votre tâche.

Bonnes pratiques

  • High-quality le contenu du raisonnement doit inclure des pensées intermédiaires, des déductions logiques, des approches de résolution de problèmes étape par étape et des liens explicites entre les étapes et les conclusions.

  • Vous pouvez inclure reasoningContent plusieurs tours d'assistant dans des conversations à plusieurs tours.

  • Si votre jeu de données ne contient pas de traces de raisonnement, vous pouvez les créer à l'aide d'un modèle capable de raisonner tel que Nova Premier.

Exemple d'entrée

{ "schemaVersion": "bedrock-conversation-2024", "system": [ { "text": "You are a digital assistant with a friendly personality" } ], "messages": [ { "role": "user", "content": [ { "text": "What country is right next to Australia?" } ] }, { "role": "assistant", "content": [ { "reasoningContent": { "reasoningText": { "text": "I need to use my world knowledge of geography to answer this question" } } }, { "text": "The closest country to Australia is New Zealand, located to the southeast across the Tasman Sea." } ] } ] }

Remarques supplémentaires

Comment est calculée la perte :

  • Avec contenu de raisonnement — La perte d'entraînement inclut à la fois les jetons de raisonnement et les jetons de sortie finale.

  • Sans contenu raisonné — La perte d'entraînement est calculée uniquement sur les jetons de sortie finaux.

Définissez reasoning_enabled: true ce paramètre dans votre configuration d'entraînement lorsque vos données d'entraînement contiennent des jetons de raisonnement, si vous souhaitez que le modèle génère des jetons de réflexion avant de produire des résultats finaux, ou si vous avez besoin d'améliorer les performances sur des tâches de raisonnement complexes.

Définissez ce reasoning_enabled: false paramètre lorsque vos données d'entraînement ne comportent pas de jetons de raisonnement, lorsque vous vous entraînez sur des tâches simples qui ne bénéficient pas d'étapes de raisonnement explicites, ou si vous souhaitez optimiser la vitesse et réduire l'utilisation des jetons.

L'entraînement de Nova sur un ensemble de données non raisonné avec reasoning_enabled = true est autorisé. Cependant, cela peut entraîner la perte de capacité de raisonnement du modèle, car Nova apprend principalement à générer les réponses présentées dans les données sans appliquer de raisonnement. En général, activez le raisonnement à la fois pour l'entraînement et l'inférence lorsque vous utilisez des ensembles de données de raisonnement, et désactivez-le pour les deux lorsque vous utilisez des ensembles de données non raisonnés.

Conception d'exemples de formation efficaces

Vos données d'entraînement doivent démontrer le comportement que vous souhaitez que le modèle présente. La SFT enseigne au modèle comment réagir, et non pas ce qu'il faut savoir. Si vous créez des exemples de formation principalement pour apporter des connaissances factuelles (par exemple, « Que E-45 signifie un code d'erreur ? » avec la réponse « E-45  indique un délai d'attente du capteur »), demandez-vous si le RAG ou Prompt Engineering peuvent obtenir le même résultat sans réglage précis.

Lorsque vous convertissez les données source au format conversationnel, suivez les principes suivants :

  1. Commencez par de vraies requêtes d'utilisateurs. Le mode Write user reflète la façon dont les utilisateurs finaux demanderont réellement le modèle en production. Évitez les questions artificielles ou trop simplifiées qui ne reflètent pas les véritables habitudes d'utilisation.

  2. Rédigez des réponses d'assistant de référence. Chaque tour d'assistant doit être la réponse idéale que vous souhaitez que le modèle produise : correcte, bien formatée et cohérente dans le ton et la structure de tous les exemples.

  3. Utilisez l'invite du système de manière stratégique. Placez des instructions persistantes telles que le format de sortie, la personnalité et le contexte du domaine dans le tour du système. Utilisez la même invite du système pendant l'entraînement et l'inférence pour obtenir les meilleurs résultats.

  4. Concentrez-vous sur une compétence par échantillon dans les exemples. Si vous avez besoin du modèle pour classer, répondre à des questions et résumer, créez des ensembles d'exemples distincts pour chaque compétence plutôt que de combiner plusieurs compétences dans un seul échantillon.

  5. Privilégiez la qualité à la quantité. Quelques centaines d'exemples cohérents et de haute qualité surpassent généralement des milliers d'exemples bruyants ou contradictoires. Dédupliquez et révisez vos données avant l'entraînement.

Modèles courants de transformation des données

Les modèles suivants montrent comment convertir les formats de données d'entreprise courants en exemples de formation SFT efficaces.

Modèle 1 : enregistrements structurés à classer ou à rechercher

Lorsque vos données source sont une table ou une base de données d'enregistrements contenant des champs tels que issuecause, etresolution, encadrez chaque enregistrement comme une question utilisateur avec les champs de saisie pertinents et la réponse de l'assistant comme champs de sortie cibles.

// train.jsonl { "schemaVersion": "bedrock-conversation-2024", "system": [ { "text": "You are a technical support assistant. Given an issue description, identify the most likely root cause and recommended resolution." } ], "messages": [ { "role": "user", "content": [ { "text": "A user reports: 'Application crashes on startup after the latest update.' What is the likely cause and resolution?" } ] }, { "role": "assistant", "content": [ { "text": "Cause: Incompatible configuration file from the previous version.\nResolution: Delete the local configuration cache and restart the application to regenerate default settings." } ] } ] }
Modèle 2 : données hiérarchiques ou taxonomiques par rapport à des questions et réponses structurées &amp;

Lorsque vos données sources sont une hiérarchie de code ou une taxonomie, telle que des arbres de catégories de produits ou des systèmes de classification, générez des questions demandant au modèle de naviguer dans la hiérarchie. Incluez le contexte de classification dans l'invite du système ou dans le tour de l'utilisateur.

// train.jsonl { "schemaVersion": "bedrock-conversation-2024", "system": [ { "text": "You are a product catalog assistant. Answer questions about product categories and classifications accurately." } ], "messages": [ { "role": "user", "content": [ { "text": "What top-level category does product code 'EL-4520' belong to, and what subcategories does it include?" } ] }, { "role": "assistant", "content": [ { "text": "Product code EL-4520 belongs to the Electronics category. It includes the subcategories: Audio Equipment, Portable Speakers, and Wireless Accessories." } ] } ] }
Modèle 3 : des documents procéduraux au dialogue pédagogique

Lorsque vos données sources se composent de procédures opérationnelles standard, de runbooks ou de guides étape par étape, convertissez les procédures en questions orientées vers les tâches. L'utilisateur demande comment effectuer une tâche et l'assistant fournit les étapes dans un format cohérent.

// train.jsonl { "schemaVersion": "bedrock-conversation-2024", "system": [ { "text": "You are an IT operations assistant. Provide step-by-step instructions based on approved runbooks and standard operating procedures." } ], "messages": [ { "role": "user", "content": [ { "text": "How do I reset a user's multi-factor authentication when they have lost access to their device?" } ] }, { "role": "assistant", "content": [ { "text": "Follow these steps to reset a user's multi-factor authentication:\n1. Verify the user's identity using the approved verification procedure.\n2. Disable the existing MFA configuration in the identity management console.\n3. Generate a new temporary access code and send it to the user's verified email.\n4. Instruct the user to log in with the temporary code and re-enroll their new device.\n5. Confirm the new MFA device is working by requesting a test authentication.\n6. Document the reset in the support ticket." } ] } ] }
Note

Dans les modèles 1 et 2, si le contenu factuel (tel que les codes, les catégories ou les résolutions) ne figure pas déjà dans les données de pré-entraînement du modèle, envisagez d'utiliser RAG pour fournir ces informations au moment de l'inférence plutôt que de vous fier uniquement à SFT pour les mémoriser. Le SFT est le plus efficace pour enseigner au modèle le format de réponse et le modèle de raisonnement, tandis que RAG gère les bases factuelles.