Zero-Qwen-VL 是一个在 GitHub 上开源的项目,目标是训练一个对中文支持更好的 LLaVA 结构模型。项目作者原本希望使用支持中文的语言模型、支持中文的图片编码器以及中文数据,从零构建一个支持中文的图文模型。作者认为千问系列是目前开源中做得很好且支持中文的模型,因此选择将 Qwen-VL 的图片编码器与 Qwen2 的语言模型结合。项目完成后作者也提到,Qwen-VL 的图片编码器加 Qwen2 与 Qwen-VL 本身较为相似,但仍将整个流程开源,以便后续根据该项目组合其他模型的图片编码器和 LLM。
主要能力:项目提供了从零构建 LLaVA 结构中文图文模型的完整流程,包括训练代码、数据以及三个阶段的模型权重。训练分为三个阶段,各阶段使用不同的数据和冻结部分。stage1 和 stage2 的数据来自 Chinese-LLaVA-Vision-Instructions 中的 LLaVA-CC3M-Pretrain-595K 和 LLaVA-Instruct-150K;stage3 使用对 TextOCR-GPT4o 和 ShareGPT-4o 翻译后的数据。项目还提供了环境配置、权重抽取与整合、训练和测试的具体步骤。
使用方式:项目提供了详细的环境配置命令,使用 conda 创建 Python 3.12 环境,并安装 transformers、torch、torchvision、Pillow、accelerate、datasets、deepspeed、tensorboard 等依赖。需要下载 Qwen-VL-Chat 和 Qwen2-0.5B-Instruct 的模型权重,运行 extract_weight.py 将模型权重抽取到对应 vision 文件夹下,并整合 Qwen-VL-Chat 的视觉权重和 Qwen2-0.5B-Instruct 的权重到 ./llava_pro 目录,之后直接从该目录加载模型。数据路径结构为 /data_path 下包含 images 文件夹和 chat.json。训练完成后,将生成的模型权重替换掉原模型权重,或者将模型的 .py 文件和配置文件放在模型权重文件夹中,运行 test.py 即可测试效果。
适用场景:适用于希望研究多模态大模型、LLaVA 结构、中文图文模型训练的开发者和研究者。作者提到,如果想要更好的效果,可以换成更大的语言模型。该项目也可作为组合其他模型图片编码器和 LLM 的参考流程。
限制:作者指出,stage3 后的模型效果感觉不如 stage2,原因可能是 stage3 的训练数据只是简单翻译且并未清洗,数据质量不高。项目使用 Qwen2-0.5B-Instruct,模型规模较小,效果可能有限。项目未提供收费、价格或商业使用等信息。