尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

四步从零训出 MiniMind 64M 语言模型的对话能力

四步从零训出 MiniMind 64M 语言模型的对话能力 四步从零训出 MiniMind 64M 语言模型的对话能力【免费下载链接】minimind Train a 64M-parameter LLM from scratch in just 2h!项目地址: https://gitcode.com/GitHub_Trending/min/minimind本文带你在一块个人级 GPU 上用不到 3GB 的开源数据把 64M 参数的 MiniMind 语言模型从预训练一路训到能中文对话全程约 2.3 小时对应单张 NVIDIA 3090 的租卡成本约 3 元估算值按 1.3 元/小时计。训练链路是原生 PyTorch 实现不依赖第三方高层框架每一步都能看清内部逻辑。适合想搞懂 LLM 训练全貌、或打算用小模型验证垂直场景的开发者。开始前的前置清单 ✅先对齐三件事环境、数据、依赖。硬件单卡即可官方实测环境是 NVIDIA 309024GB64M 规模显存压力很低。只有 CPU 时预训练和 SFT 会很慢但 LoRA 阶段官方说明在 CPU 上也能较快地跑。环境Python 3.10 以上PyTorch 带 CUDA 后端用torch.cuda.is_available()确认为True。数据两个文件放进./dataset/pretrain_t2t_mini.jsonl1.2GB和sft_t2t_mini.jsonl1.6GB从 README 给出的数据集地址下载无需自行清洗。模型结构训出来的是 Decoder-only Transformer8 层、隐藏维度 768、词表 6400对齐 Qwen3 生态方便后续转 transformers / vllm / ollama 格式。克隆仓库并装依赖git clone https://gitcode.com/GitHub_Trending/min/minimind cd minimind pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple预期看到依赖按 requirements.txt 全部安装完成无报错。核心流程四步走 1. 摆数据数据已是统一 jsonl 格式预训练集是纯文本{text: ...}SFT 集是多轮对话且已混入 Tool Call 样本格式细节见 dataset/dataset.md。下载后ls dataset确认两个文件就位即可这一步没有额外命令。2. 预训练跑预训练脚本默认配置维度 768、学习率 5e-4、max_seq_len 340、2 个 epoch首轮直接用无需改参cd trainer python train_pretrain.py预期看到每 100 步打印一行 loss、lr 与剩余时间loss 从高值稳步下降结束后在out/目录落盘pretrain_768.pth。3. 指令微调SFT在预训练权重之上做指令微调让模型学会多轮对话模板python train_full_sft.py预期看到同样每 100 步一行 loss 日志结束后产出out/full_sft_768.pth。中途断掉的话加上--from_resume 1重跑会自动从./checkpoints/的检查点恢复进度不用从头再来。4. 可选LoRA 领域适配要接自己的领域数据医疗、客服等时建议走 LoRA 而不是全参微调基模冻结只更新低秩矩阵实现在 model/model_lora.py默认 rank 16。把私有数据按多轮对话格式存成lora_xxx.jsonl再执行cd trainer python train_lora.py --lora_name lora_medical --data_path ../dataset/lora_medical.jsonl预期看到loss 日志与上述一致产出仅几 MB 的out/lora_medical_768.pth。想把 LoRA 合并回基模导出完整权重运行 scripts/convert_model.py 即可。怎么判断模型可用 先看行为再看数字。最快的判断方式是用两个阶段的权重各跑一次交互评测python eval_llm.py --weight pretrain python eval_llm.py --weight full_sft预期看到pretrain 权重只会接龙问话会答非所问full_sft 权重能做多轮中文问答并遵循指令。如果后者也答非所问问题出在训练环节数据路径、文件大小而不是推理环节。客观指标上官方 C-Eval / CMMLU 约 25 分与 100M 以上档位的模型处于同一水平线想用 lm-evaluation-harness 复现可以跑选择题任务。SFT 数据里混入的工具调用能力可以单独验证python eval_toolcall.py --weight full_sft能稳定输出并解析 tool_calls 就算通过。结论标准一句话full_sft 权重能稳定遵循指令、连答几个基础问题不跑偏即可用。落到实际使用四种部署方式对比方式启动方式适用场景CLI 交互python eval_llm.py --weight full_sft调试、快速验证Streamlit WebUI模型放入./scripts/后streamlit run web_demo.py演示、多轮对话界面OpenAI 兼容 APIpython scripts/serve_openai_api.py端口 8998接入现有业务系统第三方推理引擎ollama run或vllm serve生产级服务接业务系统推荐走 OpenAI 协议发一条标准请求即可curl http://localhost:8998/v1/chat/completions -H Content-Type: application/json -d {model:minimind,messages:[{role:user,content:你好}]}预期看到与 OpenAI 相同格式的响应体可以直接挂接兼容该协议的聊天前端。注意 API 服务与 WebUI 加载的是 transformers 格式权重手里若是原生 torch 权重先转换。WebUI 支持思考展示与多轮 Tool Use 交互常见坑位与调优建议 ️Qloss 变 NaN 或降得极慢先确认torch.cuda.is_available()为真、设备没有落在 CPU 上混合精度默认 bfloat163090 上不用动。如果是中断后状态异常别从头重训加--from_resume 1从检查点续训。Q回答是英文乱句或完全不遵循指令大概率在测预训练阶段的权重它还没学指令跟随。换--weight full_sft再测full_sft 仍异常时检查数据路径和文件是否完整1.2GB / 1.6GB截断下载会解析失败。Q推理明显偏慢64M 的模型在 GPU 上应很轻快慢说明没走 CUDA核对 PyTorch 版本与驱动要上量则换 vllm / ollama 等推理引擎前提是先有 transformers 格式权重。调参点一max_seq_len。默认 340 token官方对 mini 数据的建议值约 768调大截断更多长样本调小 padding 浪费更多按自己数据的长度分布找平衡。调参点二免训练扩长上下文。推理时给 eval_llm.py 加--inference_rope_scaling用 YaRN 外推 RoPE 位置编码官方对比实验显示长文本 PPL 明显下降上下文可扩到 2048 以上而无需重新训练。收尾与下一步从摆数据到拿到对话权重实际只有预训练和 SFT 两条命令mini 数据组合在 3090 上约 2.3 小时、成本约 3 元估算值。想继续加码仓库里 DPO、PPO/GRPO/CISPO、知识蒸馏、Agentic RL 的脚本和配套数据dpo.jsonl、rlaif.jsonl都已开源加--use_moe 1还能切到 198M-A64M 的 MoE 版本练手。这条从 0 到 1 的链路也是理解大模型后训练最好的入门材料。提示该模型参数规模有限仅适用于技术验证与学习医疗、法律等垂直场景不能替代专业判断。【免费下载链接】minimind Train a 64M-parameter LLM from scratch in just 2h!项目地址: https://gitcode.com/GitHub_Trending/min/minimind创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表