【大模型系列】问答理解定位(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.rhkb.cn/news/277363.html

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

相关文章

论文篇00-【历年论文真题考点汇总】与【历年论文原题2009~2023年文字版记录】(2024年软考高级系统架构设计师冲刺知识点总结-论文篇-先导篇)

专栏系列文章推荐: 案例分析篇00-【历年案例分析真题考点汇总】与【专栏文章案例分析高频考点目录】 综合知识篇00-综合知识考点汇总目录 ...... 历年真题论文题考点汇总 历年软考系统架构设计师论文原题(2009-2022年) 因最新的2023年目前仅能搜索到回忆版,等楼主搜集到…

macbook删除软件只需几次点击即可彻底完成?macbook删除软件没有叉 苹果笔记本MacBook电脑怎么卸载软件? cleanmymac x怎么卸载

在MacBook的使用过程中&#xff0c;软件安装和卸载是我们经常需要进行的操作。然而&#xff0c;不少用户在尝试删除不再需要的软件时&#xff0c;常常发现这个过程既复杂又耗时。尽管MacOS提供了一些基本的macbook删除软件方法&#xff0c;但很多时候这些方法并不能彻底卸载软件…

Oracle Primavera P6 数据库升级

前言 为了模拟各种P6测试&#xff0c;我常常会安装各种不同版本的p6系统&#xff0c;无论是P6服务&#xff0c;亦或是P6客户端工具Professional&#xff0c;在今天操作p6使用时&#xff0c;无意识到安装在本地的P6 数据库&#xff08;21.12&#xff09;出现了与Professional软…

Linux系统——Session ID(负载均衡如何保持会话)

目录 一、实验环境搭建 二、部署Nginx代理服务器配置 三、部署后端真是服务器Tomcat配置 四、配置Tomcat的Session ID会话保持 五、测试 此次实验是Tomcat后端服务器如何做Session ID会话保持 一、实验环境搭建 [rootlocalhost ~]#systemctl stop firewalld [rootlocalho…

【Machine Learning】Suitable Learning Rate in Machine Learning

一、The cases of different learning rates: In the gradient descent algorithm model: is the learning rate of the demand, how to determine the learning rate, and what impact does it have if it is too large or too small? We will analyze it through the follow…

ROS 语音交互(三) tts

目录 一、模型选择 二、流程 三、核心代码展示 一、模型选择 科大讯飞超拟人识别 二、流程 超拟⼈合成协议 | 讯飞开放平台文档中心 (xfyun.cn) 三、核心代码展示 # coding: utf-8 import _thread as thread import os import time import base64import base64 import …

【LeetCode热题100】148. 排序链表(链表)

一.题目要求 给你链表的头结点 head &#xff0c;请将其按 升序 排列并返回 排序后的链表 。 二.题目难度 中等 三.输入样例 示例 1&#xff1a; 输入&#xff1a;head [4,2,1,3] 输出&#xff1a;[1,2,3,4] 示例 2&#xff1a; 输入&#xff1a;head [-1,5,3,4,0] 输…

CSS中如何设置单行或多行内容超出后,显示省略号

1. 设置超出显示省略号 css设置超出显示省略号可分两种情况&#xff1a; 单行文本溢出显示省略号…多行文本溢出显示省略号… 但使用的核心代码是一样的&#xff1a;需要先使用 overflow:hidden;来把超出的部分隐藏&#xff0c;然后使用text-overflow:ellipsis;当文本超出时…

NVENC 视频编码器 API 编程指南 ( 中文转译 )

基于 NVIDIA Kepler™ 和更高版本 GPU 架构的 NVIDIA GPU 包含基于硬件的 H.264/HEVC/AV1 视频编码器&#xff08;以下简称 NVENC&#xff09;。NVENC 硬件采用 YUV/RGB 作为输入&#xff0c;并生成符合H.264/HEVC/AV1 标准的视频比特流。可以使用 NVIDIA 视频编解码器 SDK 中提…

Git管理远程仓库以及 git push 中遇到的问题

Git管理远程仓库 从git 到GitHub问题问题1问题描述解决方法&#xff1a; 问题2问题描述解决方法 从git 到GitHub // 直接push git push //如果不行 //step 1 git remote add origin <URL> //step 2 git remote -v //step 3 git branch //step 4 git push origin main问题…

吴恩达deeplearning.ai:使用多个决策树随机森林

以下内容有任何不理解可以翻看我之前的博客哦&#xff1a;吴恩达deeplearning.ai专栏 文章目录 为什么要使用树集合使用多个决策树(Tree Ensemble)有放回抽样随机森林XGBoost(eXtream Gradient Boosting)XGBoost的库实现何时使用决策树决策树和树集合神经网络 使用单个决策树的…

redis中List和hash数据类型

list类型是用来存储多个有序的字符串的&#xff0c;列表当中的每一个字符看做一个元素&#xff0c;一个列表当中可以存储一个或者多个元素&#xff0c;redis的list支持存储2^32-1个元素。redis可以从列表的两端进行插入&#xff08;pubsh&#xff09;和弹出&#xff08;pop&…

[长城杯 2021 院校组]funny_js

[长城杯 2021 院校组]funny_js 审题 根据题名提示为js&#xff0c;再在ida中查看&#xff0c;基本可以确定为quickjs题 QuickJS 是一个快速、灵活且易于嵌入的 JavaScript 引擎&#xff0c;适用于需要在资源受限环境下运行 JavaScript 代码的场景。 工具准备 来到Linux&…

python入门(二)

python的安装很方便&#xff0c;我们这里就不再进行讲解&#xff0c;大家可以自己去搜索视频。下面分享一下Python的入门知识点。 执行命令的方式 在安装好python后&#xff0c;有两种方式可以执行命令&#xff1a; 命令行程序文件&#xff0c;后缀名为.py 对于命令行&…

Golang协程详解

一.协程的引入 1.通过案例文章引入并发,协程概念 见:[go学习笔记.第十四章.协程和管道] 1.协程的引入,调度模型&#xff0c;协程资源竞争问题 通过上面文章可以总结出Go并发编程原理: 在一个处理进程中通过关键字 go 启用多个协程&#xff0c;然后在不同的协程中完成不同的子任…

Tomcat Session 集群 ---------会话保持

一、 负载均衡、反向代理 环境搭建&#xff1a; nginx服务器192.168.246.7 tomcat 1服务器192.168.246.8 tomcat 2服务器192.168.246.9 7-1 nginx服务器搭建 [rootzzcentos1 ~]#systemctl stop firewalld [rootzzcentos1 ~]#setenforce 0 [rootzzcentos1 ~]#yum install …

Spark-Scala语言实战(1)

在之前的文章中&#xff0c;我们学习了如何在Linux安装Spark以及Scala&#xff0c;想了解的朋友可以查看这篇文章。同时&#xff0c;希望我的文章能帮助到你&#xff0c;如果觉得我的文章写的不错&#xff0c;请留下你宝贵的点赞&#xff0c;谢谢。 Spark及Scala的安装https:/…

python基础——字符串的常见操作方法【下标索引,index,count,len,replace,split,strip】

&#x1f4dd;前言&#xff1a; 字符串是一种有序的&#xff0c;允许重复字符串存在的&#xff0c;不可修改的序列 这篇文章主要总结一下python中有关字符串的部分相关知识&#xff0c;以及字符串的常见操作方法&#xff1a; 1&#xff0c;和其他序列极其类似的操作方法 2&…

【C语言】打印素数

写一个代码&#xff1a;打印100~200之间的素数 素数定义&#xff1a;只能被1和本⾝整除的数字 判断方法&#xff1a; 1&#xff0c;拿2~i-1之间的数字去试除i&#xff0c;需要产生2~i-1之间的数字。 2&#xff0c; 如果2~i-1之间有数字能整除i&#xff0c;则i不是素数&#x…

vscode jupyter 如何关闭声音

网上之前搜的zen模式失败 仅仅降低sound失败 #以下是成功方式&#xff1a; 首先确保user和remote的声音都是0&#xff1a; 然后把user和remote的以下设置都设置为off就行了&#xff01; 具体操作参考 https://stackoverflow.com/questions/54173462/how-to-turn-off-or-on-so…