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

文章目录

  • 1 Qwen-VL(2023, Alibaba)
    • 1.1 网络结构
    • 1.2 模型训练
  • 2 Llama2(2023, Meta)
    • 2.1 网络结构
      • 2.1.1 MHA/GQA/MQA
      • 2.1.2 RoPE(Rotary Position Embedding, 旋转式位置编码)
      • 2.1.3 RMSNorm
    • 2.2 推理
      • 2.2.1 集束搜索(beam search)
      • 2.2.2 RoPE外推
  • 3 GPT系列(OpenAI)

1 Qwen-VL(2023, Alibaba)

参考资料:

  • Paper:https://arxiv.org/pdf/2308.12966.pdf
  • Github:https://github.com/QwenLM/Qwen-VL/blob/master/README_CN.md
  • WebUI:https://tongyi.aliyun.com/qianwen/
  • Demo:https://modelscope.cn/studios/qwen/Qwen-VL-Chat-Demo/summary

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)

参考资料:

  • Paper:https://arxiv.org/abs/2307.09288
  • Gitthub:https://github.com/facebookresearch/llama-recipes
  • Huggingface:https://hf-mirror.com/meta-llama

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, 旋转式位置编码)

参考资料:

  • https://spaces.ac.cn/archives/8265
  • https://spaces.ac.cn/archives/9675/comment-page-2

一般采用绝对位置编码对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)

参考资料:

  • Paper:
    • GPT: Improving Language Understanding by Generative Pre-Training
    • GPT-2: Language Models are Unsupervised Multitask Learners
    • GPT-3: Language Models are Few-Shot Learners
  • Blog:https://tooabstractive.com/how-to-tech/difference-between-gpt-1-gpt-2-gpt-3-gpt-4/

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/542940.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SketchUp Pro 2023 for Mac/Win:重塑设计,引领未来

在数字化浪潮席卷全球的今天&#xff0c;设计行业也迎来了前所未有的变革。SketchUp Pro 2023&#xff0c;这款专为设计师打造的草图大师软件&#xff0c;正以其强大的功能和卓越的性能&#xff0c;引领着设计界的新潮流。 SketchUp Pro 2023不仅继承了前代产品的优秀基因&…

CSS3技巧38:3D 翻转数字效果

博主其它CSS3 3D的文章&#xff1a; CSS3干货4&#xff1a;CSS中3D运用_css 3d-CSDN博客 CSS3干货5&#xff1a;CSS中3D运用-2_中3d-2-CSDN博客 CSS3干货6&#xff1a;CSS中3D运用-3_css3d 使用-CSDN博客 最近工作上烦心的事情太多&#xff0c;只有周末才能让我冷静一下 cod…

【蓝桥杯单片机】十四届省赛“重难点”解析(附源码)

【蓝桥杯单片机】十四届省赛“重难点”解析 一、题目难点解析二、易出错点提示三、完整代码链接 笔记包括&#xff1a;①题目难点解析、②易出错点提示、③完整代码链接 注&#xff1a;本文提供的所有代码都是使用第十四届竞赛包完成 系列文章链接&#xff1a; 一、题目难点解析…

【数据结构和算法初阶(C语言)】队列实操(概念实现+oj题目栈和队列的双向实现以及循环链表难点题目详解!)

目录 1. 队列的概念及结构 2.队列结构存在的意义应用 3.队列实现的结构选择 4.队列实现 5.队列对数据的处理 5.1队列初始化 5.2队尾入数据 5.3队头出数据 5.4获取队列尾部元素 5.5获取队列头部元素 5.6获取队列中元素个数 5.7检测队列是否为空 5.8销毁队列 6.循环队列补充 7.使…

springboot宝鸡文理学院学生成绩动态追踪系统

摘 要 研究开发宝鸡文理学院学生成绩动态追踪系统的目的是让使用者可以更方便的将人、设备和场景更立体的连接在一起。能让用户以更科幻的方式使用产品&#xff0c;体验高科技时代带给人们的方便&#xff0c;同时也能让用户体会到与以往常规产品不同的体验风格。 与安卓&#…

Linux异步通知实验:应用程序对异步通知的处理

一. 简介 前面文章学习了 应用程序对异步通知的处理方法&#xff0c;另一篇文章实现了Linux驱动对异步通知的处理&#xff1a; Linux应用程序对异步通知的处理-CSDN博客 Linux异步通知实验&#xff1a;驱动中异步通知的处理-CSDN博客 本文继续Linux异步通知实验&#xff0c…

AI视频矩阵混剪系统|罐头鱼AI批量混剪定时发送

AI视频矩阵混剪系统&#xff1a;智能创作与发布的完美结合 随着社交媒体平台的快速发展&#xff0c;视频已成为各行业推广和传播的热门方式。然而&#xff0c;对于许多人来说&#xff0c;制作高质量的视频仍然是一项挑战。Q:290615413但现在&#xff0c;有了AI视频矩阵混剪系统…

字节面试: Mysql为什么用B+树,不用跳表?

尼恩说在前面 在40岁老架构师 尼恩的读者交流群(50)中&#xff0c;最近有小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、希音、百度、网易、美团、蚂蚁、得物的面试资格&#xff0c;遇到很多很重要的相关面试题&#xff1a; Mysql用B树&#xff0c;不用跳表&…

【上海大学计算机组成原理实验报告】一、数据传送实验

一、实验目的 了解实验仪器数据总线的控制方式。掌握数据传送的基本原理。掌握各寄存器的结构、工作原理及其控制方法。 二、实验原理 根据实验指导书的相关内容&#xff0c;数据输入到寄存器的过程是先通过指令选择源和目标&#xff0c;再通过数据总线来传送数据&#xff0…

【ARM】UBL本地服务器离线激活license

【更多软件使用问题请点击亿道电子官方网站查询】 1、 文档目标 UBL本地服务器离线激活license。 2、 问题场景 解决有用户外出时激活 license。 3、软硬件环境 1&#xff09;、软件版本&#xff1a;MDK5.39 2&#xff09;、电脑环境&#xff1a;Ubuntu 20.04 LTS 3&…

Android U pipeline-statusbar

Android U - statusbar pipeline 写在前面 Android原生从T开始对SystemUI进行MVVM改造&#xff0c;U上状态栏部分进行了修改&#xff1b;第一次出现修改不会删除原有逻辑&#xff0c;而是两版并行&#xff0c;留给其他开发者适配的时间&#xff1b;在下一个大版本可能会删除原…

PHP<=7.4.21 Development Server源码泄露漏洞 例题

打开题目 dirsearch扫描发现存在shell.php 非预期解 访问shell.php&#xff0c;往下翻直接就看到了flag.. 正常解法 访问shell.php 看见php的版本是7.3.33 我们知道 PHP<7.4.21时通过php -S开起的WEB服务器存在源码泄露漏洞&#xff0c;可以将PHP文件作为静态文件直接输…