
Qwen-VL-Series-Finetune
用自有数据微调 Qwen-VL,快速得到专用视觉大模型
这是阿里云 Qwen-VL 系列多模态大模型的开源微调实现,面向需要让视觉语言模型适配自有数据的开发者。项目支持 Qwen2-VL、Qwen2.5-VL、Qwen3-VL 等多个版本,覆盖从数据准备、训练配置到推理验证的完整流程。核心能力包括 LoRA 与全参数微调、多图与视频输入、自定义数据集格式、分布式训练支持,并针对显存占用做了优化,让单卡或多卡环境都能跑起来。它解决的是通用 VLM 在垂直领域表现不足的问题,比如特定行业图像理解、文档解析、图表问答等场景,用户可用自己的标注数据快速得到专用模型。项目结构清晰、脚本化程度高,降低了多模态微调的工程门槛。
项目数据
使用教程
环境要求
- Docker 环境(用于拉取官方预构建镜像)
- 支持 NVIDIA GPU 并可用 --gpus all(需已安装 nvidia-container-toolkit)
- 依赖 HuggingFace 与 Liger-Kernel,对应版本为 transformers==5.3.0、liger_kernel==0.8.0
- 镜像内已配置名为 train 的 conda 环境
安装与启动步骤
-
1拉取预构建镜像
README 提供了预构建训练环境,直接拉取镜像即可省去手动配环境的步骤。
docker pull john119/vlm -
2启动训练容器
用 --gpus all 开启 GPU,-v 挂载宿主机数据与代码目录,--ipc=host 避免共享内存不足。
docker run --gpus all -it -v /host/path:/docker/path --name vlm --ipc=host john119/vlm /bin/bash -
3激活训练环境
进入容器后切换到镜像内预置的 conda 环境 train,所有训练依赖都在该环境中。
conda activate train -
4调整图像视频分辨率
默认使用原图分辨率,显存吃紧时按 token*28*28 调小像素数;Qwen3-VL 需按 token*32*32 计算。
--image_min_pixels $((256 * 28 * 28)) --image_max_pixels $((1280 * 28 * 28)) --video_min_pixels $((128 * 28 * 28)) --video_max_pixels $((768 * 28 * 28)) -
5用 Trainer 启动训练
在训练脚本中通过 QwenSFTTrainer 组装模型、处理器、训练参数与数据模块;需要指标时加上 compute_metrics。
trainer = QwenSFTTrainer( model=model, processing_class=processor, args=training_args, compute_metrics=compute_metrics, **data_module )
关键配置
| 配置项 | 必填 | 说明 | 示例 |
|---|---|---|---|
image_min_pixels | 否 | 图像输入的最小像素数,控制小图显存与速度 | $((256 * 28 * 28)) |
image_max_pixels | 否 | 图像输入的最大像素数,值越大效果通常越好但更耗显存 | $((1280 * 28 * 28)) |
video_min_pixels | 否 | 视频帧的最小像素数,用于视频训练场景 | $((128 * 28 * 28)) |
video_max_pixels | 否 | 视频帧的最大像素数,视频数据建议压得更小 | $((768 * 28 * 28)) |
image_resized_width | 否 | 直接指定图像宽度来控制显存占用 | 448 |
image_resized_height | 否 | 直接指定图像高度,与宽度配套使用 | 448 |
如何确认成功
容器成功进入 bash 并能 conda activate train,说明预构建训练环境已就绪。
常见问题
Q:显存不够怎么办?
A:降低 --image_max_pixels、--video_max_pixels,或直接用 --image_resized_width/height 指定更小的分辨率。
Q:为什么 Qwen3-VL 的像素倍数不一样?
A:Qwen3-VL 按 token*32*32 切图,其余模型为 token*28*28,需按对应倍数计算像素值。
Q:可以不用 Docker 吗?
A:README 只给出了 Docker 预构建环境的使用方式,未提供 pip 等本地安装步骤,需自行准备依赖。
Q:-v 挂载路径怎么写?
A:格式为 /host/path:/docker/path,冒号左边是宿主机目录,右边是容器内目录,按实际路径替换。
注意事项
- 设置的分辨率数值会被四舍五入到 28 的最近倍数。
- 建议保留 --ipc=host,避免多卡或大数据加载时的共享内存问题。
- README 未给出独立训练脚本的调用命令,训练需在脚本内使用 QwenSFTTrainer 组装。
核心亮点
- 覆盖 Qwen2-VL、Qwen2.5-VL、Qwen3-VL 多个版本,跟进官方模型迭代及时
- 同时支持 LoRA 与全参数微调,并提供显存优化方案,单卡也能起步
- 数据准备、训练、推理脚本齐全,多图与视频输入场景有现成示例
不足之处
- 训练配置项较多,新手需要一定时间理解参数含义
- 文档以英文为主,中文使用者的上手成本略高
适用场景
- 用行业标注数据微调模型,做特定领域的图像理解与问答
- 微调文档或票据解析模型,提升结构化信息抽取准确率
- 训练视频理解模型,用于监控、教学等时序视觉任务
替代项目
LLaVA、ms-swift、xtuner
项目介绍
同类项目推荐
Long-RL
开源
让强化学习轻松驾驭超长序列,训练更稳更快
Long-RL: Scaling RL to Long Sequences (NeurIPS 2025)
TPA
开源
把注意力复杂度从平方降到线性,长序列不再卡顿
[NeurIPS 2025 Spotlight] TPA: Tensor ProducT ATTenTion Transformer (https://arxiv.or···
minimind
开源
两小时造出你的小模型,练手入门不求人
Train a 64M-parameter LLM from scratch in just 2h!
pruna
开源
一键优化 AI 模型,推理提速又省资源。
Pruna is a model optimization framework built for developers, enabling you to delive···