相關主題
商品描述
NPU(Neural Processing Unit,神經網絡處理器)是一種專門為人工智能計算設計的處理器,主要用於加速神經網絡相關的運算,如深度學習模型的推理和訓練。相較於傳統的CPU(通用計算)和GPU(圖形/並行計算),NPU在能效比和計算速度上具有顯著優勢,特別適合移動設備、邊緣計算和AI專用場景。NPU是AI計算的核心引擎,在手機、自動駕駛、雲計算等領域發揮關鍵作用。隨著AI應用爆發,NPU將成為未來芯片競爭的主戰場!本書結合NPU理論與大量開發示例,包含400多幅圖表,能通俗易懂,可幫助讀者迅速掌握NPU的基本原理和開發實踐,讓讀者快速入門,快速上手。本書適合從事AI相關工作與AI愛好者使用。
目錄大綱
第 1 章 NPU 基礎與 AI 芯片 .................................................................................................. 001
1.1 NPU 基礎 ................................................................................................................... 001
1.1.1 什麼是 AI 芯片.............................................................................................. 001
1.1.2 AI 芯片的任務和部署 ................................................................................... 003
1.1.3 AI 芯片技術路線 ........................................................................................... 005
1.1.4 AI 芯片應用場景 ........................................................................................... 007
1.2 AI 芯片發展 ............................................................................................................... 009
1.2.1 異構與超異構場景 ........................................................................................ 009
1.2.2 計算體系迎來異構 ........................................................................................ 011
1.2.3 從異構到超異構 ............................................................................................ 014
1.2.4 超異構的挑戰與思考 .................................................................................... 015
1.3 GPU 基礎概述 ........................................................................................................... 018
1.3.1 GPU 發展歷史 ............................................................................................... 019
1.3.2 GPU 與 CPU .................................................................................................. 020
1.4 AI 編譯原理概述 ....................................................................................................... 021
1.4.1 GCC 主要特征 .............................................................................................. 022
1.4.2 GCC 編譯方法 .............................................................................................. 026
1.4.3 與傳統編譯區別 ............................................................................................ 026
1.5 LLVM 架構設計和原理 ............................................................................................ 026
1.5.1 LLVM 發展歷程 ............................................................................................ 027
1.5.2 LLVM 組件的獨立性 .................................................................................... 027
1.5.3 LLVM 中間表達 ............................................................................................ 027
1.5.4 小結與思考 .................................................................................................... 031
1.6 LLVM IR 基本概念 ................................................................................................... 032
1.6.1 LLVM IR 概述 ............................................................................................... 032
1.6.2 LLVM 基本架構 ............................................................................................ 032
1.6.3 LLVM IR 表示形式 ....................................................................................... 033
電子工業出版社
VI
1.6.4 基本語法 ........................................................................................................ 035
1.6.5 小結與思考 .................................................................................................... 038
1.6.6 LLVM IR 詳解 ............................................................................................... 039
1.6.7 LLVM IR 指令集 ........................................................................................... 039
1.6.8 CPU 計算時延 ............................................................................................... 044
1.6.9 LLVM 前端和優化層 .................................................................................... 047
1.6.10 LLVM 後端代碼生成 .................................................................................. 054
第 2 章 體系結構介紹 ............................................................................................................. 062
2.1 計算機的層次結構 .................................................................................................... 062
2.1.1 基本概念介紹 ................................................................................................ 062
2.1.2 數的表示 ........................................................................................................ 064
2.2 量化設計與分析(CPI、MIPS 計算) .................................................................... 069
2.2.1 基本概念 ........................................................................................................ 069
2.2.2 CPI 計算 ........................................................................................................ 069
2.3 存儲器層次結構 ........................................................................................................ 070
2.3.1 存儲器層次結構概述 .................................................................................... 070
2.3.2 存儲器層次結構示例 .................................................................................... 073
2.4 指令集並行與開發 .................................................................................................... 075
2.4.1 Tomasulo 算法 ............................................................................................... 075
2.4.2 Tomasulo 算法執行示例 ............................................................................... 087
2.5 GCC 技術 ................................................................................................................... 090
2.5.1 GCC 編譯概述 .............................................................................................. 090
2.5.2 GCC 編譯過程 .............................................................................................. 090
2.6 GNU 編譯器(GCC)原理簡介 .............................................................................. 092
2.7 編譯系統的結構 ........................................................................................................ 095
2.8 簡單談談 Google TPUv6 .......................................................................................... 097
2.9 NPU 是什麼芯片?AI 芯片都有哪些? .................................................................. 099
2.10 加速 Transformer:稀疏註意力加速器分析 ......................................................... 105
2.11 DOTA:檢測和忽略可擴展 Transformer 加速的薄弱環節 .................................. 107
2.11.1 主要思想 ...................................................................................................... 107
2.11.2 加速器設計 .................................................................................................. 108
第 3 章 NPU 開發技術分析 ................................................................................................... 109
3.1 NPU 加速器建模設計 ............................................................................................... 109
3.1.1 NPU 加速器建模概述 ................................................................................... 109
3.1.2 加速器架構的設計空間探索 ........................................................................ 110
電子工業出版社
目錄
VII
3.2 異構系統-向量體系結構 ........................................................................................... 124
3.2.1 異構稀疏向量(HSV)加速器的總體架構 ................................................ 124
3.2.2 稀疏矩陣 ........................................................................................................ 125
3.2.3 異構感知調度算法示例 ................................................................................ 126
3.2.4 外部內存訪問調度 ........................................................................................ 126
3.2.5 仿真框架 ........................................................................................................ 127
3.2.6 位片跳轉架構與數據管理方面的硬件挑戰 ................................................ 128
3.2.7 有符號位片表示及其編碼單元 .................................................................... 129
3.2.8 用於輸入和輸出跳轉的零跳轉單元 ............................................................ 130
3.2.9 片上異構網絡 ................................................................................................ 131
3.2.10 指令集體系結構 .......................................................................................... 131
3.2.11 廣義深度學習的架構式編排、變換和布局 .............................................. 132
3.3 NPU 開發示例 ........................................................................................................... 133
3.3.1 NPU 硬件概述 ............................................................................................... 133
3.3.2 gxDNN 概述 .................................................................................................. 133
3.3.3 編譯器使用 .................................................................................................... 136
3.3.4 編譯模型 ........................................................................................................ 137
3.3.5 調用 API 流程與 MCU API 代碼 ................................................................. 139
3.3.6 NPU 使用示例 ............................................................................................... 144
3.4 TPU2 機器學習集群 .................................................................................................. 147
3.4.1 TPU2 概述 ..................................................................................................... 147
3.4.2 TPU2 設計方案 ............................................................................................. 148
第 4 章 NaplesPU NPU 技術開發分析 ................................................................................ 155
4.1 NaplesPU NPU 概述 .................................................................................................. 155
4.2 NaplesPU 微體系結構內多個插件融合分析 ..............................................................157
4.2.1 NaplesPU 微體系結構概述 ........................................................................... 157
4.2.2 NaplesPU 微體系示例分析 ........................................................................... 159
4.3 NaplesPU 硬件架構(重定向自 nu+硬件架構) .................................................... 171
4.3.1 NaplesPU 硬件架構概述 ............................................................................... 171
4.3.2 在 NaplesPU 核中添加自定義指令 ..............................................................182
4.3.3 NaplesPU 編程模型 ....................................................................................... 193
4.3.4 NaplesPU 其他方面 ....................................................................................... 196
4.3.5 NaplesPU 內部函數....................................................................................... 198
4.3.6 NaplesPU 示例分析 ....................................................................................... 200
4.3.7 NaplesPU 的 OpenCL 支持 ........................................................................... 202
電子工業出版社
VIII
第 5 章 分布式訓練策略 ......................................................................................................... 206
5.1 常見的分布式並行策略 ............................................................................................ 206
5.1.1 為什麼分布式訓練越來越流行 .................................................................... 206
5.1.2 集群的全局視角 ............................................................................................ 209
5.2 全局張量 .................................................................................................................... 214
5.2.1 全局視角與物理視角的映射 ........................................................................ 214
5.2.2 實踐 SBP 簽名的作用 ................................................................................... 215
5.2.3 多機訓練時的環境變量 ................................................................................ 216
5.2.4 數據並行訓練 ................................................................................................ 222
5.2.5 流水並行訓練 ................................................................................................ 225
第 6 章 如何優化 CUDA Matmul 內核以獲得類似 cuBLAS 的性能 ................................. 229
6.1 疊代優化用 CUDA 概述 ........................................................................................... 229
6.1.1 內核 1:樸素的實現 ..................................................................................... 229
6.1.2 內核 2:全局內存合並 ................................................................................. 232
6.1.3 內核 3:共享內存緩存阻塞......................................................................... 234
6.1.4 內核 4:1D 分塊用於計算每個線程的多個結果 ....................................... 238
6.1.5 內核 5:通過 2D 分塊增加算術強度 .......................................................... 242
6.1.6 內核 6:對 SMEM 和 GMEM 訪問進行矢量化 ......................................... 245
6.1.7 內核 7:自動調優 ......................................................................................... 246
6.1.8 內核 8:Warp ................................................................................................ 247
6.2 啟動額外的塊來處理剩余的塊 ................................................................................ 250
6.3 張量矩陣乘法分塊乘法概述 .................................................................................... 253
6.3.1 GEMM 概述 .................................................................................................. 253
6.3.2 分塊矩陣乘法 ................................................................................................ 254
6.3.3 硬件的視角看 GEMM .................................................................................. 256
6.3.4 通用矩陣乘法執行 ........................................................................................ 259
6.4 張量矩陣乘法優化 .................................................................................................... 262
6.4.1 cuBLAS 基線 ................................................................................................. 263
6.4.2 分組沖突 ........................................................................................................ 266
第 7 章 深度學習模型優化 ..................................................................................................... 272
7.1 深度學習模型優化概述 ............................................................................................ 272
7.2 低比特量化方法 ........................................................................................................ 274
7.2.1 神經網絡特點和量化優勢 ............................................................................ 274
7.2.2 落地挑戰與思考 ............................................................................................ 275
電子工業出版社
目錄
IX
7.3 量化原理 .................................................................................................................... 277
7.3.1 三種模型量化方法 ........................................................................................ 277
7.3.2 量化方法對比 ................................................................................................ 277
7.3.3 量化方法(飽和與非飽和) ........................................................................ 278
7.3.4 量化類型(線性與非線性) ........................................................................ 278
7.4 感知量化訓練 QAT ................................................................................................... 279
7.5 動態離線量化 ............................................................................................................ 283
7.5.1 靜態離線量化 ................................................................................................ 283
7.5.2 量化粒度 ........................................................................................................ 284
7.5.3 KL 散度校準法 ............................................................................................. 284
7.5.4 端側量化推理部署推理結構 ........................................................................ 285
7.5.5 量化過程 ........................................................................................................ 286
7.5.6 訓練後量化的技巧 ........................................................................................ 287
7.6 內核優化技術 ............................................................................................................ 288
7.6.1 內核優化架構 ................................................................................................ 288
7.6.2 內核框架層介紹 ............................................................................................ 289
7.6.3 內核層推理架構 ............................................................................................ 290
7.6.4 推理流程 ........................................................................................................ 291
7.6.5 開發推理程序 ................................................................................................ 292
7.6.6 卷積操作原理 ................................................................................................ 292
7.6.7 卷積的優化手段 ............................................................................................ 304
7.7 將圖片轉換成矩陣的矩陣列的計算 ........................................................................ 306
7.7.1 Im2Col 概述 .................................................................................................. 306
7.7.2 Im2Col 數學原理 ........................................................................................... 306
7.7.3 算法過程 ........................................................................................................ 307
7.7.4 卷積過程 ........................................................................................................ 308
7.7.5 Im2Col 算法原理 ........................................................................................... 309
7.7.6 Im2Col 算法總結 ........................................................................................... 311
7.7.7 空間組合優化方法 ........................................................................................ 312
7.8 AI 框架作用 ............................................................................................................... 315
第 8 章 編譯器技術及基礎實驗配置 ..................................................................................... 319
8.1 AI 編譯器技術 ........................................................................................................... 319
8.1.1 為什麼需要 AI 編譯器 .................................................................................. 319
8.1.2 應用層需要 AI 編譯器 .................................................................................. 321
8.1.3 傳統編譯器與 AI 編譯器區別 ...................................................................... 323
電子工業出版社
X
8.1.4 IR 的差異 ....................................................................................................... 325
8.1.5 AI 編譯器歷史階段 ....................................................................................... 326
8.1.6 AI 編譯器設計目標 ....................................................................................... 326
8.1.7 什麼是 AI 編譯器 .......................................................................................... 327
8.1.8 樸素 AI 編譯器.............................................................................................. 328
8.1.9 專用 AI 編譯器.............................................................................................. 330
8.1.10 通用 AI 編譯器 ............................................................................................ 331
8.1.11 AI 編譯器的通用架構 ................................................................................. 331
8.1.12 AI 編譯器後端優化 ..................................................................................... 333
8.1.13 計算與調度 .................................................................................................. 335
8.1.14 算子手工優化方式 ...................................................................................... 338
8.2 Linux Vscode 與硬件配置安裝 ................................................................................. 343
第 9 章 自主指令系統——龍架構 ............................................................................................ 350
9.1 龍芯基礎指令系統概述 ............................................................................................ 350
9.2 龍芯設計技術 ............................................................................................................ 351
9.2.1 Godson-2:設定基線 .................................................................................... 352
9.2.2 AMD K8 架構 ............................................................................................... 353
9.2.3 龍芯 Godson-2 微結構 .................................................................................. 353
9.2.4 Godson-2 處理器微架構 ............................................................................... 353
9.2.5 關於 Godson-2 的想法 .................................................................................. 354
9.2.6 英特爾酷睿 2 架構 ........................................................................................ 355
9.2.7 指令流水線結構 ............................................................................................ 355
9.2.8 龍芯 Godson-2 與 Godson-2E 整數族結構對照 .......................................... 356
9.2.9 龍芯 Godson-2 全聯合 TLB 結構 ................................................................. 357
9.3 架構性能改進 ............................................................................................................ 358
9.3.1 龍芯 Godson-2E 性能改進結構 .................................................................... 358
9.3.2 AMD Athlon FX-62 的內存帶寬大約是 Godson-2E 的 4 倍 .......................... 358
9.3.3 Godson-2G 布局框架 .................................................................................... 359
9.3.4 大型 1 MB、4 路集關聯 L2 緩存 ................................................................ 360
9.4 軟件生態系統討論 .................................................................................................... 360
9.4.1 Godson-3:多核時間 .................................................................................... 360
9.4.2 英特爾的 Nehalem 芯片 ............................................................................... 361
9.4.3 龍芯 Godson-3B 和 GS464V ........................................................................ 362
9.4.4 英特爾的 Sandy Bridge 架構 ........................................................................ 362
9.4.5 龍芯系統級核數量 ........................................................................................ 363
電子工業出版社
目錄
XI
9.4.6 英特爾可擴展環形互連的八核 Nehalem 部件和十核 Westmere 部件 ...... 364
9.4.7 Godson-3B1500:緩存層次結構更改 ......................................................... 364
9.4.8 龍芯-3B1500 實現中緩存層次延遲 ............................................................. 365
9.4.9 英特爾至強(Xeon)E5-2620 v3 ................................................................ 365
9.4.10 GS464E:內核趕上時間 ............................................................................ 366
9.5 其他信息提升 ............................................................................................................ 367
9.5.1 GS464V、GS464E 及 Haswell(i7-4770)參數性能對比 ......................... 367
9.5.2 GS464E 處理器核的平面布置圖 ................................................................. 368
9.5.3 LA464 和 LA664 提升 ................................................................................. 369
第 10 章 異構計算與 CUDA .................................................................................................. 371
10.1 異構計算與 CUDA .................................................................................................. 371
10.1.1 異構計算概述 .............................................................................................. 371
10.1.2 異構架構 ...................................................................................................... 371
10.1.3 CPU 和 GPU 範例....................................................................................... 373
10.2 CUDA:一種異構計算平臺 ................................................................................... 374
10.2.1 CUDA 平臺概述 ......................................................................................... 374
10.2.2 CUDA 平臺“Hello World!”示例 ................................................................. 376
10.2.3 CUDA C 技術分析 ...................................................................................... 377
10.3 CUDA 編程模型(一) .......................................................................................... 378
10.3.1 CUDA 編程模型概述 ................................................................................. 378
10.3.2 CUDA 編程結構 ......................................................................................... 379
10.3.3 內存管理 ...................................................................................................... 380
10.3.4 線程管理 ...................................................................................................... 382
10.4 CUDA 編程模型(二) .......................................................................................... 384
10.4.1 核函數 .......................................................................................................... 384
10.4.2 錯誤處理 ...................................................................................................... 388
10.5 CUDA 執行模型 ...................................................................................................... 389
10.5.1 CUDA 執行模型概述 ................................................................................. 389
10.5.2 GPU 架構概述 ............................................................................................. 389
10.5.3 SM ................................................................................................................ 390
10.5.4 線程束 .......................................................................................................... 391
10.5.5 SIMD vs SIMT ............................................................................................. 391
10.5.6 數字 32 介紹 ................................................................................................ 391
10.5.7 CUDA 編程的組件與邏輯.......................................................................... 392
10.5.8 Fermi 架構 ................................................................................................... 392
電子工業出版社
XII
10.5.9 Kepler 架構 .................................................................................................. 394
第 11 章 詳解 FPGA-AI 算力芯片 ......................................................................................... 397
11.1 詳解 FPGA AI 算力芯片(上) ............................................................................. 397
11.1.1 什麼是 FPGA ............................................................................................... 398
11.1.2 可配置邏輯塊(CLB) .............................................................................. 398
11.1.3 DL 中的 FPGA ............................................................................................ 400
11.1.4 FPGA 的賣點 ............................................................................................... 400
11.1.5 可編程互連 .................................................................................................. 401
11.1.6 帶有 Arria 10 FPGA 的英特爾視覺加速器設計(用於 AI 推理) .............. 402
11.1.7 線性操作融合 .............................................................................................. 404
11.2 詳解 FPGA AI 算力芯片(中) ............................................................................. 405
11.2.1 ResNet 中的步幅優化 ................................................................................. 405
11.2.2 中間表示量化 .............................................................................................. 405
11.2.3 英特爾 FPGA 深度學習(DLA)加速套件 .............................................. 405
11.2.4 推理引擎流程 .............................................................................................. 409
11.2.5 位流 .............................................................................................................. 409
11.2.6 在全連接層中進行批量數據並行執行 ...................................................... 411
11.2.7 特征緩存 ...................................................................................................... 411
11.2.8 濾波器緩存 .................................................................................................. 412
11.2.9 低精度 .......................................................................................................... 412
11.3 詳解 FPGA AI 算力芯片(下) ............................................................................. 412
11.3.1 英特爾 Stratix 10 NX FPGA(用於 AI 推理) ......................................... 412
11.3.2 英特爾 Agilex FPGA ................................................................................... 413
