OpenELM简介

OpenELM是由苹果公司推出的系列高效开源语言模型,包括OpenELM-270M、OpenELM-450M、OpenELM-1.1B和OpenELM-3B等不同参数规模的版本(分为预训练版和指令微调版)。该模型利用层间缩放策略,在Transformer模型的每一层中进行参数的非均匀分配,从而提高模型的准确性和效率。它在公共数据集上进行了预训练,并在多个自然语言处理任务中表现出色。OpenELM的代码、预训练模型权重及训练和评估流程均已公开,旨在推动开放研究和社区发展。

OpenELM的基本信息

  • 参数规模:OpenELM共有八个模型,其中四个是预训练版,四个是指令微调版,参数规模从2.7亿到30亿不等。
  • 技术架构:OpenELM采用基于Transformer的架构,通过层间缩放策略,调整注意力头数和前馈网络乘数来分配参数。该模型使用了分组查询注意力(GQA)、SwiGLU激活函数和RMSNorm归一化。
  • 预训练数据:OpenELM使用了多个公共数据集进行预训练,包括RefinedWeb、deduplicated PILE、RedPajama的子集和Dolma v1.6的子集,共计约1.8万亿个token。
  • 开源许可:OpenELM的代码、预训练模型权重和训练指南均在开放源代码许可证下发布。苹果还提供了将模型转换为MLX库的代码,以便在苹果设备上进行推理和微调。

OpenELM的技术架构

  • Transformer架构:OpenELM采用了解码器-only的Transformer模型架构,适用于处理序列数据。
  • 层间缩放:OpenELM通过层间缩放技术,在模型的每一层中有效分配参数,使模型的早期层使用较小的注意力维度和前馈网络维度,后期层逐渐增加。
  • 分组查询注意力:OpenELM使用GQA代替MHA,提高了处理长距离依赖的能力。
  • RMSNorm归一化:OpenELM使用RMSNorm,有助于稳定训练过程。
  • SwiGLU激活函数:在前馈网络中,OpenELM使用SwiGLU激活函数,有助于捕捉复杂模式。
  • RoPE位置编码:OpenELM使用旋转位置编码(RoPE),处理序列中元素顺序。
  • Flash注意力:OpenELM使用Flash注意力,快速且高效地计算缩放点积注意力。

OpenELM的性能表现

研究人员将OpenELM与PyThia、Cerebras-GPT、TinyLlama、OpenLM、MobiLlama和OLMo等模型进行了对比。在相似模型大小下,OpenELM在ARC、BoolQ、HellaSwag、PIQA、SciQ和WinoGrande等任务测试中,多数任务上表现出更高的准确度。尤其在参数数量和预训练数据较少的情况下,OpenELM仍能保持较高的准确率。

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部