Préparer les données pour les modèles Amazon Nova - Amazon Bedrock

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éparer les données pour les modèles Amazon Nova

Lorsque vous peaufinez un modèle Amazon Nova en ajustant le renforcement, vous pouvez apporter vos propres instructions ou utiliser les journaux d'invocation de l'API Amazon Bedrock existants comme données d'entraînement.

Exigences et sources de données de formation

Vous pouvez fournir des données d'entraînement via l'une des options suivantes :

Note

Nous prenons uniquement en charge le format de fin de chat OpenAI.

Collectez vos invites et stockez-les au format de fichier .jsonl. Vous pouvez télécharger des ensembles de données personnalisés au format JSONL ou sélectionner des ensembles de données existants depuis Amazon S3. Chaque enregistrement du JSONL doit utiliser le format de fin de discussion OpenAI dans la structure suivante :

  • messages: Dans ce champ, incluez le rôle utilisateur, système ou assistant contenant l'invite de saisie fournie au modèle.

  • reference_answer: Dans ce champ, il doit contenir le résultat attendu ou les critères d'évaluation que votre fonction de récompense utilise pour évaluer la réponse du modèle. Il ne se limite pas aux sorties structurées : il peut contenir n'importe quel format permettant à votre fonction de récompense d'évaluer la qualité.

  • [Facultatif] Vous pouvez ajouter des champs utilisés par l'évaluateur Lambda pour la notation.

Prérequis:

  • Format JSONL avec instructions au format d'achèvement du chat OpenAI (une invite par ligne)

  • Un minimum de 100 enregistrements dans l'ensemble de données de formation

  • Amazon Bedrock valide automatiquement le format du jeu de données d'entraînement

Example: General question-answering
{ "messages": [ { "role": "system", "content": "You are a helpful assistant" }, { role": "user", "content": "What is machine learning?"} ], "reference_answer": "Machine learning is a subset of artificial intelligence that enables computers to learn and make decisions from data without being explicitly programmed." }
Example: Math problem
{ "id": "sample-001", "messages": [ { "role": "system", "content": "You are a math tutor" }, { "role": "user", "content": "Solve: 2x + 5 = 13" } ], "reference_answer": { "solution": "x = 4", "steps": ["2x = 13 - 5", "2x = 8", "x = 4"] } }

Lorsque vous créez une tâche de réglage précis du renforcement, vous pouvez demander à Amazon Bedrock d'utiliser les journaux d'invocation existants de votre compartiment S3 comme données d'entraînement. Pour Amazon Bedrock, un journal d’invocation est un enregistrement détaillé des invocations du modèle.

Vous pouvez utiliser les journaux d'appel d' Invoke/Converse API stockés côté client depuis Amazon S3 à des fins de formation.

Prérequis:

  • La journalisation des API doit être activée pour votre utilisation d'Amazon Bedrock

  • Les journaux doivent être dans un format compatible ( Invoke/Converse API Amazon Bedrock)

  • Au moins 100 exemples rapides

Pour utiliser les journaux d'invocation pour affiner le renforcement, configurez la connexion par invocation du modèle, utilisez l'une des opérations d'appel du modèle et assurez-vous d'avoir configuré un compartiment Amazon S3 comme destination pour les journaux. Pour plus d'informations sur la configuration des journaux d'invocation, consultez Surveiller le modèle d'invocation à l'aide CloudWatch des journaux et d'Amazon S3.

Avant de commencer le travail de réglage précis du renforcement en utilisant les journaux d'invocation d'un compartiment S3 en entrée, vous devez fournir à Amazon Bedrock les autorisations d'accès aux journaux depuis un compartiment S3. Pour de plus amples informations, veuillez consulter Personnalisation, accès et sécurité des modèles.

Vous pouvez éventuellement ajouter des métadonnées de demande aux paires invite-réponse du journal d’invocation à l’aide de l’une des opérations d’invocation du modèle, puis les utiliser ultérieurement pour filtrer les journaux. Amazon Bedrock peut utiliser les journaux filtrés pour affiner le modèle.

Ajoutez des métadonnées de demande aux invites et aux réponses dans vos journaux d'invocations

Avec les journaux d'invocation, vous pouvez identifier les instructions du jeu de données de formation que vous souhaitez qu'Amazon Bedrock utilise pour affiner le renforcement à l'aide des métadonnées de demande jointes aux journaux d'invocation.

Voici un exemple de journal d'invocation issu d'un InvokeModel appel avec : requestMetadata

{ "schemaType": "ModelInvocationLog", "schemaVersion": "1.0", "timestamp": "2024-09-11T17:16:18Z", "accountId": "XXXXX", "identity": { "arn": "arn:aws:sts::XXXXXXX:assumed-role/Admin/XXXXXX" }, "region": "us-east-1", "requestId": "7ee514f3-9eff-467c-af75-8fd564ce58e5", "operation": "InvokeModel", "modelId": "meta.llama3-1-405b-instruct-v1:0", "input": { "inputContentType": "application/json", "inputBodyJson": { "prompt": "story of two dogs", "max_tokens_to_sample": 300 }, "inputTokenCount": 13 }, "output": { "outputContentType": "application/json", "outputBodyJson": { "type": "completion", "completion": " Here is a story about two dogs:\n\nRex and Charlie were best friends who lived next door to each other. Every morning, their owners would let them out into the backyard to play. Rex was a golden retriever with long, shaggy fur. He loved to run and chase sticks. Charlie was a corgi with short legs and a big smile. He was happy just sniffing the grass and rolling around. \n\nThe two dogs spent every day playing together. Rex would grab a stick and bring it over to Charlie, wagging his tail excitedly. Charlie would take the other end of the stick in his mouth and they'd have a friendly game of tug-of-war. After tiring themselves out, they'd flop down in the warm sunshine for a nap. \n\nAt lunchtime, their owners would call them in for food. Rex would gobble up his kibble hungrily while Charlie ate his at a more leisurely pace. After lunch, it was right back outside for more playtime. The afternoon sunbeams would light up their fur as they chased each other around the yard. \n\nWhen it started getting late, their owners called them in for the night. Rex and Charlie would head inside, tired but happy after another fun day of play. After slurping up fresh water from their bowls, they'd curl up on their beds, Rex's fluffy golden tail tucked over his nose and little", "stop_reason": "max_tokens", "stop": null }, "outputTokenCount": 300 }, "requestMetadata": { "project": "CustomerService", "intent": "ComplaintResolution", "priority": "High" } }

Vous pouvez spécifier le journal des appels comme source de données d'entrée lorsque vous lancez une tâche de réglage précis du renforcement. Vous pouvez démarrer une tâche de réglage précis du renforcement via la console Amazon Bedrock, à l'aide de l'API ou du AWS CLI SDK.

Exigences relatives à la fourniture de métadonnées de demande

Les métadonnées de demande doivent respecter les exigences suivantes :

  • Fournies au format JSON key:value.

  • La paire clé/valeur doit être une chaîne de 256 caractères maximum.

  • Fournissez un maximum de 16 paires clé-valeur.

Utilisation de filtres de métadonnées des demandes

Une fois que les journaux d'appel contenant les métadonnées des demandes sont disponibles, vous pouvez appliquer des filtres basés sur les métadonnées des demandes afin de choisir de manière sélective les invites à inclure pour affiner le modèle. Par exemple, vous souhaiterez peut-être inclure uniquement ceux qui possèdent "project": "CustomerService" et "priority": "High" demandent des métadonnées.

Pour filtrer les journaux à l'aide de plusieurs métadonnées de demande, utilisez un seul opérateur AND booléen ou. OR Vous ne pouvez pas combiner ces opérateurs. Pour le filtrage des métadonnées à demande unique, utilisez l'Not Equalsopérateur Equals or.

Caractéristiques des données d'entraînement efficaces

Des données d'entraînement RFT efficaces nécessitent trois caractéristiques clés :

  • Clarté et cohérence : utilisez des instructions claires et sans ambiguïté avec un formatage uniforme. Évitez les étiquettes contradictoires, les instructions ambiguës ou les réponses de référence contradictoires qui induisent en erreur la formation.

  • Diversité : incluez différents formats de saisie, scénarios extrêmes et niveaux de difficulté qui reflètent les modèles d'utilisation de la production selon les différents types d'utilisateurs et scénarios.

  • Fonctions de récompense efficaces — Concevez des fonctions qui s'exécutent rapidement (en quelques secondes, et non en minutes), sont parallélisées et AWS Lambda fournissent des scores cohérents pour un entraînement rentable.

Propriétés supplémentaires

Le format de données RFT prend en charge les champs personnalisés au-delà des exigences de base du schéma (messagesetreference_answer). Cette flexibilité vous permet d'ajouter toutes les données supplémentaires dont votre fonction de récompense a besoin pour une évaluation correcte.

Note

Vous n'avez pas besoin de le configurer dans votre recette. Le format de données prend en charge de manière inhérente des champs supplémentaires. Il suffit de les inclure dans le JSON de vos données d'entraînement, et elles seront transmises à votre fonction de récompense metadata sur le terrain.

Propriétés supplémentaires communes

  • task_id— Identifiant unique pour le suivi

  • difficulty_level— Indicateur de complexité du problème

  • domain— Domaine ou catégorie

  • expected_reasoning_steps— Nombre d'étapes de la solution

Ces champs supplémentaires sont transmis à votre fonction de récompense lors de l'évaluation, ce qui permet une logique de notation sophistiquée adaptée à votre cas d'utilisation spécifique.

Exemples avec propriétés supplémentaires

Chemistry problem
{ "id": "chem-001", "messages": [ { "role": "system", "content": "You are a helpful chemistry assistant" }, { "role": "user", "content": "Predict hydrogen bond donors and acceptors for this SMILES: CCN(CC)CCC(=O)c1sc(N)nc1C" } ], "reference_answer": { "donor_bond_counts": 2, "acceptor_bond_counts": 4 } }

Le reference_answer champ contient le résultat attendu ou les critères d'évaluation que votre fonction de récompense utilise pour évaluer la réponse du modèle. Il ne se limite pas aux sorties structurées : il peut contenir n'importe quel format permettant à votre fonction de récompense d'évaluer la qualité.

Math problem with metadata
{ "messages": [ { "role": "system", "content": "You are a math tutor" }, { "role": "user", "content": "Solve: 2x + 5 = 13" } ], "reference_answer": { "solution": "x = 4", "steps": ["2x = 13 - 5", "2x = 8", "x = 4"] }, "task_id": "algebra_001", "difficulty_level": "easy", "domain": "algebra", "expected_reasoning_steps": 3 }