View a markdown version of this page

SFT su Nova 2.0 - Amazon Nova

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à.

SFT su Nova 2.0

Amazon Nova Lite 2.0 offre funzionalità avanzate per la regolazione fine supervisionata, tra cui la modalità di ragionamento avanzato, una migliore comprensione multimodale e una gestione estesa del contesto. SFT su Nova 2.0 ti consente di adattare queste potenti funzionalità ai tuoi casi d'uso specifici, mantenendo al contempo le prestazioni superiori del modello in attività complesse.

Le caratteristiche principali di SFT su Nova 2.0 includono:

  • Supporto in modalità di ragionamento: addestra i modelli per generare tracce di ragionamento esplicite prima delle risposte finali per funzionalità analitiche avanzate.

  • Formazione multimodale avanzata: perfeziona la comprensione dei documenti (PDF), la comprensione dei video e le attività basate su immagini con una maggiore precisione.

  • Funzionalità di richiamo degli strumenti: addestrate i modelli a utilizzare efficacemente strumenti esterni e richiamare funzioni per flussi di lavoro complessi.

  • Supporto contestuale esteso: sfrutta finestre contestuali più lunghe con maggiore stabilità e precisione per applicazioni che richiedono un uso intensivo di documenti.

Nota

Per ulteriori informazioni sulle immagini dei contenitori o sulle ricette di esempio da utilizzare, consulta le ricette di Amazon Nova.

Di seguito è riportato un esempio di ricetta per SFT. Puoi trovare questa ricetta e altre nell'archivio delle ricette.

run: name: my-full-rank-sft-run model_type: amazon.nova-2-lite-v1:0:256k model_name_or_path: nova-lite-2/prod data_s3_path: s3://my-bucket-name/train.jsonl # only and not compatible with SageMaker Training Jobs replicas: 4 # Number of compute instances for training, allowed values are 4, 8, 16, 32 output_s3_path: s3://my-bucket-name/outputs/ # Output artifact path (HyperPod job-specific; not compatible with standard SageMaker Training Jobs) mlflow_tracking_uri: "" # Required for MLFlow mlflow_experiment_name: "my-full-rank-sft-experiment" # Optional for MLFlow. Note: leave this field non-empty mlflow_run_name: "my-full-rank-sft-run" # Optional for MLFlow. Note: leave this field non-empty training_config: max_steps: 100 # Maximum training steps. Minimal is 4. save_steps: ${oc.select:training_config.max_steps} # How many training steps the checkpoint will be saved save_top_k: 5 # Keep top K best checkpoints. Note supported only for jobs. Minimal is 1. max_length: 32768 # Sequence length (options: 8192, 16384, 32768 [default], 65536) global_batch_size: 32 # Global batch size (options: 32, 64, 128) reasoning_enabled: true # If data has reasoningContent, set to true; otherwise False lr_scheduler: warmup_steps: 15 # Learning rate warmup steps. Recommend 15% of max_steps min_lr: 1e-6 # Minimum learning rate, must be between 0.0 and 1.0 optim_config: # Optimizer settings lr: 1e-5 # Learning rate, must be between 0.0 and 1.0 weight_decay: 0.0 # L2 regularization strength, must be between 0.0 and 1.0 adam_beta1: 0.9 # Exponential decay rate for first-moment estimates adam_beta2: 0.95 # Exponential decay rate for second-moment estimates peft: # Parameter-efficient fine-tuning (LoRA) peft_scheme: "null" # Disable LoRA for PEFT

Selezione della modalità di ragionamento (solo Nova 2.0)

Amazon Nova 2.0 supporta la modalità di ragionamento per funzionalità analitiche avanzate:

  • Modalità di ragionamento (abilitata):

    • Impostata reasoning_enabled: true nella configurazione di allenamento

    • Modella i treni per generare tracce di ragionamento prima delle risposte finali

    • Migliora le prestazioni in attività di ragionamento complesse

  • Modalità non ragionata (disabilitata):

    • Imposta reasoning_enabled: false o ometti il parametro (impostazione predefinita)

    • SFT standard senza ragionamento esplicito

    • Adatto per attività che non traggono vantaggio dal ragionamento step-by-step

Nota
  • Quando il ragionamento è abilitato, funziona con un elevato sforzo di ragionamento. Non esiste un'opzione di ragionamento basso per SFT.

  • Il contenuto di ragionamento multimodale non è supportato per SFT. La modalità di ragionamento si applica agli input di solo testo.

È consentito addestrare Amazon Nova su un set di dati non ragionevoli conreasoning_enabled: true. Tuttavia, così facendo il modello potrebbe perdere le sue capacità di ragionamento, poiché Amazon Nova impara principalmente a generare le risposte presentate nei dati senza applicare il ragionamento.

Se si esegue l'addestramento di Amazon Nova su un set di dati non ragionante ma si desidera comunque utilizzare il ragionamento durante l'inferenza:

  1. Disattiva il ragionamento durante l'allenamento () reasoning_enabled: false

  2. Abilita il ragionamento in un secondo momento durante l'inferenza

Sebbene questo approccio consenta il ragionamento in fase di inferenza, non garantisce prestazioni migliori rispetto all'inferenza senza ragionamento.

Procedura ottimale: abilita il ragionamento sia per l'addestramento che per l'inferenza quando si utilizzano set di dati di ragionamento e disabilitalo per entrambi quando si utilizzano set di dati non di ragionamento.

Nota

Per ulteriori informazioni sulle immagini dei contenitori o sulle ricette di esempio da utilizzare, consulta le ricette di Amazon Nova.

Strumento che chiama il formato dei dati

SFT supporta modelli di addestramento all'uso degli strumenti (chiamata di funzioni). Di seguito è riportato un esempio di formato di input per la chiamata degli strumenti:

Esempio di input:

{ "schemaVersion": "bedrock-conversation-2024", "system": [ { "text": "You are an expert in composing function calls." } ], "toolConfig": { "tools": [ { "toolSpec": { "name": "getItemCost", "description": "Retrieve the cost of an item from the catalog", "inputSchema": { "json": { "type": "object", "properties": { "item_name": { "type": "string", "description": "The name of the item to retrieve cost for" }, "item_id": { "type": "string", "description": "The ASIN of item to retrieve cost for" } }, "required": [ "item_id" ] } } } }, { "toolSpec": { "name": "getItemAvailability", "description": "Retrieve whether an item is available in a given location", "inputSchema": { "json": { "type": "object", "properties": { "zipcode": { "type": "string", "description": "The zipcode of the location to check in" }, "quantity": { "type": "integer", "description": "The number of items to check availability for" }, "item_id": { "type": "string", "description": "The ASIN of item to check availability for" } }, "required": [ "item_id", "zipcode" ] } } } } ] }, "messages": [ { "role": "user", "content": [ { "text": "I need to check whether there are twenty pieces of the following item available. Here is the item ASIN on Amazon: id-123. Please check for the zipcode 94086" } ] }, { "role": "assistant", "content": [ { "reasoningContent": { "reasoningText": { "text": "The user wants to check how many pieces of the item with ASIN id-123 are available in the zipcode 94086" } } }, { "toolUse": { "toolUseId": "getItemAvailability_0", "name": "getItemAvailability", "input": { "zipcode": "94086", "quantity": 20, "item_id": "id-123" } } } ] }, { "role": "user", "content": [ { "toolResult": { "toolUseId": "getItemAvailability_0", "content": [ { "text": "[{\"name\": \"getItemAvailability\", \"results\": {\"availability\": true}}]" } ] } } ] }, { "role": "assistant", "content": [ { "text": "Yes, there are twenty pieces of item id-123 available at 94086. Would you like to place an order or know the total cost?" } ] } ] }

Considerazioni importanti per i dati di chiamata degli strumenti:

  • ToolUse deve comparire solo nei turni degli assistenti

  • ToolResult deve apparire solo nei turni degli utenti

  • ToolResult deve essere solo testo o JSON; altre modalità non sono attualmente supportate per i modelli Amazon Nova

  • L'InputSchema all'interno di ToolSpec deve essere un oggetto JSON Schema valido

  • Ciascuno ToolResult deve fare riferimento a un assistente valido toolUseId di un precedente ToolUse, e ognuno deve essere usato esattamente una volta per conversazione toolUseId

Nota

Per ulteriori informazioni sulle immagini dei contenitori o sulle ricette di esempio da utilizzare, consulta le ricette di Amazon Nova.

Comprensione del documento, formato dei dati

SFT supporta modelli di formazione sulle attività di comprensione dei documenti. Di seguito è riportato un esempio di formato di input:

Esempio di input

{ "schemaVersion": "bedrock-conversation-2024", "messages": [ { "role": "user", "content": [ { "text": "What are the ways in which a customer can experience issues during checkout on Amazon?" }, { "document": { "format": "pdf", "source": { "s3Location": { "uri": "s3://my-bucket-name/path/to/documents/customer_service_debugging.pdf", "bucketOwner": "123456789012" } } } } ] }, { "role": "assistant", "content": [ { "text": "Customers can experience issues with 1. Data entry, 2. Payment methods, 3. Connectivity while placing the order. Which one would you like to dive into?" } ], "reasoning_content": [ { "text": "I need to find the relevant section in the document to answer the question.", "type": "text" } ] } ] }

Considerazioni importanti per la comprensione dei documenti:

  • Sono supportati solo i file PDF

  • La dimensione massima del documento è di 10 MB

  • Un esempio può contenere documenti e testo, ma non può combinare documenti con altre modalità (come immagini o video)

Nota

Per ulteriori informazioni sulle immagini dei contenitori o sulle ricette di esempio da utilizzare, consulta le ricette di Amazon Nova.

Video Understanding for SFT

SFT supporta modelli di ottimizzazione per le attività di comprensione video. Di seguito è riportato un esempio di formato di input:

Esempio di input

{ "schemaVersion": "bedrock-conversation-2024", "messages": [ { "role": "user", "content": [ { "text": "What are the ways in which a customer can experience issues during checkout on Amazon?" }, { "video": { "format": "mp4", "source": { "s3Location": { "uri": "s3://my-bucket-name/path/to/videos/customer_service_debugging.mp4", "bucketOwner": "123456789012" } } } } ] }, { "role": "assistant", "content": [ { "text": "Customers can experience issues with 1. Data entry, 2. Payment methods, 3. Connectivity while placing the order. Which one would you like to dive into?" } ], "reasoning_content": [ { "text": "I need to find the relevant section in the video to answer the question.", "type": "text" } ] } ] }

Considerazioni importanti per la comprensione dei video:

  • I video possono avere una dimensione massima di 50 MB

  • I video possono avere una durata massima di 15 minuti

  • È consentito un solo video per campione; non sono supportati più video nello stesso campione

  • Un campione può contenere video e testo, ma non può combinare video con altre modalità (come immagini o documenti)

Nota

Per ulteriori informazioni sulle immagini dei contenitori o sulle ricette di esempio da utilizzare, consulta le ricette di Amazon Nova.

Istruzioni per il caricamento dei dati

Carica i set di dati di formazione e convalida in un bucket S3. Specificate queste posizioni nel blocco della ricetta: run

## Run config run: ... data_s3_path: "s3://<bucket-name>/<training-directory>/<training-file>.jsonl"

Nota: sostituisci <bucket-name><training-directory>, <validation-directory><training-file>, e <validation-file> con percorsi S3 effettivi.

Nota: i set di dati di convalida non sono attualmente supportati per SFT con Amazon Nova 2.0. Se viene fornito un set di dati di convalida, questo verrà ignorato.

Creazione di un Fine-Tuning Job

Definisci il modello base utilizzando i model_name_or_path campi model_type e nel blocco: run

## Run config run: ... model_type: amazon.nova-2-lite-v1:0:256k model_name_or_path: nova-lite-2/prod ...

Parametri di ottimizzazione SFT

I parametri disponibili per la regolazione con SFT includono:

Configurazione delle esecuzioni

  • name: Un nome descrittivo per il tuo lavoro di formazione. Questo aiuta a identificare il tuo lavoro nella console AWS di gestione.

  • model_type: la variante del modello Amazon Nova da utilizzare. Le opzioni disponibili sono. amazon.nova-2-lite-v1:0:256k

  • model_name_or_path: il percorso verso il modello base da utilizzare per l'allenamento. Le opzioni disponibili sono nova-lite-2/prod o il percorso S3 per il checkpoint post-allenamento (). s3://customer-escrow-bucket-unique_id/training_run_name

  • repliche: il numero di istanze di calcolo da utilizzare per l'addestramento distribuito. I valori disponibili variano in base al modello scelto. Amazon Nova Lite 2.0 supporta 4, 8, 16 o 32 repliche.

  • data_s3_path: la posizione S3 del set di dati di addestramento, che è un file JSONL. Questo file deve risiedere nello stesso account e nella stessa regione del cluster. AWS Tutte le posizioni S3 fornite devono trovarsi nello stesso account e nella stessa Regione.

  • validation_data_s3_path: (Facoltativo) La posizione S3 del set di dati di convalida, che è un file JSONL. Questo file deve trovarsi nello stesso account e nella stessa Regione del cluster. Tutte le posizioni S3 fornite devono trovarsi nello stesso account e nella stessa Regione.

  • output_s3_path: la posizione S3 in cui sono archiviati il manifest e i log. TensorBoard Tutte le sedi S3 fornite devono trovarsi nello stesso account e nella stessa regione. AWS AWS

  • mlflow_tracking_uri: L'ARN dell'app da utilizzare per la registrazione. MLFlow MLFlow

  • MLFlow mlflow_experiment_name: nome dell'esperimento.

  • mlflow_run_name: nome dell'esecuzione. MLFlow

Configurazione dell'allenamento

  • max_steps: il numero di fasi di allenamento da eseguire. Ogni fase addestrerà il modello con il global_batch_size numero di elementi.

  • save_steps: La frequenza (in fasi) con cui salvare i checkpoint del modello durante l'allenamento.

  • save_top_k: il numero massimo di migliori checkpoint da conservare in base alle metriche di convalida.

  • max_length: la lunghezza massima della sequenza in token. Determina la dimensione della finestra di contesto per l’addestramento. Il valore massimo supportato è 32768 token per SFT.

    Sequenze più lunghe migliorano l’efficienza di addestramento a scapito di maggiori requisiti di memoria. Ti consigliamo di abbinare il parametro max_length alla distribuzione dei dati.

  • global_batch_size: il numero totale di esempi di formazione elaborati insieme in un unico passaggio avanti o indietro su tutti i dispositivi e gli operatori.

    Questo valore moltiplica la dimensione del batch per dispositivo e il numero di dispositivi. Influisce sulla stabilità dell’addestramento e sul throughput. È consigliabile iniziare con un batch di dimensioni idonee per la memoria e quindi aumentare verticalmente. Per i dati specifici del dominio, batch di dimensioni maggiori potrebbero rendere i gradienti eccessivamente uniformi.

  • reasoning_enabled: flag booleano per abilitare le funzionalità di ragionamento durante l'allenamento.

Learning Rate Scheduler

  • warmup_steps: Il numero di passaggi per aumentare gradualmente il tasso di apprendimento. Migliora la stabilità dell’addestramento.

  • min_lr: Il tasso minimo di apprendimento alla fine del decadimento. I valori validi sono compresi tra 0 e 1, entrambi inclusi, ma devono essere inferiori al tasso di apprendimento.

Configurazione dell'ottimizzatore

  • lr: Il tasso di apprendimento, che controlla la dimensione del passo durante l'ottimizzazione. Sono consigliabili valori compresi tra 1e-6 e 1e-4 per ottenere buone prestazioni. I valori validi sono compresi tra 0 e 1, entrambi inclusi.

  • weight_decay: La forza di regolarizzazione L2. Valori maggiori (compresi tra 0,01 e 0,1) aumentano la regolarizzazione.

  • adam_beta1: Il tasso di decadimento esponenziale per le stime del primo momento in Adam Optimizer. L'impostazione predefinita è 0,9.

  • adam_beta2: il tasso di decadimento esponenziale per le stime del secondo momento in Adam Optimizer. Il valore predefinito è 0,95.

Configurazione PEFT

  • peft_scheme: lo schema di regolazione fine efficiente in termini di parametri da utilizzare. Le opzioni sono 'null' per la messa a punto completa o per la regolazione di precisione basata su LoRa. lora

LoRa Tuning (quando peft_scheme è 'lora')

  • alpha: Il parametro di scala LoRa. Controlla l'entità dell'adattamento di basso rango. I valori tipici vanno da 8 a 128.

  • lora_plus_lr_ratio: Il rapporto del tasso di apprendimento per l'ottimizzazione di LoRA+. Questo moltiplicatore regola il tasso di apprendimento in modo specifico per i parametri LoRa.

Guida agli iperparametri

Utilizza i seguenti iperparametri consigliati in base all'approccio di allenamento:

Allenamento di livello completo

  • Epoche: 1

  • Tasso di apprendimento (lr): 1e-5

  • Tasso minimo di apprendimento (min_lr): 1e-6

LoRa (adattamento a basso rango)

  • Epoche: 2

  • Tasso di apprendimento (lr): 5e-5

  • Tasso minimo di apprendimento (min_lr): 1e-6

Nota: modifica questi valori in base alle dimensioni del set di dati e alle prestazioni di convalida. Monitora le metriche di allenamento per evitare un sovradimensionamento.