用於小型模型蒸餾的合成資料
如何為不足 10 億參數的設備上模型生成和過濾合成訓練資料:教師模型選擇、複雜度評分、去重和格式規則。
為行動 NPU 部署建立 5 億參數模型,與建立用於雲端推論的 700 億參數模型有本質上的不同。模型小了 140 倍。它對嘈雜或不對齊的訓練資料的容忍度幾乎為零。而合成資料——它在微調資料集中的佔比日益增加——必須以大多數管線忽視的限制條件生成。
合成資料的標準方法是:使用大型教師模型生成樣本,用這些樣本訓練較小的學生。當學生是 70 億至 130 億參數時,這個方法效果尚可。當學生是 5 億至 10 億參數時,它就失效了,因為教師生成的文本複雜度在根本上超出了學生的複製能力。
以下是如何以不同方式做到這一點。
為何標準合成資料對不足 10 億參數的模型失效
一個 700 億參數的教師模型生成合成客服回應時,可能產生一個 400 字的答案,包含條件邏輯、共情表達、多步故障排除和個人化結語。這是 130 億參數學生模型的優質訓練資料。
對於 5 億參數模型呢?這是模型無法學習的模式的訓練資料。5 億參數模型沒有足夠的參數容量同時編碼條件共情、多步推理和領域知識。它會學習每個方面的片段,但哪個都執行不好。
結果:一個生成開頭連貫但中途退化的回應的模型。或者一個處理最常見案例很好,但在邊緣案例上災難性失敗的模型。或者一個生成語法正確但實際上沒有回答問題的文本的模型。
這些不是模型問題,而是資料問題。
教師模型選擇
您的教師模型定義了合成資料的品質上限。但越大並不總是越好。
對於不足 10 億參數的目標: 使用 700 億以上參數的教師以獲得生成品質,但添加一個 70 億參數模型作為「複雜度過濾器」。如果 70 億參數模型無法以 80% 以上的相似度複製教師的輸出,則該樣本對 5 億參數學生來說太複雜。這種雙模型過濾方法能捕捉統計指標遺漏的複雜度問題。
對於 30 億至 80 億參數目標: 700 億參數教師是理想的。容量差距較小(10 倍至 25 倍,而非 140 倍),因此教師的輸出更易於學習。您可以使用更廣泛、更複雜的樣本。
溫度和採樣。 對不足 10 億參數的目標使用溫度 0.3 至 0.5 生成。較高的溫度產生更多樣化但也更複雜的文本。在 5 億參數規模,您想要一致性而非多樣性。將溫度多樣性留給較大的學生模型。
真正重要的過濾策略
生成合成資料是容易的部分。過濾才是決定結果的地方。
長度分布匹配。 測量您的生產輸入分布。如果用戶將向您的設備上模型發送 50 至 200 個 token 的輸入,在該範圍內生成合成訓練輸入。如果您的生產輸出是 20 至 100 個 token,在該範圍內生成合成輸出。長度不匹配是設備上模型失敗最常見的原因。
複雜度評分。 透過學生模型(或相似大小的模型)運行每個合成樣本,測量困惑度。高困惑度樣本超出了模型的能力。設置困惑度閾值——通常是已知良好驗證集的第 75 百分位——並丟棄所有超過該閾值的樣本。
領域相關性評分。 並非教師生成的每個樣本都在主題上。即使有謹慎的提示,10 至 15% 的合成樣本也會偏離領域。使用嵌入相似度與精選的黃金標準樣本集比較,評分領域相關性。丟棄最低的 20%。
大規模去重。 來自大型語言模型的合成資料比人工生成的資料更具重複性。教師有偏好模式——它預設使用的常見措辭和結構。在 5 億參數規模,近似重複項特別有害,因為它們在某些模式上的過度代表以犧牲廣度為代價。使用 MinHash 或 SimHash 去重,相似度閾值設為 0.85。
格式一致性強制執行。 如果您的生產模型輸出 JSON,每個訓練樣本都必須輸出有效的 JSON。如果它輸出分類標籤,每個樣本都必須使用精確的標籤詞彙。在不足 10 億參數規模下,格式變體零容忍。一個不一致的樣本可能會引入影響 5% 生產輸出的失敗模式。
數字說話
對於針對特定企業任務的 5 億至 10 億參數模型:
| 指標 | 樸素方法 | 優化方法 |
|---|---|---|
| 生成的合成樣本 | 100,000 | 100,000 |
| 長度過濾後 | 100,000 | 65,000 |
| 複雜度過濾後 | 100,000 | 40,000 |
| 領域相關性後 | 100,000 | 32,000 |
| 去重後 | 85,000 | 22,000 |
| 格式驗證後 | 80,000 | 20,000 |
| 最終訓練集 | 80,000 | 20,000 |
| 設備上準確率 | 61 至 68% | 84 至 91% |
優化方法使用少 75% 的訓練樣本,卻實現了高出 20 至 30 個百分點的準確率。這在我們觀察的多個企業領域中是一致的。在不足 10 億參數規模下,品質優於數量不是老生常談——而是整個策略。
迭代循環
針對小型模型蒸餾的合成資料生成不是一次性的過程,而是一個循環:
- 使用教師模型生成合成資料
- 使用上述標準過濾
- 在過濾後的資料集上微調學生模型
- 在目標硬體上部署(真實設備,而非模擬器)
- 測量具有生產代表性的指標
- 分析失敗案例
- 為失敗模式生成針對性合成資料
- 回到步驟 2
大多數團隊執行步驟 1 至 3 一次就發布。在不足 10 億參數模型上實現 90% 以上準確率的團隊,會進行 3 至 5 次這個循環的迭代,每次迭代針對設備上測試揭示的特定失敗模式。
企業資料與本地部署要求
大多數合成資料指南忽視了一個關鍵限制:您合成資料的源知識是企業專有的。
如果您在為行動端建立臨床分診模型,教師模型需要您機構特有的醫療知識。如果您在為律師事務所的行動應用程式建立合約分析模型,教師需要該事務所合約模式的樣本。
這意味著要麼在企業資料上微調教師(需要本地資料準備),要麼在生成期間使用企業文件的 RAG(需要本地基礎設施)。
無論哪種方式,合成資料生成管線都必須在本地運行。您的 700 GB 臨床筆記或法律合約不能上傳到雲端 API 來為設備上模型生成合成訓練資料。