DigitalOcean多节点GPU云服务器(GPU Droplet)只能以8块GPU的倍数创建,并且支持团队需要单独启用特定的云服务器方案代码,以便在创建GPU云服务器时使用。创建完成后使用NCCL或RCCL拓扑连接GPU的网络的配置尚未完全自动化,因此还需要采取一些额外步骤,为GPU网卡分配IP地址。下面将详细介绍具体的配置步骤。
DigitalOcean官网地址:点击直达(新客领取200美元,可用于试用DigitalOcean任意产品,有效期60天)
注:创建DigitalOcean多节点GPU云主机需联系官方客服
一、配置GPU网络接口控制器
GPU的八个网络接口控制器 (NIC) 分别为eth2至eth9。每个网卡必须有自己的子网,且与其他子网互不重叠。例如eth2可以使用“192.68.50.0/24”, eth3可以使用“192.68.51.0/24”, 以此类推。
每个GPU云服务器还需要在每个子网中拥有一个唯一的IP地址。建议为给定的Droplet在每个子网中使用相同的末尾八位数。例如一个Droplet的地址将是“192.68.50.2”、 “192.68.51.2”, 以此类推。另一个Droplet的地址将是“192.68.50.3”、“192.68.51.3”, 以此类推。
由于DigitalOcean尚未完成NIC地址自动化的配置,因此在此之前可以通过以下两种方式之一来配置NIC地址:
- 使用用户数据,如果使用不支持Netplan的基础镜像,但Droplet需要特定命名约定,则此功能非常有用;
- 使用Netplan手动配置,如果用户数据脚本的Droplet命名约定不适合需求;
- 如果希望对一组现有的GPU Droplet应用更改,使用使用Ansible。
要使用DigitalOcean的用户数据脚本,必须为Droplet采用特定的命名约定:
- 名称必须以连字符结尾,-后跟一个介于1至254的整数。例如examplename-1.
- 名称中不得包含其他连字符。
然后,在创建Droplet时使用以下cloud-config文件:
#cloud-config
write_files:
– path: /usr/sbin/gpu-fabric.sh
content: |
#!/bin/bash
IFACES=$(ip -br addr | grep eth | grep -E ‘eth2|eth3|eth4|eth5|eth6|eth7|eth8|eth9’ | awk ‘{print $1}’)
subnet=50
octet=$(hostname | cut -d ‘-‘ -f 2)
for i in ${IFACES}; do
/usr/sbin/ip link set dev ${i} up
/usr/sbin/ip link set dev ${i} mtu 4200
ADDR=”192.168.${subnet}.${octet}/24″
/usr/sbin/ip addr add dev ${i} ${ADDR}
subnet=$((subnet + 1))
done
/usr/sbin/ip -br addr
permissions: ‘0755’
bootcmd:
– /usr/sbin/gpu-fabric.sh
runcmd:
– /usr/sbin/gpu-fabric.sh
可以在创建GPU云服务器时通过使用doctl标志-user-data-file传递此脚本。
2、通过Netplan手动配置DigitalOcean为GPU云服务器提供的支持AI/ML的镜像包含Netplan。
- 在每个Droplet上打开并在此处添加以下代码块:也可以选择将MTU编辑为9002;
- 保存文件并应用更改:在每个其他Droplet上重复此过程,每次替换第四个八位组。
可以使用gpu-fabricAnsible Playbook来配置多节点GPU云服务器:
该仓库的README文件中提供了安装和使用说明,此处予以复制:
此内容由https://github.com/digitalocean/gpu-fabric/blob/main/README.md.
此仓库包含一个用于配置多节点GPU云服务器的简单Ansible playbook。
要使用此playbook:
- 在将用于运行此playbook的机器上,首先安装Ansible,然后克隆此仓库;
- 在克隆的仓库版本中的inventory/droplets文件里,在[multinode_gpu_droplets]部分,指定GPU云服务器的公共IP地址;
- Ansible在幕后使用SSH来配置Droplet。如果从未通过SSH连接到到云服务器,且本地的.ssh/config文件中未包含StrictHostKeyChecking no,请将以下行添加到inventory/droplets文件中:
ansible_ssh_common_args=’-o StrictHostKeyChecking=no’
保存文件,然后从仓库根目录运行playbook:
ansible-playbook -i inventory/droplets customer-play.yaml
成功运行的输出类似于以下内容:
二、验证连接性PLAY [multinode_gpu_droplets] ***********************************************************************************
TASK [Gathering Facts] ******************************************************************************************
ok: [10.10.10.10]TASK [read /etc/netplan/50-cloud-init.yaml] *********************************************************************
ok: [10.10.10.10]TASK [extract /etc/netplan/50-cloud-init.yaml] ******************************************************************
ok: [10.10.10.10]TASK [set a unique index for each droplet] **********************************************************************
ok: [10.10.10.10] => (item=10.10.10.10)TASK [adjust /etc/netplan/50-cloud-init.yaml] *******************************************************************
ok: [10.10.10.10]TASK [write /etc/netplan/50-cloud-init.yaml] ********************************************************************
ok: [10.10.10.10]TASK [install lldp] *********************************************************************************************
ok: [10.10.10.10]PLAY RECAP ******************************************************************************************************
10.10.10.10 : ok=7 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
可以查看分配给结构NIC的IP地址:
ip -br a
此列表列出了网络接口及其IP地址:
lo UNKNOWN 127.0.0.1/8 ::1/128
eth0 UP 162.243.220.179/24 10.13.0.5/16 fe80::4006:aff:fe4d:d7cb/64
eth1 UP 10.128.0.2/16
eth2 UP 192.168.50.1/24
eth3 UP 192.168.51.1/24
eth4 UP 192.168.52.1/24
eth5 UP 192.168.53.1/24
eth6 UP 192.168.54.1/24
eth7 UP 192.168.55.1/24
eth8 UP 192.168.56.1/24
eth9 UP 192.168.57.1/24
请确保与分配的地址匹配。
三、配置NCCL或RCCL为了在使用NCCL(NVIDIA GPU)或RCCL(AMD GPU)进行多节点训练时获得最佳性能,必须在多节点部署中的所有Droplet上提供额外的GPU专用配置。
1、NVIDIA H100必须下载一个NCCL拓扑文件,然后在nccl.conf.
首先下载拓扑文件并将其保存为/etc/nccl/topo.xml.,然后编辑/etc/nccl.conf以包含以下几行:
2、NVIDIA H200/etc/nccl.conf
NCCL_TOPO_FILE=/etc/nccl/topo.xml
NCCL_SOCKET_IFNAME==eth1
NCCL_CROSS_NIC=0
NCCL_NET_DISABLE_INTRA=1
NCCL_IB_TC=104
编辑/etc/nccl.conf以包含以下行:
3、AMD MI300X和MI325X/etc/nccl.conf
NCCL_SOCKET_IFNAME==eth1
NCCL_CROSS_NIC=0
NCCL_NET_DISABLE_INTRA=1
NCCL_IB_TC=104
编辑/etc/rccl.conf以包含以下行:
/etc/rccl.conf
NCCL_SOCKET_IFNAME==eth1
NCCL_CROSS_NIC=0
NCCL_PXN_DISABLE=0
NCCL_NET_DISABLE_INTRA=1
NCCL_IB_GID_INDEX=3
NCCL_DMABUF_ENABLE=1
NCCL_IB_TC=104
相关推荐:
《DigitalOcean怎么购买服务器 200美元试用额度领取及购买教程》
《DigitalOcean国外云服务器(Droplet)选型指南》
(本文由美国主机侦探原创,转载请注明出处“美国主机侦探”和原文地址!)
微信扫码加好友进群
主机优惠码及时掌握
QQ群号:938255063
主机优惠发布与交流





