阿里大模型:通义千问

【“通义”概述】

Timeline:

图片[1]-阿里大模型:通义千问-JieYingAI捷鹰AI

整体看“通义”体系,可以分成两个层面:

一、大模底座

以过往的M6模型作为老底子,到2023年的通义千问系列,这里面有三种模型:

二、产品应用

图片[2]-阿里大模型:通义千问-JieYingAI捷鹰AI

通义星辰-示例:

图片[3]-阿里大模型:通义千问-JieYingAI捷鹰AI

通义智文-示例:

图片[4]-阿里大模型:通义千问-JieYingAI捷鹰AI

【23.9 Qwen Tech Report】

Github:

一、简述

Qwen系列家族:

图片[5]-阿里大模型:通义千问-JieYingAI捷鹰AI

最上方,是Qwen-base版,做了对应的Reward Model;这个RM,针对Chat版做了RLHF。

Base版和Chat,构成了基本的model矩阵,这也是很多大模型release时的标配。

另外,还做了Code版、Math版、VL版。

VL版是for图片理解的,不是一键式图片生成,所以有Chat功能;比如,VQA等任务。

能力雷达图:

图片[6]-阿里大模型:通义千问-JieYingAI捷鹰AI

Qwen系列是23.8发布的,当时GPT-4的领先是显而易见的;

其实它强调的是,对比此时的13B模型,主要是LLaMA2-13B、Baichuan2-13B而言,具有很大的领先优势。

当然,对比24.2发布的Qwen1.5,此时的Qwen能力也没那么强。

图片[7]-阿里大模型:通义千问-JieYingAI捷鹰AI

在Qwen系列内部,Qwen-14B > Qwen-7B,模型参数量size是重要的;

经过RLHF的版本Qwen-14B-Chat-RLHF,是最优,也证实了RLHF的重要性。

二、预训练&对齐2.1 语料

总共3T tokens:中英双语;包括 web、百科、书籍、代码等。

数据处理流程:

图片[8]-阿里大模型:通义千问-JieYingAI捷鹰AI

图片[9]-阿里大模型:通义千问-JieYingAI捷鹰AI

1、对于web页面,从HTML标记里提取文本,并检测语言

2、去重:有 精确匹配 + 模糊匹配两种;后者比如LSH、MinHash等近似去重算法。

3、content打分,使用多个model:language models、text-quality models、检测潜在攻击性不合适内容的model。

4、对特定的source源,进行 上采样,确保多样性

5、指令数据:

构造了高质的instruction数据,类似GPT-3;

如果它们里,跟test集中有重叠(13字以上),则删除。当然,这个操作,不适用所有下游任务。

但在本文披露的评估任务里,这些指令数据,是经过了上述过滤过程。

2.2 模型2.2.1 分词

使用BPE

词表大小是152k,即15万多。

相对于其他模型而言,有更低的压缩比:

图片[10]-阿里大模型:通义千问-JieYingAI捷鹰AI

另,还有个发现是:词表本身的规模,比如缩小的话,对下游任务并没有很大的性能影响。这可能是因为,大部分词是中长尾的,在使用频度上。

2.2.2 模型结构

整体结构,是基于LLaMA进行修改的。这里是LLaMA 1代,于23.2发布;其实,Qwen发布时,LLaMA2已经发布1个多月了。

图片[11]-阿里大模型:通义千问-JieYingAI捷鹰AI

注意,此时已经出现了,最小的1.8B model了,这也是后续Qwen1.5时代最小size的model。

位置编码:RoPE

Bias:去除了大多的layer层面的bias,在QKV所在的layer添加了bias,以探索外推性。

正则:RMSNorm

激活函数:在初期的一些实验中,发现GLU是由于GeLU的;而SwiGLU是GLU的改进版,最终采用了SwiGLU。

2.2.3 训练技术

训练batch:对doc进行了三步曲:shuffle->merge->总体truncate。

训练加速:采用Flash Attention(其实此时,V2版已经发布,但qwen里用的还是v1版,2022年发布的)

BFloat16混合精度:混合精度,渐渐是很多LLM的主流的方式

上下文长度:2048

2.3上下文2.3.1NTK-aware Interpolation

这里引用了国外reddit上的一篇帖子:

《NTK-Aware Scaled RoPE allows LLaMA models to have extended (8k+) context size without any fine-tuning and minimal perplexity degradation》

NTK,是神经正切核 (NTK) 理论

出发点是:

...if you apply Neural Tangent Kernel (NTK) theory to this problem, it becomes clear that simply interpolating the RoPE's fourier space "linearly" is very sub-optimal, as it prevents the network to distinguish the order and positions of tokens that are very close by.

Borrowing from NTK literature, scaling down the fourier features too much will eventually even prevent succesful finetunes (this is corroborated by the recent paper by Meta that suggests an upper bound of ~600x)

如果将神经正切核 (NTK) 理论应用于此问题,很明显,简单地“线性”插值 RoPE 的傅里叶空间是非常次优的,因为它会阻止网络区分非常重要的标记的顺序和位置。从NTK的角度看,过度缩小傅里叶特征最终甚至会阻止成功的微调(Meta 最近的论文证实了这一点,该论文建议上限约为 600x)

所以:

Instead of the simple linear interpolation scheme, I've tried to design a nonlinear interpolation scheme using tools from NTK literature. Basically this interpolation scheme changes the base of the RoPE instead of the scale,

which intuitively changes the "spinning" speed which each of the RoPE's dimension vectors compared to the next.

Because it does not scale the fourier features directly, all the positions are perfectly distinguishable from eachother, even when taken to the extreme (eg. streched 1million times, which is effectively a context size of 2 Billion)

我尝试使用 NTK 文献中的工具设计非线性插值方案,而不是简单的线性插值方案。基本上,这种插值方案改变了 RoPE 的基数而不是尺度,这直观地改变了 RoPE 的每个维度向量与下一个维度向量相比的“旋转”速度。

因为它不直接缩放傅里叶特征,所以即使在极端情况下(例如,拉伸 100 万次,这实际上是 20 亿的上下文大小),所有位置都可以完全相互区分。

2.3.2Attention机制

图片[12]-阿里大模型:通义千问-JieYingAI捷鹰AI

LogN-Scaling:上下文长度->a factor -> 基于该factor去对Q&V的点积进行缩放,确保随着上下文长度的增加,注意力值的熵保持稳定。

window attention:将注意力限制在一个有限的上下文窗口内,防止模型对距离太远的词元进行注意。

2.3.3 结果怎么样呢?

图片[13]-阿里大模型:通义千问-JieYingAI捷鹰AI

结合以上三项技术,在arxiv paper数据集上,进行context外推的测试,表中的数字是PPL困惑度这个指标。

可以看出,从1024->8192,PPL都是较低的;到16k的话会突然升高。

至少,Qwen到8k(8192)是没有问题的。(另,24.2发布的Qwen1.5,直接到32k了)

2.4 对齐&RLHF2.4.1 SFT

参考了InstructGPT的做法,标注类人式对话提高模型的实用性。

为了确保模型能够广泛适应各种场景,排除了使用可能限制其能力的提示模板格式化的数据。

注重语言模型的安全性,对与安全问题相关的数据进行了标注,例如暴力、偏见和色情内容。

语料Schema同样重要:

采用了OpenAI的ChatML的格式,这种多功能的元语言,能够描述元数据(如角色)和一轮对话的内容。

该格式使得模型能够有效区分各种类型的信息,包括系统设置、用户输入和助手输出等。通过利用这种方法,我们可以增强模型准确处理和分析复杂对话数据的能力。

2.4.2 RLHF

为了确保适当考虑用户提示的多样性和复杂性,我们创建了一个包含约6600个详细标签的分类系统,

实现了一个平衡抽样算法,在选择用于奖励模型注释的提示时考虑多样性和复杂性(Lu et al., 2023)。

生成广泛的响应,我们利用了不同大小和采样策略的QWEN模型,因为多样化的响应可以帮助减少注释难度并提高奖励模型的性能。

注释者按照标准注释指南评估这些响应,

根据它们的得分形成比较对。

三、延伸3.1 Code-Qwen

跟过往的Code GPT只在code data预训练不同,我们是:

首先,基于Qwen base model,在text+code上训练;

然后,在code only data上继续预训练,此时token数大约90B。

代码生成,很多是长文本,所以上下文长度,直接设置到8192,而非qwen1 base model的2048.

效果评测如下:

图片[14]-阿里大模型:通义千问-JieYingAI捷鹰AI

图片[15]-阿里大模型:通义千问-JieYingAI捷鹰AI

大多模型,距离GPT-3.5、GPT-4比较遥远,这两者“遥遥领先”。

对比其他模型,Qwen比较SOTA,CODE-QWEN-CHAT版可以杀到66.4的高分,离GPT-3.5不远了。

但文中坦承:测试还不充分,还需要更多的benchmark测试出来,验证这些大模型的能力。

2、Math-Qwen

【23.8 Qwen-VL】

Paper:

图片[16]-阿里大模型:通义千问-JieYingAI捷鹰AI

Github:

Qwen-VL是首个开源的448分辨率的LVLM模型

一、简述

Figure 1:能力多边形图:

有点屠榜的意思,比过往的很多模型强很多。当然,代表天花板的GPT-4V,没有加入对比。

图片[17]-阿里大模型:通义千问-JieYingAI捷鹰AI

Figure 2:能力示例

图片[18]-阿里大模型:通义千问-JieYingAI捷鹰AI

能力项:

Qwen-VL的优点:

后续TODO:

1、将Qwen-VL 与更多模式集成,例如语音和视频。

2、通过扩大模型大小、训练数据和更高的分辨率来增强Qwen-VL,使其能够处理多模式数据中更复杂和错综复杂的关系

3、扩展 Qwen-VL 在多模态生成方面的能力,特别是在生成高保真图像和流畅语音方面。

二、模型

模型大小:

图片[19]-阿里大模型:通义千问-JieYingAI捷鹰AI

2.1 三个组件1)LLM:Qwen-7B2)Visual Encoder

图片[20]-阿里大模型:通义千问-JieYingAI捷鹰AI

基于ViT架构,所有输入images,被切成14个patch

采用OpenClip的ViT-bigG模型,来初始化训练权重;

这里的OpenClip,是LAION AI,基于OpenAI的闭源CLIP+LAION-5B数据集,训练的,最后开源版CLIP,所以成为“OpenClip”,后来名声大噪的AIGC大模型Stable Diffusion 2.0也是基于它。

3)Position-aware Vision-Language Adapter

图片[21]-阿里大模型:通义千问-JieYingAI捷鹰AI

为了缓解长图像特征序列引起的效率问题

该适配器,包含随机初始化的单层交叉注意模块:使用一组可训练向量(嵌入)作为查询向量,并将来自视觉编码器的图像特征作为交叉注意操作的键。

该机制将视觉特征序列压缩到固定长度256;这256的图像序列特征->LLM中。

考虑到位置信息对于细粒度图像理解的重要性,将 2D 绝对位置编码合并到交叉注意机制的查询密钥对中,减轻压缩过程中位置细节的潜在丢失。

2.2 输入输出

Image Input:

为了区分图像特征输入和文本特征输入,附加了两个特殊标记( 和 )分别到图像特征序列的开始和结束,表示图像内容的开始和结束。

细粒度理解,那要引入BBX到模型中,具体如何弄?

图片[22]-阿里大模型:通义千问-JieYingAI捷鹰AI

1、针对BBX,编码到一个特定的string:

,且不需额外的词表。

2、针对1里的string,前后加上 、;便于同其他正常的text区分

3、对于跟BBX相关的description,则引入、两个标记

其实,物体检测与识别中,有Bounding Box(BBX)和Anchor的概念;BBX即包围物体的最小矩形框。

三、训练

图片[23]-阿里大模型:通义千问-JieYingAI捷鹰AI

三个组件,在不同阶段的 freeze or train 情况:

LLM

Visual Encoder

VL Adapter

1、Pretraining

冻结

训练

训练

2、多任务Pretrain

训练

训练

训练

3、有监督微调

训练

冻结

训练

3.1 Pretraining3.1.1 数据

我们主要利用大规模、弱标记、网络爬行的图像文本对集。我们的预训练数据集由多个可公开访问的来源和一些内部数据组成。

我们努力清理数据集中的某些模式。如表2所示,

原始数据集总共包含50亿个图文对,清洗后还剩下14亿/1.4B个数据,其中英文(文本)数据占77.3%,中文(文本)数据占22.7%。

图片[24]-阿里大模型:通义千问-JieYingAI捷鹰AI

LAION-en 和 LAION-zh 是 LAION-5B 的英文和中文子集。LAION-COCO是从 LAION-en 生成的合成数据集。

DataComp和 Coyo是图像文本对的集合。

CC12M、CC3M 、SBU 和 COCO Caption 是学术字幕数据集。

3.1.2 训练

我们冻结LLM,在此阶段仅优化Visual Encoder和Adapter。输入图像的大小调整为 224×224 。

训练目标是最小化文本标记的交叉熵。

训练过程使用图文对的batch size为30720,

整个第一阶段预训练持续50,000步,消耗约15亿图文对。

3.2 多任务Pretrain3.2.1 数据

图片[25]-阿里大模型:通义千问-JieYingAI捷鹰AI

1、引入了具有更大输入分辨率的高质量、细粒度的VL标注数据和交错的图文数据。

2、如上表所示,对 Qwen-VL 进行了 7 项任务的训练:

3、最后,我们通过将相同的任务数据打包成长度为 2048 的序列来简单地构造交错的图像文本数据。

3.2.2 训练

将视觉编码器的输入分辨率从 224×224 提高到 448×448,减少图像下采样造成的信息损失。

Qwen-VL是第一个,开源的448x的多模态大模型

消除了窗口注意力和全局注意力以获得更高分辨率的视觉变换器。

LLM模型,也停止freeze,参与被训练,训练目标与预训练阶段相同。

3.3 有监督微调

图片[26]-阿里大模型:通义千问-JieYingAI捷鹰AI

3.3.1 数据

1、多模态指令调优数据主要来自于字幕数据或通过LLM自指令生成的对话数据,通常只针对单图像对话和推理,仅限于图像内容理解。

2、通过手动注释、模型生成和策略串联构建了一组额外的对话数据,将定位和多图像理解能力纳入 Qwen-VL 模型中。

3、我们在训练过程中混合了多模态和纯文本对话数据,以确保模型在对话能力上的通用性。

最终:指令调整数据达350k。

3.3.2 训练

在这个阶段,我们冻结了Visual Encoder,然后去训练LLM和Adapter两个模块。

四、Eval

4.1图像标题和一般视觉问答

4.2 面向文本的视觉问答

4.3参考表达理解

4.4视觉语言任务的小样本学习

4.5真实世界用户行为中的指令遵循

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
Be happy. No worries, just smile.
开心点,别担心,微笑就好