模型蒸餾將大參數量模型(教師模型)的知識遷移到小參數量模型(學生模型),在保持模型效能的同時顯著降低參數量,解決大模型推理成本高、響應速度慢的問題。PAI Model Gallery 基於阿里雲自研模型蒸餾架構PAI-EasyDistill提供一鍵式模型蒸餾功能,無需編碼即可完成模型蒸餾全流程。
應用情境
適合使用模型蒸餾的情境:
-
端側/邊緣部署:將大模型壓縮為輕量模型,適配手機、IoT 裝置等資源受限環境。
-
成本最佳化:當線上業務使用的模型推理成本過高時,可蒸餾出一個更小的模型來降低成本。
-
推理加速:對於延遲敏感的線上應用,通過蒸餾在保持高精度的同時減少延遲與 GPU 資源消耗,提升服務輸送量。
-
領域知識繼承:將一個在特定領域(如醫學、法律)表現優異的大模型知識,遷移到一個更具性價比的小模型上,用於該領域的特定任務。
可能不適合或需謹慎評估的情境:
-
追求100%效能保真:任何效能下降都不可接受的情境。蒸餾始終伴隨一定的效能損失。
-
任務過於簡單:對於分類、文本匹配等簡單任務,直接訓練一個小模型可能比蒸餾更具成本效益。
-
缺乏高品質種子資料:蒸餾的效果很大程度上依賴於種子資料的品質。如果種子資料與實際業務情境偏差過大,效果可能不佳。
工作原理
PAI Model Gallery當前提供的模型蒸餾功能採用黑盒蒸餾方式,其本質是產生式資料增強,即利用教師模型產生高品質的標註資料,然後使用這些資料對學生模型進行監督微調(Supervised Fine-Tuning, SFT)。
工作流程如下:
-
蒸餾資料構建:
-
準備基礎資料:使用公用資料集或自訂資料集。
-
(可選)資料合成:基於PAI-EasyDistill架構提供資料合成/增強能力,可根據教師模型類型擴充或最佳化資料。對非推理模型可進行指令增廣(擴充和改寫指令產生更多樣的資料)、指令最佳化(最佳化指令表述使其更清晰),對推理模型可進行思維鏈縮寫、思維鏈擴寫。
-
教師模型推理:教師模型對資料進行推理產生學生模型訓練所需的蒸餾資料。
-
-
學生模型訓練:使用前面產生的蒸餾資料集,通過監督微調(Supervised Fine-Tuning, SFT)的方式來訓練學生模型。
快速開始
本節使用PAI提供的公用資料集和預設配置,快速完成一個模型蒸餾任務。
-
登入PAI控制台,在左側導覽列選擇快速开始 > Model Gallery。
-
在模型广场頁面,使用篩選功能找到支援蒸餾的模型,如
Qwen3-32B。在支持操作篩選項中選擇蒸馏,系統展示所有支援蒸餾的教師模型。

-
單擊模型卡片進入模型詳情頁,在頁面右上方單擊蒸馏按鈕,進入任務建立頁面。如下配置關鍵參數,其他保持預設。
-
基础配置:指定一個有許可權訪問的OSS路徑作為模型输出路径,如
oss://mybucket.oss-cn-hangzhou-internal.aliyuncs.com/model-distillation/model。說明請確保為每個蒸餾任務建立獨立的輸出目錄,避免模型檔案被覆蓋。OSS Bucket需與PAI服務在同一地區。
-
蒸馏数据构建:
-
数据集:選擇公共数据集,並從下拉式清單中選擇
Chinese-medical-dialogue-data。 -
蒸馏数据集输出路径:指定一個有許可權訪問的OSS路徑作為,如
oss://mybucket.oss-cn-hangzhou-internal.aliyuncs.com/model-distillation/dist-data。 -
计算资源配置:资源来源選擇公共资源,任务资源保持預設推薦的资源规格。
-
-
學生模型訓練:
-
学生模型配置:選擇公共模型,並在下拉式清單中選擇一個較小的模型,如
Qwen3-4B。 -
训练方式:保持預設的LoRA微調。
-
计算资源配置:资源来源選擇公共资源,任务资源保持預設推薦的资源规格。
-
-
-
單擊蒸馏,然後在彈出的計費提醒中單擊确定,頁面將自動跳轉至任務詳情的基礎配置頁面,可在此跟蹤任務狀態。
參考執行時間:小資料集(100-1000條)約20-40分鐘。
使用限制
-
模型限制:
-
教師模型必須從 Model Gallery 中選擇支援蒸餾的模型。具體列表以控制台為準。
-
學生模型支援Model Gallery公用模型和自訂模型(自訂模型當前僅支援在Model Gallery中微調後的LLM,並請確保該模型參數量小於教師模型,保證蒸餾任務有意義)。
-
-
蒸餾方式: 當前僅支援黑盒蒸餾(基於SFT)。
-
資料集: 支援公用蒸餾資料集和自訂資料集。資料必須為JSON格式,必須包含
instruction欄位(問題列),無需包含output欄位(輸出資料行)。[ { "instruction": "中國的首都是哪裡?" }, { "instruction": "請解釋一下什麼是人工智慧。" } ] -
學生模型訓練方式:僅支援SFT(監督微調),包括LoRA、QLoRA、全參微調。
配置詳解
蒸餾資料構建
資料集配置
資料合成(可選功能)可對未經處理資料集進行變換,以增強資料的多樣性和品質。根據教師模型是否為推理模型選擇資料增強策略。
-
指令数据合成(適用於通用指令模型):
-
指令增广:對原始指令進行擴充和改寫,產生風格更多樣的指令。
輸入樣本: {"instruction": "給我做一份兩天的杭州旅遊攻略。"} 輸出樣本: {"instruction": "給我做一份三天的北京旅遊攻略。"} {"instruction": "我想去上海玩,給我推薦一下旅遊的行程。"} -
指令优化:最佳化指令的表述方式,使其更清晰、更易於模型理解。
輸入樣本: {"instruction": "給我做一份兩天的杭州旅遊攻略。"} 輸出樣本: {"instruction": "請為我制定一份為期兩天的杭州旅遊攻略,內容應包括行程安排、美食推薦、住宿建議、最佳旅遊時間等。"}
-
-
思维链数据合成(適用於推理模型):
-
思維鏈擴寫:為原始問答對補充詳細的推理步驟(Chain of Thought),增強學生模型的推理能力。
輸入樣本: {"instruction": "小明有3個蘋果,吃了1個,還剩幾個蘋果", "output": "<think>短思維鏈</think> <output>小明還剩2個蘋果</output>"} 輸出樣本: {"instruction": "小明有3個蘋果,吃了1個,還剩幾個蘋果", "output": "<think>長思維鏈</think> <output>小明還剩2個蘋果</output>"} -
思維鏈縮寫:簡化冗長的思維鏈過程,提升推理效率。
輸入樣本: {"instruction": "小明有3個蘋果,吃了1個,還剩幾個蘋果", "output": "<think>長思維鏈</think> <output>小明還剩2個蘋果</output>"} 輸出樣本: {"instruction": "小明有3個蘋果,吃了1個,還剩幾個蘋果", "output": "<think>短思維鏈</think> <output>小明還剩2個蘋果</output>"}
-
首次進行蒸餾時,建議不開啟資料合成,以建立基準。在熟悉流程後,可針對性地嘗試開啟不同合成選項,並評估其對最終效果的影響。
超參數配置
此處的超參數用於控制教師模型在“資料構建”階段的產生行為。
|
參數 |
說明 |
調優建議 |
|
推理參數(應用於教師模型推理) |
||
|
|
控制產生文本的隨機性。範圍[0, 2],預設0.8。 |
• 調高(如 > 1.0): 輸出更多樣、更有創意,適用於需要豐富回答風格的情境。 |
|
|
輸入給教師模型的最大Token數(包含 |
• 請確保此值大於資料集中最長輸入的長度,否則會導致資訊丟失。 |
|
|
教師模型產生新文本(即 |
• 此值應大於您期望教師模型產生答案的平均長度,否則答案會被截斷。 |
|
功能控制參數(僅開啟指令增廣時顯示) |
||
|
|
指令增廣時每條資料產生的樣本數量,預設值0。 |
• 調高(如 > 5):產生更多樣化的指令,但會顯著增加資料量和計算成本。 |
|
|
指令增廣時使用的上下文樣本數量,預設值3。 |
• 調高(如 > 5):產生更符合上下文語義的指令,但可能降低多樣性並增加計算開銷。 |
蒸餾資料確認
選擇資料構建完成後,系統如何處理產生的蒸餾資料。
-
自动确认(推薦):資料構建完成後,系統自動校正資料並通過,直接啟動後續的學生模型訓練。適用於使用公用資料集或對資料品質有信心的情境。
-
手动确认:資料構建完成後,需要人工審核心數據品質。適用於對資料品質要求極高或首次使用自訂資料集的情境。操作方式如下:
-
蒸餾資料構建完成後,在蒸餾工作清單中,任務狀態會變為等待確認蒸餾資料。
-
單擊操作列的确认蒸馏数据按鈕,系統彈出確認對話方塊。
-
在對話方塊中單擊点击查看查看蒸餾資料集的詳細內容。
-
確認資料品質符合預期後,單擊确认繼續執行學生模型訓練。
-
如果資料不符合預期,可以單擊取消,任務將停止在當前階段。
-
-
學生模型訓練
訓練方式
選擇對學生模型進行監督微調(SFT)的具體方法。
-
LoRA(推薦):參數高效微調方法,在保持較好效果的同時,顯著降低訓練所需的顯存。
-
QLoRA:LoRA的量化版本,進一步降低顯存佔用,適合在資源更受限的環境下訓練。
-
全參數微調:更新模型的所有參數,理論上效果最好,但需要巨大的計算資源和時間,成本極高。
驗證集配置
選擇在訓練過程中用於評估模型效能的驗證資料集。
-
不配置:訓練過程中不進行驗證,適用於快速實驗或資料量較小的情境。
-
蒸馏数据自动拆分(推薦):系統自動從產生的蒸餾資料集中按比例劃分出訓練集和驗證集,預設5%驗證集。
-
添加验证数据集:指定一個獨立的OSS資料集作為驗證集,適用於有標準驗證集的情境。
超參數配置
此處的超參數用於控制學生模型的SFT訓練過程。
|
參數 |
說明 |
調優建議 |
|
|
學習率,控制模型參數更新的步長。預設5e-5。 |
• 如果訓練損失(Loss)下降緩慢,可嘗試適當調大學習率。 |
|
|
訓練輪數,即整個資料集被重複訓練的次數。預設1。 |
• 對於巨量資料集,1-3個epoch通常足夠。 |
|
|
每個GPU裝置單次訓練處理的樣本數。預設1。 |
• 在顯存允許的情況下,適當增大此值可以加速訓練並可能穩定訓練過程。 |
|
|
輸入給學生模型的最大序列長度(Token數)。預設128。 |
• 此值應根據您的資料特徵和應用情境設定。較長的文本需要更大的 |
生產實踐與進階調優
成本最佳化策略
-
資源來源選擇:
-
測試/小任務:使用公用資源,按需付費,靈活方便。
-
生產/高優任務:使用資源配額,確保資源穩定性和成本可控。
-
成本敏感/可容錯任務:嘗試競價資源,以更低價格擷取算力,但需接受任務可能被中斷的風險。
-
-
從小資料集開始:在進行大規模蒸餾前,務必使用一小部分資料(如100-1000條)完整運行一次流程,以驗證配置的正確性,避免因配置錯誤導致大規模計算資源的浪費。
-
最佳化資料集:使用更小但更高品質的種子資料集,可以減少教師模型的推理開銷和學生模型的訓練時間。
-
選擇QLoRA訓練:QLoRA通過在量化模型上訓練,顯著降低了對顯存的需求,使您可以在更低規格(也更便宜)的GPU上進行訓練。
-
合理設定運行時間長度:為任務設定一個合理的最大運行時間長度,防止因意外情況導致任務長時間運行,產生不必要的費用。
效果調優指南
-
資料集品質是關鍵:蒸餾的上限由教師模型決定,但下限由蒸餾資料集的品質決定。確保用於產生蒸餾資料的未經處理資料集覆蓋業務情境、指令清晰、內容多樣。
-
超參數調優:
-
如果學生模型訓練的loss不下降或發散,應優先降低學習率(
learning_rate)。 -
如果遇到顯存不足(OOM)錯誤,應優先減小批次大小(
per_device_train_batch_size)或序列長度(seq_length)。
-
-
監控GPU利用率:在任務監控中關注GPU利用率。如果利用率過低,說明GPU資源未被充分利用,可嘗試增大
per_device_train_batch_size以提高效率。
效果評估
蒸餾完成後,必須對學生模型的效果進行評估。
-
部署模型:在蒸餾任務詳情頁,單擊右上方的部署按鈕,將蒸餾產出的學生模型部署為線上推理服務。
-
對比評測:使用PAI的模型評測功能,在同一份評測集上對比教師模型和學生模型的效能指標(如準確率、BLEU等),量化效能損失。
-
生產驗證:在正式上線前,進行小流量灰階測試,對比蒸餾前後模型在真實業務情境中的推理速度、資源佔用和業務效果。
常見問題
Q:如何選擇合適的教師模型和學生模型?
-
教師模型:選擇在您的業務情境中已經驗證過、表現優異的大參數量模型。通常,參數量越大,知識越豐富,蒸餾效果的上限也越高。
-
學生模型:強烈建議選擇與教師模型同系列、但參數量更小的模型。例如,從
Qwen-30B蒸餾到Qwen-8B。這能確保模型架構的相容性,最大化知識遷移的效率。
Q:蒸餾任務大概需要多長時間?
耗時主要取決於資料集大小、模型規模、訓練方式和計算資源。小規模資料集(數千條)和中等模型(7B-14B)的蒸餾任務通常在數十分鐘到幾小時內完成。
Q:任務因逾時中斷,可以恢複嗎?
不可以。如果任務因達到設定的最大運行時間長度而中斷,則任務失敗且不可恢複。您需要分析任務日誌,判斷是資源不足導致運行緩慢還是設定時間過短,然後增加最大運行時間長度或使用更高規格的資源後,重新提交任務。
Q:蒸餾任務失敗,日誌顯示 CUDA out of memory?
這是典型的GPU顯存不足錯誤。請按以下步驟排查解決:
-
減小批次大小:在学生模型训练配置中,找到超参数配置,將
per_device_train_batch_size的值減半(例如從2改為1)後重試。 -
切換訓練方式:如果減小批次大小無效,返回配置頁面,將訓練方式 從
LoRA或全參微調切換到QLoRA。QLoRA能極大降低顯存佔用。 -
升級GPU規格:如果以上方法仍無法解決,說明模型和資料規模確實需要更高規格的硬體。請在计算资源配置中選擇一款顯存更大的GPU機型。