自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

蘋果卷開源大模型,公開代碼、權(quán)重、數(shù)據(jù)集、訓練全過程,OpenELM亮相

人工智能 開源
蘋果發(fā)布基于開源訓練和推理框架的高效語言模型族 OpenELM。

要說 ChatGPT 拉開了大模型競賽的序幕,那么 Meta 開源 Llama 系列模型則掀起了開源領(lǐng)域的熱潮。在這當中,蘋果似乎掀起的水花不是很大。

不過,蘋果最新放出的論文,我們看到其在開源領(lǐng)域做出的貢獻。

近日,蘋果發(fā)布了 OpenELM,共四種變體(參數(shù)量分別為 270M、450M、1.1B 和 3B),這是一系列基于公開數(shù)據(jù)集進行預訓練和微調(diào)的模型。OpenELM 的核心在于逐層縮放,即 OpenELM 中的每個 Transformer 層都有不同的配置(例如,頭數(shù)和前饋網(wǎng)絡維度),導致模型每層的參數(shù)數(shù)量不同,從而實現(xiàn)了更有效的跨層參數(shù)分配。

值得一提的是,蘋果這次發(fā)布了完整的框架,包括數(shù)據(jù)準備、訓練、微調(diào)和評估程序,以及多個預訓練的 checkpoint 和訓練日志,以促進開源研究。

圖片

  • 論文地址:https://arxiv.org/pdf/2404.14619.pdf
  • 項目地址:https://github.com/apple/corenet
  • 論文標題:OpenELM: An Efficient Language Model Family with Open-source Training and Inference Framework

結(jié)果顯示,OpenELM 的性能優(yōu)于使用公開數(shù)據(jù)集進行預訓練的現(xiàn)有開源 LLM(表 1)。例如,具有 11 億個參數(shù)的 OpenELM 性能優(yōu)于 OLMo。

圖片

方法介紹

OpenELM 架構(gòu)

OpenELM 采用只有解碼器的 transformer 架構(gòu),并遵循以下方式:

(1)不在任何全連接(也稱為線性)層中使用可學習的偏差參數(shù);

(2)使用 RMSNorm 進行預標準化,旋轉(zhuǎn)位置嵌入(ROPE)用于編碼位置信息;

(3)使用分組查詢注意力(GQA)代替多頭注意力(MHA);

(4)用 SwiGLU FFN 替換前饋網(wǎng)絡(FFN);

  (5) 使用 flash 注意力來計算可縮放的點積注意力;

  (6) 使用與 LLama 相同的分詞器(tokenizer)。

一般來講,LLM 中每個 transformer 層使用相同的配置,從而實現(xiàn)跨層參數(shù)的統(tǒng)一分配。與這些模型不同的是,OpenELM 中的每個 Transformer 層都有不同的配置(例如,頭數(shù)和前饋網(wǎng)絡維度),導致模型每層的參數(shù)數(shù)量不同。這使得 OpenELM 能夠更好地利用可用的參數(shù)預算來實現(xiàn)更高的精度。蘋果使用逐層縮放(layer-wise scaling)來實現(xiàn)跨層參數(shù)的非均勻分配。

逐層縮放:標準 Transformer 層由多頭注意力(MHA)和前饋網(wǎng)絡(FFN)組成。針對 Transformer 層參數(shù)分配不均勻的問題,蘋果對各個 Transformer 層的注意力頭數(shù)和 FFN 乘法器進行了調(diào)整。

蘋果是這樣做的。設參數(shù)分配均勻的標準 Transformer 模型有 N 層 transformer,假設每層輸入的維數(shù)為 d_model。MHA 有 n_h 個頭,每個頭的維度為圖片,F(xiàn)FN 的隱藏維度為:

圖片

蘋果引入?yún)?shù) α 和 β 兩個超參數(shù)來分別縮放每層注意力頭的數(shù)量 n_h 和 m。對于第 i 層,n_h 和 m 計算為:

預訓練數(shù)據(jù)

對于預訓練,蘋果使用公共數(shù)據(jù)集。具體來說,他們的預訓練數(shù)據(jù)集包含 RefinedWeb、deduplicated PILE、RedPajama 的子集和 Dolma v1.6 的子集,總計約 1.8 萬億個 token 。如下表所示。

圖片

訓練細節(jié)

蘋果使用自家開源的 CoreNet 庫(以前稱為 CVNets ,專門用于訓練深度神經(jīng)網(wǎng)絡)訓練 OpenELM 變體,訓練過程迭代了 35 萬次。最終訓練出了 OpenELM 四種變體(參數(shù)量為 270M、450M、1.1B 和 3B)。

實驗

本文評估了 OpenELM 在零樣本和少樣本設置下的性能,如表 3 所示。研究者將 OpenELM 與公開的 LLM 進行了比較,其中包括 PyThia 、Cerebras-GPT 、TinyLlama 、OpenLM 、MobiLlama  和 OLMo 。與本文工作較為相關(guān)的是 MobiLlama 和 OLMo。這些模型都是在類似的數(shù)據(jù)集上訓練的,具有相似或更多的預訓練 token。

圖片

圖 1 繪制了 OpenELM 在 7 個標準零樣本任務上隨訓練迭代次數(shù)的準確率??梢园l(fā)現(xiàn),在大多數(shù)任務中,隨著訓練持續(xù)時間的延長,準確率在總體上會有所提高。此外,通過平均最后五個檢查點(每 5000 次迭代收集一次)得到的檢查點,在準確率上與經(jīng)過 350k 次迭代后得到的最終檢查點相當,或略有提高。這種改進很可能是由于權(quán)重平均降低了噪聲。因此,在表 4 的主要評估、表 5 的指令調(diào)優(yōu)實驗和表 6 的參數(shù)效率調(diào)優(yōu)實驗中,研究者使用了平均檢查點。

圖片

表 4 中的結(jié)果橫跨各種評估框架,突出了 OpenELM 相對于現(xiàn)有方法的有效性。表 4 中的結(jié)果跨越了不同的評估框架,凸顯了 OpenELM 相對于現(xiàn)有方法的有效性。例如,與擁有 12 億個參數(shù)的 OLMo 相比,擁有 11 億個參數(shù)的 OpenELM 變體的準確率分別提高了 1.28%(表 4a)、2.36%(表 4b)和 1.72%(表 4c)。值得注意的是,OpenELM 達成了這樣的準確率,但是使用的預訓練數(shù)據(jù)比 OLMo 少的多。

圖片

如圖 5 所示,在不同的評估框架中,指令微調(diào)始終能將 OpenELM 的平均準確率提高 1-2%。

圖片

參數(shù)高效微調(diào)(PEFT)結(jié)果。研究者使用常識推理的訓練和評估設置。這個設置為不同方法提供了 8 個多項選擇數(shù)據(jù)集的 170k 訓練樣本進行 PEFT 研究,包括 LoRA 和 DoRA。研究者將 OpenELM 與這些方法整合在一起,并使用 8 個 NVIDIA H100 GPU 對所生成的模型進行了三個訓練周期的微調(diào)。如表 6 所示,PEFT 方法可以應用于 OpenELM。在給定的 CommonSense 推理數(shù)據(jù)集上,LoRA 和 DoRA 的平均準確率相似。

圖片

表 7a 和 7b 分別展示了本項工作在 GPU 和 MacBook Pro 上的基準測試結(jié)果。盡管 OpenELM 在相似參數(shù)數(shù)量下準確度更高,但其速度比 OLMo 慢。雖然這項研究的主要關(guān)注點是可復現(xiàn)性而不是推理性能,但研究者還是進行了全面的性能分析來判斷工作的瓶頸所在。

分析表明,OpenELM 的處理時間的相當部分可歸因于研究者對 RMSNorm 的簡單實現(xiàn)(見表 8)。詳細來說,也就是簡單的 RMSNorm 實現(xiàn)導致許多單獨的內(nèi)核啟動,每個都處理少量輸入,而不是像 LayerNorm 那樣啟動單個融合內(nèi)核。通過用 Apex 的 RMSNorm 替換簡單的 RMSNorm,研究者發(fā)現(xiàn) OpenELM 的吞吐量顯著提高。然而,與使用優(yōu)化 LayerNorm 的模型相比,仍有顯著的性能差距,部分原因是(1)OpenELM 有 113 層 RMSNorm,而 OLMo 有 33 層 LayerNorm;(2)Apex 的 RMSNorm 沒有為小輸入優(yōu)化。為了進一步說明由 RMSNorm 引起的性能下降,蘋果用 RMSNorm 替換了 OLMo 中的 LayerNorm,觀察到生成吞吐量顯著下降。在未來的工作中,研究者計劃探索優(yōu)化策略以進一步提高 OpenELM 的推理效率。

圖片


圖片

更多詳細內(nèi)容,請閱讀原論文。

責任編輯:張燕妮 來源: 機器之心
相關(guān)推薦

2024-02-04 09:17:00

模型數(shù)據(jù)

2017-04-25 18:03:11

Caffe深度學習框架

2011-02-22 10:46:02

Samba配置

2024-07-22 07:10:00

小模型機器學習蘋果

2010-03-17 17:20:15

Java class線

2011-04-18 15:56:10

軟件測試

2009-12-08 17:56:16

WCF配置

2011-09-06 15:38:20

QT安裝

2011-01-21 17:51:52

2009-04-13 12:37:18

2009-06-10 16:55:42

cygwin netb安裝

2010-03-01 17:01:03

Python編程技巧

2010-03-10 13:24:45

Zend Debugg

2010-06-17 13:10:09

Linux Grub修

2010-11-19 10:11:49

Oracle物化視圖

2012-11-06 10:19:18

Java自定義加載Java類

2011-03-11 10:39:02

YUM安裝LAMP

2010-07-21 14:51:19

telnet-serv

2019-05-14 15:27:31

MongoDB自動備份數(shù)據(jù)庫

2010-06-12 10:03:20

Ubuntu Grub
點贊
收藏

51CTO技術(shù)棧公眾號