OpenELM 是苹果公司发布的一种高效语言模型系列,旨在通过逐层扩展(Layer-wise scaling)策略提高模型的扩展性和性能。以下是如何利用 OpenELM 配置提高扩展性的具体方法:
逐层扩展(Layer-wise Scaling)
- 非均匀参数分配:OpenELM 的核心创新在于其逐层扩展方法,与传统的均匀参数分配方法不同。每个 transformer 层都有不同的配置(例如注意力头数和前馈网络维度),从而实现更有效的跨层参数分配。
- 超参数设置:通过引入超参数 α 和 β,模型能够在不同层中调整注意力头数和前馈网络宽度,实现更精细的控制,以优化模型性能。
模型架构创新
- 无偏置参数的全连接层:在任何全连接层中不使用可学习的偏置参数。
- RMSNorm 预归一化:使用 RMSNorm 进行预归一化,有助于稳定训练过程。
- 旋转位置嵌入(RoPE):使用 RoPE 编码位置信息。
- 分组查询注意力(GQA):代替多头注意力(MHA)。
- SwiGLU FFN:用 SwiGLU FFN 替换前馈网络(FFN),使用 SwiGLU 激活函数。
- Flash 注意力:使用 Flash 注意力机制,可以更快、更高效地计算注意力。
训练和微调
- 公开数据集训练:使用公共数据集进行预训练,包括 RefinedWeb、deduplicated PILE、RedPajama 的子集和 Dolma v1.6 的子集,总计约 1.8 万亿个 token。
- 完整的训练框架:发布了包括数据准备、模型训练、微调和评估程序的完整框架,以及多个预训练的 checkpoint 和训练日志。
性能优势
- 参数效率:在相似的参数数量下,OpenELM 的准确率更高,同时需要的预训练 token 减少。例如,在约 10 亿参数的预算下,与 OLMo 相比,OpenELM 的准确性提高了 2.36%,同时需要的预训练 tokens 减少了 2 倍。
- 开源和社区贡献:OpenELM 的发布旨在增强和巩固开放研究社区,为未来的开放研究工作铺平道路。
通过上述配置和方法,OpenELM 能够有效地提高模型的扩展性,使其在资源有限的设备上也能实现高效的性能和准确率。