不以开放性著称的苹果居然同时开源了大模型的权重、训练和评估框架,涵盖训练日志、多个保存点和预训练设置。同时升级计算机视觉工具包 CVNets 为 CoreNet!支持 OpenELM!
▲图1.由Stable Diffusion3生成。
OpenELM是Apple苹果公司最新推出的语言模型系列,这次一共开源了8个模型,包括OpenELM-270M、OpenELM450M、OpenELM-1_1B和OpenELM-3B的预训练版和指令微调版。
▲图2.
OpenELM 采用了decoder-only的架构,并遵循最新的大语言模型(LLM)的设计,包括:
在任何全连接层中不使用可学习的偏置参数,
使用RMSNorm进行预归一化,同时使用旋转位置嵌入(ROPE)来编码位置信息,
使用分组查询注意力(GQA)代替多头注意力(MHA),
将前馈网络(FFN)替换为SwiGLU FFN,
使用Flash Attention来计算缩放点积注意力,
使用与LLama相同的分词器。
▲图3.OpenELM与开源LLM。OpenELM比最近的开放LLM OLMo的性能高出2.36%,同时需要的预训练令牌减少了2倍。
研究人员提到,现有的大型语言模型在模型的每个Transformer层中使用相同的配置,导致参数在各层之间均匀分布。
而OpenELM中的每个Transformer层具有不同的配置(例如,注意力头数量和前馈网络维度),导致模型的每个层中参数数量不同。这使得OpenELM能够更好地利用可用的参数以实现更高的准确性。
OpenELM采用按层分配参数的策略,有效提升了Transformer模型各层的参数配置效率,显著提高模型精度。例如,在大约十亿参数的预算下,OpenELM的准确率较OLMo提升了2.36%,且预训练所需的Token数量减少了一半。
为了实现Transformer层中参数的非均匀分配,研究人员调整了每个Transformer层中注意力头的数量和FFN维度调整系数。
假设具有均匀参数分配的标准Transformer模型有个Transformer层,每层输入的维度为。MHA有个头,每个头的维度为。
另外,FFN的隐藏维度为,其中是FFN隐藏层维度的调整系数。
假设具有均匀参数分配的标准Transformer模型有个Transformer层,每层输入的维度为。MHA有个头,每个头的维度为。
另外,FFN的隐藏维度为,其中是FFN隐藏层维度的调整系数。
引入参数和来缩放和。对于第层,和计算如下:
在这里,和是超参数,用于调整注意力头的数量。类似地,和被用于改变FFN层的宽度。因此,使用和来改变标准Transformer层的配置会导致模型中参数的非均匀分配。需要注意的是,设置和时则对应了标准均匀的Transformer模型。
可靠但保守的OpenELM?
对于预训练,苹果使用的是公开数据集,如RefinedWeb、PILE、RedPajama和Dolma v1.6,总共大约包含1.8万亿个token。
从数据上看,确实没有什么惊喜的感觉,因为既没有新的数据集发布,在规模上也没有创新,中规中矩!
对于模型的指令调优,指令调优(Instruction Tuning)和参数高效微调(Parameter-efficient Fine-tuning,PEFT)。
对于指令调优,使用了经过清理的 UltraFeedback 数据集的变种,该数据集包含了60,000个用于指令调优的提示。作者使用 Alignment Handbook 库进行指令调优。在优化过程中,他们使用了统计拒绝抽样方法或直接偏好优化方法。结果显示,指令调优能够在不同的评估框架中将 OpenELM 的平均准确率提高1-2%。
▲图5.指令调优提高了OpenELM不同规模上的准确性。
同时,在 CommonSense 推理训练和评估设置中使用了包含8个多项选择数据集、共计170,000的训练样本,用于进行参数高效微调研究。研究中使用了LoRA和DoRA等方法,将它们与OpenELM集成,并使用8个NVIDIA H100 GPU进行三轮微调。但是从结果上看,LoRA和DoRA都表现出相当的性能。