權(quán)重,高效替代提示詞工程)
在很長(zhǎng)一段時(shí)間里大家討論大模型落地時(shí)重心都放在“提示詞工程”。同一道題換個(gè)措辭效果可能天差地別。于是出現(xiàn)了各種長(zhǎng)篇模板、CoT 鏈、Few-shot 示例堆疊。這種方法在小規(guī)模驗(yàn)證時(shí)很有效但一旦進(jìn)入生產(chǎn)環(huán)境問(wèn)題就暴露了上下文越來(lái)越長(zhǎng)、單次調(diào)用越來(lái)越貴、推理延遲越來(lái)越高而且模型對(duì)提示詞的微小擾動(dòng)非常敏感。圍繞這些問(wèn)題業(yè)界開(kāi)始嘗試另一條路線把技能蒸餾進(jìn)權(quán)重而不是寫(xiě)進(jìn)提示詞。這個(gè)思路的技術(shù)表達(dá)是 “Distill Skills into Weights, Not Prompts”其核心是讓模型在訓(xùn)練階段就把可復(fù)用的抽象技能內(nèi)化到參數(shù)中推理時(shí)不再依賴(lài)冗長(zhǎng)的提示詞描述。本文將圍繞這一主題拆解其中的關(guān)鍵概念抽象技能、特權(quán)信號(hào)、在線策略自蒸餾以及它們的組合方式。會(huì)先解釋概念本身再給出一套可落地的訓(xùn)練流程示意最后聊一聊工程化過(guò)程中常見(jiàn)的坑。1. 背景提示詞工程的邊界在哪里1.1 提示詞方案的三個(gè)硬傷先看一個(gè)典型場(chǎng)景。假設(shè)業(yè)務(wù)上需要模型完成“從用戶(hù)對(duì)話中提取結(jié)構(gòu)化訂單信息”的任務(wù)。用提示詞方案通常是寫(xiě)一段很長(zhǎng)的描述告訴模型字段含義、抽取規(guī)則、輸出格式然后在線調(diào)用時(shí)把這段描述拼到輸入前面。這樣做的第一個(gè)問(wèn)題是Token 成本。描述本身可能占幾百甚至上千 Token每次請(qǐng)求都要重復(fù)攜帶。如果業(yè)務(wù)流量是每天幾百萬(wàn)次調(diào)用這部分開(kāi)銷(xiāo)會(huì)被急劇放大。第二個(gè)問(wèn)題是上下文長(zhǎng)度。提示詞越長(zhǎng)留給真實(shí)用戶(hù)輸入的空間就越少。尤其在需要結(jié)合多輪對(duì)話、歷史記錄、知識(shí)庫(kù)片段時(shí)提示詞模板和業(yè)務(wù)數(shù)據(jù)會(huì)互相爭(zhēng)搶上下文窗口。第三個(gè)問(wèn)題是穩(wěn)定性。提示詞本質(zhì)上是在“約束”模型的行為但模型的注意力分布并不完全可控。順序換一下、標(biāo)點(diǎn)改一下、示例數(shù)量變一下結(jié)果可能就不一樣。開(kāi)發(fā)團(tuán)隊(duì)需要不斷調(diào)試措辭維護(hù)成本很高。1.2 把技能固化到權(quán)重一種更本質(zhì)的做法如果換個(gè)思路在離線訓(xùn)練階段把“如何抽取訂單信息”這個(gè)過(guò)程變成模型參數(shù)里的一種先驗(yàn)。推理時(shí)模型不再需要看到一段長(zhǎng)描述而是直接“會(huì)做這件事”。這就是把技能蒸餾進(jìn)權(quán)重。從工程角度看這種做法的優(yōu)勢(shì)非常直觀推理時(shí)不再攜帶大量模板上下文更短成本更低技能的觸發(fā)更加自動(dòng)化不再依賴(lài)用戶(hù)措辭碰巧命中提示詞行為一致性由參數(shù)保證而不是由提示詞臨場(chǎng)約束。當(dāng)然這條路也有代價(jià)訓(xùn)練成本更高、數(shù)據(jù)準(zhǔn)備更復(fù)雜、模型迭代周期更長(zhǎng)。因此理解其原理比復(fù)制一行代碼更重要。2. 核心概念技能、特權(quán)信號(hào)與自蒸餾要理解 “Distill Skills into Weights, Not Prompts”先要理清三個(gè)概念抽象技能、特權(quán)信號(hào)、在線策略自蒸餾。2.1 抽象技能是什么技能Skill在這里不是指某個(gè)具體回答而是指“面對(duì)一類(lèi)狀態(tài)時(shí)采取的一系列決策動(dòng)作”。它面向的不是單次問(wèn)答而是可復(fù)用的行為模式。舉一個(gè)例子在修 bug 的場(chǎng)景中“先定位日志異常、再縮小函數(shù)范圍、接著修復(fù)并回歸測(cè)試”這是一個(gè)技能在數(shù)據(jù)分析場(chǎng)景中“先了解字段語(yǔ)義、識(shí)別缺失值、分布異常再建模”也是一個(gè)技能。抽象技能Abstract Skill則是把這類(lèi)行為模式從具體實(shí)例中提煉出來(lái)去掉細(xì)節(jié)只保留可遷移的策略骨架。比如“根據(jù)報(bào)錯(cuò)關(guān)鍵字搜索代碼位置”這個(gè)技能既可以用于 Python 項(xiàng)目也可以用于 Java 項(xiàng)目。在蒸餾框架中抽象技能通常不是人工逐條編寫(xiě)的而是通過(guò)數(shù)據(jù)聚類(lèi)、自動(dòng)歸納或者由更強(qiáng)模型從軌跡中總結(jié)得到。2.2 特權(quán)信號(hào)Privileged Signals特權(quán)信號(hào)這個(gè)詞來(lái)自機(jī)器人控制和模仿學(xué)習(xí)領(lǐng)域原意是指訓(xùn)練時(shí)可以利用、但推理時(shí)拿不到的信息。舉一個(gè)直觀的例子。訓(xùn)練一個(gè)自動(dòng)駕駛模型時(shí)如果給模型看“障礙物的精確坐標(biāo)”來(lái)學(xué)習(xí)避障這就是特權(quán)信號(hào)——真實(shí)部署時(shí)攝像頭只能給像素給不了精確坐標(biāo)。但在訓(xùn)練階段這些信號(hào)可以加快模型收斂。放在自蒸餾場(chǎng)景里特權(quán)信號(hào)可以指全局最優(yōu)策略給出的動(dòng)作訓(xùn)練時(shí)對(duì)未來(lái)環(huán)境的“提前觀察”由更大模型產(chǎn)出的高質(zhì)量中間決策軌跡級(jí)別的人工標(biāo)注反饋。關(guān)鍵是特權(quán)信號(hào)只在教師側(cè)使用不進(jìn)入學(xué)生模型推理時(shí)的輸入。2.3 在線策略自蒸餾蒸餾Distillation通常指把大模型/教師模型的知識(shí)遷移到小模型/學(xué)生模型。而在線策略自蒸餾On-Policy Self-Distillation有幾個(gè)特點(diǎn)教師和學(xué)生不是完全固定的訓(xùn)練過(guò)程中會(huì)同步更新訓(xùn)練數(shù)據(jù)是模型自己在環(huán)境交互/采樣過(guò)程中產(chǎn)生的也就是在線策略學(xué)生不僅學(xué)教師的輸出還從自身的探索反饋中學(xué)習(xí)并讓技能逐漸內(nèi)化。這種方式不同于離線蒸餾使用靜態(tài)數(shù)據(jù)集它更接近強(qiáng)化學(xué)習(xí)中的自我對(duì)弈模型一邊探索一邊把探索到的好行為蒸餾進(jìn)自己的參數(shù)。3. 為什么“蒸餾進(jìn)權(quán)重”優(yōu)于“寫(xiě)進(jìn)提示詞”前面講了概念這一節(jié)做更細(xì)致的對(duì)比。可以用一張表快速看清楚兩條路線的差異對(duì)比維度提示詞方案權(quán)重蒸餾方案推理成本每次攜帶長(zhǎng)模板Token 開(kāi)銷(xiāo)大無(wú)模板開(kāi)銷(xiāo)上下文更短推理延遲長(zhǎng)上下文導(dǎo)致預(yù)填充耗時(shí)增加輸入更短首 Token 延遲更低行為一致性受措辭影響波動(dòng)較大參數(shù)固化穩(wěn)定性更好技能維護(hù)模板散落在代碼和配置中集中在訓(xùn)練數(shù)據(jù)和評(píng)估流程中可解釋性可直接閱讀提示詞需要額外解釋性工具更新代價(jià)修改提示詞即可速度快需要重新訓(xùn)練/微調(diào)周期長(zhǎng)泛化能力依賴(lài)提示詞覆蓋度技能抽象程度決定泛化邊界從這張表可以看到提示詞方案的最大優(yōu)勢(shì)是“快”改一行文本就能上線。而權(quán)重蒸餾方案的優(yōu)勢(shì)在于“穩(wěn)”和“省”一旦技能固化生產(chǎn)環(huán)境里的表現(xiàn)會(huì)更可靠單位請(qǐng)求成本也更低。從技術(shù)演進(jìn)的角度看兩者并不是完全互斥的。很多團(tuán)隊(duì)的實(shí)際落地路徑是先用提示詞做原型驗(yàn)證驗(yàn)證技能的可行性后再收集數(shù)據(jù)、蒸餾到權(quán)重中最終在推理階段去掉長(zhǎng)提示詞。4. 在線策略自蒸餾的技術(shù)框架理解了概念下面看具體的訓(xùn)練框架拆解。這里的框架不限定具體某個(gè)模型庫(kù)而是給出通用的抽象結(jié)構(gòu)方便讀者對(duì)照自己的項(xiàng)目進(jìn)行調(diào)整。4.1 整體流程整個(gè)訓(xùn)練流程可以分成五個(gè)階段定義技能空間確定模型需要具備哪些可復(fù)用技能。這一步可以由專(zhuān)家梳理也可以用聚類(lèi)算法從軌跡數(shù)據(jù)中挖掘。準(zhǔn)備在線采樣環(huán)境模型在任務(wù)環(huán)境中持續(xù)交互產(chǎn)生軌跡數(shù)據(jù)。這部分?jǐn)?shù)據(jù)是“在線策略”的來(lái)源。生成特權(quán)信號(hào)在每條軌跡上利用教師模型或全局信息標(biāo)注“該狀態(tài)應(yīng)該使用哪個(gè)技能”“這個(gè)步驟的理想輸出是什么”。蒸餾訓(xùn)練學(xué)生模型不僅要學(xué)習(xí)復(fù)制教師輸出還要學(xué)習(xí)“技能路由”——即在什么狀態(tài)下選擇什么技能。路由信息和技能執(zhí)行一起被蒸餾進(jìn)參數(shù)。評(píng)估與迭代用評(píng)測(cè)集驗(yàn)證技能是否真正內(nèi)化并針對(duì)失敗案例補(bǔ)充數(shù)據(jù)或調(diào)整技能空間。4.2 技能路由一個(gè)被忽略的關(guān)鍵模塊很多初學(xué)者只關(guān)注“模型輸出對(duì)不對(duì)”卻忽略了一個(gè)更關(guān)鍵的問(wèn)題模型怎么知道當(dāng)前該用哪個(gè)技能在提示詞方案中技能選擇靠的是用戶(hù)顯式指定或者模型從上下文中自己判斷。而在蒸餾方案中技能選擇需要被“內(nèi)化”成一個(gè)隱式的路由策略。這個(gè)路由策略的訓(xùn)練依賴(lài)特權(quán)信號(hào)。比如在訓(xùn)練數(shù)據(jù)中每個(gè)狀態(tài)節(jié)點(diǎn)都被標(biāo)注了“當(dāng)前應(yīng)執(zhí)行技能 A”學(xué)生模型在學(xué)習(xí)時(shí)不僅要學(xué)會(huì)技能 A 的決策邏輯還要學(xué)會(huì)在相似狀態(tài)下自動(dòng)激活技能 A。從實(shí)現(xiàn)層面看這通常意味著模型需要額外學(xué)習(xí)一種“隱式意圖識(shí)別”的能力。它不直接輸出“我要使用技能A”這樣的文本而是通過(guò)參數(shù)表達(dá)這種狀態(tài)到技能的映射。4.3 蒸餾損失的設(shè)計(jì)思路蒸餾訓(xùn)練中損失函數(shù)通常包括兩個(gè)部分。第一部分是輸出蒸餾損失目標(biāo)是讓學(xué)生模型的輸出分布逼近教師模型L_output KL( student_output || teacher_output )第二部分是技能路由損失目標(biāo)是讓學(xué)生模型在對(duì)應(yīng)狀態(tài)下激活正確的技能L_skill CrossEntropy( student_skill_logits, privileged_skill_label )在實(shí)際實(shí)現(xiàn)中兩個(gè)損失會(huì)加權(quán)組合L_total alpha * L_output beta * L_skill其中 alpha 和 beta 是超參數(shù)。alpha 過(guò)大會(huì)讓學(xué)生只模仿教師的“形”而忽略技能的抽象遷移beta 過(guò)大會(huì)讓學(xué)生過(guò)度依賴(lài)技能標(biāo)注失去在未知狀態(tài)下的泛化能力。5. 實(shí)戰(zhàn)示意搭建一個(gè)技能蒸餾訓(xùn)練流程這一節(jié)給出一個(gè)可運(yùn)行的示意代碼。說(shuō)明一下由于不同團(tuán)隊(duì)使用的模型庫(kù)、訓(xùn)練框架差異較大以下代碼是偽代碼風(fēng)格的最小實(shí)現(xiàn)重點(diǎn)在于展示整體流程布局不能直接復(fù)制到生產(chǎn)環(huán)境運(yùn)行。讀者需要將其適配到自己的訓(xùn)練框架中。5.1 項(xiàng)目結(jié)構(gòu)建議按下面的結(jié)構(gòu)組織代碼skill_distill/ ├── config.py ├── skill_lib.py ├── teacher_model.py ├── student_model.py ├── sampled_trajectory.py ├── train.py └── evaluate.py5.2 技能庫(kù)定義# skill_lib.py # 技能庫(kù)維護(hù)技能列表以及每個(gè)技能的描述 SKILL_LIBRARY [ { skill_id: 0, name: code_error_locate, description: 根據(jù)異常堆棧定位代碼位置并給出修復(fù)建議 }, { skill_id: 1, name: data_quality_check, description: 檢查數(shù)據(jù)集字段缺失、類(lèi)型異常和分布傾斜 }, { skill_id: 2, name: sql_optimization, description: 分析慢查詢(xún)執(zhí)行計(jì)劃并優(yōu)化索引和SQL結(jié)構(gòu) } ]5.3 特權(quán)信號(hào)標(biāo)注在采樣軌跡中每個(gè)狀態(tài)節(jié)點(diǎn)需要附帶一個(gè)特權(quán)標(biāo)簽。這里用簡(jiǎn)潔的字典結(jié)構(gòu)表示一個(gè)軌跡片段# sampled_trajectory.py # 一條在線采樣軌跡的示例 trajectory { state: [ 用戶(hù)輸入: 系統(tǒng)報(bào)錯(cuò) OutOfMemoryError, 當(dāng)前代碼堆棧: Java heap space, 運(yùn)行環(huán)境: 生產(chǎn)環(huán)境批次任務(wù) ], privileged_skill_id: 0, # 特權(quán)信號(hào)當(dāng)前應(yīng)該使用 code_error_locate 技能 teacher_action: 先檢查堆棧中重復(fù)分配的對(duì)象再排查大對(duì)象緩存, reward: 1.0 }# 在 collect_trajectory 中特權(quán)信號(hào)來(lái)自全局信息或教師模型的離線標(biāo)注 def collect_trajectory(env, teacher_model): observations [] state env.reset() done False while not done: # 教師模型根據(jù)特權(quán)信息給出動(dòng)作 privileged_action, skill_id teacher_model.act(state, privilegedTrue) observations.append({ state: state, privileged_action: privileged_action, privileged_skill_id: skill_id }) state, reward, done env.step(privileged_action) return observations5.4 學(xué)生模型與訓(xùn)練循環(huán)# train.py # 在線策略自蒸餾訓(xùn)練循環(huán)示意 import torch import torch.nn as nn from skill_lib import SKILL_LIBRARY from sampled_trajectory import collect_trajectory class StudentModel(nn.Module): def __init__(self, vocab_size, hidden_size, num_skills): super().__init__() self.backbone nn.TransformerEncoder(...) self.output_head nn.Linear(hidden_size, vocab_size) self.skill_head nn.Linear(hidden_size, num_skills) def forward(self, input_ids): features self.backbone(input_ids) logits self.output_head(features) skill_logits self.skill_head(features) return logits, skill_logits def compute_distill_loss(student_logits, teacher_logits, student_skill_logits, privileged_skill_id, alpha0.7, beta0.3): # 輸出蒸餾損失讓學(xué)生的輸出分布逼近教師 output_loss nn.KLDivLoss(reductionbatchmean)( nn.LogSoftmax(dim-1)(student_logits), nn.Softmax(dim-1)(teacher_logits) ) # 技能路由損失學(xué)習(xí)特權(quán)信號(hào)中的技能選擇 skill_loss nn.CrossEntropyLoss()( student_skill_logits, torch.tensor([privileged_skill_id]) ) return alpha * output_loss beta * skill_loss def train_online(): env create_task_environment() teacher load_teacher_model() student StudentModel(...) optimizer torch.optim.AdamW(student.parameters(), lr1e-5) for step in range(10000): # 1. 在線采集 batch collect_trajectory(env, teacher) # 2. 學(xué)生模型前向 input_ids batch[state] student_logits, student_skill_logits student(input_ids) # 3. 教師模型前向教師使用特權(quán)信號(hào) teacher_logits teacher(input_ids, privilegedTrue) # 4. 蒸餾損失 loss compute_distill_loss( student_logits, teacher_logits, student_skill_logits, batch[privileged_skill_id] ) # 5. 反向傳播 optimizer.zero_grad() loss.backward() optimizer.step() if step % 100 0: print(fstep {step}, loss {loss.item():.4f})5.5 推理階段的變化訓(xùn)練完成后推理階段不再需要教師模型和特權(quán)信號(hào)也不再需要把技能描述寫(xiě)進(jìn)提示詞。模型直接根據(jù)用戶(hù)輸入內(nèi)部完成技能路由和技能執(zhí)行# inference.py # 推理時(shí)只需要學(xué)生模型和用戶(hù)輸入 def inference(student_model, user_input): input_ids tokenizer.encode(user_input) with torch.no_grad(): output_ids, _ student_model(input_ids) return tokenizer.decode(output_ids)這個(gè)階段的核心區(qū)別是全程不出現(xiàn)技能描述文本也不出現(xiàn)長(zhǎng)提示詞模板。6. 常見(jiàn)問(wèn)題與排查思路在實(shí)際應(yīng)用中把技能蒸餾進(jìn)權(quán)重的方案會(huì)遇到一些典型問(wèn)題。這里整理一份排查清單。問(wèn)題現(xiàn)象常見(jiàn)原因排查思路蒸餾后模型在通用任務(wù)上變差災(zāi)難性遺忘技能訓(xùn)練擠壓了原有能力在蒸餾損失中加入通用任務(wù)數(shù)據(jù)或使用回放機(jī)制技能切換不準(zhǔn)確該用技能A時(shí)用了技能B特權(quán)信號(hào)噪聲大技能邊界模糊檢查標(biāo)注質(zhì)量細(xì)化技能定義增加過(guò)渡狀態(tài)樣本模型只會(huì)模仿教師輸出無(wú)法舉一反三輸出蒸餾損失權(quán)重過(guò)高忽略技能路由調(diào)高 beta讓技能路由損失發(fā)揮更大作用訓(xùn)練損失下降但推理效果波動(dòng)大在線采樣分布和推理分布不一致增加在線采樣環(huán)境的多樣性避免策略陷入局部最優(yōu)技能庫(kù)過(guò)大導(dǎo)致路由混亂技能數(shù)量過(guò)多區(qū)分度不足重新做技能聚類(lèi)保持每個(gè)技能之間有明確邊界訓(xùn)練數(shù)據(jù)不干凈教師信號(hào)包含錯(cuò)誤動(dòng)作對(duì)教師輸出增加置信度過(guò)濾低置信度樣本不入庫(kù)下面挑選三個(gè)最常遇到的問(wèn)題展開(kāi)說(shuō)明。6.1 災(zāi)難性遺忘怎么解決技能蒸餾本質(zhì)上是利用任務(wù)數(shù)據(jù)做持續(xù)學(xué)習(xí)。如果新技能數(shù)據(jù)占比過(guò)高模型在通用能力上的表現(xiàn)會(huì)明顯退化。解決辦法通常是在蒸餾數(shù)據(jù)中混入一定比例的通用語(yǔ)料或原任務(wù)數(shù)據(jù)使用參數(shù)隔離技術(shù)例如 LoRA 等低秩適配模塊讓技能相關(guān)的參數(shù)與原參數(shù)解耦定期回到通用評(píng)測(cè)集上做回歸測(cè)試監(jiān)控遺忘程度。6.2 技能邊界模糊怎么辦技能蒸餾的成敗很大程度上取決于技能空間的劃分。如果兩個(gè)技能之間經(jīng)常出現(xiàn)難以判斷的樣本學(xué)生模型學(xué)到的路由策略就會(huì)不穩(wěn)定。遇到這種情況建議先回頭審視技能定義本身。技能不是越細(xì)越好也不是越粗越好。判斷標(biāo)準(zhǔn)是一個(gè)技能是否對(duì)應(yīng)一套穩(wěn)定、可復(fù)用的決策邏輯。如果某個(gè)狀態(tài)下的決策邏輯經(jīng)常有兩種截然不同的走向說(shuō)明它可能橫跨了兩個(gè)技能。6.3 在線采樣的分布漂移在線策略蒸餾里學(xué)生模型在更新采樣的軌跡分布也在變化。如果采樣環(huán)境太單一模型很快就會(huì)過(guò)擬合到少數(shù)狀態(tài)上如果環(huán)境太開(kāi)放訓(xùn)練又很難收斂。一個(gè)折中的做法是用“課程學(xué)習(xí)”的思路先讓模型在受限環(huán)境中訓(xùn)練逐步擴(kuò)大狀態(tài)空間。7. 工程化落地的幾點(diǎn)建議7.1 先提示詞驗(yàn)證再蒸餾權(quán)重對(duì)一個(gè)團(tuán)隊(duì)來(lái)說(shuō)最穩(wěn)妥的落地路徑不是一上來(lái)就做權(quán)重蒸餾而是分兩步走用提示詞方案快速驗(yàn)證技能定義是否合理。把抽象技能寫(xiě)成提示詞模板讓模型在少量評(píng)測(cè)集上跑出基線效果。確認(rèn)技能有效后再收集數(shù)據(jù)、構(gòu)建蒸餾訓(xùn)練集把技能固化進(jìn)權(quán)重。這樣做的好處是可以在早期快速驗(yàn)證業(yè)務(wù)假設(shè)避免在訓(xùn)練上浪費(fèi)大量資源。7.2 用評(píng)估集守住技能邊界技能是否真正被蒸餾進(jìn)權(quán)重需要一套專(zhuān)門(mén)的評(píng)估集來(lái)衡量。建議每個(gè)技能都有獨(dú)立的評(píng)測(cè)用例并記錄以下指標(biāo)路由準(zhǔn)確率模型是否在正確狀態(tài)下觸發(fā)正確技能技能執(zhí)行成功率觸發(fā)技能后任務(wù)是否順利完成遷移能力在未見(jiàn)過(guò)的輸入分布上技能是否依然可用。7.3 理智看待“提示詞 vs 權(quán)重”的取舍有些場(chǎng)景依然適合提示詞方案。比如技能內(nèi)容頻繁變動(dòng)、單次需求不需要長(zhǎng)期復(fù)用、或者對(duì)推理成本不敏感。而權(quán)重蒸餾更適合那些“長(zhǎng)期穩(wěn)定、高頻復(fù)用、對(duì)成本和延遲敏感”的技能。一個(gè)比較務(wù)實(shí)的判斷標(biāo)準(zhǔn)是同一個(gè)技能如果被調(diào)用超過(guò)一定次數(shù)就值得蒸餾成權(quán)重。具體閾值取決于團(tuán)隊(duì)訓(xùn)練成本與推理成本之間的平衡。7.4 數(shù)據(jù)質(zhì)量?jī)?yōu)于模型結(jié)構(gòu)設(shè)計(jì)最后想強(qiáng)調(diào)一點(diǎn)在這個(gè)方案里數(shù)據(jù)質(zhì)量往往比模型結(jié)構(gòu)更決定最終效果。特權(quán)信號(hào)標(biāo)注是否準(zhǔn)確、采樣軌跡是否覆蓋充分、技能劃分是否合理這些因素疊加起來(lái)影響遠(yuǎn)大于某個(gè)網(wǎng)絡(luò)層的設(shè)計(jì)。如果你準(zhǔn)備在業(yè)務(wù)中落地這套思路建議從一個(gè)小而完整的技能開(kāi)始。先選擇一個(gè)邊界清晰、數(shù)據(jù)容易獲取、效果可量化的技能走通“在線采樣 → 特權(quán)信號(hào)標(biāo)注 → 蒸餾訓(xùn)練 → 推理部署”的全流程再逐步擴(kuò)大技能庫(kù)。訓(xùn)練過(guò)程中重點(diǎn)觀察兩條曲線一條是蒸餾損失的收斂情況另一條是技能路由準(zhǔn)確率的變化。后者更關(guān)鍵因?yàn)樗苯臃从沉四P褪欠裾嬲龑W(xué)會(huì)了“在什么狀態(tài)下用什么技能”。