Project Icon

VisCPM

基于CPM-Bee的多模态大模型 对话和图像生成

VisCPM是基于CPM-Bee语言模型开发的开源多模态大模型系列,包含VisCPM-Chat和VisCPM-Paint两个模型。VisCPM-Chat支持中英双语多模态对话,VisCPM-Paint实现文到图生成。该项目仅通过英文数据预训练即实现了出色的中文多模态能力,在中文开源多模态模型中表现优异。VisCPM开源供个人和研究使用,旨在促进多模态大模型领域进步。

VisCPM

基于CPM基础模型的中英双语多模态大模型系列

多模态对话模型VisCPM-Chat文生图模型VisCPM-Paint使用论文

VisCPM-Chat DemoVisCPM-Paint Demo VisCPM-Chat🤗 VisCPM-Paint🤗

简体中文 | English

**VisCPM**是一个开源的多模态大模型系列,支持中英双语的多模态对话能力(VisCPM-Chat模型)和文到图生成能力(VisCPM-Paint模型),在中文多模态开源模型中达到最佳水平。VisCPM基于百亿参数量语言大模型CPM-Bee(10B)训练,融合视觉编码器Muffin和视觉解码器Diffusion-UNet以支持视觉信号的输入和输出。得益于CPM-Bee基座优秀的双语能力,VisCPM可以仅通过英文多模态数据预训练,泛化实现优秀的中文多模态能力。

  • 👐 开源使用:VisCPM可以自由被用于个人和研究用途。我们希望通过开源VisCPM模型系列,推动多模态大模型开源社区和相关研究的发展。
  • 🌟 涵盖图文双向生成:VisCPM模型系列较为全面地支持了图文多模态能力,涵盖多模态对话(图到文生成)能力和文到图生成能力。
  • 💫 中英双语性能优异:得益于语言模型基座CPM-Bee优秀的双语能力,VisCPM在中英双语的多模态对话和文到图生成均取得亮眼的效果。

📰 更新信息

VisCPM在持续升级中,我们支持了低资源推理、网页版部署等功能,并提供了能力升级的更高版本的模型OmniLMM,欢迎大家持续关注!

  • [2024/04/17] 🚀 欢迎关注我们最新发布的MiniCPM-V 2.0端侧多模态大模型,具备领先的光学字符识别(OCR)和多模态理解能力,在综合性OCR能力评测基准OCRBench上达到开源模型最佳水平,甚至在场景文字理解方面实现接近Gemini Pro的性能。
  • [2024/02/02] 🚀 欢迎关注我们最新发布的OmniLMM多模态大模型!其中OmniLMM-3B为中英双语多模态对话模型,基于中英双语大模型MiniCPM-2.4B和SigLip-400M视觉编码器训练,采用与VisCPM-Chat相同的训练流程训练,可在终端设备上部署并具备先进的多模态对话能力;OmniLMM-13B为英文多模态模型,基于EVA02-5B和Zephyr-7B-β初始化训练,相比同规模其他模型在多个基准测试中具有领先性能。
  • [2024/01/16] 🎉 VisCPM论文ICLR 2024接收,并被选为spotlight(top 5%)
  • [2023/09/06] 🔌 VisCPM-Chat API 发布!现在您可以直接通过API轻松地使用VisCPM-Chat模型了。查看API使用指南以了解更多详情。
  • [2023/08/23] 📑 VisCPM论文发布:Large Multilingual Models Pivot Zero-Shot Multimodal Learning across Languages,论文提供了更详细的实现细节和实验结果
  • [2023/08/18] ⤴️ VisCPM-Chat-v1.1版本发布,带来更强的细节理解和复杂推理能力!
  • [2023/08/18] 🛠️ 支持微调,让VisCPM更适配你的应用场景!
  • [2023/07/20] 🌐 发布VisCPM-ChatVisCPM-Paint 的在线Demo,欢迎尝试!
  • [2023/07/20] 🎢 支持一键部署本地网页版Demo
  • [2023/07/20] ⚡️ 支持低资源推理,最低5G显存运行多模态对话模型!
  • [2023/07/18] 🤗 VisCPM-ChatVisCPM-Paint 已整合到Huggingface框架中

VisCPM-Chat

VisCPM-Chat支持面向图像进行中英双语多模态对话。该模型使用Muffin视觉编码架构,使用CPM-Bee(10B)作为语言基座模型,并通过语言建模训练目标融合视觉和语言模型。模型训练包括预训练和指令精调两阶段:

  • 预训练:我们使用了约1亿对高质量英文图文数据对VisCPM-Chat进行预训练,数据来源包括CC3M、CC12M、COCO、Visual Genome和Laion等。在预训练阶段,我们保持语言模型参数不变,仅更新视觉编码器的参数,以实现大规模视觉-语言表示的高效对齐。

  • 指令精调:我们采用LLaVA-150K英文指令精调数据,并结合相应的中文翻译数据对模型进行指令精调,以使模型的多模态基础能力与用户使用意图相匹配。在指令精调阶段,我们更新全部模型参数,以提高指令精调数据的利用效率。有趣的是,我们发现即使仅使用英文指令数据进行精调,模型也能理解中文问题,但只能用英文回答。这表明模型的多语言多模态能力已经得到了良好的泛化。在指令精调阶段进一步加入少量中文翻译数据,可以使模型的回复语言与用户提问语言保持一致。

我们在LLaVA标准英文测试集和翻译的中文测试集上对模型进行了评测。这个评测基准考察了模型在开放域对话、图像细节描述和复杂推理方面的表现,并使用GPT-4进行打分。结果显示,VisCPM-Chat在中文多模态能力方面取得了最佳的平均性能,在通用域对话和复杂推理方面表现出色,同时也展现出了不错的英文多模态能力。我们提供了两个模型版本,分别是VisCPM-Chat-balanceVisCPM-Chat-zhplus。前者在英文和中文两种语言上的能力较为平衡,后者在中文能力上更为突出。两个模型在指令精调阶段使用的数据相同,但VisCPM-Chat-zhplus在预训练阶段额外加入了2000万对经过清洗的原生中文图文数据和1.2亿对翻译成中文的图文数据。VisCPM-Chat-v1.1在指令精调阶段还额外加入了UniMM-Chat多模态指令精调数据集。

模型语言模型基座英文中文
对话精细描述复杂推理平均对话精细描述复杂推理平均
英文模型MiniGPT4Vicuna-13B65.067.376.669.7----
InstructBLIPVicuna-13B81.968.091.280.5----
LLaVAVicuna-13B89.570.496.285.6----
中英双语模型mPLUG-Owl LLaMA-7B64.647.780.164.276.361.277.872.0
VisualGLMChatGLM-6B62.463.080.668.776.687.883.682.7
Ziya-Visual Ziya-LLaMA-13B-v182.769.992.181.785.074.782.480.8
Qwen-VL Qwen-7B82.472.691.983.882.393.489.588.2
VisCPM-Chat-balanceCPMBee-10B83.368.990.581.192.776.189.286.3
VisCPM-Chat-zhplusCPMBee-10B80.165.792.579.690.381.492.188.2
VisCPM-Chat-v1.1CPMBee-10B80.167.197.181.591.390.795.492.5

图片

VisCPM-Paint

VisCPM-Paint支持中英双语的文本到图像生成。该模型使用CPM-Bee(10B)作为文本编码器,使用UNet作为图像解码器,并通过扩散模型训练目标融合语言和视觉模型。在训练过程中,语言模型参数始终保持固定。我们使用Stable Diffusion 2.1的UNet参数初始化视觉解码器,并通过逐步解冻其中关键的桥接参数将其与语言模型融合。该模型在LAION 2B英文图文对数据上进行了训练。 与VisCPM-Chat类似,我们发现得益于CPM-Bee的双语能力,VisCPM-Paint仅通过英文图文对训练就能泛化实现良好的中文文到图生成能力,达到中文开源模型的最佳效果。通过进一步加入20M经过清洗的原生中文图文对数据,以及120M翻译成中文的图文对数据,模型的中文文到图生成能力可以获得进一步提升。我们在标准图像生成测试集MSCOCO上采样了3万张图片,计算了常用评估图像生成指标FID (Fréchet Inception Distance)来评估生成图片的质量。我们同样提供了两个模型版本,分别为VisCPM-Paint-balanceVisCPM-Paint-zhplus,前者在英文和中文两种语言上的能力较为平衡,后者在中文能力上更加突出。VisCPM-Paint-balance只使用了英文图文对进行训练,VisCPM-Paint-zhplusVisCPM-Paint-balance基础上增加了20M原生中文图文对数据和120M翻译成中文的图文对数据进行训练。

模型Zero-shot FID↓
英文中文
GLIDE12.2-
Make-A-Scene11.8-
DALL·E-210.4-
Unidiffuser9.7-
Cogview2-24.0
Stable Diffusion8.6-
AltDiffusion17.216.1
TaiyiDiffusion-15.6
VisCPM-Paint-balance9.510.9
VisCPM-Paint-zhplus9.99.6

⚙️ 安装

  1. 克隆仓库并进入源码目录
git clone https://github.com/OpenBMB/VisCPM.git
cd VisCPM
  1. 创建conda环境
conda create -n viscpm python=3.10 -y
conda activate viscpm
  1. 安装依赖
pip install torch>=1.10
pip install -r requirements.txt

💡 使用

模型下载

模型描述下载链接
VisCPM-Chat-v1.1新版本多模态对话模型,强化了细节理解和复杂推理能力链接
VisCPM-Chat-balance中英文能力较为平衡的多模态对话模型链接
VisCPM-Chat-zhplus中文能力突出的多模态对话模型链接
VisCPM-Paint-balance中英文能力较为平衡的文生图模型链接
VisCPM-Paint-zhplus中文能力突出的文生图模型链接

VisCPM-Chat

在下载模型权重后,可以使用如下代码运行VisCPM-Chat(将'/path/to/checkpoint'改为模型存放路径)

单轮对话

VisCPM-Chat可以通过几行代码实现多模态对话,我们在代码中默认开启了对输入图片的安全检查。

# 如果您单卡显存不足40G,可以引入如下环境变量并将安全模块开关关闭。引入后显存占用约为5G,但推理所需时间会变长。此选项依赖BMInf,需要安装BMInf依赖库。
export CUDA_MEMORY_CPMBEE_MAX=1g
from VisCPM import VisCPMChat
from PIL import Image

model_path = '/path/to/checkpoint'
viscpm_chat = VisCPMChat(model_path, image_safety_checker=True)
# 默认开启对输入图片的安全检查
image_path = 'figures/vlu_case1.png'
image = Image.open(image_path).convert("RGB")

question = '如果用一句中国唐代的著名诗人"李白"的古诗来描述这幅图像,你能想到什么?'
answer, _, _ = viscpm_chat.chat(image, question)

print(answer)

可得到如下结果

"黄河之水天上来,奔流到海不复回。" 李白的这句诗可以用来形容这幅图片中汹涌澎湃、波涛汹涌的景象:一条湍急的河流从山上奔腾而下,形成了一幅令人叹为观止的画面,展示出大自然的力量和雄伟壮丽。

多轮对话

from VisCPM import VisCPMChat
from PIL import Image

model_path = '/path/to/checkpoint'
viscpm_chat = VisCPMChat(model_path, image_safety_checker=True)
# 默认开启对输入图片的安全检查
image_path = 'figures/vlu_case2.jpeg'
image = Image.open(image_path).convert("RGB")

question = '这幅图像是在哪个节日拍摄的?'
answer, context, vision_hidden_states = viscpm_chat.chat(image, question)

# 多轮对话传入历史 context
question = '你能用什么古诗描述这幅画?'
answer, context, _ = viscpm_chat.chat(image, question, context, vision_hidden_states=vision_hidden_states)

print(context)

可得到如下结果

User: 这幅图像是在哪个节日拍摄的?
AI: 这幅图像是在中秋节拍摄的, 也就是中国传统节日中的月圆之夜。
User: 你能用什么古诗描述这幅画?
AI: "明月几时有,把酒问青天。" 这是苏轼的《水调歌头》中的一句诗,用来形容这幅图片再贴切不过了:在中秋之夜,月亮高高地挂在天空中,一座古老的建筑沐浴着月光,营造出一种宁静祥和的气氛。

API使用指南

我们提供了API接口,可以通过如下代码轻松体验VisCPM-Chat。API接口支持的输入格式和使用方式如下:

import requests
import base64

url = "http://34.143.180.202:3389/viscpm"
resp = requests.post(url, json={
    # 需要修改
    "image": base64.b64encode(open("path/to/image", "rb").read()).decode(),
    "question": "描述一下这张图片",
})
resp = resp.json()
print(resp)

VisCPM-Paint

在下载模型权重后,可以使用如下代码运行VisCPM-Paint(将'/path/to/checkpoint'改为模型存放路径)。

图片

图片

生成上面图片的文本输入可参考prompts.txt

# 如果您单卡显存不足40G,可以引入如下环境变量并将安全模块开关关闭。引入后显存占用约为17G,但推理所需时间会变长。此选项依赖BMInf,需要安装BMInf依赖库。
export CUDA_MEMORY_CPMBEE_MAX=1g
from VisCPM import VisCPMPaint
painter = VisCPMPaint('/path/to/checkpoint', image_safety_checker=True, prompt_safety_checker=True, add_ranker=True) 
# 默认对输入的文本和输出的图片进行安全检查,默认开启重排序
image = painter.generate('人闲桂花落,月静春山空') # 对应上图第一行第二张图片
image.save('/data/test.png') 

我们在代码中默认开启了对输入文本和输出图片的安全检查。

同时,我们默认对生成的图像使用重排序,即对同一个输入,同时生成4张图片,返回与输入相关性最高的1张图片,相关性通过Chinese-Clip进行打分。重排序可以提升生成图片质量的稳定性,但也会降低模型的生成速度,如希望快速得到生成结果,可以关闭重排序机制。

VisCPM-Paint目前使用中文模型进行重排序打分,如果输入英文生成图片,请关闭重排序机制和输入文本检查模块。

低资源推理

为了支持更加高效的低资源推理场景,我们借助BMInf工具支持更低的显存需求。首先安装BMInf依赖pip install bminf,然后在命令行中指定export CUDA_MEMORY_CPMBEE_MAX=1g(具体数值可以根据个人需求设定),然后按照上述步骤进行推理,VisCPM-Chat最低显存占用可以降至5G,VisCPM-Paint最低显存占用可以降至17G。

Demo部署

我们提供简易的基于gradio的网页版Demo,首先安装gradio:pip install gradio,然后执行如下命令:

git clone https://github.com/OpenBMB/VisCPM.git
cd VisCPM
python demo_chat.py # viscpm_chat demo, 或者
python demo_paint.py # viscpm_paint demo

模型微调

为适应特定场景下的需求, 我们提供了VisCPM-Chat模型的微调代码,用户可以在私有数据上进行微调。微调代码位于./finetune/ft_viscpm_chat目录下,具体的微调代码使用方法如下:

# 获取数据集
bash ./finetune/ft_viscpm_chat/get_llava150k_zh.sh
# 模型微调, 注意修改其中的数据集与模型checkpoint路径
bash ./finetune/ft_viscpm_chat/run_viscpm_chat_ft.sh
# node: 8
# batch_size: 8 * 1
# 其他配置可参考'./finetune/ft_viscpm_chat/config/viscpm_chat_ft.json'与'./finetune/ft_viscpm_chat/run_viscpm_chat_ft.sh'

注:

  • 微调代码中使用了deepspeed-0.9.1配置训练环境,配置方法可以参考此链接
  • 目前微调代码仅在linux系统下测试,如果您在其他系统配置下进行微调,可能需要修改部分代码。

🛡 安全

安全声明

作为多模态模型,VisCPM通过学习大量的公开图文数据来生成内容,但它无法理解、表达个人观点或价值判断,它所输出的任何内容都不代表模型开发者的观点和立场。因此用户在使用VisCPM生成的内容时,应自行负责对其进行评估和验证。

安全模块

为了帮助用户防止模型处理或生成不符合普遍社会价值观的内容,我们在VisCPM中加入了内容安全保障模块。当安全模块检测到模型处理或生成的图像文本内容不符合安全规范时,会对相应内容进行拦截。我们对VisCPM-Chat接受的图片输入以及VisCPM-Paint接受的文字输入和图片输出进行了安全检查。VisCPM的安全模块仍然不完美,可能会出现漏判和误判的情况。我们会在未来进一步提升安全模块的性能。

📝 开源协议

VisCPM系列模型采用协议为"通用模型许可协议-来源说明-宣传限制-非商业化",允许个人使用和研究用途。如需将模型用于商业用途,请联系cpm@modelbest.cn来洽谈商业授权事宜。

CPM-Bee基座采用协议为"通用模型许可协议-来源说明-宣传限制-商业授权",允许商用,如需将模型用于商业用途,请联系cpm@modelbest.cn来获取书面授权。

✅ 待办事项

  • 支持模型量化功能,降低推理成本

🏫 机构

此项目由以下机构联合研发:

引用

如果我们的工作对你有帮助,请考虑引用以下论文

@article{VisCPM,
  title={Large multilingual models pivot zero-shot multimodal learning across languages},
  author={Hu, Jinyi and Yao, Yuan and Wang, Chongyi and Wang, Shan and Pan, Yinxu and Chen, Qianyu and Yu, Tianyu and Wu, Hanghao and Zhao, Yue and Zhang, Haoye and others},
  journal={arXiv preprint arXiv:2308.12038},
  year={2023}
}

@article{muffin,
  title={Reformulating vision-language foundation models and datasets towards universal multimodal assistants},
  author={Yu, Tianyu and Hu, Jinyi and Yao, Yuan and Zhang, Haoye and Zhao, Yue and Wang, Chongyi and Wang, Shan and Pan, Yinxv and Xue, Jiao and Li, Dahai and others},
  journal={arXiv preprint arXiv:2310.00653},
  year={2023}
}
项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

稿定AI

稿定设计 是一个多功能的在线设计和创意平台,提供广泛的设计工具和资源,以满足不同用户的需求。从专业的图形设计师到普通用户,无论是进行图片处理、智能抠图、H5页面制作还是视频剪辑,稿定设计都能提供简单、高效的解决方案。该平台以其用户友好的界面和强大的功能集合,帮助用户轻松实现创意设计。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号