GLM-130B: AN OPEN BILINGUAL PRE-TRAINED MODEL
基本信息
清华中文大模型:ChatGLM
博客贡献人
徐宁
作者
Aohan Zeng, Xiao Liu, Zhengxiao Du
标签
摘要
本文介绍了一种具有1300亿个参数的中英双语预训练语言模型—GLM-130B。这是对至少和GPT-3一样好的100b级模型的开源尝试,并揭示了这样规模的模型是如何成功地进行预训练的。在本文中,以模型GLM为基座模型,并介绍了GLM-130B的训练过程,包括其设计选择,训练策略的效率和稳定性,以及工程努力。
最终的GLM-130B模型在广泛的流行英语基准上提供了显著优于GPT-3 175B,而性能优势在OPT-175B和BLOOM-176B中没有观察到。在相关的基准测试中,它的性能也始终显著超过了最大的中文模型ERNIE TITAN 3.0 260b。
问题定义
目前主流的预训练模型,自编码模型(BERT)在NLU上表现较好,自回归模型(GPT)在无条件生成上表现较好在和编码器-解码器模型(T5)在条件生成上表现较好,但都没有同时在NLP三大类任务NLU、无条件生成、条件生成上同时有较好的表现。因此,这也是本文大模型的基座模型GLM提出的意义,能够对不同类型的任务都进行预训练并达到较好的效果。
同时在大模型中,效果较好的大模型都是闭源的,这也极大的限制了大模型的发展。因此本文的GLM-130B也是完全开源的。
方法
方法描述
基座模型GLM
GLM(General Language Model)通用语言模型,是一个基于自回归空白填充目标的通用预训练框架,将NLU任务也定义为完形填空问题(包括任务描述),通过自回归生成来回答问题。
GLM模型整体框架仍然基于Transformer的Encoder-Decoder框架,本文在细节方面对其做了部分改进。
原始Transformer的架构如下:
在上述的三种预训练大模型结构上,他们的区别在于:
- GPT作为自回归模型的注意力是单向的,无法利用到下文的信息。
- BERT的注意力则是双向的,,可以同时感知到上下文信息,所以在NLU任务上表现较好,但不适合生成任务。
- T5的编码器中的注意力是双向,解码器中的注意力是单向的,因此可同时应用于自然语言理解任务和生成任务。但T5为了达到和RoBERTa和DeBERTa相似的性能,往往需要更多的参数量。
因此上述三种预训练大模型的训练目标也是显而易见的:
- GPT的训练目标是从左到右的文本生成。
- BERT的训练目标是对文本进行随机掩码,然后预测被掩码的词。
- T5则是接受一段文本,从左到右的生成另一段文本。
本文中,为了能够保证模型在三种NLP任务中都取得较好的效果,就需要在模型结构和训练目标上兼容上述的三种预训练模型。
GLM结构
自回归空格填充
首先,在GLM结构上就需要同时存在单向注意力和双向注意力,在原本的Transformer框架上,通过对attention mask修改实现同时存在单向和双向注意力。即在掩码矩阵中,当矩阵为全1矩阵时为双向注意力,为三角矩阵时即为单向注意力。
其次在训练目标上,GLM提出的是自回归空格填充任务,与掩码语言模型比较相似,首先采样输入文本中的部分片段并替换成一个
[
M
A
S
K
]
[MASK]
[MASK]标记,再采用自回归的方式来预测
[
M
A
S
K
]
[MASK]
[MASK]标记对应的文本片段。
如图一所示,假设输入文本为
[
x
1
,
x
2
,
x
3
,
x
4
,
x
5
,
x
6
]
[x_1,x_2,x_3,x_4,x_5,x_6]
[x1,x2,x3,x4,x5,x6],我们分别采样两个文本片段
x
3
x_3
x3和
x
5
,
x
6
x_5,x_6
x5,x6分别作为掩码片段分别在输入序列中用
[
M
A
S
K
]
[MASK]
[MASK]代替,此时的掩码文本序列为
[
x
1
,
x
2
,
[
M
]
,
x
4
,
[
M
]
]
[x_1,x_2,[M],x_4,[M]]
[x1,x2,[M],x4,[M]]记为
(
P
a
r
t
A
)
(Part A)
(PartA),而被采样掩码的文本随机拼接作为
P
a
r
t
B
Part B
PartB。
本模型的预训练的任务就是需要根据
P
A
R
T
A
PART A
PARTA中的
[
M
]
[M]
[M]来解码出对应的文本片段,但是被掩码的文本片段是不等长的,所以需要在输入中每个被掩码片段头部使用开始标记
[
S
]
[S]
[S],在输出中被解码部分尾部使用结束标记
[
E
]
[E]
[E]。
同时为了保证双向注意力(Part A部分能够接收整体信息)和单向注意力(Part B部分,依次生成)都存在,如图一所示使用对应的Self-attention mask来达到以下目的:
- Part A中的token是相互可见的(图1d的蓝色框部分)
- Part B中的token单向可见(图1d的黄色部分)
- Part B可见Part A的部分(图1d的红色框部分)
- 其余部分不可见(图1d的灰色部分)
2D位置编码
如图1所示,与传统Transformer使用一维位置编码不同,本模型对每一个token都使用两个绝对位置编码进行标注,其中Position 1用于表示Part A中
[
M
]
[M]
[M]的对应位置,Position 2用于表示每一个掩码跨度内的位置,本文使用这种2D位置编码的目的在于能够保证在Query重构掩码范围时,模型不知道掩码范围的长度。
但是在将GLM扩展到GLM-130B时,作者由于在训练前认为不能直接将二维模式应用于旋转位置编码,所以旋转放弃二维位置编码,旋转删除原始GLM中的第二个维,因为觉得在生成
[
M
]
[M]
[M]的单向掩码矩阵中隐含了对应的token位置顺序,从而改变策略为:
- 对于序列中的短跨度的 [ M ] [M] [M],只采用第一维的位置编码
- 对于序列末端长跨度 [ M ] [M] [M],我们将位置id改为一维的 0 , 1 , ⋅ ⋅ ⋅ , s − 1 0,1,···,s−1 0,1,⋅⋅⋅,s−1,生成的token将从最后一个上下文tokens−1开始延长一维位置编码。
前馈网络FFN(GeGLU)
本模型中采用GeGLU作为FFN的激活函数来提高模型性能,相比于ReLU,如图2,GeGLU可能整体更加平滑更容易传递梯度不会出现梯度消失的问题,并且在之前的BERT和GPT-2中都得到了应用,效果较好,具体公式为:
F
F
N
G
e
G
L
U
(
x
;
W
1
,
V
,
W
2
)
=
(
G
e
L
U
(
x
W
1
)
⊗
x
V
)
W
2
{FFN}_{GeGLU}(x;W_1,V,W_2)=(GeLU(xW_1)\otimes xV)W_2
FFNGeGLU(x;W1,V,W2)=(GeLU(xW1)⊗xV)W2
G
E
L
U
(
x
)
=
0.5
x
(
1
+
t
a
n
h
[
2
/
π
(
x
+
0.044715
x
3
)
]
)
GELU(x)=0.5x(1+tanh[\sqrt{2/\pi}(x+0.044715x^3)])
GELU(x)=0.5x(1+tanh[2/π(x+0.044715x3)])
层归一化(DeepNorm)
因为Post-LN存在收敛过慢且在大模型上不稳定的问题,所以本模型采用基于Post-LN的DeepNorm方法作为层归一化方法。
D
e
e
p
N
o
r
m
(
x
)
=
L
a
y
e
r
N
o
r
m
(
α
⋅
x
+
N
e
t
w
o
r
k
(
x
)
)
,
α
=
(
2
N
)
−
1
2
DeepNorm(x)=LayerNorm(\alpha \cdot x + Network(x)),\alpha = (2N)^{- \frac {1}{2}}
DeepNorm(x)=LayerNorm(α⋅x+Network(x)),α=(2N)−21
多任务预训练及模型微调
为了模型可以同时进行NLU和NLG任务的预训练,模型通过改变采样掩码token的数量和长度的方式来区分为不同的任务。
- Document-level:只采样掩码一个片段,其中采样的片段长度是文档长度的50%-100%,主要用于长文本生成。
- Sentence-level:在文档中随机采样掩码,每个文本片段必须为完整的句子,被掩码的词数量为整个文档长度的15%。
因为模型本身还是一个偏向于自回归的模型,所以为了适应预训练的目标,本文将NLU任务也转换成了生成任务(完形填空)。如情感分类任务转化为 {Sentence}.It is really [M],对应的标签为good和bad。
center>图3. NLU任务变化示意图。
对于文本生成任务,给定的上下文构成输入的A部分,并在末尾附加一个[gMask]。模型自回归生成B部分的文本。
实验
实验结果及分析
实验结果分析
语言建模
LAMBADA数据集旨在评估语言模型对上下文依赖性和推理能力的理解。数据集中的每个示例都是一段连续的文本,其中最后一个词被替换为一个占位符。模型的任务是根据上下文推测出被遮盖的最后一个单词。其中GLM-130B的精准度达到了80.2,创造了记录。
center>图4. GLM-130B与相似尺寸LLM在LAMBADA上的比较。
海量多任务语言理解
BIG-BENCH是由OpenAI于2021年提出的一个基准测试,旨在评估大规模语言模型的性能和能力。包含了一系列不同领域的任务,包括阅读理解、摘要、问答、翻译等。该基准测试包括单任务和多任务设置,使模型能够展示其在不同任务和领域中的泛化能力。
如图5所示,在zero-shot的设置下GLM-130B的
表现优于GPT-3 175B,甚至超过了比它大4倍的PaLM 540B。并且随着样本数量的增加,GLM-130B的性能持续提升,并保持其超越GPT-3的优势。
center>图5. bigbence精简评估图
汉语理解能力
CLUE是一个广泛应用的中文NLP基准测试,旨在评估中文语言理解任务的性能。它涵盖了多个任务,包括文本分类、情感分析、阅读理解、命名实体识别、关系抽取等。
FewCLUE是在CLUE基础上扩展而来的一个任务集合,专注于少样本学习(few-shot learning)场景下的中文语言理解。FewCLUE的目标是评估模型在少量标注数据的情况下的泛化能力和迁移学习能力。
本文主要在7个CLUE数据集和5个FewCLUE数据集上与目前最大的中文单语言模型——260B ERNIE Titan 3.0进行比较,如图所示在12个任务中,GLM-130B始终优于ERNIE Titan 3.0
center>图5. GLM-130B与中文模型对比图
毒性评估
本文在RealToxicPrompts数据集上评估了GLM-130B的有毒生成情况。该数据集包含一系列的提示(prompts),这些提示可以用作生成模型的输入。这些提示被设计为潜在的触发器,可能导致生成模型生成具有毒性、攻击性或不适当内容的回应。
如图6所示,随着给定提示的毒性增加,在这两个模型中,延续的毒性概率也相应增加。与GPT-3 Davinci相比,GLM-130B在所有情况下的毒性率都较低,说明GLM-130B不易产生有害言论。
center>图6. 毒性实验对比结果
相关知识链接
下载
源代码资源
ChatGLM
参考
总结
亮点
- 在出发点上选择将三大类任务NLU,无条件生成,条件生成统一成自回归的空白填充并且采用混合注意力掩码和二维位置编码可能是模型效果不错的原因。
- 是一个开源效果比较好的大模型。
BibTex
@inproceedings{du-etal-2022-glm,
title = "{GLM}: General Language Model Pretraining with Autoregressive Blank Infilling",
author = "Du, Zhengxiao and
Qian, Yujie and
Liu, Xiao and
Ding, Ming and
Qiu, Jiezhong and
Yang, Zhilin and
Tang, Jie",
booktitle = "Proceedings of the 60th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers)",
month = may,
year = "2022",
address = "Dublin, Ireland",
publisher = "Association for Computational Linguistics",
url = "https://aclanthology.org/2022.acl-long.26",
doi = "10.18653/v1/2022.acl-long.26",
pages = "320--335",
}
@article{zeng2022glm,
title={Glm-130b: An open bilingual pre-trained model},
author={Zeng, Aohan and Liu, Xiao and Du, Zhengxiao and Wang, Zihan and Lai, Hanyu and Ding, Ming and Yang, Zhuoyi and Xu, Yifan and Zheng, Wendi and Xia, Xiao and others},
journal={arXiv preprint arXiv:2210.02414},
year={2022}
}