Ajustez Nova 2.0 - Amazon SageMaker AI

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.

Ajustez Nova 2.0

Conditions préalables

Avant de commencer une tâche d’entraînement, notez les éléments suivants.

  • Compartiments Amazon S3 pour stocker vos données d’entrée et de sortie des tâches d’entraînement. Vous pouvez utiliser un compartiment pour les deux ou des compartiments distincts pour chaque type de données. Assurez-vous que vos compartiments se trouvent dans le même Région AWS endroit où vous créez toutes les autres ressources pour la formation. Pour plus d’informations, consultez Création d’un compartiment à usage général.

  • Un rôle IAM autorisé à exécuter une tâche d’entraînement. Assurez-vous de joindre une politique IAM à AmazonSageMakerFullAccess. Pour plus d'informations, consultez Comment utiliser les rôles SageMaker d'exécution.

  • Recettes Amazon Nova de base, consultez Obtention de formules Amazon Nova.

Qu'est-ce que SFT ?

Le réglage fin supervisé (SFT) entraîne un modèle de langage à l'aide de paires d'entrées-sorties étiquetées. Le modèle apprend à partir d'exemples de démonstration composés d'invites et de réponses, affinant ses capacités pour s'aligner sur des tâches, des instructions ou des comportements souhaités spécifiques.

Préparation des données

Présentation de

Les données Nova 2.0 SFT utilisent le même format d'API Converse que Nova 1.0, avec l'ajout de champs de contenu de raisonnement facultatifs. Pour les spécifications de format complètes, voir :

Fonctionnalités prises en charge

  • Types de saisie : texte, image ou vidéo dans les blocs de contenu utilisateur

  • Contenu de l'assistant — Réponses sous forme de texte uniquement et contenu de raisonnement

  • Composition du jeu de données — Doit être homogène. Choisissez-en parmi :

    • Virages contenant uniquement du texte

    • Le texte et l'image se retournent

    • Le texte et la vidéo tournent (facilite la compréhension des documents)

Important

Vous ne pouvez pas mélanger des images et des vidéos dans le même jeu de données ou sur différents tours.

Limitations actuelles

  • Contenu de raisonnement multimodal — Bien que le format Converse prenne en charge le contenu de raisonnement basé sur des images, Nova 2.0 SFT ne prend en charge que le contenu de raisonnement basé sur du texte dans le champ ReasoningText.

  • Ensembles de validation — Vous ne pouvez pas fournir de jeu de données de validation pour SFT avec Nova 2.0. Si vous fournissez un ensemble de données de validation, il est ignoré pendant l'entraînement. Cette limitation s'applique à la fois aux soumissions de tâches basées sur l'interface utilisateur et programmatiques.

Formats multimédias pris en charge

  • Images — PNG, JPEG, GIF

  • Vidéos — MOV, MKV, MP4

Exemples de formats de données

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" } ] } ] }
Text with reasoning (Nova 2.0)
{ "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." } ] } ] }
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" } ] } ] }

Appel d'outils

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

Format de données pour l'appel d'outils

Les données de formation relatives aux appels d'outils incluent une toolConfig section qui définit les outils disponibles, ainsi que des tournures de conversation illustrant les modèles d'utilisation des outils.

Exemple d'entrée

{ "schemaVersion": "bedrock-conversation-2024", "system": [ { "text": "You are an expert in composing function calls." } ], "toolConfig": { "tools": [ { "toolSpec": { "name": "getItemCost", "description": "Retrieve the cost of an item from the catalog", "inputSchema": { "json": { "type": "object", "properties": { "item_name": { "type": "string", "description": "The name of the item to retrieve cost for" }, "item_id": { "type": "string", "description": "The ASIN of item to retrieve cost for" } }, "required": [ "item_id" ] } } } }, { "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?" } ] } ] }

Exigences relatives aux appels d'outils

Lorsque vous créez des données d'entraînement relatives aux appels d'outils, respectez les exigences suivantes :

Exigence Description
ToolUse placement ToolUse doit apparaître uniquement dans les virages d'assistant
ToolResult placement ToolResult doit apparaître uniquement au tour de l'utilisateur
ToolResult format ToolResult doit être du texte ou du JSON uniquement. Les autres modalités ne sont pas prises en charge pour les modèles Nova
Format du schéma d'entrée L'InputSchema du ToolSpec doit être un objet de schéma JSON valide
toolUseId appariement Chacun ToolResult doit faire référence à une toolUseId version valide d'un assistant précédent ToolUse, chacune étant toolUseId utilisée exactement une fois par conversation

Remarques importantes

  • Assurez-vous que les définitions de vos outils sont cohérentes dans tous les échantillons d'apprentissage

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

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

Compréhension des documents

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

Format de données pour la compréhension des documents

Les données de formation relatives à la compréhension des documents incluent des références aux documents dans les blocs de contenu utilisateur, le modèle apprenant à extraire et à raisonner sur le contenu du document.

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?" } ], "reasoning_content": [ { "text": "I need to find the relevant section in the document to answer the question.", "type": "text" } ] } ] }

Limites de compréhension des documents

Limitation Détails
Format pris en charge Fichiers PDF uniquement
Taille maximale du document 10 Mo
Mixage des modalités 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)

Bonnes pratiques pour la compréhension des documents

  • Assurez-vous que les documents sont clairement formatés 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

Compréhension des vidéos

Nova 2.0 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.

Format de données pour la compréhension vidéo

Les données de formation à la compréhension vidéo incluent des références vidéo dans les blocs de contenu utilisateur, le modèle apprenant à extraire des informations et à raisonner à partir du contenu vidéo.

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?" } ], "reasoning_content": [ { "text": "I need to find the relevant section in the video to answer the question.", "type": "text" } ] } ] }

Limites de compréhension de la vidéo

Limitation Détails
Taille maximale de la vidéo 50 Mo
Durée maximale de la vidéo 15 minutes
Vidéos par échantillon Une seule vidéo est autorisée par échantillon. Plusieurs vidéos dans le même échantillon ne sont pas prises en charge
Mixage des modalités Un échantillon peut contenir de la vidéo et du texte, mais la vidéo ne peut pas être combinée à d'autres modalités (images, documents)

Formats vidéo pris en charge

  • MOV

  • MKV

  • MP4

Bonnes pratiques pour la compréhension de la vidéo

  • Veillez à ce que les vidéos soient concises et axées sur le contenu correspondant à 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

Modes de raisonnement et de non-raisonnement

Comprendre le contenu du raisonnement

Le contenu du raisonnement (également appelé chain-of-thought) capture les étapes de réflexion intermédiaires du modèle avant de générer une réponse finale. À votre assistant tour, utilisez le reasoningContent champ pour inclure ces traces de raisonnement.

Comment est calculée la perte

  • Avec un contenu de raisonnement — La perte d'entraînement inclut à la fois des jetons de raisonnement et des jetons de résultat final

  • Sans raisonnement, contenu : la perte d'entraînement est calculée uniquement sur les jetons de sortie finaux

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

Directives de formatage

  • Utiliser du texte brut pour raisonner le contenu

  • Évitez les balises de balisage telles que <thinking> et, </thinking> sauf si cela est spécifiquement requis par votre tâche

  • Assurez-vous que le contenu du raisonnement est clair et pertinent pour le processus de résolution des problèmes

Quand activer le mode raisonnement

Définissez reasoning_enabled: true dans votre configuration d'entraînement lorsque :

  • Vos données d'entraînement contiennent des jetons de raisonnement

  • Vous voulez que le modèle génère des jetons de réflexion avant de produire les résultats finaux

  • Vous avez besoin de meilleures performances pour les tâches de raisonnement complexes

L'entraînement de Nova sur un ensemble de données non raisonné avec reasoning_enabled = true est autorisé. Cela risque toutefois de faire perdre au modèle ses capacités de raisonnement, car Nova apprend principalement à générer les réponses présentées dans les données sans appliquer de raisonnement. Si vous souhaitez entraîner Nova sur un ensemble de données non raisonné tout en vous attendant à raisonner lors de l'inférence, vous pouvez désactiver le raisonnement pendant l'entraînement (reasoning_enabled = false) mais l'activer pour l'inférence. Bien que cette approche permette d'utiliser le raisonnement au moment de l'inférence, elle ne garantit pas une amélioration des performances par rapport à l'inférence sans raisonnement. En général, activez le raisonnement 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 sans raisonnement.

Réglez reasoning_enabled: false quand :

  • Vos données d'entraînement ne contiennent pas de jetons de raisonnement

  • Vous vous entraînez sur des tâches simples qui ne bénéficient pas d'étapes de raisonnement explicites

  • Vous souhaitez optimiser la vitesse et réduire l'utilisation des jetons

Génération de données de raisonnement

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. Fournissez vos paires d'entrées-sorties au modèle et capturez son processus de raisonnement pour créer un ensemble de données augmenté par le raisonnement.

Utiliser des jetons de raisonnement pour l'entraînement

Lorsque le mode raisonnement est activé lors de l'entraînement, le modèle apprend à séparer le raisonnement interne de la réponse finale. Le processus de formation :

  • Organise les données sous forme de triples : saisie, raisonnement et réponse

  • Optimise à l'aide de la prédiction standard du jeton suivant les pertes causées à la fois par les jetons de raisonnement et de réponse

  • Encourage le modèle à raisonner en interne avant de générer des réponses

Contenu de raisonnement efficace

Un contenu de raisonnement de haute qualité doit inclure :

  • Réflexions et analyses intermédiaires

  • Déductions logiques et étapes d'inférence

  • Step-by-step approches de résolution de problèmes

  • Liens explicites entre les étapes et les conclusions

Cela aide le modèle à développer la capacité de « réfléchir avant de répondre ».

Directives pour la préparation des jeux

Taille et qualité

  • Taille recommandée : 2 000 à 10 000 échantillons

  • Échantillons minimum : 200

  • Priorité — La qualité prime sur la quantité. Assurez-vous que les exemples sont précis et bien annotés

  • Alignement des applications — Le jeu de données doit refléter étroitement vos cas d'utilisation en production

Diversité

Incluez divers exemples qui :

  • Couvrir la gamme complète des entrées attendues

  • Représenter différents niveaux de difficulté

  • Incluez des boîtiers et des variantes

  • Évitez de trop vous adapter à des motifs étroits

Formatage de sortie

Spécifiez clairement le format de sortie souhaité dans les réponses de l'assistant :

  • Structures JSON

  • Tables

  • Format CSV

  • Formats personnalisés spécifiques à votre application

Conversations complexes

Pour les ensembles de données multitours, n'oubliez pas :

  • La perte est calculée uniquement sur les tours de l'assistant, et non sur les tours de l'utilisateur

  • Chaque réponse de l'assistant doit être correctement formatée

  • Maintenez la cohérence à chaque tour de conversation

Liste de contrôle de qualité

  • Taille de jeu de données suffisante (2 à 10 000 échantillons)

  • Des exemples variés couvrant tous les cas d'utilisation

  • Formatage de sortie clair et cohérent

  • Étiquettes et annotations précises

  • Représentatif des scénarios de production

  • Sans contradictions ni ambiguïtés

Téléchargement de vos données

Les ensembles de données doivent être téléchargés dans un compartiment accessible par les tâches de SageMaker formation. Pour plus d'informations sur la définition des autorisations appropriées, consultez la section Conditions préalables.

Démarrage d'un poste de formation

Sélection des hyperparamètres et mise à jour de la recette

La configuration de Nova 2.0 est largement la même que celle de Nova 1.0. Une fois les données d'entrée téléchargées sur S3, utilisez la recette de SageMaker Hyperpod Recipes dans le dossier Fine tuning. Pour Nova 2.0, voici quelques-uns des principaux hyperparamètres que vous pouvez mettre à jour en fonction du cas d'utilisation. Voici un exemple de la recette Nova 2.0 SFT PEFT.

Veuillez utiliser la version 2.254.1 de SageMaker PySDK pour une compatibilité stricte avec Nova Training. La mise à niveau du SDK vers la version 3.0 entraînera des modifications majeures. Support pour la version 3 de SageMaker PySDK bientôt disponible.

Exemple de saisie

!pip install sagemaker==2.254.1
run: name: {peft_recipe_job_name} model_type: amazon.nova-2-lite-v1:0:256k model_name_or_path: {peft_model_name_or_path} data_s3_path: {train_dataset_s3_path} # SageMaker Hyperpod (SMHP) only and not compatible with SageMaker Training jobs. Note replace my-bucket-name with your real bucket name for SMHP job replicas: 4 # Number of compute instances for training, allowed values are 4, 8, 16, 32 output_s3_path: "" # Output artifact path (Hyperpod job-specific; not compatible with standard SageMaker Training jobs). Note replace my-bucket-name with your real bucket name for SMHP job training_config: max_steps: 10 # Maximum training steps. Minimal is 4. save_steps: 10 # How many training steps the checkpoint will be saved. Should be less than or equal to max_steps save_top_k: 1 # Keep top K best checkpoints. Note supported only for SageMaker HyperPod jobs. Minimal is 1. max_length: 32768 # Sequence length (options: 8192, 16384, 32768 [default], 65536) global_batch_size: 32 # Global batch size (options: 32, 64, 128) reasoning_enabled: true # If data has reasoningContent, set to true; otherwise False lr_scheduler: warmup_steps: 15 # Learning rate warmup steps. Recommend 15% of max_steps min_lr: 1e-6 # Minimum learning rate, must be between 0.0 and 1.0 optim_config: # Optimizer settings lr: 1e-5 # Learning rate, must be between 0.0 and 1.0 weight_decay: 0.0 # L2 regularization strength, must be between 0.0 and 1.0 adam_beta1: 0.9 # Exponential decay rate for first-moment estimates, must be between 0.0 and 1.0 adam_beta2: 0.95 # Exponential decay rate for second-moment estimates, must be between 0.0 and 1.0 peft: # Parameter-efficient fine-tuning (LoRA) peft_scheme: "lora" # Enable LoRA for PEFT lora_tuning: alpha: 64 # Scaling factor for LoRA weights ( options: 32, 64, 96, 128, 160, 192), lora_plus_lr_ratio: 64.0

La recette contient également en grande partie les mêmes hyperparamètres que Nova 1.0. Les hyperparamètres les plus importants sont les suivants :

  • max_steps— Le nombre d'étapes pendant lesquelles vous souhaitez exécuter la tâche. Généralement, pour une époque (une analyse complète de votre ensemble de données), le nombre d'étapes = nombre d'échantillons de données/taille globale du lot. Plus le nombre d'étapes est élevé et plus la taille globale de votre lot est petite, plus le travail sera long à exécuter.

  • reasoning_enabled— Contrôle le mode de raisonnement de votre ensemble de données. Options :

    • true: Active le mode raisonnement (équivalent à un raisonnement élevé)

    • false: désactive le mode raisonnement

    Remarque : Pour SFT, il n'existe aucun contrôle granulaire sur les niveaux d'effort de raisonnement. reasoning_enabled: trueLe réglage permet une capacité de raisonnement complète.

  • peft.peft_scheme— Le réglage sur « lora » permet un réglage précis basé sur le format PEFT. Le définir sur null (sans guillemets) permet d'affiner le classement complet.

Commencez le stage de formation

from sagemaker.pytorch import PyTorch # define OutputDataConfig path if default_prefix: output_path = f"s3://{bucket_name}/{default_prefix}/{sm_training_job_name}" else: output_path = f"s3://{bucket_name}/{sm_training_job_name}" recipe_overrides = { "run": { "replicas": instance_count, # Required "output_s3_path": output_path }, } estimator = PyTorch( output_path=output_path, base_job_name=sm_training_job_name, role=role, disable_profiler=True, debugger_hook_config=False, instance_count=instance_count, instance_type=instance_type, training_recipe=training_recipe, recipe_overrides=recipe_overrides, max_run=432000, sagemaker_session=sagemaker_session, image_uri=image_uri, tags=[ {'Key': 'model_name_or_path', 'Value': model_name_or_path}, ] ) print(f"\nsm_training_job_name:\n{sm_training_job_name}\n") print(f"output_path:\n{output_path}")
from sagemaker.inputs import TrainingInput train_input = TrainingInput( s3_data=train_dataset_s3_path, distribution="FullyReplicated", s3_data_type="Converse", ) estimator.fit(inputs={"validation": val_input}, wait=False)
Note

La transmission d'un ensemble de données de validation n'est pas prise en charge pour le réglage fin supervisé de Nova 2.0.

Pour démarrer le travail :

  • Mettez à jour la recette avec les chemins et les hyperparamètres de votre jeu de données

  • Exécutez les cellules spécifiées dans le bloc-notes pour soumettre le travail de formation

Le bloc-notes gère la soumission des tâches et assure le suivi du statut.