練實(shí)戰(zhàn):從SFT到偏好對(duì)齊的完整工程指南)
2025年提到LLM Post-Training大模型后訓(xùn)練技術(shù)圈的熱度已經(jīng)完全不輸給預(yù)訓(xùn)練本身。我最近和不少做模型的團(tuán)隊(duì)聊下來(lái)有個(gè)特別普遍的困惑手里有算力、有基座模型甚至預(yù)訓(xùn)練流程已經(jīng)跑得滾瓜爛熟但一進(jìn)后訓(xùn)練階段就發(fā)懵——不知道該先做SFT還是先做偏好對(duì)齊不確定數(shù)據(jù)要整理到什么程度更不知道怎么判斷這一輪訓(xùn)練到底成了沒(méi)有。這篇文章不是教科書(shū)式的綜述更像是一份我結(jié)合2023年以來(lái)在多個(gè)開(kāi)源基座模型和內(nèi)部項(xiàng)目上反復(fù)調(diào)整后訓(xùn)練流程的手記。會(huì)把2025年年中這個(gè)時(shí)間點(diǎn)上我認(rèn)為最值得關(guān)注的路徑、取舍和坑一次性講透。適合模型已經(jīng)訓(xùn)到基座階段、正準(zhǔn)備往后訓(xùn)練走的團(tuán)隊(duì)也適合那些已經(jīng)在做后訓(xùn)練、但總感覺(jué)效果忽好忽壞的工程師。1. 先搞清楚后訓(xùn)練到底在解決什么問(wèn)題1.1 預(yù)訓(xùn)練和部署之間那段沒(méi)人管的距離預(yù)訓(xùn)練階段模型學(xué)的核心任務(wù)只有一個(gè)根據(jù)前文預(yù)測(cè)下一個(gè)token。這個(gè)目標(biāo)讓模型具備了非常強(qiáng)的語(yǔ)言能力和世界知識(shí)但它不天然具備好好配合人類的能力。你問(wèn)一個(gè)剛結(jié)束預(yù)訓(xùn)練的基座模型幫我寫(xiě)個(gè)請(qǐng)假郵件它大概率會(huì)順著語(yǔ)言模式續(xù)寫(xiě)出一段莫名其妙的內(nèi)容甚至反問(wèn)一句請(qǐng)假郵件是什么——因?yàn)樗鼘W(xué)的只是文本的統(tǒng)計(jì)規(guī)律不是問(wèn)題-答案的交互方式。后訓(xùn)練要解決的正是預(yù)訓(xùn)練目標(biāo)與部署目標(biāo)之間的這段距離。部署場(chǎng)景里用戶期望模型能理解指令、遵循格式、拒絕有害內(nèi)容、在長(zhǎng)對(duì)話中保持一致。這些能力不是再喂點(diǎn)數(shù)據(jù)就能自然涌現(xiàn)的而是要靠專門(mén)設(shè)計(jì)的訓(xùn)練階段去塑造。很多人把后訓(xùn)練簡(jiǎn)單理解成繼續(xù)訓(xùn)練這個(gè)認(rèn)知會(huì)在后續(xù)每個(gè)決策點(diǎn)帶偏你。1.2 2025年的后訓(xùn)練早已不是一個(gè)步驟而是一套體系我在2023年剛接觸后訓(xùn)練時(shí)很多團(tuán)隊(duì)的做法就是基座模型 幾千條指令數(shù)據(jù) 微調(diào)一晚上完事。到了2024年大家開(kāi)始意識(shí)到SFT只是起點(diǎn)偏好對(duì)齊Preference Alignment成了新的分水嶺。到了2025年年中成熟的后訓(xùn)練流程已經(jīng)明確分成了幾個(gè)互相咬合的環(huán)節(jié)數(shù)據(jù)工程指令數(shù)據(jù)、偏好數(shù)據(jù)的采集、清洗、配比指令微調(diào)SFT讓模型學(xué)會(huì)以指令-響應(yīng)的方式工作偏好對(duì)齊讓模型的回答更符合人類偏好常用RLHF、DPO或GRPO評(píng)估與迭代不止看指標(biāo)還要做人評(píng)、回歸測(cè)試和消融這四個(gè)環(huán)節(jié)里任何一個(gè)做崩了整體效果都會(huì)打折扣。我見(jiàn)過(guò)不止一個(gè)團(tuán)隊(duì)花大價(jià)錢做偏好對(duì)齊結(jié)果發(fā)現(xiàn)SFT階段的數(shù)據(jù)格式就沒(méi)統(tǒng)一導(dǎo)致對(duì)齊階段模型反復(fù)精神分裂。后訓(xùn)練是一套體系不是幾個(gè)孤立腳本的拼接。2. 數(shù)據(jù)工程后訓(xùn)練效果的第一決定因素2.1 指令數(shù)據(jù)的來(lái)源與取舍策略先說(shuō)一個(gè)我反復(fù)強(qiáng)調(diào)的觀點(diǎn)后訓(xùn)練階段數(shù)據(jù)質(zhì)量的重要性遠(yuǎn)大于數(shù)據(jù)數(shù)量尤其對(duì)于SFT來(lái)說(shuō)尤其如此。我做過(guò)一個(gè)對(duì)照實(shí)驗(yàn)一份經(jīng)過(guò)仔細(xì)篩選的5萬(wàn)條指令數(shù)據(jù)效果明顯好過(guò)直接抓取的100萬(wàn)條噪聲數(shù)據(jù)。原因是模型在SFT階段學(xué)的是行為模式而不是知識(shí)——它不需要你給它看一萬(wàn)種錯(cuò)誤的回答方式來(lái)學(xué)習(xí)。指令數(shù)據(jù)的來(lái)源常用就這么幾類公開(kāi)指令數(shù)據(jù)集社區(qū)里已有不少整理好的數(shù)據(jù)集但用之前必須自己洗一遍不能直接拿來(lái)就訓(xùn)合成數(shù)據(jù)用更強(qiáng)的模型生成指令與回答然后人工抽檢、修正。這是目前最主流的方式成本和效率最平衡人工撰寫(xiě)質(zhì)量最高但成本也最高一般只用于核心場(chǎng)景或種子數(shù)據(jù)業(yè)務(wù)日志如果你做的是真實(shí)產(chǎn)品產(chǎn)品里的用戶query和優(yōu)質(zhì)回答是最寶貴的數(shù)據(jù)千萬(wàn)別浪費(fèi)面對(duì)一批候選數(shù)據(jù)我習(xí)慣按下面這個(gè)優(yōu)先級(jí)過(guò)濾過(guò)濾維度具體做法說(shuō)明指令清晰度刪除指代不明、無(wú)法獨(dú)立理解的指令模型學(xué)到的是含糊問(wèn)題配含糊回答的壞習(xí)慣回答質(zhì)量至少抽檢10%確?;卮鹋c指令強(qiáng)相關(guān)混入無(wú)關(guān)回答會(huì)讓模型學(xué)會(huì)答非所問(wèn)格式一致性統(tǒng)一對(duì)話模板、標(biāo)點(diǎn)、換行風(fēng)格格式混亂會(huì)直接干擾偏好對(duì)齊階段難度分布保留一定比例的高難度推理樣本全是簡(jiǎn)單問(wèn)答會(huì)把模型養(yǎng)懶2.2 去重、污染檢測(cè)與格式統(tǒng)一數(shù)據(jù)清洗里最容易被低估的是去重。很多人以為重復(fù)數(shù)據(jù)頂多多花點(diǎn)算力事實(shí)是重復(fù)樣本會(huì)在SFT中造成嚴(yán)重的過(guò)擬合。一個(gè)樣本出現(xiàn)50次模型就會(huì)把它當(dāng)成標(biāo)準(zhǔn)答案死記下來(lái)。我建議至少做兩輪去重第一輪是文本層面的MinHash去重把近似重復(fù)的樣本抓出來(lái)第二輪是和預(yù)訓(xùn)練語(yǔ)料的交叉去重避免評(píng)測(cè)數(shù)據(jù)泄漏進(jìn)訓(xùn)練集。污染檢測(cè)這塊我要單獨(dú)提醒。一個(gè)非常常見(jiàn)的翻車現(xiàn)場(chǎng)是評(píng)測(cè)集里的題目出現(xiàn)在訓(xùn)練數(shù)據(jù)里模型在評(píng)測(cè)指標(biāo)上表現(xiàn)好得驚人一到真實(shí)場(chǎng)景就露餡。我處理這個(gè)問(wèn)題的方法是在訓(xùn)練前把所有評(píng)測(cè)集的題目和訓(xùn)練數(shù)據(jù)做一次embedding級(jí)別的相似度比對(duì)超過(guò)閾值的直接剔除。這一步不能省尤其是從公開(kāi)數(shù)據(jù)源拼數(shù)據(jù)的時(shí)候。格式統(tǒng)一說(shuō)起來(lái)簡(jiǎn)單做起來(lái)卻特別費(fèi)人。同一個(gè)數(shù)據(jù)集里可能出現(xiàn)中文全角逗號(hào)和英文半角逗號(hào)混用、markdown層級(jí)混亂、系統(tǒng)提示詞和用戶消息錯(cuò)位等問(wèn)題。模型對(duì)格式非常敏感SFT階段格式混亂到了偏好對(duì)齊階段就會(huì)表現(xiàn)為改一個(gè)beta參數(shù)效果劇烈波動(dòng)——因?yàn)槟P透緵](méi)形成穩(wěn)定的行為模式。2.3 數(shù)據(jù)配比與課程學(xué)習(xí)指令數(shù)據(jù)的配比我傾向于業(yè)務(wù)導(dǎo)向 能力平衡兩條腿走路。如果產(chǎn)品重點(diǎn)是代碼助手代碼類數(shù)據(jù)占比自然要高但也不能完全砍掉通用對(duì)話否則模型的泛化能力會(huì)退化。一個(gè)我常用的起始配比是通用對(duì)話40%、代碼25%、數(shù)學(xué)推理20%、結(jié)構(gòu)化任務(wù)摘要、改寫(xiě)、抽取15%。這只是起點(diǎn)實(shí)際要根據(jù)評(píng)測(cè)結(jié)果動(dòng)態(tài)調(diào)。關(guān)于課程學(xué)習(xí)我的經(jīng)驗(yàn)是簡(jiǎn)單在前、硬核在后的漸進(jìn)式安排確實(shí)有效但不要做得太復(fù)雜。簡(jiǎn)單地把數(shù)據(jù)按難度排序先訓(xùn)低難度后訓(xùn)高難度比一次性打亂喂進(jìn)去收斂更穩(wěn)。2025年還有一個(gè)趨勢(shì)是把多輪對(duì)話作為SFT的主訓(xùn)練形態(tài)因?yàn)檎鎸?shí)用戶的交互幾乎都是多輪的如果只在單輪指令上訓(xùn)練模型在上下文里的記憶-引用能力會(huì)明顯偏弱。3. SFT教模型像個(gè)干活的樣子3.1 SFT的本質(zhì)是行為克隆不是知識(shí)注入關(guān)于SFT圈子里最大的誤解就是多喂高質(zhì)量問(wèn)答模型就變聰明了。實(shí)際上SFT階段能注入的新知識(shí)極其有限。模型在預(yù)訓(xùn)練階段已經(jīng)學(xué)完了絕大部分知識(shí)和語(yǔ)言能力SFT做的是行為對(duì)齊——教它如何根據(jù)指令組織回答、如何遵循格式、如何呈現(xiàn)推理過(guò)程。這個(gè)認(rèn)知直接決定你該怎么做數(shù)據(jù)你的樣本價(jià)值不在于這個(gè)答案多淵博而在于這個(gè)回答方式是不是產(chǎn)品需要的。我篩數(shù)據(jù)時(shí)反復(fù)提醒自己和團(tuán)隊(duì)不要在SFT階段塞一堆冷門(mén)知識(shí)那是預(yù)訓(xùn)練和持續(xù)預(yù)訓(xùn)練該干的事。SFT數(shù)據(jù)里的每條回答都應(yīng)該像示范動(dòng)作讓模型看了之后知道遇到這類指令就該這么干。3.2 超參數(shù)、上下文長(zhǎng)度與輪數(shù)控制SFT的超參數(shù)我直接給一份從多個(gè)項(xiàng)目里沉淀下來(lái)的經(jīng)驗(yàn)值參考參數(shù)常用區(qū)間說(shuō)明Epochs1~3超過(guò)3輪極易過(guò)擬合除非數(shù)據(jù)量特別小學(xué)習(xí)率1e-5 ~ 2e-5全參LoRA時(shí)可以放寬到1e-4量級(jí)批量大小按顯存能塞下的最大值盡量大SFT的梯度噪聲本來(lái)就大最大長(zhǎng)度2048~8192取決于業(yè)務(wù)最長(zhǎng)輸入別盲目拉長(zhǎng)權(quán)重衰減0.01左右輕微正則防止極端權(quán)重輪數(shù)控制是新手最容易翻車的地方。我見(jiàn)過(guò)一個(gè)團(tuán)隊(duì)把SFT跑到5個(gè)epoch結(jié)果模型回答變得過(guò)于機(jī)械每個(gè)回答都像在背模板多樣性明顯下降。后來(lái)我們把epoch壓到2配合early stopping效果立刻改善。判斷是否過(guò)擬合的辦法很簡(jiǎn)單每個(gè)epoch存一個(gè)checkpoint用一套固定的評(píng)測(cè)集橫向?qū)Ρ瓤茨膫€(gè)checkpoint的綜合表現(xiàn)最好而不是盲目訓(xùn)滿。上下文長(zhǎng)度這塊我建議按需設(shè)置。如果產(chǎn)品場(chǎng)景就是短對(duì)話硬把訓(xùn)練長(zhǎng)度拉長(zhǎng)到8192只會(huì)浪費(fèi)算力如果要做長(zhǎng)文檔處理那么訓(xùn)練數(shù)據(jù)里就應(yīng)該有足夠比例的長(zhǎng)樣本并且要關(guān)注模型在長(zhǎng)上下文下的注意力衰減問(wèn)題。3.3 全參微調(diào)vs參數(shù)高效微調(diào)怎么選2025年LoRA這類參數(shù)高效微調(diào)方法的使用已經(jīng)非常普遍但我仍然建議分層使用實(shí)驗(yàn)探索階段用LoRA最終上線版本優(yōu)先全參微調(diào)。LoRA的優(yōu)勢(shì)是顯存友好、實(shí)驗(yàn)成本低可以快速試不同的數(shù)據(jù)配比、不同的超參數(shù)組合。我在項(xiàng)目的前期階段會(huì)并行跑好幾個(gè)LoRA實(shí)驗(yàn)用一套固定的評(píng)測(cè)prompt快速淘汰低質(zhì)量的數(shù)據(jù)配置。但LoRA有兩個(gè)問(wèn)題一是它的表達(dá)能力有上限在復(fù)雜推理任務(wù)上LoRA微調(diào)的最終效果往往比全參微調(diào)差一點(diǎn)二是LoRA和多輪偏好對(duì)齊的疊加效果有時(shí)候會(huì)出現(xiàn)兩個(gè)低秩近似互相抵消的情況。所以我的習(xí)慣是LoRA用來(lái)探路全參用來(lái)收官。確定好最終數(shù)據(jù)recipe之后用相同的超參數(shù)跑一次全參微調(diào)通常能再穩(wěn)定提升幾個(gè)點(diǎn)。如果你的顯存不夠全參微調(diào)可以考慮加序列并行、激活重計(jì)算這些技巧或者干脆租更大顯存——后訓(xùn)練階段這點(diǎn)錢不該省。4. 偏好對(duì)齊RLHF、DPO、GRPO到底怎么選4.1 從RLHF說(shuō)起管線長(zhǎng)、效果好、成本高偏好對(duì)齊的經(jīng)典方案是RLHF它的完整管線包括訓(xùn)練一個(gè)獎(jiǎng)勵(lì)模型Reward Model來(lái)模擬人類偏好分?jǐn)?shù)然后用強(qiáng)化學(xué)習(xí)算法通常是PPO讓語(yǔ)言模型在這個(gè)獎(jiǎng)勵(lì)信號(hào)下優(yōu)化策略。這條路線效果最穩(wěn)定尤其是需要在探索中提升的任務(wù)上RLHF的天花板明顯更高。但RLHF的代價(jià)也擺在那里一是獎(jiǎng)勵(lì)模型本身需要大量人工偏好標(biāo)注標(biāo)注質(zhì)量直接影響上限二是PPO訓(xùn)練過(guò)程敏感學(xué)習(xí)率、KL懲罰系數(shù)、優(yōu)勢(shì)裁剪這些超參數(shù)一旦沒(méi)調(diào)好loss曲線就會(huì)上躥下跳三是顯存和訓(xùn)練時(shí)間大約是SFT的2~3倍??紤]到這些成本我的建議是如果團(tuán)隊(duì)有成熟的強(qiáng)化學(xué)習(xí)經(jīng)驗(yàn)且對(duì)模型上限要求極高RLHF仍然值得投入否則從DPO或者GRPO這類輕量方案入手更務(wù)實(shí)。4.2 DPO的興起與它的邊界DPODirect Preference Optimization之所以在2024年之后流行核心原因是它把獎(jiǎng)勵(lì)模型強(qiáng)化學(xué)習(xí)兩步合并成了一步直接優(yōu)化偏好概率。它不需要單獨(dú)訓(xùn)練獎(jiǎng)勵(lì)模型也不需要在線采樣和PPO更新實(shí)現(xiàn)簡(jiǎn)單、訓(xùn)練穩(wěn)定可以說(shuō)是低成本版本的對(duì)齊方案。DPO的邊界我在實(shí)戰(zhàn)中體會(huì)很深。它對(duì)偏好數(shù)據(jù)的質(zhì)量極其敏感——如果pair里chosen和rejected的回答差距不大或者被選中的回答實(shí)際上并不明顯更優(yōu)DPO會(huì)把這種噪聲偏好也學(xué)進(jìn)去甚至導(dǎo)致模型變得諂媚、啰嗦。DPO還容易過(guò)擬合訓(xùn)練輪數(shù)稍微多一點(diǎn)點(diǎn)模型輸出就會(huì)失去多樣性。我的經(jīng)驗(yàn)是吃DPO的數(shù)據(jù)質(zhì)量對(duì)比RLHF更苛刻至少要保證每個(gè)pair都經(jīng)過(guò)清洗且chosen-response與rejected-response之間確實(shí)存在可感知的優(yōu)劣差異。4.3 GRPO與RLOO2025年真正在用的輕量在線方案2025年的一個(gè)明顯趨勢(shì)是大家不再把DPO和RLHF看成二選一而是大量使用GRPOGroup Relative Policy Optimization和RLOOReinforce Leave-One-Out這類中間路線。GRPO的思路是不依賴獨(dú)立的價(jià)值網(wǎng)絡(luò)Critic而是通過(guò)對(duì)同一prompt采樣一組response用組內(nèi)相對(duì)表現(xiàn)作為baseline來(lái)估計(jì)優(yōu)勢(shì)。這樣既保留了在線RL的探索能力又省掉了Critic模型的訓(xùn)練成本。對(duì)那些有代碼生成、數(shù)學(xué)推理這類可以自動(dòng)判分任務(wù)場(chǎng)景的團(tuán)隊(duì)來(lái)說(shuō)GRPO幾乎成了默認(rèn)選擇——你甚至可以直接用單元測(cè)試或規(guī)則打分作為獎(jiǎng)勵(lì)信號(hào)讓模型在訓(xùn)練中自己摸索出更好的解題策略。RLOO類似也通過(guò)組內(nèi)留一法來(lái)估計(jì)收益不需要Critic模型。這類方法在70B以下規(guī)模模型上尤其好用訓(xùn)練穩(wěn)定性比PPO好不少成本卻只是略高于DPO。我的建議是如果你的任務(wù)可以自動(dòng)化打分優(yōu)先考慮GRPO/RLOO如果只能靠人工偏好標(biāo)注DPO仍然是性價(jià)比最高的入門(mén)選擇。4.4 選型對(duì)照表與我的實(shí)踐結(jié)論為了直觀我把主流方案的對(duì)比整理成一張表方案成本穩(wěn)定性數(shù)據(jù)要求天花板推薦場(chǎng)景RLHF (PPO)高低獎(jiǎng)勵(lì)模型標(biāo)注量大高追求極致效果且有RL經(jīng)驗(yàn)的團(tuán)隊(duì)DPO低高偏好pair質(zhì)量要求極高中高快速上線、偏好標(biāo)注質(zhì)量有保障GRPO中中高可自動(dòng)打分的任務(wù)高代碼、數(shù)學(xué)、多步推理RLOO中中高可自動(dòng)打分或規(guī)則判分高中大模型的在線對(duì)齊如果你的預(yù)算和時(shí)間都有限我建議的路徑是先SFT跑一個(gè)baseline再上DPO看看收益如果DPO有效但不夠穩(wěn)再切換到GRPO或者RLHF。不要一上來(lái)就全鏈路RLHF那樣往往把大量時(shí)間耗在調(diào)參上而問(wèn)題可能根本不在算法——在數(shù)據(jù)。5. 評(píng)估與迭代怎么判斷這輪訓(xùn)練成了5.1 從基準(zhǔn)測(cè)試到真實(shí)任務(wù)評(píng)估集要自己攢后訓(xùn)練階段最忌諱的評(píng)估方式是只盯著公開(kāi)benchmark的分?jǐn)?shù)。公開(kāi)榜單上的題目大概率出現(xiàn)在預(yù)訓(xùn)練數(shù)據(jù)里即便做了污染檢測(cè)它仍然無(wú)法反映你的真實(shí)業(yè)務(wù)場(chǎng)景。我堅(jiān)持的做法是自建一套包含200~500條prompt的評(píng)測(cè)集覆蓋產(chǎn)品里的典型用戶請(qǐng)求、邊界case和反例。這套評(píng)測(cè)集的設(shè)計(jì)很講究。不要只放正常問(wèn)題一定要包含模糊指令用戶沒(méi)說(shuō)清楚、長(zhǎng)上下文要求對(duì)話歷史很長(zhǎng)、格式約束要求輸出JSON或表格、拒絕場(chǎng)景用戶問(wèn)不該答的內(nèi)容。我通常在SFT開(kāi)始之前就把這套評(píng)測(cè)集固定下來(lái)之后所有實(shí)驗(yàn)都在同一套prompt上對(duì)比防止用不同的尺子量身高。5.2 消融實(shí)驗(yàn)與回歸測(cè)試后訓(xùn)練流程中我最常做也最建議做的實(shí)驗(yàn)是消融對(duì)比同一份SFT數(shù)據(jù)分別跑只SFT和SFTDPO/GRPO看偏好對(duì)齊階段到底帶來(lái)了多少真實(shí)收益。很多時(shí)候你會(huì)發(fā)現(xiàn)DPO在某些評(píng)測(cè)項(xiàng)上提升了回答吸引力卻在另一些項(xiàng)上讓模型變得不敢直接給結(jié)論。沒(méi)有消融對(duì)比你根本不知道問(wèn)題出在哪個(gè)階段?;貧w測(cè)試同樣重要。后訓(xùn)練最常見(jiàn)的副作用是災(zāi)難性遺忘——對(duì)齊階段提升了某個(gè)能力卻把SFT階段學(xué)到的另一種行為給覆蓋了。我見(jiàn)過(guò)一個(gè)項(xiàng)目數(shù)學(xué)推理能力在GRPO之后上了一個(gè)臺(tái)階但對(duì)話的親和力明顯下降回答變得冷冰冰的。這種情況必須通過(guò)固定的回歸評(píng)測(cè)集及時(shí)發(fā)現(xiàn)否則等上線被用戶罵回來(lái)就晚了。5.3 迭代節(jié)奏與checkpoint管理后訓(xùn)練的迭代節(jié)奏我總結(jié)出的經(jīng)驗(yàn)是小步快跑、每步可驗(yàn)證。具體來(lái)說(shuō)SFT階段每次調(diào)整數(shù)據(jù)recipe跑完立刻評(píng)測(cè)核心指標(biāo)別攢著一堆實(shí)驗(yàn)一起看結(jié)果那樣根本定位不了問(wèn)題偏好對(duì)齊階段每幾百步存一個(gè)checkpoint然后對(duì)這些checkpoint做全量評(píng)測(cè)抽樣人評(píng)。人評(píng)環(huán)節(jié)我強(qiáng)烈建議保留。自動(dòng)化指標(biāo)再豐富也替代不了真實(shí)人類對(duì)這個(gè)回答讀起來(lái)舒不舒服的判斷。我在項(xiàng)目里會(huì)固定一組5~8人的評(píng)測(cè)小組每周抽半天時(shí)間用盲評(píng)的方式給不同checkpoint的回答打分。這些分?jǐn)?shù)不要追求統(tǒng)計(jì)學(xué)上的完美它的價(jià)值在于給你方向感——告訴你這輪迭代是在變好還是變壞。Checkpoint管理看似小事做不好卻會(huì)出大事故。我的習(xí)慣是每個(gè)checkpoint都記錄完整的實(shí)驗(yàn)元信息數(shù)據(jù)版本、超參數(shù)、loss曲線、評(píng)測(cè)結(jié)果寫(xiě)成一張簡(jiǎn)單的實(shí)驗(yàn)表格。別小看這張表它能幫你在幾周后快速?gòu)?fù)盤(pán)為什么那次效果崩了也能在團(tuán)隊(duì)協(xié)作時(shí)避免兩個(gè)人跑同樣的實(shí)驗(yàn)浪費(fèi)算力。6. 我踩過(guò)的坑和一些可以抄作業(yè)的經(jīng)驗(yàn)6.1 SFT數(shù)據(jù)里混入神仙回復(fù)的問(wèn)題早年做SFT數(shù)據(jù)時(shí)我喜歡把那些特別詳盡、特別完美的回答選進(jìn)訓(xùn)練集覺(jué)得讓模型學(xué)最好的總沒(méi)錯(cuò)。后來(lái)發(fā)現(xiàn)這個(gè)思路有害如果訓(xùn)練數(shù)據(jù)里全是神仙回復(fù)——每一條都寫(xiě)成長(zhǎng)篇大論的教科書(shū)級(jí)答案模型學(xué)到的反而是不管用戶問(wèn)什么都長(zhǎng)篇輸出的習(xí)慣。真實(shí)用戶問(wèn)現(xiàn)在幾點(diǎn)時(shí)不需要你寫(xiě)800字的論文。后來(lái)我調(diào)整了策略SFT數(shù)據(jù)里的回答要貼近實(shí)際部署狀態(tài)。問(wèn)答短的就該短能一句話說(shuō)清的絕不用兩句話。模型學(xué)的是分配表達(dá)長(zhǎng)度的能力而不是每條都往長(zhǎng)了寫(xiě)。6.2 偏好數(shù)據(jù)里的標(biāo)簽噪聲DPO會(huì)如實(shí)學(xué)進(jìn)去偏好數(shù)據(jù)的人工標(biāo)注質(zhì)量遠(yuǎn)比很多人以為的低。我在一個(gè)項(xiàng)目里做過(guò)抽檢發(fā)現(xiàn)大約8%~12%的偏好標(biāo)注是隨意標(biāo)的——標(biāo)注員根本沒(méi)有認(rèn)真對(duì)比兩個(gè)回答的優(yōu)劣或者對(duì)領(lǐng)域內(nèi)容不熟悉憑感覺(jué)選了chosen。這個(gè)比例在DPO訓(xùn)練里會(huì)被直接放大模型會(huì)把錯(cuò)誤偏好當(dāng)成真理學(xué)進(jìn)去最后表現(xiàn)為回答風(fēng)格偏激忽視安全約束。應(yīng)對(duì)辦法沒(méi)有捷徑一是加大對(duì)標(biāo)注員的培訓(xùn)給出清晰的對(duì)齊標(biāo)準(zhǔn)二是對(duì)pair做交叉驗(yàn)證比如兩個(gè)人標(biāo)注同一條pair不一致的拿出來(lái)討論三是定期在訓(xùn)練完成后做偏好一致性的抽檢發(fā)現(xiàn)模型在某類問(wèn)題上出現(xiàn)系統(tǒng)性偏差回頭查對(duì)應(yīng)的偏好數(shù)據(jù)。這是一個(gè)反復(fù)循環(huán)的過(guò)程沒(méi)有一勞永逸。6.3 后訓(xùn)練的算力規(guī)劃與時(shí)間預(yù)期很多團(tuán)隊(duì)在規(guī)劃后訓(xùn)練算力時(shí)只算了SFT一遍的成本嚴(yán)重低估了迭代的消耗。我習(xí)慣把后訓(xùn)練總成本按SFT的3~5倍做預(yù)算其中1份給SFT1~2份給偏好對(duì)齊剩下的都留給評(píng)估、消融和返工。這不是浪費(fèi)——后訓(xùn)練本質(zhì)上是個(gè)實(shí)驗(yàn)驅(qū)動(dòng)的工程你不跑足夠的實(shí)驗(yàn)就找不到最優(yōu)配置省下的算力會(huì)以上線效果不行重新訓(xùn)練的形式加倍還回來(lái)。時(shí)間預(yù)期上也要放平心態(tài)。一個(gè)70B規(guī)模模型的后訓(xùn)練從數(shù)據(jù)準(zhǔn)備到最終定版兩周到一個(gè)月都是正常的。如果哪個(gè)環(huán)節(jié)快得出奇往往意味著某個(gè)質(zhì)量檢查被跳過(guò)了。6.4 最后的體會(huì)回看這兩年做的那么多后訓(xùn)練項(xiàng)目我最大的感受是后訓(xùn)練不是一個(gè)跑完腳本就收工的工序而是一套需要反復(fù)試錯(cuò)、持續(xù)積累的工程體系。數(shù)據(jù)、算法、評(píng)估三者的權(quán)重在我心里大約是5:3:2數(shù)據(jù)永遠(yuǎn)是最大的杠桿。你在SFT數(shù)據(jù)、偏好數(shù)據(jù)上多花的一分心思最后都會(huì)在模型表現(xiàn)上拿到回報(bào)反過(guò)來(lái)算法再先進(jìn)也救不了臟數(shù)據(jù)。如果你現(xiàn)在正準(zhǔn)備啟動(dòng)后訓(xùn)練我的最后建議是先花兩周把評(píng)估集扎扎實(shí)實(shí)建好把數(shù)據(jù)清洗流程跑通再做任何訓(xùn)練實(shí)驗(yàn)。磨刀不誤砍柴工這個(gè)順序我還沒(méi)見(jiàn)過(guò)反著來(lái)能成功的。