Twinkle AI 深夜實作課1:使用 Gemma-3-12B-it API 建立對話式訓練資料集
一直有在跟 Twinkle AI 的深夜實作課,覺得非常有幫助,
以下是第一周 Will 保哥 幫忙整理的課程心得(有取得本人同意),覺得只在 Discord 很可惜,想大家分享。
課程名稱:使用 Gemma-3-12B-it API 建立對話式訓練資料集
核心目標:打造高品質的繁體中文訓練資料集
課程的核心是學習如何利用大型語言模型 (LLM) API 來生成用於模型訓練的問答 (Q&A) 資料。重點在於從零開始,產出符合特定需求、乾淨且高品質的繁體中文內容,整個過程建議在 Google Colab 環境中實作。
兩種主要的資料生成策略
無參考生成 (Reference-Free): 這種方法不依賴外部文件。首先準備一個「種子 (seed)」問題(例如:早餐建議),然後讓 LLM 根據這個種子「舉一反三」,生成更多樣化的新種子(例如:午餐建議、晚餐建議)。最後再用這些新種子去生成完整的問答對,適合創造大量的通用型對話。
基於參考生成 (Reference-Based): 這種方法專門用來生成知識密集型的資料。提供一篇指定的文章(如維基百科條目)給 LLM,並引導它完成兩項任務:
生成問題: 根據文章內容,生成數個自然且不露痕跡的問題。
生成答案: 根據原文內容,回答上一步生成的問題。
確保生成品質的關鍵技巧與心法
停用 OpenCC: 這是課程中最重要的警告。絕對不要使用 OpenCC 等工具將簡體中文直接轉換為繁體,因為它可能將正確的詞彙(如「虱目魚」)轉成錯字,嚴重污染資料品質。應從源頭就要求 LLM 生成道地的繁體中文。
精準的 Prompt 指令: 在 Prompt 中務必加入「不要加上任何解釋」,避免 LLM 產生多餘的開場白。同時,要求模型輸出結構化的 JSON 格式,可以大幅減少後續資料解析的錯誤。
穩固的 API 呼叫: 在撰寫大量生成資料的程式時,必須使用
try...except語法,以捕捉可能發生的 API 連線失敗,確保程式不會中斷。
資料的驗證、清洗與儲存
儲存格式: 推薦使用與 OpenAI API 兼容的
messages格式(包含role和content)。檔案儲存方面,資料量不大時用 JSONL 格式方便人工檢視,資料量極大時則用 Parquet 格式以獲得更好的效能。清洗方法: 生成的資料需要經過清洗。基本方法是規則檢查 (Rule-based),過濾掉長度過短、格式錯誤或包含個資 (PII) 的內容。進階方法是 LLM-as-a-Judge,利用另一個強大的 LLM 來自動評估生成資料的品質好壞。
知識注入的正確觀念與成果分享
微調不等於知識注入: 課程強調,LoRA 這類的微調 (Fine-tuning) 比較像是調整模型的說話風格或語氣(風味餐),很難真正「灌輸」新的知識。要讓模型學會新知識,最有效的方法是持續預訓練 (Continual Pre-training)。
開源分享: 最終,將處理好的高品質資料集上傳到 Hugging Face,不僅是備份,更是對社群的貢獻,讓更多人可以利用這些資料。
Links
作者:Chi