Back to blog
    你到底需要多少訓練範例?100 筆樣本的迷思
    fine-tuningtraining-dataloraqloradataseton-device-aisegment:mobile-builder

    你到底需要多少訓練範例?100 筆樣本的迷思

    微調 AI 模型的真實資料需求。研究顯示 50-500 個範例對許多任務就足夠了。以下是論文的結論以及如何建構你的資料集。

    EErtas Team·

    「我想微調模型,但我沒有足夠的資料。」

    這是開發者從未開始的最常見原因。而對大多數使用場景而言,這是錯的。

    微調需要數百萬筆標記範例的假設,來自大型語言模型出現之前的機器學習早期時代。預訓練的 LLM 已經懂語言、文法、推理模式,以及大量的領域知識。你不是在從零開始教一個模型理解文字。你是在將它推向特定的風格、詞彙或任務模式。這是一項小得多的工作,需要的資料遠比人們預期的少。

    以下是研究實際顯示的結果。

    研究怎麼說

    關於資料高效微調最重要的論文都指向同一個方向:品質勝過數量,而「足夠」的門檻比直覺預期的更低。

    OpenAI 自己的建議:從 50-100 個範例開始

    OpenAI 的微調文件建議在微調 GPT-3.5 和 GPT-4o 時從 50 到 100 個範例開始。不是作為勉強過關的最低門檻,而是作為能產生可衡量改善的真正起點。文件明確指出,更多範例可能有幫助,但前幾十個範例通常帶來最大的收益。

    如果一家按推論 token 計費的公司建議從 50 個範例開始,這對資料門檻實際在哪裡是一個有意義的信號。

    Stanford Alpaca:52K 合成範例花費 $500

    Stanford Alpaca 專案(arXiv:2303.16199)在 2023 年初證明,一個微調的 7B 參數模型可以在許多任務上匹配 GPT-3.5 的表現。總資料集是使用 GPT-3.5 合成生成的 52,000 個指令遵循範例,成本約 $500。關鍵發現不是 52K 這個數字本身。而是概念驗證:由能力強的模型生成的合成資料可以訓練較小的模型在指令遵循方面達到接近等效的表現。

    那個基準線此後已經被大幅超越。

    QLoRA:9,000 個範例,達到 ChatGPT 的 97.8%

    QLoRA 論文(arXiv:2305.14314,NeurIPS 2023)引入了 4 位元量化 LoRA 微調,使大型模型微調在消費級硬體上變得可行。作為示範,作者使用 OASST1 資料集(真實人類助手對話的集合)中的僅 9,000 個範例訓練了一個名為 Guanaco 的模型。

    結果:Guanaco 在 Vicuna 基準測試上達到了 ChatGPT 表現的 97.8%,由人類評分者評估。在單個消費級 GPU 上。來自 9,000 個訓練範例。

    這不是精心挑選的邊緣案例。OASST1 資料集涵蓋了廣泛的對話任務,而 9K 範例以任何標準來看都是適度的。QLoRA 架構是讓它成功的關鍵:基於適配器的微調在從有限範例學習新行為的同時,保留了基礎模型的通用知識。

    LIMA:1,000 個範例用於對話式 AI

    Meta AI 的 LIMA 論文(arXiv:2305.11206)可能是這個領域中最驚人的結果。研究人員在精確挑選的 1,000 個訓練範例上微調了一個 650 億參數的模型。沒有 RLHF,沒有獎勵建模,沒有偏好資料。只有 1,000 個精心選擇的對話。

    結果產生了一個模型,人類評估者在 19% 的比較中偏好它的回應而非 GPT-4 的回應,在許多其他情況下認為兩者等效。該論文的核心論點現在被稱為「表面對齊假說」:模型需要的幾乎所有知識已經存在於預訓練權重中。微調主要是教模型所需輸出的格式和風格。

    LIMA 結果中的關鍵詞是「精心」。研究人員花費大量努力策劃那 1,000 個範例,以確保多樣性、覆蓋率和品質。一千個隨機範例不會產生相同的結果。

    Microsoft Phi-3:教科書品質重於數量

    Phi-3 模型家族(arXiv:2404.14219,Microsoft Research)將這一點推得更遠。Phi-3 模型中有些只有 38 億參數,卻達到了與大三到五倍模型相當的表現。訓練策略刻意優先考慮研究人員所謂的「教科書品質」資料:清晰、結構良好、教育密度高的內容,而非單純的數量。

    對微調實踐者的啟示:你資料中的信號比資料集的大小更重要。一個清楚展示目標行為一次的範例,比十個模糊的範例更有價值。

    按任務類型的資料需求

    並非所有微調任務都是平等的。一個學習以一致的 JSON 結構重新格式化輸出的模型,需要的範例遠少於學習進行多步驟財務分析推理的模型。以下是基於社群發現、論文基準和 OpenAI 公開指引的實際分析:

    任務類型最低需求理想範圍
    格式和風格適應50-100200-500
    分類100-500500-2K
    領域問答200-1K1K-5K
    複雜推理1K-5K5K-20K

    閱讀此表的幾點說明:

    格式和風格適應涵蓋的案例如:「總是以這個 JSON 結構回應」、「使用這個特定詞彙」、「匹配這個語氣」。基礎模型已經知道如何產生結構化輸出。你是在教它一個偏好,而不是一個技能。五十個精心選擇的範例就能可靠地達成。

    分類因類別數量和相似度而有顯著差異。二元情感分析在 100 個範例時是可行的。一個 50 類的產品分類法需要更多資料,特別是對於稀有類別。

    領域問答受益於多樣性而非數量。來自十個不同子主題的一百個範例,通常比全部來自同一個狹窄子主題的 100 個範例表現更好。

    複雜推理是資料需求真正增加的地方。教一個模型進行多步驟法律分析或臨床決策的推理,涉及真正的新推理模式,而不僅僅是風格適應。在這裡要規劃更多資料。

    品質重於數量:什麼是好的訓練範例

    LIMA 的發現和 Phi-3 的方法有一個共同點:研究人員是有選擇性的。他們沒有把資料倒進訓練中。他們進行了策劃。

    高品質的訓練範例有四個特性:

    它清楚地展示目標行為。 對於正確回應應該是什麼樣子,不應有任何模糊。如果你在訓練一個支援機器人,範例回應應該是你希望使用者收到的確切品質的答案,而不是草稿。

    它代表真實的輸入分布。 範例應該反映你的使用者實際發送的輸入類型。使用精心製作但與真實使用者行為不匹配的範例進行訓練,會產生一個在訓練集上表現良好但在實際流量上表現不佳的模型。

    它涵蓋邊緣案例。 這是大多數資料收集出錯的地方。團隊收集了 200 個簡單、常見案例的範例,但零個構成 20% 生產流量的異常輸入範例。你的資料應該有意地包含棘手的案例。

    它與你的其他範例一致。 矛盾的訓練範例(模型看到相似的輸入卻有不同的預期輸出)會混淆微調並降低表現。訓練前,檢查你的資料是否具有內部一致性。

    從你已有的資料建構資料集

    開始的障礙通常不是資料不存在。而是資料沒有格式化。以下是應用程式開發中最常見的來源,以及如何將它們轉換為訓練範例。

    應用程式日誌和對話記錄

    如果你的應用程式已經有一個由基礎模型 API 支援的 AI 功能,你就有訓練資料。你的生產對話是使用者詢問什麼和良好回應是什麼樣子的直接記錄。

    工作流程:

    1. 匯出過去 30-90 天的對話。
    2. 過濾高品質的互動。如果你有點讚/點踩的回饋,就使用它。如果沒有,就抽樣並手動審查。
    3. 移除任何個人識別資訊。套用你隱私政策要求的任何匿名化處理。
    4. 轉換為你的訓練格式(通常是帶有 messages 陣列的 JSONL)。

    即使來自生產流量的 200-300 個高品質對話,也會比 1,000 個不匹配真實使用模式的手工範例產生更好的微調模型。

    客服工單和服務台資料

    客服工單對於客服自動化使用場景是極其有價值的訓練資料。它們包含:

    • 真實使用者語言,包括拼寫錯誤和不尋常的措辭
    • 正確解決方案的記錄
    • 隨使用者基礎增長的數量

    轉換過程:擷取初始工單加上關閉工單的最終客服回應。剔除需要人類判斷且不應自動化的工單。清理客服回應以移除內部備註或案件編號。你現在有了直接代表你任務的指令遵循配對。

    使用者回饋和修正

    如果你的應用程式有任何讓使用者標記不良輸出或請求修正的機制,那些回饋就是訓練的黃金。一個說「這個回應是錯的,正確答案是 X」的使用者,已經給了你一個標記範例,精確指出你的模型在哪裡失敗以及正確行為是什麼樣子。

    即使少量的修正資料也是高信號的。五十個帶有正確標記的模型失敗範例,就能可衡量地改善微調模型。

    內部文件和知識庫

    對於領域問答使用場景,你的產品文件、內部知識庫和常見問題內容可以轉換為訓練範例。過程:

    1. 取一段文件內容。
    2. 生成關於該內容的合理使用者問題(手動或使用另一個 LLM)。
    3. 撰寫基於文件的模型品質答案。
    4. 審查準確性和一致性。

    這比較慢,但能產生帶有經過驗證正確答案的可靠範例。

    合成資料:Stanford Alpaca 方法

    如果你沒有足夠的現有資料,你可以生成它。Stanford Alpaca 方法展示了這在規模上可行,而且自 2023 年以來經濟性已經顯著改善。

    基本方法:

    1. 撰寫 20-30 個展示你目標任務的種子範例。這些應該是你能產出的最佳範例。
    2. 用你的種子範例提示一個能力強的模型(GPT-4o、Claude Opus 等),要求它生成多樣化的變體。
    3. 審查生成的範例品質。預期會丟棄 10-20%。
    4. 使用核准的合成範例作為訓練資料。

    使用當前前沿模型定價,500-1,000 個合成範例的成本通常是 $50-200,取決於輸出長度和品質審查次數。對大多數任務而言,這低於幾小時手動資料收集的成本。

    一個重要的注意事項:從封閉模型(如 GPT-4o 或 Claude)生成的合成資料,在大多數供應商的服務條款下不能用於訓練競爭性的通用模型。對於你自己應用程式的狹窄範圍任務特定微調,此限制通常不適用,但在進行之前請審查適用的條款。

    迭代方法:從小處開始

    微調資料收集中最大的錯誤是等到你有「足夠」的資料才開始。正確的方法是從你擁有的開始,訓練、評估、學習。

    以下是建議的進程:

    從 100 個範例開始。 在你的基礎模型上訓練一個 LoRA 適配器。在 20-30 個範例的保留測試集上評估。記錄模型失敗的地方。

    識別失敗模式。 模型的格式出錯了嗎?它在某些主題領域失敗了嗎?它拒絕了應該回答的輸入嗎?每個失敗模式都精確告訴你需要收集什麼類型的額外訓練資料。

    新增針對性的範例。 收集 50-100 個專門針對你識別出的失敗模式的範例。重新訓練。

    重複。 在大多數情況下,三到四次迭代就能讓你得到生產品質的模型。在大多數情況下,最終資料集不到 1,000 個範例。

    這種迭代方法有效,因為它將你的資料收集工作針對模型行為中的實際差距,而不是在輸入空間中均勻地收集資料。你不是在建構涵蓋所有可能輸入的資料集。你是在建構涵蓋使用者實際發送的輸入的資料集,並修復模型目前出錯的案例。

    結論

    你幾乎可以肯定有足夠的資料開始了。你可能在試算表中有 200 個客服工單的解決方案。你有產品知識庫。你有幾週的生產對話日誌。你可以花不到 $100 生成 500 個合成範例。

    研究結論是明確的:50 個範例可以改善風格一致性。100 個範例可以有意義地改變模型的行為。1,000 個精心策劃的範例可以產生一個在特定任務上能與前沿模型匹敵的對話模型。

    那些因為等待更大資料集而從未開始的開發者,正在等待一個對他們的使用場景而言可能不必要的門檻。那些從 100 個範例開始、誠實評估並迭代的開發者,才是真正上線的人。

    你的資料集比你想的更小。你的模型比你想的更近。從你擁有的開始。

    Ship AI that runs on your users' devices.

    Early bird pricing starts at $14.50/mo — locked in for life. Plans for builders and agencies.

    Keep reading