分布式训练
Azure Databricks 建议尽量在一台计算机上训练神经网络;由于通信开销,用于训练和推理的分布式代码比单计算机代码更复杂,且速度更慢。 但是,如果模型或数据太大,以致无法装入一台计算机的内存中,则应该考虑使用分布式训练和推理。 对于这些工作负荷,Databricks Runtime ML 包括 TorchDistributor、Horovod 和 spark-tensorflow-distributo 包。
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 进行的分布式训练。
spark-tensorflow-distributor
spark-tensorflow-distributor 是 TensorFlow 中的开源原生包,用于在 Spark 群集上通过 TensorFlow 进行分布式训练。 详细了解使用 TensorFlow 2 进行的分布式训练。
Ray
Ray 是一个开源框架,专门从事并行计算处理,用于缩放 ML 工作流和 AI 应用程序。什么是 Azure Databricks 上的 Ray?
Horovod(已弃用)
重要
Horovod 和 HorovodRunner 现已弃用,不会预安装在 Databricks Runtime 16.0 ML 及更高版本中。 对于分布式深度学习,Databricks 建议使用 TorchDistributor 通过 PyTorch 进行分布式训练,或使用 tf.distribute.Strategy
API 通过 TensorFlow 进行分布式训练。
Horovod 是适用于 TensorFlow、Keras 和 PyTorch 的分布式训练框架。 Azure Databricks 支持使用 HorovodRunner 和 horovod.spark
包进行分布式深度学习训练。 对于使用 Keras 或 PyTorch 的 Spark ML 管道应用程序,可使用 horovod.spark
估算器 API。 请参阅 Horovod。