機器學習系統:設計和實現

麥絡、董豪

  • 出版商: 清華大學
  • 出版日期: 2023-05-01
  • 售價: $474
  • 貴賓價: 9.5$450
  • 語言: 簡體中文
  • 頁數: 308
  • 裝訂: 平裝
  • ISBN: 7302630070
  • ISBN-13: 9787302630074
  • 相關分類: Machine Learning
  • 立即出貨 (庫存 < 4)

  • 機器學習系統:設計和實現-preview-1
  • 機器學習系統:設計和實現-preview-2
  • 機器學習系統:設計和實現-preview-3
機器學習系統:設計和實現-preview-1

買這商品的人也買了...

商品描述

本書系統地介紹了機器學習系統的設計原則和實踐經驗,側重於介紹機器學習的原理、神經網絡和優化器、自動差分算法、機器學習系統編程模型、控制流和數據流,異構硬件加速器的原理和編程、數據流圖編譯器前端、數據流圖編譯器後端、數據準備和增強、模型部署相關技術、分佈式訓練、彈性訓練、聯合訓練和評估平臺、調試和優化工具、數據隱私和安全等。在講授的過程中,本書將根據MindSpore的自身特點,在各個章節突出討論MindSpore的優勢點,從而將MindSpore並列為與TensorFlow,PyTorch的三大框架。

目錄大綱

 

目   錄

 

基礎篇

第1章  導論  003

1.1  機器學習應用 003

1.2  機器學習框架的設計目標 004

1.3  機器學習框架的基本組成原理 005

1.4  機器學習系統生態 006

1.5  本書結構和讀者對象 007

第2章  編程模型 009

2.1  機器學習系統編程模型的演進 009

2.2  機器學習工作流 011

2.2.1  環境配置 011

2.2.2  數據處理 012

2.2.3  模型定義 013

2.2.4  損失函數和優化器 014

2.2.5  訓練及保存模型 015

2.2.6  測試和驗證 016

2.3  定義深度神經網絡 017

2.3.1  以層為核心定義神經網絡 017

2.3.2  神經網絡層的實現原理 021

2.3.3  自定義神經網絡層 022

2.3.4  自定義神經網絡模型 023

2.4  C/C++編程接口 024

2.4.1  在Python中調用C/C++函數的原理 025

2.4.2  添加C++編寫的自定義算子 025

2.5  機器學習框架的編程範式 030

2.5.1  機器學習框架編程需求 030

2.5.2  機器學習框架編程範式現狀 030

2.5.3  函數式編程案例 031

2.6  總結 032

2.7  拓展閱讀 032

第3章  計算圖  033

3.1  設計背景和作用 033

3.2  計算圖的基本構成 034

3.2.1  張量和算子 035

3.2.2  計算依賴 037

3.2.3  控制流 038

3.2.4  基於鏈式法則計算梯度 041

3.3  計算圖的生成 043

3.3.1  靜態生成 043

3.3.2  動態生成 046

3.3.3  動態圖和靜態圖生成的比較 048

3.3.4  動態圖與靜態圖的轉換和融合 049

3.4  計算圖的調度 051

3.4.1  算子調度執行 051

3.4.2  串行與並行 052

3.4.3  數據載入同步與異步機制 053

3.5  總結 054

3.6  拓展閱讀 055

進階篇

第4章  AI 編譯器和前端技術 059

4.1  AI編譯器設計原理 059

4.2  AI編譯器前端技術概述 061

4.3  中間表示 062

4.3.1  中間表示的基本概念 062

4.3.2  中間表示的種類 063

4.3.3  機器學習框架的中間表示 065

4.4  自動微分 072

4.4.1  自動微分的基本概念 072

4.4.2  前向與反向自動微分 074

4.4.3  自動微分的實現 077

4.5  類型系統和靜態分析 081

4.5.1  類型系統概述 081

4.5.2  靜態分析概述 082

4.6  常見前端編譯優化方法 083

4.6.1  前端編譯優化簡介 083

4.6.2  常見編譯優化方法介紹及實現 083

4.7  總結 085

第5章  AI 編譯器後端和運行時 086

5.1  概述 086

5.2  計算圖優化 088

5.2.1  通用硬件優化 088

5.2.2  特定硬件優化 090

5.3  算子選擇 091

5.3.1  算子選擇的基礎概念 091

5.3.2  算子選擇的過程 095

5.4  內存分配 095

5.4.1  Device內存概念 096

5.4.2  內存分配 096

5.4.3  內存復用 098

5.4.4  常見的內存分配優化手段 099

5.5  計算調度與執行 101

5.5.1  單算子調度 101

5.5.2  計算圖調度 102

5.5.3  交互式執行 106

5.5.4  下沉式執行 110

5.6  算子編譯器 110

5.6.1  算子調度策略 111

5.6.2  子策略組合優化 112

5.6.3  調度空間算法優化 114

5.6.4  芯片指令集適配 115

5.6.5  算子表達能力 116

5.6.6  相關編譯優化技術 117

5.7  總結 117

5.8  拓展閱讀 118

第6章  硬件加速器  119

6.1  概述 119

6.1.1  硬件加速器設計的意義 119

6.1.2  硬件加速器設計的思路 119

6.2  硬件加速器基本組成原理 120

6.2.1  硬件加速器的架構 120

6.2.2  硬件加速器的存儲單元 121

6.2.3  硬件加速器的計算單元 122

6.2.4  DSA芯片架構 124

6.3  加速器基本編程原理 125

6.3.1  硬件加速器的可編程性 125

6.3.2  硬件加速器的多樣化編程方法 128

6.4  加速器實踐 132

6.4.1  環境 132

6.4.2  廣義矩陣乘法的樸素實現 133

6.4.3  提高計算強度 135

6.4.4  使用共享內存緩存復用數據 138

6.4.5  減少寄存器使用 139

6.4.6  隱藏共享內存讀取延遲 140

6.4.7  隱藏全局內存讀取延遲 141

6.4.8  與cuBLAS對比 142

6.4.9  小結 143

6.5  總結 143

6.6  拓展閱讀 144

第7章  數據處理 145

7.1  概述 146

7.1.1  易用性 146

7.1.2  高效性 147

7.1.3  保序性 147

7.2  易用性設計 147

7.2.1  編程抽象與接口 147

7.2.2  自定義算子支持 151

7.3  高效性設計 153

7.3.1  數據讀取的高效性 154

7.3.2  數據計算的高效性 157

7.4  保序性設計 162

7.5  單機數據處理性能的擴展 163

7.5.1  基於異構計算的數據預處理 163

7.5.2  基於分佈式的數據預處理 165

7.6  總結 166

第8章  模型部署 168

8.1  概述 168

8.2  訓練模型到推理模型的轉換及優化 169

8.2.1  模型轉換 169

8.2.2  算子融合 170

8.2.3  算子替換 172

8.2.4  算子重排 173

8.3  模型壓縮 173

8.3.1  量化 174

8.3.2  模型稀疏 176

8.3.3  知識蒸餾 178

8.4  模型推理 179

8.4.1  前處理與後處理 179

8.4.2  並行計算 180

8.4.3  算子優化 181

8.5  模型的安全保護 186

8.5.1  概述 186

8.5.2  模型混淆 186

8.6  總結 188

8.7  拓展閱讀 189

第9章  分佈式訓練 190

9.1  設計概述 190

9.1.1  設計動機 190

9.1.2  系統架構 191

9.1.3  用戶益處 192

9.2  實現方法 192

9.2.1  方法分類 192

9.2.2  數據並行 194

9.2.3  模型並行 194

9.2.4  混合並行 197

9.3  流水線並行 197

9.4  機器學習集群架構 198

9.5  集合通信 200

9.5.1  常見集合通信算子 200

9.5.2  基於AllReduce的梯度平均算法 203

9.5.3  集合通信算法性能分析 205

9.5.4  利用集合通信優化模型訓練的實踐 206

9.5.5  集合通信在數據並行的實踐 207

9.5.6  集合通信在混合並行的實踐 208

9.6  參數服務器 210

9.6.1  系統架構 210

9.6.2  異步訓練 211

9.6.3  數據副本 212

9.7  總結 212

9.8  拓展閱讀 213

拓展篇

第10章  聯邦學習系統 217

10.1  概述 217

10.1.1  定義 217

10.1.2  應用場景 217

10.1.3  部署場景 218

10.1.4  常用框架 218

10.2  橫向聯邦學習 219

10.2.1  雲雲場景中的橫向聯邦 219

10.2.2  端雲場景中的橫向聯邦 220

10.3  縱向聯邦學習 222

10.3.1  縱向聯邦架構 222

10.3.2  樣本對齊 223

10.3.3  聯合訓練 224

10.4  隱私加密算法 225

10.4.1  基於LDP算法的安全聚合 226

10.4.2  基於MPC算法的安全聚合 226

10.4.3  基於LDP-SignDS算法的安全聚合 227

10.5  展望 229

10.5.1  異構場景下的聯邦學習 229

10.5.2  通信效率提升 230

10.5.3  聯邦生態 230

10.6  總結 231

第11章  推薦系統 232

11.1  系統基本組成 232

11.1.1  消息隊列 233

11.1.2  特徵存儲 233

11.1.3  稠密神經網絡 234

11.1.4  嵌入表 234

11.1.5  訓練服務器 235

11.1.6  參數服務器 235

11.1.7  推理服務器 236

11.2  多階段推薦系統 236

11.2.1  推薦流水線概述 236

11.2.2  召回 237

11.2.3  排序 239

11.3  模型更新 241

11.3.1  持續更新模型的需求 241

11.3.2  離線更新 242

11.4  案例分析:支持在線模型更新的大型推薦系統 243

11.4.1  系統設計挑戰 244

11.4.2  系統架構 245

11.4.3  點對點模型更新傳播算法 246

11.4.4  模型更新調度器 247

11.4.5  模型狀態管理器 248

11.4.6  小結 249

11.5  總結 249

11.6  擴展閱讀 250

第12章  強化學習系統 251

12.1  強化學習介紹 251

12.2  單節點強化學習系統 252

12.3  分佈式強化學習系統 255

12.4  多智能體強化學習 257

12.5  多智能體強化學習系統 260

12.6  總結 264

第13章  可解釋AI 系統 265

13.1  背景 265

13.2  可解釋AI定義 266

13.3  可解釋AI算法現狀介紹 267

13.3.1  數據驅動的解釋 267

13.3.2  知識感知的解釋 270

13.4  常見可解釋AI系統 272

13.5  案例分析:MindSpore XAI 273

13.5.1  為圖片分類場景提供解釋 273

13.5.2  為表格數據場景提供解釋 275

13.5.3  白盒模型 276

13.6  未來研究方向 277

13.7  總結 277

第14章  機器人系統 278

14.1  機器人系統概述 278

14.1.1  感知系統 279

14.1.2  規劃系統 280

14.1.3  控制系統 281

14.1.4  機器人安全 282

14.2  機器人操作系統 283

14.2.1  ROS2節點 285

14.2.2  ROS2主題 285

14.2.3  ROS2服務 286

14.2.4  ROS2參數 286

14.2.5  ROS2動作 286

14.3  案例分析:使用機器人操作系統 287

14.3.1  創建節點 290

14.3.2  讀取參數 296

14.3.3  服務端-客戶端服務模式 298

14.3.4  客戶端 301

14.3.5  動作模式 303

14.3.6  動作客戶端 305

14.4  總結 308

參考文獻 309