运行 Horovod¶
本页面包含使用 horovodrun 的 Open MPI 示例。请查阅您的
MPI 文档以了解您系统上 mpirun
命令的参数。
通常每个进程会分配一个GPU,因此如果服务器有4个GPU,你将运行4个进程。在horovodrun中,进程数量通过-np标志指定。
在拥有4个GPU的机器上运行:
$ horovodrun -np 4 -H localhost:4 python train.py
在4台机器上运行,每台机器配备4个GPU:
$ horovodrun -np 16 -H server1:4,server2:4,server3:4,server4:4 python train.py
你也可以在主机文件中指定主机节点。例如:
$ cat myhostfile
aa slots=2
bb slots=2
cc slots=2
此示例列出了主机名称(aa、bb 和 cc)以及每个主机有多少个“插槽”。 插槽表示一个节点上可以执行的进程数量。 此格式与 mpirun 命令中的格式相同。
在主机文件中指定的主机上运行:
$ horovodrun -np 6 -hostfile myhostfile python train.py
要求¶
使用 horovodrun 需要满足以下条件之一:
Open MPI >= 2.X
Spectrum MPI
MPICH
OpenRTE
Gloo
英特尔(R) MPI
如果你没有安装MPI,你可以使用Gloo运行horovodrun。Gloo依赖项会自动随Horovod一起安装,并且只需要在安装Horovod时你的系统上有CMake可用。
如果你想使用不同版本的MPI,仍然可以通过直接运行mpirun
因SSH问题导致的故障¶
执行horovodrun的主机必须能够无密码提示地SSH到所有其他主机。
如果 horovodrun 因权限错误而失败,请确认您能够在不输入密码或回答类似以下问题的情况下通过 ssh 连接到其他所有服务器:
无法 确认 主机 '
要了解更多关于设置无密码身份验证的信息,请参阅此页面。
为避免 The authenticity of host ' 提示,使用 ssh-keyscan 将所有主机添加到 ~/.ssh/known_hosts 文件中:
$ ssh-keyscan -t rsa,dsa server1 server2 > ~/.ssh/known_hosts
高级:使用 Open MPI 运行 Horovod¶
在某些高级场景中,您可能希望对传递给 Open MPI 的选项进行细粒度控制。 要了解如何直接使用 Open MPI 运行 Horovod 训练, 请阅读 Run Horovod with Open MPI。
使用英特尔(R) MPI运行Horovod¶
horovodrun 自动将一些参数转换为英特尔(R) MPI mpirun 支持的格式。允许的选项集包括 -np、-H 和
ssh 参数(-p、-i)。英特尔(R) MPI mpirun 不支持 MCA 参数,但您可以通过 环境变量 设置一些选项。
更多信息请参阅 英特尔(R) MPI 官方文档。