MiniMind 是一个开放模型结构与训练过程的小型语言模型项目。当前 MiniMind-3 的 Dense 模型约 6400 万参数,另有约 1.98 亿总参数、约 6400 万激活参数的 MoE 版本。学习它时,可以先跑通已发布模型的对话,再用小数据完成预训练和监督微调(SFT),这样环境问题与训练问题比较容易分开排查。
先确认环境和模型版本
准备一个独立的 Python 环境,然后克隆仓库、安装依赖。README 的参考环境使用 Python 3.10.16、Ubuntu 20.04 和 CUDA 12.2;这是一套参考配置,不是全部设备的最低要求。仓库的依赖清单中 PyTorch 安装行被注释掉,需要根据设备单独安排 PyTorch 与 CUDA 的匹配。
git clone --depth 1 https://github.com/jingyaogong/minimind
cd minimind
pip install -r requirements.txt
计划使用 NVIDIA 显卡训练时,先确认 torch.cuda.is_available() 返回 True,再开始下载训练数据。CPU 或其他后端的速度与兼容性不同,不宜套用 RTX 3090 的时间估计。保留仓库提交版本,也方便之后回查命令和参数。

用已发布权重完成第一次对话
在项目根目录下载 Transformers 格式的 MiniMind-3。ModelScope 提供对应模型,下载完成后直接运行评估脚本:
modelscope download --model gongjy/minimind-3 --local_dir ./minimind-3
python eval_llm.py --load_from ./minimind-3
这个步骤使用现成权重,主要检查依赖、分词器、模型加载和生成流程。自己训练产生的 PyTorch 权重保存在 out 目录,使用另一种加载方式。不要把 Transformers 模型目录与单个 .pth 文件混用。
准备两份数据,按顺序训练
第一次复现可以从项目提供的 pretrain_t2t_mini.jsonl 和 sft_t2t_mini.jsonl 开始,把文件放进仓库的 dataset 目录。预训练数据以文本学习为主,SFT 数据组织成对话;文件后缀相同,并不表示样本字段可以互换。
进入 trainer 目录,先运行预训练,再运行 SFT。下面使用各脚本的默认配置,当前两者都默认训练两轮:
cd trainer
python train_pretrain.py
python train_full_sft.py
当前 SFT 默认从 pretrain 权重开始,模型隐藏维度默认是 768。两阶段的模型配置需要一致。默认输出分别类似 out/pretrain_768.pth 和 out/full_sft_768.pth,路径指向仓库根目录下的输出文件夹。

预训练图记录的是项目发布的 Dense 与 MoE 实验。读图时可以先看损失是否持续下降、学习率是否按计划变化,再检查训练日志中的耗时和异常。想知道模型是否学会了自己的任务,还需要查看留出的样本回答。

SFT 曲线同样来自项目仓库。预训练与 SFT 的数据目标不同,不能只比较两张图的数值高低来判断哪一阶段效果更好。若希望记录自己的曲线,可以启用脚本中的训练可视化选项。
保存进度,再检查训练后的回答
脚本会保存模型权重与续训检查点。训练中断后,可在原训练命令后加入 --from_resume 1 恢复已有进度。checkpoints 中的续训文件包含训练状态,和用于推理的权重文件作用不同。
完成 SFT 后回到项目根目录,加载自己的模型:
cd ..
python eval_llm.py --load_from ./model --weight full_sft
准备一小组固定问题,包含训练样本之外的表达、需要拒答的问题和简单事实题。记录回答错误与生成速度,比只挑一段顺畅对话更容易发现数据或训练中的问题。
聊天界面和下一步实验

仓库提供 Streamlit WebUI。使用 Transformers 格式模型时,需要先把模型文件夹复制到 scripts 目录,让界面扫描到权重,再在该目录运行 streamlit run web_demo.py。图中是作者提供的工具调用示例,展示结果不代表这些工具或模型在实际任务中的准确率。
基础流程完成后,可以继续看 LoRA、DPO、GRPO 或 Agentic RL。每一阶段都对应不同的数据和目标,学习时逐项增加,更容易判断是哪项改动影响了回答。
项目提到的“两小时、三元”是单张 RTX 3090 上完成一轮 SFT 的时间和相应 GPU 租费,不能作为整个复现过程的固定预算。本文检查了代码与公开文档,未执行模型训练;配图是项目发布的原图。
相关资料:GitHub 项目 · 依赖清单 · 预训练脚本 · SFT 脚本 · 推理脚本 · WebUI · Apache 2.0 许可证
复制链接,保存或分享这篇文章。



