MPP-LLaVA简介
MPP-LLaVA(Multimodal Pipeline Parallel based on Qwen Language Model)是一个基于通义千问(Qwen)大语言模型的多模态流水线并行系统。该项目旨在让个人开发者能够在有限的计算资源下(如RTX3090/4090 24GB显卡)训练出类似LLaVA的8B/14B级别的多模态大语言模型。
MPP-LLaVA的核心创新在于采用了DeepSpeed流水线并行技术,将大规模语言模型分割到多个GPU上进行训练,有效突破了单GPU显存限制。同时,该项目还融合了多项先进技术,如预训练+指令微调的训练范式、多模态输入处理等,使其成为一个功能强大且易于扩展的多模态AI系统框架。
主要特性
MPP-LLaVA具备以下主要特性:
-
多模态输入支持:能够处理图像、视频等多种模态的输入。
-
多样化对话能力:支持图像单轮问答、图像多轮对话、视频对话等多种交互方式。
-
模型规模可扩展:支持8B到14B等不同规模的模型训练。
-
高效训练策略:采用预训练+指令微调的两阶段训练方法。
-
计算资源友好:通过流水线并行技术,可在6-8张消费级GPU上完成大模型训练。
-
开放生态:提供完整的训练代码、推理demo和预训练权重。
技术实现
MPP-LLaVA的核心技术实现包括:
-
基础模型选择:采用Qwen-7B-Chat作为底层语言模型。
-
视觉编码器:使用BLIP2中的ViT(Vision Transformer)进行图像特征提取。
-
多模态融合:通过Q-former桥接视觉特征和语言特征。
-
并行训练:利用DeepSpeed实现Pipeline Parallelism和Data Parallelism。
-
训练策略:采用预训练+SFT(Supervised Fine-tuning)两阶段训练方法。
-
数据处理:使用LLaVA的预训练和指令微调数据,以及VideoChatGPT的视频数据。
模型能力展示
MPP-LLaVA展现了多方面的多模态理解和生成能力:
图像单轮问答
模型能够理解图片内容,并回答相关问题:
图像多轮对话
模型可以就同一图片进行多轮问答交互:
视频对话
模型能够理解视频内容,并与用户进行相关对话:
多图对话
经过视频SFT后,模型还涌现出了多图对话的能力,可以比较不同图像:
安装与使用
要开始使用MPP-LLaVA,您需要按照以下步骤进行安装和配置:
- 环境配置:
conda create -n minigpt4qwen python=3.8 && conda activate minigpt4qwen
pip install -e .
-
权重与数据准备:
- 下载预训练权重和SFT权重
- 准备训练数据集
-
推理:
- 命令行demo:
python cli_demo.py --model-type qwen7b_chat -c <model_path> --llm_device_map "auto"
- Web UI demo:
python webui_demo.py --model-type qwen7b_chat -c <model_path> --llm_device_map "auto"
-
训练:
- 预训练阶段:
python -m torch.distributed.run --nproc_per_node=8 train_pipeline.py --cfg-path lavis/projects/pp_qwen7b_video/pretrain.yaml --num-stages 2
- SFT阶段:
python -m torch.distributed.run --nproc_per_node=8 train_pipeline.py --cfg-path lavis/projects/pp_qwen7b_video/sft.yaml --num-stages 8
未来发展
MPP-LLaVA项目仍在积极开发中,未来计划包括:
- 加入Hugging Face Transformers实现
- 开源预训练权重
- 优化多卡推理性能
- 扩展支持更多模态输入
- 改进模型架构和训练策略
总结
MPP-LLaVA项目为个人开发者和研究人员提供了一个强大而灵活的多模态AI系统框架。通过创新的流水线并行技术和精心设计的训练策略,它使得在有限计算资源下训练大规模多模态模型成为可能。该项目不仅展示了令人印象深刻的多模态理解和生成能力,还为推动多模态AI技术的民主化做出了重要贡献。
随着项目的不断发展和完善,MPP-LLaVA有望成为多模态AI领域的重要开源项目之一,为更多创新应用的诞生提供基础支持。无论您是AI研究人员、开发者还是对多模态AI感兴趣的爱好者,MPP-LLaVA都值得您深入探索和尝试。
参考链接
- 项目GitHub仓库: https://github.com/Coobiw/MPP-LLaVA
- Qwen语言模型: https://github.com/QwenLM/Qwen
- DeepSpeed: https://github.com/microsoft/DeepSpeed
- LLaVA项目: https://github.com/haotian-liu/LLaVA
通过MPP-LLaVA,让我们共同探索多模态AI的无限可能!