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à.
Ottimizzazione diretta delle preferenze (DPO)
Panoramica di
Direct Preference Optimization (DPO) è una tecnica di allineamento che perfeziona i modelli di base utilizzando dati di confronto accoppiati per allineare gli output del modello alle preferenze umane. A differenza dei metodi di reinforcement learning, il DPO ottimizza direttamente il comportamento del modello sulla base del feedback umano su quali risposte siano più desiderabili, offrendo un approccio più stabile e scalabile.
Perché usare DPO
I modelli Foundation possono generare risultati che sono effettivamente corretti ma non sono in linea con le esigenze specifiche degli utenti, i valori organizzativi o i requisiti di sicurezza. Il DPO affronta questo problema consentendoti di:
Ottimizza i modelli in base ai modelli di comportamento desiderati
Riduci gli output indesiderati o dannosi
Allinea le risposte del modello alle linee guida relative alla voce e alla comunicazione del marchio
Migliora la qualità delle risposte in base al feedback degli esperti del settore
Implementa barriere di sicurezza attraverso modelli di risposta preferiti
Come funziona il DPO
DPO usa esempi accoppiati in cui valutatori umani indicano quale delle due possibili risposte è da preferire. Il modello impara a massimizzare la probabilità di generare risposte da preferire, riducendo al minimo quelle indesiderate.
Quando usare DPO
Utilizza DPO nei seguenti scenari:
Ottimizzazione per gli output soggettivi che richiedono l'allineamento con preferenze umane specifiche
Regolazione del tono, dello stile o delle caratteristiche del contenuto del modello
Apportare miglioramenti mirati sulla base del feedback degli utenti e dell'analisi degli errori
Mantenimento di una qualità di output costante in diversi casi d'uso
Formazione con apprendimento per rinforzo senza ricompense utilizzando solo dati sulle preferenze
Modelli e tecniche supportati
DPO supporta sia la regolazione fine dei parametri completi che LoRa (Low-Rank Adaptation):
| Modello | Ingressi supportati | Tipo di istanza | Numero di istanze consigliato | Numero di istanze consentito |
|---|---|---|---|---|
| Amazon Nova Micro | Testo | ml.p5.48xlarge | 2 | 2, 4, 8 |
| Amazon Nova Lite | Testo, immagine | ml.p5.48xlarge | 4 | 2, 4, 8, 16 |
| Amazon Nova Pro | Testo, immagine | ml.p5.48xlarge | 6 | 6, 12, 24 |
Approcci formativi
DPO completo: aggiorna tutti i parametri del modello. Offre potenzialmente una migliore qualità di allineamento, ma richiede più risorse di elaborazione e produce modelli più grandi.
LoRa DPO: utilizza adattatori leggeri per una regolazione precisa efficiente dei parametri. Offre formazione e implementazione più efficienti con modelli di output più piccoli, pur mantenendo una buona qualità di allineamento.
Per la maggior parte dei casi d'uso, l'approccio LoRa offre una capacità di adattamento sufficiente con un'efficienza notevolmente migliorata.
Formato dei dati
I dati di formazione del DPO seguono lo stesso formato di SFT, tranne per il fatto che l'ultimo turno di assistente deve contenere coppie di preferenze ed etichette. preferred non-preferred
Struttura di base
L'ultimo turno dell'assistente utilizza un candidates array invece dicontent:
{ "role": "assistant", "candidates": [ { "content": [ { "text": "This is the preferred response." } ], "preferenceLabel": "preferred" }, { "content": [ { "text": "This is the non-preferred response." } ], "preferenceLabel": "non-preferred" } ] }
Esempio di testo completo
{ "schemaVersion": "bedrock-conversation-2024", "system": [ { "text": "You are a helpful assistant." } ], "messages": [ { "role": "user", "content": [ { "text": "What is the capital of France?" } ] }, { "role": "assistant", "content": [ { "text": "The capital of France is Paris." } ] }, { "role": "user", "content": [ { "text": "Tell me more about it." } ] }, { "role": "assistant", "candidates": [ { "content": [ { "text": "Paris is the capital and largest city of France, known for the Eiffel Tower, world-class museums like the Louvre, and its rich cultural heritage." } ], "preferenceLabel": "preferred" }, { "content": [ { "text": "Paris is a city in France." } ], "preferenceLabel": "non-preferred" } ] } ] }
Esempio con immagini
{ "schemaVersion": "bedrock-conversation-2024", "system": [ { "text": "You are a helpful assistant." } ], "messages": [ { "role": "user", "content": [ { "text": "Describe this image." }, { "image": { "format": "jpeg", "source": { "s3Location": { "uri": "s3://your-bucket/your-path/image.jpg", "bucketOwner": "your-aws-account-id" } } } } ] }, { "role": "assistant", "candidates": [ { "content": [ { "text": "The image shows a detailed description with relevant context and observations." } ], "preferenceLabel": "preferred" }, { "content": [ { "text": "This is a picture." } ], "preferenceLabel": "non-preferred" } ] } ] }
Requisiti del set di dati
Formato: file JSONL singolo per la formazione, file JSONL singolo per la convalida (opzionale)
Dimensione minima: 1.000 coppie di preferenze consigliate per un allenamento efficace
Qualità: dati sulle preferenze di alta qualità producono risultati più efficaci
Altri vincoli: come SFT. Per ulteriori informazioni, consulta Dataset constraints.
Caricamento dei dati
aws s3 cp /path/to/training-data/ s3://your-bucket/train/ --recursive aws s3 cp /path/to/validation-data/ s3://your-bucket/val/ --recursive
Configurazione della ricetta
Configurazione run generale
run: name: "my-dpo-run" model_type: "amazon.nova-lite-v1:0:300k" model_name_or_path: "nova-lite/prod" replicas: 4
| Parametro | Description |
|---|---|
name |
Nome descrittivo per il tuo lavoro di formazione |
model_type |
Variante del modello Nova (non modificare) |
model_name_or_path |
Percorso del modello base (non modificare) |
replicas |
Numero di istanze di calcolo per l'addestramento distribuito |
Configurazione di addestramento
training_config: max_length: 16384 global_batch_size: 32 trainer: max_epochs: 3 model: hidden_dropout: 0.0 attention_dropout: 0.0 ffn_dropout: 0.0
| Parametro | Description | Intervallo |
|---|---|---|
max_length |
Lunghezza massima della sequenza in token | 1024—32768 |
global_batch_size |
Esempi per fase dell'ottimizzatore | Micro/Lite/Pro: 16, 32, 64, 128. Micro/Lite: 256 |
max_epochs |
La formazione passa attraverso il set di dati | Minimo: 1 |
hidden_dropout |
Dropout per stati nascosti | 0.0 - 1.0 |
attention_dropout |
Abbandono per pesi di attenzione | 0.0 - 1.0 |
ffn_dropout |
Dropout per livelli feed-forward | 0.0 - 1.0 |
Configurazione optimizer
model: optim: lr: 1e-5 name: distributed_fused_adam adam_w_mode: true eps: 1e-08 weight_decay: 0.0 betas: - 0.9 - 0.999 sched: warmup_steps: 10 constant_steps: 0 min_lr: 1e-6
| Parametro | Description | Intervallo |
|---|---|---|
lr |
Tasso di apprendimento | 0—1 (tipicamente da 1e-6 a 1e-4) |
weight_decay |
Resistenza di regolarizzazione L2 | 0.0 - 1.0 |
warmup_steps |
Passi per aumentare gradualmente il tasso di apprendimento | 0—20 |
min_lr |
Tasso minimo di apprendimento alla fine del decadimento | 0—1 (deve essere < lr) |
Configurazione specifica per DPO
model: dpo_cfg: beta: 0.1
| Parametro | Description | Intervallo |
|---|---|---|
beta |
Equilibrio tra l'adattamento dei dati di allenamento e l'aderenza al modello originale | 0,001—0,5 |
Beta superiore (0.1): mantiene un maggior comportamento del modello di riferimento ma può apprendere le preferenze più lentamente
Beta inferiore (0,01—0,05): apprendimento delle preferenze più aggressivo, ma rischia di divergere dal riferimento
Raccomandazione: iniziate con beta: 0.1 e modificate verso il basso se l'apprendimento basato sulle preferenze sembra insufficiente.
Configurazione LoRa PEFT
model: peft: peft_scheme: "lora" lora_tuning: loraplus_lr_ratio: 64.0 alpha: 32 adapter_dropout: 0.01
| Parametro | Description | Valori consentiti |
|---|---|---|
peft_scheme |
Metodo di messa a punto | "lora"o (rango completonull) |
alpha |
Fattore di scala per i pesi LoRa | 32, 64, 96, 128, 160, 192 |
loraplus_lr_ratio |
Fattore di scala del tasso di apprendimento LoRA+ | 0,0—100,0 |
adapter_dropout |
Regolarizzazione per i parametri LoRa | 0.0 - 1.0 |
Avvio di un lavoro di formazione
Immagine del contenitore
708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-TJ-DPO-latest
Esempio di codice
from sagemaker.pytorch import PyTorch from sagemaker.inputs import TrainingInput instance_type = "ml.p5.48xlarge" instance_count = 4 image_uri = "708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-TJ-DPO-latest" recipe_overrides = { "training_config": { "trainer": {"max_epochs": 2}, "model": { "dpo_cfg": {"beta": 0.1}, "peft": { "peft_scheme": "lora", "lora_tuning": { "loraplus_lr_ratio": 64.0, "alpha": 32, "adapter_dropout": 0.01, }, }, }, }, } estimator = PyTorch( output_path=f"s3://{bucket_name}/{job_name}", base_job_name=job_name, role=role, instance_count=instance_count, instance_type=instance_type, training_recipe="fine-tuning/nova/nova_lite_p5_gpu_lora_dpo", recipe_overrides=recipe_overrides, max_run=18000, sagemaker_session=sagemaker_session, image_uri=image_uri, disable_profiler=True, debugger_hook_config=False, ) train_input = TrainingInput( s3_data=train_dataset_s3_path, distribution="FullyReplicated", s3_data_type="Converse", ) val_input = TrainingInput( s3_data=val_dataset_s3_path, distribution="FullyReplicated", s3_data_type="Converse", ) estimator.fit(inputs={"train": train_input, "validation": val_input}, wait=True)
Implementazione del modello
Al termine della formazione, distribuisci il modello personalizzato su Amazon Bedrock utilizzando la funzionalità Custom Model Import. Il modello supporta sia il throughput assegnato che l'inferenza su richiesta. I modelli addestrati da LoRA supportano l'inferenza su richiesta.
Per istruzioni sulla distribuzione, consulta Distribuzione di modelli personalizzati.
Limitazioni
Modalità di input: il DPO accetta solo testo e immagini. L'ingresso video non è supportato.
Modalità di output: solo testo
Coppie di preferenze: l'ultimo turno dell'assistente deve contenere esattamente due candidati con
preferredetichettenon-preferredLimite di immagini: massimo 10 immagini per blocco di contenuto
Modalità miste: non è possibile combinare testo, immagini e video nello stesso lavoro di formazione