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
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” di dimensioni maggiori (come Amazon Nova Pro o Amazon Nova Premier) trasferisce le sue funzionalità a un modello “studente” di dimensioni minori (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 insegnante 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 studente 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:
-
un’applicazione ha requisiti rigorosi di latenza, costo e precisione;
-
è necessario un modello personalizzato per attività specifiche, ma non è disponibile un numero sufficiente di dati di addestramento etichettati di alta qualità;
-
si intende eguagliare le prestazioni dei modelli avanzati, pur mantenendo l’efficienza dei modelli di dimensioni ridotte.
Prerequisiti
-
Account AWScon 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
-
Un bucket Amazon S3 per archiviare dati di addestramento e output.
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 collegare policy, consulta Creazione dei ruoli e collegamento delle policy (console). Se lo usiAWS 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 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ò permette a questi servizi di agire per conto dell’utente durante l’esecuzione di processi 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" } ] }'
Collegare le policy 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
Collega la seguente policy inline al ruolo di esecuzione del cliente necessario per il container per la distillazione.
-
AWS KMSautorizzazioni: 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 utilizzandoConsole di gestione AWS, segui le istruzioni in Configura il tuo VPC privato per la SageMaker formazione (console).
Creare una nuova configurazione 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)
Creare 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)
Creare 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 una configurazione Distillation-VPC;
-
scegli le sottoreti private;
-
seleziona il gruppo di sicurezza Distillation-SG.
Chiavi AWS KMS
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" \ --regionus-east-1
Il comando restituisce le informazioni sulla 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é servirà per la creazione del bucket Amazon S3 nella sezione successiva.
Bucket Amazon S3
Sono necessari due tipi di archiviazione Amazon S3. Il bucket Amazon S3 gestito dal cliente archivia i dati di input e i file manifest.json di output. È possibile creare e gestire questo bucket, nonché utilizzare un singolo bucket sia per l’input che per l’output. Questo bucket deve essere configurato con crittografia KMS, poiché archivia dati di output sensibili e viene utilizzato dai processo 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 archivia i pesi dei modelli. Un bucket Amazon S3 gestito dal servizio viene creato automaticamente durante il primo job di addestramento. Include controlli di accesso limitati con percorsi specifici accessibili solo tramite file di manifesto.
Per creare un bucket in uno specificoRegione 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 } ] }'
Avvio di un lavoro SageMaker di formazione
Prima di avviare un job di addestramento, prepara i 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 Converse. Per ulteriori informazioni, consulta Preparing data for distilling understanding models.
Vincoli dei set di dati
-
Prompt minimi: 100
-
Dimensione di file massima: 2 GB
-
Lunghezza massima della riga: 180 KB
-
Formato di file: solo JSONL
Per caricare i dati di input, esegui il seguente comando.
aws s3 cp /path/to/input-data/ s3://customer-input-data-bucket/ —recursive
Ricetta di aumento dei dati
È possibile scaricare 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 descrizione dettagliata di ogni parametro. Tutti i campi sono obbligatori.
| Parametro | Description |
|---|---|
| nome |
Un nome descrittivo per il job di addestramento. Questo aiuta a identificare il tuo lavoro in. Console di gestione AWS |
| 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). |
| maxLineLengthIn KB |
La dimensione massima di una singola riga nel file di input (in KB). |
| maxStudentModelFineTuningContextLengthInTokens |
La dimensione massima della finestra di contesto (token) per il modello studente. Il valore non deve superare la capacità del modello studente. È possibile impostare questo valore su 32.000 o 64.000 in base alla capacità del modello studente. |
| teacherModelId |
Quando imposti l’ID del modello insegnante, effettua una scelta tra due opzioni:
|
| temperature |
Controlla la casualità della risposta (0,7 consigliato per il bilanciamento). |
| top_p |
Soglia di probabilità cumulativa per il campionamento tramite token (0,9 consigliato). |
| customer_bucket |
Bucket Amazon S3 per dati. input/output |
| kms_key |
AWS KMSchiave per crittografare l'output in S3, necessaria all'inferenza in batch di Bedrock per archiviare l'output restituito dal processo di inferenza. |
Limitazione
Per il modello insegnante come 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 insegnante
-
Rimuovi etichette di scarsa qualità prima dell’invio
-
Segui le best practice per i prompt di comprensione del testo
-
Testa i prompt con il modello 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 dominio
-
Scegli il modello studente 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à dei dati aumentati prima di eseguire il fine-tuning
-
Segui le linee guida in Selecting Hyperparameters per regolare gli iperparametri
Avvio di un job con PySDK
Il seguente taccuino di esempio mostra come eseguire un processo di formazione per la distillazione. SageMaker 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})
CloudWatch registri
I log sono disponibili CloudWatch in Amazon nel gruppo di /aws/sagemaker/TrainingJobs log del tuoAccount AWS. È presente un file di log per host utilizzato per il job di addestramento.
Esito positivo dell’addestramento
Un job di addestramento ha esito positivo se alla fine del log viene visualizzato il messaggio “Training is complete”.
Il bucket dell’output contiene i seguenti file:
-
distillation_data/manifest.json: contiene la posizione dei dati aumentati. È possibile utilizzare questo set di dati per avviare un processo di fine-tuning di Amazon Nova. Con questo set di dati è supportato solo l’addestramento SFT.{ "distillation_data": "s3://customer_escrow_bucket/job_id/distillation_data/" } -
distillation_data/sample_training_data.jsonl: questo file JSONL contiene 50 campioni di dati aumentati da visualizzare in anteprima per determinare la qualità dei dati. -
distillation_data/training_config.json: questo file contiene gli iperparametri consigliati per i processi di fine-tuning di Amazon Nova. Di seguito è riportato un esempio del file .{ "epochCount": 5, "learningRate": 1e-05, "batchSize": 1, "learningRateWarmupSteps": 1 }
Convalida della qualità dei dati aumentati
Prima di procedere con il fine-tuning, è fondamentale convalidare la qualità dei dati aumentati:
-
Esamina il file
sample_training_data.jsonlnel bucket di output. Questo file contiene 50 campioni casuali del set di dati aumentato. -
Ispeziona manualmente questi campioni per verificarne la pertinenza, la coerenza e l’allineamento al 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 Fine-tuning supervisionato (SFT).
Nella ricetta di addestramento SFT è possibile passare il percorso del set di dati restituito dal job precedente.
data_s3_path: "s3://[escrow-bucket]/[job-name]/distillation_data/training_data.jsonl"
Sostituisci anche la configurazione di addestramento consigliata generata dalla fase precedente.
Limitazioni
-
Supporta solo la tecnica di fine-tuning 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 insegnante personalizzati.