如果你使用多任务配置来进行多机多卡训练,你可能会关心集群的网络配置。

集群中的服务器,有两套网络进行连接:

  • IB网络,用于容器间通信以及访问H3C存储(这套存储对于一般用户是不可见的,仅限智能院用户申请使用)
  • 万兆网络,用于连接互联网,以及访问个人存储(像/code,/data/$Username,/model,/output)

集群的所有服务器位于防火墙之后,一般是不能被外网访问的,除了设定的少量debug服务器。这些服务器上的特定端口可以被ssh进入。这也是为什么启动调试或者进行数据上传下载都需要在debug节点上进行的原因。

对于内部通信,用户可见的是容器启动后的eth0网卡。这个网卡的ip(172.*.*.*/24)是docker自动分配的,一般是每个服务器自行决定用哪个ip,但为了能跨机器通信,平台对这些ip段又做了专门的划分,使得每个容器的eth0的ip是全集群唯一的,并能被其他同类型节点上的容器所发现。

为什么要求是同类型节点?实际上容器IP能用于通信还需要宿主机上进行报文路由,管理员在服务器上只配置同类型节点的路由规则。

举例:

在debug上启动了一个包含4个子任务的任务,这4个子任务的ip可能分别为:

172.18.35.4
172.18.42.2
172.18.45.6
172.18.33.3

那么使用上述IP,子任务之间可以相互通信;

此时,又在V100上启动了另一个包含2个子任务的任务,这些ip假设为

172.17.2.2
172.17.5.3

V100这两个子任务也可以很好的通信。但是他们不能与上面的172.18.*.*的ip通信。

results matching ""

    No results matching ""