OpenELM是Apple最新發(fā)布的一系列高效開源語言模型,涵蓋了不同參數(shù)規(guī)模的版本,包括OpenELM-270M、OpenELM-450M、OpenELM-1_1B和OpenELM-3B。該系列模型采用創(chuàng)新的層間縮放策略,實(shí)現(xiàn)了參數(shù)的非均勻分配,從而提升了模型的準(zhǔn)確性與效率。OpenELM在多個自然語言處理任務(wù)中表現(xiàn)出色,并且其代碼和預(yù)訓(xùn)練模型權(quán)重均已開放,旨在推動開放研究和社區(qū)的發(fā)展。
OpenELM是什么
OpenELM是Apple公司最新推出的高效開源語言模型系列,包含OpenELM-270M、OpenELM-450M、OpenELM-1_1B和OpenELM-3B等多個版本,提供預(yù)訓(xùn)練和指令微調(diào)兩種選擇。該模型運(yùn)用層間縮放策略,在Transformer架構(gòu)的每一層中實(shí)現(xiàn)參數(shù)的非均勻分配,以增強(qiáng)模型的準(zhǔn)確度和效率。OpenELM在公共數(shù)據(jù)集上進(jìn)行了預(yù)訓(xùn)練,并在多個自然語言處理任務(wù)中展現(xiàn)出卓越的性能。其代碼、預(yù)訓(xùn)練模型權(quán)重及訓(xùn)練和評估流程均已開放,旨在促進(jìn)開放研究與社區(qū)的進(jìn)一步發(fā)展。
OpenELM的基本信息
- 參數(shù)規(guī)模:OpenELM系列共包含八個模型,其中四個為預(yù)訓(xùn)練版本,四個為指令微調(diào)版本,參數(shù)規(guī)模從2.7億到30億不等(270M、450M、1.1B和3B)。
- 技術(shù)架構(gòu):OpenELM基于Transformer架構(gòu),采用層間縮放策略,通過調(diào)整注意力頭數(shù)和前饋網(wǎng)絡(luò)的乘數(shù),實(shí)現(xiàn)參數(shù)的非均勻分配。該模型使用分組查詢注意力(Grouped Query Attention,GQA)替代傳統(tǒng)的多頭注意力(Multi-Head Attention,MHA),并選用SwiGLU激活函數(shù)代替?zhèn)鹘y(tǒng)的ReLU,同時采用RMSNorm作為歸一化層。
- 預(yù)訓(xùn)練數(shù)據(jù):OpenELM使用多個公共數(shù)據(jù)集進(jìn)行預(yù)訓(xùn)練,包括RefinedWeb、去重的PILE、RedPajama的子集以及Dolma v1.6的子集,總計(jì)約1.8萬億個token。
- 開源許可:OpenELM的代碼、預(yù)訓(xùn)練模型權(quán)重和訓(xùn)練指南均在開放源代碼許可證下發(fā)布,Apple還提供了將模型轉(zhuǎn)換為MLX庫的代碼,以支持在Apple設(shè)備上的推理和微調(diào)。
OpenELM的官網(wǎng)入口
- arXiv研究論文:https://arxiv.org/abs/2404.14619
- GitHub模型權(quán)重和訓(xùn)練配置:https://github.com/apple/corenet
- 指令微調(diào)版模型Hugging Face地址:https://huggingface.co/collections/apple/openelm-instruct-models-6619ad295d7ae9f868b759ca
- 預(yù)訓(xùn)練版模型Hugging Face地址:https://huggingface.co/collections/apple/openelm-pretrained-models-6619ac6ca12a10bd0d0df89e
OpenELM的技術(shù)架構(gòu)
- Transformer架構(gòu):OpenELM采用僅解碼器的Transformer模型架構(gòu),廣泛應(yīng)用于自然語言處理,特別適合序列數(shù)據(jù)的處理。
- 層間縮放(Layer-wise Scaling):通過層間縮放技術(shù),OpenELM有效分配每一層的參數(shù),早期層使用較小的注意力和前饋網(wǎng)絡(luò)維度,而后期層則逐漸增大這些維度。
- 分組查詢注意力(Grouped Query Attention,GQA):GQA是一種改進(jìn)的注意力機(jī)制,取代了傳統(tǒng)的多頭注意力,旨在提升模型處理長距離依賴的能力。
- RMSNorm歸一化:OpenELM采用RMSNorm作為歸一化層,幫助穩(wěn)定訓(xùn)練過程。
- SwiGLU激活函數(shù):在前饋網(wǎng)絡(luò)中,OpenELM使用SwiGLU激活函數(shù),一種門控激活函數(shù),有助于捕捉復(fù)雜模式。
- RoPE位置編碼:OpenELM使用旋轉(zhuǎn)位置編碼(Rotary Positional Embedding,RoPE),有效處理序列中元素的順序信息。
- Flash注意力:在計(jì)算縮放點(diǎn)積注意力時,OpenELM采用Flash注意力,提供快速且內(nèi)存高效的注意力計(jì)算。
OpenELM的性能表現(xiàn)
研究人員將OpenELM與PyThia、Cerebras-GPT、TinyLlama、OpenLM、MobiLlama和OLMo等模型進(jìn)行了比較。在相似的模型規(guī)模下,OpenELM在ARC、BoolQ、HellaSwag、PIQA、SciQ和WinoGrande等主流任務(wù)測試中展現(xiàn)出更高的準(zhǔn)確性。特別是,相較于OLMo模型,OpenELM在參數(shù)數(shù)量和預(yù)訓(xùn)練數(shù)據(jù)更少的情況下,依然保持較高的準(zhǔn)確率。