教科書級數(shù)據(jù)is all you need:1.3B小模型逆襲大模型的秘密(1)
吳恩達(dá)說的「小數(shù)據(jù)」有多大威力?這個(gè)只有 1.3B 參數(shù)量的模型給出了證明。
人工智能的三個(gè)核心要素是算力、算法和數(shù)據(jù),這是大多數(shù)人在初識人工智能時(shí)都會(huì)接觸到的一個(gè)觀點(diǎn)。不過,在深入闡述該觀點(diǎn)時(shí),很多材料都傾向于解釋數(shù)據(jù)「大」的一面,畢竟當(dāng)前的大模型一直在由不斷增加的「大數(shù)據(jù)」來推動(dòng),而且這條路似乎還沒有走到極限。
不過,隨著數(shù)據(jù)獲取難度增加以及算力增長出現(xiàn)瓶頸,單純追求「大模型、大數(shù)據(jù)」的道路變得愈發(fā)難以為繼。因此,早在 2022 年,吳恩達(dá)就在采訪中呼吁大家關(guān)注「小數(shù)據(jù)」,即數(shù)據(jù)量較小但質(zhì)量較高的數(shù)據(jù)?!冈跀?shù)據(jù)行業(yè),我認(rèn)為重點(diǎn)必須從大數(shù)據(jù)轉(zhuǎn)向優(yōu)質(zhì)數(shù)據(jù)。擁有 50 個(gè)精心設(shè)計(jì)的示例就足以向神經(jīng)網(wǎng)絡(luò)解釋用戶希望它學(xué)習(xí)什么?!箙嵌鬟_(dá)表示。
高質(zhì)量的「小數(shù)據(jù)」到底有多大威力?最近,來自微軟的一篇題為「Textbooks Are All You Need」的論文給出了一個(gè)非常直觀的答案。
論文鏈接:https://arxiv.org/pdf/2306.11644.pdf
他們用規(guī)模僅為 7B token 的「教科書質(zhì)量」數(shù)據(jù)訓(xùn)練了一個(gè) 1.3B(13 億參數(shù))的模型 ——phi-1。phi-1 專注于編碼任務(wù),具體來說是編寫 Python 函數(shù)和對應(yīng)的文檔字符串。訓(xùn)練數(shù)據(jù)由網(wǎng)上篩選的教科書質(zhì)量數(shù)據(jù)(6B token)和 GPT-3.5 生成的教科書及練習(xí)數(shù)據(jù)(1B token)組成。訓(xùn)練時(shí),模型對 70 億的 token 進(jìn)行了 8 次遍歷。然后在不到 2 億 token 的數(shù)據(jù)上進(jìn)行了微調(diào)。整個(gè)訓(xùn)練過程在 8 個(gè) A100 上進(jìn)行,為期 4 天。
結(jié)果表明,盡管在數(shù)據(jù)集和模型大小方面比競品模型小幾個(gè)數(shù)量級,phi-1 依然在 HumanEval 的 pass@1 上達(dá)到了 50.6% 的準(zhǔn)確率,在 MBPP 上達(dá)到了 55.5%,這是僅使用一個(gè) LLM 生成的最佳自我報(bào)告數(shù)字之一。
論文作者之一 Sebastien Bubeck 表示,任何在 HumanEval 上達(dá)到 50% 以上準(zhǔn)確率的模型都要比 phi-1 大得多,比如前段時(shí)間超越所有開源模型、擊敗 Claude 和 Bard、專門用于編程任務(wù)的大模型 WizardCoder 參數(shù)量達(dá)到了 phi-1 的 10 倍以上,而所用的數(shù)據(jù)集規(guī)模則高達(dá)百倍。
此外,研究者還提出了一個(gè)更小的模型:參數(shù)量為 350M 的 phi-1-small。該模型用與 phi-1 相同的 pipeline 進(jìn)行訓(xùn)練,在 HumanEval 上達(dá)到了 45% 的準(zhǔn)確率。
從 phi-1 這項(xiàng)研究可以看到,高質(zhì)量數(shù)據(jù)的引入改變了模型性能與規(guī)模之間的關(guān)系,突破了之前的 scaling laws。它表明,高質(zhì)量數(shù)據(jù)可以提升大型語言模型(LLM)的 SOTA,同時(shí)大大降低數(shù)據(jù)集的規(guī)模和計(jì)算量,這對于當(dāng)前算力緊張的局面來說是個(gè)好消息。
在論文第二部分,作者詳述了他們的訓(xùn)練過程,并討論了他們的數(shù)據(jù)選擇過程對于取得這個(gè)結(jié)果的重要性。此外,盡管 phi-1 的訓(xùn)練 token 遠(yuǎn)少于現(xiàn)有模型,但它仍然顯示出了涌現(xiàn)特性。在第三部分,作者討論了這些涌現(xiàn)特性,通過比較 phi-1 和 phi-1-small 的輸出,確認(rèn)了參數(shù)數(shù)量在「涌現(xiàn)」方面起關(guān)鍵作用的假設(shè)。這一部分用到的方法與 Sparks of AGI 論文的精神相呼應(yīng),該論文主張擺脫靜態(tài)基準(zhǔn),來測試 LLM 的性能。最后,在第四部分,作者討論了評估模型的替代基準(zhǔn),而在第五部分,他們研究了他們的訓(xùn)練數(shù)據(jù)在 HumanEval 方面可能受到的「污染」。
這篇論文引起了不少研究者的關(guān)注,認(rèn)為它代表了一種研究趨勢。最近回歸 OpenAI 的 Andrej Karpathy 展望說,「我們可能會(huì)看到更多創(chuàng)造性的『縮小規(guī)模』工作:將數(shù)據(jù)質(zhì)量和多樣性置于數(shù)量之上,更多的合成數(shù)據(jù)生成以及小型但功能強(qiáng)大的專家模型將會(huì)出現(xiàn)。」
愛丁堡大學(xué)博士生符堯也給予了該文高度評價(jià),認(rèn)為其通過將數(shù)據(jù)工程推向極限,充分利用了基礎(chǔ)模型(不僅僅是 GPT-3.5)的潛力,同時(shí)指出該研究可能過于偏向于 HumanEval 風(fēng)格的測試,因此未來的研究方向可能需要平衡模型的能力。
他的詳細(xì)評價(jià)如下:
1、Prompt engineering
這可能是最重要 / 棘手的部分,因?yàn)樽髡叽罅渴褂?promp 來引導(dǎo) GPT-3.5 生成預(yù)訓(xùn)練的教科書和 SFT 代碼練習(xí)。顯然,大部分性能提升來自這個(gè)階段。我進(jìn)一步的假設(shè)是:
如果將這些數(shù)據(jù)用于繼續(xù)訓(xùn)練 GPT-3.5 本身,即教師模型,它也會(huì)有進(jìn)一步改進(jìn)的性能,就像之前的 LMSI(Large Language Models Can Self-Improve)論文展示的一樣,因此我傾向于將 Phi-1 論文視為推動(dòng) LMSI 方法的一大步。
將教師模型更改為在足夠多代碼上進(jìn)行預(yù)訓(xùn)練的任何預(yù)訓(xùn)練模型,也可以獲得類似質(zhì)量的數(shù)據(jù),當(dāng)然,這需要一個(gè)良好的基礎(chǔ)模型。
綜合上述觀點(diǎn),基本上對于任何優(yōu)秀的基礎(chǔ)模型,都可以從基礎(chǔ)模型中通過 prompt 合成教科書數(shù)據(jù),然后使用模型生成的數(shù)據(jù)來改進(jìn)自身,或者蒸餾為更小的專門化變體。
2、能力平衡
從論文的印象來看,我覺得預(yù)訓(xùn)練和 SFT 數(shù)據(jù)可能與 HumanEval 過于接近(并且作者證明沒有污染)?;旧希髡邩?gòu)建了一個(gè)用于 Human Eval 的訓(xùn)練集。這有多重含義:
為感興趣的測試問題構(gòu)建訓(xùn)練集沒有問題,我猜測大多數(shù)部署的模型都這樣做。然而,它降低了在分布內(nèi)泛化的挑戰(zhàn)程度,盡管對于與推理相關(guān)的任務(wù)和小型模型來說,這仍然是個(gè)挑戰(zhàn)。
然而,LLM 最重要的能力在于分布外泛化,因?yàn)楦蟮哪P蜁?huì)泛化到遠(yuǎn)離其訓(xùn)練 / 微調(diào)分布的內(nèi)容。Phi-1 在小模型的分布內(nèi)泛化方面做得最好(可能是極限),但在 LLM 時(shí)代,我們對分布外、少樣本泛化更感興趣。
推動(dòng)分布內(nèi)泛化的極限,會(huì)以顯著降低通用領(lǐng)域能力為代價(jià),如作者所討論的(也可以參見我們以前的工作:https://arxiv.org/abs/2301.12726)。因此,下一步工作可能落腳于如何進(jìn)行好的數(shù)據(jù)混合,以保持編碼性能的同時(shí),也能提高通用能力。
總體而言,這是一項(xiàng)令人印象深刻的工作!我學(xué)到了很多!
以下是論文細(xì)節(jié)。
高質(zhì)量數(shù)據(jù)來源及其重要性
phi-1 的訓(xùn)練依賴于三個(gè)主要的數(shù)據(jù)集:
- 一個(gè)經(jīng)過篩選的代碼 - 語言數(shù)據(jù)集,它是 The Stack 和 StackOverflow 的一個(gè)子集,通過使用基于語言模型的分類器獲得(包含約 6B token)。
- 一個(gè)合成的教科書數(shù)據(jù)集,包含不到 1B 個(gè) token 的 GPT-3.5 生成的 Python 教科書。
- 一個(gè)小型的合成練習(xí)數(shù)據(jù)集,包含大約 180M 個(gè) token 的 Python 習(xí)題和答案。
以上數(shù)據(jù)組成了總 token 量不到 7B 的訓(xùn)練數(shù)據(jù)集。作者將經(jīng)過篩選的代碼 - 語言數(shù)據(jù)集和合成的教科書數(shù)據(jù)集的組合稱為「CodeTextbook」,并在預(yù)訓(xùn)練階段使用它來獲得一個(gè)基礎(chǔ)模型 phi-1-base—— 該模型已經(jīng)在 HumanEval 上達(dá)到了 29% 的準(zhǔn)確率。然后,他們使用 180M 個(gè) token 的合成練習(xí)數(shù)據(jù)集,稱為「CodeExercises」,對 phi-1-base 模型進(jìn)行微調(diào),以獲得 phi-1 模型。盡管「CodeExercises」數(shù)據(jù)集規(guī)模較小,但通過這個(gè)數(shù)據(jù)集進(jìn)行微調(diào)不僅在生成簡單的 Python 函數(shù)方面帶來了巨大的改進(jìn)(如圖 2.1 所示),而且更廣泛地解鎖了 phi-1 模型中許多有趣的新能力,這些能力在 phi-1-base 模型中沒有觀察到。
模型架構(gòu)細(xì)節(jié)
該研究使用僅含****(decoder-only)的 transformer 模型 —— 使用多頭注意力 (MHA) 的 FlashAttention 實(shí)現(xiàn),并參考一些新模型,包括 CodeGen、PaLM 和 GPT-NeoX,在并行配置中使用 MHA 和 MLP 層。
具體來說,1.3B 參數(shù)的 phi-1 模型由 24 層組成,隱藏維度為 2048,MLP 內(nèi)部維度為 8192,使用 32 個(gè)注意力頭,每個(gè)注意力頭維度為 64。350M 參數(shù)的 phi1-small 模型由 20 層組成,隱藏維度為 1024,MLP 內(nèi)部維度為 4096,16 個(gè)注意力頭,每個(gè)維度為 64。
值得注意的是,該研究沒有使用 Fill-In-the-Middle (FIM)、 Multi-Query-Attention (MQA) 等可以進(jìn)一步提高模型性能和效率的新方法。
*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請聯(lián)系工作人員刪除。