Encoder-only model(Autoencoding model)
- 使用掩码语言模型(Masked Language Modeling, MLM)进行预训练
- 输入原始语句和掩码,训练目标是预测掩码标记,一遍重建原始句子->也称为降噪目标(denoising)
- 自动编码模型对输入序列进行了双向表示,这意味着模型对标记的完整上下文有所了解,而不仅仅是对之前的单词有所了解。
- 适合双向上下文的任务
- sentence classification tasks句子分类任务,如sentiment analysis情感分类
- token-level tasks:如Named entity recognition命名实体识别
- word classification 单词分类
- 示例:BERT、ROBERTA
Decoder-only model(Autoregressive model)
- 使用causal language modeling(CLM)进行预训练
- 上下文是单向的
- Text generation 文本生成
- Other emergent behavior
- Depends on model size
- 示例:GPT、BLOOM
Sequence-to-Sequence models
使用原始transformer之外的编码器和解码器部分
使用span corruption对编码器进行预训练
(span corruption,跨度破坏,模型需要根据上下文来预测文本中被遮蔽掉的连续跨度(span)的词语,而不是仅仅预测单个词语)
- 适用
- Translation
- Text summarization
- Question answering
- example:T5、BART
训练LLM的计算挑战
- 常见问题
- OutOfMemoryError
scale of the problem
-
参数量
1 parameter = 4 bytes (32-bit float)
1B parameters = 4 ∗ 10 9 4*10^9 4∗109bytes = 4GB -
训练–每个模型参数增加20 bytes的内存
要训练模型的话,还需要考虑训练期间使用GPU内存的其他组件- Adam优化器的状态参数2个
- Gradients
- Activations
- temp memory
- 考虑训练期间的所有开销,实际上需要大约6倍与模型权重所占用的GPU RAM
-
1B参数需要的GPU RAM
在32-bit精度下训练1B参数的模型,大约需要24GB的GPU RAM,这对于消费类硬件来说太大了,若想用单处理器进行训练,这对数据中心使用的硬件也很有挑战 -
如何减少训练的内存需求
- Quantization量化
通过将权重精度从32位浮点数降低到16位浮点数或8位整数减少存储模型权重所需的内存- 相关库:
- FP32:32-bit full position
- FP16、Bfloat16:16-bit half precision、8-bit integers
BF16提高了训练稳定性,并且得到了NVIDIA的A100等新GPU的支持
BF16通常被描述为截断的32位浮点数(因为他仅捕获了16位的完整32位浮点数)
- 相关库:
- Quantization量化