作 者:柳浩 著
定 價:139
出 版 社:電子工業出版社
出版日期:2023年07月01日
頁 數:592
裝 幀:平裝
ISBN:9787121458149
"AI的黃金時代可能纔剛剛開啟,各行各業的生產力革命也會相繼產生。OpenAI已經占據了領先位置,接下來的AI賽道會風起雲湧,中國企業勢必會在其中扮演極其重要的角色,也會在深度學習棧和基礎設施領域奮起直追。“彎道超車”需要建立在技術沉澱和產品實力之上,我們隻有切實地扎根於現有的分布式機器學習技術體繫,並對其進行深耕,纔能為更好的創新和發展打下基礎。《分布式機器學習——繫統、工程與實戰》是作者在分布式機器學習領域學習和應用過程中的總結和思考,能起到拋磚引玉的作用,帶領大家走入/熟悉分布式機等
●第1篇 分布式基礎
第1章 分布式機器學習2
1.1 機器學習概念2
1.2 機器學習的特點3
1.3 分布式訓練的必要性3
1.4 分布式機器學習研究領域6
1.4.1 分布式機器學習的目標6
1.4.2 分布式機器學習的分類6
1.5 從模型角度看如何並行8
1.5.1 並行方式8
1.5.2 數據並行9
1.5.3 模型並行10
1.5.4 流水線並行11
1.5.5 比對12
1.6 從訓練並發角度看如何並行12
1.6.1 參數分布和通信拓撲13
1.6.2 模型一致性和通信模式14
1.6.3 訓練分布19
1.7 分布式機器學習編程接口19
1.7.1 手動同步更新20
1.7.2 指定任務和位置20
1.7.3 猴子補丁優化器21
1.7.4 Python作用域21
1.8 PyTorch分布式22
1.8.1 歷史脈絡22
1.8.2 基本概念23
1.9 總結24
第2章 集合通信26
2.1 通信模式26
2.2 點對點通信26
2.3 集合通信28
2.3.1 Broadcast29
2.3.2 Scatter29
2.3.3 Gather30
2.3.4 All-Gather30
2.3.5 All-to-All30
2.3.6 Reduce31
2.3.7 All-Reduce31
2.3.8 Reduce-Scatter32
2.4 MPI_AllReduce32
2.5 Ring All-Reduce33
2.5.1 特點34
2.5.2 策略34
2.5.3 結構35
2.5.4 Reduce-Scatter35
2.5.5 All-Gather38
2.5.6 通信性能40
2.5.7 區別40
第3章 參數服務器之PS-Lite41
3.1 參數服務器41
3.1.1 概念41
3.1.2 歷史淵源42
3.1.3 問題43
3.2 基礎模塊 toffice44
3.2.1 基本邏輯44
3.2.2 繫統啟動45
3.2.3 功能實現47
3.3 通信模塊Van51
3.3.1 功能概述51
3.3.2 定義51
3.3.3 初始化52
3.3.4 接收消息53
3.4 代理人Customer59
3.4.1 基本思路59
3.4.2 基礎類61
3.4.3 Customer62
3.4.4 功能函數66
3.5 應用節點實現67
3.5.1 SimpleApp67
3.5.2 KVServer68
3.5.3 KVWorker68
3.5.4 總結70
第2篇 數據並行73
第4章 PyTorch DataParallel74
4.1 綜述74
4.2 示例76
4.3 定義77
4.4 前向傳播78
4.5 計算損失87
4.6 反向傳播88
4.7 總結91
第5章 PyTorch DDP的基礎架構93
5.1 DDP總述93
5.1.1 DDP的運行邏輯93
5.1.2 DDP的使用94
5.2 設計理念97
5.2.1 繫統設計97
5.2.2 梯度歸約98
5.2.3 實施99
5.3 基礎概念101
5.3.1 初始化方法101
5.3.2 Store類102
5.3.3 TCPStore類104
5.3.4 進程組概念107
5.3.5 構建進程組109
5.4 架構和初始化111
5.4.1 架構與迭代流程111
5.4.2 初始化DDP114
第6章 PyTorch DDP的動態邏輯122
6.1 Reducer類122
6.1.1 調用Reducer類122
6.1.2 定義Reducer類122
6.1.3 Bucket類124
6.1.4 BucketReplica類126
6.1.5 查詢數據結構128
6.1.6 梯度累積相關成員變量131
6.1.7 初始化135
6.1.8 靜態圖141
6.1.9 Join操作142
6.2 前向/反向傳播143
6.2.1 前向傳播143
6.2.2 反向傳播149
第7章 Horovod161
7.1 從使用者角度切入161
7.1.1 機制概述161
7.1.2 示例代碼162
7.1.3 運行邏輯163
7.2 horovodrun167
7.2.1 入口點167
7.2.2 運行訓練Job168
7.2.3 Gloo實現169
7.2.4 MPI實現174
7.2.5 總結174
7.3 網絡基礎和Driver174
7.3.1 總體架構175
7.3.2 基礎網絡服務176
7.3.3 Driver服務177
7.3.4 Task服務178
7.3.5 總結180
7.4 DistributedOptimizer181
7.4.1 問題點181
7.4.2 解決思路182
7.4.3 TensorFlow 1.x183
7.5 融合框架191
7.5.1 總體架構191
7.5.2 算子類體繫192
7.5.3 後臺線程194
7.5.4 執行線程195
7.5.5 總結196
7.6 後臺線程架構198
7.6.1 設計要點198
7.6.2 總體代碼201
7.6.3 業務邏輯202
第3篇 流水線並行
第8章 GPipe210
8.1 流水線基本實現210
8.1.1 流水線並行210
8.1.2 GPipe概述211
8.1.3 計算內存213
8.1.4 計算算力213
8.1.5 自動並行214
8.2 梯度累積218
8.2.1 基本概念218
8.2.2 PyTorch實現219
8.2.3 GPipe實現223
8.3 Checkpointing225
8.3.1 問題225
8.3.2 解決方案225
8.3.3 OpenAI226
8.3.4 PyTorch實現228
8.3.5 GPipe實現240
第9章 PyTorch流水線並行243
9.1 如何劃分模型243
9.1.1 使用方法244
9.1.2 自動平衡245
9.1.3 模型劃分247
9.2 切分數據和Runtime繫統249
9.2.1 分發小批量249
9.2.2 Runtime250
9.3 前向計算255
9.3.1 設計255
9.3.2 執行順序260
9.4 計算依賴265
9.4.1 反向傳播依賴266
9.4.2 前向傳播依賴270
9.5 並行計算274
9.5.1 總體架構274
9.5.2 並行復制和計算276
9.5.3 重計算278
第10章 PipeDream之基礎架構280
10.1 總體思路280
10.1.1 目前問題280
10.1.2 1F1B策略概述282
10.1.3 流水線方案283
10.2 profile階段285
10.3 計算分區階段288
10.3.1 構建圖288
10.3.2 構建反鏈289
10.3.3 計算分區295
10.3.4 分析分區302
10.3.5 輸出305
10.4 轉換模型階段305
10.4.1 分離子圖306
10.4.2 轉換模型307
10.4.3 融合模型308
第11章 PipeDream之動態邏輯312
11.1 Runtime引擎312
11.1.1 功能312
11.1.2 總體邏輯313
11.1.3 加載模型314
11.1.4 實現314
11.2 通信模塊323
11.2.1 類定義324
11.2.2 構建325
●
●11.2.3 發送和接收331
●
●……
本書主要講解分布式機器學習算法和開源框架,讀者既可以從宏觀的設計上了解分布式機器學習的概念和理論,也可以深入核心技術的細節設計中,對分布式機器學習形成深刻而直觀的認識,做到學以致用。
本書共分為5篇,第1篇是分布式基礎,首先介紹了分布式機器學習的概念、基礎設施,以及機器學習並行化技術、框架和軟件繫統,然後對集合通信和參數服務器PS-Lite進行了介紹。第2篇是數據並行,以PyTorch和Horovod為主對數據並行進行分析,讀者可以了解在具體工程領域內實現數據並行有哪些挑戰和解決方案。第3篇是流水線並行,講解了除模型劃分之外,還通過引入額外的流水線來提高效率,以GPipe / PyTorch / PipeDream為例進行分析。第4篇是模型並行,首先對NVIDIA Megatron進行分析,講解如何進行層內分割模型並行,然後講解PyTorch 如何支持模型並行,最後介紹分布式優等
柳浩 著
柳浩,網名“羅西的思考”,浙江大學碩士。曾就職於多家世界500強企業,主導過多個大型項目,現就職於某新能源車企。技術棧廣博,有豐富的各種大型軟件開發和繫統架構經驗,對機器學習框架、微服務框架、大數據引擎、NoSQL、消息隊列、分布式追蹤繫統、可觀測繫統、可靠性設計、移動開發方案和源碼有著深刻的理解和認識。