☰
MiniMind快速实战:2小时3元从零训出64M小模型
2026/10/27 12:22:14 网站建设 项目流程

MiniMind快速实战:2小时3元从零训出64M小模型

【免费下载链接】minimind🧠 Train a 64M-parameter LLM from scratch in just 2h!项目地址: https://gitcode.com/GitHub_Trending/min/minimind

MiniMind 是一个从零开始的迷你大模型训练项目,覆盖预训练、SFT(监督微调,教模型听话地对话)、LoRA(低秩适配,只训练一小撮参数)、强化学习的全链路代码。单张 3090 跑通轻量数据组合约需 2.3 小时、成本约 3 元,产出一个 64M 参数的对话模型。

一、先说结论

  • 能做什么:从 0 训练 64M 对话模型,或给现成模型挂医疗、自我认知等垂域 LoRA
  • 花多少代价:3090 租卡约 1.3 元/小时,完整 Zero 训练路径约 2.31 小时、3.0 元(README 实测值)
  • 硬件门槛:单张消费级显卡;LoRA 阶段 CPU 也能较快完成
  • 适合谁:想逐行看懂 LLM 训练链路的人、想低成本做垂域适配的应用开发者

二、为什么是它:64M 参数,约为 GPT-3 的 1/2700

minimind-3 采用 8 层、768 维的 Transformer Decoder-Only 结构(对齐 Qwen3 生态),词表仅 6400,核心算法全部用 PyTorch 原生实现,不套 transformers/peft 的封装。体量小意味着单卡跑完全程,原生实现意味着每一行都能改。

结构参数定义在 model/model_minimind.py,改层数、维度都在这一个文件里。

三、最短路径跑通:10分钟对话 + 2小时从零训练

1. 克隆仓库并安装依赖(1分钟)

git clone https://gitcode.com/GitHub_Trending/min/minimind cd minimind && pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple

完成标志:pip 输出 Successfully installed,无红色报错。

2. 下载官方权重并进入对话(10分钟)

modelscope download --model gongjy/minimind-3 --local_dir ./minimind-3

完成标志:./minimind-3/下出现 config.json 和 .safetensors 权重文件。

python eval_llm.py --load_from ./minimind-3

输入 0(自动测试)会依次回答 8 道测试题并打印 decode 速度;输入 1 进入手动问答。回答连贯、身份自洽即算跑通。想开网页界面:把模型文件夹复制进scripts/后执行cd scripts && streamlit run web_demo.py。

3.(可选)2 小时从零训练出对话模型

先下载轻量数据pretrain_t2t_mini.jsonl(1.2GB)与sft_t2t_mini.jsonl(1.6GB),放入./dataset/,然后按阶段执行:

cd trainer && python train_pretrain.py

完成标志:out/pretrain_768.pth生成,loss 从 8 左右降到 3 附近并持续下降。

python train_full_sft.py

完成标志:out/full_sft_768.pth生成。

用python eval_llm.py --weight full_sft即可对话,回答应明显优于预训练阶段的"接龙式"输出。训练中断后加--from_resume 1可从checkpoints/目录自动续训。

四、数据与配置:jsonl 一行一个样本

所有数据统一为 jsonl,放进./dataset/。SFT/LoRA 用多轮对话格式,一行一个样本:

{"conversations": [{"role": "user", "content": "颈椎病的人枕头多高最好?"}, {"role": "assistant", "content": "应根据颈椎曲度选择……"}]}
  • 快速复现组合:pretrain_t2t_mini.jsonl+sft_t2t_mini.jsonl(合计约 2.8GB)
  • 完整主线:pretrain_t2t.jsonl(10GB)+sft_t2t.jsonl(14GB)
  • 格式与长度换算(中文约 1.5~1.7 字符/token)的规范说明见 dataset/dataset.md
  • 垂域 LoRA:按同样格式自拟问答存为dataset/lora_medical.jsonl等,trainer/train_lora.py 的--data_path默认就指向该路径;基于已 SFT 的权重执行cd trainer && python train_lora.py --epochs 3即可,数据格式与垂域样例 README 中有现成示例

五、进阶调优:免训练加长上下文 + 思考开关

RoPE 4 倍外推:在推理参数加--inference_rope_scaling,基于 YaRN 算法把上下文从训练长度外推到 2048 以上,处理长医疗报告、长文档时不用重训。

自适应思考:加--open_thinking 1,模型先输出 思考过程再给答案,同一个权重按需切换"直答/思考"两种模式。

六、部署与成本:一张表看懂

场景硬件要求参考指标适用
对话部署单卡 GPU 或纯 CPU64M 参数,fp16 权重约 130MB,推理走eval_llm.py --show_speed查看 tokens/s个人、边缘设备
LoRA 垂域微调CPU 可跑,GPU 更快只训练低秩分支,权重文件仅几 MB 级医疗等领域适配
完整 Zero 训练单卡 3090(24GB)pretrain+SFT 约 2.31h复现、教学

按 3090 租卡 1.3 元/小时计算,完整 Zero 训练约 3.0 元;LoRA 适配在 CPU 上完成,几乎不产生额外算力费用。

七、常见问题:3 个新手坑

现象:train_lora.py报数据文件不存在。原因:仓库不含lora_medical.jsonl,默认数据路径指向它。处理:按 README 示例在./dataset/下自拟数据,或用--data_path指定已有文件。

现象:serve_openai_api.py带--lora_weight时加载失败。原因:服务端脚本固定从out/lora/子目录读取 LoRA 权重。处理:把训练产物out/lora_medical_768.pth复制到out/lora/再启动。

现象:回答长文本时英文崩坏、超长输入被截断。原因:训练默认max_seq_len仅 340~768 token。处理:推理加--inference_rope_scaling外推至 2048;需更长则训练时调大该参数。

结尾

MiniMind 把 LLM 完整训练链路压缩到"一个下午能跑完"的量级:2.3 小时、3 元、64M 参数,想改结构、换数据都从这一个仓库开始。觉得有用记得给仓库点个 Star,遇到 bug 或想扩展功能,直接提 Issue / PR。

⚠️ 若将 LoRA 适配用于医疗、金融等垂域:模型输出仅作辅助参考,不能直接用于诊断或投资决策,请先确认相关行业的合规要求。

【免费下载链接】minimind🧠 Train a 64M-parameter LLM from scratch in just 2h!项目地址: https://gitcode.com/GitHub_Trending/min/minimind

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询