大模型輕量化:模型壓縮與訓練加速
梁志遠
相關主題
商品描述
目錄大綱
目 錄
第 1 部分 大模型概述與核心優化技術
第 1 章 大模型基本概念 3
1.1 大模型的興起與發展 3
1.1.1 大規模神經網絡 4
1.1.2 Transformer編碼器-解碼器 5
1.1.3 MoE架構 7
1.2 計算資源與性能瓶頸 9
1.2.1 GPU簡介 10
1.2.2 TPU簡介 12
1.2.3 網絡帶寬約束與分佈式訓練 13
1.2.4 大模型的訓練時間與計算資源消耗問題 14
1.3 數據與隱私問題 16
1.3.1 急劇增加的數據量 16
1.3.2 數據隱私保護與合規性 19
1.4 模型部署與運維 20
1.4.1 模型部署基本概念 20
1.4.2 雲計算與邊緣計算 25
1.4.3 端側部署 29
1.4.4 大模型運行與維護 30
1.5 本章小結 34
1.6 思考題 34
第 2 章 模型壓縮、訓練與推理 36
2.1 模型壓縮概述 36
2.1.1 模型壓縮簡介 36
2.1.2 常見的模型壓縮方法分類 37
2.2 訓練加速基礎 38
2.2.1 數據並行與模型並行 39
2.2.2 混合精度訓練 40
2.2.3 分佈式訓練框架:Horovod 44
2.3 推理加速基礎 49
2.3.1 硬件加速與推理引擎 49
2.3.2 低延遲與高吞吐量平衡 55
2.3.3 推理優化實戰:批量推理 58
2.4 性能評估指標 62
2.4.1 計算復雜度與性能指標 62
2.4.2 延遲、吞吐量與精度之間的權衡 63
2.4.3 評估工具與基準測試 67
2.5 本章小結 74
2.6 思考題 75
第 3 章 模型格式轉換 76
3.1 模型格式的定義與轉換 76
3.1.1 常見的模型格式:ONNX、TensorFlow的SavedModel 76
3.1.2 模型格式轉換實現 81
3.1.3 模型的兼容性問題 86
3.2 跨框架模型轉換 90
3.2.1 TensorFlow到PyTorch的模型轉換 90
3.2.2 ONNX與TensorFlow、PyTorch的兼容性 93
3.2.3 轉換時的精度損失問題 99
3.3 硬件相關的格式轉換 105
3.3.1 從PyTorch到TensorRT 106
3.3.2 ONNX模型與NVIDIA TensorRT的兼容性 112
3.3.3 模型格式與硬件加速的關系 113
3.4 模型格式轉換的工具與庫 114
3.4.1 使用ONNX進行跨平臺轉換 115
3.4.2 TensorFlow Lite與Edge模型優化 117
3.5 本章小結 122
3.6 思考題 123
第 4 章 圖優化 124
4.1 算子融合技術 124
4.1.1 算子融合的原理 124
4.1.2 典型算子融合算法的實現 126
4.1.3 實驗:算子融合對推理性能的提升 129
4.2 佈局轉換與優化 133
4.2.1 張量佈局的原理 133
4.2.2 內存訪問優化與佈局選擇 135
4.3 算子替換技術 137
4.3.1 用低開銷算子替換高開銷算子 137
4.3.2 常見的算子替換策略 139
4.4 顯存優化 142
4.4.1 顯存占用分析與優化 142
4.4.2 梯度檢查點與顯存共享 145
4.4.3 動態顯存分配與內存池管理 148
4.5 本章小結 152
4.6 思考題 152
第 5 章 模型壓縮 154
5.1 量化 154
5.1.1 定點量化與浮點量化的區別 154
5.1.2 量化算法與工具:TensorFlow Lite 157
5.1.3 量化帶來的精度損失問題 160
5.2 知識蒸餾 163
5.2.1 知識蒸餾的基本概念與應用場景 163
5.2.2 知識蒸餾的損失函數與訓練過程 164
5.2.3 如何選擇蒸餾-教師網絡模型 167
5.3 剪枝 169
5.3.1 網絡剪枝基本原理 169
5.3.2 基於權重剪枝與結構化剪枝 171
5.3.3 剪枝後的精度恢復方案 177
5.4 二值化與極端壓縮 183
5.4.1 二值化網絡的構建與訓練 183
5.4.2 二值化對計算與存儲的影響 186
5.5 本章小結 189
5.6 思考題 189
第 2 部分 端側學習與高效計算引擎優化
第 6 章 端側學習、端側推理及計算引擎優化 193
6.1 聯邦學習概述 193
6.1.1 聯邦學習的基本概念與應用 193
6.1.2 聯邦學習中的隱私保護機制、通信與聚合算法 194
6.2 數據處理與預處理 197
6.2.1 數據清洗與增廣技術 197
6.2.2 數據均衡與過採樣策略 199
6.2.3 端側數據處理的資源限制 201
6.3 Trainer與優化器設計 202
6.3.1 端側訓練的挑戰與策略 203
6.3.2 高效優化器(如SGD、Adam)的選擇 204
6.3.3 動態調整學習率與訓練過程監控 206
6.4 損失函數的設計與選擇 209
6.4.1 常見的損失函數與應用場景 209
6.4.2 多任務學習中的損失函數設計 210
6.4.3 損失函數的數值穩定性 213
6.5 Benchmark設計與性能評估 215
6.5.1 經典Benchmark與定製Benchmark 215
6.5.2 推理與訓練性能的綜合評估 216
6.5.3 性能瓶頸的識別與優化 219
6.6 IR的作用與優化 222
6.6.1 IR的定義及作用 222
6.6.2 IR轉換與優化策略 223
6.7 Schema的設計與規範 225
6.7.1 數據格式與模型接口的設計 225
6.7.2 數據流與計算圖的規範化 228
6.8 動態Batch與內存調度 231
6.8.1 動態Batch的選擇與調整 231
6.8.2 內存調度與性能優化 234
6.8.3 優化內存利用率與減少內存溢出 237
6.9 異構執行與優化 240
6.9.1 GPU與CPU的異構計算模式原理 240
6.9.2 多核心與多節點並行優化 242
6.9.3 異構計算中的任務調度 245
6.10 裝箱操作與計算圖優化 247
6.10.1 通過裝箱減少計算開銷 248
6.10.2 裝箱優化對計算圖的影響 250
6.11 本章小結 256
6.12 思考題 257
第 7 章 高性能算子庫簡介 258
7.1 cuDNN算子庫概述 258
7.1.1 cuDNN的主要功能 258
7.1.2 常用算子(捲積、池化等)的實現 259
7.1.3 算子加速實戰:cuDNN在深度學習中的應用 262
7.2 MKLDNN算子庫概述 265
7.2.1 MKLDNN與Intel硬件的優化 265
7.2.2 MKLDNN中的高效算子實現 266
7.2.3 多核支持與並行計算優化 269
7.3 算子庫的選擇與性能比較 271
7.3.1 cuDNN與MKLDNN的應用場景對比 271
7.3.2 在不同硬件平臺上的表現 272
7.4 算子庫的高效利用 275
7.4.1 如何選擇合適的算子庫 275
7.4.2 優化算子庫接口與內存管理 276
7.4.3 算法重構:提高算子性能 278
7.5 本章小結 282
7.6 思考題 283
第 3 部分 高性能算子與深度學習框架應用
第 8 章 常用高性能算子開發實戰 287
8.1 NEON與ARM架構優化 287
8.1.1 NEON指令集與深度學習加速 287
8.1.2 ARM架構上的並行計算優化 289
8.1.3 使用NEON實現捲積等算子加速 291
8.2 CUDA與GPU優化 294
8.2.1 CUDA編程模型與內存管理 295
8.2.2 CUDA流與核函數優化 297
8.2.3 高效利用GPU並行計算資源 300
8.3 Vulkan與圖形加速 303
8.3.1 Vulkan的低級控制與優化 304
8.3.2 使用Vulkan進行推理加速 311
8.3.3 圖形與計算並行加速的結合 312
8.4 AVX與OpenCL的優化 321
8.4.1 AVX與CPU優化的基本原理 321
8.4.2 OpenCL與跨平臺加速 322
8.5 本章小結 327
8.6 思考題 327
第 9 章 TIK、YVM算子原理及其應用 328
9.1 TIK算子庫的應用 328
9.1.1 TIK算子庫與TensorFlow Lite的集成 328
9.1.2 使用TIK進行捲積與矩陣乘法加速 330
9.2 YVM算子庫的應用 332
9.2.1 YVM在深度學習推理中的高效應用 332
9.2.2 YVM的硬件適配與優化 334
9.3 本章小結 346
9.4 思考題 346
第 10 章 基於DeepSeek-V3分析大模型訓練降本增效技術 347
10.1 DeepSeek-V3架構概述 347
10.1.1 DeepSeek-V3的架構設計與創新 347
10.1.2 模型參數共享與層次結構優化 350
10.2 DeepSeek-V3的訓練降本技術分析 354
10.2.1 FP8精度訓練、混合精度訓練與分佈式訓練 354
10.2.2 動態計算圖 357
10.2.3 自適應批處理與梯度累積技術 359
10.2.4 Sigmoid路由機制 363
10.2.5 無輔助損失負載均衡算法 365
10.2.6 DualPipe算法 370
10.2.7 All-to-All跨節點通信 375
10.3 DeepSeek-V3的推理加速技術 377
10.3.1 量化與蒸餾在DeepSeek-V3中的應用 377
10.3.2 模型壓縮與推理速度提升 381
10.4 本章小結 383
10.5 思考題 383