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.

Concepts

La distillation par modèle 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 d'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 en mode 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.

Prérequis

  • Compte AWS avec 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.

  • Compartiment Amazon S3 pour stocker les données d'entraînement et les résultats.

Configuration de l'augmentation des 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 politiques, consultez Création de rôles et attachement de politiques (console). Si vous en utilisez AWS 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.

Vous trouverez ci-dessous des exemples de commandes à titre de référence.

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" } ] }'

Joindre les politiques 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 politique en ligne suivante au rôle d'exécution du client requis pour Distillation Container.

  • AWS KMS autorisations : 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 d'Amazon VPC

Pour créer une configuration Amazon VPC pour les tâches de formation basées sur l' SageMaker IA à l'aide de AWS 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éez des points de terminaison 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 final :

  • Sélectionnez votre Distillation-VPC

  • Choisissez les sous-réseaux privés

  • Sélectionnez le groupe de sécurité Distillation-SG

AWS KMS clés

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 CLI aide 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 de sortiemanifest.json. Vous créez et gérez ce compartiment et vous pouvez utiliser un seul compartiment 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 de formation. 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écifique Ré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 } ] }'

Commencez un travail SageMaker de formation

Avant de commencer un stage de formation, 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 échantillon au format inverse. Pour plus d'informations, suivez la section Préparation des données pour la distillation des modèles de compréhension.

Contraintes liées aux jeux

  • Nombre minimum de demandes : 100

  • Taille maximale du fichier : 2 Go

  • Longueur de ligne maximale : 180 Ko

  • Format de fichier : JSONL uniquement

Pour télécharger les données d'entrée, exécutez la commande suivante.

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 recette 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 poste de formation. Cela permet d'identifier votre travail dans le AWS Management Console.

données_distillations

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

maxNumberOfInvitations

Le nombre maximum d'invites dans l'ensemble de données.

maxResponseLength

La 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 32 000 ou 64 000 en fonction de la capacité du modèle étudiant.

teacherModelId

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

  • Pour Amazon Titan 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 KMS clé 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 Teacher as Nova Premier : uniquement pris en charge dans la région IAD (us-east-1) car Amazon Bedrock, l'inférence par lots 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 de l'enseignant

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

  • Suivez les meilleures pratiques en matière de compréhension du texte

  • Testez les instructions avec le modèle de l'enseignant avant de commencer la distillation

Sélection du modèle

  • Utilisez Nova Pro en tant que professeur 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 de peaufiner

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

Démarrage d'une tâche avec PySDK

L'exemple de bloc-notes 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})

Validation de la qualité accrue des données

Avant de procéder à un réglage précis, il est essentiel de valider la qualité des données augmentées :

  1. Vérifiez le sample_training_data.jsonl fichier dans votre compartiment de sortie. Ce fichier contient 50 échantillons aléatoires de l'ensemble de données augmenté.

  2. Inspectez manuellement la pertinence, la cohérence et l'alignement de ces échantillons 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 Réglage précis supervisé (SFT) de rang complet.

Dans la recette d'entraînement SFT, vous pouvez transmettre le chemin du jeu de données renvoyé par le travail précédent.

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

  • Supporte uniquement la technique de réglage fin 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.

  • Aucun support pour les modèles d'enseignants personnalisés.