Ottimizzazione diretta delle preferenze (DPO) - 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à.

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 preferred etichette non-preferred

  • Limite di immagini: massimo 10 immagini per blocco di contenuto

  • Modalità miste: non è possibile combinare testo, immagini e video nello stesso lavoro di formazione