Transformer 技術縱深:架構解析與前沿突破
柳浩、柳渤
- 出版商: 清華大學
- 出版日期: 2026-04-01
- 售價: $894
- 語言: 簡體中文
- ISBN: 7302711119
- ISBN-13: 9787302711117
-
相關分類:
DeepLearning
下單後立即進貨 (約4週~6週)
商品描述
作者簡介
目錄大綱
第1篇 基礎篇
第1章 註意力機制 2
1.1 背景知識2
1.1.1 Seq2Seq 2
1.1.2 編碼器-解碼器架構 2
1.2 技術挑戰3
1.2.1 對齊問題 4
1.2.2 長距離依賴問題 4
1.2.3 CNN方案 4
1.2.4 RNN方案 5
1.2.5 當前方案的局限性 6
1.3 註意力機制的原理、通用結構、計算流程和效果 6
1.3.1 註意力機制的原理 6
1.3.2 註意力模型的通用結構 8
1.3.3 註意力機制的計算流程 10
1.3.4 註意力機制的效果 12
1.4 註意力的發展歷史 14
第2章 Transformer架構18
2.1 Transformer的總體設計19
2.1.1 設計思路 19
2.1.2 模型結構 19
2.1.3 註意力結構 20
2.1.4 推理階段的執行流程 21
2.1.5 小結 21
2.2 如何構建Transformer 21
2.2.1 構建邏輯 22
2.2.2 主體功能類 23
2.3 Transformer的輸入 25
2.3.1 輸入分類 25
2.3.2 輸入模塊 26
2.4 Transformer塊的結構 27
2.4.1 MHA 28
2.4.2 FFN 29
2.4.3 輔助模塊 29
2.5 Transformer的輸出 29
2.5.1 解碼器的輸出結果 29
2.5.2 輸出概率 30
2.6 Transformer的可解釋性 31
2.6.1 機理可解釋性 31
2.6.2 機器學習視角 32
2.6.3 數學視角 33
2.6.4 物理學視角 35
2.7 總結 35
第3章 編碼器與解碼器 36
3.1 編碼器 37
3.1.1 編碼器的結構 37
3.1.2 編碼器的輸入與輸出 38
3.1.3 編碼器的執行流程 38
3.1.4 編碼器的實現 39
3.2 解碼器 41
3.2.1 解碼器的結構 41
3.2.2 解碼器的輸入與輸出 41
3.2.3 解碼器的執行流程 41
3.2.4 解碼器的實現 43
3.3 註意力分類 44
3.3.1 全局自註意力 45
3.3.2 掩碼自註意力 45
3.3.3 交叉註意力 46
3.3.4 註意力的邏輯流程實現 47
3.4 Transformer架構分類 48
3.4.1 僅解碼器架構 49
3.4.2 僅解碼器架構的優勢 49
第4章 訓練與推理 51
4.1 訓練 51
4.1.1 自回歸模型的特點 51
4.1.2 模型的輸入 52
4.1.3 Dropout 52
4.1.4 損失函數 54
4.1.5 學習率 57
4.1.6 權重初始化 58
4.1.7 Teacher Forcing 58
4.1.8 優化器 62
4.1.9 並行機制 66
4.2 推理 68
第2 篇 核心篇
第5 章 token 71
5.1 分詞 72
5.2 詞表 73
5.3 分詞器 74
5.3.1 分詞的粒度 75
5.3.2 分詞器的實現 76
5.4 BPE 77
5.4.1 BPE 的算法 78
5.4.2 MINBPE 的實現 78
5.4.3 BPE 的優勢和劣勢 81
5.5 其他算法 81
5.6 優化與演進 83
5.6.1 BLT 模型 83
5.6.2 LCM 83
第6 章 嵌入層原理與作用 85
6.1 嵌入向量的演進思路 86
6.1.1 向量 86
6.1.2 嵌入向量 87
6.2 嵌入層 90
6.2.1 詞嵌入的轉換過程 90
6.2.2 嵌入層的實現 92
6.2.3 嵌入的訓練 94
6.3 文本嵌入 96
6.3.1 文本嵌入模型的歷史 96
6.3.2 Word2Vec 96
6.3.3 ELMo 98
6.3.4 BERT 98
6.3.5 BGE 100
6.3.6 LLM-As-Embedding 100
6.3.7 LLM2Vec 101
6.3.8 基於提示工程的方案 102
6.3.9 基於MoE 的方案 102
第7 章 位置編碼的設計思路 103
7.1 位置編碼面臨的問題 103
7.1.1 詞序的重要性 103
7.1.2 Transformer 的架構缺陷 103
7.1.3 位置編碼的設計思路 104
7.1.4 位置編碼的性質 104
7.2 編碼方案的演化 106
7.2.1 整型數字位置編碼 106
7.2.2 乘法表示位置編碼 106
7.2.3 歸一化位置編碼 106
7.2.4 二進制位置編碼 107
7.2.5 需求拓展 108
7.2.6 正弦位置編碼 109
7.3 正弦位置編碼的設計思路 112
7.3.1 使用多維度的原因 112
7.3.2 使用多頻率的原因 112
7.3.3 使用正余弦的原因 113
7.3.4 表達絕對位置 113
7.3.5 表達相對位置 114
7.3.6 使用相加操作的原因 114
7.4 正弦位置編碼特性與思考 115
7.4.1 無向性 115
7.4.2 遠程衰減性 115
7.4.3 外推性 116
7.5 NoPE 118
7.5.1 NoPE 的優勢 118
7.5.2 NoPE 的劣勢 118
7.6 正弦位置編碼的實現 119
第8 章 位置編碼分類 121
8.1 絕對位置編碼與相對位置編碼的區別 121
8.1.1 從直觀視角思考 121
8.1.2 從模型視角思考 122
8.1.3 絕對位置編碼與相對位置編碼的優缺點 123
8.2 絕對位置編碼 123
8.3 相對位置編碼 124
8.3.1 相對位置的意義 124
8.3.2 相對位置編碼的設計思路 125
8.3.3 正弦位置編碼的基礎公式 126
8.3.4 經典式相對位置編碼 126
8.3.5 XLNET 中的相對位置編碼 127
8.3.6 TENER 中的相對位置編碼 128
8.3.7 T5 中的相對位置編碼 129
8.3.8 DeBERTa 中的相對位置編碼 130
8.3.9 TUPE 中的相對位置編碼 130
8.3.10 ALiBi 中的相對位置編碼 131
8.3.11 從偏置角度進行劃分 132
第9 章 自註意力 134
9.1 自註意力的原理 134
9.1.1 自註意力的設計思路 134
9.1.2 自註意力的輸入 135
9.1.3 查詢矩陣/ 鍵矩陣/ 值矩陣 135
9.2 自註意力的關鍵模塊 138
9.2.1 權重矩陣 138
9.2.2 softmax 140
9.2.3 縮放點積註意力 142
9.2.4 點積註意力函數 142
9.2.5 縮放機制 143
9.2.6 註意力分數操作 144
9.2.7 點積替代方案 144
9.3 自註意力的實現 145
9.3.1 哈佛源碼 145
9.3.2 Llama 3 147
第10 章 掩碼註意力 150
10.1 填充掩碼 150
10.1.1 面對的需求 150
10.1.2 填充掩碼的實現 152
10.2 序列掩碼 153
10.2.1 面對的需求 153
10.2.2 序列掩碼的實現 154
10.2.3 序列掩碼的延伸價值與潛在局限 157
10.3 核心變量 158
10.3.1 掩碼的應用邏輯 159
10.3.2 核心變量的說明 159
10.4 PyTorch 的掩碼 160
第11 章 MHA 162
11.1 背景知識 162
11.2 MHA 的原理 164
11.2.1 MHA 的網絡架構 164
11.2.2 MHA 的設計思路 166
11.2.3 MHA 的計算流程 167
11.2.4 MHA 的特性與思考 168
11.2.5 MHA 的優勢 170
11.3 MHA 的實現 170
11.3.1 MultiHeadedAttention 類 170
11.3.2 MHA 的運算邏輯 170
11.3.3 應用MHA 174
11.4 MHA 的改進 175
第12 章 FFN 177
12.1 FFN 的網絡架構 177
12.1.1 FFN 的數學表示 178
12.1.2 FFN 的中間層比率 178
12.1.3 逐位置操作 179
12.1.4 激活函數的作用 180
12.2 FFN 的實現 182
12.2.1 哈佛源碼的FFN 實現 182
12.2.2 Llama 3 的實現 183
12.2.3 gpt-oss 的實現 183
12.3 FFN 的功用 185
12.4 知識運用與調控 187
12.4.1 知識提取 187
12.4.2 知識記憶 188
12.4.3 知識定位 190
12.4.4 修改知識 191
第13 章 殘差連接與歸一化 193
13.1 殘差連接 193
13.1.1 面臨的問題 193
13.1.2 相關研究 193
13.1.3 網絡架構 195
13.1.4 ResNet 的功用 196
13.2 歸一化 197
13.2.1 面臨的問題 197
13.2.2 歸一化的概念 197
13.2.3 歸一化的類型 197
13.3 BatchNorm 198
13.3.1 BatchNorm 的公式 198
13.3.2 BatchNorm 的功用 199
13.3.3 PyTorch 中BatchNorm示例 200
13.3.4 BatchNorm 的問題 200
13.4 LayerNorm 201
13.4.1 LayerNorm 的公式 202
13.4.2 LayerNorm 的功用 202
13.4.3 Post-Norm 與Pre-Norm 203
13.5 擴展比對 206
13.5.1 InstanceNorm 206
13.5.2 GroupNorm 206
13.5.3 四種歸一化的比對 207
13.6 實現 209
13.6.1 殘差的實現 209
13.6.2 LayerNorm 的實現 210
13.7 優化與演進 211
13.7.1 RMSNorm 211
13.7.2 DeepNorm 213
13.7.3 RealFormer 214
13.7.4 nGPT 214
13.7.5 DeepSeek mHC 214
第14 章 生成與采樣 216
14.1 Generator 217
14.1.1 線性層的功能 217
14.1.2 softmax 層的功能 217
14.1.3 Generator 類的實現 217
14.1.4 Generator 類的應用 218
14.2 采樣 219
14.2.1 常見采樣方法 220
14.2.2 貪心搜索采樣方法 220
14.2.3 束搜索采樣方法 221
14.2.4 top-k 采樣方法 224
14.2.5 top-p 采樣方法 225
14.3 采樣參數 226
14.3.1 溫度參數 226
14.3.2 重復懲罰參數 228
14.4 logits 的分析 230
14.4.1 中間隱狀態的變化規律 230
14.4.2 利用pre-softmax 推理logits 230
14.4.3 在隱空間進行思考 231
14.4.4 基於熵的采樣 231
14.5 權重共享 232
14.5.1 Vanilla Transformer 的權重共享 232
14.5.2 共享詞表權重 233
14.5.3 共享FC 和嵌入 233
第3 篇 擴展篇
第15 章 RoPE 236
15.1 總體概述 237
15.1.1 正弦位置編碼的改進點 237
15.1.2 RoPE 的改進方案 237
15.2 RoPE 的原理推導 237
15.2.1 f () 函數的重要性 238
15.2.2 f () 函數的目標 238
15.2.3 f () 函數的逐步推導 239
15.2.4 正式定義 242
15.2.5 RoPE 與正弦位置編碼的比對 246
15.3 RoPE 的特性與思考 246
15.4 RoPE 的實現 250
15.4.1 Llama 3 250
15.4.2 rotate_half 253
第16 章 FlashAttention 256
16.1 內存和計算 257
16.2 優化註意力機制 258
16.2.1 標準註意力機制 258
16.2.2 解決方案 260
16.3 softmax 的改進 266
16.3.1 原生softmax 266
16.3.2 safe softmax 266
16.3.3 online softmax 267
16.3.4 從自註意力角度思考softmax 269
16.3.5 1-pass FlashAttention優化 270
16.3.6 FlashAttention (分塊)優化 271
16.4 FlashAttention 算法實現 271
16.4.1 總體思路 271
16.4.2 算法有效性證明 272
16.4.3 分塊策略 274
16.4.4 前向傳播算法 275
16.5 計算量與顯存占用 278
16.5.1 I/O 復雜度 278
16.5.2 計算復雜度 279
第17 章 FlashAttention-2 280
17.1 FlashAttention-2 的基本介紹 280
17.1.1 FlashAttention-2 方案總體思路 280
17.1.2 FlashAttention-2 的算法細節 281
17.1.3 小結 288
17.2 算法實現 289
17.2.1 算法實現的總體思路 290
17.2.2 線程模型 290
17.2.3 _attention 類 290
17.2.4 _attn_fwd() 函數 292
17.2.5 _attn_fwd_inner() 函數 295
第18 章 KV Cache 297
18.1 未引入KV Cache 時期 297
18.1.1 LLM 的推理階段 297
18.1.2 推理的簡化流程 298
18.1.3 冗余計算分析 299
18.1.4 改進冗余計算方案 301
18.2 引入KV Cache 301
18.2.1 基於KV Cache 的網絡架構 302
18.2.2 加入KV Cache 後的執行流程 303
18.2.3 重定義推理過程 304
18.2.4 KV Cache 的特性 305
18.3 KV Cache 的實現 306
18.3.1 總體思路 306
18.3.2 單層的KV Cache 307
18.4 KV Cache 的資源占用 310
18.4.1 KV Cache 的存儲量 310
18.4.2 KV Cache 的計算量 310
第19 章 MoE 311
19.1 前置知識 311
19.1.1 MoE 出現的核心動因 311
19.1.2 MoE 的核心理念 312
19.2 MoE 的發展歷史 312
19.2.1 奠基之作 313
19.2.2 Sparse MoE 方案 313
19.2.3 GShard 方案 313
19.2.4 Switch Transformer 方案 313
19.3 MoE 的模型架構 314
19.3.1 門控函數 315
19.3.2 專家 319
19.3.3 註意力機制和MoE 的對比 322
19.4 MoE 的計算流程 322
19.5 MoE 的計算量 324
19.6 MoE 的實現 324
19.7 並行計算 326
19.7.1 MoE 計算中的通信需求 327
19.7.2 專家並行 328
19.7.3 All-to-All 通信 332
第20 章 LoRA 334
20.1 LoRA 的基本介紹 334
20.1.1 LoRA 的概念 334
20.1.2 LoRA 的應用 335
20.1.3 LoRA 的特性 336
20.2 LoRA 的復雜度與資源占用 339
20.2.1 LoRA 的計算量分析 339
20.2.2 LoRA 的內存占用 340
20.3 LoRA 的支撐機理 341
20.3.1 本征維度 341
20.3.2 子空間微調 343
20.3.3 復雜系統視角 344
20.3.4 NTK 視角 344
20.3.5 模型改變視角 344
20.4 LoRA 的實現 345
20.4.1 LoRA 的創建 345
20.4.2 模塊示例 345
第21 章 長度外推 347
21.1 長度外推的背景知識 347
21.1.1 面臨的問題 347
21.1.2 影響長度泛化的因素 347
21.1.3 微調的挑戰 348
21.1.4 長度外推的必要性 349
21.2 長度外推的基礎知識 349
21.2.1 長度外推的概念 349
21.2.2 外推技術分類 349
21.3 位置編碼與長度外推 350
21.3.1 絕對位置編碼及其外推 350
21.3.2 相對位置編碼及其外推 350
21.3.3 LLM 時代的長度外推 351
21.3.4 隨機化位置編碼 351
21.4 RoPE 外推 352
21.4.1 問題及原因 352
21.4.2 RoPE 的特性 354
21.5 RoPE 外推基本方案 355
21.5.1 直接外推 355
21.5.2 位置插值 356
21.6 RoPE 外推進階方案 359
21.6.1 位置編碼的通用公式 360
21.6.2 NTK-aware Interpolation 361
21.6.3 NTK-by-partsInterpolation 363
21.6.4 Dynamic NTKInterpolation 365
21.6.5 YaRN 366
第22 章 大模型量化 368
22.1 離群值 369
22.1.1 離群值定義 369
22.1.2 離群值特點 369
22.1.3 離群特征 370
22.1.4 離群特征分布規律 370
22.1.5 離群值出現的原因 370
22.1.6 離群值的作用 374
22.1.7 大模型量化難點 374
22.2 超級離群值 375
22.2.1 超級權重 375
22.2.2 大規模激活 376
22.3 Transformer 量化 379
22.3.1 Transformer 量化的總體思路 379
22.3.2 應用量化的Transformer模塊 380
22.3.3 量化的分類 381
22.3.4 常見量化方案 381
22.3.5 SGLang 的量化方法支持 386
第4 篇 高階篇
第23 章 KV Cache 優化 388
23.1 背景知識 388
23.1.1 模型響應的度量指標 388
23.1.2 LLM 推理服務的內存危機 388
23.1.3 KV Cache 存在的問題 389
23.2 優化KV Cache 總體思路 390
23.3 從公式視角優化KV Cache 391
23.3.1 從註意力頭數量視角進行優化 392
23.3.2 從註意力頭維度視角進行優化 393
23.3.3 從占用字節數視角進行優化 393
23.3.4 從Transformer 層數視角進行優化 396
23.4 從特性視角優化KV Cache 398
23.4.1 從預填充視角進行優化 399
23.4.2 從內存管理視角進行優化 400
23.4.3 從調度策略視角進行優化 403
第24 章 縮減序列長度 404
24.1 KV Cache 稀疏化 404
24.1.1 優化的依據 404
24.1.2 稀疏化方案的分類 405
24.1.3 靜態稀疏化 406
24.1.4 動態稀疏化 410
24.1.5 針對預填充的稀疏化 413
24.1.6 針對層特點的稀疏化 414
24.1.7 其他稀疏化方案 416
24.2 KV Cache 復用 416
24.2.1 KV Cache 合並 416
24.2.2 前綴復用 418
第25 章 分離抑或合並 426
25.1 自回歸與疊代 426
25.2 靜態批處理 427
25.2.1 靜態批處理調度策略 427
25.2.2 靜態批處理問題及原因 428
25.2.3 靜態批處理面臨的挑戰 431
25.3 解決方案的流派 431
25.3.1 融合派 432
25.3.2 分離派 446
25.3.3 業界實現 453
第26 章 MQA 和GQA 458
26.1 MQA 459
26.1.1 MQA 的概念 459
26.1.2 MQA 的實現 460
26.1.3 MQA 的效能與局限 461
26.2 GQA 462
26.2.1 GQA 的概念 462
26.2.2 架構比對 462
26.2.3 GQA 的實現 463
26.2.4 GQA 的效能與局限 466
26.3 轉換MHA 模型 466
第27 章 DeepSeek MLA 468
27.1 原理 468
27.2 MLA 的核心要點 472
27.2.1 低秩鍵/ 值聯合壓縮 473
27.2.2 權重吸收 475
27.2.3 解耦RoPE 476
27.2.4 MLA 的資源占用 479
27.3 MLA 的實現 481
27.3.1 MLA 的配置 481
27.3.2 DeepseekV2Attention 類 481
27.3.3 操作查詢向量 483
27.3.4 操作鍵/ 值 484
27.3.5 註意力操作 487
27.3.6 MLA 的前向傳播 487
27.4 MLA 的優化 489
27.4.1 壓縮優化 489
27.4.2 權重吸收 489
27.4.3 DeepSeek-V3 代碼 492
27.5 將其他模型轉換為MLA 496
27.5.1 將GQA 轉換為MLA 496
27.5.2 將MHA 轉換為MLA 497
第28 章 MoE 進階 498
28.1 MoE 的優化邏輯 498
28.1.1 負載均衡 499
28.1.2 輔助損失函數 499
28.1.3 專家選擇策略 503
28.2 DeepSeek-V1 505
28.2.1 背景知識 505
28.2.2 解決方案 506
28.2.3 負載均衡 507
28.2.4 MoE 的實現 508
28.3 DeepSeek-V2 509
28.3.1 負載均衡 509
28.3.2 MoE 的實現 510
28.4 DeepSeek-V3 516
28.4.1 DeepSeek-MoE 的架構演進 516
28.4.2 負載均衡損失函數 518
28.4.3 比對分析 520
28.4.4 MoE 的實現 521
第29 章 投機解碼 525
29.1 背景知識 525
29.1.1 自回歸采樣的局限性 525
29.1.2 優化方案 526
29.2 投機解碼基本概念 526
29.3 BPD 528
29.3.1 BPD 設計動機 528
29.3.2 BPD 設計思路 529
29.3.3 BPD 的網絡架構 529
29.3.4 BPD 的流程 530
29.4 投機解碼原理 530
29.4.1 投機解碼的設計動機 531
29.4.2 投機解碼的設計思路 531
29.4.3 投機解碼技術的分類 532
29.5 投機解碼算法 535
29.5.1 投機解碼的算法流程 535
29.5.2 投機解碼的關鍵步驟 536
29.5.3 重點分析 538
29.6 投機解碼的實現 542
29.6.1 外層邏輯 542
29.6.2 實施算法 544
29.7 樹驗證 545
29.7.1 面臨的問題 546
29.7.2 設計思路 546
第30 章 Medusa 548
30.1 Medusa 的原理 548
30.1.1 設計動機 548
30.1.2 設計思路 549
30.2 Medusa 的設計核心點 551
30.2.1 流程 551
30.2.2 網絡架構 551
30.2.3 多頭的功能 552
30.2.4 Medusa 的局限性 553
30.3 樹驗證 554
30.3.1 解碼路徑 554
30.3.2 最佳構造方式 555
30.4 實現 556
30.4.1 關鍵變量 556
30.4.2 整體邏輯 559
30.4.3 初始化與前向傳播 561
30.4.4 生成候選序列 563
30.4.5 驗證候選序列 564
30.4.6 計算最優路徑 565
30.5 典型接受 566
第31 章 前瞻解碼 568
31.1 Jacobi 解碼 568
31.1.1 設計思路 568
31.1.2 Jacobi 解碼的算法 569
31.2 前瞻解碼的原理 569
31.2.1 設計思路 570
31.2.2 並行分支執行 570
31.2.3 數據結構和超參數 571
31.3 前瞻解碼的實現 573
31.3.1 掩碼的作用 574
31.3.2 解碼的輸入和輸出 574
31.3.3 前瞻解碼流程 578
31.3.4 初始化的邏輯 579
31.3.5 前瞻分支的邏輯 579
31.3.6 驗證分支的邏輯 579
31.3.7 準備下次疊代 580
第32 章 DeepSeek MTP 582
32.1 EAGLE 582
32.1.1 背景知識 583
32.1.2 設計思路 583
32.1.3 EAGLE 的網絡架構 584
32.1.4 EAGLE 的執行流程 585
32.1.5 EAGLE 的實現 585
32.1.6 EAGLE 的訓練 587
32.1.7 EAGLE 的升級方案 588
32.2 Meta MTP 589
32.2.1 設計思路 589
32.2.2 Meta MTP 的網絡結構 589
32.2.3 Meta MTP 的執行流程 590
32.2.4 Meta MTP 的有效性 591
32.3 DeepSeek MTP 592
32.3.1 DeepSeek MTP 的網絡
架構 592
32.3.2 DeepSeek MTP 的流程 593
32.3.3 DeepSeek MTP 的公式 596
32.3.4 DeepSeek MTP 的實現 597
32.3.5 DeepSeek MTP 的訓練 608
32.3.6 DeepSeek MTP 的推理 609
第33 章 SGLang :從推理引擎到LLM運行時生態的演進之路 610
33.1 團隊簡介:學術與工業界的協同創新力量 610
33.2 SGLang :破解語言模型程序困境的系統級方案 611
33.2.1 LM Programs 的崛起: 從“單輪交互” 到“程序式調度” 611
33.2.2 LM Programs 的兩大困境:開發難與執行慢 612
33.2.3 SGLang 的系統級破局: 從“適配” 到“重構” 613
33.2.4 SGLang 架構概覽 614
33.2.5 運行時系統: 以創新優化加速推理執行 616
33.3 發展歷程:從技術原型到生態平臺的五階段演進 619
33.3.1 五階段發展歷程: 從原型到生態的遞進 619
33.3.2 演進歷程對 MLSys 領域研究者的啟示 621
33.4 未來方向:從推理引擎到 LLM運行時生態 622



