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à.
Reinforcement Fine-Tuning (RFT) con modelli Amazon Nova
Panoramica di
Che cos'è RFT?
Il Reinforcement Fine-Tuning (RFT) migliora le prestazioni del modello addestrandosi sui segnali di feedback (punteggi misurabili o premi che indicano le prestazioni del modello) anziché sulle risposte esatte e corrette. A differenza della messa a punto supervisionata che apprende dalle coppie input-output, RFT utilizza le funzioni di ricompensa per valutare le risposte del modello e ottimizza iterativamente il modello per massimizzare tali ricompense. Questo approccio eccelle quando è difficile definire l'output esatto e corretto, ma è possibile misurare in modo affidabile la qualità della risposta.
Quando usare RFT
Usa RFT quando puoi definire criteri di successo chiari e misurabili ma hai difficoltà a fornire risultati esatti e corretti per la formazione. È ideale per:
-
Attività in cui la qualità è soggettiva o multiforme (scrittura creativa, ottimizzazione del codice, ragionamento complesso)
-
Scenari con più soluzioni valide in cui alcune sono chiaramente migliori di altre
-
Applicazioni che richiedono miglioramento iterativo, personalizzazione o rispetto di regole aziendali complesse
-
Casi in cui la raccolta di esempi etichettati di alta qualità è costosa o poco pratica
I migliori casi d'uso
RFT eccelle nei settori in cui la qualità dell'output può essere misurata oggettivamente, ma le risposte ottimali sono difficili da definire in anticipo:
-
Risoluzione di problemi matematici e generazione di codice
-
Ragionamento scientifico e analisi strutturata dei dati
-
Compiti che richiedono step-by-step ragionamento o risoluzione di problemi a più turni
-
Applicazioni che bilanciano più obiettivi (precisione, efficienza, stile)
-
Scenari in cui il successo può essere verificato a livello di codice attraverso i risultati di esecuzione o le metriche delle prestazioni
Modelli supportati
Nova Lite 2.0
Panoramica del formato dei dati
I dati di addestramento RFT devono seguire il formato OpenAI Reinforcement Fine-Tuning.
-
Un
messagesarray con turni di conversazione, utilizzo e ruolisystemuser -
Un
reference_answercampo contenente l'output previsto o i criteri di valutazione per il calcolo della ricompensa
Limitazioni attuali
-
Solo testo
Esempi di formati di dati
Ogni esempio deve essere su una sola riga del file JSONL, con un oggetto JSON per riga.
Il reference_answer campo contiene l'output previsto o i criteri di valutazione utilizzati dalla funzione di ricompensa per assegnare un punteggio alla risposta del modello. Non si limita agli output strutturati, ma può contenere qualsiasi formato che aiuti la funzione di ricompensa a valutare la qualità.
Consigli sulle dimensioni dei set di dati
Punto di partenza
-
Minimo 100 esempi di formazione
-
Minimo 100 esempi di valutazione
Approccio basato sulla valutazione
Prima di investire in una formazione RFT su larga scala, valuta le prestazioni di base del tuo modello:
-
Prestazioni elevate (ricompensa superiore al 95%): la tecnologia RFT potrebbe non essere necessaria: il modello offre già buone prestazioni
-
Prestazioni molto scarse (ricompensa dello 0%): passate innanzitutto a SFT per stabilire le funzionalità di base
-
Prestazioni moderate: la tecnologia RFT è probabilmente appropriata
Iniziare con un set di dati di piccole dimensioni consente di:
-
Verifica che la tua funzione di ricompensa sia priva di bug
-
Conferma che RFT è l'approccio giusto per il tuo caso d'uso
-
Identifica e risolvi tempestivamente i problemi
-
Testa il flusso di lavoro prima di ampliarlo
Una volta convalidato, puoi espanderlo a set di dati più grandi per migliorare ulteriormente le prestazioni.
Caratteristiche dei dati di allenamento efficaci
Chiarezza e coerenza
I buoni esempi RFT richiedono dati di input chiari e inequivocabili che consentano un calcolo accurato della ricompensa tra i diversi output del modello. Evita il rumore nei tuoi dati, tra cui:
-
Formattazione non coerente
-
Etichette o istruzioni contraddittorie
-
Istruzioni ambigue
-
Risposte di riferimento contrastanti
Qualsiasi ambiguità indurrà in errore il processo di formazione e indurrà il modello ad apprendere comportamenti non intenzionali.
Diversità
Il tuo set di dati dovrebbe catturare l'intera diversità dei casi d'uso di produzione per garantire solide prestazioni nel mondo reale. Include:
-
Diversi formati di input e custodie periferiche
-
Mappa i modelli effettivi di utilizzo della produzione sulla base dei log e delle analisi degli utenti
-
Esamina diversi tipi di utenti, aree geografiche e variazioni stagionali
-
Includi livelli di difficoltà da problemi semplici a problemi complessi
Considerazioni sulla funzione di ricompensa
Progetta la tua funzione di ricompensa per un allenamento efficiente:
-
Esegui in pochi secondi (non in minuti)
-
Parallelizza efficacemente con Lambda
-
Restituisci punteggi coerenti e affidabili
-
Gestisci con eleganza diversi tipi di output del modello
Le funzioni di ricompensa veloci e scalabili consentono un'iterazione rapida e una sperimentazione conveniente.
Proprietà aggiuntive
Il formato di dati RFT supporta campi personalizzati oltre ai requisiti di base dello schema (e). messages reference_answer Questa flessibilità consente di aggiungere tutti i dati aggiuntivi necessari alla funzione di ricompensa per una corretta valutazione.
Nota
Non è necessario configurarlo nella ricetta: il formato dei dati supporta intrinsecamente campi aggiuntivi. Basta includerli nei dati di allenamento JSON e verranno passati alla funzione di ricompensa sul campo. metadata
Proprietà aggiuntive comuni
Campi di metadati di esempio:
-
task_id— Identificatore univoco per il tracciamento -
difficulty_level— Indicatore di complessità del problema -
domain— Area o categoria tematica -
expected_reasoning_steps— Numero di passaggi della soluzione
Esempio con proprietà aggiuntive
{ "messages": [ { "role": "system", "content": "You are a math tutor" }, { "role": "user", "content": "Solve: 2x + 5 = 13" } ], "reference_answer": { "solution": "x = 4", "steps": ["2x = 13 - 5", "2x = 8", "x = 4"] }, "task_id": "algebra_001", "difficulty_level": "easy", "domain": "algebra", "expected_reasoning_steps": 3 }
Questi campi aggiuntivi vengono passati alla funzione di ricompensa durante la valutazione, abilitando una sofisticata logica di punteggio personalizzata in base al caso d'uso specifico.
Configurazione di addestramento
Ricetta di esempio
# Note: # This recipe can run on p5.48xlarge and p5en.48xlarge instance types. run: name: "my-rft-run" # Unique run name (appears in logs/artifacts). model_type: amazon.nova-2-lite-v1:0:256k model_name_or_path: nova-lite-2/prod data_s3_path: s3://<bucket>/<data file> # Training dataset in JSONL; replicas: 4 reward_lambda_arn: "" ## SMTJ GRPO Training specific configs training_config: max_length: 8192 # Context window (tokens) for inputs+prompt; global_batch_size: 16 # Total samples per optimizer step across all replicas (16/32/64/128/256). reasoning_effort: high # Enables reasoning mode high / low / or null for non-reasoning rollout: # How responses are generated for GRPO/advantage calc. advantage_strategy: number_generation: 2 # N samples per prompt to estimate advantages (variance vs cost). generator: max_new_tokens: 6000 # Cap on tokens generated per sample set_random_seed: true # Seed generation for reproducibility across runs. temperature: 1 # Softmax temperature; top_k: 1 # Sample only from top-K logits rewards: preset_reward_function: null # Usage of reward functions built into Verl [exact_match, code_executions, math_answers] api_endpoint: lambda_arn: "" lambda_concurrency_limit: 12 # Max concurrent Lambda invocations (throughput vs. throttling). trainer: max_steps: 2 # Steps to train for. One Step = global_batch_size save_steps: 5 test_steps: 1 save_top_k: 5 # RL parameters ent_coeff: 0.0 # A bonus added to the policy loss that rewards higher-output entropy. kl_loss_coef: 0.001 # Weight on the KL penalty between the actor (trainable policy) and a frozen reference model optim_config: # Optimizer settings lr: 7e-7 # Learning rate weight_decay: 0.0 # L2 regularization strength (0.0–1.0) adam_beta1: 0.9 adam_beta2: 0.95 peft: # Parameter-efficient fine-tuning (LoRA) peft_scheme: "lora" # Enable LoRA for PEFT lora_tuning: alpha: 32 lora_plus_lr_ratio: 64.0 # LoRA+ learning rate scaling factor (0.0–100.0)
Formazione RFT utilizzando LLM come giudice
Panoramica di
I modelli linguistici di grandi dimensioni (LLMs) vengono sempre più utilizzati come giudici nei flussi di lavoro di reinforcement fine-tuning (RFT), che forniscono segnali di ricompensa automatici che guidano l'ottimizzazione dei modelli. In questo approccio, un LLM valuta i risultati del modello in base a criteri specifici, che si tratti di valutare la correttezza, la qualità, l'aderenza allo stile o l'equivalenza semantica, e assegna premi che guidano il processo di reinforcement learning.
Ciò è particolarmente utile per le attività in cui le funzioni di ricompensa tradizionali sono difficili da definire programmaticamente, come determinare se rappresentazioni diverse (come «1/3", «0,333" e «un terzo») sono semanticamente equivalenti o valutare qualità sfumate come coerenza e pertinenza. Utilizzando i giudici basati su LLM come funzioni di ricompensa, puoi scalare RFT su domini complessi senza richiedere ampie annotazioni umane, consentendo una rapida iterazione e il miglioramento continuo dei tuoi modelli in diversi casi d'uso oltre ai tradizionali problemi di allineamento.
Selezione della modalità di ragionamento
Modalità disponibili
-
none — Nessun ragionamento (ometti il campo reasoning_effort)
-
low — Sovraccarico minimo di ragionamento
-
high — Capacità massima di ragionamento (impostazione predefinita quando è specificato reasoning_effort)
Nota
Non esiste un'opzione media per RFT. Se il campo reasoning_effort non è presente nella configurazione, il ragionamento è disabilitato. Quando il ragionamento è abilitato, è necessario max_new_tokens impostarlo su 32768 per accogliere output di ragionamento estesi.
Quando usare ciascuna modalità
Usa un ragionamento elevato per:
-
Compiti analitici complessi
-
Risoluzione di problemi matematici
-
Deduzione logica in più fasi
-
Attività in cui il step-by-step pensiero aggiunge valore
Usa none (ometti reasoning_effort) o low reasoning per:
-
Semplici domande fattuali
-
Classificazioni dirette
-
Ottimizzazione della velocità e dei costi
-
Risposta semplice alle domande
Compromessi in termini di costi e prestazioni
Aumentano le modalità di ragionamento più elevate:
-
Tempi e costi della formazione
-
Latenza e costi dell'inferenza
-
Capacità di modellazione per attività di ragionamento complesse
Convalida del tuo giudice LLM
Prima di implementarne uno LLM-as-a-judge in produzione, verifica che le valutazioni del modello arbitrale siano in linea con il giudizio umano. Questa operazione prevede:
-
Misurazione dei tassi di concordanza tra il giudice del LLM e i valutatori umani su campioni rappresentativi del vostro compito
-
Garantire che l'accordo del LLM con gli esseri umani soddisfi o superi i tassi di accordo interumani
-
Identificazione di potenziali pregiudizi nel modello del giudice
-
Acquisire la fiducia che il segnale di ricompensa guidi il modello nella direzione prevista
Questa fase di convalida aiuta a garantire che il processo di valutazione automatizzato produca modelli che soddisfino i criteri di qualità della produzione.
Configurazione Lambda per LLM judge
L'utilizzo di un LLM come giudice è un'estensione dell'utilizzo delle funzioni Lambda per il Reinforcement Learning with Verifiable Rewards (RLVR). All'interno della funzione Lambda, effettui una chiamata a uno dei modelli ospitati in Amazon Bedrock.
Requisiti di configurazione importanti:
| Configurazione | Requisito | Informazioni |
|---|---|---|
| Produttività di Amazon Bedrock | Quota sufficiente | Assicurati che la tua quota di throughput per il modello Amazon Bedrock utilizzato sia sufficiente per il tuo carico di lavoro di formazione |
| Timeout Lambda | Timeout prolungato | Configura il timeout della funzione Lambda fino a un massimo di 15 minuti. L'impostazione predefinita è di 3 secondi, il che non è sufficiente per le risposte del modello Amazon Bedrock |
| Simultaneità Lambda | Maggiore concorrenza | La Lambda viene richiamata in parallelo durante l'allenamento. Aumenta la concorrenza per massimizzare la velocità effettiva disponibile |
| Configurazione della ricetta | Abbina le impostazioni Lambda | Il limite di concorrenza deve essere configurato nella ricetta |
Creazione ed esecuzione di lavori
Avvio di un lavoro di formazione
Usa il modello di taccuino SageMaker AI Training Job: https://docs.aws.amazon.com/sagemaker/latest/dg/nova-fine-tuning-training-job.html#nova-model-training-jobs-notebook
Requisiti dell'ist
Il contenitore supporta sia la formazione Full-Rank che quella LoRa:
-
Formazione LoRa: istanze 2/4/6/8 × p5.48xlarge o p5en.48xlarge
-
Formazione completa - istanze 2/4/6/8 × p5.48xlarge (obbligatorio)
Monitoraggio della formazione
I registri di formazione includono metriche complete per ogni fase. Categorie metriche chiave:
Metriche di ricompensa
-
critic/rewards/mean,critic/rewards/max,critic/rewards/min— Distribuzione delle ricompense -
val-score/rewards/mean@1— Premi di convalida
Comportamento del modello
-
actor/entropy— Variazione delle politiche (maggiore = più esplorativa)
Formazione e salute
-
actor/pg_loss— Perdita del gradiente politico -
actor/pg_clipfrac— Frequenza degli aggiornamenti interrotti -
actor/grad_norm— Magnitudine del gradiente
Caratteristiche di risposta
-
prompt_length/mean,prompt_length/max,prompt_length/min— Statistiche sui token di input -
response_length/mean,response_length/max,response_length/min— Statistiche sui token di output -
response/aborted_ratio— Frequenza di generazione incompleta (0 = tutto completato)
Prestazioni
-
perf/throughput— Produttività della formazione -
perf/time_per_step— Tempo per fase di allenamento -
timing_per_token_ms/*— Tempi di elaborazione per token
Utilizzo delle risorse
-
perf/max_memory_allocated_gb,perf/max_memory_reserved_gb— Memoria GPU -
perf/cpu_memory_used_gb— memoria CPU
Utilizzo di modelli ottimizzati
Al termine dell'addestramento, il checkpoint finale del modello viene salvato nella posizione di output specificata. Il percorso del checkpoint è disponibile in:
-
Registri di allenamento
-
manifest.jsonfile nella posizione di output di Amazon S3 (definitaoutput_s3_urinel notebook)
Limitazioni e best practice
Limitazioni
-
Timeout Lambda: le funzioni Reward devono essere completate entro 15 minuti (previene processi inutili e gestisce i costi)
-
Solo turno singolo: le conversazioni a turni multipli non sono supportate
-
Requisiti in materia di dati: richiede una diversità sufficiente; ha difficoltà con ricompense scarse (esempi positivi inferiori al 5%)
-
Costo computazionale: più costoso della messa a punto supervisionata
-
Nessun dato multimodale: è supportato solo il tipo di dati di testo
Best practice
Inizia in piccolo
-
Inizia con 100-200 esempi
-
Convalida la correttezza della funzione di ricompensa
-
Scala gradualmente in base ai risultati
Valutazione pre-allenamento
-
Verifica le prestazioni del modello di base prima di RFT
-
Se i premi sono costantemente pari allo 0%, utilizza prima SFT per stabilire le funzionalità di base
-
Se i premi sono superiori al 95%, la RFT potrebbe non essere necessaria
Monitora la formazione
-
Tieni traccia dei punteggi e della distribuzione medi dei premi
-
Fai attenzione all'overfitting (i premi di formazione aumentano mentre i premi di convalida diminuiscono)
-
Cerca i modelli riguardanti:
-
I premi si stabilizzano al di sotto di 0,15
-
Aumento della varianza delle ricompense nel tempo
-
Diminuzione delle prestazioni di convalida
-
Ottimizza le funzioni di ricompensa
-
Esegui in pochi secondi (non in minuti)
-
Riduci al minimo le chiamate API esterne
-
Utilizza algoritmi efficienti
-
Implementa una corretta gestione degli errori
-
Sfrutta la scalabilità parallela di Lambda
Strategia di iterazione
Se i premi non migliorano:
-
Modifica il design della funzione di ricompensa
-
Aumenta la diversità dei set di dati
-
Aggiungi altri esempi rappresentativi
-
Verifica che i segnali di ricompensa siano chiari e coerenti
Funzionalità avanzate: Nova Forge
Per gli utenti che richiedono funzionalità avanzate oltre ai limiti RFT standard, Nova Forge è disponibile come servizio di abbonamento a pagamento che offre:
-
Supporto per conversazioni a turni
-
Funzioni di ricompensa con un tempo di esecuzione superiore a 15 minuti
-
Algoritmi e opzioni di ottimizzazione aggiuntivi
-
Modifiche personalizzate alla ricetta di allenamento
-
State-of-the-art Tecniche di intelligenza artificiale
Nova Forge funziona con l' SageMaker intelligenza artificiale HyperPod ed è progettata per supportare i clienti aziendali nella creazione dei propri modelli di frontiera.
Comandi e suggerimenti utili
È disponibile una raccolta di script di osservabilità
Gli script disponibili sono:
-
Attivazione delle notifiche e-mail per gli aggiornamenti sullo stato dei lavori di formazione
-
Ottenere stime dei tempi di formazione in base alle configurazioni dei lavori
-
Ottenere approssimazioni sulla durata prevista della formazione per i lavori in corso
Installazione
Nota
Assicurati di aggiornare AWS le tue credenziali prima di utilizzare uno dei seguenti script.
pip install boto3 git clone https://github.com/aws-samples/amazon-nova-samples.git cd amazon-nova-samples/customization/SageMakerUilts/SageMakerJobsMonitoring/
Utilizzo di base
# Enabling email notifications for training job status updates python enable_sagemaker_job_notifs.py --email test@amazon.com test2@gmail.com --region us-east-1 --platform SMTJ Creating resources........ Please check your email for a subscription confirmation email, and click 'Confirm subscription' to start receiving job status email notifications! You'll receive the confirmation email within a few minutes.
# Obtaining training time estimates based on job configurations python get_training_time_estimate.py
# Obtaining approximations for how long training is expected to take for in-progress jobs python get-training-job-progress.py --region us-east-1 --job-name my-training-job --num-dataset-samples 1000
Per ulteriori dettagli ed esempi, consulta questa