亚马逊云科技

广告

安信SSL证书

广告

DigitalOcean多节点GPU云服务器配置教程

美国云服务器推荐

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。

1、带用户数据

要使用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上重复此过程,每次替换第四个八位组。

3、使用Ansible

可以使用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以包含以下几行:

/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

2、NVIDIA H200

编辑/etc/nccl.conf以包含以下行:

/etc/nccl.conf
NCCL_SOCKET_IFNAME==eth1
NCCL_CROSS_NIC=0
NCCL_NET_DISABLE_INTRA=1
NCCL_IB_TC=104

3、AMD MI300X和MI325X

编辑/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国外云服务器创建配置完整指南

DigitalOcean国外云服务器(Droplet)选型指南

(本文由美国主机侦探原创,转载请注明出处“美国主机侦探”和原文地址!)

主机侦探企业微信

微信扫码加好友进群

主机优惠码及时掌握

主机侦探QQ群

QQ群号:938255063

主机优惠发布与交流

温馨提示:

1、本站部分图片来源于互联网,如有侵权请联系删除。邮箱:2942802716#qq.com(#改为@)

2、本文评论没有专人回复,如果您有问题请到美国主机侦探论坛提问!

3、美国主机侦探免费为您提供美国主机购买咨询。

RAKsmart美国服务器
下一篇
DigitalOcean多节点GPU云主机配置
已经没有了
返回顶部