微軟在 2023 年於 Microsoft Research 發表的論文《Textbooks Are All You Need》中,首次提出「以教科書品質資料訓練,而不是大量雜訊網頁資料」,進而開發出 phi‑1 一款僅有 1.3B 參數、訓練用資料量約 70B tokens 的語言模型,在程式合成評估 HumanEval 與 MBPP 上分別達成 50.6% 與 55.5% 的 pass@1 準確度,性能媲美十倍以上參數與資料量的模型。
訓練細節及高品質資料的重要性
過濾現有的程式碼數據集
- 使用 Transformer-based 分類器來過濾資料。
- 使用 GPT-4 來標註資料品質,篩選出高教育價值的程式碼片段。
創建合成的教科書品質資料集
- 使用 GPT-3.5 生成 Python 教科書等級資料,確保資料集的多樣性和非重複性。
- 合成資料集包括約 1B tokens 的教科書資料和約 180M tokens 的練習數據。
模型架構與訓練過程
- phi-1 和 phi-1-base 的預訓練使用 CodeTextbook 資料集(phi-1-base 29%),微調使用 CodeExercises 數據集(phi-1 51%)。
- 模型參數小與架構簡單,但數據品質有顯著提高模型性能,且解鎖了意想不到的程式碼生成功能。
- 在 CodeTextbook 資料集上訓練的基於 phi-1 的模型僅用 1.3B 參數模型即可實現 29% 的 HumanEval 效能。

增加計算時間(135 -> 1090 GPU hr)與數據(26B -> 76B)或增加模型參數(350M -> 1.3B)
湧現(emergence)性質
- 比較 phi-1 和 phi-1-small 發現模型參數對湧現能力的重要性。
- phi-1 展現出許多 phi-1-base 沒有的能力,如更高的程式碼準確性和靈活性。

替代基準測試
- CodeExercises 資料集可能會產生記憶(訓練數據污染)
- 為了最大限度地減少資料外洩(data leakage) 使用其他測試方法如不同的程式碼生成任務來評估模型的性能。

對 50 個非常規程式問題的理解進行評分
訓練數據污染的研究
- 分析 HumanEval 基準測試中的數據污染問題。
- 強調訓練數據的透明度和可靠性對於模型性能的重要性。

移除 CodeExercises 資料集中與 HumanEval「相似」的內容