Robocikowo>ROBOCIKOWO
Zachowanie AI

DPO

2023AktywnyOpublikowano: 9 czerwca 2026Aktualizacja: 9 czerwca 2026Opublikowany
Direct Preference Optimization (Rafailov et al., Stanford 2023) to metoda alignmentu LLM z preferencji człowieka, która zastępuje cały pipeline RLHF (model nagrody + PPO) jednym lossem klasyfikacji binarnej na parach (lepsza, gorsza odpowiedź). Stabilniejsza, prostsza i często lepsza empirycznie niż RLHF — stała się standardem w open-source LLM (Llama 3, Mistral, Zephyr, Tulu).
Kluczowa innowacja
Eliminuje osobny model nagrody i pętlę reinforcement learning z RLHF — pokazuje, że KL-ograniczona maksymalizacja nagrody redukuje się analitycznie do prostej klasyfikacji binarnej na parach preferencji. Tę samą jakość alignmentu uzyskuje się jednym, stabilnym krokiem treningu nadzorowanego.
Kategoria
Zachowanie AI
Poziom abstrakcji
Wzorzec
Poziom operacji
Po-treningTreningModel
Zastosowania
Alignment open-source LLM: Llama 2 Chat → Llama 3 Instruct, Mistral 7B Instruct, Zephyr 7B, Tulu 2Reduckcja toxicity i hallucynacji bez pełnego RLHF pipelineTańsze i stabilniejsze douczanie modelu na firmowych preferencjach (alignment domenowy)Punkt wyjścia dla całej rodziny preference optimisation: IPO, KTO, ORPO, SimPO, RPOAlignment modeli rozumowania (reasoning) — np. wczesne warianty SFT+DPO przed pełnym RL

Jak działa

Wyprowadzenie matematyczne (kluczowy wkład pracy): RLHF maksymalizuje E[r(x,y)] - β·KL(π||π_ref), gdzie r to model nagrody, π_ref to model referencyjny (zwykle SFT), β to siła KL-regularyzacji. Optymalna polityka tej maksymalizacji ma postać zamkniętą: π*(y|x) = (1/Z(x))·π_ref(y|x)·exp(r(x,y)/β). Odwracając tę zależność: r(x,y) = β·log(π*(y|x)/π_ref(y|x)) + β·log Z(x). Podstawiając to do modelu Bradleya-Terry'ego dla prawdopodobieństwa preferencji P(y_w > y_l) = σ(r(x,y_w) - r(x,y_l)), funkcja Z(x) skraca się i dostajemy DIRECT loss bez modelu nagrody:

L_DPO = -E[(x,y_w,y_l)] log σ(β log π_θ(y_w|x)/π_ref(y_w|x) - β log π_θ(y_l|x)/π_ref(y_l|x))

Gdzie π_θ to trenowana polityka (LLM), π_ref to zamrożony SFT model. Trening: standardowy backprop na batch'ach par (prompt, chosen, rejected); π_θ start z π_ref; β kontroluje siłę odejścia od π_ref (typowo 0.01–0.5). Inferencja: czysty LLM, brak runtime'owego narzutu. Empirycznie wymaga 1–3 epoch na wysokiej jakości danych preferencyjnych — kontra dni RL z PPO.

Rozwiązany problem

Klasyczne RLHF składa się z trzech kroków: (1) supervised fine-tuning, (2) trening osobnego modelu nagrody na danych preferencyjnych, (3) optymalizacja polityki LLM przez PPO względem tego modelu nagrody. Każdy krok dodaje koszt, ryzyko niestabilności (PPO bywa kapryśne) i zbiera błędy: model nagrody przeucza się i jest hackowany przez politykę (reward hacking), a sama optymalizacja RL wymaga starannego dobierania KL-penalty, learning rate i kontroli jakości. DPO usuwa kroki (2) i (3) — jeden trening nadzorowany na parach (y_w, y_l) zastępuje cały RL pipeline, eliminuje reward hacking i drastycznie obniża próg wejścia (zwykły zespół ML zamiast specjalistów RL).

Komponenty

Policy network π_θCel optymalizacji — model po alignment

LLM aktualizowany przez DPO loss. Inicjalizowany z π_ref. Po treningu jest produktem końcowym — w inferencji używany standardowo, bez śladu DPO.

INStandardowy LLM tokens-in/tokens-out.
OUTLog-prawdopodobieństwa sekwencji y_w i y_l potrzebne do loss'u.
Reference policy π_ref (frozen)Punkt odniesienia KL — utrzymuje politykę blisko bezpiecznej dystrybucji

Zazwyczaj SFT model — startowa wersja π_θ przed DPO. Pozostaje zamrożony przez cały trening i służy jako mianownik w log-ratio: log(π_θ/π_ref). Implementacyjnie: ten sam model w trybie eval, drugi forward pass per batch.

Pełen π_ref forwardDrugi forward pass na każdy batch — proste, ale 2× pamięć GPU.
LoRA-only π_θπ_θ = π_ref + adapter LoRA — wystarczy włączyć/wyłączyć adapter zamiast trzymać dwie kopie modelu w VRAM.
SimPO (bez π_ref)Wariant pomijający π_ref całkowicie kosztem nieco gorszej stabilności.

Oficjalna

DPO loss (Bradley-Terry on log-ratios)Sygnał uczenia — wymusza wzrost log-prawdopodobieństwa preferowanej odpowiedzi względem π_ref

Sigmoid binary cross-entropy na różnicy log-ratio dla pary (chosen, rejected). Bezpośredni odpowiednik klasyfikatora Bradley-Terry, bez osobnego modelu nagrody.

sigmoid (vanilla DPO)Oryginalna postać z pracy.
IPO lossSquared loss zamiast sigmoid — odporny na overfitting.
KTO lossPointwise zamiast pair-wise — pozwala uczyć z pojedynczych etykiet good/bad.

Oficjalna

Preference dataset (x, y_w, y_l)Sygnał preferencji — jedyny zewnętrzny input procesu DPO

Zbiór par odpowiedzi z etykietą preferencji — y_w (winning) preferowane nad y_l (losing) dla danego promptu x. Może pochodzić od ludzi, LLM-as-judge, lub być syntetyczny.

Implementacja

Pułapki implementacyjne
Zbyt wysokie learning rate → mode collapseKrytyczna

DPO ma mniejszą tolerancję na high LR niż SFT — π_θ szybko ucieka z dystrybucji π_ref i model traci spójność/jakość generacji. Często raportowany problem.

Rozwiązanie:Używać LR rzędu 1e-7 do 5e-6 (10–100× niższego niż w SFT). Monitorować KL(π_θ || π_ref) podczas treningu.
Niska jakość par preferencyjnych → szkodliwy alignmentWysoka

Pary (y_w, y_l) o niewyraźnej różnicy jakości wprowadzają szum, który DPO bezpośrednio uczy. „Szumne" preference data są dla DPO gorsze niż dla RLHF (model nagrody filtruje cześć szumu).

Rozwiązanie:Używać wysokiej jakości datasetów preferencji (UltraFeedback z LLM-as-judge, Anthropic HH-RLHF) i filtrować pary o niewyraźnej różnicy.
Pomieszany π_ref i SFT modelWysoka

π_ref MUSI być modelem startowym π_θ (zwykle SFT), nie innym checkpointem. Inaczej KL-regularyzacja nie ma sensu i model się rozjeżdża.

Rozwiązanie:Inicjować π_θ wagami π_ref na początku DPO; trzymać π_ref zamrożone przez cały trening.
Zbyt wiele epok → degradacja jakościŚrednia

DPO przeucza się znacznie szybciej niż SFT. Po 3–5 epokach jakość zaczyna spadać, mimo że loss dalej spada (overfitting w przestrzeni preferencji).

Rozwiązanie:Walidować na osobnym held-out preference set co 100–500 kroków; zwykle 1 epoka wystarczy. Rozważyć IPO (regularizowany wariant) dla małych datasetów.

Ewolucja

Oryginalny paper · 2023 · NeurIPS 2023 (Stanford University) · Rafael Rafailov
Direct Preference Optimization: Your Language Model is Secretly a Reward Model
Rafael Rafailov, Archit Sharma, Eric Mitchell, Stefano Ermon, Christopher D. Manning, Chelsea Finn
2017
PPO (Schulman et al., OpenAI) — fundament RL alignmentu

Proximal Policy Optimization — algorytm RL, który stanie się domyślnym optymalizatorem RLHF.

2022
InstructGPT / RLHF (Ouyang et al., OpenAI)

OpenAI publikuje pełen pipeline RLHF (SFT → reward model → PPO) zastosowany do GPT-3.5. Standard alignmentu LLM przez następne 18 miesięcy.

2022
Constitutional AI (Bai et al., Anthropic)

Anthropic zastępuje ludzkie etykiety preferencji LLM-jako-sędzia. Jednym z dziedziców tej idei będzie później syntetyczne preference data dla DPO.

2023
DPO — paper Stanford
Punkt przełomowy

Rafailov, Sharma, Mitchell, Ermon, Manning, Finn publikują DPO (arXiv:2305.18290, NeurIPS 2023). Pokazują formalną równoważność: optymalna polityka KL-ograniczonego RLHF parametryzuje swój własny implicit reward model. Rezultat — pojedynczy supervised loss zastępuje cały pipeline RLHF.

2023
Zephyr 7B / Tulu 2 — pierwsze produkcyjne wdrożenia DPO

Hugging Face Zephyr 7B i Allen AI Tulu 2 demonstrują, że SFT+DPO daje jakość alignmentu konkurencyjną z RLHF na ułamku kosztu. Społeczność open-source masowo adoptuje.

2024
IPO / KTO / ORPO / SimPO — rodzina następców

Azar et al. (IPO) i Ethayarajh et al. (KTO) wprowadzają warianty rozwiązujące overfitting i wymóg par. Hong et al. (ORPO) łączą SFT+DPO w jeden loss. Meng et al. (SimPO) usuwają π_ref. DPO staje się częścią szerszego pola „direct preference optimisation".

2024
Llama 3 Instruct, Mistral, Qwen — DPO jako standard branżowy

Meta Llama 3, Mistral i Alibaba Qwen używają DPO (lub jego wariantów) jako głównego mechanizmu alignmentu chat. RLHF z PPO pozostaje głównie w wewnętrznych pipeline'ach OpenAI/Anthropic.

Hiperparametry (konfigurowalne osie)

KL strength (β)Krytyczna

Kontroluje, jak daleko polityka π_θ może odejść od modelu referencyjnego π_ref. Zbyt małe β = ucieczka od π_ref i degradacja jakości; zbyt duże = brak alignmentu. Praktycznie 0.01–0.5; oryginalna praca używa 0.1–0.3.

0.01Bardzo silne ucieczki od π_ref — ryzykowne
0.1Domyślna w pracy
0.3Bardziej zachowawcze, częste w produkcji
Reference policy (π_ref)Krytyczna

Zamrożony model bazowy (zwykle SFT na tym samym zbiorze instrukcji). Determinuje punkt wyjścia i zakres KL-regularyzacji. Wybór π_ref ma większy wpływ na końcową jakość niż β.

SFT modelStandardowy pipeline: SFT → DPO
instruction-tuned modelZ dotreniowywaniem na konkretnym domain
Preference dataset qualityKrytyczna

Najmocniejszy pojedynczy czynnik wpływu na wynik. Pary (chosen, rejected) muszą mieć wyraźnie różną jakość; szum w preferencjach zaszkodzi modelowi. Typowe datasety: Anthropic HH-RLHF, UltraFeedback, Nectar, OpenAssistant.

Training epochsWysoka

DPO przeucza się szybciej niż SFT — typowo 1–3 epoki wystarczy. Praca rekomenduje 1 epokę na dużych datasetach.

1Domyślne dla dużych preference datasetów
3Małe datasety domenowe
Learning rateWysoka

Drastycznie niższy niż w SFT — typowo 1e-7 do 5e-6. Zbyt wysoki = π_θ ucieka z π_ref i traci możliwości generatywne (mode collapse).

5e-7Domyślne — bardzo bezpieczne
5e-6Górna granica typowego zakresu
Loss variantŚrednia

Po DPO powstała rodzina wariantów: vanilla DPO (sigmoid), IPO (regularyzowany do uniknięcia overfittingu), KTO (preferencje punktowe zamiast par), ORPO (łączny SFT+DPO), SimPO (bez π_ref).

sigmoidVanilla DPO z pracy
IPORegularizowane DPO (Azar et al.)
KTOKahneman-Tversky preferencje pointwise
ORPOŁączny SFT+DPO loss bez π_ref
SimPOLength-normalised, bez π_ref

Złożoność obliczeniowa

Złożoność czasowa: O(2 · T · |θ|) per krok (dwa forward passes per para). Złożoność przestrzenna: O(2 · |θ|) parametrów (π_θ + π_ref) lub O(|θ| + |LoRA|) z adapterem.

Wąskie gardło obliczeniowe

Pamięć VRAM dla dwóch kopii modelu

Dla modeli 7B+ trzymanie π_θ i π_ref w VRAM równocześnie jest głównym ograniczeniem. Stąd popularność DPO+LoRA i wariantów bez π_ref (SimPO, ORPO).

Zależy od
model size |θ|sequence length

Paradygmat wykonania

Tryb główny
Gęsty

DPO modyfikuje wyłącznie funkcję straty treningu, nie strukturę modelu. Polityka π_θ pozostaje gęstą siecią; π_ref jest zamrożona ale również gęsta.

Wzorzec aktywacji
Wszystkie ścieżki aktywne

Równoległość

Poziom równoległości
W pełni równoległy

DPO loss to standardowy supervised cross-entropy z dwoma forward passes (chosen + rejected) na parę. Skaluje się tak samo jak SFT przez DDP/FSDP, ZeRO, tensor parallelism — bez specjalnych ograniczeń RL. Inferencja po DPO to zwykły LLM forward.

Zakres
TreningPomiędzy tokenamiPomiędzy urządzeniamiPomiędzy warstwami

Wymagania sprzętowe

Podstawowe

Standardowy supervised training na GPU — taki sam profil jak SFT. Dwa forward passes (chosen + rejected) per pair; π_ref zamrożony, więc tylko inferencja.

Dobry fit

TRL i Axolotl wspierają TPU/JAX dla DPO. Bez specyficznych wymagań RL, scaling jest standardowy.

Dobry fit

DPO to czysta modyfikacja loss'u — działa na każdym sprzęcie obsługującym SFT.