OpenELM指的是什么?
Apple公司最近发布了名为OpenELM的一系列高性能开源语言模型,涵盖了从较小到较大的多个版本,如OpenELM-270M、OpenELM-450M、OpenELM-1.1B及OpenELM-3B,并且每个都有预训练和指令微调两个版本。这些大型模型采用了在Transformer架构的各层中非均匀分配参数的技术,即层间缩放策略,以优化其准确性和效率表现。该系列模型基于公共数据集进行了初步训练,在多种自然语言处理任务上展示了卓越的效果。Apple还开源了OpenELM的相关代码、预训练权重以及整个培训和评估过程,目的在于推动研究界的开放合作与社区成长。
关于OpenELM的核心资料
- 模型的参数量OpenELM系列包含八个模型,其中一半为预训练模型,另一半则经过指令微调。这些模型的参数量从2.7亿至30亿不等,具体包括了270M、450M、1.1B和3B这四种不同的规模配置。
- 系统结构OpenELM构建于Transformer架构之上,并运用了层级缩放策略,通过改变各层中注意力头部的数量和前馈网络的比例来实现参数的不均匀分布。该模型引入分组查询注意力机制(GQA)以替代传统的多头注意力(MHA),并且采用了SwiGLU激活函数而非标准的ReLU函数,同时使用RMSNorm进行归一化处理。
- 预先准备的训练资料OpenELM在预训练过程中利用了若干公开的数据集资源,这些数据源涵盖了精炼网络文本、去重后的PILE集合、部分RedPajama内容以及Dolma v1.6的部分数据,整体包含了大约1.8万亿的tokens。
- 开放源代码授权OpenELM 的软件代码、预先训练好的模型参数以及培训指导均以开源许可的形式对外发布。除此之外,苹果公司也提供了一套代码,用于把该模型迁移到其 MLX 库中,在此基础上可以在苹果公司的硬件平台上实现预测分析及进一步的调优工作。
访问OpenELM的官方主页入口
- 在arXiv平台上发布的一篇学术文章中提到的研究内容如下:https://arxiv.org/abs/2404.14619
- CoreNet的模型权重与训练设置可在如下GitHub仓库中找到:https://github.com/apple/corenet
- 经过调整优化的指令处理模型可在Hugging Face平台上找到,其链接为:https://huggingface.co/collections/apple/openelm-instruct-models-6619ad295d7ae9f868b759ca
- 预先训练的模型可在Hugging Face的以下集合中找到:https://huggingface.co/collections/apple/openelm-pretrained-models-6619ac6ca12a10bd0d0df89e
OpenELM的系统结构
- Transformers框架OpenELM利用了只包含解码器组件的Transformer模型结构,这种设计在自然语言处理领域极为常见,并且非常适合于序列数据的处理工作。
- 层级比例调整(Hierarchical Resizing)OpenELM运用了层次扩展技术,在各层级中合理分布其参数量。具体而言,靠近输入部分的初始层级采用了较低级别的注意力尺寸与前馈网络尺寸设置,而在更接近输出位置的部分,则逐步加大上述尺寸规格。
- 群组查询关注(Grouped Query Attention, GQA)在OpenELM中,引入了GQA来替代传统意义上的多头注意力(Multi-Head Attention, MHA)机制。作为一种注意力机制的新形式,GQA的设计目的是增强模型对远距离相关性的捕捉能力。
- RMSNorm标准化在OpenELM中,采用了RMSNorm来充当归一化层的角色,这项技术对于确保训练流程的稳定性至关重要。
- SwiGLU激励函数于前馈网络(FFN)结构内,OpenELM采纳了SwiGLU激活功能,这是一种具备门控机制的激活方式,能有效辅助模型识别并学习到更为复杂的数据特征与模式。
- RoPE嵌入式定位技术为了嵌入序列中的元素顺序信息,OpenELM采用了旋转位置嵌入(RoPE)技术,这是一种能够有效管理序列内项目排列的方式。
- 闪光关注点当执行缩放点积注意力的运算时,OpenELM采用了Flash注意力机制,该机制能够实现更快的速度和更少的内存消耗来进行注意力计算。
OpenELM的表现情况
研究者对比了OpenELM与其他几个模型的表现,包括PyThia、Cerebras-GPT、TinyLlama、OpenLM、MobiLlla以及OLMo。结果显示,在保持相近的规模下,OpenELM在诸如ARC、BoolQ、HellaSwag、PIQA、SciQ和WinoGrande等主要评估任务中表现出了较高的准确性。值得注意的是,即便使用较少的参数数量及预训练数据量,OpenELM相较于OLMo依然保持着更高的准确率。
© 版权声明
文章版权归作者所有,未经允许请勿转载。