全方位、無死角的開源,邢波團隊LLM360讓大模型實現真正的透明
開源模型正展現著它們蓬勃的生命力,不僅數量激增,性能更是愈發優秀。圖靈獎獲得者 Yann LeCun 也發出了這樣的感嘆:「開源人工智能模型正走在超越專有模型的路上。」
專有模型在技術性能和創新能力上展現了非凡的力量,但是它們不開源的性質成為 LLM 發展的阻礙。一些開源模型雖然為從業者和研究者提供了多樣化的選擇,但大多數只公開了最終的模型權重或推理代碼,越來越多的技術報告將其范圍限制在頂層設計和表面統計之內。這種閉源的策略不僅限制了開源模型的發展,而且還在很大程度上阻礙了整個 LLM 研究領域的進步。
這意味著,這些模型需要更全面和深入地共享,包括訓練數據、算法細節、實現挑戰以及性能評估的細節。
Cerebras、Petuum 和 MBZUAI 等的研究者們共同提出了 LLM360。這是一項全面開源 LLM 的倡議,主張向社區提供與 LLM 訓練相關的一切,包含訓練代碼和數據、模型檢查點以及中間結果等。LLM360 的目標是讓 LLM 訓練過程透明化,使每個人都能復現,從而推動開放和協作式的人工智能研究的發展。
- 論文地址:https://arxiv.org/pdf/2312.06550.pdf
- 項目網頁:https://www.llm360.ai/
- 博客:https://www.llm360.ai/blog/introducing-llm360-fully-transparent-open-source-llms.html
研究者們制定了 LLM360 的架構,重點關注其設計原則和完全開源的理由。他們詳細規定了 LLM360 框架的組成部分,包含數據集、代碼和配置、模型檢查點、指標等具體細節。LLM360 為當前和未來的開源模型樹立了透明度的樣本。
研究者在 LLM360 的開源框架下發布了兩個從頭開始預訓練的大型語言模型:AMBER 和 CRYSTALCODER。AMBER 是基于 1.3T token 進行預訓練的 7B 英語語言模型。CRYSTALCODER 是基于 1.4T token 預訓練的 7B 英語和代碼語言模型。在本文中,研究者們總結了這兩個模型的開發細節、初步評估結果、觀察結果以及從中汲取的經驗和教訓。值得注意的是,在發布時,AMBER 和 CRYSTALCODER 在訓練過程中分別保存了 360 個和 143 個模型檢查點。
接下來,就一起看看文章的具體內容吧。
LLM360 的框架
LLM360 將為 LLM 預訓練過程中需要收集哪些數據和代碼提供一個標準,以確保已有的工作能更好地在社區中流通、共享。它主要包含以下幾個部分:
1. 訓練數據集和數據處理代碼
預訓練數據集對大型語言模型的性能至關重要。因此,了解預訓練數據集,用以評估潛在的行為問題和偏見非常重要。此外,公開的預訓練數據集有助于提高 LLM 在后續微調和適應各領域時的可擴展性。最近的研究表明,在重復數據上進行訓練會不成比例地降低模型最終的性能。因此,公開原始預訓練數據,有助于避免在下游微調或繼續在特定領域進行預訓練時使用到重復的數據。綜合以上原因,LLM360 倡導公開大型語言模型的原始數據集。在合適的情況中,還應公開關于數據過濾、處理和訓練順序的詳細信息。
2. 訓練代碼、超參數與配置
訓練代碼、超參數和配置對 LLM 訓練的性能和質量有重大影響,但并不總是公開披露。在 LLM360 中,研究者開源預訓練框架的所有訓練代碼、訓練參數以及系統配置。
3. 模型檢查點
定期保存模型檢查點也相當有用。它們不僅對訓練過程中的故障恢復至關重要,而且對訓練后的研究也很有用,這些檢查點可以讓后來的研究者從多個起點繼續訓練模型,無需從頭開始訓練,有助于復現和深入研究。
4. 性能指標
訓練一個 LLM 往往需要花費數周至數月,訓練期間的演化趨勢可以提供有價值的信息。然而,目前只有親歷者才能獲得訓練的詳細日志和中間指標,這阻礙了對 LLM 的全面研究。這些統計數據往往包含了難以察覺的關鍵見解。即使是對這些衡量標準進行方差計算這樣的簡單分析,也能揭示重要的發現。例如,GLM 的研究團隊就是通過分析梯度規范行為,提出了一種有效處理損失尖峰和 NaN 損失的梯度收縮算法。
Amber
AMBER 是 LLM360 「大家庭」的第一位成員,同時發布的還有它的微調版本:AMBERCHAT 和 AMBERSAFE 。
數據及模型細節
表 2 列出了 AMBER 包含 1.26 T token 的預訓練數據集的詳細信息,包括數據的預處理、格式、數據混合比例,以及 AMBER 的架構細節和特定的預訓練超參數。具體請在項目主頁參閱 LLM360 代碼庫。
AMBER 采用了與 LLaMA 7B4 一致的模型架構,表 3 總結了 LLM 的詳細架構配置。
在預訓練過程和超參數方面,研究者們盡可能地遵循了 LLaMA 的預訓練超參數。AMBER 使用 AdamW 優化器進行訓練,超參數為:β?= 0.9,β?= 0.95。同時,研究者還發布了幾個 AMBER 的微調版本:AMBERCHAT 和 AMBERSAFE 。AMBERCHAT 是基于 WizardLM 的指令訓練數據集微調得出的。更多參數細節,請閱讀原文。
實驗及結果
研究者們采用了 Open LLM 排行榜上的四個基準數據集來評估 AMBER 的性能。如圖 4 所示,在 HellaSwag 和 ARC 中, AMBER 的得分在預訓練期間單調增加,而在 TruthfulQA 的得分隨著訓練的進行而降低。在 MMLU 數據集中, AMBER 的得分在預訓練的初始階段下降,然后開始上升。
在表 4 中,研究者將 AMBER 的模型性能與 OpenLLaMA、RedPajama-INCITE、Falcon、MPT 等類似時間段內訓練出的模型進行了比較。許多模型的設計靈感都來自 LLaMA 。可以發現,AMBER 在 MMLU 的得分較為出色,但在 ARC 上的表現稍遜一籌。與其他類似模型相比,AMBER 的表現相對較強。
CRYSTALCODER
LLM360 「大家庭」的第二位成員是 CrystalCoder。
CrystalCoder 是一個基于 1.4 T token 訓練的 7B 語言模型,實現了編碼和語言能力之間的平衡。與大多數之前的代碼 LLM 不同,CrystalCoder 是通過精心混合文本和代碼數據進行訓練的,以最大化在這兩個領域的實用性。與 Code Llama 2 相比,CrystalCoder 的代碼數據在預訓練過程中較早引入。此外,研究者在 Python 和 Web 編程語言上訓練了 CrystalCoder,以提高其作為編程助手的實用性。
模型架構
CrystalCoder 采用了與 LLaMA 7B 非常相似的架構,加入了最大更新參數化(muP)。除了這種特定的參數化,研究者還進行了一些修改。另外,研究者還使用 LayerNorm 代替 RMSNorm,因為 CG-1 架構支持高效計算 LayerNorm。
實驗及結果
如圖 6 所示,研究者在 Open LLM Leaderboard 中的四個基準數據集以及編碼基準數據集上對該模型進行了基準測試。
從表 5 中可以看出,CrystalCoder 在語言任務和代碼任務之間取得了很好的平衡。
ANALYSIS360
Pythia 等先前的工作表明,通過分析模型的中間檢查點,可以進行深入研究。研究者希望 LLM360 還能為社區提供有用的參考和研究資源。為此,他們發布了 ANALYSIS360 項目的初始版本,這是一個對模型行為進行多方面分析的有組織存儲庫,包括模型特征和下游評估結果。
作為對一系列模型檢查點進行分析的示例,研究者對 LLM 中的記憶化進行了初步研究。最近的研究顯示,LLM 可能會記憶大部分訓練數據,通過適當的提示可以提取這些數據。這種記憶化不僅存在著泄露私人訓練數據方面的問題,而且如果訓練數據包含重復或特殊性,還會降低 LLM 的性能。研究者發布了所有檢查點和數據,因此他們可以對整個訓練階段的記憶化進行全面分析。
以下為本文所采用的記憶化得分方法,該得分表示在長度為 k 的提示后續長度為 l 的 token 的準確性。具體記憶化得分設置,請參閱原文。
圖 7 展示了 10 個選定檢查點的記憶化分數分布情況。
研究者根據所選檢查點對數據塊進行分組,并在圖 8 中繪制每個檢查點的每個數據塊組的記憶化分數。他們發現 AMBER 檢查點對最新數據的記憶化程度超過之前的數據。此外對于每個數據塊,記憶化分數在額外訓練后會略有下降,但之后會持續上升。
圖 9 展示了序列之間在記憶化得分和可提取 k 值的相關性。可見,檢查點之間存在很強的相關性。
總結
研究者總結了對 AMBER 和 CRYSTALCODER 的觀察結果和一些啟示。他們表示,預訓練是一項計算量巨大的任務,許多學術實驗室或小型機構都無力承擔。他們希望 LLM360 能夠提供全面的知識,讓用戶了解 LLM 預訓練過程中發生的情況,而無需親自動手。
更多詳細內容,請閱讀原文。