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