View a markdown version of this page

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 à l'aide d'un réglage de renforcement, vous pouvez ajouter vos propres instructions ou utiliser les journaux d'appel 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 ne prenons en charge que le format de complétion de chat OpenAI.

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

  • messages: Dans ce champ, indiquez le rôle de l'utilisateur, du système ou de l'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 résultats structurés : 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 des invites au format de complétion de discussion OpenAI (une invite par ligne)

  • Un minimum de 100 enregistrements dans le jeu de données d'entraînement

  • 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 du renforcement, vous pouvez demander à Amazon Bedrock d'utiliser les journaux d'appel 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 pris en charge ( Invoke/Converse API Amazon Bedrock)

  • Un minimum de 100 exemples rapides

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

Avant de commencer la tâche de réglage du renforcement en utilisant les journaux d'invocation d'un compartiment S3 comme entrée, fournissez les autorisations Amazon Bedrock pour accéder aux journaux. 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'invocation

Grâce aux journaux d'invocation, vous pouvez identifier les invites du jeu de données d'entraînement que vous souhaitez qu'Amazon Bedrock utilise pour affiner le renforcement à l'aide des métadonnées de demande jointes aux journaux d'appel.

Voici un exemple de journal d'invocation provenant 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 d'invocation comme source de données d'entrée lorsque vous démarrez une tâche de réglage des armatures. Vous pouvez démarrer une tâche de réglage des renforcements 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'invocation contenant les métadonnées de demande sont disponibles, vous pouvez appliquer des filtres en fonction des métadonnées de demande 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 contiennent des métadonnées "project": "CustomerService" et les "priority": "High" demander.

Pour filtrer les journaux à l'aide de plusieurs métadonnées de requêtes, 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 d'une seule demande, utilisez l'Not Equalsopérateur Equals ou.

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 une mise en forme cohérente. Évitez les étiquettes contradictoires, les instructions ambiguës ou les réponses de référence contradictoires qui induisent la formation en erreur.

  • Diversité  : incluez des formats de saisie, des cas limites et des niveaux de difficulté variés 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 secondes, pas en minutes), qui sont mises en parallèle et qui renvoient des scores cohérents pour une formation rentable. AWS Lambda

Propriétés supplémentaires

Le format de données RFT prend en charge les champs personnalisés au-delà des exigences du schéma de base (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 par nature des champs supplémentaires. Il vous 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 courantes

  • 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 les résultats attendus 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 résultats structurés : 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 }