用途
finetune-Qwen2-VL 是一个开源代码仓库,旨在为 Qwen2-VL 2B 模型提供快速微调或继续预训练的入门方案。Qwen2-VL 是 Qwen 团队于 2024 年 8 月 29 日发布的多模态视觉语言模型,包含 2B、7B 和 72B 版本。由于 Qwen 团队当时未提供简单的微调或继续预训练代码,该仓库作者编写了简洁透明的微调脚本,方便喜欢自行编写训练循环的开发者使用。
主要能力
- 提供单 GPU 和多 GPU 两种微调脚本(finetune.py 和 finetune_distributed.py)。
- 支持继续预训练。
- 支持视频数据训练(需安装 av 包)。
- 支持 flash_attention2 加速训练和测试。
- 支持混合精度训练(bfloat16 + float32),可改善验证损失。
- 使用 torchvision.io.VideoReader 替代 torchvision.io.read_video 读取视频,速度可提升约 200 倍。
- 包含玩具数据集(train_data/data.json)和测试脚本(test_on_official_model.py、test_on_trained_model_by_us.py)。
- 提供已微调好的模型供下载(GPU 资源不足时使用)。
使用方式
- 准备数据:参考 train_data/data.json 格式准备自己的数据。
- 单 GPU 微调:运行 finetune.py。
- 多 GPU 微调:运行 finetune_distributed.py。
- 测试微调后的模型:修改 test_on_trained_model_by_us.py 中的 model_dir 指定模型路径,然后运行。
- 视频数据训练:需执行 pip install av,并注意视频数据消耗较多 GPU 显存,可设置 batch size 为 1,或在 util/vision_util.py 中降低视频相关配置。
适用场景
- 希望在自有数据上继续训练或微调 Qwen2-VL 2B 模型的开发者。
- 需要简单、透明训练代码,便于自行修改和扩展的研究人员。
- 资源有限(GPU Poor)但想尝试微调的用户,可下载作者提供的已微调模型。
限制
- 训练代码不包含评估步骤,仅打印训练损失。如需评估,需自行参考数据格式并修改脚本。
- 仓库仅提供玩具数据,实际使用需自行准备数据。
- 视频训练对 GPU 显存要求较高。
- 该仓库主要针对 Qwen2-VL 2B 模型,其他版本(如 7B、72B)未明确支持。
- 2025/02/08 更新提到 Qwen2.5-VL-3B 的微调支持已移至另一个仓库(https://github.com/zhangfaen/finetune-Qwen2.5-VL),使用 huggingface/accelerate + deepspeed 插件在 4 张 GPU 上运行。
更新记录
- 2025/02/08:新增 Qwen2.5-VL-3B 微调支持(见上述新仓库)。
- 2025/01/24:新增混合精度训练(bfloat16 + float32),改善验证损失。
- 2024/10/12:更新依赖至 huggingface/transformers 4.45.2。
- 2024/09/25:使用 torchvision.io.VideoReader 替代 read_video,提升视频读取速度。
- 2024/09/13:新增视频数据示例,需安装 av 包。
- 2024/09/12:支持 flash_attention2。
致谢
该仓库基于 https://huggingface.co/Qwen/Qwen2-VL-2B-Instruct/ 和 https://huggingface.co/zhangfaen/Qwen2-VL-2B-checkpoint/ 构建。