中文 | English
- 此项目旨在从0开始,仅用1.3块钱成本 + 1小时!即可训练出26M参数的超小多模态视觉语言模型MiniMind-V。
-
MiniMind-V最小版本体积仅为 GPT3 的约
$\frac{1}{7000}$ ,力求做到个人GPU也可快速推理甚至训练。 - MiniMind-V是MiniMind纯语言模型的视觉能力额外拓展。
- 项目同时包含了VLM大模型的极简结构、数据集清洗、预训练(Pretrain)、监督微调(SFT)等全过程代码。
- 这不仅是一个开源VLM模型的最小实现,也是入门视觉语言模型的简明教程。
- 希望此项目能为所有人提供一个抛砖引玉的示例,一起感受创造的乐趣!推动更广泛AI社区的进步!
为防止误解,“1小时” 基于NVIDIA 3090硬件设备(单卡)测试
1 epoch
,“1.3块钱” 指GPU服务器租用成本。
“用乐高拼出一架飞机,远比坐在头等舱里飞行更让人兴奋!” 构建VLM范式的多模态大模型是否真的如想象中那样复杂?它的代码实现到底如何? 训练过程究竟难不难?那么现在,探索它们的答案,一起感受创造的乐趣吧!
Tip
(截至2025-02-20)MiniMind-V 系列已完成了以下型号模型训练,最小仅需26M (0.026B),即可具备识图和对话的能力!
模型 (大小) | 推理占用 | release |
---|---|---|
MiniMind2-V (104M) | 0.6 GB | 2025.02.20 |
MiniMind2-Small-V (26M) | 1.1 GB | 2025.02.20 |
minimind-v-v1-small (27M) | 0.6 GB | 2024.10.04 |
minimind-v-v1 (109M) | 1.1 GB | 2024.10.04 |
2025-04-27 (newest 🎉)
- 兼容性更新
- 适配「minimind仓库新特性」
- 规范化部分代码
2025-02-20
- MiniMind2-V伴随MiniMind2同步更新
- 大幅减少所有冗余代码,规范代码格式
- 大幅精简模型冗余结构
- 更新数据集格式,拓展新的SFT数据集
- 比前代VLM更优秀的效果!
2024-10-05
- MiniMind-V如期而至,首次开源
分享本人的软硬件配置(仅供参考)
- CPU: Intel(R) Core(TM) i9-10980XE CPU @ 3.00GHz
- RAM: 128 GB
- GPU: NVIDIA GeForce RTX 3090(24GB) * 8
- Ubuntu==20.04
- CUDA==12.2
- Python==3.10.16
- requirements.txt
# 克隆代码仓库
git clone https://github.com/jingyaogong/minimind-v
# 下载clip模型到 ./model/vision_model 目录下
git clone https://huggingface.co/openai/clip-vit-base-patch16
# or
git clone https://www.modelscope.cn/models/openai-mirror/clip-vit-base-patch16
# 下载纯语言模型权重到 ./out 目录下(作为训练VLM的基座语言模型)
https://huggingface.co/jingyaogong/MiniMind2-V-PyTorch/blob/main/lm_512.pth
# or
https://huggingface.co/jingyaogong/MiniMind2-V-PyTorch/blob/main/lm_768.pth
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
git clone https://huggingface.co/jingyaogong/MiniMind2-V
# load=0: load from pytorch model, load=1: load from transformers-hf model
python eval_vlm.py --load 1
python web_demo_vlm.py
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
注:提前测试Torch是否可用cuda
import torch
print(torch.cuda.is_available())
如果不可用,请自行去torch_stable 下载whl文件安装。参考链接
从下文提供的数据集下载链接
下载需要的数据文件(创建./dataset
目录)并放到./dataset
下。
*.jsonl
为问答数据集,*images
为配套的图片数据,下载完成后需要解压图像数据。
注:数据集须知
请预留~5GB空间存放数据集,若无多余空间存放pretrain数据, 可尝试跳过pretrain训练步骤直接进行sft训练。
3.1 预训练(学图像描述)
python train_pretrain_vlm.py --epochs 4
执行预训练,得到
pretrain_vlm_*.pth
作为预训练的输出权重(其中*为模型的dimension,默认为512)
3.2 监督微调(学看图对话方式)
python train_sft_vlm.py --epochs 4
执行监督微调,得到
sft_vlm_*.pth
作为指令微调的输出权重
注:训练须知
所有训练过程默认每隔100步保存1次参数到文件./out/***.pth
(每次会覆盖掉旧权重文件)。
确保需要测试的模型*.pth
文件位于./out/
目录下。
也可以直接去此处下载使用我训练的*.pth
文件。
python eval_vlm.py --model_mode 1 # 默认为0:测试pretrain模型效果,设置为1:测试sft模型效果