機(jī)器學(xué)習(xí)系統(tǒng):設(shè)計(jì)和實(shí)現(xiàn)
鏈接:https://pan.baidu.com/s/1bYf-yvfhwFoLhmrpi81Qfg?pwd=7qo7?
提取碼:7qo7

本書分為三大部分。基礎(chǔ)篇覆蓋機(jī)器學(xué)習(xí)框架使用者所需要了解的核心系統(tǒng)知識和相關(guān)編程案例;進(jìn)階篇覆蓋了機(jī)器學(xué)習(xí)框架開發(fā)著所需要理解的核心知識和相關(guān)實(shí)踐案例;拓展篇詳細(xì)討論了多種類的機(jī)器學(xué)習(xí)系統(tǒng),從而為廣大機(jī)器學(xué)習(xí)從業(yè)者提供解密底層系統(tǒng)所需的基礎(chǔ)知識。
內(nèi)容簡介
本書系統(tǒng)地介紹了機(jī)器學(xué)習(xí)系統(tǒng)的設(shè)計(jì)原則和實(shí)踐經(jīng)驗(yàn),側(cè)重于介紹機(jī)器學(xué)習(xí)的原理、神經(jīng)網(wǎng)絡(luò)和優(yōu)化器、自動差分算法、機(jī)器學(xué)習(xí)系統(tǒng)編程模型、控制流和數(shù)據(jù)流,異構(gòu)硬件加速器的原理和編程、數(shù)據(jù)流圖編譯器前端、數(shù)據(jù)流圖編譯器后端、數(shù)據(jù)準(zhǔn)備和增強(qiáng)、模型部署相關(guān)技術(shù)、分布式訓(xùn)練、彈性訓(xùn)練、聯(lián)合訓(xùn)練和評估平臺、調(diào)試和優(yōu)化工具、數(shù)據(jù)隱私和安全等。在講授的過程中,本書將根據(jù)MindSpore的自身特點(diǎn),在各個章節(jié)突出討論MindSpore的優(yōu)勢點(diǎn),從而將MindSpore并列為與TensorFlow,PyTorch的三大框架。
作者簡介
麥絡(luò) 愛丁堡大學(xué)信息學(xué)院助理教授,博士生導(dǎo)師。2018年于帝國理工學(xué)院獲得博士學(xué)位,谷歌博士獎學(xué)金獲得者。主要研究方向?yàn)榉植际较到y(tǒng)、機(jī)器學(xué)習(xí)和數(shù)據(jù)管理,當(dāng)前研究工作專注于構(gòu)建大規(guī)模、自適應(yīng)和可信的機(jī)器學(xué)習(xí)系統(tǒng),受到谷歌、微軟、華為、騰訊和阿里巴巴等多家知名科技公司的資助。在計(jì)算機(jī)頂級會議OSDI、NSDI、USENIX ATC、CoNEXT、VLDB、ECCV和NeurIPS發(fā)表多篇論文。獲得CoNEXT會議最佳論文入圍獎,ACM Multimedia 2017最佳開源論文獎。
董豪 北京大學(xué)計(jì)算機(jī)學(xué)院助理教授,博士生導(dǎo)師,2019年于帝國理工獲得博士學(xué)位。主要研究方向?yàn)橛?jì)算機(jī)視覺、機(jī)器人和具身智能,當(dāng)前研究工作圍繞智能機(jī)器人的自主決策與泛化交互。擔(dān)任CVPR 2023領(lǐng)域主席、AAAI 2023高級程序委員、中國科技核心期刊Machine Intelligence Research副編委等,在NeurIPS、ICLR、ICCV、ECCV、IROS等頂級國際會議和期刊發(fā)表30余篇論文,Deep Reinforcement Learning:Fundamentals, Research and Applications作者。獲得ACM MM最佳開源軟件獎,新一代人工智能產(chǎn)業(yè)技術(shù)創(chuàng)新戰(zhàn)略聯(lián)盟 OpenI 啟智社區(qū)優(yōu)秀開源項(xiàng)目、Springer Nature中國作者高影響力研究精選等。
目錄
基礎(chǔ)篇
第1章 導(dǎo)論 003
1.1 機(jī)器學(xué)習(xí)應(yīng)用 003
1.2 機(jī)器學(xué)習(xí)框架的設(shè)計(jì)目標(biāo) 004
1.3 機(jī)器學(xué)習(xí)框架的基本組成原理 005
1.4 機(jī)器學(xué)習(xí)系統(tǒng)生態(tài) 006
1.5 本書結(jié)構(gòu)和讀者對象 007
第2章 編程模型 009
2.1 機(jī)器學(xué)習(xí)系統(tǒng)編程模型的演進(jìn) 009
2.2 機(jī)器學(xué)習(xí)工作流 011
2.2.1 環(huán)境配置 011
2.2.2 數(shù)據(jù)處理 012
2.2.3 模型定義 013
2.2.4 損失函數(shù)和優(yōu)化器 014
2.2.5 訓(xùn)練及保存模型 015
2.2.6 測試和驗(yàn)證 016
2.3 定義深度神經(jīng)網(wǎng)絡(luò) 017
2.3.1 以層為核心定義神經(jīng)網(wǎng)絡(luò) 017
2.3.2 神經(jīng)網(wǎng)絡(luò)層的實(shí)現(xiàn)原理 021
2.3.3 自定義神經(jīng)網(wǎng)絡(luò)層 022
2.3.4 自定義神經(jīng)網(wǎng)絡(luò)模型 023
2.4 C/C++編程接口 024
2.4.1 在Python中調(diào)用C/C++函數(shù)的原理 025
2.4.2 添加C++編寫的自定義算子 025
2.5 機(jī)器學(xué)習(xí)框架的編程范式 030
2.5.1 機(jī)器學(xué)習(xí)框架編程需求 030
2.5.2 機(jī)器學(xué)習(xí)框架編程范式現(xiàn)狀 030
2.5.3 函數(shù)式編程案例 031
2.6 總結(jié) 032
2.7 拓展閱讀 032
第3章 計(jì)算圖 033
3.1 設(shè)計(jì)背景和作用 033
3.2 計(jì)算圖的基本構(gòu)成 034
3.2.1 張量和算子 035
3.2.2 計(jì)算依賴 037
3.2.3 控制流 038
3.2.4 基于鏈?zhǔn)椒▌t計(jì)算梯度 041
3.3 計(jì)算圖的生成 043
3.3.1 靜態(tài)生成 043
3.3.2 動態(tài)生成 046
3.3.3 動態(tài)圖和靜態(tài)圖生成的比較 048
3.3.4 動態(tài)圖與靜態(tài)圖的轉(zhuǎn)換和融合 049
3.4 計(jì)算圖的調(diào)度 051
3.4.1 算子調(diào)度執(zhí)行 051
3.4.2 串行與并行 052
3.4.3 數(shù)據(jù)載入同步與異步機(jī)制 053
3.5 總結(jié) 054
3.6 拓展閱讀 055
進(jìn)階篇
第4章 AI 編譯器和前端技術(shù) 059
4.1 AI編譯器設(shè)計(jì)原理 059
4.2 AI編譯器前端技術(shù)概述 061
4.3 中間表示 062
4.3.1 中間表示的基本概念 062
4.3.2 中間表示的種類 063
4.3.3 機(jī)器學(xué)習(xí)框架的中間表示 065
4.4 自動微分 072
4.4.1 自動微分的基本概念 072
4.4.2 前向與反向自動微分 074
4.4.3 自動微分的實(shí)現(xiàn) 077
4.5 類型系統(tǒng)和靜態(tài)分析 081
4.5.1 類型系統(tǒng)概述 081
4.5.2 靜態(tài)分析概述 082
4.6 常見前端編譯優(yōu)化方法 083
4.6.1 前端編譯優(yōu)化簡介 083
4.6.2 常見編譯優(yōu)化方法介紹及實(shí)現(xiàn) 083
4.7 總結(jié) 085
第5章 AI 編譯器后端和運(yùn)行時 086
5.1 概述 086
5.2 計(jì)算圖優(yōu)化 088
5.2.1 通用硬件優(yōu)化 088
5.2.2 特定硬件優(yōu)化 090
5.3 算子選擇 091
5.3.1 算子選擇的基礎(chǔ)概念 091
5.3.2 算子選擇的過程 095
5.4 內(nèi)存分配 095
5.4.1 Device內(nèi)存概念 096
5.4.2 內(nèi)存分配 096
5.4.3 內(nèi)存復(fù)用 098
5.4.4 常見的內(nèi)存分配優(yōu)化手段 099
5.5 計(jì)算調(diào)度與執(zhí)行 101
5.5.1 單算子調(diào)度 101
5.5.2 計(jì)算圖調(diào)度 102
5.5.3 交互式執(zhí)行 106
5.5.4 下沉式執(zhí)行 110
5.6 算子編譯器 110
5.6.1 算子調(diào)度策略 111
5.6.2 子策略組合優(yōu)化 112
5.6.3 調(diào)度空間算法優(yōu)化 114
5.6.4 芯片指令集適配 115
5.6.5 算子表達(dá)能力 116
5.6.6 相關(guān)編譯優(yōu)化技術(shù) 117
5.7 總結(jié) 117
5.8 拓展閱讀 118
第6章 硬件加速器 119
6.1 概述 119
6.1.1 硬件加速器設(shè)計(jì)的意義 119
6.1.2 硬件加速器設(shè)計(jì)的思路 119
6.2 硬件加速器基本組成原理 120
6.2.1 硬件加速器的架構(gòu) 120
6.2.2 硬件加速器的存儲單元 121
6.2.3 硬件加速器的計(jì)算單元 122
6.2.4 DSA芯片架構(gòu) 124
6.3 加速器基本編程原理 125
6.3.1 硬件加速器的可編程性 125
6.3.2 硬件加速器的多樣化編程方法 128
6.4 加速器實(shí)踐 132
6.4.1 環(huán)境 132
6.4.2 廣義矩陣乘法的樸素實(shí)現(xiàn) 133
6.4.3 提高計(jì)算強(qiáng)度 135
6.4.4 使用共享內(nèi)存緩存復(fù)用數(shù)據(jù) 138
6.4.5 減少寄存器使用 139
6.4.6 隱藏共享內(nèi)存讀取延遲 140
6.4.7 隱藏全局內(nèi)存讀取延遲 141
6.4.8 與cuBLAS對比 142
6.4.9 小結(jié) 143
6.5 總結(jié) 143
6.6 拓展閱讀 144
第7章 數(shù)據(jù)處理 145
7.1 概述 146
7.1.1 易用性 146
7.1.2 高效性 147
7.1.3 保序性 147
7.2 易用性設(shè)計(jì) 147
7.2.1 編程抽象與接口 147
7.2.2 自定義算子支持 151
7.3 高效性設(shè)計(jì) 153
7.3.1 數(shù)據(jù)讀取的高效性 154
7.3.2 數(shù)據(jù)計(jì)算的高效性 157
7.4 保序性設(shè)計(jì) 162
7.5 單機(jī)數(shù)據(jù)處理性能的擴(kuò)展 163
7.5.1 基于異構(gòu)計(jì)算的數(shù)據(jù)預(yù)處理 163
7.5.2 基于分布式的數(shù)據(jù)預(yù)處理 165
7.6 總結(jié) 166
第8章 模型部署 168
8.1 概述 168
8.2 訓(xùn)練模型到推理模型的轉(zhuǎn)換及優(yōu)化 169
8.2.1 模型轉(zhuǎn)換 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 并行計(jì)算 180
8.4.3 算子優(yōu)化 181
8.5 模型的安全保護(hù) 186
8.5.1 概述 186
8.5.2 模型混淆 186
8.6 總結(jié) 188
8.7 拓展閱讀 189
第9章 分布式訓(xùn)練 190
9.1 設(shè)計(jì)概述 190
9.1.1 設(shè)計(jì)動機(jī) 190
9.1.2 系統(tǒng)架構(gòu) 191
9.1.3 用戶益處 192
9.2 實(shí)現(xiàn)方法 192
9.2.1 方法分類 192
9.2.2 數(shù)據(jù)并行 194
9.2.3 模型并行 194
9.2.4 混合并行 197
9.3 流水線并行 197
9.4 機(jī)器學(xué)習(xí)集群架構(gòu) 198
9.5 集合通信 200
9.5.1 常見集合通信算子 200
9.5.2 基于AllReduce的梯度平均算法 203
9.5.3 集合通信算法性能分析 205
9.5.4 利用集合通信優(yōu)化模型訓(xùn)練的實(shí)踐 206
9.5.5 集合通信在數(shù)據(jù)并行的實(shí)踐 207
9.5.6 集合通信在混合并行的實(shí)踐 208
9.6 參數(shù)服務(wù)器 210
9.6.1 系統(tǒng)架構(gòu) 210
9.6.2 異步訓(xùn)練 211
9.6.3 數(shù)據(jù)副本 212
9.7 總結(jié) 212
9.8 拓展閱讀 213
拓展篇
第10章 聯(lián)邦學(xué)習(xí)系統(tǒng) 217
10.1 概述 217
10.1.1 定義 217
10.1.2 應(yīng)用場景 217
10.1.3 部署場景 218
10.1.4 常用框架 218
10.2 橫向聯(lián)邦學(xué)習(xí) 219
10.2.1 云云場景中的橫向聯(lián)邦 219
10.2.2 端云場景中的橫向聯(lián)邦 220
10.3 縱向聯(lián)邦學(xué)習(xí) 222
10.3.1 縱向聯(lián)邦架構(gòu) 222
10.3.2 樣本對齊 223
10.3.3 聯(lián)合訓(xùn)練 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 異構(gòu)場景下的聯(lián)邦學(xué)習(xí) 229
10.5.2 通信效率提升 230
10.5.3 聯(lián)邦生態(tài) 230
10.6 總結(jié) 231
查看全部↓
前言/序言
緣起
我在2020年來到了愛丁堡大學(xué)信息學(xué)院,愛丁堡大學(xué)是AI(Artificial Intelligence,人工智能)研究的發(fā)源地之一,很多學(xué)生慕名而來學(xué)習(xí)機(jī)器學(xué)習(xí)技術(shù)。愛丁堡大學(xué)擁有許多出色的機(jī)器學(xué)習(xí)課程(如自然語言處理、計(jì)算機(jī)視覺、計(jì)算神經(jīng)學(xué)等),同時也擁有一系列關(guān)于計(jì)算機(jī)系統(tǒng)的基礎(chǔ)課程(如操作系統(tǒng)、編程語言、編譯器、計(jì)算機(jī)體系架構(gòu)等)。但是當(dāng)我在教學(xué)的過程中問起學(xué)生:機(jī)器學(xué)習(xí)是如何利用計(jì)算機(jī)系統(tǒng)實(shí)現(xiàn)計(jì)算加速和部署的?許多學(xué)生投來疑惑的眼神。這促使我思考在愛丁堡大學(xué)乃至于其他世界頂尖大學(xué)的教學(xué)大綱中,是不是缺一門銜接機(jī)器學(xué)習(xí)和計(jì)算機(jī)系統(tǒng)的課程。