全部產品
Search
文件中心

Platform For AI:模型蒸餾

更新時間:Jun 26, 2026

模型蒸餾將大參數量模型(教師模型)的知識遷移到小參數量模型(學生模型),在保持模型效能的同時顯著降低參數量,解決大模型推理成本高、響應速度慢的問題。PAI Model Gallery 基於阿里雲自研模型蒸餾架構PAI-EasyDistill提供一鍵式模型蒸餾功能,無需編碼即可完成模型蒸餾全流程。

應用情境

適合使用模型蒸餾的情境:

  • 端側/邊緣部署:將大模型壓縮為輕量模型,適配手機、IoT 裝置等資源受限環境。

  • 成本最佳化:當線上業務使用的模型推理成本過高時,可蒸餾出一個更小的模型來降低成本。

  • 推理加速:對於延遲敏感的線上應用,通過蒸餾在保持高精度的同時減少延遲與 GPU 資源消耗,提升服務輸送量。

  • 領域知識繼承:將一個在特定領域(如醫學、法律)表現優異的大模型知識,遷移到一個更具性價比的小模型上,用於該領域的特定任務。

可能不適合或需謹慎評估的情境:

  • 追求100%效能保真:任何效能下降都不可接受的情境。蒸餾始終伴隨一定的效能損失。

  • 任務過於簡單:對於分類、文本匹配等簡單任務,直接訓練一個小模型可能比蒸餾更具成本效益。

  • 缺乏高品質種子資料:蒸餾的效果很大程度上依賴於種子資料的品質。如果種子資料與實際業務情境偏差過大,效果可能不佳。

工作原理

PAI Model Gallery當前提供的模型蒸餾功能採用黑盒蒸餾方式,其本質是產生式資料增強,即利用教師模型產生高品質的標註資料,然後使用這些資料對學生模型進行監督微調(Supervised Fine-Tuning, SFT)。

工作流程如下:

  1. 蒸餾資料構建:

    1. 準備基礎資料:使用公用資料集或自訂資料集。

    2. (可選)資料合成:基於PAI-EasyDistill架構提供資料合成/增強能力,可根據教師模型類型擴充或最佳化資料。對非推理模型可進行指令增廣(擴充和改寫指令產生更多樣的資料)、指令最佳化(最佳化指令表述使其更清晰),對推理模型可進行思維鏈縮寫思維鏈擴寫

    3. 教師模型推理:教師模型對資料進行推理產生學生模型訓練所需的蒸餾資料。

  2. 學生模型訓練:使用前面產生的蒸餾資料集,通過監督微調(Supervised Fine-Tuning, SFT)的方式來訓練學生模型。

快速開始

本節使用PAI提供的公用資料集和預設配置,快速完成一個模型蒸餾任務。

  1. 登入PAI控制台,在左側導覽列選擇快速开始 > Model Gallery

  2. 模型广场頁面,使用篩選功能找到支援蒸餾的模型,如Qwen3-32B

    支持操作篩選項中選擇蒸馏,系統展示所有支援蒸餾的教師模型。image
  3. 單擊模型卡片進入模型詳情頁,在頁面右上方單擊蒸馏按鈕,進入任務建立頁面。如下配置關鍵參數,其他保持預設。

    1. 基础配置:指定一個有許可權訪問的OSS路徑作為模型输出路径,如oss://mybucket.oss-cn-hangzhou-internal.aliyuncs.com/model-distillation/model

      說明

      請確保為每個蒸餾任務建立獨立的輸出目錄,避免模型檔案被覆蓋。OSS Bucket需與PAI服務在同一地區。

    2. 蒸馏数据构建

      • 数据集:選擇公共数据集,並從下拉式清單中選擇Chinese-medical-dialogue-data

      • 蒸馏数据集输出路径:指定一個有許可權訪問的OSS路徑作為,如oss://mybucket.oss-cn-hangzhou-internal.aliyuncs.com/model-distillation/dist-data

      • 计算资源配置资源来源選擇公共资源任务资源保持預設推薦的资源规格

    3. 學生模型訓練

      • 学生模型配置:選擇公共模型,並在下拉式清單中選擇一個較小的模型,如 Qwen3-4B

      • 训练方式:保持預設的LoRA微調。

      • 计算资源配置资源来源選擇公共资源任务资源保持預設推薦的资源规格

  4. 單擊蒸馏,然後在彈出的計費提醒中單擊确定,頁面將自動跳轉至任務詳情的基礎配置頁面,可在此跟蹤任務狀態。

    參考執行時間:小資料集(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>"}
首次進行蒸餾時,建議不開啟資料合成,以建立基準。在熟悉流程後,可針對性地嘗試開啟不同合成選項,並評估其對最終效果的影響。

超參數配置

此處的超參數用於控制教師模型在“資料構建”階段的產生行為。

參數

說明

調優建議

推理參數(應用於教師模型推理)

temperature

控制產生文本的隨機性。範圍[0, 2],預設0.8。

調高(如 > 1.0): 輸出更多樣、更有創意,適用於需要豐富回答風格的情境。
調低( 如 < 0.5): 輸出更確定、更保守,適用於需要事實準確、答案唯一的情境(如數學計算)。
預設值0.8 是在多樣性與準確性之間的平衡,適合大多數通用情境。










max_length

輸入給教師模型的最大Token數(包含instruction)。超出部分將被截斷。預設512。

• 請確保此值大於資料集中最長輸入的長度,否則會導致資訊丟失。
注意:此參數僅影響資料構建階段,與後續學生模型訓練時的seq_length不同。



max_new_tokens

教師模型產生新文本(即output)的最大Token數。預設128。

• 此值應大於您期望教師模型產生答案的平均長度,否則答案會被截斷。
• 對於需要詳細推理(如思維鏈)或長文本產生的任務,建議適當調大此值(如512或1024)。
成本警告:增大此值會顯著增加資料構建階段的計算時間和成本。










功能控制參數(僅開啟指令增廣時顯示)

num_augment_samples

指令增廣時每條資料產生的樣本數量,預設值0。

• 調高(如 > 5):產生更多樣化的指令,但會顯著增加資料量和計算成本。
• 調低(如 1-2):產生較少的增廣樣本,適用於資料量較大或計算資源有限的情況。
• 預設值0表示不進行指令增廣,建議首次使用時保持預設建立基準,後續再針對性調整。










num_in_context_samples

指令增廣時使用的上下文樣本數量,預設值3。

• 調高(如 > 5):產生更符合上下文語義的指令,但可能降低多樣性並增加計算開銷。
• 調低(如 1-2):產生更隨機的指令變體,提升多樣性但可能犧牲相關性。
 預設值3是語義相關性和多樣性之間的平衡點,適合大多數通用情境。










蒸餾資料確認

選擇資料構建完成後,系統如何處理產生的蒸餾資料。

  • 自动确认(推薦):資料構建完成後,系統自動校正資料並通過,直接啟動後續的學生模型訓練。適用於使用公用資料集或對資料品質有信心的情境。

  • 手动确认:資料構建完成後,需要人工審核心數據品質。適用於對資料品質要求極高或首次使用自訂資料集的情境。操作方式如下:

    1. 蒸餾資料構建完成後,在蒸餾工作清單中,任務狀態會變為等待確認蒸餾資料

    2. 單擊操作列的确认蒸馏数据按鈕,系統彈出確認對話方塊。

    3. 在對話方塊中單擊点击查看查看蒸餾資料集的詳細內容。

      • 確認資料品質符合預期後,單擊确认繼續執行學生模型訓練。

      • 如果資料不符合預期,可以單擊取消,任務將停止在當前階段。

學生模型訓練

訓練方式

選擇對學生模型進行監督微調(SFT)的具體方法。

  • LoRA(推薦):參數高效微調方法,在保持較好效果的同時,顯著降低訓練所需的顯存。

  • QLoRA:LoRA的量化版本,進一步降低顯存佔用,適合在資源更受限的環境下訓練。

  • 全參數微調:更新模型的所有參數,理論上效果最好,但需要巨大的計算資源和時間,成本極高。

驗證集配置

選擇在訓練過程中用於評估模型效能的驗證資料集。

  • 不配置:訓練過程中不進行驗證,適用於快速實驗或資料量較小的情境。

  • 蒸馏数据自动拆分(推薦):系統自動從產生的蒸餾資料集中按比例劃分出訓練集和驗證集,預設5%驗證集。

  • 添加验证数据集:指定一個獨立的OSS資料集作為驗證集,適用於有標準驗證集的情境。

超參數配置

此處的超參數用於控制學生模型的SFT訓練過程。

參數

說明

調優建議

learning_rate

學習率,控制模型參數更新的步長。預設5e-5。

• 如果訓練損失(Loss)下降緩慢,可嘗試適當調大學習率。
• 如果Loss劇烈震蕩或不收斂,應調小學習率。



num_train_epochs

訓練輪數,即整個資料集被重複訓練的次數。預設1。

• 對於巨量資料集,1-3個epoch通常足夠。
• 過多的epoch可能導致過擬合。



per_device_train_batch_size

每個GPU裝置單次訓練處理的樣本數。預設1。

• 在顯存允許的情況下,適當增大此值可以加速訓練並可能穩定訓練過程。
• 如果遇到顯存不足(OOM)錯誤,應首先減小此值。



seq_length

輸入給學生模型的最大序列長度(Token數)。預設128。

• 此值應根據您的資料特徵和應用情境設定。較長的文本需要更大的seq_length
• 增大此值會顯著增加顯存消耗。



生產實踐與進階調優

成本最佳化策略

  • 資源來源選擇

    • 測試/小任務:使用公用資源,按需付費,靈活方便。

    • 生產/高優任務:使用資源配額,確保資源穩定性和成本可控。

    • 成本敏感/可容錯任務:嘗試競價資源,以更低價格擷取算力,但需接受任務可能被中斷的風險。

  • 從小資料集開始:在進行大規模蒸餾前,務必使用一小部分資料(如100-1000條)完整運行一次流程,以驗證配置的正確性,避免因配置錯誤導致大規模計算資源的浪費。

  • 最佳化資料集:使用更小但更高品質的種子資料集,可以減少教師模型的推理開銷和學生模型的訓練時間。

  • 選擇QLoRA訓練:QLoRA通過在量化模型上訓練,顯著降低了對顯存的需求,使您可以在更低規格(也更便宜)的GPU上進行訓練。

  • 合理設定運行時間長度:為任務設定一個合理的最大運行時間長度,防止因意外情況導致任務長時間運行,產生不必要的費用。

效果調優指南

  • 資料集品質是關鍵:蒸餾的上限由教師模型決定,但下限由蒸餾資料集的品質決定。確保用於產生蒸餾資料的未經處理資料集覆蓋業務情境、指令清晰、內容多樣。

  • 超參數調優

    • 如果學生模型訓練的loss不下降或發散,應優先降低學習率learning_rate)。

    • 如果遇到顯存不足(OOM)錯誤,應優先減小批次大小per_device_train_batch_size)或序列長度seq_length)。

  • 監控GPU利用率:在任務監控中關注GPU利用率。如果利用率過低,說明GPU資源未被充分利用,可嘗試增大per_device_train_batch_size以提高效率。

效果評估

蒸餾完成後,必須對學生模型的效果進行評估。

  1. 部署模型:在蒸餾任務詳情頁,單擊右上方的部署按鈕,將蒸餾產出的學生模型部署為線上推理服務。

  2. 對比評測:使用PAI的模型評測功能,在同一份評測集上對比教師模型和學生模型的效能指標(如準確率、BLEU等),量化效能損失。

  3. 生產驗證:在正式上線前,進行小流量灰階測試,對比蒸餾前後模型在真實業務情境中的推理速度、資源佔用和業務效果。

常見問題

Q:如何選擇合適的教師模型和學生模型?

  • 教師模型:選擇在您的業務情境中已經驗證過、表現優異的大參數量模型。通常,參數量越大,知識越豐富,蒸餾效果的上限也越高。

  • 學生模型:強烈建議選擇與教師模型同系列、但參數量更小的模型。例如,從 Qwen-30B 蒸餾到 Qwen-8B。這能確保模型架構的相容性,最大化知識遷移的效率。

Q:蒸餾任務大概需要多長時間?

耗時主要取決於資料集大小、模型規模、訓練方式和計算資源。小規模資料集(數千條)和中等模型(7B-14B)的蒸餾任務通常在數十分鐘到幾小時內完成。

Q:任務因逾時中斷,可以恢複嗎?

不可以。如果任務因達到設定的最大運行時間長度而中斷,則任務失敗且不可恢複。您需要分析任務日誌,判斷是資源不足導致運行緩慢還是設定時間過短,然後增加最大運行時間長度或使用更高規格的資源後,重新提交任務。

Q:蒸餾任務失敗,日誌顯示 CUDA out of memory

這是典型的GPU顯存不足錯誤。請按以下步驟排查解決:

  1. 減小批次大小:在学生模型训练配置中,找到超参数配置,將 per_device_train_batch_size 的值減半(例如從2改為1)後重試。

  2. 切換訓練方式:如果減小批次大小無效,返回配置頁面,將訓練方式LoRA全參微調 切換到 QLoRA。QLoRA能極大降低顯存佔用。

  3. 升級GPU規格:如果以上方法仍無法解決,說明模型和資料規模確實需要更高規格的硬體。請在计算资源配置中選擇一款顯存更大的GPU機型。