概念

Horovod 核心原则基于 MPI 概念 sizeranklocal rankallreduceallgatherbroadcastalltoall。这些概念通过示例最容易理解。假设我们在4台服务器上启动了一个训练脚本,每台服务器有4个GPU。如果我们为每个GPU启动一个脚本副本:

  • Size 指的是进程数量,在这个例子中为 16。

  • Rank 将是唯一的进程ID,范围从0到15(size - 1)。

  • 本地排名 指的是服务器内从0到3的唯一进程ID。

  • Allreduce 是一种在多个进程间聚合数据并将结果分发回它们的操作。Allreduce 用于平均密集张量。以下是来自 MPI 教程的图示:

Allreduce Illustration
  • Allgather 是一种操作,它从所有进程收集数据到每个进程上。Allgather 用于收集稀疏张量的值。以下是来自 MPI 教程 的图示:

Allgather Illustration
  • Broadcast 是一种操作,它将数据从一个进程(由根等级标识)广播到所有其他进程。以下是来自 MPI 教程 的图示:

    Broadcast Illustration
  • Reducescatter 是一种在多个进程间聚合数据并将数据分散到这些进程的操作。Reducescatter 用于对密集张量进行平均,然后在进程间分割它们。以下是来自Nvidia开发者指南的图示:

    Reducescatter Illustration
  • Alltoall 是一种在所有进程之间交换数据的操作。Alltoall 可能有助于实现跨多个设备的先进架构神经网络。