Base Model سے Assistant تک: SFT، RLHF، DPO اور GRPO
Base model haiku مانگنے پر جملہ دہراتا ہے؛ پھر دیکھیں reward model کیسے درستگی کے بجائے طوالت کو ترجیح دینا سیکھتا ہے۔
اس صفحے پر
GPT-2 — ایک مناسب طور پر pretrained language model — سے سمندر کے بارے میں haiku لکھنے کو کہیں:
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.یہ کنفیوز نہیں ہے، اور نہ ہی یہ اپنے کام میں ناکام ہوا ہے۔ یہ بالکل وہی کر رہا ہے جس کے لیے باب 10 نے اسے train کیا تھا: کچھ متن دیے جانے پر، plausibly جاری رہنے والا متن پیدا کرنا۔ انٹرنیٹ پر Write a haiku about the sea. جیسی سطر کے بعد اکثر سمندر کے بارے میں نثر آتی ہے، اور جو جملہ ابھی آیا ہو اس کے دوبارہ آنے کا امکان غیر معمولی طور پر زیادہ ہوتا ہے۔ model ایک شاندار next-token predictor ہے اور ایک بے کار assistant۔
اب یہی درخواست اسی طرح بنے ہوئے ایک model سے کریں — Qwen2.5، آدھا ارب parameters، اوپر والے GPT-2 سے چار گنا بڑا اور پھر بھی 2026 کے کسی بھی معیار سے بہت چھوٹا — ان training مراحل کے بعد جن کے بارے میں یہ باب ہے:
Whispers of the ocean,
Silent depths where waves meet,
Mysteries in the vast blue.parameters کا چار گنا ہونا model کو بولنا بند کرنا نہیں سکھاتا۔ ان دو outputs کے درمیان فرق scale نہیں، architecture نہیں، اور data volume نہیں۔ یہ post-training ہے: ایک دوسرا مرحلہ، pretraining سے کئی orders of magnitude چھوٹا، جو text predictor کو ایسی چیز میں بدلتا ہے جو جواب دیتی ہے۔
پہلا مرحلہ: اسے دکھانا کہ جواب کیسا ہوتا ہے
اس حصے کا لنک: پہلا مرحلہ: اسے دکھانا کہ جواب کیسا ہوتا ہےپہلا قدم سب سے کم دلکش ہے اور زیادہ تر کام یہی کرتا ہے۔ instructions اور اچھے responses کی جوڑیوں کی مثالیں جمع کریں، اور باب 8 والی بالکل اسی loss کے ساتھ ان پر training جاری رکھیں — اگلا token predict کریں — مگر صرف response والے حصے پر۔ یہ supervised fine-tuning، یا SFT ہے۔
زبان کے بارے میں کوئی نئی چیز نہیں سکھائی جا رہی۔ جو سکھایا جا رہا ہے وہ ایک format ہے: کہ اس شکل کا متن اس شکل کے متن کے بعد آتا ہے، اور پھر یہ رک جاتا ہے۔ base model کی ناکامی کو دوبارہ دیکھیں۔ اس نے پہلے جملے میں سوال کا جواب دے دیا تھا اور پھر رک نہیں سکا، کیونکہ اس کی training میں کبھی response کے اختتام کو نشان زد نہیں کیا گیا تھا۔ رکنا ایک سیکھا ہوا رویہ ہے۔
اسی لیے model کو یہ بھی بتایا جانا ضروری ہے کہ boundaries کہاں ہیں، اور یہی chat template کا کام ہے:
<|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|>assistantوہ <|im_start|> اور <|im_end|> markers vocabulary میں حقیقی tokens ہیں، fine-tuning سے پہلے شامل کیے گئے، اور model نے انہیں لاکھوں بار عین انہی جگہوں پر دیکھا۔ اسی طرح اسے معلوم ہوتا ہے کہ کس کی باری ہے اور ایک turn کہاں ختم ہوتا ہے۔
template چھوڑ دیں اور model کو ایک سادہ سوال دے دیں، تو آپ اسے ایسی sequence دے رہے ہیں جو اس نے training میں نہیں دیکھی۔ ناپا گیا، وہی model، وہی سوال، وہی greedy decoding:
template کے بغیر — خام 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 کے ساتھ:
The capital of France is Paris.دونوں میں جواب درست ہے، مگر markers کے بغیر model خود کو check کرنے کے لیے Python لکھنے کی طرف بہک جاتا ہے، کیونکہ اسے ملا ہوا prompt کسی ایسی چیز سے مشابہ نہیں جو اس پر fine-tuned تھی۔ یہ "model براہِ راست call کرنے پر dumb ہو گیا" کی سب سے عام وجہ ہے: template model کے گرد decoration نہیں، یہ model کا حصہ ہے، اور غلط template بغیر کسی error کے خاموش degradation ہے۔
دوسرا مرحلہ، اور وہ مسئلہ جسے حل کرنے کے لیے یہ موجود ہے
اس حصے کا لنک: دوسرا مرحلہ، اور وہ مسئلہ جسے حل کرنے کے لیے یہ موجود ہےSFT کی ایک حد ہے، اور وہ حد data ہے۔ کسی demonstration پر fine-tune کرنے کے لیے کسی کو ideal response لکھنا پڑتا ہے — اور زیادہ تر دلچسپ سوالات کے لیے اچھا جواب لکھنا مشکل، سست، مہنگا ہوتا ہے، اور عین ایک ایسا جواب پیدا کرتا ہے جس کی quality آپ verify نہیں کر سکتے۔
لوگ جس کام میں اچھے ہیں وہ comparison ہے۔ دو responses دکھائے جائیں تو annotator چند سیکنڈز میں قابلِ اعتماد طور پر کہہ سکتا ہے کہ کون سا بہتر ہے، چاہے وہ ان میں سے کوئی بھی خود نہ بنا سکے۔ یہی حقیقت پورے دوسرے مرحلے کی بنیاد ہے، اور یہی وہ حصہ ہے جسے اکثر explanations الٹا سمجھاتے ہیں:
Humans answers نہیں لکھتے۔ وہ pairs کو rank کرتے ہیں۔
تو data pairs ہے — ایک prompt، دو responses، اور یہ کہ کون جیتا۔ اسے next-token loss میں نہیں لگایا جا سکتا، کیونکہ کوئی target sequence نہیں ہے۔ اسے ایک مختلف machine چاہیے۔
reward model، اور یہ اصل میں کیا سیکھتا ہے
اس حصے کا لنک: reward model، اور یہ اصل میں کیا سیکھتا ہےآپ training کے دوران ہر response کو score کرنے کے لیے human سے نہیں پوچھ سکتے — یہ لاکھوں judgements ہیں۔ اس لیے آپ humans کی نقل کرنے کے لیے model train کرتے ہیں: ایک reward model جو response لیتا ہے اور scalar واپس کرتا ہے۔
comparisons سے اسے train کرنا 1952 کے ایک result کو استعمال کرتا ہے۔ Bradley–Terry model2 کہتا ہے کہ اگر دو items کی latent strengths ہوں، تو ایک کے دوسرے کو beat کرنے کا probability ان کے فرق کا logistic function ہے۔ اسے پلٹ دیں تو یہ loss بن جاتا ہے: یہ جانتے ہوئے کہ human نے کو پر prefer کیا، maximise کریں
جو code میں پوری training loop ہے:
loss = -F.logsigmoid(reward(chosen) - reward(rejected)).mean() غور کریں model کیا کبھی نہیں دیکھتا: absolute score۔ یہ صرف differences ہی سیکھتا ہے، جو بالکل وہی ہے جو data میں موجود ہے۔
اب وہ حصہ جسے measure کرنا اہم ہے۔ reward model وہ سیکھتا ہے جسے annotators نے reward کیا، اور annotators لوگ ہوتے ہیں۔ یہاں ایک simulation ہے جہاں response کی true quality صرف useful اور correct ہونے پر depend کرتی ہے — length کی کوئی value نہیں — مگر simulated annotator کو، جب باقی سب قریب ہو، لمبے answers کے لیے ہلکی preference ہے، جو ایک well-documented human bias ہے۔ reward model کو 2000 comparisons پر train کریں اور اس کے weights پڑھیں:
| annotator کا length bias | useful پر learned weight | correct پر | length پر |
|---|---|---|---|
| 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 بالکل ٹھیک کام کر رہا ہے۔ اس نے وفاداری سے وہ preferences سیکھ لی ہیں جو اسے دکھائی گئیں — ان preferences کا وہ حصہ بھی جس کا quality سے کوئی تعلق نہیں۔ reward model اچھائی کا پیمانہ نہیں؛ یہ اس چیز کا پیمانہ ہے جسے annotators نے منتخب کیا، اور annotation pool کا ہر bias اب ایک differentiable function میں coefficient ہے جس کے خلاف ایک بہت بڑا model optimize ہونے والا ہے۔
Reward hacking، measured
اس حصے کا لنک: Reward hacking، measuredیہ ہمیں وہاں لے آتا ہے کہ جب آپ اسے optimize کرتے ہیں تو کیا ہوتا ہے۔ policy کو response کی properties پر خرچ کرنے کے لیے effort کا fixed budget دیں، ایک realistic asymmetry کے ساتھ: useful ہونا اور correct ہونا expensive ہیں، اور لمبا ہونا cheap ہے — آپ بس لکھتے رہتے ہیں۔
اوپر train کیے گئے model کے لیے effort کی فی unit reward: useful 8.26، correct 8.31، length 31.70۔ length correctness کے مقابلے میں تقریباً چار گنا بہتر pay کرتی ہے، اس لیے نہیں کہ reward model broken ہے، بلکہ اس لیے کہ یہ cheap ہے۔
اس reward کے خلاف optimize کریں اور دونوں numbers دیکھیں:
| reward model کا score | true quality | produced length | |
|---|---|---|---|
| starting policy | 12.588 | 0.974 | 3.365 |
| optimisation کے بعد | 31.696 | 0.000 | 12.497 |
reward 2.5 گنا بڑھ گیا۔ جس چیز کو reward measure کرنے والا تھا وہ zero پر چلی گئی۔ policy نے دریافت کیا کہ وہ بہت لمبا لکھ کر اور کچھ نہ کہہ کر بے حد اچھا score کر سکتی ہے، اور training loop کے کسی حصے کے پاس notice کرنے کا کوئی طریقہ نہیں تھا، کیونکہ loop کے اندر reward model ہی good کی definition ہے۔
یہ reward hacking ہے، اور اگر آپ نے کبھی سوچا ہے کہ chat models اتنے verbose کیوں ہوتے ہیں، تو یہ table جواب کا بڑا حصہ ہے۔
KL penalty اصل میں کیا دیتی ہے
اس حصے کا لنک: KL penalty اصل میں کیا دیتی ہےstandard defence یہ ہے کہ policy کو اس جگہ سے بہت دور جانے پر penalise کیا جائے جہاں سے یہ شروع ہوئی تھی، distance کو باب 4 والی KL divergence سے measure کرتے ہوئے:
reference SFT model ہے — reinforcement stage سے پہلے والی policy۔ دعویٰ یہ ہے کہ یہ model کو degenerate behavior میں بھٹکنے سے روکتا ہے۔ دیکھتے ہیں اس claim کا کتنا حصہ measurement کے بعد بچتا ہے۔ وہی setup، کو sweep کرتے ہوئے:
| reward | true quality | length | 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 |
| صرف reference model | 9.162 | 1.791 | 0.687 | 0 |
آخری row کو باقی rows کے مقابل پڑھیں۔ اور پر penalty کچھ بھی نہیں کرتی: reward KL کے مقابلے میں اتنی زیادہ worth رکھتا ہے کہ optimiser جرمانہ ادا کرتا ہے اور پھر بھی hack کرتا ہے۔ 5 اور 15 کے درمیان behavior جھولتا ہے۔ اور تک، true quality واپس 1.769 تک چڑھ آئی ہے — جو اب بھی اس 1.791 سے نیچے ہے جو reference model کے پاس یہ سب شروع ہونے سے پہلے تھا۔
اس number کو کہیں quote کرنے سے پہلے ایک caveat: آخری row کا 1.791 اور پہلی table میں starting policy کو دیا گیا 0.974 ایک ہی pre-RL model کی دو مختلف measurements ہیں، جو دو experiments نے الگ الگ لی ہیں۔ rows کو table کے اندر compare کریں، tables کے across کبھی نہیں — ہر table کا conclusion اپنی rows پر کھڑا ہے، اور دونوں میں سے کوئی بھی دوسرے کے baseline پر depend نہیں کرتا۔
تو ایماندار summary یہ نہیں کہ "KL penalty reward hacking کو روکتی ہے"۔ یہ ہے:
KL penalty reward hacking کو نہیں روکتی۔ یہ limit کرتی ہے کہ policy reference سے کتنی دور move کر سکتی ہے — اور چونکہ failure کے لیے move کرنا ضروری ہے، اس لیے یہ مدد کرتی ہے۔ مگر یہ leash ہے، corrective نہیں: کم پر leash ٹوٹ جاتی ہے، اور زیادہ پر آپ کو reference model واپس مل جاتا ہے اور پورا expensive stage کچھ نہیں خریدتا۔
useful band تنگ ہے، اس کی location reward model پر depend کرتی ہے، اور اسے تلاش کرنے کا کوئی طریقہ نہیں سوائے دیکھنے کے۔ اسی لیے reference model کا اچھا ہونا ضروری ہے — KL reference کی quality پر floor ہے، failure پر ceiling نہیں — اور یہی ایک بڑی وجہ ہے کہ یہ stage practice میں مشکل ہے، principle میں نہیں۔
PPO، اور DPO نے اسے کیوں پیچھے چھوڑ دیا
اس حصے کا لنک: PPO، اور DPO نے اسے کیوں پیچھے چھوڑ دیاجس algorithm نے اسے scale پر کام کرنے کے قابل بنایا وہ Proximal Policy Optimization ہے۔3 ایک paragraph میں: یہ ہر response کا advantage estimate کرتا ہے، policy کو update کرتا ہے تاکہ above-baseline responses کی probability بڑھے، اور کسی بھی single update کے size کو clip کرتا ہے تاکہ بڑا advantage estimate ایک step میں policy کو تباہ نہ کر سکے۔ language models4 پر apply کرنے کا مطلب ہے بیک وقت چار models رکھنا — policy، reference، reward model، اور critic — اور training کے دوران policy fresh samples generate کرتی رہتی ہے۔
یہ کام کرتا ہے، اس نے InstructGPT اور اس سے descended ہر چیز پیدا کی، اور یہ واقعی مشکل ہے: memory میں چار models، training loop میں sampling، اور instability کی ایسی reputation جو deserved ہے۔ یہ pretend کرنا کہ آپ اسے blog post میں implement کر سکتے ہیں، بے ایمانی ہوگی، اس لیے یہ chapter ایسا نہیں کرتا۔
زیادہ تر purposes کے لیے جس چیز نے اسے replace کیا وہ ایک observation سے آئی۔ اوپر والے KL-regularised objective کی closed-form optimal policy ہے، اور اس expression کو invert کیا جا سکتا ہے: reward کو optimal policy اور reference کے terms میں لکھا جا سکتا ہے۔ اسے Bradley–Terry loss میں واپس substitute کرنے سے reward model مکمل طور پر غائب ہو جاتا ہے۔ جو بچتا ہے وہ preference pairs پر supervised loss ہے — no sampling، no critic، no reward model، memory میں چار کے بجائے دو models۔
یہ Direct Preference Optimization ہے،5 اور یہ دو lines ہے:
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) یہ کیا کہتا ہے، پڑھیں۔ جس quantity کو push up کیا جا رہا ہے وہ یہ ہے کہ policy winner کو reference کے مقابلے میں کتنا زیادہ prefer کرتی ہے، minus یہ کہ loser کو کتنا زیادہ prefer کرتی ہے۔ reference بعد میں لگائی گئی penalty نہیں — یہ loss کے اندر ہے، اسی لیے DPO کو separate KL term کی ضرورت نہیں۔
سب سے اہم property gradient میں ہے۔ loss اور اس کے gradient کو اسی pair پر policy کی پانچ different states میں evaluate کریں:
| policy کی state | loss | gradient magnitude |
|---|---|---|
| پہلے ہی winner کو strongly prefer کرتی ہے | 0.5130 | 0.0401 |
| پہلے ہی اسے prefer کرتی ہے، weakly | 0.6685 | 0.0488 |
| reference جیسی identical | 0.6931 | 0.0500 |
| loser کو prefer کرتی ہے | 0.7981 | 0.0550 |
| loser کو strongly prefer کرتی ہے | 1.0055 | 0.0634 |
policy جتنی زیادہ غلط ہوتی ہے، gradient اتنا بڑھتا ہے۔ وہ pairs جنہیں model پہلے ہی handle کر لیتا ہے تقریباً کچھ contribute نہیں کرتے؛ جن pairs میں یہ الٹا جاتا ہے وہ update پر dominate کرتے ہیں۔ DPO ہر example کو اس بات سے weight کرتا ہے کہ policy اس وقت کتنی غلط ہے، automatically، بغیر scheduling کے — اور یہی self-weighting وہ mechanism ہے جو وہ کام کر رہا ہے جو PPO کا advantage estimate اور critic کر رہے تھے۔ (تیسری row پر loss عین ہے، جو کسی بھی implementation کو check کرنے کا anchor ہے: جو policy اپنے reference جیسی identical ہو اس نے کچھ نہیں سیکھا اور اسے پر بیٹھنا چاہیے۔)
GRPO6 اسی مسئلے سے نکلنے کا ایک مختلف راستہ لیتا ہے۔ یہ sampling loop کو رکھتا ہے مگر critic حذف کر دیتا ہے: baseline predict کرنے کے لیے model train کرنے کے بجائے، یہ اسی prompt کے responses کا ایک group sample کرتا ہے اور group کے mean reward کو directly baseline کے طور پر استعمال کرتا ہے۔ response کا advantage یہ ہے کہ وہ اپنے siblings سے کتنا بہتر تھا۔ اس میں ایک پورا model بڑے batch کے بدلے trade ہوتا ہے، اور اسی نے verifiable-reward training — باب 12 کا موضوع — کو practical بنایا۔
تفصیلات دکھائیں
post-training landscape کے تین مزید حصے، مختصر طور پر۔
RLAIF اور Constitutional AI۔7 annotator کا human ہونا ضروری نہیں۔ model کو principles کا written set دیں اور اسے اپنے outputs critique اور revise کرنے کو کہیں، یا دو candidates کے درمیان choose کرنے کو کہیں، اور آپ کے پاس machine speed اور cost پر produced preference dataset ہے۔ obvious objection — model اپنی ہی homework grade کر رہا ہے — real ہے، اور honest answer یہ ہے کہ یہ جتنا سننے میں لگتا ہے اس سے بہتر کام کرتا ہے کیونکہ judge کرنا generate کرنے سے آسان ہے، جو وہی asymmetry ہے جس پر پورا chapter کھڑا ہے۔
LIMA، اور اس کے لیے کتنا کم data کافی ہے۔8 ایک ہزار carefully curated demonstrations نے competitive assistant پیدا کیا۔ proposed explanation یہ ہے کہ pretraining نے knowledge اور format پہلے ہی install کر دیے تھے، اور post-training کو صرف یہ select کرنا ہوتا ہے کہ model کے existing behaviours میں سے کون سے surface کیے جائیں۔ اگر یہ درست ہے، تو post-training data quality quantity پر غالب ہے — اور field کا اس کے بعد کا behavior بتاتا ہے کہ لوگ اس پر یقین رکھتے ہیں۔
LoRA اور QLoRA۔910 بڑے model کے ہر weight کی fine-tuning کے لیے weights، ان کے gradients اور optimiser state کے لیے memory چاہیے — باب 10 کے سولہ bytes per parameter، ان دو averages پر جو باب 6 نے ہاتھ سے بنائے — ایسے scale پر جس کے لیے cluster چاہیے۔ LoRA original weights کو freeze کرتا ہے اور ان کے ساتھ matrices کی low-rank pair train کرتا ہے، trainable parameters کو orders of magnitude سے کم کرتے ہوئے؛ QLoRA مزید frozen base کو 4 bits پر quantize کرتا ہے۔ دونوں یہاں technique کے طور پر covered ہیں۔ آیا fine-tuning پر money spend کرنا درست ہے یا نہیں، یہ الگ سوال ہے، اور وہ باب 20 کا ہے۔
alignment tax، اور وہ سوال جس کا جواب کسی نے نہیں دیا
اس حصے کا لنک: alignment tax، اور وہ سوال جس کا جواب کسی نے نہیں دیادو چیزیں آگے ساتھ لے جائیں۔
پہلی یہ کہ اس stage کی ایک cost ہے، اور یہ capability کی صورت میں دکھائی دیتی ہے۔ Models اکثر alignment training کے بعد کچھ benchmark tasks پر measurably worse ہو جاتے ہیں — alignment tax — کیونکہ objective بدل گیا: جو response safe، hedged اور well-formatted ہو وہ ہمیشہ وہ response نہیں ہوتا جو accuracy maximise کرے۔ اس gap کا کچھ حصہ engineer کر کے کم کیا گیا ہے، اور کچھ حصہ bug نہیں بلکہ real trade-off ہے۔
دوسری وہ سوال ہے جسے aligned لفظ چھپا دیتا ہے۔ کس کے ساتھ aligned؟ chain یہ ہے: company guidelines لکھتی ہے، contractors انہیں interpret کرتے ہیں، ان کے comparisons reward model کو train کرتے ہیں، reward model policy کو shape کرتا ہے، اور policy کسی ایسے شخص کے سوال کا جواب دیتی ہے جس نے ان میں سے کچھ نہیں دیکھا۔ ہر link specific لوگوں کا کیا ہوا choice ہے، اور اس chapter کے algorithms میں سے کسی کی بھی اس بارے میں کوئی opinion نہیں کہ وہ choices اچھے ہیں یا نہیں۔
یہ rhetorical flourish نہیں ہے۔ یہ concrete reason ہے کہ دو frontier models different requests refuse کرتے ہیں، وہی model versions کے درمیان اپنا mind کیوں بدلتا ہے، اور "aligned" کسی artefact کی property کے بجائے ایک process کی description کیوں ہے۔ اس chapter کی mathematics settled ہے۔ وہ حصہ نہیں۔
یہ آگے کہاں جاتا ہے
اس حصے کا لنک: یہ آگے کہاں جاتا ہےPost-training نے model کو جواب دینا سکھایا۔ اس نے اسے جواب دینے سے پہلے سوچنا نہیں سکھایا، اور دونوں اس طرح different ہیں جو trainable نکلتا ہے۔
باب 12 اس بارے میں ہے کہ جب آپ model کو hard question پر training time کے بجائے answer time پر زیادہ computation خرچ کرنے دیتے ہیں تو کیا ہوتا ہے — chain of thought، verifiable rewards سے reinforcement learning، اور یہ وجہ کہ جو model اپنا working دکھاتا ہے وہ محض خود کو explain نہیں کر رہا بلکہ differently compute کر رہا ہے۔ یہ اس chapter کا debt بھی settle کرتا ہے: GRPO اس میں موجود ہے، وہ کام کرتے ہوئے جو PPO کا critic کیا کرتا تھا، ایسے rewards پر جن کے لیے کسی annotator کی ضرورت نہیں کیونکہ proof یا تو check ہوتا ہے یا نہیں۔
Sources اور method
اس حصے کا لنک: Sources اور methodاوپر والی generations gpt2 اور Qwen/Qwen2.5-0.5B-Instruct سے greedy decoding کے ساتھ آتی ہیں، اس لیے وہ بالکل reproduce ہوتی ہیں۔ Hugging Face LLM Course کا Chapter 11 trl اور peft کے ساتھ SFT اور DPO پر walk through کرتا ہے اگر آپ simulation کے بجائے real thing run کرنا چاہیں؛ Sebastian Raschka کی Build a Large Language Model (From Scratch) کا chapter 7 instruction fine-tuning کو library کے بغیر end to end implement کرتا ہے۔
حوالہ جات
اس حصے کا لنک: حوالہ جات-
Sutton, R. S. and Barto, A. G. Reinforcement Learning: An Introduction, 2nd edition (MIT Press, 2018). delegation جان بوجھ کر ہے: اوپر والا vocabulary box سب سے چھوٹا usable subset ہے، اور اصل subject ایک کتاب ہے۔ ↩
-
Bradley, R. A. and Terry, M. E. Rank Analysis of Incomplete Block Designs: I. The Method of Paired Comparisons. Biometrika 39(3/4), pp. 324–345 (1952). pairwise-comparison model جو آج استعمال ہونے والے ہر reward model کے نیچے ہے۔ ↩
-
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 — وہ paper جس نے three-stage recipe کو standard بنایا۔ اس سے پہلے Christiano et al. (arXiv:1706.03741) تھا، جس نے human comparisons سے reward model سیکھنا introduce کیا، اور Stiennon et al. (arXiv:2009.01325) تھا، جس نے اسے summarisation پر apply کیا۔ ↩
-
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 کو remove کرنے والی derivation section 4 میں ہے اور پوری پڑھنے کے قابل ہے؛ یہ اپنی reputation سے shorter ہے۔ ↩
-
Shao, Z. et al. DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models. arXiv:2402.03300 (2024). section 4.1 میں GRPO introduce کرتا ہے۔ ↩
-
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). ↩