MiniMind-V 自定义训练指南:用你的数据集适配自己的 VLM 任务

MiniMind-V 自定义训练指南:用你的数据集适配自己的 VLM 任务

【免费下载链接】minimind-v 👀 Train a 65M-parameter VLM from scratch in just 2h! 【免费下载链接】minimind-v 项目地址: https://gitcode.com/gh_mirrors/mi/minimind-v

MiniMind-V 让你在 2 小时内从 65M 参数的基座权重训出一个能看图、能对话的视觉语言模型,全程只需一条训练命令加一份 parquet 数据。

🎯 它适合解决什么问题

  • 用自有图文数据训练垂直场景的看图问答,如商品图描述、医疗影像初筛
  • 验证"视觉编码器 + 投影层 + 小 LLM"这条训练链路,成本约 2 小时、一张消费级显卡
  • 小团队低成本复现多模态训练流程:预训练对齐 + 监督微调两阶段,产出物是一个可直接推理的 .pth 权重

MiniMind-V 整体架构就是视觉编码器、投影层和 LLM 三部分:图片被编码成视觉 token,经投影层转换后与文本 token 拼接进 LLM 统一处理。

MiniMind-V 视觉语言模型架构图

📋 准备清单

动手前把这五项备齐,缺任何一项训练都会在初始化阶段报错:

项目存放位置备注
仓库代码当前目录git clone --depth 1 https://gitcode.com/gh_mirrors/mi/minimind-v 后安装 requirements.txt
SigLIP2 视觉编码器model/siglip2-base-p32-256-ve读取图片并编码为视觉特征
MiniMind 语言模型权重out/llm_768.pth两阶段训练共用的基座 LLM
训练数据dataset/sft_i2t.parquet(可选 pretrain_i2t.parquet)SFT 单文件 290 万条,已合并 caption 子集,可跳过 pretrain
CUDA 环境Python 3.10 + CUDA 12.x先用 torch.cuda.is_available() 确认可用

🔁 核心流程:从数据到权重文件

整个流程分数据 → 配置 → 训练 → 验证四步,约 2 小时跑完。

MiniMind-V 图片与文本的输入处理流程

数据准备

这一步是把你的图文对整理成训练脚本能直接读取的 parquet 文件。每行两列:conversations 是 JSON 字符串,image_bytes 是图片字节,user 内容里的 <image> 占位符数量决定读几张图,按顺序一一对应。单图对话结构如下:

{"conversations": "[{\"role\":\"user\",\"content\":\"这张图片里有什么?<image>\"},{\"role\":\"assistant\",\"content\":\"图片中有一只气球狗\"}]", "image_bytes": "<图片字节>"}

多图任务就写多个 <image>,image_bytes 放字节列表。自己的数据集整理成同样的列结构、放到 dataset/ 下即可,加载逻辑在 数据加载模块,它负责把 JSON 对话拼成 prompt、切出只监督 assistant 部分的 labels。

训练配置

配置不靠改脚本,全部用命令行参数传给训练脚本:

参数作用说明
--epochs / --batch_size训练轮数 / 批大小预训练默认 2 轮、bs16;SFT 默认 bs4
--learning_rate初始学习率预训练 4e-4,SFT 5e-6
--max_seq_len截断长度预训练 450,SFT 768
--from_weight基础权重llm 或 pretrain_vlm
--data_path数据路径默认指向 dataset/ 下的 parquet,换成你的文件路径即可接入自有数据集

冻结策略由 --freeze_llm 控制:预训练默认值 2(完全冻结 LLM,只训投影层),SFT 默认值 1(只放开 LLM 首尾层)。

训练执行

预训练先让投影层完成图文对齐,SFT 再教模型对话格式:

# 阶段一:图文对齐预训练
python trainer/train_pretrain_vlm.py --epochs 2 --from_weight llm
# 阶段二:对话监督微调(基于预训练权重)
python trainer/train_sft_vlm.py --epochs 2 --from_weight pretrain_vlm

日志每 100 步打印一次 loss,预训练阶段的下降曲线参考下图,收敛平滑即正常:

MiniMind-V 预训练损失下降曲线

训练中断不用重跑,原命令追加 --from_resume 1 会从最近检查点继续。

产出验证

SFT 结束后 out/ 下生成 sft_vlm_768.pth,直接用它对评估图片批量提问验证效果:

python eval_vlm.py --load_from model --weight sft_vlm

它会遍历 dataset/eval_images 下的每张图,流式打印模型描述并给出 tokens/s 速度:

MiniMind-V SFT 监督微调损失曲线

⚙️ 参数速查

参数作用推荐值备注
--epochs训练轮数预训练 2 / SFT 2数据量大时再上调
--learning_rate初始学习率预训练 4e-4 / SFT 5e-6两阶段差异很大,别混用
--batch_size批大小预训练 16 / SFT 4SFT 序列更长,显存占用更高
--freeze_llmLLM 冻结策略预训练 2 / SFT 10 全训、1 放开首尾层、2 只训投影层
--from_resume断点续训开关中断后传 1检查点自动存于 checkpoints/

🛟 常见问题与避坑

报"文件不存在"或读不到数据? 检查 --data_path 指向的 parquet 是否在 dataset/ 下,且列名必须是 conversations 和 image_bytes。

图片数量与占位符不匹配? <image> 个数必须等于该条样本的图片字节数,多一个少一个都会错位或报错。

显存不够怎么办? 优先调小 --batch_size,再用 --accumulation_steps 补偿等效批量,不要盲目堆卡。

训练中途被中断了? 别删文件重跑,原命令加 --from_resume 1,模型、优化器、scaler 状态都会从 checkpoints/ 恢复。

📈 下一步

用一份高质量小数据集就能拿到可交互的看图模型,数据质量比规模更重要。现在就跑 WebUI 演示 体验交互,或者调整 --epochs 重新训练验证效果 🚀

【免费下载链接】minimind-v 👀 Train a 65M-parameter VLM from scratch in just 2h! 【免费下载链接】minimind-v 项目地址: https://gitcode.com/gh_mirrors/mi/minimind-v

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

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值