被 DeepSeek 帶火的蒸餾到底是啥 精華
近期,DeepSeek 的發布在開源社區引起了廣泛關注。成功再次將人們的目光聚焦到了模型蒸餾技術上來。那么,究竟什么是模型蒸餾?為什么它能幫助我們構建如此高效的模型?讓我們一起深入探討這個話題。
LLM Distillation 將大型生成模型定位為 “teacher”,將較小的模型定位為 “student”。student 模型可以是簡單的模型(如 logistic regression)或基礎模型(如 BERT)。在最基本的 distillation 版本中,數據科學家從未標記的數據開始,并要求 對其進行LLM標記。然后,數據科學家使用合成標記的數據來訓練“student”模型,該模型將反映“teacher”模型在原始數據集定義的任務上的表現。
數據科學家還可以使用蒸餾來微調較小的生成模型。在這種情況下,他們將向 “teacher” 模型提示提供并捕獲響應作為 “student” 的訓練目標。
為什么要使用LLM蒸餾法?
LLMs與 GPT-4 一樣,Gemini 和 Llama 展示了令人難以置信的能力,但也存在明顯的缺點:
? 成本。 數十億個參數LLMs的托管成本很高,通過 API 訪問的成本更高。
? 速度。 由于所需的計算數量,full-size LLMs 可能會很慢。
? 基礎設施難題。托管最大可用LLMs版本的私有版本意味著需要整理和協調大量資源。
通過提煉 LLM,數據科學團隊可以構建更易于托管、運行成本更低且響應速度更快的衍生模型。
蒸餾的LLM缺點是什么?
雖然蒸餾是一個強大的捷徑,LLM但它并不是訓練新模型的萬靈藥。該技術面臨四個主要挑戰:
? 學生受到老師的限制。 在最簡單的蒸餾版本中,“學生”模型將反映“老師”模型的性能。面對專業任務的廣義通常LLMs達不到生產級的準確性。
? 您仍然需要大量未標記的數據。 這將LLM為您創建標簽,但由于多種原因,源數據可能供不應求。
? 您可能不被允許使用未標記的數據。 對于被限制使用客戶數據的組織,這可能會帶來真正的障礙。
? 您可以使用的內容LLMs可能會受到限制。雖然對于分類任務來說不是問題,但許多 LLM API 的服務條款禁止用戶使用其LLMs輸出來訓練可能具有競爭力的生成模型。
知識蒸餾的基本原理
知識蒸餾本質上是一種模型壓縮的方法,其核心思想是利用一個大模型(教師模型)來指導小模型(學生模型)的訓練。在這個過程中,小模型不僅要學習訓練數據中的硬標簽,還要學習大模型輸出的軟標簽(概率分布)。這個過程可以用以下數學公式來表示:
其中:
這里:
? 是溫度參數,用于控制軟標簽的"軟"程度
? 和 分別是教師模型和學生模型的logits
? 是平衡軟標簽和硬標簽的權重
? 是真實標簽
主流的蒸餾方法及其特點
1. 響應蒸餾 (Response Distillation)
這是最基礎的蒸餾方法,主要用于處理分類任務。在這種方法中,我們直接使用教師模型的輸出作為學生模型的訓練目標。以BERT模型家族為例,DistilBERT就是使用這種方法,將原始BERT模型壓縮到原來大小的40%,同時保持了97%的性能。
具體實現步驟:
- 使用教師模型對大量未標注數據進行預測
- 收集教師模型的輸出概率分布
- 訓練學生模型來模擬這些概率分布
適用場景:
- 分類任務
- 序列標注任務
- 文本匹配任務
2. 特征蒸餾 (Feature Distillation)
特征蒸餾不僅關注模型的最終輸出,還會學習教師模型中間層的特征表示。這種方法的數學表達式為:
TinyBERT就是采用這種方法的典型代表,它不僅學習BERT的輸出層,還學習了注意力矩陣和隱層狀態。
3. 逐步蒸餾 (Progressive Distillation)
逐步蒸餾是一種較新的方法,它將蒸餾過程分解為多個步驟。每個步驟都專注于特定的任務或能力的轉移。這種方法的優勢在于可以更好地保持復雜任務的性能。
以最近的MinLLM為例,它采用了以下策略:
- 首先學習教師模型的基礎語言理解能力
- 然后逐步學習更復雜的任務相關能力
- 最后微調特定任務的性能
蒸餾方法的詳細對比
蒸餾方法 | 優勢 | 劣勢 | 適用場景 | 典型代表 |
響應蒸餾 | 實現簡單,計算開銷小 | 可能損失細粒度特征 | 基礎NLP任務 | DistilBERT |
特征蒸餾 | 保留更多原始特征,性能更好 | 訓練復雜,計算開銷大 | 復雜NLP任務 | TinyBERT |
逐步蒸餾 | 可保持復雜能力,更靈活 | 訓練時間長,需要精心設計 | 大規模語言模型 | MiniLLM |
實踐中的關鍵考慮因素
數據選擇
數據質量和數量對蒸餾效果有著決定性影響。在實踐中,我們需要考慮:
- 數據的分布是否覆蓋目標任務空間
- 數據的質量如何保證
- 數據量的大小如何確定
架構設計
學生模型的架構設計需要權衡多個因素:
- 模型容量:需要足夠大以捕獲必要的知識,但又要滿足資源約束
- 層次映射:如何將教師模型的層映射到學生模型
- 注意力機制:是否需要特殊的注意力結構
訓練策略
有效的訓練策略通常包括:
- 使用動態溫度參數
- 采用漸進式訓練方案
- 結合多任務學習
技術發展趨勢
當前,知識蒸餾技術正在向以下幾個方向發展:
- 多教師蒸餾:利用多個專家模型的知識
- 自蒸餾:模型作為自己的教師
- 在線蒸餾:邊訓練邊蒸餾
這些新方向都在嘗試解決現有蒸餾方法的局限性,提供更有效的知識轉移機制。
本文轉載自 ??芝士AI吃魚??,作者: 愛滑冰的咸魚
