多机多卡并行
场景: 使用Torch等框架进行多机多卡并行
方案:
在使用多机多卡并行时,无论是使用IB网络还是以太网络,在框架层都是通过IP+端口进行使用,机器的内网IP可以根据实例所在主机来确定不再赘述,这里主要说明如何开放可以满足多机多卡并行的端口。当前私有云开放端口的方式有多种,一种是通过proxy agent的方式暴露,但是这种方式主要用途为开放访问API/Web等http服务,协议和性能都有局限;第二种是通过Docker端口映射的方式来开放端口,但是这种开放端口的方式对于NCCL等无法获取网卡的拓扑信息,于是无法确认机器之间交换数据的最优拓扑,导致会卡死在初始化过程中;最后一种是通过--net=host
的方式,这种方式要求的权限较高,首先需要管理员编辑主机开放高级权限,然后创建实例时选择--net=host
的权限,使用此方式相当于将完整的物理机网络映射到容器中,所以在同一台主机上的不同容器使用端口时需选择不同端口,防止冲突