版本說明:本文依據 MIT 6.5940 Fall 2024 第 12 講(2024-10-17),主要材料是 Lec12-Transformers-and-LLM.pdf(90 頁)與 課堂錄影。文中頁碼指 PDF 頁。事實於 2026-09-30 打開官方材料核對。存取等級 A3:投影片與錄影公開;這講沒有對應的 lab。
Fall 2026 對照:F26 課表把同名講次排在 10 月 22 日,截至 2026-09-30 投影片與錄影仍是空連結。
系列位置:上一篇 L11 TinyEngine 與平行運算|下一篇 L13 LLM 部署|系列總覽
到 L11 為止,6.5940 的例子幾乎都是 CNN:剪 VGG、量化 ResNet、在 MCU 上塞 MobileNetV2。F24 課表在 L12 前插了一個「Chapter II: Domain-Specific Optimization」分隔,後面的 LLM 部署、後訓練、長上下文、ViT、diffusion 全都建立在 Transformer 上。L12 的任務是把這個架構交代清楚,好讓後面幾講有共同語言。
這篇只取效率視角:哪個設計吃記憶體、哪個吃算力、後來的變體各省了什麼。Transformer 的完整原理,本站有幾個更適合的起點:CS224N 第 5 講:從 recurrence 到 Transformer、CME295 第 1 講與第 2 講、CS336 的架構與超參數。
第 6 頁的 Lecture Plan 有四段:Transformer 基礎、設計變體、LLM、進階主題(多模態 LLM)。
Transformer 基礎:成本藏在哪
為什麼離開 RNN 與 CNN
第 9–13 頁先回顧 Transformer 之前的兩條路。RNN 難以建模長距離關係,兩個 token 要互動得走 O(seq_len) 步;而且第 n 個狀態依賴前 n−1 個,訓練很難平行。CNN 的 token 之間沒有依賴、擴展性好,但上下文有限,建模能力較弱。投影片還點出一個差別:影像有局部性,語言不一定有。
各元件的效率意涵
第 14 頁列出 Transformer 的組成:tokenizer、embedding、Multi-Head Attention(MHA)、Feed-Forward Network(FFN)、LayerNorm、residual、位置編碼、最後的 linear head。對效率來說,幾個點值得記下:
- Tokenizer(第 16 頁):一個字可能被切成多個 token,投影片的例子是 110 個字變成 162 個 token。後面算 KV cache 與 attention 成本時,長度 N 指的是 token 數。
- Self-attention(第 21 頁):Q 乘 K 得到 N×N 的注意力權重,所以 attention 的計算量是 O(N²)。投影片用 YouTube 搜尋比喻 Q/K/V:query 是搜尋框的文字,key 是影片標題與描述,value 是影片本身。
- FFN(第 27 頁):attention 負責 token 之間的關係,但沒有逐元素的非線性,所以接一個兩層 MLP,中間層放大到 4d。投影片稱它為 inverted bottleneck,和 L11 提到 MobileNetV2 inverted residual block 展開 6 倍通道是同一種形狀。
- LayerNorm 與 pre-norm(第 29–30 頁):Transformer 用 LayerNorm 而不是 CNN 的 BatchNorm,對每個 token 的 embedding 各自正規化。投影片註明 pre-norm 因為訓練較穩定,現在比 post-norm 更常見。
- 位置編碼(第 31–32 頁):attention 與 FFN 本身不分辨順序,等於把句子當成集合,所以要加位置資訊。原版用的是絕對位置編碼。
第 34 頁的結果:原版 Transformer 在機器翻譯上超越先前模型,而且訓練成本只是一小部分。
設計變體:每一個都在省某樣東西
第 36 頁列出原論文之後的四組主要變體:
- Encoder-decoder(T5)、encoder-only(BERT)、decoder-only(GPT)
- 絕對位置編碼 → 相對位置編碼
- KV cache 最佳化:MHA → MQA → GQA
- FFN → GLU
三種架構
第 38–41 頁快速走過。T5 把各種 NLP 任務統一成文字到文字,prompt 進 encoder、decoder 生成答案。BERT 是 encoder-only,預訓練用 masked language model(隨機遮 15% token)與 next sentence prediction。GPT 是 decoder-only,預訓練目標是預測下一個字;較小的模型(GPT-2)會再微調,更大的模型可以 zero-shot 或 few-shot。
相對位置編碼:train short, test long
第 43 頁比較兩種做法。絕對位置編碼把位置資訊融進輸入 embedding,所以會影響 Q、K、V,並傳遍整個網路。相對位置編碼只影響注意力分數(加 bias 或修改 Q、K),不動 V。好處是可能泛化到訓練時沒看過的長度,也就是「train short, test long」,投影片加註「不一定都成立」。
- ALiBi(第 44 頁):在注意力矩陣上直接加一個依相對距離而定的偏移,而不是加到 token embedding 上。
- RoPE(第 45–46 頁):LLaMA 用的做法。把 d 維 embedding 拆成 d/2 對,每對當成 2D 座標,依位置 m 旋轉。兩個向量內積的相位差就是 m−n,只跟相對位置有關。
RoPE 的效率價值在第 47 頁:LLM 訓練時有長度上限(LLaMA 2k、Llama 2 4k、GPT-4 8k),超過就失效。對 RoPE 做位置內插(用較小的 θ),可以把 LLaMA 的上下文從 2k 延伸到 32k。這是 L15 長上下文的起點。
KV cache:長上下文下最先爆的東西
第 49–51 頁。GPT 類模型逐 token 生成時,每一步只需要當前 token 的 query,但要跟所有先前 token 的 key、value 做 attention。把這些 K、V 存起來重用,就是 KV cache。
第 52 頁給了算式:
KV cache 大小 = batch size × 層數 × kv-head 數 × 每個 head 的維度 × 長度 N × 2(K 和 V)× 2 bytes(FP16)
套進實際模型:
| 模型 | 每個 token、每筆 batch 的 KV cache |
|---|---|
| Llama-2-7B(32 層 × 32 heads × 128) | 512KB |
| Llama-2-13B(40 層 × 40 heads × 128) | 800KB |
| Llama-2-70B,假設用 MHA(80 層 × 64 heads × 128) | 2.5MB |
第 53 頁把 70B 的數字放大:batch 1、長度 512 是 1.25GB;長度 4096 是 10GB;batch 16、長度 4096 就是 160GB,要兩張 A100。第 54 頁的圖顯示,長度 2048 時,batch 一變大,KV cache 很快就超過模型權重本身。
這張表是整講對後面最重要的一頁。L13 的 KV cache 量化、H2O、PagedAttention,L15 的 StreamingLLM、DuoAttention,要解的都是這個數字。
MQA 與 GQA:少存幾個 head
第 55–57 頁的解法是減少 kv-head 數量:
- MHA:N 個 query head,N 個 key/value head。
- MQA:N 個 query head,只有 1 個 key/value head。
- GQA:N 個 query head,G 個 key/value head,投影片寫通常 G = N/8。
以 Llama-2-70B 的尺寸(64 個 head)為例,GQA 用 8 個 kv-head,KV cache 小 8 倍;MQA 用 1 個,小 64 倍。第 57 頁引 Llama 2 論文的實驗:模型夠大時,GQA 的精度可以追上 MHA。第 70 頁也提到 Llama 2 的 70B 版本正是 64 個 head、8 個 kv-head。
GLU:換掉 FFN
第 59–60 頁:把原版 FFN 換成 GLU 變體(例如 SwiGLU,用 Swish 激活加上逐元素相乘的閘門)能改善 Transformer 的 perplexity。
LLM:大模型的設計選擇
第 62–63 頁說明 LLM 就是把 Transformer 放大、用大量語料(自然語言、程式碼等)訓練。投影片把模型大小與 GPU 記憶體畫在同一張圖上:模型成長的速度遠超過單張 GPU 記憶體,這是整門課存在的理由之一。放大還帶來「emergent」能力,某些任務只在模型夠大時才出現。
第 64–66 頁的 GPT-3(175B)展示 in-context learning:不需要微調,靠任務描述(zero-shot)或示範例子(few-shot)就能做新任務,而且模型越大越能利用示範。
第 68–72 頁把幾個開源模型的設計選擇列成規格。對效率讀者來說,重點是這些選擇大多已經收斂:
| 模型 | 投影片列出的設計選擇 |
|---|---|
| OPT | decoder-only、pre-norm(350M 例外用 post-norm)、FFN 用 ReLU;125M 到 175B 共九種大小 |
| LLaMA | decoder-only、pre-norm、SwiGLU、RoPE;7B 到 65B;上下文 2048 |
| Llama 2 | 上下文 2k → 4k;訓練 token 從 1T/1.4T 增加到 2T;較大模型用 GQA;另有 Llama-2-chat |
| Llama 3 | 訓練 token 15.6T;算力是 Llama 2 的 50 倍;旗艦 405B;base 8K、instruct 版 128K;後訓練用 SFT、rejection sampling、DPO |
| Mistral-7B | GQA(8 個 kv-head)、上下文 8k、sliding window attention(v2 起不再使用);7B 勝過 Llama-2-13B |
Chinchilla 與推論成本
第 73 頁引 Chinchilla:訓練算力固定時,模型大小與資料量要一起放大,才能得到最佳的算力與精度取捨。接著投影片加了一句效率課特有的提醒:
Note: the trade-off is different if we consider the inference computation trade-off
意思是如果你在乎推論成本,就該把較小的模型訓練更久,例如 LLaMA。投影片指出 Llama-2 7B 用 2T token 訓練,遠超 Chinchilla 建議的量。對部署端來說,這是個好消息:同樣能力的模型可以更小。
進階主題:多模態與 MoE
兩種讓 LLM 看得見的方法
第 76 頁把視覺語言模型分成兩類:
- Cross-attention 注入視覺資訊(Flamingo 風格,第 77–81 頁):凍結 LLM,在中間層插入 cross-attention 層。Perceiver Resampler 用少量 learned query,把大小不一的影像特徵壓成固定數量的視覺 token。Gated cross-attention 用 tanh 閘門控制視覺資訊的份量,閘門初始化為 0,所以一開始不會破壞原本的 LLM。
- 視覺 token 直接當輸入(PaLM-E 風格,第 82–83 頁):影像、機器人狀態等模態都轉成 token 餵給 LLM;RT-2 更進一步直接輸出控制訊號。
Perceiver Resampler 的設計本身就是效率選擇:視覺 token 越少,LLM 要處理的序列越短。這條線在 L14 後訓練的多模態 LLM 會繼續。
MoE:參數變多,每個 token 的計算不變
第 86–89 頁(引 Switch Transformers):MoE 讓每個 token 只用到一部分參數。Router 把 token 分配給不同 expert;expert 越多,總參數越大,loss 越低,但每個 token 的推論成本不變。
第 88 頁用一個小例子解釋 capacity factor C:6 個 token、3 個 expert。C = 1 時每個 expert 最多處理 2 個 token,有一個 token 會被跳過;C = 1.5 時上限變成 3 個,expert 2、3 就有餘裕。這個參數決定了負載不均時要丟 token 還是多留空間。
讀完這講可以做什麼
- 今晚能做的事:挑一個你會用的開源模型,從它的 config 讀出層數、kv-head 數、head 維度,用第 52 頁的算式算出 batch 1、長度 8192 的 KV cache,和模型權重大小比一比。這個比例決定了你的瓶頸在權重還是 KV cache。
- 接著讀 L13 LLM 部署,看量化、稀疏、serving 三條路怎麼處理這些數字。
延伸閱讀
- Transformer 原理:Stanford CS224N 導讀、Stanford CME295 導讀
- 推論成本的另一種講法:CS336 Lecture 10:LLM 推論
- KV cache 與 serving 系統:CMU 11-868 大規模服務:prefill/decode 拆分與 KV cache
- MoE 與模型平行:CMU 11-868 L16–L17
參考資料
- MIT 6.5940 Fall 2024 課程頁 — L12 日期、Chapter II 分隔、投影片與錄影連結
- MIT 6.5940 Fall 2026 課程頁 — L12 排在 10 月 22 日,材料未放出
- Lec12-Transformers-and-LLM.pdf(Fall 2024) — 本文所有頁碼、KV cache 數字與模型規格的出處
- EfficientML.ai Lecture 12 - Transformer and LLM(YouTube)
- Vaswani et al., Attention Is All You Need(2017)
- Raffel et al., T5(2019)
- Press et al., ALiBi: Train Short, Test Long(2021)
- Su et al., RoFormer: Rotary Position Embedding(2021)
- Chen et al., Extending Context Window of LLMs via Positional Interpolation(2023)
- Shazeer, Fast Transformer Decoding: One Write-Head is All You Need(2019) — MQA
- Ainslie et al., GQA(2023)
- Shazeer, GLU Variants Improve Transformer(2020)
- Zhang et al., OPT(2022)
- Touvron et al., LLaMA(2023)
- Hoffmann et al., Training Compute-Optimal Large Language Models(2022) — Chinchilla
- Alayrac et al., Flamingo(2022)
- Driess et al., PaLM-E(2023)
- Fedus et al., Switch Transformers(2021)
Loading...