问题标签 [horovod]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
289 浏览

python - 在 GPU 服务器上安装 horovod setpy.py 时显示错误:-无法加载本机 TensorFlow 运行时

在 GPU 服务器上运行以下命令时:

它显示以下错误:

在处理上述异常的过程中,又出现了一个异常:

我尝试使用以下命令安装tensorflow pip install --user tensorflow==1.14.0pip install --user tensorflowpip install --user tensorflow-gpu

我遵循本教程:https ://github.com/horovod/horovod

我已经尝试了下面的命令并且它正在运行但是在运行时

但是如果我运行以下程序

正如在https://github.com/horovod/horovod/tree/master/examples上所说,它显示为类似的错误:

0 投票
0 回答
388 浏览

docker - 是否可以在 Docker 中使用具有默认桥接网络和主机端口转发的 Open MPI?

我正在尝试在 Docker 中将 Open MPI 与不同主机上的容器一起使用,但连接到它们各自的默认 Docker 桥接网络。有一系列 TCP 端口从 Docker 主机映射到容器。

mpirun允许您指定它应该使用的端口范围;但是,似乎没有一个选项可以让您指定通信是否应该严格通过端口转发到 MPI 进程实际运行的地址来完成。

这是否可以通过将参数传递给来实现,mpirun或者是否有一个通用的可路由网络接口​​可用的硬性要求?

0 投票
0 回答
561 浏览

tensorflow - horovod do summary_op 发生“一个或多个张量被提交以减少”

我尝试对张量板的 summay_op 执行 hvd.allreduce(loss)。

但是一直遇到这个错误。

一个或多个张量已提交以按等级子集减少、收集或广播,并且正在等待剩余等级超过 60 秒。这可能表明不同的 rank 试图提交不同的张量,或者只有 rank 的子集在提交张量,这将导致死锁。

0 投票
0 回答
107 浏览

tensorflow - 在 Sagemaker 上使用 horovod 分发 DCGAN

我正在尝试使用 AWS Sagemaker 将我的工作负载分配到多个 GPU。我正在使用带有 tensorflow 2.0 的 DCGAN 的自定义算法。到目前为止,代码在单个 GPU 上运行完美。我决定实现相同的代码,但使用跨多个 GPU 的 horovod 分布来减少运行时间。将代码从原始代码更改为 horovod 时,似乎工作方式相同,并且训练时间大致相同。但是,当我打印出 hvd.size() 时,我只得到 1 的大小,而不管是否存在多个 GPU。Tensorflow 可以识别所有当前的 GPU;霍罗沃德,没有。

我已经尝试在 Sagemaker 和 docker 容器中的 EC2 实例上运行我的代码,并且在这两种环境中,同样的问题仍然存在。

这是我的 github 存储库的链接:

这里

我还尝试使用完全来自 horovod 存储库的不同神经网络,更新到 tf2.0:

管理员

在这一点上,我只是试图在一个实例中使用 GPU,而不是尝试使用多个实例。

我想我可能在 docker 映像中缺少某种依赖项,或者有某种先决条件命令供我运行。我真的不知道。

谢谢。

0 投票
1 回答
200 浏览

databricks - 如何在 Azure Databricks 群集上将驱动程序节点 GPU 与 Horovod 结合使用?

当我创建一个包含一个驱动程序 + 两个工作人员的集群时,每个人都有一个 GPU,并尝试在每个 GPU 上启动训练,我会写:

但收到以下错误消息:

显然 HorovodRunner 没有考虑驱动节点上的 GPU(对吗?)。当我使用选项 np=-1(仅驱动 GPU)、np=2(某处 2 个 GPU)或 np=-2(仅驱动但有 2 个 GPU)时,一切正常,即我的功能没有任何问题代码,除此之外我无法让它利用所有 3 个可用的 GPU。

(a) 有没有办法让 Horovod 在分布式学习中包含驱动节点上的 GPU?

(b) 或者:有没有办法在 Databricks 中创建一个包含 GPU 工作人员但非 GPU 驱动程序的集群?

0 投票
1 回答
306 浏览

apache-spark - 通过 udf 或不收集到驱动程序的 Spark 数据帧到 numpy 数组

现实生活中的 df 是一个无法加载到驱动程序内存中的海量数据帧。这可以使用常规或 pandas udf 来完成吗?

这是需要在不依赖驱动程序内存的情况下并行化的逻辑。

输入:Spark 数据帧输出:要输入 horovod 的 numpy 数组(类似这样的:https ://docs.databricks.com/applications/deep-learning/distributed-training/mnist-tensorflow-keras.html )

这是一种不起作用的方法:

0 投票
1 回答
130 浏览

distributed-computing - Azure 机器学习工作区中的 Horovod 时间线和 MPI 跟踪(MPI 配置)

全部,
我正在尝试在 Azure 机器学习服务上使用 Horovod 训练分布式模型,如下所示。

  • 如何启用 Horovod 时间线?
  • 如何启用更详细的 MPI 跟踪以查看节点之间的通信?

谢谢。

0 投票
1 回答
325 浏览

python - 将 Horovod 与 tf.keras 一起使用时如何从检查点恢复?

注意:我使用的是 TF 2.1.0 和 tf.keras API。我在 0.18 和 0.19.2 之间的所有 Horovod 版本中都遇到了以下问题。

我们应该hvd.load_model()在从 tf.keras h5 检查点恢复时调用所有等级,还是只应该在等级 0 上调用它并让BroadcastGlobalVariablesCallback回调与其他工作人员共享这些权重?方法 1 是否不正确/无效,因为它会扰乱训练或产生与方法 2 不同的结果?

我目前正在训练一个带有一些 BatchNorm 层的基于 ResNet 的模型,如果我们只尝试在第一层加载模型(并在其他层上构建/编译模型),我们会遇到一个停滞的张量问题(https: //github.com/horovod/horovod/issues/1271)。但是,如果我们hvd.load_model在恢复时调用所有等级,训练开始正常恢复但它似乎立即发散,所以我很困惑是否在所有等级上加载检查点模型(带有hvd.load_model)会以某种方式导致训练发散?但同时,由于https://github.com/horovod/horovod/issues/1271,我们无法仅将其加载到 rank 0,导致 Batch Norm 在 horovod 中挂起。有没有人能够成功调用hvd.load_model仅在使用 BatchNorm tf.keras 层时排名为 0?有人可以在这里提供一些提示吗?

谢谢!

0 投票
2 回答
1168 浏览

python - 将数据从 `tf.data.Dataset` 分发给多个工作人员(例如,对于 Horovod)

使用 Horovod,您基本上运行 N 个独立实例(因此它是图间复制的一种形式),并且它们通过特殊的 Horovod 操作(基本上是广播 + 减少)进行通信。

现在假设实例 0 或其他一些外部实例加载您的数据(通过tf.data.Dataset)。您将如何将其分配iterator.get_next()给每个实例?使用 Horovod 广播效率低下,因为您会将所有数据复制到所有实例。

在每个实例中都有数据集,并在那里进行所有加载,然后shard在数据集上使用也会效率低下,因为您将在任何地方加载数据,然后丢弃 (N-1)/N 个数据。所以这就是为什么也不想要分片,而是只将数据集加载到单个(生产者/数据集工作人员)实例中,然后将批次分配给所有火车工作人员。

我猜 TFMultiDeviceIterator提供了一些类似的功能(或者基本上完全一样),但我不确定它是否与 Horovod 一起工作,以及你将如何设置它?

或者,也许您可​​以通过 TF 工作人员以某种方式进行分发(指南?(也许这也是您的配置MultiDeviceIterator方式?)

如果可能的话,这应该是通过 TensorFlow 操作/函数(有许多相关函数可能已经给了我这个,但我可能不知道它们,或者误解了它是如何工作的)。或者答案可能是 TensorFlow 还没有提供任何此类功能?(知道这仍然很有用。然后我会用 C++ 实现我自己的解决方案,包装为 TensorFlow。但在这样做之前,最好知道这是否真的有必要。)

(相关也是这个Horovod问题。)

(这个问题实际上比 Horovod 更通用,虽然 Horovod 可能是一个很好的例子。对于分布式 TensorFlow,你可能总是遇到这个问题?)

(我在这里收集了所有分布式 TensorFlow 术语和方面的概述,主要是为了澄清。)

(相关的是(也许?)还有thisthisthisthisthis问题。)

0 投票
1 回答
148 浏览

docker - Horovod 弹性调整运行时的工人数量

我一直在 docker 中同时使用 TensorFlow 和 PyTorch 来使用 Horovod,正如 Horovod docker 中所解释的,在固定数量的容器下,每件事都可以正常工作

我已经检查了 Horovod Elastic Demos Horovod 示例,但它们没有显示如何在运行时更改工作人员的数量。

我需要知道如何在运行时增加或减少工作人员的数量?