OpenELM 是苹果公司最新推出的语言模型系列,采用了 decoder-only 的架构,并针对大语言模型(LLM)进行了多项创新设计,如不使用可学习的偏置参数、使用 RMSNorm 进行预归一化、使用旋转位置嵌入 (ROPE) 编码位置信息等。以下是关于 OpenELM 配置中常见问题的相关信息:
OpenELM 架构设计特点
- 逐层缩放(Layer-wise Scaling):OpenELM 的每个 Transformer 层具有不同的配置(例如,注意力头数量和前馈网络维度),从而实现更有效的跨层参数分配。
- 不使用可学习的偏置参数:在所有全连接层中不使用可学习的偏置参数。
- 使用 RMSNorm 进行预归一化。
- 旋转位置嵌入 (ROPE):用于编码位置信息。
- 分组查询注意力 (GQA) 代替多头注意力 (MHA)。
- SwiGLU FFN 替换前馈网络 (FFN)。
- Flash Attention 计算可缩放的点积注意力。
- 与 LLama 相同的分词器。
预训练数据集和训练细节
- 预训练数据来源:包括 RefinedWeb、deduplicated PILE、RedPajama 的子集和 Dolma v1.6 的子集,总计约 1.8 万亿个 token。
- 训练超参数:总共约 350k 步,使用 AdamW 优化器、cosine 学习率调度、warmup=5k、weight decay=0.1、gradient clipping=1.0。
- 训练框架:使用苹果自家开源的 CoreNet 库(以前称为 CVNets)训练 OpenELM 变体。
模型性能对比
- 与现有开源 LLM 的比较:OpenELM 的性能优于使用公开数据集进行预训练的现有开源 LLM,例如,具有 11 亿个参数的 OpenELM 性能优于 OLMo。
以上信息提供了关于 OpenELM 架构设计特点、预训练数据集和训练细节以及模型性能对比的详细说明,希望对您有所帮助。