分布式训练

Azure Databricks 建议尽量在一台计算机上训练神经网络;由于通信开销,用于训练和推理的分布式代码比单计算机代码更复杂,且速度更慢。 但是,如果模型或数据太大,以致无法装入一台计算机的内存中,则应该考虑使用分布式训练和推理。 对于这些工作负载,Databricks Runtime ML 包括 TorchDistributor、DeepSpeed 分发服务器和 Ray 包。

Azure Databricks 还通过 pyspark.ml.connect 模块为 Spark 机器学习模型提供分布式训练,请参阅使用 pyspark.ml 连接在 Databricks Connect 上训练 Spark 机器学习模型

注意

由于节点间网络性能低,Databricks 不建议使用 NC 系列 VM 运行多节点分布式训练。 而是,使用一个多 GPU 节点,或使用不同的 GPU VM 大小,例如支持加速网络的 NCasT4_v3 系列

DeepSpeed 分发服务器

DeepSpeed 分发服务器基于 TorchDistributor 构建,对于具有需要更高计算能力但受内存约束限制的模型的客户,它是推荐的解决方案。 DeepSpeed 是 Microsoft 开发的开放源代码库,可提供优化的内存使用率、降低的通信开销和高级管道并行度。 详细了解使用 DeepSpeed 分发服务器进行分布式训练

TorchDistributor

TorchDistributor 是 PySpark 中的一个开源模块,可帮助用户在其 Spark 群集上使用 PyTorch 进行分布式训练,因此它允许你将 PyTorch 训练作业作为 Spark 作业启动。 在后台,它会初始化环境,并会初始化辅助角色之间的信道,同时利用 CLI 命令 torch.distributed.run 在工作器节点之间运行分布式训练。 详细了解使用 TorchDistributor 进行的分布式训练

Ray

Ray 是一个开放源代码框架,专门用于缩放 ML 工作流和 AI 应用程序的并行计算处理。 请参阅“Azure Databricks 上的 Ray 是什么?”。