MiniMind:亲手从零训练一个小型语言模型
一分钟看懂
MiniMind 是一套面向学习和实验的大语言模型开源项目。它用较小的模型规模和完整、透明的训练代码,把预训练、指令微调、LoRA、偏好对齐、强化学习、工具调用、蒸馏和部署串成一条可复现的链路。它的目标不是与商业大模型比拼能力,而是让个人开发者有机会真正看懂并跑通“一个语言模型是怎样做出来的”。
主线 MiniMind-3 的稠密模型约 6400 万参数,项目声称在单张 RTX 3090 上完成一次 SFT 约需两小时;“3 元成本”也特指这一阶段的云 GPU 租用估算,并不代表所有训练过程都只需这个成本。
你可以用它做什么
学习大模型的完整训练流程
项目没有只封装成几个高层接口,而是用原生 PyTorch 实现关键结构和算法。学习者可以从 Tokenizer、数据集和模型结构开始,逐步运行预训练、SFT、DPO、PPO、GRPO、CISPO 等环节,观察每一步怎样改变模型行为。
用有限设备完成可复现实验
小参数量让普通个人 GPU 也能参与训练。你可以缩小数据集验证流程、修改网络结构或损失函数,再对比训练曲线与评测结果。所有训练脚本支持检查点保存和恢复,较长实验中断后不必完全重来。
尝试工具调用和 Agent 训练
当前数据与模板包含思考、工具请求和工具结果标记,并提供多轮 Tool Use 场景下的 Agentic RL 训练脚本。它适合用来理解“模型如何学会选择工具”,但小模型能力有限,更适合教学验证,不应预期直接达到大型 Agent 产品的稳定性。
部署自己的小模型服务
训练或下载权重后,可以通过命令行、Streamlit WebUI 或兼容 OpenAI API 的服务端进行推理。项目还兼容 Transformers、llama.cpp、vLLM、Ollama 和 Llama-Factory 等生态,便于把实验结果接入现有工具。
项目包含什么
- Dense 与 MoE 模型结构,以及配套 Tokenizer 训练代码。
- 预训练、全参数 SFT、LoRA、DPO 和多种 RLAIF/强化学习流程。
- 数据收集、蒸馏、清洗、去重和各训练阶段的数据样例。
- 工具调用、Agentic RL、自适应思考、长文本外推与模型蒸馏实验。
- 单卡、多卡 DDP、DeepSpeed、训练可视化和断点续训支持。
- C-Eval、C-MMLU、OpenBookQA 等评测入口。
- 命令行推理、WebUI 和 OpenAI 兼容接口。
- MiniMind-V、MiniMind-O、扩散语言模型和线性注意力等扩展方向。
适合哪些人
它最适合想理解 LLM 底层结构的学生、算法初学者和希望验证训练想法的开发者。课程教学也可以按训练阶段设计实验,让学生不只调用现成 API。
如果目标是搭建高质量生产问答、复杂代码 Agent 或通用知识助手,应优先选成熟的大模型。MiniMind 的价值主要在可读、可改、可训练,而不是成品效果。
怎么开始使用
项目建议使用 Python 3.10,并先确认 PyTorch 能识别 CUDA。最省事的路线是先下载官方已训练模型,用 eval_llm.py 或 WebUI 验证推理;确认环境正常后,再下载 mini 数据集依次执行预训练和 SFT。初次学习不建议马上重训 Tokenizer,因为词表变化会影响权重、数据和推理生态的兼容。
训练前应记录显卡、CUDA、依赖版本、数据集和随机种子。项目给出的速度与成本基于特定硬件和阶段,自己的设备、数据规模和参数配置会产生明显差异。
使用前需要知道
训练模型涉及算力、显存、磁盘和数据质量。即便模型很小,走完整个训练与评测流程也比运行一次演示复杂。公开数据可能包含错误、偏见或版权风险,迁移到业务领域时要重新审查数据来源。
仓库更新较快,新旧权重、参数名和推理方式可能不兼容。复现实验应固定版本,并严格以对应版本文档为准。不要仅凭一次聊天示例判断模型能力,至少要用独立测试集评估事实性、安全性和任务效果。