大模型学习-ChatGLM、Llama、ChatGPT系列

背景:

预训练框架主要有三种:自回归模型,通常用于生成式任务,只能用于前向或者后向建模,不能同时使用双向的上下文信息,不能完全捕捉token的内在联系,代表作gpt。自编码模型,通过每个降噪目标训练双向文本编码器,代表作bert。encoder-decoder,采用双向注意力机制,通常用于条件生成任务,代表作T5、BART。自回归填空模型,可以根据给定的上下文生成缺失的部分内容。根据已知的部分文本内容生成可能的填空内容。

GLM预训练框架

GLM特点

  1. 自编码思想:在输入文本中,随机删除连续的tokens。
  2. 自回归思想:顺序重建连续tokens。在使用自回归方式预测缺失tokens时,模型既可以访问corrupted文本,又可以访问之前已经被预测的spans。
  3. span shuffling + 二维位置编码技术
  4. 通过改变缺失spans的数量和长度,自回归空格填充目标可以为条件生成以及无条件生成任务预训练语言模型。

(1)自回归空格填充任务

ChatGLM核心:输入可以被分成两部分:Part A是被mask的文本 ,Part B由masked spans组成。假设原始输入文本是[x1,x2,x3,x4,x5,x6],采样的两个文本片段是[x3]以及[x5,x6]。那么mask后的文本序列是:x1,x2,x3,[M],x4,[M],即Part A;同时需要对Part B的片段进行shuffle。每个片段使用[S]填充在开头作为输入,使用[E]填充在末尾作为输出。二维位置编码:第一个位置id用标记part a 中的绝对位置,第二个位置id用表示跨都内部的相对位置。这两个位置id会通过embedding表被投影为两个向量,最终都会被加入到输入token的embedding表达中。观察GLM中自定义attention mask的设计,非常巧妙:Part A中的tokens彼此可见,但是不可见B中的任意tokens。Part B tokens可见Part A。Part B tokens可见B中过去的tokens,不可见B中未来的tokens。采样方式:文本片段的采样遵循泊松分布,重复采样,直到原始tokens中有15%被mask。总结:模型可以自动学习双向encoder(Part A)以及单向decoder(Part B)。自注意力掩码。 灰色区域被掩盖。 Part A 的词语可以自我看到(图2(d)蓝色框),但不能看到 Part B。 Part B 的词语可以看到 Part A 和 Part B 中的前面的词语(图2(d)黄色和绿色框对应两个片段)。

 (2)Multi-Task Pretraining

多任务学习训练语言模型,可以学习到更加通用性和鲁棒性的语言表示。

  (3)模型结构

ChatGLM:一代激活函数为GeLU、每一个block各有一个旋转位置编码、归一化使用layernorm、二三代为Swish-1、所有block共用旋转位置编码、归一化使用rmsnorm、词表进行了缩减。在1:1的中英文预料上训练了1Ttoken量、优化模型结构,修正了二维rope位置编码、较低部署成本,FP16半精度下仅需13GB进行推理、处理更长的序列长度2048、使用监督微调,反馈自助,人类反馈强化学习。

ChatGLM-2:

主要创新:

更长的上下文:基于flashattention技术,将ChatGLM-6B 的 2K 扩展到了 32K,并在对话阶段使用 8K 的上下文长度训练。

更强大的性能:ChatGLM2-6B 使用了 GLM 的混合目标函数

更强大的推理:基于multi-query- attention技术

更开放的协议:ChatGLM2-6B 权重对学术研究完全开放,在填写问卷进行登记后亦允许免费商业使用

与ChatGLM的变化:

1、位置编码改变:使用rope替换二维位置编码。

2、Multi-Query Attention:这是一种共享机制的attention,是Multi-Head Attention(MHA)一种变体,相比Multi-Head Attention,其中query部分没有区别,key和value可以只用一个head。计算式对key和value进行expand或repeat操作,是他们填充到与query一样的维度,后续计算就与MHA没有区别。

3、Attention Mask:v1中part a 是双向attention,part b是causal attention。v2全部换成causal attention,不在区分不再区分是Part A还是Part B,完全变成了decoder-only的架构

4、多目标任务:Chat版本主要还是用的gMask生成式任务,但是在V1版本的代码还能看到mask、gMask等字样,V2已经摒弃了这些特殊token,原因与Attention Mask一致,均因为变成了decoder-only的架构,不再需要区分Part A和Part B。

ChatGLM-3:

省流:ChatGLM2与ChatGLM3模型架构是完全一致的,ChatGLM与后继者结构不同。可见ChatGLM3相对于ChatGLM2没有模型架构上的改进。

相对于ChatGLM,ChatGLM2、ChatGLM3模型上的变化:

1、词表的大小从chatglm的150528缩小为65024.

2、位置编码从每个GLMBlock一份提升为全局一份

3、SelfAttention之后的前馈网络有不同。ChatGLM用GELU(Gaussian Error Linear Unit)做激活;ChatGLM用Swish-1做激活。而且ChatGLM2、3应该是修正了之前的一个bug,因为GLU(Gated Linear Unit)本质上一半的入参是用来做门控制的,不需要输出到下层,所以ChatGLM2、3看起来前后维度不一致(27392->13696)反而是正确的

ChatGLM-4:整体性能相比于glm3全面提升60%,支持更长的上下文,更强的多模态,更快的推理速度,同时GLM-4增强了智能体能力。

https://zhuanlan.zhihu.com/p/696394009https://zhuanlan.zhihu.com/p/696394009

Llama

模型架构:

1、为了增强训练稳定性,采用前置的RMSNorm(均方根)作为层归一化方法

2、 为了提高模型性能,采用SwiGLU作为激活函数。GLU部分接受输入信号并执行门控操作,其目的是对输入信号进行筛选和选择性放大。它由一个sigmoid激活函数作为门控器,将输入信号转换为范围在0和1之间的值。这个值可以被解释为对输入信号的重要性或影响程度。然后,GLU将输入信号与门控值相乘,以便选择性地放大或抑制输入。Swish部分是一个非线性函数,类似于ReLU(Rectified Linear Unit),它将输入信号进行非线性变换。Swish函数定义为 x * sigmoid(x)。Swish函数的特点是在输入为正数时逐渐趋向于线性变换,而在输入为负数时则具有非线性的抑制效果。SwiGLU激活函数将GLU和Swish部分结合起来,通过门控机制选择性地应用Swish变换,以产生最终的激活输出。它的设计目的是在提供非线性表达能力的同时,保持一定的线性性质,从而提高神经网络的表示能力和学习能力。总的来说,SwiGLU激活函数通过门控机制和非线性变换的组合,提供了一种灵活的非线性激活方式,有助于改善神经网络的性能和学习能力。

3、为了更好地建模长序列数据,采用RoPE作为位置编码。可以有效地保持位置信息的相对关系,相邻位置的编码有一定的相似性,远离位置的编码有一定的差异性,增强模型对位置的感知能力,可通过旋转矩阵来实现位置编码的外推,来实现生成超过预训练长度的位置编码,增强模型的泛化能力和鲁棒性。

4、为了平衡性能和准确度,采用了分组查询注意力机制(GQA),与多头注意力的模型能力相近、推理速度与多查询注意力相近。等同于同时融合了两者的优点,但是注意,分组查询注意力并没有减少模型的计算量,只是优化的显存的换入换出,在解码过程中由于key和value的数量级远远小于query的数量级,所以在自回归解码时可以将已经计算出来的key和value一直存储在高速缓存中,减少数据换入换出的次数,以此来提升速度。

 具体来说,首先将输入的token序列通过词嵌入(word embedding)矩阵转化为词向量序列。然后,词向量序列作为隐藏层状态依次通过 个解码器层,并在最后使用RMSNorm进行归一化。归一化后的隐藏层状态将作为最后的输出。

每个版本的Llama由于其隐藏层的大小、层数的不同,均有不同的变体。接下来,我们将展开看下每个版本的不同变体。

Llama1:为了更好的编码,采用BPE进行分词,具体由sentencepiece实现。Llama 1将所有数字分解为单独的数字,并对未知的UTF-8字符回退到字节进行分解,词表大小为32k。1 T token

Llama2:Llama 2将上下文长度扩展到了4k,并且34B和70B参数量版本使用了GQA。2 T token

Llama3:与Llama 2相比,Llama 3将tokenizer由sentencepiece换成了tiktoken,这与GPT4 保持一致。同时,词表大小由32k扩展到了128k。另外,为了提高模型效率,Llama 3的8B和70B都采用了GQA,同时上下文长度也扩展到了8k。15 T token

Llama3.1: 包含8个kv_heads、词表扩充15T多语言token、rope基本频率超参数增加到500000,可以支持更长的上下文。https://zhuanlan.zhihu.com/p/712251536

https://zhuanlan.zhihu.com/p/694072728

GPT: 12层transfomer、参数量1.17亿、具有zero-shot能力

GPT-2: batch_size从64变为512,窗口大小从512-1024、15亿参数、主推zero-shot能力、后置层归一化变成前置层归一化、最后一个自注意力层之后额外加一个层归一化

GPT-3: 引入稀疏注意力(只计算相对距离不超过K以及为k、2k等等)n*logn  、主推few-shot能力、1750亿参数、只能输入3000字

instructGPT-3:引入有监督微调、基于人类反馈的强化学习

GPT-4:1.8万亿个参数、可接受输入长度高达32000字

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>