综合介绍
MiniMind 是一个开源项目,由开发者 jingyaogong 创建。它的核心目标是让普通人也能快速训练自己的 AI 模型。MiniMind 主打特点是用 2 小时在单张 NVIDIA 3090 显卡上从零训练一个 26M 参数的 GPT 模型,成本仅约 3 元人民币。项目提供从预训练到微调的全流程代码,包括数据集清洗、预训练、指令微调、LoRA、DPO 和模型蒸馏等,还支持视觉多模态扩展 MiniMind-V。所有代码基于 PyTorch 从零重构,不依赖第三方抽象接口。截至 2025 年 2 月,MiniMind 已推出多个版本,最小模型仅 25.8M 参数,社区反响热烈。
功能列表
- 支持 2 小时内从零训练 26M 参数 GPT 模型,单张 3090 显卡即可运行。
- 提供预训练、指令微调、LoRA、DPO 和模型蒸馏的全流程代码。
- 包含视觉多模态扩展 MiniMind-V,可处理图像和文本。
- 支持单机单卡和多卡训练,兼容 DeepSpeed 和 wandb 可视化。
- 提供 OpenAI API 协议服务端,方便接入第三方聊天界面。
- 开源高质量数据集和模型权重,可直接下载或二次开发。
- 支持 tokenizer 训练和自定义词表,灵活调整模型结构。
使用帮助
MiniMind 的使用分为安装、训练和推理三步。以下是详细指南,帮助用户快速上手。
安装流程
- 环境准备
- 需要 Python 3.10 或更高版本。
- 检查显卡支持 CUDA,运行以下代码:
import torch print(torch.cuda.is_available())
如果返回
True
,表示可用;否则需安装对应 PyTorch 版本。 - 安装 Git,用于克隆代码。
- 克隆项目
在终端输入:
git clone https://github.com/jingyaogong/minimind.git
cd minimind
- 安装依赖
使用清华镜像加速安装:
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
若遇到问题,可手动安装 torch
或 flash_attn
。
- 下载数据集
- 在 GitHub README 或 https://www.modelscope.cn/datasets/gongjy/minimind_dataset/files 下载数据集。
- 创建
./dataset
文件夹,解压文件到此目录。 - 推荐下载
pretrain_hq.jsonl
(1.6GB)和sft_mini_512.jsonl
(1.2GB)。
训练模型
- 预训练
- 运行脚本开始预训练:
python train_pretrain.py
- 默认使用
pretrain_hq.jsonl
,输出权重保存为pretrain_*.pth
。 - 多卡加速:
torchrun --nproc_per_node 2 train_pretrain.py
- 指令微调
- 运行微调脚本:
python train_full_sft.py
- 默认使用
sft_mini_512.jsonl
,输出权重保存为full_sft_*.pth
。 - 多卡支持同上。
- LoRA 微调
- 准备领域数据(如
lora_medical.jsonl
),运行:python train_lora.py
- 输出权重保存为
lora_xxx_*.pth
。
- DPO 强化学习
- 使用
dpo.jsonl
数据,运行:python train_dpo.py
- 输出权重保存为
rlhf_*.pth
。
- 可视化训练
- 添加参数
--use_wandb
,如:python train_pretrain.py --use_wandb
- 在 wandb 官网查看训练曲线。
使用模型推理
- 命令行推理
- 下载模型权重(如 MiniMind2):
git clone https://huggingface.co/jingyaogong/MiniMind2
- 运行推理:
python eval_model.py --load 1 --model_mode 2
- 参数说明:
--load 1
用 transformers 格式,--model_mode 2
用 MiniMind2。
- 网页聊天
- 安装 Streamlit:
pip install streamlit
- 启动界面:
cd scripts streamlit run web_demo.py
- 在浏览器访问
localhost:8501
,即可对话。
- API 服务
- 启动服务端:
python serve_openai_api.py
- 测试接口:
curl http://localhost:8000/v1/chat/completions -H "Content-Type: application/json" -d '{"model": "MiniMind2", "messages": [{"role": "user", "content": "你好"}], "max_tokens": 512}'
特色功能操作
- 视觉多模态 (MiniMind-V)
- 下载 MiniMind-V 模型:
git clone https://huggingface.co/jingyaogong/MiniMind2-V
- 下载 CLIP 视觉模型到
./model/vision_model
:
git clone https://huggingface.co/openai/clip-vit-base-patch16
- 运行:
python eval_vlm.py --load 1
- 输入文本和图片,模型会生成描述。
- 自定义训练
- 将数据整理为
.jsonl
格式,放入./dataset
。 - 修改
./model/LMConfig.py
参数(如d_model
或n_layers
)。 - 按上述步骤训练。
注意事项
- 显存不足时,调整
batch_size
或增加accumulation_steps
。 - 数据集较大时,分批处理,避免内存溢出。
- 超长上下文支持调整 RoPE 参数,最高可达 2048。
应用场景
- AI 学习
MiniMind 提供全套代码和数据,适合初学者研究大模型训练流程。 - 领域定制
用私有数据训练模型,如医疗问答或客服对话。 - 低成本部署
26M 参数模型适合嵌入式设备,如智能家居。 - 教学演示
教师可用其展示 AI 训练过程,学生可动手实践。
QA
- MiniMind 需要多强硬件?
单张 NVIDIA 3090 显卡即可训练,CPU 也能跑但速度慢。 - 2 小时训练靠谱吗?
是的,基于 3090 单卡测试,26M 参数模型从零训练只需约 2 小时。 - 可以商用吗?
可以,项目用 Apache 2.0 许可证,允许免费使用和修改。 - 如何扩展上下文长度?
调整 RoPE 参数或用更长数据微调,最高支持 2048。