Moe LLaVA Qwen 1.8B 4e
MoE-LLaVA是一种基于专家混合架构的大型视觉语言模型,通过稀疏激活参数实现高效的多模态学习
下载量 176
发布时间 : 1/23/2024
模型简介
MoE-LLaVA结合了视觉和语言理解能力,采用专家混合架构实现高效的多模态交互,在减少参数量的同时保持高性能
模型特点
高效参数利用
仅需30亿稀疏激活参数即可达到7B密集模型的性能
快速训练
在8张V100显卡上2天内完成训练
卓越性能
在多项视觉理解任务上超越更大规模的模型
模型能力
视觉问答
图像理解
多模态推理
物体识别
图像描述生成
使用案例
智能助手
图像内容问答
回答用户关于图像内容的各类问题
在物体幻觉基准测试中超越LLaVA-1.5-13B
内容理解
复杂场景理解
理解包含多个对象的复杂场景图像
在多项视觉理解数据集上达到LLaVA-1.5-7B相当水平
🚀 MoE-LLaVA:面向大视觉语言模型的专家混合模型
MoE-LLaVA是一种用于大视觉语言模型的专家混合模型,在多模态学习中表现出色。它以较少的参数实现了高性能,通过简单的基线和稀疏路径学习多模态交互。
🚀 快速开始
试用演示
你可以通过以下命令试用我们的Web演示,该演示集成了MoE-LLaVA目前支持的所有功能。我们也在Huggingface Spaces上提供了在线演示。
# 使用phi2
deepspeed --include localhost:0 moellava/serve/gradio_web_server.py --model-path "LanguageBind/MoE-LLaVA-Phi2-2.7B-4e"
# 使用qwen
deepspeed --include localhost:0 moellava/serve/gradio_web_server.py --model-path "LanguageBind/MoE-LLaVA-Qwen-1.8B-4e"
# 使用stablelm
deepspeed --include localhost:0 moellava/serve/gradio_web_server.py --model-path "LanguageBind/MoE-LLaVA-StableLM-1.6B-4e"
命令行推理
# 使用phi2
deepspeed --include localhost:0 moellava/serve/cli.py --model-path "LanguageBind/MoE-LLaVA-Phi2-2.7B-4e" --image-file "image.jpg"
# 使用qwen
deepspeed --include localhost:0 moellava/serve/cli.py --model-path "LanguageBind/MoE-LLaVA-Qwen-1.8B-4e" --image-file "image.jpg"
# 使用stablelm
deepspeed --include localhost:0 moellava/serve/cli.py --model-path "LanguageBind/MoE-LLaVA-StableLM-1.6B-4e" --image-file "image.jpg"
本地加载模型
如果你想在本地加载模型(例如 LanguageBind/MoE-LLaVA
),可以使用以下代码片段。使用以下命令运行代码:
deepspeed predict.py
import torch
from moellava.constants import IMAGE_TOKEN_INDEX, DEFAULT_IMAGE_TOKEN
from moellava.conversation import conv_templates, SeparatorStyle
from moellava.model.builder import load_pretrained_model
from moellava.utils import disable_torch_init
from moellava.mm_utils import tokenizer_image_token, get_model_name_from_path, KeywordsStoppingCriteria
def main():
disable_torch_init()
image = 'moellava/serve/examples/extreme_ironing.jpg'
inp = 'What is unusual about this image?'
model_path = 'LanguageBind/MoE-LLaVA-Phi2-2.7B-4e' # LanguageBind/MoE-LLaVA-Qwen-1.8B-4e or LanguageBind/MoE-LLaVA-StableLM-1.6B-4e
device = 'cuda'
load_4bit, load_8bit = False, False # FIXME: Deepspeed support 4bit or 8bit?
model_name = get_model_name_from_path(model_path)
tokenizer, model, processor, context_len = load_pretrained_model(model_path, None, model_name, load_8bit, load_4bit, device=device)
image_processor = processor['image']
conv_mode = "phi" # qwen or stablelm
conv = conv_templates[conv_mode].copy()
roles = conv.roles
image_tensor = image_processor.preprocess(image, return_tensors='pt')['pixel_values'].to(model.device, dtype=torch.float16)
print(f"{roles[1]}: {inp}")
inp = DEFAULT_IMAGE_TOKEN + '\n' + inp
conv.append_message(conv.roles[0], inp)
conv.append_message(conv.roles[1], None)
prompt = conv.get_prompt()
input_ids = tokenizer_image_token(prompt, tokenizer, IMAGE_TOKEN_INDEX, return_tensors='pt').unsqueeze(0).cuda()
stop_str = conv.sep if conv.sep_style != SeparatorStyle.TWO else conv.sep2
keywords = [stop_str]
stopping_criteria = KeywordsStoppingCriteria(keywords, tokenizer, input_ids)
with torch.inference_mode():
output_ids = model.generate(
input_ids,
images=image_tensor,
do_sample=True,
temperature=0.2,
max_new_tokens=1024,
use_cache=True,
stopping_criteria=[stopping_criteria])
outputs = tokenizer.decode(output_ids[0, input_ids.shape[1]:], skip_special_tokens=True).strip()
print(outputs)
if __name__ == '__main__':
main()
✨ 主要特性
🔥 高性能与少参数
- 仅使用 30亿稀疏激活参数,MoE-LLaVA在各种视觉理解数据集上表现出与LLaVA-1.5-7B相当的性能,甚至在物体幻觉基准测试中超越了LLaVA-1.5-13B。
🚀 简单基线与稀疏路径学习多模态交互
- 通过添加 一个简单的MoE调优阶段,我们可以在 8个V100 GPU 上在2天内完成MoE-LLaVA的训练。
📦 安装指南
环境要求
- Python >= 3.10
- Pytorch == 2.0.1
- CUDA Version >= 11.7
- Transformers == 4.36.2
- Tokenizers==0.15.1
安装步骤
git clone https://github.com/PKU-YuanGroup/MoE-LLaVA
cd MoE-LLaVA
conda create -n moellava python=3.10 -y
conda activate moellava
pip install --upgrade pip # 启用PEP 660支持
pip install -e .
pip install -e ".[train]"
pip install flash-attn --no-build-isolation
# 以下为可选步骤,针对Qwen模型
git clone https://github.com/Dao-AILab/flash-attention
cd flash-attention && pip install .
# 以下为可选步骤,安装可能较慢
# pip install csrc/layer_norm
# 如果flash-attn版本高于2.1.1,则不需要以下步骤
# pip install csrc/rotary
📚 详细文档
训练与验证
训练和验证说明请参考 TRAIN.md 和 EVAL.md。
自定义模型
自定义MoE-LLaVA的说明请参考 CUSTOM.md。
可视化
可视化说明请参考 VISUALIZATION.md。
🤖 API
我们开源了所有代码。如果你想在本地加载模型(例如 LanguageBind/MoE-LLaVA
),可以使用上述提供的代码片段。
🔧 技术细节
MoE-LLaVA在多模态学习中展现出卓越的性能。它通过引入专家混合(MoE)机制,以较少的参数实现了高性能。在训练过程中,通过简单的MoE调优阶段,结合稀疏路径学习多模态交互,能够在8个V100 GPU上在2天内完成训练。在各种视觉理解数据集上,MoE-LLaVA表现出与更大参数模型相当甚至更优的性能。
📦 模型库
模型 | 大语言模型 | 检查点 | 平均 | VQAv2 | GQA | VizWiz | SQA | T-VQA | POPE | MM-Bench | LLaVA-Bench-Wild | MM-Vet |
---|---|---|---|---|---|---|---|---|---|---|---|---|
MoE-LLaVA-1.6B×4-Top2 | 16亿 | LanguageBind/MoE-LLaVA-StableLM-1.6B-4e | 60.0 | 76.0 | 60.4 | 37.2 | 62.6 | 47.8 | 84.3 | 59.4 | 85.9 | 26.1 |
MoE-LLaVA-1.8B×4-Top2 | 18亿 | LanguageBind/MoE-LLaVA-Qwen-1.8B-4e | 60.2 | 76.2 | 61.5 | 32.6 | 63.1 | 48.0 | 87.0 | 59.6 | 88.7 | 25.3 |
MoE-LLaVA-2.7B×4-Top2 | 27亿 | LanguageBind/MoE-LLaVA-Phi2-2.7B-4e | 63.9 | 77.1 | 61.1 | 43.4 | 68.7 | 50.2 | 85.0 | 65.5 | 93.2 | 31.1 |
🙌 相关项目
- Video-LLaVA 该框架使模型能够有效利用统一的视觉令牌。
- LanguageBind 一个开源的五模态基于语言的检索框架。
👍 致谢
- LLaVA 我们基于该代码库进行开发,它是一个高效的大语言和视觉助手。
📄 许可证
- 本项目的大部分内容遵循Apache 2.0许可证,详情见 LICENSE 文件。
- 本服务仅供研究预览,仅用于非商业用途,需遵守LLaMA的模型许可证、OpenAI生成数据的使用条款以及ShareGPT的隐私政策。如果发现任何潜在的违规行为,请联系我们。
✏️ 引用
如果你在研究中发现我们的论文和代码有用,请考虑给我们一个星星 :star: 并进行引用 :pencil:。
@misc{lin2024moellava,
title={MoE-LLaVA: Mixture of Experts for Large Vision-Language Models},
author={Bin Lin and Zhenyu Tang and Yang Ye and Jiaxi Cui and Bin Zhu and Peng Jin and Junwu Zhang and Munan Ning and Li Yuan},
year={2024},
eprint={2401.15947},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
@article{lin2023video,
title={Video-LLaVA: Learning United Visual Representation by Alignment Before Projection},
author={Lin, Bin and Zhu, Bin and Ye, Yang and Ning, Munan and Jin, Peng and Yuan, Li},
journal={arXiv preprint arXiv:2311.10122},
year={2023}
}
✨ 星标历史
🤝 贡献者
Clip Vit Large Patch14 336
基于Vision Transformer架构的大规模视觉语言预训练模型,支持图像与文本的跨模态理解
文本生成图像
Transformers

C
openai
5.9M
241
Fashion Clip
MIT
FashionCLIP是基于CLIP开发的视觉语言模型,专门针对时尚领域进行微调,能够生成通用产品表征。
文本生成图像
Transformers 英语

F
patrickjohncyh
3.8M
222
Gemma 3 1b It
Gemma 3是Google推出的轻量级先进开放模型系列,基于与Gemini模型相同的研究和技术构建。该模型是多模态模型,能够处理文本和图像输入并生成文本输出。
文本生成图像
Transformers

G
google
2.1M
347
Blip Vqa Base
Bsd-3-clause
BLIP是一个统一的视觉语言预训练框架,擅长视觉问答任务,通过语言-图像联合训练实现多模态理解与生成能力
文本生成图像
Transformers

B
Salesforce
1.9M
154
CLIP ViT H 14 Laion2b S32b B79k
MIT
基于OpenCLIP框架在LAION-2B英文数据集上训练的视觉-语言模型,支持零样本图像分类和跨模态检索任务
文本生成图像
Safetensors
C
laion
1.8M
368
CLIP ViT B 32 Laion2b S34b B79k
MIT
基于OpenCLIP框架在LAION-2B英语子集上训练的视觉-语言模型,支持零样本图像分类和跨模态检索
文本生成图像
Safetensors
C
laion
1.1M
112
Pickscore V1
PickScore v1 是一个针对文本生成图像的评分函数,可用于预测人类偏好、评估模型性能和图像排序等任务。
文本生成图像
Transformers

P
yuvalkirstain
1.1M
44
Owlv2 Base Patch16 Ensemble
Apache-2.0
OWLv2是一种零样本文本条件目标检测模型,可通过文本查询在图像中定位对象。
文本生成图像
Transformers

O
google
932.80k
99
Llama 3.2 11B Vision Instruct
Llama 3.2 是 Meta 发布的多语言多模态大型语言模型,支持图像文本到文本的转换任务,具备强大的跨模态理解能力。
文本生成图像
Transformers 支持多种语言

L
meta-llama
784.19k
1,424
Owlvit Base Patch32
Apache-2.0
OWL-ViT是一个零样本文本条件目标检测模型,可以通过文本查询搜索图像中的对象,无需特定类别的训练数据。
文本生成图像
Transformers

O
google
764.95k
129
精选推荐AI模型
Llama 3 Typhoon V1.5x 8b Instruct
专为泰语设计的80亿参数指令模型,性能媲美GPT-3.5-turbo,优化了应用场景、检索增强生成、受限生成和推理任务
大型语言模型
Transformers 支持多种语言

L
scb10x
3,269
16
Cadet Tiny
Openrail
Cadet-Tiny是一个基于SODA数据集训练的超小型对话模型,专为边缘设备推理设计,体积仅为Cosmo-3B模型的2%左右。
对话系统
Transformers 英语

C
ToddGoldfarb
2,691
6
Roberta Base Chinese Extractive Qa
基于RoBERTa架构的中文抽取式问答模型,适用于从给定文本中提取答案的任务。
问答系统 中文
R
uer
2,694
98