Base modelden asistana: SFT, RLHF, DPO ve GRPO
Bir base modelden haiku iste; aynı cümleyi beş kez yazar. Sonra reward modelin doğruluk yerine uzunluğu tercih etmeyi öğrenişini izle.
Bu sayfada
GPT-2'den — yetkin biçimde pretrained edilmiş bir dil modelinden — deniz hakkında bir haiku yazmasını iste:
prompt: Write a haiku about the sea.
The sea is a beautiful place.
The sea is a beautiful place.
The sea is a beautiful place.
The sea is a beautiful place.
The sea is a beautiful place.Kafası karışmış değil ve işinde başarısız olmuş da değil. Bölüm 10'un onu eğittiği şeyi aynen yapıyor: verilen bir metinden sonra gelebilecek makul devam metnini üretmek. İnternette Deniz hakkında bir haiku yaz. gibi bir satırın ardından çoğu zaman deniz hakkında düzyazı gelir; ayrıca az önce görünen bir cümlenin yeniden görünme olasılığı alışılmadık derecede yüksektir. Model mükemmel bir sonraki-token tahmincisidir ve işe yaramaz bir asistandır.
Şimdi aynı isteği, aynı şekilde kurulmuş bir modele — Qwen2.5, yarım milyar parametre, yukarıdaki GPT-2'nin dört katı boyutta ve yine de 2026'nın herhangi bir standardına göre hâlâ minicik — bu bölümün konusu olan eğitim aşamalarından sonra verelim:
Whispers of the ocean,
Silent depths where waves meet,
Mysteries in the vast blue.Parametrelerin dört katına çıkması bir modele konuşmayı kesmeyi öğretmez. Bu iki çıktı arasındaki fark ölçek, mimari ya da veri hacmi değildir. Bu fark post-training'dir: pretraining'den katbekat daha küçük olan, bir metin tahmincisini alıp yanıt veren bir şeye dönüştüren ikinci aşama.
Birinci aşama: bir yanıtın neye benzediğini göstermek
Bölüme bağlantı: Birinci aşama: bir yanıtın neye benzediğini göstermekİlk adım en az gösterişli olanıdır ve işin çoğunu yapar. Talimatlarla iyi yanıtların eşleştirildiği örnekler topla ve Bölüm 8'deki aynı loss ile — sonraki token'ı tahmin et — ama yalnızca yanıt kısmı üzerinde eğitmeye devam et. Bu, supervised fine-tuning, yani SFT'dir.
Dil hakkında yeni bir şey öğretilmiyor. Öğretilen şey bir format: bu şekle sahip metnin ardından şu şekle sahip metnin geldiği ve sonra durduğu. Base modelin hatasına tekrar bak. Soruyu ilk cümlede yanıtladı ve sonra duramadı; çünkü eğitiminde hiçbir şey bir yanıtın sonunu hiç işaretlememişti. Durmak öğrenilmiş bir davranıştır.
Modelin sınırların nerede olduğunu bilmesi gerekmesinin nedeni de budur; bunu sağlayan şey bir chat template'tir:
<|im_start|>system
You are Qwen, created by Alibaba Cloud. You are a helpful assistant.<|im_end|>
<|im_start|>user
What is the capital of France?<|im_end|>
<|im_start|>assistantBu <|im_start|> ve <|im_end|> işaretleri sözlükteki gerçek token'lardır; fine-tuning'den önce eklenmişlerdir ve model bunların milyonlarcasını tam olarak bu konumlarda görmüştür. Sıranın kimde olduğunu ve bir turun nerede bittiğini böyle bilir.
Template'i atla ve modele çıplak bir soru ver; ona eğitimde görmediği bir sekans vermiş olursun. Ölçülmüş olarak: aynı model, aynı soru, aynı greedy decoding:
Template olmadan — ham string What is the capital of France?:
The capital of France is Paris.
To verify this, I will use a simple
Python code snippet to confirm that
Paris is indeed the capital city of
France.
[...and then it starts writing a
Python script to check its own answer]Template ile:
The capital of France is Paris.Yanıt ikisinde de doğru, ama işaretçiler olmadığında model kendini kontrol etmek için Python yazmaya kayıyor; çünkü aldığı prompt, fine-tuning gördüğü hiçbir şeye benzemiyor. “Modeli doğrudan çağırınca aptallaştı” durumunun en yaygın nedeni budur: template modelin etrafındaki bir süs değildir, modelin bir parçasıdır; yanlış template ise hiçbir hata üretmeden sessiz bir kalite düşüşüdür.
İkinci aşama ve çözmek için var olduğu problem
Bölüme bağlantı: İkinci aşama ve çözmek için var olduğu problemSFT'nin bir tavanı vardır ve bu tavan veridir. Bir gösterim üzerinde fine-tuning yapmak için birinin ideal yanıtı yazması gerekir — ve çoğu ilginç soru için iyi bir yanıt yazmak zor, yavaş, pahalıdır ve kalitesini doğrulayamayacağın tek bir yanıt üretir.
İnsanların iyi olduğu şey karşılaştırmadır. İki yanıt gösterildiğinde, bir anotatör birkaç saniyede hangisinin daha iyi olduğunu güvenilir biçimde söyleyebilir; üstelik ikisini de üretemese bile. İkinci aşamanın tamamı bu olgu üzerine kuruludur ve çoğu açıklamanın ters anladığı kısım da burasıdır:
İnsanlar yanıtları yazmaz. Çiftleri sıralar.
Dolayısıyla veri çiftlerden oluşur — bir prompt, iki yanıt ve hangisinin kazandığı. Bu, bir next-token loss'a takılamaz; çünkü hedef sekans yoktur. Farklı bir makineye ihtiyaç duyar.
Reward model ve aslında ne öğrendiği
Bölüme bağlantı: Reward model ve aslında ne öğrendiğiEğitim sırasında her yanıtı puanlaması için bir insana soramazsın — bu milyonlarca yargı demektir. Bu yüzden insanları taklit edecek bir model eğitirsin: bir yanıtı alıp skaler döndüren bir reward model.
Onu karşılaştırmalardan eğitmek 1952 tarihli bir sonuca dayanır. Bradley–Terry modeli2, iki öğenin gizli güçleri varsa birinin diğerini yenme olasılığının, aralarındaki farkın lojistik fonksiyonu olduğunu söyler. Bunu tersine çevirince bir loss'a dönüşür: bir insanın yerine 'yi tercih ettiği verildiğinde, şunu maksimize et:
Kodda bu, tüm eğitim döngüsüdür:
loss = -F.logsigmoid(reward(chosen) - reward(rejected)).mean() Modelin asla görmediği şeye dikkat et: mutlak bir skor. Yalnızca farkları öğrenir; verinin içerdiği şey de tam olarak budur.
Şimdi ölçmeye değer kısım. Bir reward model, anotatörlerin ödüllendirdiği şeyi öğrenir; anotatörler de insandır. İşte bir simülasyon: Bir yanıtın gerçek kalitesi yalnızca yararlı ve doğru olmasına bağlı — uzunluğun hiçbir değeri yok — ama simüle edilmiş anotatör, diğer her şey yakın olduğunda daha uzun yanıtlara hafif bir tercih gösteriyor; bu da iyi belgelenmiş bir insan yanlılığıdır. Reward model'i 2000 karşılaştırma üzerinde eğit ve ağırlıklarını oku:
| anotatörün uzunluk yanlılığı | yararlı üzerindeki öğrenilmiş ağırlık | doğru üzerinde | uzunluk üzerinde |
|---|---|---|---|
| 0.0 | +1.00 | +1.00 | +0.01 |
| 0.3 | +0.98 | +1.00 | +0.15 |
| 0.6 | +0.97 | +1.00 | +0.27 |
| 1.2 | +1.00 | +0.99 | +0.59 |
Reward model kusursuz çalışıyor. Kendisine gösterilen tercihleri sadakatle öğrenmiş — kaliteyle hiçbir ilgisi olmayan kısmı da dahil. Reward model iyi olanın ölçüsü değildir; anotatörlerin seçtiği şeyin ölçüsüdür ve anotasyon havuzundaki her yanlılık, artık çok daha büyük bir modelin optimize edeceği türevlenebilir bir fonksiyonda bir katsayıdır.
Reward hacking, ölçülmüş olarak
Bölüme bağlantı: Reward hacking, ölçülmüş olarakBu da bizi onu optimize ettiğinde olanlara getirir. Policy'ye, yanıtın özellikleri arasında harcayacağı sabit bir çaba bütçesi ver; gerçekçi bir asimetriyle: yararlı olmak ve doğru olmak pahalıdır, daha uzun olmak ise ucuzdur — sadece yazmaya devam edersin.
Yukarıda eğitilen model için çaba birimi başına reward: yararlı 8,26, doğru 8,31, uzunluk 31,70. Uzunluk doğruluktan neredeyse dört kat daha iyi kazandırır; reward model bozuk olduğu için değil, ucuz olduğu için.
Bu reward'a karşı optimize et ve iki sayıyı da izle:
| reward model'in skoru | gerçek kalite | üretilen uzunluk | |
|---|---|---|---|
| başlangıç policy'si | 12.588 | 0.974 | 3.365 |
| optimizasyondan sonra | 31.696 | 0.000 | 12.497 |
Reward 2,5 kat arttı. Reward'ın ölçmesi gereken şey sıfıra indi. Policy, uzun uzun yazıp hiçbir şey söylemeyerek muazzam iyi skor alabileceğini keşfetti; eğitim döngüsünün hiçbir parçası bunu fark edemezdi, çünkü döngünün içinde iyinin tanımı reward model'in kendisidir.
Bu reward hacking'dir ve chat modellerinin neden bu kadar geveze olduğunu merak ettiysen, bu tablo cevabın büyük bir parçasıdır.
KL cezası aslında ne sağlar
Bölüme bağlantı: KL cezası aslında ne sağlarStandart savunma, policy'nin başladığı yerden çok uzaklaşmasını cezalandırmaktır; mesafeyi Bölüm 4'teki KL divergence ile ölçer:
Referans SFT modelidir — reinforcement aşamasından önceki policy. İddia, bunun modelin dejeneratif davranışa savrulmasını engellediğidir. Bu iddianın ne kadarının ölçüm karşısında ayakta kaldığını görelim. Aynı kurulum, süpürülerek:
| reward | gerçek kalite | uzunluk | KL | |
|---|---|---|---|---|
| 0 | 31.699 | 0.000 | 12.498 | 2.994 |
| 1 | 31.697 | 0.000 | 12.497 | 2.993 |
| 5 | 28.318 | 0.285 | 10.700 | 2.163 |
| 15 | 12.860 | 1.542 | 2.552 | 0.151 |
| 30 | 10.426 | 1.719 | 1.303 | 0.025 |
| 60 | 9.632 | 1.769 | 0.908 | 0.005 |
| yalnızca referans model | 9.162 | 1.791 | 0.687 | 0 |
Son satırı diğerleriyle birlikte oku. ve 'de ceza hiçbir şey yapmaz: reward, KL'den o kadar daha değerlidir ki optimizer cezayı öder ve yine hack'ler. 5 ile 15 arasında davranış savrulur. Ve olduğunda gerçek kalite tekrar 1,769'a çıkmıştır — ki bu, tüm bunlar başlamadan önce referans modelin sahip olduğu 1,791'in hâlâ altındadır.
Bu sayı herhangi bir yerde alıntılanmadan önce bir uyarı: son satırdaki 1,791 ile ilk tablonun başlangıç policy'sine verdiği 0,974, aynı pre-RL modelin iki farklı ölçümüdür; iki deney tarafından ayrı ayrı alınmıştır. Satırları tablo içinde karşılaştır, tablolar arasında değil — her tablonun sonucu kendi satırları üzerinde durur ve hiçbiri diğerinin baseline'ına bağlı değildir.
Bu yüzden dürüst özet “KL cezası reward hacking'i engeller” değildir. Şudur:
KL cezası reward hacking'i engellemez. Policy'nin referanstan ne kadar uzaklaşabileceğini sınırlar — ve başarısızlık uzaklaşmayı gerektirdiği için bu yardımcı olur. Ama bu bir düzeltici değil, bir tasmadır: düşük 'da tasma kopar; yüksek 'de referans modeli geri alırsın ve tüm pahalı aşama hiçbir şey satın almamış olur.
Yararlı aralık dardır, konumu reward model'e bağlıdır ve onu bulmanın bakmaktan başka yolu yoktur. Referans modelin iyi olması bu yüzden gerekir — KL, referansın kalitesinde bir zemindir; başarısızlığın üzerinde bir tavan değil — ve bu aşamanın pratikte zor olmasının büyük bir nedeni budur; ilke düzeyinde değil.
PPO ve DPO'nun onu neden geride bıraktığı
Bölüme bağlantı: PPO ve DPO'nun onu neden geride bıraktığıBunu ölçekli çalıştıran algoritma Proximal Policy Optimization'dır.3 Tek paragrafta: her yanıtın advantage'ını tahmin eder, policy'yi baseline üzerindeki yanıtların olasılığını artıracak şekilde günceller ve büyük bir advantage tahmini policy'yi tek adımda yok edemesin diye tek bir güncellemenin boyutunu kırpar. Dil modellerine uygulandığında4, aynı anda dört modeli oyunda tutmak anlamına gelir — policy, referans, reward model ve critic — üstelik policy eğitim boyunca sürekli yeni örnekler üretir.
Çalışır; InstructGPT'yi ve ondan türeyen her şeyi üretmiştir; ayrıca gerçekten zordur: bellekte dört model, eğitim döngüsünde sampling ve hak edilmiş bir istikrarsızlık şöhreti. Bunu bir blog yazısında uygulayabilirmiş gibi yapmak dürüst olmazdı; bu yüzden bu bölüm bunu yapmıyor.
Çoğu amaç için onun yerini alan şey, bir şeyi fark etmekten doğdu. Yukarıdaki KL ile regularize edilmiş objective'in kapalı biçimli optimal policy'si vardır ve bu ifade tersine çevrilebilir: reward, optimal policy ve referans cinsinden yazılabilir. Bunu Bradley–Terry loss'una geri koyduğunda reward model tamamen ortadan kaybolur. Geriye tercih çiftleri üzerinde supervised bir loss kalır — sampling yok, critic yok, reward model yok; bellekte dört yerine iki model.
Bu Direct Preference Optimization'dır,5 ve iki satırdır:
def dpo_loss(pi_w, pi_l, ref_w, ref_l, beta=0.1):
"""pi_* and ref_* are summed log-probabilities of a full response."""
logits = beta * ((pi_w - ref_w) - (pi_l - ref_l))
return -F.logsigmoid(logits) Ne söylediğini oku. Yukarı itilen nicelik, policy'nin kazananı referansa kıyasla ne kadar daha fazla tercih ettiği eksi, kaybedeni ne kadar daha fazla tercih ettiğidir. Referans sonradan eklenmiş bir ceza değildir — loss'un içindedir; DPO'nun ayrı bir KL terimine ihtiyaç duymamasının nedeni budur.
En önemli özellik gradient'tedir. Loss'u ve gradient'ini, policy'nin beş farklı durumunda aynı çift üzerinde değerlendir:
| policy'nin durumu | loss | gradient büyüklüğü |
|---|---|---|
| kazananı zaten güçlü biçimde tercih ediyor | 0.5130 | 0.0401 |
| zaten tercih ediyor, ama zayıf | 0.6685 | 0.0488 |
| referansla aynı | 0.6931 | 0.0500 |
| kaybedeni tercih ediyor | 0.7981 | 0.0550 |
| kaybedeni güçlü biçimde tercih ediyor | 1.0055 | 0.0634 |
Policy daha çok yanıldıkça gradient büyür. Modelin zaten hallettiği çiftler neredeyse hiçbir katkı yapmaz; ters anladığı çiftler güncellemeye hükmeder. DPO her örneği, policy'nin o anda ne kadar yanlış olduğuna göre ağırlıklandırır, otomatik olarak, scheduling olmadan — ve PPO'nun advantage tahmini ile critic'inin yaptığı işi yapan mekanizma bu kendi kendini ağırlıklandırmadır. (Üçüncü satırdaki loss tam olarak 'dir; bu, herhangi bir implementasyonu kontrol etmek için çıpadır: referansıyla aynı olan bir policy hiçbir şey öğrenmemiştir ve 'te durmalıdır.)
GRPO6 aynı problemden farklı bir yolla çıkar. Sampling döngüsünü korur ama critic'i siler: baseline'ı tahmin edecek bir model eğitmek yerine aynı prompt'a verilen bir grup yanıt örnekler ve grubun ortalama reward'ını doğrudan baseline olarak kullanır. Bir yanıtın advantage'ı, kardeşlerinden ne kadar daha iyi olduğudur. Bu, bütün bir modeli daha büyük bir batch ile takas eder ve doğrulanabilir-reward eğitimini — Bölüm 12'nin konusunu — pratik hale getiren şey budur.
Ayrıntıları göster
Post-training manzarasının üç parçası daha, kısaca.
RLAIF ve Constitutional AI.7 Anotatörün insan olması gerekmez. Bir modele yazılı bir ilkeler seti verip kendi çıktılarını eleştirip revize etmesini ya da iki aday arasında seçim yapmasını iste; makine hızı ve maliyetiyle üretilmiş bir tercih dataset'in olur. Bariz itiraz — model kendi ödevini notluyor — gerçektir; dürüst yanıt ise, kulağa geldiğinden daha iyi çalıştığıdır, çünkü yargılamak üretmekten daha kolaydır; bu da tüm bölümün dayandığı aynı asimetridir.
LIMA ve bunun ne kadar az veri gerektirdiği.8 Dikkatle kürate edilmiş bin gösterim rekabetçi bir asistan üretti. Önerilen açıklama şu: pretraining bilgiyi ve formatı zaten kurmuştu; post-training'in yalnızca modelin mevcut davranışlarından hangilerinin yüzeye çıkacağını seçmesi gerekiyordu. Bu doğruysa post-training veri kalitesi miktara baskın gelir — ve alanın o günden beri davranışı, insanların buna inandığını gösteriyor.
LoRA ve QLoRA.910 Büyük bir modelin her ağırlığına fine-tuning yapmak, ağırlıklar, onların gradient'leri ve optimizer state için bellek gerektirir — Bölüm 10'un parametre başına on altı byte'ı, Bölüm 6'nın elle kurduğu iki ortalamanın üzerinde — hem de cluster gerektiren bir ölçekte. LoRA, orijinal ağırlıkları dondurur ve yanlarında düşük-rank bir matris çifti eğitir; böylece eğitilebilir parametreleri mertebeler düzeyinde azaltır. QLoRA ayrıca dondurulmuş base'i 4 bit'e quantize eder. İkisi de burada teknik olarak ele alınıyor. Fine-tuning'in para harcanacak doğru şey olup olmadığı ise ayrı bir sorudur ve Bölüm 20'nin konusudur.
Alignment vergisi ve kimsenin yanıtlamadığı soru
Bölüme bağlantı: Alignment vergisi ve kimsenin yanıtlamadığı soruİleriye taşınacak iki şey var.
İlki, bu aşamanın bir maliyeti olduğu ve bunun capability olarak ortaya çıktığıdır. Modeller alignment eğitiminden sonra bazı benchmark görevlerinde ölçülebilir biçimde kötüleşir — alignment vergisi — çünkü objective değişmiştir: güvenli, çekinceli ve iyi formatlanmış bir yanıt, her zaman doğruluğu maksimize eden yanıt değildir. Bu farkın bir kısmı mühendislikle giderildi; bir kısmı ise düzeltilmesi gereken bir bug değil, gerçek bir trade-off.
İkincisi, aligned kelimesinin sakladığı sorudur. Kiminle aligned? Zincir şudur: bir şirket guidelines yazar, contractor'lar bunları yorumlar, onların karşılaştırmaları bir reward model'i eğitir, reward model bir policy'yi şekillendirir ve policy bunların hiçbirini görmemiş birinin sorusunu yanıtlar. Her halka belirli insanlar tarafından yapılmış bir seçimdir ve bu bölümdeki algoritmaların hiçbirinin bu seçimlerin iyi olup olmadığı hakkında bir fikri yoktur.
Bu retorik bir süs değil. İki frontier modelin farklı istekleri reddetmesinin, aynı modelin sürümler arasında fikrini değiştirmesinin ve “aligned”ın bir artefact özelliği değil de bir süreç tanımı olmasının somut nedeni budur. Bu bölümdeki matematik yerleşmiştir. O kısım ise değil.
Buradan nereye gidiyoruz
Bölüme bağlantı: Buradan nereye gidiyoruzPost-training modele yanıt vermeyi öğretti. Yanıtlamadan önce düşünmeyi öğretmedi; ikisi, eğitilebilir olduğu ortaya çıkan bir şekilde farklıdır.
Bölüm 12, bir modelin zor bir soruya eğitim zamanında değil yanıt zamanında daha fazla computation harcamasına izin verdiğinde ne olduğuyla ilgilidir — chain of thought, doğrulanabilir reward'lardan reinforcement learning ve işleyişini gösteren bir modelin yalnızca kendini açıklamayıp farklı biçimde compute etmesinin nedeni. Ayrıca bu bölümden kalan borcu da öder: GRPO orada vardır; PPO'nun critic'inin eskiden yaptığı işi, hiç anotatör gerektirmeyen reward'lar üzerinde yapar; çünkü bir proof ya doğrulanır ya doğrulanmaz.
Kaynaklar ve yöntem
Bölüme bağlantı: Kaynaklar ve yöntemYukarıdaki üretimler gpt2 ve Qwen/Qwen2.5-0.5B-Instruct'den, greedy decoding ile geliyor; bu yüzden birebir yeniden üretilebilirler. Hugging Face LLM Course'un 11. bölümü, simülasyon yerine gerçek şeyi çalıştırmak istersen trl ve peft ile SFT ve DPO'yu adım adım anlatır; Sebastian Raschka'nın Build a Large Language Model (From Scratch) kitabının 7. bölümü ise instruction fine-tuning'i bir kütüphane kullanmadan uçtan uca uygular.
Referanslar
Bölüme bağlantı: Referanslar-
Sutton, R. S. and Barto, A. G. Reinforcement Learning: An Introduction, 2. baskı (MIT Press, 2018). Yetki devri kasıtlıdır: yukarıdaki sözlük kutusu kullanılabilir en küçük alt kümedir; asıl konu bir kitaptır. ↩
-
Bradley, R. A. and Terry, M. E. Rank Analysis of Incomplete Block Designs: I. The Method of Paired Comparisons. Biometrika 39(3/4), s. 324–345 (1952). Bugün kullanılan her reward model'in altındaki ikili karşılaştırma modeli. ↩
-
Schulman, J., Wolski, F., Dhariwal, P., Radford, A. and Klimov, O. Proximal Policy Optimization Algorithms. arXiv:1707.06347 (2017). ↩
-
Ouyang, L. et al. Training language models to follow instructions with human feedback. arXiv:2203.02155 (2022). InstructGPT — üç aşamalı tarifi standart yapan makale. Ondan önce, insan karşılaştırmalarından reward model öğrenmeyi tanıtan Christiano et al. (arXiv:1706.03741) ve bunu özetlemeye uygulayan Stiennon et al. (arXiv:2009.01325) vardı. ↩
-
Rafailov, R., Sharma, A., Mitchell, E., Ermon, S., Manning, C. D. and Finn, C. Direct Preference Optimization: Your Language Model is Secretly a Reward Model. arXiv:2305.18290 (2023). Reward model'i kaldıran türetme bölüm 4'tedir ve baştan sona okumaya değer; şöhretinden daha kısadır. ↩
-
Shao, Z. et al. DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models. arXiv:2402.03300 (2024). GRPO'yu bölüm 4.1'de tanıtır. ↩
-
Bai, Y. et al. Constitutional AI: Harmlessness from AI Feedback. arXiv:2212.08073 (2022). ↩
-
Zhou, C. et al. LIMA: Less Is More for Alignment. arXiv:2305.11206 (2023). ↩
-
Hu, E. J. et al. LoRA: Low-Rank Adaptation of Large Language Models. arXiv:2106.09685 (2021). ↩
-
Dettmers, T., Pagnoni, A., Holtzman, A. and Zettlemoyer, L. QLoRA: Efficient Finetuning of Quantized LLMs. arXiv:2305.14314 (2023). ↩