【大模型系列】问答理解定位(Qwen-VL/Llama2/GPT)

1 Qwen-VL(2023, Alibaba)

参考资料:

Qwen-VL是阿里巴巴2023年开源的视觉语言大模型,包含Qwen-VL和Qwen-VL-Chat,以通义千问70亿参数模型Qwen-7B为基座,支持图文输入,具备多模态信息理解能力,其特点如下:

  • 支持中英文等多种语言;
  • 支持图文识别、描述、问答及对话能力外,还新增了视觉定位、图像文字理解等能力;
  • Qwe-VL-Chat可理解、比较多个输入图片之间的上下文关系;
  • 使用高分辨率和细粒度预料训练带来的极具竞争力的细粒度视觉理解能力;

在这里插入图片描述

1.1 网络结构

Qwen-VL的网络架构主要由三个组件组成:

  • 大语言模型LLM: 使用Qwen-7B作为其基座;
  • 视觉编码器Vision Encoder: 使用Openclip的ViT-bigG模型,图像patch个数为14x14;
  • 位置感知视觉语言适配器Position-aware Vision-Language Adapter: 使用Cross attention,融合可学习的Queries和图像embedding,一张图片由256个queries;

1.2 模型训练

Qwen-VL训练包含三个阶段:两个阶段的预训练和最后的一个指令微调阶段。
在这里插入图片描述

第一阶段:用大量低质量数据将视觉和文本对齐,冻结LLM,只训练Vision Encoder和VL adapter

  • 数据:开源、网络爬虫的图像-文本对
  • 输入图像分辨率:224x224
  • 优化目标:最小text tokens的交叉熵

第二阶段:多任务训练,全参数优化

  • 数据:GQA , VGQA, VQAv2, DVQA, OCR-VQA, DocVQA.
  • 输入图像分辨:448x448
  • 优化目标:与第一阶段相同

在这里插入图片描述

图文区分: 在图像特征序列的开头和结尾加上特殊token(和);
图文关联: 使用<ref>和</ref>将标记边界框与其描述文本关联;
检测文本与常规文本区分: 使用<box>和</box>对边界框文本进行标记;
边框编码格式: (x1, y1), (x2, y2),即左上和右下角点坐标

第三阶段:监督微调,增强跟随指令对话的能力,冻结Vision Encoder,只训练LLM和VL Adapter

  • 数据:Instruction Tuning的训练数据 ,纯文本的单图,多图的Instruction Tuning的训练数据共350K
  • 目标:训练多图Infer能力,识别Instruction的能力

在这里插入图片描述
在训练期间只监督答案和特殊tokens(图中的蓝色部分)来确保预测和训练分布之间的一致性,而不监督角色名称或问题提示。

2 Llama2(2023, Meta)

参考资料:

Llama 2是一系列预训练和微调的大型语言模型(LLMs),参数规模从70亿到700亿不等。Meta的微调LLMs,叫做Llama 2-Chat,是为对话场景而优化的。Llama 2模型在大多数基准上都比开源的对话模型表现得更好,并且根据人类评估的有用性和安全性,可能是闭源模型的合适替代品。

2.1 网络结构

Llama只使用32个transformer的decoder层,是decoder-only的模型。bert是encoder-only,google t5是encoder-decoder结构。
在这里插入图片描述

主要改进:

  • transformer中的LayerNorm换成了RMSNorm
  • Multi-Head Attention换成GQA
  • 位置编码换成了RoPE(相对位置编码)

2.1.1 MHA/GQA/MQA

在这里插入图片描述
Source:Joshua Ainslie et al.

  • 原始的 MHA(Multi-Head Attention),QKV 三部分有相同数量的头,且一一对应。每次做 Attention,head1 的 QKV 就做好自己运算就可以,输出时各个头加起来就行。
  • 而 MQA 则是,让 Q 仍然保持原来的头数,但 K 和 V 只有一个头,相当于所有的 Q 头共享一组 K 和 V 头,所以叫做 Multi-Query 了。实验发现一般能提高 30%-40% 的吞吐,性能降低不太大。
  • GQA 综合MHA 和 MQA ,既不损失太多性能,又能利用 MQA 的推理加速。不是所有 Q 头共享一组 KV,而是分组一定头数 Q 共享一组 KV,比如上图中就是两组 Q 共享一组 KV。

2.1.2 RoPE(Rotary Position Embedding, 旋转式位置编码)

参考资料:

一般采用绝对位置编码对token编码,但是绝对编码可能丢失了相对位置关系。RoPE是利用绝对位置编码表示相对位置的一种方式,不仅能保持位置编码,还能保持相对的位置关系。实现方式如下:
在这里插入图片描述
也就说给位置为m的向量q乘上矩阵Rm,其中 θ i = 1000 0 − 2 i / d θ_i = 10000^{-2i/d} θi=100002i/d。Rm矩阵其实相当于是m的β进制表示,其中 β = 1000 0 2 / d β=10000^{2/d} β=100002/d。由于Rm的稀疏性,直接用矩阵乘法会浪费算力,可以通过下面的方式来实现。
在这里插入图片描述
注:一个10进制数n的β进制表示的(从左往右数)第m位数字计算公式为:
⌊ n β m − 1 ⌋   m o d   β \left\lfloor\frac{n}{\beta^{m-1}}\right\rfloor \bmod \beta βm1nmodβ

2.1.3 RMSNorm

参考资料: https://blog.csdn.net/qinduohao333/article/details/131061240
LayerNorm计算如下:

a i = ∑ j = 1 m w i j x j , y i = f ( a i + b i ) , a ˉ i = a i − μ σ g i , y i = f ( a ˉ i + b i ) , μ = 1 n ∑ i = 1 n a i , σ = 1 n ∑ i = 1 n ( a i − μ ) 2 . \begin{gathered} a_i=\sum_{j=1}^m w_{i j} x_j, \quad y_i=f\left(a_i+b_i\right), \\ \bar{a}_i=\frac{a_i-\mu}{\sigma} g_i, \quad y_i=f\left(\bar{a}_i+b_i\right), \\ \mu=\frac{1}{n} \sum_{i=1}^n a_i, \quad \sigma=\sqrt{\frac{1}{n} \sum_{i=1}^n\left(a_i-\mu\right)^2} . \end{gathered} ai=j=1mwijxj,yi=f(ai+bi),aˉi=σaiμgi,yi=f(aˉi+bi),μ=n1i=1nai,σ=n1i=1n(aiμ)2 .

改造后的RMSNorm如下:

a ˉ i = a i RMS ⁡ ( a ) g i ,  where  RMS ⁡ ( a ) = 1 n ∑ i = 1 n a i 2 \bar{a}_i=\frac{a_i}{\operatorname{RMS}(\mathbf{a})} g_i, \quad \text { where } \operatorname{RMS}(\mathbf{a})=\sqrt{\frac{1}{n} \sum_{i=1}^n a_i^2} aˉi=RMS(a)aigi, where RMS(a)=n1i=1nai2

RMS中去除了Mean的统计值的使用,只使用均方根(Root Mean Square)进行归一化。

2.2 推理

2.2.1 集束搜索(beam search)

参考资料:https://zhuanlan.zhihu.com/p/114669778
在模型解码过程中,模型是根据前一个结果继续预测后边的,依次推理,此时为了生成完整的句子,需要融合多个step的输出,目标就是使得输出序列的每一步的条件概率相乘最大。最直接的方法就是贪心算法(greedy search),每步取概率最大的输出,然后将从开始到当前步的输出作为输入,取预测下一步,直到句子结束。如下图所示,第一步先去概率最大的A,依次是B,C。这种的缺点就是如果中间某一步取值不对,将影响后续的结果。
在这里插入图片描述

beam search对贪心算法做了优化,在每个step取beam num个最优的tokens。下图beam num=2,第一步先选取最优的2个值{A,C};在第二步,A和C作为输入,继续预测,则有10个可能得结果,然后再取其中最大的2个,作为输入,进行第三步,取结果中概率最大的2个,得到2个结果,然后再在2个结果中取最优的一个作为输出。
在这里插入图片描述

2.2.2 RoPE外推

llama1训练时token长度是2048,llama2虽然升级到了4096,但相比gpt-4的32K还是比较短,对于长文本的生成会有限制。
结合RoPE的特性,可以通过位置插值,扩展token的长度。最简单的方法就是线性插值,如下图所示:
在这里插入图片描述
Source: Shouyuan Chen et al.
对于下图的上半部分,对于2048之后的位置超出了训练2048的长度,模型推理时,该部分很可能就随机乱猜了,导致生成的结果不好。可以将超出的部分通过线性插值压缩到2048,这样只需要用少量4096长度的数据微调,就能达到很好的效果。其压缩方式就是基于m的β进制展开来实现的,进制越大,能覆盖的范围就 。

3 GPT系列(OpenAI)

参考资料:

GPT系列是OpenAI发布的生成式预训练语言模型GPT(Generative Pre-trained Transformer),可用于生成文章、代码、机器翻译、问答等各类内容。每一代GPT模型的参数量都爆炸式增长,效果也越来越惊艳,真~大力出奇迹。

GPT-1 GPT-2 GPT-3 GPT-4
发布时间 2018 2019 2020 2023
参数量 117M 1.5B 175B 估计超过100T
训练数据量 5G训练语料 40G训练语料 45T训练语料 13万亿个token
能力 能够生成文本、翻译语言和回答问题 能够生成更逼真、更复杂的文本 能够生成更逼真、更复杂的文本,并在没有任何额外培训的情况下执行许多任务 能够生成更逼真、更复杂的文本,并在没有任何额外培训的情况下执行许多任务。它还可以处理图像和文本

GPT系列模型是Decoder-only的模型,即只使用transformer的decoder部分,参数量的增长取决于embedding维度、decoder层堆叠的数量和multi-head的数量。
ChatGPT背后的AI背景、技术门道和商业应用(imgs/13110543_64377187df0f336524.webp)_人工智能_18
Source: 京东云开发者

相关推荐

  1. OpenVINO™ 助力 Qwen 2 —— 开启语言模型新时代

    2024-03-19 17:28:04       11 阅读
  2. QwenQwen-audio模型微调项目汇总

    2024-03-19 17:28:04       20 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-19 17:28:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-19 17:28:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-19 17:28:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-19 17:28:04       20 阅读

热门阅读

  1. C# 通信断线重连问题说明与示例

    2024-03-19 17:28:04       19 阅读
  2. Springboot AOP

    2024-03-19 17:28:04       22 阅读
  3. 在MATLAB中进行并行计算和GPU加速?

    2024-03-19 17:28:04       23 阅读
  4. fedora RTL8821CE 无线网卡驱动安装

    2024-03-19 17:28:04       20 阅读
  5. 人工智能入门学习笔记2:人工智能学习资料

    2024-03-19 17:28:04       24 阅读
  6. ffmpeg视频剪辑

    2024-03-19 17:28:04       18 阅读
  7. 从政府工作报告探计算机行业发展

    2024-03-19 17:28:04       19 阅读