
如何合法蒸餾開源模型:逐步指南
以正確方式進行模型蒸餾的實用指南:使用具有寬鬆授權的開源教師模型、您自己的領域資料,以及通往模型所有權的清晰法律路徑。
Anthropic/DeepSeek 爭議展示了當蒸餾出錯時會發生什麼:24,000 個帳戶被封禁、國際頭條新聞和潛在的法律行動。但這個技術本身是合理的——問題在於來源,而不是方法。
本指南從頭到尾說明合法的模型蒸餾。具有寬鬆授權的開源教師模型。您自己的領域資料。從訓練到部署的清晰路徑,具有完整的模型所有權和零法律風險。
如果您一直在關注蒸餾辯論並在想「一定有正確的做法」——確實有。以下是如何做到。
合法與非法蒸餾:明確的界線
這個區別比標題所暗示的更簡單。
合法蒸餾: 使用具有寬鬆授權的開源模型作為教師。授權賦予您創建衍生作品的權利,包括在教師輸出上訓練更小的模型。您在行使模型創建者明確授予您的權利。
非法蒸餾(或違反服務條款): 使用封閉 API 模型(GPT-4、Claude、Gemini)作為教師,違反其服務條款。法律形勢仍在演變,但合約禁止是明確的。
測試方法: 在使用任何模型作為教師之前,閱讀其授權。如果它允許衍生作品和商業使用,您就是清白的。如果它禁止使用輸出進行競爭性模型訓練,則不要使用。
步驟 1:選擇您的開源教師模型
您的教師模型決定了學生模型的品質上限。謹慎選擇。
授權比較
| 模型 | 授權 | 是否允許蒸餾 | 商業使用 | 是否需要署名 |
|---|---|---|---|---|
| Llama 3(8B-405B) | Meta Community | 是 | 是(月活躍使用者低於 7 億) | 是 |
| Qwen 2.5(7B-72B) | Apache 2.0 | 是 | 是 | 是 |
| Mistral(7B-8x22B) | Apache 2.0 | 是 | 是 | 是 |
| DeepSeek-R1(開放權重) | MIT | 是 | 是 | 最低限度 |
| Gemma 2(2B-27B) | Gemma 條款 | 是 | 是 | 是 |
| Phi-3(3.8B-14B) | MIT | 是 | 是 | 最低限度 |
所有這些模型都明確允許您創建衍生作品,包括蒸餾模型。法律路徑是清晰的。
選擇哪個教師模型
對於一般推理和指令遵循: Llama 3 70B 或 Qwen 2.5 72B。兩者都是強大的通用模型,在各個領域產生高品質的訓練資料。
對於程式碼和技術任務: DeepSeek-R1 或 Qwen 2.5 Coder。在結構化輸出和程式碼生成方面表現強勁。
對於多語言任務: Qwen 2.5 在各種語言中表現出色。Llama 3 以英語為主,但在主要語言上也有能力。
對於受限環境: 如果您無法運行 70B 模型,對於您用自己資料補充的特定領域任務,Llama 3 8B 或 Qwen 2.5 14B 是不錯的教師模型。
2026 年最佳微調模型取決於您的具體使用案例,但上表中的任何模型都為您提供了法律上乾淨的起點。
步驟 2:設置教師模型
您需要在可以大規模生成訓練資料的環境中運行您的教師模型。三個選項:
選項 A:本地部署
使用 Ollama、vLLM 或 llama.cpp 在您自己的硬體上運行教師模型。這讓您完全控制且沒有使用限制。
70B 模型的要求:
- 2 個 NVIDIA A100(80GB)或同等產品
- 超過 128GB 系統 RAM
- 生成速度預計每秒 10 至 30 個標記
7B 至 14B 教師模型的要求:
- 單個 NVIDIA RTX 4090 或 Apple M2 Ultra
- 超過 32GB RAM
- 預計每秒 30 至 80 個標記
選項 B:雲端 GPU 租用
使用 RunPod、Lambda 或類似的 GPU 雲端提供商啟動臨時推理實例。對於批量生成訓練資料來說成本效益高——您只需支付所需時間的費用。
典型成本:A100 實例每小時 2 至 5 美元。您可以在幾個小時內生成數千個訓練示例。
選項 C:開源 API 提供商
Together AI、Fireworks 或 Groq 等服務提供對開源模型的 API 存取。由於您在其開源授權下使用這些模型(而不是專有 API),從這些端點生成訓練資料在法律上等同於在本地運行模型。
檢查提供商的條款,確認他們沒有在模型的開源授權之上添加限制。
步驟 3:從您的領域生成合成訓練資料
這是蒸餾與微調交匯的地方——也是真正價值被創造的地方。
您不是從教師模型蒸餾通用能力,而是使用教師模型處理您的特定領域內容。結果是將教師的語言能力與您的專有知識相結合的訓練資料。
流程
1. 準備您的源材料。 收集您的特定領域內容:
- 客戶支援日誌和已解決的工單
- 產品文件和知識庫文章
- 銷售電話記錄和常見問題
- 行業特定文件和監管文本
- 您業務特有的任何結構化資料
2. 設計您的提示。 創建提示模板,要求教師模型使用您的源材料作為上下文執行您的目標任務。
例如,如果您正在建立支援分類模型:
Given this support ticket:
"{ticket_text}"
Classify into one of these categories: {your_categories}
Respond with only the category name.
3. 大規模生成。 通過教師模型運行您的源材料。對於每個輸入,收集輸出。這創建了您的訓練資料集。
目標資料集大小:
- 最低可行: 500 個示例(對於定義明確的任務出奇有效)
- 穩固基線: 1,000 至 2,000 個示例
- 生產品質: 2,000 至 5,000 個示例
- 複雜任務: 5,000 至 10,000 個示例
更多資料並非總是更好。精心策劃的 500 個高品質示例的資料集通常優於 5,000 個噪雜的示例。
4. 添加您的專有信號。 教師生成有能力的輸出。您的領域專業知識使它們卓越。審查生成的資料並:
- 修正任何不符合您品質標準的輸出
- 添加教師做錯的示例(邊緣案例、特定領域的細微差別)
- 確保所有示例的輸出格式一致
- 驗證領域術語使用正確
這個步驟是通用蒸餾與特定領域微調之間的區別。教師提供語言能力。您的資料和審查提供領域專業知識。
步驟 4:準備資料集
微調的訓練資料集通常使用 JSONL 格式——每行一個 JSON 物件,每個物件包含對話結構。
格式
{"messages": [{"role": "system", "content": "You are a support classifier for Acme Corp."}, {"role": "user", "content": "My invoice is wrong"}, {"role": "assistant", "content": "billing_issue"}]}
{"messages": [{"role": "system", "content": "You are a support classifier for Acme Corp."}, {"role": "user", "content": "Can't log in"}, {"role": "assistant", "content": "account_access"}]}
品質過濾
訓練前,清理您的資料集:
- 刪除重複項。 幾乎相同的示例增加噪音而不增加價值。
- 刪除矛盾。 如果相同的輸入映射到不同的輸出,解決衝突。
- 驗證格式一致性。 每個示例應遵循相同的輸出結構。
- 檢查幻覺。 審查教師輸出,核對源材料中的事實錯誤。
- 平衡類別。 如果您正在訓練分類器,確保各類別的合理代表性。
有 1,000 個乾淨示例的資料集將優於有 5,000 個混亂示例的資料集。品質勝於數量,每次都是如此。
不想管理 JSONL 文件和訓練配置?Ertas 以視覺化方式處理資料集準備。加入優先預約 →
步驟 5:微調學生模型
現在您在準備好的資料集上訓練較小的學生模型。這是蒸餾的知識被壓縮到可部署模型的地方。
選擇學生模型
您的學生應該比您的教師小——這就是蒸餾的意義。常見選擇:
- 教師 70B → 學生 7B-14B — 大多數生產部署的最佳選擇
- 教師 14B → 學生 3B-7B — 用於邊緣部署或資源受限環境
- 同系列優先 — 將 Llama 70B 蒸餾到 Llama 7B 比跨系列蒸餾效果更好
訓練方法:LoRA/QLoRA
即使是 7B 模型的全 量微調也需要大量 GPU 記憶體。LoRA(低秩適應)和 QLoRA(量化 LoRA)使這成為可能:
- LoRA 在凍結的基礎權重之上添加小型可訓練適配器(約 50 至 200 MB)
- QLoRA 將 LoRA 與 4 位元量化相結合,進一步降低記憶體要求
- 7B 模型可以在具有 24GB VRAM 的單個 GPU 上使用 QLoRA 進行微調
關鍵訓練參數:
- 學習率:1e-4 至 2e-4
- 批次大小:4 至 8(帶梯度累積)
- 訓練輪數:2 至 4(資料更多 = 需要更少的訓練輪數)
- LoRA rank:16 至 64(越高 = 容量越大,記憶體消耗越多)
使用 Ertas
如果您寧願完全跳過配置,Ertas 以視覺化方式處理此步驟:
- 上傳您的 JSONL 資料集(或從 Hugging Face 匯入)
- 選擇您的基礎模型
- 通過 UI 調整訓練參數(或使用推薦的預設值)
- 開始訓練 ——實時追蹤進度
- 如果運行多個實驗,並排比較結果
無需 Python。無需 YAML。無需 CLI。平台處理基礎設施並返回您的微調模型。
步驟 6:評估學生模型與教師模型
部署前,驗證您的學生模型滿足您的品質標準。
自動化評估
在保留的測試集(訓練中未使用的示例)上運行教師和學生模型。比較:
- 準確率 — 學生是否產生正確的輸出?
- 格式合規性 — 學生是否遵循預期的輸出結構?
- 一致性 — 學生對相似輸入是否給出相同的答案?
- 延遲 — 學生的響應速度如何?(應該比教師更快)
人工評估
對於主觀任務(寫作、對話、摘要),自動化指標並不能說明全部情況。進行盲評:
- 對相同輸入生成 50 至 100 個教師和學生的輸出
- 並排展示輸出,不帶標籤
- 讓領域專家評估品質、準確率和適當性
- 追蹤學生的不足之處——這些差距指導您下一次訓練迭代
目標基準
對於具有精心策劃的訓練資料的特定領域任務,您應該期望:
- 分類和提取任務準確率達到 90 至 95%
- 生成任務在教師品質的 5 至 10% 以內
- 推理速度比教師快 3 至 10 倍(視大小比例而定)
- 在窄而定義明確的任務上匹配或超越提示工程的 GPT-4
如果您的學生達不到目標,修復方法通常是更好的訓練資料——而不是更大的學生模型。返回步驟 3,在學生表現不佳的領域添加更多高品質示例。
步驟 7:匯出到 GGUF 並部署
一旦您的學生模型通過評估,將其匯出用於生產部署。
GGUF 匯出
GGUF 是本地模型部署的標準格式。它相容於:
- Ollama — 最簡單的部署,單個命令即可運行
- llama.cpp — 輕量級,在 CPU 和 GPU 上運行
- LM Studio — 帶 UI 的桌面應用程式
- vLLM — 高吞吐量生產服務
量化選項
GGUF 支援多種量化級別,在模型大小和品質之間進行權衡:
- Q8 — 最高品質,7B 模型約 8 GB
- Q5 — 品質好且體積小,7B 模型約 5.5 GB
- Q4 — 大多數任務可接受的品質,7B 模型約 4.5 GB
對於在高品質資料上進行微調的特定領域任務,Q5 量化通常保持超過 95% 的全精度品質。從那裡開始,根據您的品質要求進行調整。
部署
# 使用 Ollama
ollama create my-model -f Modelfile
ollama run my-model
# 使用 llama.cpp
./server -m my-model.gguf --port 8080
您的模型現在在本地運行。沒有 API 呼叫。沒有每個標記的費用。沒有可以棄用它的供應商。沒有可以在您下面改變的服務條款。
Ertas 工作流程:不需要 CLI 即可完成所有這些
上述步驟是有效的。它們也需要大量手動工作——設置推理環境、管理 JSONL 文件、配置訓練運行、處理量化和匯出。
Ertas 將整個管道壓縮到視覺化介面中:
- 上傳您的資料集(或通過 URL 從 Hugging Face 匯入)
- 選擇您的基礎模型,從支援的開源選項中
- 配置並訓練,使用視覺化控件和推薦的預設值