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 usare la distillazione di modelli Amazon Nova utilizzando la regolazione fine supervisionata (SFT) sull'intelligenza artificiale. SageMaker
La distillazione di modelli è un metodo di SageMaker intelligenza artificiale 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ù grande (come Amazon Nova Pro o) 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 insegnante fungono da fonte di conoscenza e includono:
-
Amazon Nova Pro (amazon.nova-pro-v1:0)
-
(amazon.nova-premier-v 1: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-v 1:0:300 k) - Disponibile solo se si utilizza 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 AWS con accesso ai modelli Amazon Nova e quote di servizio appropriate (min. 6 istanze P5 e 1 R5).
-
Ruolo IAM con autorizzazioni per Training Jobs. SageMaker
-
Un bucket Amazon S3 per archiviare dati di addestramento e output.
Configurazione dell’aumento dei dati
La fase di aumento dei dati utilizza SageMaker Training Jobs 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 utilizzi l’ AWS CLI, segui le istruzioni in create-role e attach-role-policy. Per ulteriori informazioni, consulta How to use SageMaker AI execution roles nella SageMaker AI Developer Guide.
Di seguito sono riportati comandi di esempio come riferimento.
Crea un ruolo di esecuzione SageMaker AI
Il ruolo viene creato con una relazione 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 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 dei 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 SageMaker Training Jobs utilizzando Console di gestione AWS, segui le istruzioni in Configura il tuo VPC privato per la formazione sull' SageMaker intelligenza artificiale (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 il tuo Distillation-VPC
-
scegli le sottoreti private;
-
Seleziona il gruppo Distillation-SG di sicurezza
AWS KMS keys
Quando si utilizza l'inferenza batch di Amazon Bedrock, è necessaria una AWS KMS chiave per la sicurezza e la conformità dei dati. I lavori di inferenza batch di Amazon Bedrock richiedono che i bucket Amazon S3 di input e output siano crittografati con AWS KMS 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 Nova distillation"
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 storage Amazon S3. Customer-managed Il bucket Amazon S3 memorizza i dati di input e i file di output. manifest.json È 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 la crittografia KMS poiché memorizzerà dati di output sensibili e verrà utilizzato dai lavori di inferenza batch di Amazon Bedrock. Amazon Bedrock richiede KMS-encrypted bucket per l'elaborazione delle attività di inferenza in batch.
Service-managed Il bucket Amazon S3 memorizza 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 specifico Regione AWS, usa il comando CLI create-bucket.
Comando di esempio per creare un bucket Amazon S3 con crittografia. AWS KMS Sostituiscilo {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 \ "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
Puoi ottenere la ricetta della distillazione dall'archivio delle recipes-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. |
| max NumberOfPrompts |
Il numero massimo di prompt nel set di dati. |
| massimo ResponseLength |
La lunghezza massima di risposta per prompt (token). |
| massimo InputFileSizeInGB |
La dimensione massima del file di input (in GB). |
| massimo LineLengthInKB |
La dimensione massima di una singola riga nel file di input (in KB). |
| massimo StudentModelFineTuningContextLengthInTokens |
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. |
| insegnante ModelId |
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 input/output dati. |
| kms_key |
AWS KMS chiave per crittografare l'output in S3, necessaria all'inferenza 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 lavoro di formazione per la distillazione. SageMaker Per ulteriori informazioni, consulta Utilizzare uno stimatore SageMaker AI per eseguire un lavoro 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 tuo Account 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 completato l'aumento dei dati, la seconda fase prevede la messa a punto del modello utilizzato dagli studenti. 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.
-
Nessun supporto per la distillazione multimodale.
-
Nessun supporto per i modelli insegnante personalizzati.