AI个人学习
和实操指南
讯飞绘镜

MiniMind-V:1小时训练26M参数视觉语言模型

综合介绍

MiniMind-V 是一个开源项目,托管于 GitHub,旨在帮助用户在 1 小时内训练一个仅 2600 万参数的轻量级视觉语言模型(VLM)。它基于 MiniMind 语言模型,新增视觉编码器和特征投影模块,支持图像和文本联合处理。项目提供从数据集清洗到模型推理的完整代码,训练成本低至约 1.3 元人民币,适合单张 GPU(如 NVIDIA 3090)。MiniMind-V 强调简单易用,代码改动少于 50 行,适合开发者实验和学习视觉语言模型的构建过程。

MiniMind-V:1小时训练26M参数视觉语言模型-1


 

功能列表

  • 提供 2600 万参数视觉语言模型的完整训练代码,支持单 GPU 快速训练。
  • 使用 CLIP 视觉编码器,处理 224x224 像素图像,生成 196 个视觉 token。
  • 支持单图和多图输入,结合文本进行对话、图像描述或问答。
  • 包含数据集清洗、预训练和监督微调(SFT)的全流程脚本。
  • 提供 PyTorch 原生实现,支持多卡加速,兼容性强。
  • 包含模型权重下载,支持 Hugging Face 和 ModelScope 平台。
  • 提供 Web 界面和命令行推理,便于测试模型效果。
  • 支持 wandb 工具,记录训练过程中的损失和性能。

 

使用帮助

MiniMind-V 的使用流程包括环境配置、数据准备、模型训练和效果测试。以下详细介绍每个步骤,帮助用户快速上手。

环境配置

MiniMind-V 需要 Python 环境和 GPU 支持。以下是安装步骤:

  1. 克隆代码
    在终端运行以下命令,下载项目代码:

    git clone https://github.com/jingyaogong/minimind-v
    cd minimind-v
    
  2. 安装依赖
    项目提供 requirements.txt 文件,包含所需库。运行以下命令:

    pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
    

    建议使用 Python 3.9 或以上版本。确保 PyTorch 支持 CUDA(若有 GPU)。可运行以下代码验证:

    import torch
    print(torch.cuda.is_available())
    

    输出 True 表示 GPU 可用。

  3. 下载 CLIP 模型
    MiniMind-V 使用 CLIP 模型(clip-vit-base-patch16)作为视觉编码器。运行以下命令下载并放置到 ./model/vision_model

    git clone https://huggingface.co/openai/clip-vit-base-patch16 ./model/vision_model
    

    也可从 ModelScope 下载:

    git clone https://www.modelscope.cn/models/openai-mirror/clip-vit-base-patch16 ./model/vision_model
    
  4. 下载基座语言模型权重
    MiniMind-V 基于 MiniMind 语言模型,需下载语言模型权重到 ./out 目录。例如:

    wget https://huggingface.co/jingyaogong/MiniMind2-V-PyTorch/blob/main/lm_512.pth -P ./out
    

    或下载 lm_768.pth,具体视模型配置而定。

数据准备

MiniMind-V 使用约 57 万张预训练图像和 30 万条指令微调数据,存储空间约 5GB。操作步骤如下:

  1. 创建数据集目录
    在项目根目录创建 ./dataset 文件夹:

    mkdir dataset
    
  2. 下载数据集
    从 Hugging Face 或 ModelScope 下载数据集,包含 *.jsonl 问答数据和 *images 图片数据:

    • Hugging Face: https://huggingface.co/datasets/jingyaogong/minimind-v_dataset
    • ModelScope: https://www.modelscope.cn/datasets/gongjy/minimind-v_dataset
      下载后解压图片数据到 ./dataset
    unzip pretrain_images.zip -d ./dataset
    unzip sft_images.zip -d ./dataset
    
  3. 验证数据集
    确保 ./dataset 包含以下文件:

    • pretrain_vlm_data.jsonl:预训练数据,约 57 万条。
    • sft_vlm_data.jsonl:单图微调数据,约 30 万条。
    • sft_vlm_data_multi.jsonl:多图微调数据,约 1.36 万条。
    • 图片文件夹:包含预训练和微调的图像文件。

模型训练

MiniMind-V 训练分为预训练和监督微调,支持单卡或多卡加速。

  1. 配置参数
    编辑 ./model/LMConfig.py,设置模型参数。例如:

    • 小型模型:dim=512n_layers=8
    • 中型模型:dim=768n_layers=16
      这些参数决定模型大小和性能。
  2. 预训练
    运行预训练脚本,学习图像描述能力:

    python train_pretrain_vlm.py --epochs 4
    

    输出权重保存为 ./out/pretrain_vlm_512.pth(或 768.pth)。单张 NVIDIA 3090 约需 1 小时完成 1 个 epoch。冻结 CLIP 模型,仅训练投影层和语言模型最后一层。

  3. 监督微调(SFT)
    使用预训练权重进行微调,优化对话能力:

    python train_sft_vlm.py --epochs 4
    

    输出权重保存为 ./out/sft_vlm_512.pth。此步骤训练投影层和语言模型全部参数。

  4. 多卡训练(可选)
    若有 N 张显卡,使用以下命令加速:

    torchrun --nproc_per_node N train_pretrain_vlm.py --epochs 4
    

    替换 train_pretrain_vlm.py 为其他训练脚本(如 train_sft_vlm.py)。

  5. 监控训练
    可使用 wandb 记录训练损失:

    python train_pretrain_vlm.py --epochs 4 --use_wandb
    

    在 wandb 官网查看实时数据。

效果测试

训练完成后,可测试模型的图像对话能力。

  1. 命令行推理
    运行以下命令加载模型:

    python eval_vlm.py --load 1 --model_mode 1
    
    • --load 1:从 Hugging Face 加载 transformers 格式模型。
    • --load 0:从 ./out 加载 PyTorch 权重。
    • --model_mode 1:测试微调模型;0 测试预训练模型。
  2. Web 界面测试
    启动 Web 界面:

    python web_demo_vlm.py
    

    访问 http://localhost:8000,上传图片并输入文本测试。

  3. 输入格式
    MiniMind-V 使用 196 个 @@@ 占位符表示一张图片。例如:

    @@@...@@@\n这张图片是什么内容?
    

    多图输入示例:

    @@@...@@@\n第一张图是什么?\n@@@...@@@\n第二张图是什么?
    
  4. 下载预训练权重
    若不训练,可直接下载官方权重:

注意事项

  • 推荐显存 24GB(如 RTX 3090)。若显存不足,减小批次大小(batch_size)。
  • 确保数据集路径正确,*.jsonl 和图片文件需放在 ./dataset
  • 训练时冻结 CLIP 模型,降低算力需求。
  • 多图对话效果有限,建议优先测试单图场景。

 

应用场景

  1. AI 算法学习
    MiniMind-V 提供简洁的视觉语言模型代码,适合学生理解跨模态模型原理。用户可修改代码,实验不同参数或数据集。
  2. 快速原型验证
    开发者可基于 MiniMind-V 构建图像对话应用原型。它轻量高效,适合低算力设备,如个人电脑或嵌入式系统。
  3. 教育培训工具
    高校或机构可将 MiniMind-V 用于 AI 课程,展示模型训练全流程。代码注释清晰,适合课堂实践。
  4. 低成本实验
    项目训练成本低,适合预算有限的团队测试多模态模型效果,无需高性能服务器。

 

QA

  1. MiniMind-V 支持多大图片?
    默认处理 224x224 像素图片,受 CLIP 模型限制。数据集图片可能压缩至 128x128 以节省空间。未来可尝试更大分辨率 CLIP 模型。
  2. 训练需要多少时间?
    单张 NVIDIA 3090 上,预训练 1 个 epoch 约 1 小时,微调稍快。具体时间因硬件和数据量而异。
  3. 可以不预训练直接微调吗?
    可以。直接下载官方预训练权重,运行 train_sft_vlm.py 进行微调。
  4. 支持哪些语言?
    主要支持中文和英文,效果取决于数据集。用户可通过微调扩展其他语言。
  5. 多图对话效果如何?
    当前多图对话能力有限,建议优先使用单图场景。未来可通过更大模型和数据集改进。
未经允许不得转载:首席AI分享圈 » MiniMind-V:1小时训练26M参数视觉语言模型
zh_CN简体中文