MiniMind项目复现记录
写在最前面
在跑OpenRLHF库下的Simple-Reason项目的时候,遭遇了很多挫折,并且很多工作仅停留在应用层面,局限于调参和修改路径,对语言模型的底层认知还是非常匮乏。
因此在跑Simple-Reason项目的过程中,我尝试开始复现MiniMind项目,旨在在国庆假期结束前,完成项目的复现,掌握LM训练的极简框架。
附录
记录一些专业术语,以提升认知:
LLM的核心数据就是Token和Weights:
Dense模型:每个Token都会留经所有权重,这意味着计算量(FLOPs)是固定的,最大的。
其实这就是传统的Transformer模型,其中关键的子层(多头注意力和前馈网络)在Dense模型中全部激活,模型中的所有神经元和权重都会参与到每一个Token的计算中。
MoE模型:Token会被一个Router(路由门)分配给少数几个Expert(专家)。虽然模型的总参数量(硬盘存储)很大,但单个Token的实际计算量可以大大减少。其中的Router的设计很关键,如果Router本身很复杂,或者分配不均,那么MoE的效率优势会大打折扣。
MoE 是一种稀疏 (Sparse) 模型,它将传统的 FFN 子层替换成一个 MoE 层。它的核心理念是:让模型中的大部分参数在任何给定时间都处于休眠状态。
Dense+MoE模型(也是MiniMide-LLM提供的):前者提供基础、通用的知识和连接;后者提供专业化、稀疏的知识和能力。
License:
CC BY 4.0