MiniMind:用一个小模型看懂大语言模型的训练过程

MiniMind:用一个小模型看懂大语言模型的训练过程

English

想了解语言模型怎样学会回答问题,往往会先碰到显存、数据和训练框架的门槛。MiniMind 把模型缩小到个人设备更容易尝试的规模,同时公开模型结构、数据处理和各阶段训练脚本。读者可以沿着代码,看文本怎样进入模型、损失怎样计算,以及权重怎样保存和用于对话。

当前主线是 MiniMind-3。基础 Dense 模型约 6400 万参数;MoE 版本标为 198M-A64M,分别表示约 1.98 亿总参数和约 6400 万激活参数。旧介绍中常见的 2600 万参数,对应的是 MiniMind2-small 等历史版本。选模型、读教程和下载权重时,需要留意版本是否一致。

模型缩小了,训练环节仍然可以逐步观察

MiniMind 的核心模型和训练算法采用原生 PyTorch 实现。结构图把分词、词嵌入、注意力、前馈网络和输出连接起来;代码还与 Transformers 等生态衔接。对有 Python 和深度学习基础的读者,这种安排方便把概念对应到具体实现。

MiniMind Dense 模型结构,来自项目仓库。点击查看原图。
MiniMind Dense 模型结构,来自项目仓库。点击查看原图。 图片来源:MiniMind 项目仓库

项目同时提供 Dense 和 MoE 两条结构。MoE 使用路由选择部分专家参与计算,因此总参数与每个 token 实际使用的参数不能混为一谈。初次复现可以从 Dense 开始,随后再比较 MoE 的路由、辅助损失和训练资源占用。

MiniMind MoE 模型与专家路由结构,来自项目仓库。点击查看原图。
MiniMind MoE 模型与专家路由结构,来自项目仓库。点击查看原图。 图片来源:MiniMind 项目仓库

从预测下一个词,到按照指令作答

基础训练分为预训练和监督微调(SFT)。预训练让模型学习文本中的规律,SFT 使用对话样本帮助模型形成问答行为。仓库分别提供训练脚本和 JSONL 数据读取方式,输出的权重可以继续用于下一阶段。

下面的预训练曲线来自项目仓库,展示 Dense 与 MoE 的 logits loss、辅助损失和学习率变化。曲线便于理解训练记录,但损失下降本身不能说明模型在某个业务任务上已经达到可用水平,还需要另留样本检查实际回答。

项目发布的 MiniMind-3 预训练曲线,非本次训练记录。点击查看原图。
项目发布的 MiniMind-3 预训练曲线,非本次训练记录。点击查看原图。 图片来源:MiniMind 项目仓库

在基础对话之外,仓库还包括 LoRA、DPO、PPO、GRPO、CISPO、蒸馏和 Agentic RL 等实验。LoRA 用较少的可训练参数调整模型;偏好优化和强化学习使用另一类训练信号。第一次学习时,先完成预训练、SFT 和评估,比较容易看清每一步改变了什么。

“两小时、三元”具体指哪一段

README 对这个案例写得很具体:两小时是单张 NVIDIA RTX 3090 上完成一轮 SFT 的实测耗时,三元是对应时段的 GPU 租用费用。它不包含所有训练阶段,也没有把下载、环境安装、调试和不同数据规模的开销一并算入。

当前预训练和 SFT 脚本的默认训练轮数都是两轮,与上面的一轮案例不同。数据量、序列长度、批大小、模型结构和显卡都会改变耗时与显存占用。README 列出的作者多卡工作站是参考设备,项目也提供单卡训练路径。

训练之后怎样看结果

可以先下载已发布的 MiniMind-3 权重,通过命令行对话了解模型的回答,再去复现训练。仓库还提供 Streamlit 聊天界面,以及兼容 OpenAI API 协议的服务示例,包含思考内容和工具调用字段。

作者提供的 MiniMind 工具调用演示界面。点击查看原图。
作者提供的 MiniMind 工具调用演示界面。点击查看原图。 图片来源:MiniMind 项目仓库

图中的界面是作者提供的工具调用演示。它展示了工具请求、返回结果和最终回答的位置,属于示例画面,不能据此判断计算、翻译或实时查询的准确率。用于自己的任务时,可以固定一组问题,记录不同阶段的回答、错误和推理速度。

适合怎样使用

MiniMind 适合学习语言模型训练、研究数据格式、比较微调方式,以及做可以重复的小规模实验。它的知识覆盖、复杂推理和长文本表现仍受模型规模与训练数据限制。需要稳定业务回答时,应先用自己的样本评估,再决定是否采用。

项目采用 Apache 2.0 许可证。代码许可、下载的训练数据和模型权重应分别检查;复现时还应记录代码版本与所用权重。本文核对的是 MiniMind-3 主线代码和公开说明,图片均来自项目仓库,没有把演示画面写成本次训练结果。

项目与资料:GitHub 仓库 · 中文说明与训练教程 · 模型实现 · SFT 脚本 · MiniMind-3 权重 · 许可证

この記事を共有