Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Distillazione Amazon Nova
Questa guida rapida ti aiuta a iniziare a utilizzare la distillazione di modelli Amazon Nova utilizzando la regolazione fine supervisionata (SFT) sull'intelligenza artificiale. SageMaker
Argomenti
Concetti
La distillazione di modelli è un metodo che trasferisce le conoscenze da modelli avanzati di grandi dimensioni a modelli più piccoli ed efficienti. Con i modelli Amazon Nova, un modello «insegnante» più ampio (come Amazon Nova Pro o Amazon Nova Premier) trasferisce le sue funzionalità a un modello «studente» più piccolo (come Amazon Nova Lite o Amazon Nova Micro). Questo crea un modello personalizzato che mantiene prestazioni elevate utilizzando meno risorse.
Componenti chiave
Il processo di distillazione prevede principalmente due tipi di modelli:
I modelli per insegnanti fungono da fonte di conoscenza e includono:
-
Amazon Nova Pro (amazon. nova-pro-v1:0)
-
Amazon Nova Premier (amazon. nova-premier-v1:0)
I modelli studenteschi ricevono e implementano le conoscenze:
-
Amazon Nova Lite (amazon. nova-lite-v1:0:300k)
-
Amazon Nova Micro (amazon. nova-micro-v1:0:128k)
-
Amazon Nova Pro (amazon. nova-pro-v1:0:300 k) - Disponibile solo quando usi Amazon Nova Premier come insegnante
Casi d'uso
La distillazione modale è particolarmente utile quando:
-
La tua applicazione ha requisiti rigorosi di latenza, costo e precisione.
-
È necessario un modello personalizzato per attività specifiche, ma mancano dati di formazione etichettati di alta qualità sufficienti.
-
Desiderate eguagliare le prestazioni dei modelli avanzati pur mantenendo l'efficienza dei modelli più piccoli.
Prerequisiti
-
Account AWS con accesso ai modelli Amazon Nova e alle quote di servizio appropriate (minimo 6 istanze P5 e 1 R5).
-
Ruolo IAM con autorizzazioni per lavori di formazione. SageMaker
-
Bucket Amazon S3 per archiviare dati e output di allenamento.
Configurazione dell'aumento dei dati
La fase di aumento dei dati utilizza i lavori di SageMaker formazione per generare dati di formazione di alta qualità utilizzando il modello degli insegnanti. Questa sezione descrive in dettaglio il processo di configurazione e i requisiti.
Ruolo IAM
Per creare ruoli IAM e allegare policy, consulta Creazione di ruoli e collegamento di policy (console). Se lo utilizzi AWS CLI, segui le istruzioni in create-role e. attach-role-policy Per ulteriori informazioni, consulta Come utilizzare i ruoli di esecuzione dell' SageMaker IA nella Guida per sviluppatori SageMaker AI.
Di seguito sono riportati alcuni comandi di esempio come riferimento.
Crea un ruolo di esecuzione SageMaker AI
Il ruolo viene creato con un rapporto di fiducia che consente all' SageMaker IA, Amazon Bedrock, di assumere questo ruolo. Ciò consente a questi servizi di agire per conto dell'utente durante l'esecuzione di lavori di inferenza in batch.
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" } ] }'
Allega le politiche necessarie
# 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
Allega la seguente politica in linea al ruolo di esecuzione del cliente necessario per Distillation Container.
-
AWS KMS autorizzazioni: consente al ruolo di interagire con il servizio di gestione delle AWS chiavi, necessario per accedere alle risorse crittografate o gestire le chiavi di crittografia.
-
IAM:PassRole
: questa autorizzazione è spesso richiesta quando un servizio deve passare questo ruolo a un altro servizio, un modello comune nelle integrazioni di AWS servizi.
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": "*" } ] }
Configurazione Amazon VPC
Per creare una configurazione Amazon VPC per lavori di formazione sull' SageMaker intelligenza artificiale utilizzando AWS Management Console, segui le istruzioni in Configura il tuo VPC privato per la SageMaker formazione (console).
Crea un nuovo 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)
Crea un gruppo di sicurezza
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)
Crea endpoint VPC per i seguenti servizi
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
Per ogni endpoint:
-
Seleziona la tua Distillation-VPC
-
Scegli le sottoreti private
-
Seleziona il gruppo di sicurezza Distillation-SG
AWS KMS chiavi
Quando si lavora con l'inferenza in batch di Amazon Bedrock, è necessaria una AWS KMS chiave per la sicurezza e la conformità dei dati. I processi di inferenza in batch di Amazon Bedrock richiedono che i bucket Amazon S3 di input e output siano crittografati AWS KMS con chiavi per garantire la protezione dei dati inattivi.
Crea una chiave KMS utilizzando questo comando: AWS CLI
# Create KMS key aws kms create-key \ --description "KMS key for Amazon Bedrock batch inference Amazon S3 bucket" \ --region
us-east-1
Il comando restituirà le informazioni chiave, incluso l'ARN. Output di esempio:
{ "KeyMetadata": { "KeyId": "1234abcd-12ab-34cd-56ef-1234567890ab", "Arn": "arn:aws:kms:
us-east-1
:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } }
Nota
Salva l'ARN della chiave KMS dall'output poiché ti servirà per la creazione del bucket Amazon S3 nella sezione successiva.
Bucket Amazon S3
Sono necessari due tipi di storage Amazon S3. Il bucket Amazon S3 gestito dal cliente archivia i dati di input e i file di output. manifest.json
Puoi creare e gestire questo bucket e puoi utilizzare un singolo bucket sia per l'input che per l'output. Questo bucket deve essere configurato con la crittografia KMS poiché memorizzerà dati di output sensibili e verrà utilizzato dai processi di inferenza in batch di Amazon Bedrock: Amazon Bedrock richiede bucket crittografati con KMS per l'elaborazione delle attività di inferenza in batch.
Il bucket Amazon S3 gestito dal servizio memorizza i pesi dei modelli. Un bucket Amazon S3 gestito dal servizio viene creato automaticamente durante il primo processo di formazione. Ha controlli di accesso limitati con percorsi specifici accessibili solo tramite file manifest.
Per creare un bucket in uno specifico Regione AWS, usa il comando CLI create-bucket.
Comando di esempio per creare un bucket Amazon S3 con crittografia. AWS KMS Sostituisci {kms_key_arn}
con la tua AWS KMS chiave ARN. Dovrai prima creare una AWS KMS chiave se non l'hai già fatto.
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 } ] }'
Inizia un lavoro SageMaker di formazione
Prima di iniziare un lavoro di formazione, prepara i tuoi dati.
Requisito del formato dei dati: il set di dati di input deve essere in formato JSONL e ogni riga deve contenere un campione in formato inverso. Per ulteriori informazioni, consulta Preparazione dei dati per la distillazione dei modelli di comprensione.
Vincoli del set di dati
-
Richieste minime: 100
-
Dimensione massima del file: 2 GB
-
Lunghezza massima della linea: 180 KB
-
Formato di file: solo JSONL
Per caricare i dati di input, esegui il comando seguente.
aws s3 cp /path/to/input-data/ s3://customer-input-data-bucket/ —recursive
Ricetta per l'aumento dei dati
È possibile ottenere la ricetta di distillazione dall'archivio delle SageMaker HyperPod ricetterecipes-collection/recipes/fine-tuning/nova
Il processo di aumento dei dati è controllato da un file di configurazione YAML. Di seguito è riportata una spiegazione dettagliata di ciascun parametro. Tutti i campi sono obbligatori.
Parametro | Descrizione |
---|---|
nome |
Un nome descrittivo per il tuo lavoro di formazione. Questo aiuta a identificare il tuo lavoro in. AWS Management Console |
distillation_data |
Abilita il processo di distillazione dei dati, non modificare questo campo. |
maxNumberOfRichieste |
Il numero massimo di prompt nel set di dati. |
maxResponseLength |
La lunghezza massima di risposta per prompt (token). |
maxInputFileSizeInGB |
La dimensione massima del file di input (in GB). |
maxLineLengthInkB |
La dimensione massima di una singola riga nel file di input (in KB). |
maxStudentModelFineTuningContextLengthInTokens |
La dimensione massima della finestra contestuale (token) per il modello studentesco. Il valore is non deve superare la capacità del modello studentesco. È possibile impostare questo valore su 32.000 o 64.000 in base alla capacità del modello studentesco. |
teacherModelId |
Quando imposti Teacher Model Id, scegli tra due:
|
temperature |
Controlla la casualità della risposta (0,7 consigliato per il bilanciamento). |
top_p |
Soglia di probabilità cumulativa per il campionamento basato su token (si consiglia 0,9). |
customer_bucket |
Bucket Amazon S3 per dati. input/output |
kms_key |
AWS KMS chiave per crittografare l'output in S3, necessaria all'inferenza in batch di Bedrock per memorizzare l'output restituito dal processo di inferenza. |
Limitazione
Per Teacher Model as Nova Premier - Supportato solo nella regione IAD (us-east-1
) poiché l'inferenza in batch di Amazon Bedrock non è disponibile nella regione ARN (). eu-north-1
Best practice
Preparazione dei dati
-
Includi 100 esempi etichettati di alta qualità per guidare il modello di insegnante
-
Rimuovi le etichette di scarsa qualità prima dell'invio
-
Segui le migliori pratiche di comprensione del testo
-
Prova le istruzioni con il modello dell'insegnante prima di iniziare la distillazione
Selezione del modello
-
Usa Nova Pro come insegnante per casi d'uso generici
-
Prendi in considerazione Nova Premier per una conoscenza specialistica del settore
-
Scegli il modello studentesco in base ai requisiti di latenza e costo
Ottimizzazione delle prestazioni
-
Inizia con la temperatura consigliata (0,7) e top_p (0,9)
-
Convalida la qualità aumentata dei dati prima della messa a punto
-
Segui le linee guida in Selezione degli iperparametri per regolare gli iperparametri
Avvio di un lavoro con PySDK
Il seguente taccuino di esempio mostra come eseguire un processo di SageMaker formazione per la distillazione. Per ulteriori informazioni, consulta Utilizzare uno stimatore di SageMaker intelligenza artificiale per eseguire un processo di formazione.
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})
Convalida della qualità aumentata dei dati
Prima di procedere alla messa a punto, è fondamentale convalidare la qualità dei dati aumentati:
-
Esamina il file nel tuo bucket di
sample_training_data.jsonl
output. Questo file contiene 50 campioni casuali dal set di dati aumentato. -
Ispeziona manualmente questi campioni per verificarne la pertinenza, la coerenza e l'allineamento con il tuo caso d'uso.
-
Se la qualità non soddisfa le aspettative, potrebbe essere necessario modificare i dati di input o i parametri di distillazione ed eseguire nuovamente il processo di aumento dei dati.
Una volta completata l'aumento dei dati, la seconda fase prevede la messa a punto del modello studentesco tramite Amazon. SageMaker HyperPod Per ulteriori informazioni, consulta Ottimizzazione fine supervisionata (SFT).
Nella ricetta di formazione SFT puoi passare il percorso del set di dati restituito dal lavoro precedente.
data_s3_path: "s3://[escrow-bucket]/[job-name]/distillation_data/training_data.jsonl"
Sostituisci anche la configurazione di allenamento consigliata generata dal passaggio precedente.
Limitazioni
-
Supporta solo la tecnica di regolazione fine di SFT Nova su questi dati aumentati.
-
Supporta solo la tecnica di fine-tuning SFT Nova su Amazon. SageMaker HyperPod
-
Nessun supporto per la distillazione multimodale.
-
Nessun supporto per i modelli personalizzati per insegnanti.