Apple的新報告提出了開源的高效語言模型及訓練推理架"OpenELM: An Efficient Language Model Family with Open-source Training and Inference Framework"論文,跟之前Meta的OLMo一樣令人耳目一新。因為它詳細分享了模型架構、訓練方法和訓練數據,這在業界並不多見。
蘋果公司最近開源了一個名為OpenELM的大型語言模型(LLM)家族,旨在通過公開模型架構、訓練方法和資料集,提高LLM研究的可重複性和透明度。這不僅有助於學界驗證結果、研究數據和模型偏差,也為探索潛在風險提供了機會。
OpenELM採用了一種逐層縮放(layer-wise scaling)策略,在transformer模型的每一層中高效分配參數,從而在給定參數預算下實現更高的精度。例如,在約10億參數規模下,OpenELM的精度比最近開源的OLMo高出2.36%,而訓練token數量只有後者的一半。
有別於此前只提供模型權重和推理程式碼,或在私有資料集上預訓練的做法,Apple的開源內容包括了在公開資料集上進行訓練和評估的完整框架,涵蓋訓練日誌、多個檢查點和預訓練配置。他們還發布了將模型轉換為MLX庫的程式碼,方便在蘋果設備上進行推理和微調。這種全面的開源有望賦能和加強開放研究社區,為未來的開放研究鋪平道路。
論文連結: https://arxiv.org/pdf/2404.14619
模型架構
OpenELM採用了decoder-only的transformer架構。參考SOTA的LLM,它在設計中融入了以下特點:
1. 所有全連接層(線性層)不使用可學習的偏置參數
2. 使用RMSNorm進行預規範化,使用RoPE編碼位置信息
3. 用分組查詢注意力(GQA)取代多頭注意力(MHA)
4. 用SwiGLU FFN取代前饋網絡(FFN)
5. 使用flash attention計算點積注意力
6. 沿用LLama的分詞器
與現有LLM在每層採用相同配置、均勻分配參數不同,OpenELM根據逐層縮放策略,讓每層transformer的配置(如注意力頭數、前饋維度)各不相同,從而在整個模型中實現參數的非均勻分配。這種做法讓OpenELM能在相同參數量下,實現更高的精度。
訓練資料和方法
OpenELM在約1.8萬億token的公開資料集上進行了預訓練,包括RefinedWeb、去重的PILE、RedPajama和Dolma的子集。與之前使用預分詞數據的方法不同,OpenELM採用了即時過濾和分詞。這大大簡化了使用不同分詞器進行實驗的流程。
訓練採用AdamW優化器,使用餘弦退火學習率調度,訓練35萬步。他們訓練了270M、450M、1.1B和3B四個不同規模的變體,對於某些模型還啟用了FSDP和activation checkpointing技術。
評估結果
研究者在三個評估框架下測試了OpenELM:標準zero-shot任務、OpenLLM排行榜任務和LLM360排行榜任務。結果顯示,不論在推理、知識理解還是識別錯誤信息和偏見方面,OpenELM都優於現有的開源LLM。尤其是在規模相當的情況下,OpenELM在精度上顯著領先OLMo,且只用了一半的訓練資料。
進一步的指令微調實驗表明,在6萬個指令樣本上微調,可使OpenELM在各種任務上的平均精度提高1-2個百分點。此外,LoRA和DoRA等參數高效微調方法也被證明可用於OpenELM,在維持模型大小不變的情況下顯著提升下游任務性能。
OpenELM的源碼、預訓練權重和訓練配方已在GitHub上開源。模型本身也已上傳到HuggingFace,方便研究者使用。值得一提的是,蘋果還開源了將模型轉換為MLX的代碼,MLX是一個在Apple矽晶片上進行高效機器學習的庫。這為在蘋果設備上部署OpenELM掃清了障礙。
OpenELM的發布代表了Apple在開放研究道路上又邁出的一大步。逐層縮放策略和全面的開源內容是其兩大亮點。儘管目前的推理速度還有待優化,但OpenELM在精度和資料效率上已經展現了巨大的潛力。未來,隨著更多的研究者參與改進和分析,OpenELM有望在各類自然語言任務上樹立新的標杆,為LLM的發展注入新的活力。
心得:
1. OpenELM有4種相對較小且方便使用的規模:270M、450M、1.1B和3B。
2. 儘管OpenELM的訓練token數量只有OLMo的一半,但性能略優於後者。
3. 主要的架構創新是一種逐層縮放策略。
這種逐層縮放策略非常有意思。希望他們做一個消融實驗,在同樣的資料集上訓練兩個版本的模型,一個用這種策略,一個不用,看看效果有何不同。但這樣的實驗成本很高。
另外, 他們也比較了LoRA和DoRA在參數高效微調上的表現!不過結果顯示,這兩種方法並沒有明顯差異。
.jpg)
沒有留言:
發佈留言