降低机器学习的时间成本可以缩短模型训练的等待时间,加快模型更新周期。分布式机器学习使机器学习从业者能够将模型训练和推理时间缩短几个数量级。在本书的帮助下,你应该能够将你的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)本书还使用了以下两个图标。
表示警告或重要的注意事项。
表示提示或小技巧。