horovod.spark:使用 Horovod 进行分布式深度学习

重要

Horovod 和 HorovodRunner 现已弃用,不会预安装在 Databricks Runtime 16.0 ML 及更高版本中。 对于分布式深度学习,Databricks 建议使用 TorchDistributor 通过 PyTorch 进行分布式训练,或使用 tf.distribute.Strategy API 通过 TensorFlow 进行分布式训练。

了解如何使用 horovod.spark 包对机器学习模型执行分布式训练。

Azure Databricks 上的 horovod.spark

Azure Databricks 支持 horovod.spark 包,该包提供了一个可在 Keras 和 PyTorch 的 ML 管道中使用的估算器 API。 有关详细信息,请参阅 Spark 上的 Horovod,其中一节介绍了 Databricks 上的 Horovod

注意

  • Azure Databricks 会安装具有依赖项的 horovod 包。 如果升级或降级这些依赖项,则可能会出现兼容性问题。
  • 在 Keras 中将 horovod.spark 与自定义回调一起使用时,必须以 TensorFlow SavedModel 格式保存模型。
    • 对于 TensorFlow 2.x,请在文件名中使用 .tf 后缀。
    • 对于 TensorFlow 1.x,请设置选项 save_weights_only=True

要求

Databricks Runtime ML 7.4 或更高版本。

注意

horovod.spark 不支持 pyarrow 版本 11.0 及更高版本(请参阅相关的 GitHub 问题)。 Databricks Runtime 15.0 ML 包括 pyarrow 版本 14.0.1。 若要将 horovod.spark 与 Databricks Runtime 15.0 ML 或更高版本配合使用,必须手动安装 pyarrow,并指定一个低于 11.0 的版本。

示例:分布式训练函数

以下是使用 horovod.spark 运行分布式训练函数的基本示例:

def train():
  import horovod.tensorflow as hvd
  hvd.init()

import horovod.spark
horovod.spark.run(train, num_proc=2)

示例笔记本:使用 Keras 和 PyTorch 的 Horovod Spark 估算器

以下笔记本演示如何将 Horovod Spark 估算器 API 用于 Keras 和 PyTorch。

Horovod Spark 估算器 Keras 笔记本

获取笔记本

Horovod Spark 估算器 PyTorch 笔记本

获取笔记本