OpenELM模型的关键要素包括以下几个方面:
- 模型架构:
- Decoder-only架构:仅使用解码器部分,简化了模型结构。
- 逐层缩放策略:在Transformer模型的每一层中高效分配参数,提高了模型的准确性。
- 非均匀参数分配:每个Transformer层具有不同的配置(如注意力头数量和前馈网络维度),使得参数在各层之间分配更高效。
- 技术细节:
- 在全连接层中不使用可学习的偏置参数。
- 使用RMSNorm进行预归一化。
- 使用旋转位置嵌入(ROPE)来编码位置信息。
- 使用分组查询注意力(GQA)代替多头注意力(MHA)。
- 使用SwiGLU FFN替换前馈网络(FFN)。
- 使用Flash Attention来计算缩放点积注意力。
- 使用与LLama相同的分词器。
- 预训练数据:
- 主要使用公开数据集,如RefinedWeb、PILE、RedPajama和Dolma v1.6,总计约1.8万亿个tokens。
- 采用实时过滤和分词。
- 训练和优化技术:
- 使用AdamW优化器,结合cosine学习率调度。
- 预训练过程中使用公开可用的数据集,并在多个评估框架中进行评估和优化。
- 指令调优和参数高效微调技术,以提高模型在不同任务上的表现。
这些技术和方法共同作用,使得OpenELM在多个评估基准中表现出优异的性能,并且在资源有限的情况下(如移动设备)也能高效运行。