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

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

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

定 價(jià):¥89.00

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

購(gòu)買(mǎi)這本書(shū)可以去


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

內(nèi)容簡(jiǎn)介

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

作者簡(jiǎn)介

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

圖書(shū)目錄

第1章 歡迎來(lái)到這場(chǎng)大模型競(jìng)賽 1
1.1 模型規(guī)模帶來(lái)的挑戰(zhàn) 2
1.2 數(shù)據(jù)規(guī)模帶來(lái)的挑戰(zhàn) 3
1.3 模型規(guī)模與數(shù)據(jù)增長(zhǎng)的應(yīng)對(duì)方法 4
第2章 深度學(xué)習(xí)的硬件知識(shí) 6
2.1 CPU與內(nèi)存 7
2.1.1 內(nèi)存 7
2.1.2 CPU 9
2.2 硬盤(pán) 11
2.3 GPU 13
2.3.1 CPU的局限性 13
2.3.2 GPU的硬件結(jié)構(gòu) 14
2.3.3 GPU編程模型及其硬件對(duì)應(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ù)存儲(chǔ) 24
第3章 深度學(xué)習(xí)的PyTorch知識(shí) 26
3.1 PyTorch 的張量數(shù)據(jù)結(jié)構(gòu) 27
3.1.1 張量的基本屬性及創(chuàng)建 27
3.1.2 訪問(wèn)張量的數(shù)據(jù) 28
3.1.3 張量的存儲(chǔ)方式 29
3.1.4 張量的視圖 32
3.2 PyTorch中的算子 33
3.2.1 PyTorch的算子庫(kù) 33
3.2.2 PyTorch算子的內(nèi)存分配 35
3.2.3 算子的調(diào)用過(guò)程 36
3.3 PyTorch的動(dòng)態(tài)圖機(jī)制 38
3.4 PyTorch的自動(dòng)微分系統(tǒng) 41
3.4.1 什么是自動(dòng)微分 41
3.4.2 自動(dòng)微分的實(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 減少無(wú)關(guān)程序的干擾 52
4.1.2 提升PyTorch 程序的可重復(fù)性 53
4.1.3 控制GPU頻率 58
4.1.4 控制CPU的性能狀態(tài)和工作頻率 59
4.2 精確測(cè)量程序運(yùn)行時(shí)間 60
4.2.1 計(jì)量CPU程序的運(yùn)行時(shí)間 60
4.2.2 程序預(yù)熱和多次運(yùn)行取平均 61
4.2.3 計(jì)量GPU程序的運(yùn)行時(shí)間 62
4.2.4 精確計(jì)量GPU的運(yùn)行時(shí)間 63
4.3 PyTorch性能分析器 64
4.3.1 性能分析 65
4.3.2 顯存分析 66
4.3.3 可視化性能圖譜 67
4.3.4 如何定位性能瓶頸 67
4.4 GPU 專(zhuān)業(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ù)處理專(zhuān)題 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ù)的存儲(chǔ) 86
5.2.5 PyTorch與第三方庫(kù)的交互 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 提升磁盤(pán)效率 98
5.5 本章小結(jié) 99
第6章 單卡性能優(yōu)化專(zhuān)題 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 降低程序中的額外開(kāi)銷(xiāo) 118
6.4.1 避免張量的創(chuàng)建開(kāi)銷(xiāo) 119
6.4.2 關(guān)閉不必要的梯度計(jì)算 121
6.5 有代價(jià)的性能優(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)化專(zhuān)題 129
7.1 PyTorch的顯存管理機(jī)制 130
7.2 顯存的分析方法 131
7.2.1 使用PyTorch API查詢(xún)當(dāng)前顯存狀態(tài) 132
7.2.2 使用PyTorch的顯存分析器 133
7.3 訓(xùn)練過(guò)程中的顯存占用 135
7.4 通用顯存復(fù)用方法 139
7.4.1 使用原位操作算子 139
7.4.2 使用共享存儲(chǔ)的操作 141
7.5 有代價(jià)的顯存優(yōu)化技巧 142
7.5.1 跨批次梯度累加 142
7.5.2 即時(shí)重算前向張量 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)依賴(lài) 150
7.6.3 謹(jǐn)慎使用全局作用域 152
7.7 本章小結(jié) 153
第8章 分布式訓(xùn)練專(zhuān)題 155
8.1 分布式策略概述 157
8.2 集合通信原語(yǔ) 158
8.3 應(yīng)對(duì)數(shù)據(jù)增長(zhǎng)的并行策略 161
8.3.1 數(shù)據(jù)并行策略 161
8.3.2 手動(dòng)實(shí)現(xiàn)數(shù)據(jù)并行算法 162
8.3.3 PyTorch的DDP封裝 165
8.3.4 數(shù)據(jù)并行的性?xún)r(jià)比 167
8.3.5 其他數(shù)據(jù)維度的切分 169
8.4 應(yīng)對(duì)模型增長(zhǎng)的并行策略 169
8.4.1 靜態(tài)顯存切分 170
8.4.2 動(dòng)態(tài)顯存切分 172
8.5 本章小結(jié) 176
第9章 高級(jí)優(yōu)化方法專(zhuān)題 178
9.1 自動(dòng)混合精度訓(xùn)練 179
9.1.1 浮點(diǎn)數(shù)的表示方法 179
9.1.2 使用低精度數(shù)據(jù)類(lèi)型的優(yōu)缺點(diǎn) 181
9.1.3 PyTorch 自動(dòng)混合精度訓(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)簡(jiǎn)介 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 開(kāi)啟即時(shí)重算前向張量 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é)語(yǔ) 216

本目錄推薦

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