🧠 NLP 現代教程:Transformer的訓練與應用全景解讀
一、Transformer的使用方式(Training and Use)
如何使用Transformer模型?
Transformer 模型最初的使用方式有兩種主要方向:
- 類似 RNN 編碼-解碼器的架構(用于序列到序列任務)
- 例如機器翻譯、文本摘要任務。
- Encoder 用于將輸入句子編碼為向量,Decoder 再將向量解碼為目標語言或句子。
- 作為生成上下文詞向量的預處理模塊
- Transformer也被用作詞向量上下文建模器(contextualized word embeddings)。
- 這些向量可輸入至下游模型,例如分類器、序列標注器等。
初期效果如何?
- 準確率提升較小:初期在一些基準任務中僅帶來輕微的精度提升。
- 效率提升顯著:相比RNN,Transformer可并行計算,訓練速度大幅提升。
二、Transformer的統治地位崛起(Over Time: Transformers Became Dominant)
為什么Transformer最終成為主流?
- Transformer 架構可以完全并行,解決了RNN“逐步處理”的效率問題。
- 支持大規模模型訓練,能夠有效利用現代GPU/TPU資源。
- 與“預訓練+微調”范式結合,成為自然語言處理的統一框架。
三、BERT:Transformer成功的代表
BERT由三部分構成:
- WordPiece分詞(WordPiece Tokenisation)
- 將生僻詞拆解為已知子詞。例如:“unhappiness” → “un”, “##happiness”
- 避免OOV問題,提高表示能力。
- Transformer結構(Transformer Architecture)
- 多頭注意力機制 + 殘差連接 + 層歸一化
- 采用“Encoder-only”結構
- 大量訓練數據(Data)
- 使用維基百科+BooksCorpus等海量文本進行預訓練。
三者結合 → 極高性能:
BERT = WordPiece?Tokenisation + Transformer?Encoder + Pretraining?on?Large?Corpus \text{BERT} = \text{WordPiece Tokenisation} + \text{Transformer Encoder} + \text{Pretraining on Large Corpus} BERT=WordPiece?Tokenisation+Transformer?Encoder+Pretraining?on?Large?Corpus
BERT代表著“大模型+大數據”的范式首次登頂NLP任務榜單。
四、大模型時代的到來:訓練成本問題
- 訓練BERT等模型需要巨大的算力與存儲資源。
- 這使得模型訓練逐漸超出一般高校實驗室的能力范圍。
- 學術界被迫轉向使用開源預訓練模型進行微調(fine-tuning)。
五、加速訓練的意義
為什么加速訓練如此重要?
- 更快的訓練速度 → 更大規模模型可行
- 支持“迭代實驗” → 快速調參、驗證新想法
六、Transformer的發展軌跡
模型 | 年份 | 主要貢獻 |
---|---|---|
Transformer(原始論文) | 2017 | 提出“Self-Attention” |
GPT-1 | 2018 | 首次使用Decoder-only結構進行語言建模 |
BERT | 2018 | Encoder-only + 雙向掩碼訓練 |
GPT-2 | 2019 | 擴展模型規模(15億參數) |
GPT-3 | 2020 | 1750億參數,展示“大模型能力的涌現” |
七、Scaling Law:模型規模、數據和性能的關系
什么是 Scaling Laws(擴展定律)?
- 經驗法則:在給定訓練預算下,模型的最佳參數數量、數據量、訓練步驟數之間存在關系。
- 使用這些法則可以估算最優模型大小。
公式表達如下:
若性能度量為損失 L,參數量為 N,數據量為 D,計算量為C,有如下規律:
L ( N , D ) ≈ L ∞ + A N α + B D β L(N, D) \approx L_\infty + \frac{A}{N^\alpha} + \frac{B}{D^\beta} L(N,D)≈L∞?+NαA?+DβB?
其中 α,β>0,表示“規模擴展的收益遞減”。
八、注意力的復雜度問題(Attention is Quadratic)
標準注意力機制的復雜度:
給定輸入序列長度為 n,標準多頭注意力機制的復雜度為:
O ( n 2 ? d ) O(n^2 \cdot d) O(n2?d)
其中 d 為表示維度。這種 二次增長 導致長文本處理效率極低。
九、解決注意力復雜度問題的模型變種
為了解決效率問題,研究者提出了多種“稀疏/線性注意力”方法:
模型 | 技術 | 特點 |
---|---|---|
Performer | 近似核函數 | 將注意力簡化為線性形式 |
Longformer | 局部+全局注意力 | 局部窗口提升效率 |
Linformer | 投影降維 | 減少注意力矩陣維度 |
BigBird | 稀疏注意力圖 | 保留圖的可達性結構 |
🔟 更大的瓶頸:內存帶寬(Memory Bandwidth)
注意力不是最大瓶頸,真正的瓶頸是:內存帶寬!
為什么內存帶寬是瓶頸?
- 模型越大,每次訓練所需數據吞吐越大。
- 內存訪問比計算慢很多,導致等待內存成為主要時間消耗。
🔄 FlashAttention:顯著提升訓練速度的突破
- FlashAttention 是一種高效顯存優化注意力計算方式。
- 通過將計算重寫為CUDA核函數,利用寄存器和共享內存提升計算速度。
效果:
- 訓練速度提升2-4倍
- 減少顯存使用(支持更長序列)
🔁 Feedforward層主導計算(隨著模型增大)
在大模型中,前饋網絡(FFN)層的計算量遠超注意力層,因為:
- 每層 FFN 通常為輸入維度的 4 倍 → 計算密集
- 例如 GPT 模型中,前饋層占比超過 2/3。
📚 總結:Transformer大模型發展路徑
- 初期用于生成上下文詞向量或端到端訓練(如翻譯)
- BERT 等模型引入大規模預訓練范式
- 模型尺寸、數據量不斷擴展(GPT-3等)
- 提出 Scaling Law 進行建模
- 面臨注意力復雜度挑戰 → 各類變體出現
- 真正瓶頸為內存帶寬 → FlashAttention 提升效率
- 模型中 FFN 成為主要計算耗點