SuperAPI AI 工具集

finetune-Qwen2-VL

finetune-Qwen2-VL 是一个用于快速微调或继续预训练 Qwen2-VL 2B 模型的开源代码仓库。它提供单 GPU 和多 GPU 两种微调脚本,旨在帮助开发者快速上手,代码简洁透明,适合希望自行编写训练循环的用户。仓库包含玩具数据集和测试脚本,支持视频数据读取优化、混合精度训练以及 flash_attention2。

访问官网

工具介绍

用途

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 资源不足时使用)。

使用方式

  1. 准备数据:参考 train_data/data.json 格式准备自己的数据。
  2. 单 GPU 微调:运行 finetune.py。
  3. 多 GPU 微调:运行 finetune_distributed.py。
  4. 测试微调后的模型:修改 test_on_trained_model_by_us.py 中的 model_dir 指定模型路径,然后运行。
  5. 视频数据训练:需执行 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/ 构建。