Glm

key point

  • GLM

    existing pretraining framework

  • autoregressive
  • autoencoding
  • encoder-decoder

##

we propose a pretraining framework named GML (General Language Model),based on autoregressive blank infilling.

we propose two improvements,

  • span shuffling
  • 2D positional encoding

Pretraining objective

Autoregressive Blank Infilling

Multi-Task Pretraining

  • Document-level
  • Ssentence-level

Model Architecture

GLM uses a single Transformer with several modifications to the architecture

2D Positional Encoding

Finetuning GLM

Experiments

pretraining setup

data using

  • BooksCorpus
  • English Wikipedia

    multi-task pretraining

    two Large-sized model with a mixture of the blank infilling objective, denoted as GLM(doc) and GLM(sent)

    Compare with SOTA models

    superGLUE

    Multi-Task Pretraining

    we evaluate the multi-task model for NLU ,seq2seq,blank infilling, and zero-shot language modeling.

  • SuperGLUE
  • Sequence-to-Sequence
  • Text Infilling

Ablation Study

重新梳理补充GLM130B系列

这应该算是第三遍读该文章,emmm没办法太菜了。我后面尽量补充我理解到的细节

GLM

2022年3月见刊不过工作应该是2021年完成的

  • GLM是一个自回归模型,
  • 提升填空预测通过2D位置编码并且允许随机序列去预测空白,使其在NLU任务上超过BERT和T5。
  • GLM可以预训练不同种类的任务通过非定长数字和长度的空。

之前有工作想大一统NLP所有任务,目前貌似没有能继承所有框架优势的。

GLM随机blank输入

GLM自然可以处理完形填空问题的多标记答案 通过自回归空白填充。

条件文本生成和语言建模任务一起共享参数。

  • 自回归空白填充

给定一个输入 $x=[x_1,…,x_n]$ 采样多文本spans {$s_1,…,s_m$} 每一个span $s_i$对应的x一系列连续的tokens $[s_{i,1},…,s_{i,l_i}]$ 每一个span都会被单独的MASKtoken代替 从而形成损坏文本$x_{corrupt}$

模型会从损坏文本中通过自回归方式预测消失的token

这意味着在预测消失的token在span中时,模型可以获取损坏文本和之前预测的span。 为了尽可能抓取不同span间的内在关系。我们随机排列span的顺序。

形式上,设 $Z_m$ 为所有可能的集合 长度为 m 的索引序列的排列

$[1,2,…,m]$

$s_{z<i}$代表$[s_{z1},…,s_{z_{i-1}}]$

那我们定义预训练目标为

产生spans $s_i$ 的概率为

我们把输入x分成两部分

A:是损坏文本$x_{corrupt}$ B:是masked的span A不能加入B.只能同类加入 B可以加入A,但自身不能加入任何子序列

为了可以做自回归生成,每个span用特殊的token[START]和[END]填充

通过这种方式,我们的模型会自动学习双向编码器(A),和单项解码器(B)在一个统一的模型中。

我们随机采样span长度通过位置分布$\lambda=3$,我们重复采样新的span直到剩下的15%token。(经验)

为了能适应NLU任务和生成任务: 我们考虑如下两个目标:

  • 文档级别: 采样span长度在50%-100%,目的在长文本生成。

  • 句子级别: 我们限制masked的span必须是整句。大概会覆盖源文本的15%左右。目的在seq2seq任务。

这俩唯一的区别就是spans的数量和span的长度

模型结构

GLM 用一个单独的transformer和几个修改构成

  • 我们重排了正则层和残差连接,避免数字错误
  • 我们用单一的线性层作为output的token预测
  • 我们用GeLUs代替了ReLU激活层

2D位置编码

每个token有两个位置id。

  • 第一个位置id表示损坏文本$x_{corrupt}$
  • 第二个位置id表示跨度内(intra-span)位置

对于A来说,第二个位置id=0 对于B来说,第二个位置id=1——span长度 两个文职id在两个向量通过可学习嵌入表,都加入输入token的embedding中。

微调

我们针对NLU分类任务重塑为生成的完形填空(PET)

“{SENTENCE}. It’s really MASK

推理

本模型推理依赖Megatron-M和DeepSpeed

GLM130B

从2022-5-6到2022-7-3

本次训练用了96张DGX-A100(8X40G)集群

130B刚好可以满足单个A100服务器推理

同时采用了int4精度

关于训练稳定性问题

  • 选择合适的LN(layer Normalization) Post-LN 和 DeepNorm 展现出稳定性的潜力

Positional Encoding 和 FFNs.

  • 对于位置编码采用Rotary Positional Encoding(RoPE)

  • 对于Transformer中的FFN选择GLU同时+GeLU激活层作为选择

3D并行策略: 流水线并行

混合精度

Embedding层梯度压缩

INT4 Quantization for RTX 3090s/2080s.