注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)計(jì)算機(jī)科學(xué)理論與基礎(chǔ)知識大模型動力引擎:PyTorch性能與顯存優(yōu)化手冊

大模型動力引擎:PyTorch性能與顯存優(yōu)化手冊

大模型動力引擎:PyTorch性能與顯存優(yōu)化手冊

定 價:¥89.00

作 者: 張愛玲、楊占略
出版社: 清華大學(xué)出版社
叢編項(xiàng):
標(biāo) 簽: 暫缺

ISBN: 9787302673477 出版時間: 2024-10-01 包裝: 平裝
開本: 16開 頁數(shù): 字?jǐn)?shù):  

內(nèi)容簡介

  本書致力于探索如何在大規(guī)模深度學(xué)習(xí)模型訓(xùn)練中,最大限度地提高性能和優(yōu)化顯存使 用。本書面向深度學(xué)習(xí)從業(yè)者,尤其是希望深入了解并提升模型訓(xùn)練效率的工程師與研究 人員。隨著深度學(xué)習(xí)模型和數(shù)據(jù)規(guī)模的迅速增長,如何高效利用硬件資源,減少訓(xùn)練時間, 成為當(dāng)前AI系統(tǒng)工程的關(guān)鍵挑戰(zhàn)。本書從硬件和軟件的基礎(chǔ)知識入手,逐步引導(dǎo)讀者理解 和掌握PyTorch的優(yōu)化技巧。內(nèi)容涵蓋從單機(jī)到分布式訓(xùn)練,從顯存管理到性能分析的多種 優(yōu)化策略,力求通過豐富的代碼實(shí)例和深入的原理講解,使讀者能夠在實(shí)踐中靈活應(yīng)用這些 方法。

作者簡介

  張愛玲,本科畢業(yè)于清華大學(xué)電子工程系,后在美國伊利諾伊大學(xué)香檳分校獲得計(jì)算機(jī)科學(xué)碩士學(xué)位,是AI系統(tǒng)工程領(lǐng)域的資深技術(shù)專家。作為深度學(xué)習(xí)框架PyTorch核心團(tuán)隊(duì)成員,參與了多個關(guān)鍵組件的研發(fā)與優(yōu)化工作。同時,她作為技術(shù)負(fù)責(zé)人主導(dǎo)了PyTorch/XLA和Taichi編譯器等多個具有廣泛影響力的開源項(xiàng)目。目前在工業(yè)界專注于大規(guī)模語言模型訓(xùn)練的基礎(chǔ)設(shè)施開發(fā)與性能優(yōu)化工作。楊占略,清華大學(xué)本科,哥倫比亞大學(xué)碩士,資深技術(shù)專家。曾先后任職于蘋果、百度、太極圖形公司,分別從事深度學(xué)習(xí)推理框架、訓(xùn)練框架PaddlePaddle以及Taichi編譯器的開發(fā)?,F(xiàn)就職于大疆公司,聚焦于端側(cè)模型優(yōu)化、推理部署相關(guān)工作。

圖書目錄

第1章 歡迎來到這場大模型競賽 1
1.1 模型規(guī)模帶來的挑戰(zhàn) 2
1.2 數(shù)據(jù)規(guī)模帶來的挑戰(zhàn) 3
1.3 模型規(guī)模與數(shù)據(jù)增長的應(yīng)對方法 4
第2章 深度學(xué)習(xí)的硬件知識 6
2.1 CPU與內(nèi)存 7
2.1.1 內(nèi)存 7
2.1.2 CPU 9
2.2 硬盤 11
2.3 GPU 13
2.3.1 CPU的局限性 13
2.3.2 GPU的硬件結(jié)構(gòu) 14
2.3.3 GPU編程模型及其硬件對應(yīng) 18
2.3.4 GPU的關(guān)鍵性能指標(biāo) 19
2.3.5 顯存與內(nèi)存間的數(shù)據(jù)傳輸 19
2.4 分布式系統(tǒng) 22
2.4.1 單機(jī)多卡的通信 22
2.4.2 多機(jī)多卡的通信 24
2.4.3 分布式系統(tǒng)的數(shù)據(jù)存儲 24
第3章 深度學(xué)習(xí)的PyTorch知識 26
3.1 PyTorch 的張量數(shù)據(jù)結(jié)構(gòu) 27
3.1.1 張量的基本屬性及創(chuàng)建 27
3.1.2 訪問張量的數(shù)據(jù) 28
3.1.3 張量的存儲方式 29
3.1.4 張量的視圖 32
3.2 PyTorch中的算子 33
3.2.1 PyTorch的算子庫 33
3.2.2 PyTorch算子的內(nèi)存分配 35
3.2.3 算子的調(diào)用過程 36
3.3 PyTorch的動態(tài)圖機(jī)制 38
3.4 PyTorch的自動微分系統(tǒng) 41
3.4.1 什么是自動微分 41
3.4.2 自動微分的實(shí)現(xiàn) 42
3.4.3 Autograd 擴(kuò)展自定義算子 46
3.5 PyTorch的異步執(zhí)行機(jī)制 47
第4章 定位性能瓶頸的工具和方法 51
4.1 配置性能分析所需的軟硬件環(huán)境 52
4.1.1 減少無關(guān)程序的干擾 52
4.1.2 提升PyTorch 程序的可重復(fù)性 53
4.1.3 控制GPU頻率 58
4.1.4 控制CPU的性能狀態(tài)和工作頻率 59
4.2 精確測量程序運(yùn)行時間 60
4.2.1 計(jì)量CPU程序的運(yùn)行時間 60
4.2.2 程序預(yù)熱和多次運(yùn)行取平均 61
4.2.3 計(jì)量GPU程序的運(yùn)行時間 62
4.2.4 精確計(jì)量GPU的運(yùn)行時間 63
4.3 PyTorch性能分析器 64
4.3.1 性能分析 65
4.3.2 顯存分析 66
4.3.3 可視化性能圖譜 67
4.3.4 如何定位性能瓶頸 67
4.4 GPU 專業(yè)分析工具 71
4.4.1 Nsight Systems 71
4.4.2 Nsight Compute 71
4.5 CPU 性能分析工具 75
4.5.1 Py-Spy 75
4.5.2 strace 77
4.6 本章小結(jié) 78
第5章 數(shù)據(jù)加載和預(yù)處理專題 80
5.1 數(shù)據(jù)接入的準(zhǔn)備階段 81
5.2 數(shù)據(jù)集的獲取和預(yù)處理 82
5.2.1 獲取原始數(shù)據(jù) 82
5.2.2 原始數(shù)據(jù)的清洗 82
5.2.3 數(shù)據(jù)的離線預(yù)處理 84
5.2.4 數(shù)據(jù)的存儲 86
5.2.5 PyTorch與第三方庫的交互 88
5.3 數(shù)據(jù)集的加載和使用 89
5.3.1 PyTorch 的 Dataset 封裝 90
5.3.2 PyTorch 的 DataLoader 封裝 92
5.4 數(shù)據(jù)加載性能分析 93
5.4.1 充分利用CPU的多核資源 94
5.4.2 優(yōu)化CPU上的計(jì)算負(fù)載 95
5.4.3 減少不必要的CPU線程 96
5.4.4 提升磁盤效率 98
5.5 本章小結(jié) 99
第6章 單卡性能優(yōu)化專題 100
6.1 提高數(shù)據(jù)任務(wù)的并行度 101
6.1.1 增加數(shù)據(jù)預(yù)處理的并行度 101
6.1.2 使用異步接口提交數(shù)據(jù)傳輸任務(wù) 104
6.1.3 數(shù)據(jù)傳輸與GPU計(jì)算任務(wù)并行 106
6.2 提高GPU計(jì)算任務(wù)的效率 109
6.2.1 增大BatchSize 109
6.2.2 使用融合算子 113
6.3 減少CPU和GPU間的同步 116
6.4 降低程序中的額外開銷 118
6.4.1 避免張量的創(chuàng)建開銷 119
6.4.2 關(guān)閉不必要的梯度計(jì)算 121
6.5 有代價的性能優(yōu)化 123
6.5.1 使用低精度數(shù)據(jù)進(jìn)行設(shè)備間拷貝 123
6.5.2 使用性能特化的優(yōu)化器實(shí)現(xiàn) 125
6.6 本章小結(jié) 128
第7章 單卡顯存優(yōu)化專題 129
7.1 PyTorch的顯存管理機(jī)制 130
7.2 顯存的分析方法 131
7.2.1 使用PyTorch API查詢當(dāng)前顯存狀態(tài) 132
7.2.2 使用PyTorch的顯存分析器 133
7.3 訓(xùn)練過程中的顯存占用 135
7.4 通用顯存復(fù)用方法 139
7.4.1 使用原位操作算子 139
7.4.2 使用共享存儲的操作 141
7.5 有代價的顯存優(yōu)化技巧 142
7.5.1 跨批次梯度累加 142
7.5.2 即時重算前向張量 144
7.5.3 將GPU顯存下放至CPU內(nèi)存 145
7.5.4 降低優(yōu)化器的顯存占用 147
7.6 優(yōu)化Python代碼以減少顯存占用 149
7.6.1 Python 垃圾回收機(jī)制 150
7.6.2 避免出現(xiàn)循環(huán)依賴 150
7.6.3 謹(jǐn)慎使用全局作用域 152
7.7 本章小結(jié) 153
第8章 分布式訓(xùn)練專題 155
8.1 分布式策略概述 157
8.2 集合通信原語 158
8.3 應(yīng)對數(shù)據(jù)增長的并行策略 161
8.3.1 數(shù)據(jù)并行策略 161
8.3.2 手動實(shí)現(xiàn)數(shù)據(jù)并行算法 162
8.3.3 PyTorch的DDP封裝 165
8.3.4 數(shù)據(jù)并行的性價比 167
8.3.5 其他數(shù)據(jù)維度的切分 169
8.4 應(yīng)對模型增長的并行策略 169
8.4.1 靜態(tài)顯存切分 170
8.4.2 動態(tài)顯存切分 172
8.5 本章小結(jié) 176
第9章 高級優(yōu)化方法專題 178
9.1 自動混合精度訓(xùn)練 179
9.1.1 浮點(diǎn)數(shù)的表示方法 179
9.1.2 使用低精度數(shù)據(jù)類型的優(yōu)缺點(diǎn) 181
9.1.3 PyTorch 自動混合精度訓(xùn)練 182
9.2 自定義高性能算子 185
9.2.1 自定義算子的封裝流程 185
9.2.2 自定義算子的后端代碼實(shí)現(xiàn) 186
9.2.3 自定義算子導(dǎo)入Python 188
9.2.4 自定義算子導(dǎo)入PyTorch 189
9.2.5 在Python中使用自定義算子 190
9.3 基于計(jì)算圖的性能優(yōu)化 191
9.3.1 torch.compile的使用方法 192
9.3.2 計(jì)算圖的提取 194
9.3.3 圖的優(yōu)化和后端代碼生成 196
9.4 本章小結(jié) 198
第10章 GPT-2優(yōu)化全流程 199
10.1 GPT模型結(jié)構(gòu)簡介 200
10.2 實(shí)驗(yàn)環(huán)境與機(jī)器配置 203
10.3 顯存優(yōu)化 203
10.3.1 基準(zhǔn)模型 204
10.3.2 使用跨批次梯度累加 204
10.3.3 開啟即時重算前向張量 205
10.3.4 使用顯存友好的優(yōu)化器模式 205
10.3.5 使用分布式方法降低顯存占用—FSDP 206
10.3.6 顯存優(yōu)化小結(jié) 207
10.4 性能優(yōu)化 208
10.4.1 基準(zhǔn)模型 209
10.4.2 增加 BatchSize 209
10.4.3 增加數(shù)據(jù)預(yù)處理的并行度 210
10.4.4 使用異步接口完成數(shù)據(jù)傳輸 211
10.4.5 使用計(jì)算圖優(yōu)化 211
10.4.6 使用float16混合精度訓(xùn)練 212
10.4.7 (可選)使用自定義算子 213
10.4.8 使用單機(jī)多卡加速訓(xùn)練 213
10.4.9 使用多機(jī)多卡加速訓(xùn)練 214
10.4.10 性能優(yōu)化小結(jié) 215
結(jié)語 216

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號