新書推薦:
《
南方谈话:邓小平在1992
》
售價:NT$
367.0
《
纷纭万端 : 近代中国的思想与社会
》
售價:NT$
500.0
《
中国古代文体形态研究(第四版)(中华当代学术著作辑要)
》
售價:NT$
765.0
《
朋党之争与北宋政治·大学问
》
售價:NT$
454.0
《
甲骨文丛书·波斯的中古时代(1040-1797年)
》
售價:NT$
403.0
《
以爱为名的支配
》
售價:NT$
286.0
《
台风天(大吴作品,每一种生活都有被看见的意义)
》
售價:NT$
245.0
《
打好你手里的牌(斯多葛主义+现代认知疗法,提升当代人的心理韧性!)
》
售價:NT$
301.0
編輯推薦:
降低机器学习的时间成本可以缩短模型训练的等待时间,加快模型更新周期。分布式机器学习使机器学习从业者能够将模型训练和推理时间缩短几个数量级。在本书的帮助下,你应该能够将你的Python开发知识用于启动和运行分布式机器学习的实现,包括多节点机器学习系统
內容簡介:
《Python分布式机器学习》本书详细阐述了与分布式机器学习相关的基本解决方案,主要包括拆分输入数据、参数服务器和All-Reduce、构建数据并行训练和服务管道、瓶颈和解决方案、拆分模型、管道输入和层拆分、实现模型并行训练和服务工作流程、实现更高的吞吐量和更低的延迟、数据并行和模型并行的混合、联合学习和边缘设备、弹性模型训练和服务、进一步加速的高级技术等内容。此外,本书还提供了相应的示例、代码,以帮助读者进一步理解相关方案的实现过程。 本书适合作为高等院校计算机及相关专业的教材和教学参考书,也可作为相关开发人员的自学用书和参考手册。
關於作者:
冠华·王是加州大学伯克利分校 RISELab 的计算机科学博士(导师为Ion Stoica教授)。他的研究主要集中在机器学习系统领域,包括快速集体通信、高效并行模型训练和实时模型服务等。他的研究得到了学术界和工业界的广泛关注。他曾受邀在大学(麻省理工学院、斯坦福大学、卡内基梅隆大学和普林斯顿大学)和大型科技公司(Facebook/Meta和微软)进行演讲。他在香港科技大学获得硕士学位,在中国东南大学获得学士学位。他在无线网络方面还有一些很好的研究。他喜欢踢足球,并且曾在加州湾区跑过多次半程马拉松。
目錄 :
第1篇 数 据 并 行
第1章 拆分输入数据 3
1.1 单节点训练太慢 3
1.1.1 数据加载带宽和模型训练带宽之间的不匹配 5
1.1.2 流行数据集的单节点训练时间 5
1.1.3 使用数据并行加速训练过程 7
1.2 数据并行 8
1.2.1 随机梯度下降 11
1.2.2 模型同步 12
1.3 超参数调优 14
1.3.1 全局批次大小 14
1.3.2 学习率调整 14
1.3.3 模型同步方案 15
1.4 小结 16
第2章 参数服务器和All-Reduce 17
2.1 技术要求 18
2.2 参数服务器架构 18
2.2.1 参数服务器架构中的通信瓶颈 19
2.2.2 在参数服务器之间分片模型 21
2.3 实现参数服务器 23
2.3.1 定义模型层 23
2.3.2 定义参数服务器 24
2.3.3 定义工作节点 25
2.3.4 在参数服务器和工作节点之间传递数据 26
2.4 参数服务器的问题 27
2.4.1 情况1—更多参数服务器 28
2.4.2 情况2—更多工作节点 28
2.4.3 参数服务器架构为从业者带来了很高的编码复杂度 28
2.5 All-Reduce架构 29
2.5.1 Reduce 29
2.5.2 All-Reduce 30
2.5.3 Ring All-Reduce 31
2.6 集体通信 33
2.6.1 Broadcast 33
2.6.2 Gather 34
2.6.3 All-Gather 35
2.7 小结 36
第3章 构建数据并行训练和服务管道 37
3.1 技术要求 37
3.2 数据并行训练管道概述 38
3.2.1 输入预处理 39
3.2.2 输入数据分区 40
3.2.3 数据加载 41
3.2.4 数据训练 41
3.2.5 模型同步 42
3.2.6 模型更新 42
3.3 单机多GPU和多机多GPU 42
3.3.1 单机多GPU 43
3.3.2 多机多GPU 46
3.4 检查点和容错 52
3.4.1 模型检查点 52
3.4.2 加载模型检查点 53
3.5 模型评估和超参数调优 55
3.6 数据并行中的模型服务 57
3.7 小结 59
第4章 瓶颈和解决方案 61
4.1 数据并行训练中的通信瓶颈 62
4.1.1 通信工作负载分析 62
4.1.2 参数服务器架构 62
4.1.3 All-Reduce架构 65
4.1.4 通信方案的效率问题 68
4.2 利用空闲链路和主机资源 69
4.2.1 Tree All-Reduce 69
4.2.2 通过PCIe和NVLink进行混合数据传输 75
4.3 设备内存瓶颈 76
4.4 重新计算和量化 77
4.4.1 重新计算 77
4.4.2 量化 81
4.5 小结 82
第2篇 模 型 并 行
第5章 拆分模型 85
5.1 技术要求 86
5.2 单节点训练错误—内存不足 86
5.2.1 在单个GPU上微调BERT 86
5.2.2 尝试将一个巨型模型打包到单个GPU中 88
5.3 ELMo、BERT和GPT 90
5.3.1 基本概念 91
5.3.2 循环神经网络 94
5.3.3 ELMo 97
5.3.4 BERT 99
5.3.5 GPT 101
5.4 预训练和微调 102
5.5 的硬件 103
5.5.1 P100、V100和DGX-1 103
5.5.2 NVLink 104
5.5.3 A100和DGX-2 105
5.5.4 NVSwitch 105
5.6 小结 105
第6章 管道输入和层拆分 107
6.1 普通模型并行的低效问题 108
6.1.1 前向传播 109
6.1.2 反向传播 110
6.1.3 前向传播和反向传播之间的GPU空闲时间 111
6.2 管道输入 114
6.3 管道并行的优缺点 118
6.3.1 管道并行的优势 118
6.3.2 管道并行的缺点 118
6.4 层拆分 119
6.5 关于层内模型并行的注意事项 121
6.6 小结 122
第7章 实现模型并行训练和服务工作流程 123
7.1 技术要求 124
7.2 整个模型并行管道概述 124
7.2.1 模型并行训练概述 124
7.2.2 实现模型并行训练管道 125
7.2.3 指定GPU之间的通信协议 127
7.2.4 模型并行服务 131
7.3 微调Transformer 134
7.4 模型并行中的超参数调优 136
7.4.1 平衡GPU之间的工作负载 136
7.4.2 启用/禁用管道并行 136
7.5 NLP模型服务 137
7.6 小结 138
第8章 实现更高的吞吐量和更低的延迟 139
8.1 技术要求 140
8.2 冻结层 140
8.2.1 在前向传播期间冻结层 141
8.2.2 在前向传播期间降低计算成本 144
8.2.3 在反向传播期间冻结层 145
8.3 探索内存和存储资源 147
8.4 了解模型分解和蒸馏 150
8.4.1 模型分解 151
8.4.2 模型蒸馏 153
8.5 减少硬件中的位数 153
8.6 小结 154
第3篇 高级并行范式
第9章 数据并行和模型并行的混合 157
9.1 技术要求 158
9.2 Megatron-LM用例研究 158
9.2.1 模型并行和层拆分 159
9.2.2 按行试错法 161
9.2.3 按列试错法 165
9.2.4 跨机数据并行 168
9.3 Megatron-LM的实现 169
9.4 Mesh-TensorFlow用例研究 171
9.5 Mesh-TensorFlow的实现 172
9.6 Megatron-LM和Mesh-TensorFlow的比较 172
9.7 小结 173
第10章 联合学习和边缘设备 175
10.1 技术要求 176
10.2 共享知识而不共享数据 176
10.2.1 传统数据并行模型训练范式 176
10.2.2 工作节点之间没有输入共享 178
10.2.3 在工作节点之间通信以同步梯度 179
10.3 用例研究:TensorFlow Federated 183
10.4 使用TinyML运行边缘设备 185
10.5 用例研究:TensorFlow Lite 185
10.6 小结 186
內容試閱 :
降低机器学习的时间成本可以缩短模型训练的等待时间,加快模型更新周期。分布式机器学习使机器学习从业者能够将模型训练和推理时间缩短几个数量级。在本书的帮助下,你应该能够将你的Python开发知识用于启动和运行分布式机器学习的实现,包括多节点机器学习系统。
本书将首先探索分布式系统如何在机器学习领域工作,以及分布式机器学习如何应用于的深度学习模型。
随着你的进步,你将了解如何使用分布式系统来提高机器学习模型的训练和服务速度。在优化本地集群或云环境中的并行模型训练和服务管道之前,你还需要掌握应用数据并行和模型并行的方法。
到学习本书结束时,你将获得构建和部署高效数据处理管道所需的知识和技能,用于以分布式方式进行机器学习模型训练和推理。
本书读者
本书适用于学术界和工业界的数据科学家、机器学习工程师和机器学习从业者。本书假设你对机器学习概念和Python编程的工作知识有基本的了解。如果你拥有使用TensorFlow或PyTorch实现机器学习/深度学习模型的经验,则对理解本书内容非常有益。
此外,如果你对使用分布式系统来提高机器学习模型训练和服务速度感兴趣,则会发现这本书很有用。
内容介绍
本书内容分为3篇,共12章。具体内容如下。
第1篇为“数据并行”,包括第1~4章。
第1章“拆分输入数据”,介绍如何在输入数据维度上分配机器学习训练或服务工作负载,这称为数据并行。
第2章“参数服务器和All-Reduce”,描述数据并行训练过程中被广泛采用的两种模型同步方案。
第3章“构建数据并行训练和服务管道”,说明如何实现数据并行训练和服务工作流程。
第4章“瓶颈和解决方案”,描述如何使用一些先进的技术来提高数据并行性能,如更有效的通信协议、减少内存占用等。
第2篇为“模型并行”,包括第5~8章。
第5章“拆分模型”,介绍普通模型并行方法。
第6章“管道输入和层拆分”,展示如何通过管道并行提高系统效率。
第7章“实现模型并行训练和服务工作流程”,详细讨论如何实现模型并行训练和服务。
第8章“实现更高的吞吐量和更低的延迟”,详细介绍在模型并行中减少计算和内存消耗的高级方案。
第3篇为“高级并行范式”,包括第9~12章。
第9章“数据并行和模型并行的混合”,探讨如何将数据并行和模型并行结合在一起,作为一种先进的并行模型训练/服务方案。
第10章“联合学习和边缘设备”,讨论联合学习的概念以及边缘设备如何参与这个过程。
第11章“弹性模型训练和服务”,描述一种更有效的方案,可以动态更改使用的加速器数量。
第12章“进一步加速的高级技术”,探讨一些比较有用的工具,如性能分析和调试工具、作业迁移和多路复用等。
充分利用本书
你需要在系统上成功安装PyTorch/TensorFlow。对于分布式工作负载,建议你手头上至少有4个GPU。
我们假设你的操作系统为Linux/Ubuntu。假设你使用NVIDIA GPU并且安装了正确的NVIDIA驱动程序。此外,我们还假设你具有一般机器学习的基础知识,并且熟悉流行的深度学习模型。
本书涵盖的软硬件和操作系统需求以及专业领域知识需求如表P.1所示。
表P.1 本书涵盖的软硬件和操作系统需求以及专业领域知识需求
本书涵盖的软硬件和操作系统 专业领域知识需求
PyTorch 机器学习概念(如损失函数和偏差与方差均衡)
TensorFlow 深度学习概念(前向传播和反向传播)
Python 深度学习模型(卷积神经网络、强化学习、循环神经网络和Transformer等)
CUDA/C
NV性能分析器/Nsight
Linux
如果你使用本书的数字版本,则建议你自己输入代码或从本书的GitHub存储库访问代码(下面将提供链接)。这样做将帮助你避免与复制和粘贴代码相关的任何潜在错误。
下载示例代码文件
本书随附的代码可以在GitHub存储库中找到,其网址如下:
https://github.com/PacktPublishing/Distributed-Machine-Learning-with-Python
如果代码有更新,那么将在该GitHub存储库中直接给出。
下载彩色图像
我们还提供一个PDF文件,其中包含本书中使用的屏幕截图/图表的彩色图像。可通过以下地址下载:
https://static.packt-cdn.com/downloads/9781801815697_ColorImages.pdf
本书约定
本书中使用了许多文本约定。
(1)有关代码块的设置如下。
# 初始化处理组
adaptdl.torch.init_process_group(”MPI”)
# 将模型包装到 adaptdl 版本
model = adaptdl.torch.AdaptiveDataParallel(model, optimizer)
# 将数据加载器包装到 adaptdl 版本
dataloader = adaptdl.torch.AdaptiveDataLoader(dataset, batch_size = 128)
(2)任何命令行输入或输出都采用如下所示的粗体代码形式:
batch 58 training :: loss 0.5455576777458191
batch 58 training :: loss 0.7072545886039734
batch 58 training :: loss 0.953201174736023
batch 58 training :: loss 0.512895941734314
Checkpointing model 2 done.
Training Done!
(3)术语或重要单词采用中英文对照形式,在括号内保留其英文原文。示例如下:
在数据并行训练中,除了单节点训练中包含的3个步骤(即数据加载、训练和模型更新),这里还有一个额外的步骤,称为模型同步(model synchronization)。模型同步与收集和聚合不同节点生成的局部梯度有关。
(4)对于界面词汇或专有名词将保留其英文原文,在括号内添加其中文译名。示例如下:
然后,监视器可以实时打印出GPU资源利用率,包括gpuUtil(计算利用率)和memUtil(内存利用率)等。
(5)本书还使用了以下两个图标。
表示警告或重要的注意事项。
表示提示或小技巧。