当前位置:   article > 正文

VisualGLM-6B:支持图像、中英文的多模态对话模型解读与本地化部署

visualglm

欢迎关注公众号 - 【AICV与前沿】,一起学习最新技术吧

欢迎关注公众号 - 【AICV与前沿】,一起学习最新技术吧

欢迎关注公众号 - 【AICV与前沿】,一起学习最新技术吧

VisualGLM-6B 是一个开源的,支持图像、中文和英文的多模态对话语言模型,语言模型基于 ChatGLM-6B,具有 62 亿参数;图像部分通过训练 BLIP2-Qformer 构建起视觉模型与语言模型的桥梁,整体模型共78亿参数。

VisualGLM-6B 依靠来自于 CogView 数据集的30M高质量中文图文对,与300M经过筛选的英文图文对进行预训练,中英文权重相同。该训练方式较好地将视觉信息对齐到ChatGLM的语义空间;之后的微调阶段,模型在长视觉问答数据上训练,以生成符合人类偏好的答案。

1. 多模态预训练背景

以BERT/GPT为代表的自回归模型展现出强大的理解生成能力。同样的,如何将这种成功“复制”到视觉/跨模态领域?其中以DALL-E、CogView、BEiT等为代表的模型思路为

(1)将图像当成一种语言进行预训练;

(2)离散化token。
在这里插入图片描述
以CogView为例,输入token既包含了文本token,也包含了Image token,所以Transformer既建模了文本也建模了图像,并且建模了文本到图像这种跨模态的过程。

但是该思路存在问题:会损失底层信息;token利用效率低,比如需要>1000tokens来描述一张256分辨率的图,此外训练过程也是较难稳定的。

实际上,人类只对少量的视觉语义信息感兴趣,那该如何提升效率并充分利用预研模型呢?BLIP2提供的思路如下:将图像特征对齐到预训练语言模型。

优点:充分得利用了语言模型,并且无缝结合原有的多轮对话能力,

缺点:但是提取图像语义特征会损失底层信息。

基于上述因素,多模态预训练仍存在一些劣势。

2. VisualGLM

ChatGLM-6B 是一个开源的、具有62亿参数的中英双语语言模型。VisualGLM即是以ChatGLM-6B为基础模型,让ChatGLM拥有图像识别的能力。

• 通用领域

• 中英双语

• 与正常语言问答顺畅融合
在这里插入图片描述
模型架构包含VIT+QFormer+ChatGLM-6B。基本思路如下:

通过中间模块构建起预训练视觉和语言模型的桥梁,Qformer用于在视觉和语言模型之间建立桥梁。

• 预训练过程中使用中英双语图文大规模数据

• 微调阶段使用高质量图文指令数据对进行训练

        • 与纯语言类似的技术方案

        • BLIP2、MiniGPT4等工作类似思路
  • 1
  • 2
  • 3

预训练阶段:学习QFormer和Vit Lora参数。

微调阶段:学习Qformer和ChatGLM的Lora参数。

两阶段几乎冻结了VIT和CHatGLM参数,这也是为了防止灾难性遗忘。Qformer参数与每一个阶段的全参数训练,也可以看出Qformer有点类似桥梁的意思。

个人觉得在微调之后进行VIT+Qformer+ChatGLM-6B的联合训练拟合效果会不会更好?

训练目标有两个:

• 自回归损失(根据图像生成正确的文本)

• 对比损失(输入ChatGLM的视觉特征与对应文本的语义特征对齐)

训练数据包含以下几个部分:

• CogView工作积累的30M中文图文对

• 精选LAION+CC12M的100M英文图文对

• 来自其他工作和数据集的视觉问答指令微调数据集

• 自己构建的高质量视觉问答指令微调数据集

3. VisualGLM局限性

VisualGLM-6B正处于V1版本视觉和语言模型的参数、计算量都较小,局限性包含以下几点:

(1)图像描述事实性/模型幻觉问题。在生成图像长描述的时候,距离图像较远时,语言模型的将占主导,有一定可能根据上下文生成并不存在于图像的内容。

(2)属性错配问题。在多物体的场景中,部分物体的某些属性,经常被错误安插到其他物体上。

(3)分辨率问题。本项目使用了224*224的分辨率,也是视觉模型中最为常用的尺寸;然而为了进行更细粒度的理解,更大的分辨率和计算量是必要的。

(4)由于数据等方面原因,模型暂不具有中文ocr的能力(英文ocr能力有一些)。

4. 本地部署指南

从项目代码路径下载代码到本地,

https://github.com/THUDM/VisualGLM-6B
  • 1

然后执行以下安装依赖。

pip install requirements.txt
  • 1

从以下路径下载模型文件放于VisualGLM-6B文件夹下,权重被拆分成5个文件,一共约有22G大小。

https://huggingface.co/THUDM/visualglm-6b
  • 1

VisualGLM-6B 由 SwissArmyTransformer(简称sat) 库训练,这是一个支持Transformer灵活修改、训练的工具库,支持Lora、P-tuning等参数高效微调方法,所以如果

pip install SwissArmyTransformer
  • 1

不成功的话,建议下载SwissArmyTransformer源码手动安装。如果一切顺利执行以下就可以运行可视化服务。显存大小约占16G左右。

python web_demo_hf.py
  • 1

在这里插入图片描述

在这里插入图片描述
VisualGLM更多的微调与推理量化请参考项目代码地址!!

参考文献

https://www.bilibili.com/video/BV14L411q7fk/?spm_id_from=333.337.search-card.all.click

https://github.com/THUDM/VisualGLM-6B

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号