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量化