【大模型系列】问答理解定位(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: 京东云开发者

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深度强化学习(六)(改进价值学习)

深度强化学习(六)(改进价值学习) 一.经验回放 把智能体与环境交互的记录(即经验)储存到 一个数组里&#xff0c;事后反复利用这些经验训练智能体。这个数组被称为经验回放数组&#xff08;replay buffer&#xff09;。 具体来说, 把智能体的轨迹划分成 ( s t , a t , r t ,…

软件架构设计 C/S与B/S架构的区别

一、什么是C/S架构&#xff1f; C/S是Client/Server的缩写。服务器通常采用高性能的PC、工作站或小型机&#xff0c;并采用大型数据库系统&#xff0c;如Oracle或SQLServer。 C/S架构软件有一个特点&#xff0c;就是如果用户要使用的话&#xff0c;需要下载一个客户端&#x…

【Linux系列】计算机系统中的架构与发行版:理解与区分

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

m3u8,一个超酷的 Python 库!

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 大家好&#xff0c;今天为大家分享一个超酷的 Python 库 - m3u8。 Github地址&#xff1a;https://github.com/globocom/m3u8 在网络视频传输中&#xff0c;HLS&#xff08;HTTP Live Streaming&#xff09;是一…

unity内存优化之AB包篇(微信小游戏)

1.搭建资源服务器使用(HFS软件(https://www.pianshen.com/article/54621708008/)) using System.Collections; using System.Collections.Generic; using UnityEngine;using System;public class Singleton<T> where T : class, new() {private static readonly Lazy<…

Java项目:58 ssm012医院住院管理系统+vue

作者主页&#xff1a;源码空间codegym 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 管理员&#xff1b;首页、个人中心、医护人员管理、科室管理、病人管理、病房管理、病人信息管理、病历管理、医嘱管理、手术安排管理、药品信…

(一)、机器人时间同步方案分析

1、是否有必要进行时间同步 目前的自动驾驶系统包括 感知、定位、决策规划、控制 等模块&#xff0c;这些模块的正常运行需要依靠各种不同类型的传感器数据的准确 融合。尤其是激光雷达与相机这两种传感器在感、知定位模块中起着至关重要的作用。机械式旋转扫描激光雷达本身较低…

(二)移植FreeRTOS到STM32中

一、概念 &#xff08;1&#xff09;任务&#xff08;线程&#xff09;&#xff1a;根据功能的不同&#xff0c;将一个系统分割成一个个独立且无法返回的函数&#xff0c;这个函数就被称为任务 &#xff08;2&#xff09;任务栈&#xff1a;静态创建的任务保存在栈中 &#xf…

LeetCode2. 两数相加(Java)

题目&#xff1a; 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外&#xff0c;这…

USB打印机改网络打印机

解决传统SMB缺陷可跨平台设备使用。 1、安装deepin 如何安装 – 深度科技社区 2、配置IP地址 vi /etc/network/interfaces && systemctl restart networking 3、安装程序上传到服务器并解压。运行0Dinstalld目录下文件 sh 0Dinstalld/0installdd.sh http://XX.XX.XX…

肝了三天,完成了AIGC工具网站大全,建议收藏再看

说是肝了三天&#xff0c;其实远远不止&#xff0c;前前后后&#xff0c;从资料搜集到最后整理成文&#xff0c;有近一个月了&#xff0c;大家看在整理不易的份上&#xff0c;给点个赞吧&#xff0c;不要光顾着收藏呀&#xff01; 国内网站 AIGC 导航 https://www.aigc.cn 网…

visual studio2019项目中引入头文件失效问题的解决

这几天把项目整理一下&#xff0c;但在引入头文件过程中非常曲折。 项目本身写好了可以运行&#xff0c;但是项目结构是这样的&#xff1a; 所以想把功能模块化&#xff0c;同一类协议功能放在一起。 于是建包&#xff0c;创建文件&#xff0c;导入头文件&#xff1a; 在新…

HTML基础:了解CSS的3种创建方法

你好&#xff0c;我是云桃桃。 CSS&#xff0c;即层叠样式表&#xff08;Cascading Style Sheets&#xff09;&#xff0c;是一种用于描述网页样式和布局的标记语言。它通过定义样式规则来控制网页元素的外观和排版&#xff0c;包括文字大小、颜色、边距、背景等&#xff0c;从…

3D Occupancy 预测冠军方案:FB-OCC

文章结尾有视频和连接 背景知识 Occupancy 更像是一个语义分割任务&#xff0c;但是它是 3D 空间的语义分割它的我们对 Occupancy 分自己的期望是它能够具有通用的这种目标建模的能力&#xff0c;才能够不是不受制于这种目标框这种几何的矩形的这种约束而能够建模任意形状的这…

欧科云链:ETH Dencun升级倒计时,哪些数据需要重点关注?

2024年3月13日 21:55&#xff08;epoch 269,568&#xff09;&#xff0c;以太坊将完成坎昆-德内布升级 &#xff08;Dencun 升级&#xff09;&#xff0c;OKLink 专题数据页传送门 &#x1f449; oklink.com/eth/dencun-upgrade 此次升级的主要目标是提升 Layer 2 网络的可扩展…

特殊文本文件、日志技术

特殊文件 为什么要用这些特殊文件&#xff1f; 存储多个用户的&#xff1a;用户名、密码 特殊文件:Properties属性文件 特点&#xff1a; 都只能是键值对键不能重复文件后缀一般是.properties结尾的 作用&#xff1a;存储一些有关系的键值对数据 Properties 是一个Map集合(键…

基础-笔试题2

1、int a[10]{1,2,3,4,5,6,7,8,9,0}; int *p&a[1]; 则p[6]等于_ 答&#xff1a;8 &#xff0c;考察数组和指针的基本用法&#xff1b; 2、整数数组清零的方法&#xff1f; bzero(),memset()。 memset() 是C语言标准库中的一部分&#xff0c;用于将内存区域设置…

leetcode刷题日记之串联所有单词

题目描述 解题思路 一开始考虑的就是暴力破解&#xff0c;每次切片切words中字母的个数&#xff0c;然后根据每个词语的长度进行进一步的切片&#xff0c;将切出来的单词放入列表&#xff0c;然后每次对比一次&#xff0c;如果存在&#xff0c;就从原来的列表中&#xff0c;删…

LeetCode Python - 58. 最后一个单词的长度

目录 题目描述解法运行结果 题目描述 给你一个字符串 s&#xff0c;由若干单词组成&#xff0c;单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。 单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。 示例 1&#xff1a; 输入&#xff1a;s “Hel…

Leet code 34 在排序数组中查找元素的第一个和最后一个位置

解题思路 二分查找 核心就是 先找到左端点的位置 再找到右端点的位置 二分查找整体不难 但难在细节处理 一旦处理不好就是死循环 定义rightnums.size()-1 left0 if(nums[mid] < target) 更新 left leftmid1 if(nums[mid] > target) 这里为什么要大于等于我们不…