Distillation Amazon Nova - 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.

Distillation Amazon Nova

Ce guide de démarrage rapide vous aide à démarrer avec le modèle de distillation Amazon Nova à l'aide du réglage fin supervisé (SFT) sur SageMaker l'IA.

La distillation de modèles est une méthode qui transfère les connaissances des grands modèles avancés vers des modèles plus petits et efficaces. Avec les modèles Amazon Nova, un modèle « enseignant » plus large (comme Amazon Nova Pro ou Amazon Nova Premier) transmet ses capacités à un modèle « étudiant » plus petit (comme Amazon Nova Lite ou Amazon Nova Micro). Cela crée un modèle personnalisé qui maintient des performances élevées tout en utilisant moins de ressources.

Composants clés

Le processus de distillation implique principalement deux types de modèles :

Les modèles enseignants servent de source de connaissances et incluent :

  • Amazon Nova Pro (Amazon. nova-pro-v1:0)

  • Amazon Nova Premier (Amazon. nova-premier-v1:0)

Les modèles étudiants reçoivent et mettent en œuvre les connaissances :

  • Amazon Nova Lite (Amazon. nova-lite-v1:30:300 km)

  • Amazon Nova Micro (Amazon. nova-micro-v(1:128 km)

  • Amazon Nova Pro (Amazon. nova-pro-v1:0:300 k) - Disponible uniquement lorsque vous utilisez Amazon Nova Premier en tant qu'enseignant

Cas d’utilisation

La distillation de modèles est particulièrement bénéfique lorsque :

  • Votre application est soumise à des exigences strictes en matière de latence, de coût et de précision.

  • Vous avez besoin d’un modèle personnalisé pour des tâches spécifiques, mais vous ne disposez pas de suffisamment de données d’entraînement étiquetées de haute qualité.

  • Vous souhaitez égaler les performances des modèles avancés tout en conservant l’efficacité des modèles plus petits.

Conditions préalables

  • Compte AWSavec accès aux modèles Amazon Nova et aux quotas de service appropriés (minimum 6 instances P5 et 1 instance R5).

  • Rôle IAM avec autorisations pour les tâches SageMaker de formation.

  • Un compartiment Amazon S3 pour stocker les données et sorties d’entraînement.

Configuration de l’augmentation de données

La phase d'augmentation des données utilise des tâches de SageMaker formation pour générer des données de formation de haute qualité à l'aide du modèle de l'enseignant. Cette section détaille le processus de configuration et les exigences.

Rôle IAM

Pour créer des rôles IAM et associer des stratégies, consultez Création des rôles et association des stratégies (console). Si vous en utilisezAWS CLI, suivez les instructions des sections create-role et. attach-role-policy Pour plus d'informations, consultez la section Comment utiliser les rôles d'exécution de l' SageMaker IA dans le Guide du développeur d'SageMaker IA.

Voici des exemples de commande fournis à titre indicatif.

Création d'un rôle d'exécution SageMaker basé sur l'IA

Le rôle est créé dans le cadre d'une relation de confiance permettant à l' SageMaker IA, Amazon Bedrock, d'assumer ce rôle. Cela permet à ces services d’agir en votre nom lors de l’exécution de tâches d’inférence par lots.

aws iam create-role \ --role-name NovaCustomizationRole \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": ["sagemaker.amazonaws.com", "bedrock.amazonaws.com"] }, "Action": "sts:AssumeRole" } ] }'

Association des stratégies nécessaires

# Attach AmazonSageMakerFullAccess aws iam attach-role-policy \ --role-name NovaCustomizationRole \ --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess # Attach AmazonBedrockFullAccess aws iam attach-role-policy \ --role-name NovaCustomizationRole \ --policy-arn arn:aws:iam::aws:policy/AmazonBedrockFullAccess # Attach S3 access policy aws iam attach-role-policy \ --role-name NovaCustomizationRole \ --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess # Attach AmazonEC2FullAccess aws iam attach-role-policy \ --role-name NovaCustomizationRole \ --policy-arn arn:aws:iam::aws:policy/AmazonEC2FullAccess # Attach AmazonEC2ContainerRegistryFullAccess aws iam attach-role-policy \ --role-name NovaCustomizationRole \ --policy-arn arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryFullAccess # Attach AmazonEC2ContainerRegistryFullAccess aws iam attach-role-policy \ --role-name NovaCustomizationRole \ --policy-arn arn:aws:iam::aws:policy/CloudWatchLogsFullAccess

Associez la stratégie en ligne ci-après au rôle d’exécution du client requis pour Distillation Container.

  • AWS KMSautorisations : permet au rôle d'interagir avec le service de gestion des AWS clés, nécessaire pour accéder aux ressources chiffrées ou gérer les clés de chiffrement.

  • IAM:PassRole: Cette autorisation est souvent requise lorsqu'un service doit transférer ce rôle à un autre service, ce qui est courant dans les intégrations AWS de services.

aws iam put-role-policy \ --role-name NovaCustomizationRole \ --policy-name Distillation-Additional-Permissions\ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:*" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "*" } ] }

Configuration Amazon VPC

Pour créer une configuration Amazon VPC pour les tâches de formation basées sur l' SageMaker IA à l'aide deAWS Management Console, suivez les instructions de la section Configurer votre VPC privé pour la SageMaker formation (console).

Création d’un nouvel Amazon VPC

Name: Distillation-VPC IPv4 CIDR: 10.0.0.0/16 (or your preferred range) Availability Zones: 2 Public Subnets: 2 Private Subnets: 2 NAT Gateways: 1 (in one AZ)

Création d’un groupe de sécurité

Name: Distillation-SG Description: Security group for data distillation jobs Inbound Rules: Allow all traffic from self Outbound Rules: Allow all traffic (0.0.0.0/0)

Création de points de terminaison de VPC pour les services suivants

com.amazonaws.[region].s3 com.amazonaws.[region].sagemaker.api com.amazonaws.[region].sagemaker.runtime com.amazonaws.[region].bedrock.api com.amazonaws.[region].bedrock.runtime com.amazonaws.[region].sts com.amazonaws.[region].logs com.amazonaws.[region].ecr.api com.amazonaws.[region].ecr.dkr

Pour chaque point de terminaison :

  • Sélection de votre Distillation-VPC

  • Création de sous-réseaux privés

  • Sélection du groupe de sécurité Distillation-SG

Clés AWS KMS

Lorsque vous utilisez l'inférence par lots Amazon Bedrock, une AWS KMS clé est requise pour garantir la sécurité et la conformité des données. Les tâches d'inférence par lots Amazon Bedrock nécessitent que les compartiments Amazon S3 en entrée et en sortie soient chiffrés à l'aide de AWS KMS clés afin de garantir la protection des données au repos.

Créez une clé KMS à l'AWS CLIaide de cette commande :

# Create KMS key aws kms create-key \ --description "KMS key for Amazon Bedrock batch inference Amazon S3 bucket" \ --region us-east-1

La commande affichera les informations clés, y compris l’ARN. Exemple de sortie :

{ "KeyMetadata": { "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "Arn": "arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } }
Note

Enregistrez l’ARN de la clé KMS à partir de la sortie, car vous en aurez besoin pour créer le compartiment Amazon S3 dans la section suivante.

Compartiment Amazon S3

Vous avez besoin de deux types de stockage Amazon S3. Le compartiment Amazon S3 géré par le client stocke vos données d’entrée et vos fichiers manifest.json de sortie. Vous créez et gérez ce compartiment et vous pouvez utiliser un seul compartiment à la fois pour les entrées et les sorties. Ce compartiment doit être configuré avec le chiffrement KMS, car il stockera des données de sortie sensibles et sera utilisé par les tâches d’inférence par lots Amazon Bedrock. Amazon Bedrock nécessite des compartiments chiffrés par KMS pour traiter les tâches d’inférence par lots.

Le compartiment Amazon S3 géré par les services stocke les poids des modèles. Un compartiment Amazon S3 géré par des services est créé automatiquement lors de votre première tâche d’entraînement. Il dispose de contrôles d’accès restreints avec des chemins spécifiques accessibles uniquement via des fichiers manifestes.

Pour créer un bucket dans un compartiment spécifiqueRégion AWS, utilisez la commande create-bucket CLI.

Exemple de commande pour créer un compartiment Amazon S3 avec AWS KMS chiffrement. {kms_key_arn}Remplacez-le par votre AWS KMS clé ARN. Vous devez d'abord créer une AWS KMS clé si ce n'est pas déjà fait.

aws s3api create-bucket \ --bucket {my_bucket_name} \ --region {aws_region} \ --create-bucket-configuration LocationConstraint={aws_region} \ --server-side-encryption-configuration '{ "Rules": [ { "ApplyServerSideEncryptionByDefault": { "SSEAlgorithm": "aws:kms", "KMSMasterKeyID": "{kms_key_arn}" }, "BucketKeyEnabled": true } ] }'

Démarrage d'un poste SageMaker de formation

Avant de démarrer une tâche d’entraînement, préparez vos données.

Exigences relatives au format des données : votre jeu de données d’entrée doit être au format JSONL, chaque ligne contenant un exemple au format inverse. Pour plus d’informations, consultez Préparation des données pour la distillation des modèles de compréhension.

Contraintes liées aux jeux de données

  • Nombre minimum d’invites : 100

  • Taille maximale de fichier : 2 Go

  • Longueur de ligne maximale : 180 Ko

  • Format de fichier : JSONL uniquement

Pour charger les données d’entrée, exécutez la commande ci-après.

aws s3 cp /path/to/input-data/ s3://customer-input-data-bucket/ —recursive

Recette d’augmentation des données

Vous pouvez obtenir la recette de distillation dans le référentiel de SageMaker HyperPod recettes. La formule de distillation se trouve dans le répertoire : recipes-collection/recipes/fine-tuning/nova. Le processus d’augmentation des données est contrôlé par un fichier de configuration YAML. Vous trouverez ci-dessous une explication détaillée de chaque paramètre. Tous les champs sont obligatoires.

Paramètre Description
name

Nom descriptif de votre tâche d’entraînement. Cela permet d'identifier votre travail dans leAWS Management Console.

distillation_data

Active le travail de distillation des données, ne modifiez pas ce champ.

maxNumberOfInvitations

Le nombre maximum d’invites dans le jeu de données.

maxResponseLength

Longueur maximale de réponse par invite (jetons).

maxInputFileSizeInGo

Taille maximale du fichier d’entrée (en Go).

maxLineLengthen KB

Taille maximale d’une seule ligne dans le fichier d’entrée (en Ko).

maxStudentModelFineTuningContextLengthInTokens

La taille maximale de la fenêtre de contexte (jetons) pour le modèle étudiant. La valeur is ne doit pas dépasser la capacité du modèle étudiant. Vous pouvez définir cette valeur sur 32k ou 64k en fonction de la capacité du modèle étudiant.

teacherModelId

Lorsque vous définissez l’ID du modèle enseignant, sélectionnez l’une des deux options suivantes :

  • Pour Amazon Nova Premier : « us.amazon. nova-premier-v1:0 "pour la région IAD. Remarque : ceci n’est disponible que dans la région IAD.

  • Pour Amazon Nova Pro : « us.amazon. nova-pro-v1:0 » pour la région IAD et « eu.amazon. nova-pro-v1:0 "pour la région ARN.

temperature

Contrôle le caractère aléatoire des réponses (0,7 recommandé pour l’équilibre).

top_p

Seuil de probabilité cumulé pour l’échantillonnage de jetons (0,9 est recommandé).

customer_bucket

Compartiment Amazon S3 pour les input/output données.

kms_key

AWS KMSclé pour chiffrer la sortie dans S3, nécessaire à l'inférence par lots de Bedrock pour stocker la sortie renvoyée par le travail d'inférence.

Limitation

Pour le modèle enseignant en tant que Nova Premier : uniquement pris en charge dans la région IAD (us-east-1), car l’inférence par lots Amazon Bedrock n’est pas disponible dans la région ARN (eu-north-1).

Bonnes pratiques

Préparation des données

  • Incluez 100 exemples étiquetés de haute qualité pour guider le modèle enseignant

  • Retirez les étiquettes de mauvaise qualité avant de les soumettre

  • Suivez les bonnes pratiques en matière d’invites de compréhension de texte

  • Testez les invites avec le modèle enseignant avant de commencer la distillation

Sélection du modèle

  • Utilisez Nova Pro en tant qu’enseignant pour les cas d’utilisation généraux

  • Optez pour Nova Premier pour des connaissances spécialisées dans le domaine

  • Choisissez le modèle étudiant en fonction de la latence et des exigences en matière de coûts

Optimisation des performances

  • Commencez par la température recommandée (0,7) et top_p (0,9)

  • Validez la qualité accrue des données avant le peaufinage

  • Suivez les instructions de la section Sélection des hyperparamètres pour ajuster les hyperparamètres

Démarrage d’une tâche avec PySDK

L'exemple de carnet suivant montre comment exécuter une tâche de SageMaker formation pour la distillation. Pour plus d'informations, voir Utiliser un estimateur SageMaker basé sur l'IA pour exécuter une tâche de formation.

import os import sagemaker,boto3 from sagemaker.pytorch import PyTorch from sagemaker.inputs import TrainingInput sagemaker_session = sagemaker.Session() role = sagemaker.get_execution_role() # SETUP job_name = <Your_job_name> # Must be unique for every run input_s3_uri = <S3 URI to your input dataset> # Must end in .jsonl file output_s3_uri = <S3 URI to your output bucket> + job_name image_uri = "708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-distillation-repo:SM-TJ-DISTILL-LATEST" # Do not change instance_type = "ml.r5.4xlarge" # Recommedation is to use cpu instances instance_count = 1 # Must be 1, do not change role_arn = <IAM role to execute the job with> recipe_path = <Local path to your recipe> # Execution estimator = PyTorch( output_path=output_s3_uri, base_job_name=job_name, role=role_arn, instance_count=instance_count, instance_type=instance_type, training_recipe=recipe_path, max_run=432000, sagemaker_session=sagemaker_session, image_uri=image_uri, subnets= ['subnet-xxxxxxxxxxxxxxxxx','subnet-xxxxxxxxxxxxxxxxx'], # Add subnet groups created in previous steps security_group_ids= ['sg-xxxxxxxxxxxxxxxxx'], # Add security group created in previous steps disable_profiler=True, debugger_hook_config=False ) trainingInput = TrainingInput( s3_data=input_s3_uri, distribution='FullyReplicated', s3_data_type='Converse' ) # The keys must be "train". estimator.fit(inputs={"train": trainingInput})

CloudWatch journaux

Les journaux sont disponibles sur Amazon CloudWatch sous le groupe de /aws/sagemaker/TrainingJobs journaux de votreCompte AWS. Vous verrez un fichier journal par hôte utilisé pour votre tâche d’entraînement.

Entraînement réussi

Pour une tâche d’entraînement réussie, vous verrez le message « L’entraînement est terminé » à la fin du journal.

Le compartiment de sortie contient les fichiers suivants :

  • distillation_data/manifest.json : contient l’emplacement des données augmentées. Vous pouvez utiliser ce jeu de données pour démarrer une tâche de peaufinage sur Amazon Nova. Seul l’entraînement SFT est pris en charge avec ce jeu de données.

    { "distillation_data": "s3://customer_escrow_bucket/job_id/distillation_data/" }
  • distillation_data/sample_training_data.jsonl : ce fichier JSONL contient 50 exemples de données augmentées à prévisualiser pour vous aider à déterminer la qualité des données.

  • distillation_data/training_config.json : ce fichier contient les hyperparamètres recommandés pour les tâches de peaufinage Amazon Nova. Voici un exemple de fichier de  :

    { "epochCount": 5, "learningRate": 1e-05, "batchSize": 1, "learningRateWarmupSteps": 1 }

Validation de la qualité des données augmentées

Avant de procéder au peaufinage, il est essentiel de valider la qualité des données augmentées :

  1. Vérifiez le fichier sample_training_data.jsonl dans votre compartiment de sortie. Ce fichier contient 50 exemples aléatoires du jeu de données augmenté.

  2. Inspectez manuellement la pertinence, la cohérence et l’alignement de ces exemples par rapport à votre cas d’utilisation.

  3. Si la qualité ne répond pas à vos attentes, vous devrez peut-être ajuster vos données d’entrée ou vos paramètres de distillation et relancer le processus d’augmentation des données.

Une fois l'augmentation des données terminée, la deuxième phase consiste à peaufiner le modèle étudiant à l'aide d'Amazon SageMaker HyperPod. Pour de plus amples informations, veuillez consulter Peaufinage supervisé (SFT).

Dans la formule d’entraînement SFT, vous pouvez transmettre le chemin du jeu de données renvoyé par la tâche précédente.

data_s3_path: "s3://[escrow-bucket]/[job-name]/distillation_data/training_data.jsonl"

Remplacez également la configuration d’entraînement recommandée générée à l’étape précédente.

Limites

  • Compatible uniquement avec la technique de peaufinage SFT Nova sur ces données augmentées.

  • Supporte uniquement la technique de réglage fin SFT Nova sur Amazon. SageMaker HyperPod

  • Aucune prise en charge de la distillation multimodale.

  • Aucune prise en charge des modèles enseignants personnalisés.