灵骏智算资源为您提供高性能AI训练、高性能计算所需的异构计算算力服务,用于提交DLC训练任务或创建DSW实例。本文为您介绍PAI灵骏智算服务从开通到使用的最佳实践。
前提条件
已开通PAI(DLC、DSW)后付费,详情请参见开通并创建默认工作空间。
已创建VPC和公网NAT网关,并有已创建的交换机、安全组。
您可以通过公网NAT网关的SNAT功能创建SNAT条目,创建SNAT条目时选择交换机粒度,此处选择的交换机即为购买灵骏智算资源时使用的交换机,详情请参见使用公网NAT网关SNAT功能访问互联网。
已提交工单,申请添加灵骏智算使用白名单。
当前仅白名单用户可受限使用灵骏智算资源。
已新建资源组并购买灵骏智算资源,具体操作,请参见灵骏智算资源配额。
如果使用RAM角色提交DLC分布式训练任务,需要完成信任策略配置,配置详情请参见RAM角色登录并使用PAI。
其中为Role配置的权限策略在当前的实现中会影响到PAI DLC的任务运行,您可参考以下权限策略制定您的自定义策略(AliyunPAIDLCDefaultRolePolicy):
使用限制
仅华北6(乌兰察布)地域支持使用灵骏智算资源。
支持的任务类型
当前灵骏智算资源仅支持TensorFlow、PyTorch、ElasticBatch和MPIJob类型的训练任务。
使用灵骏智算资源提交训练任务(DLC)时,当前仅OSS类型的数据集支持加速,NAS、智算CPFS类型的数据集暂不支持加速。
准备工作
准备灵骏智算资源组
新建灵骏资源组
登录并进入PAI控制台的AI计算资源 > 资源池页面。
在灵骏智算资源页签中,单击新建资源组。
在新建资源组对话框中配置以下参数,完成后单击确定。
参数
说明
类型
选择专有资源组。
资源组名称
根据界面提示设置满足规则的资源组名称。
专有网络&交换机&安全组
在下拉框中选择已创建好的VPC、交换机和安全组。
说明后续如果您有访问公网的需求,还需对此处绑定的VPC进行公网NAT网关的配置并绑定EIP,因此此处选择的VPC建议选择为您后续用于访问公网的VPC。
购买灵骏智算资源
在灵骏智算资源页签的资源组列表中,单击资源组名称。
在资源组详情页面右上方,单击新建订单。
在购买页面中根据实际业务需要选择节点规格、节点数量和购买时长等必要参数,完成后单击立即购买。
在支付页面完成支付后,在订单列表页面中会展示已购买的灵骏智算资源列表。
新增资源配额
登录并进入PAI控制台的AI计算资源 > 资源配额页面。
在灵骏智算资源页签中,单击新增资源配额。
在新增资源配额页面中,配置以下参数,完成后单击提交。
参数
描述
名称
根据界面提示设置资源配额的名称。
调度策略
选择合适的调度策略,提高算力资源的利用率,取值如下:
智能策略
均衡策略
遍历策略
FIFO策略
关于各个调度策略的原理介绍,请参见调度策略。
说明仅华北6(乌兰察布)地域支持配置调度策略。
关联工作空间
选择所属的工作空间后,该资源配额将与该工作空间绑定。
描述
对资源配额进行简单的描述,以区分不同的资源配额。
来源类型
支持以下两种配置:
专有资源组:选择资源池中的资源组,将从该资源组中分配资源。
已有资源配额:从已有的资源配额中分配资源。
来源
选择已创建的专有资源组或资源配额。
规格/资源
单击按钮,从已有的资源配额或专有资源组中选择合适的资源规格和节点数量。
准备数据集
使用灵骏智算资源提交DLC任务时,支持使用OSS、NAS、智算CPFS类型的数据集,以下以智算CPFS类型的数据集为例为您介绍准备数据集的操作流程。
如果您的训练任务对数据读取有很高的读写速度与性能要求,建议您使用智算CPFS数据集。
购买智算CPFS资源。
登录并进入PAI控制台的计算资源仪表页面,单击页面右方的新建CPFS,在弹出的新购页面中选择配置容量后,根据界面提示完成付费、下单。
新建CPFS数据集。
单击左侧导航中的工作空间列表,单击待提交任务的工作空间名称进入工作空间后,在AI资产管理>数据集页面单击创建数据集,其中:
选择数据存储:请选择为阿里云文件存储(智算CPFS)。
选择文件系统:请在下拉框中选择智算CPFS的文件系统(bmcpfs开头的文件系统)。
其他参数的配置与通用数据集创建一致,详情请参见创建及管理数据集。
说明阿里云PAI为您提供了数据集加速能力,如果您希望在使用灵骏智算资源时同时开启数据集加速,可参考典型场景:基于灵骏智算资源的数据集加速文档查看数据集加速的配置要点。
完成数据集参数配置后单击提交,完成数据集创建。
准备自定义镜像环境
环境要求
CUDA >= 11.2
NCCL >= 2.12.10
Python3
安装RDMA库
灵骏智算资源为您提供高性能的RDMA网络,当您用自定义镜像时,需在自定义镜像的Dockerfile中手动安装灵骏智算资源的Serverless的RDMA库,才能更好的使用灵骏智算资源的RDMA网络能力。
安装RDMA库的示例代码如下。
RUN apt-get update && \
apt-get install -y --allow-downgrades --allow-change-held-packages --no-install-recommends libnl-3-dev libnl-route-3-dev libnl-3-200 libnl-route-3-200 iproute2 udev dmidecode ethtool && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
RUN cd /tmp/ && \
wget http://pythonrun.oss-cn-zhangjiakou.aliyuncs.com/rdma/nic-libs-mellanox-rdma-5.2-2/nic-lib-rdma-core-installer-ubuntu.tar.gz && \
tar xzvf nic-lib-rdma-core-installer-ubuntu.tar.gz && \
cd nic-lib-rdma-core-installer-ubuntu && \
echo Y | /bin/bash install.sh && \
cd .. && \
rm -rf nic-lib-rdma-core-installer-ubuntu && \
rm -f nic-lib-rdma-core-installer-ubuntu.tar.gz
提交DLC分布式作业
支持配置的系统环境变量
公共环境变量
DLC会自动注入以下NCCL相关的环境变量,作业中不需要再进行配置:
NCCL_IB_HCA
NCCL_IB_TC
NCCL_IB_SL
NCCL_IB_GID_INDEX
NCCL_SOCKET_IFNAME
Pytorch环境变量
在PyTorch的分布式训练过程中,Master和Worker是两个不同的角色,它们需要建立连接并通信。而在DLC中,提供了一些环境变量来同步必要的信息,例如将Master的地址和端口号同步给Worker。以下是DLC设置的PyTorch环境变量:
环境变量名 | 描述 |
MASTER_ADDR | Master节点地址。例如: |
MASTER_PORT | Master节点端口。例如:23456。 |
WORLD_SIZE | 分布式作业的节点总数。例如提交了一个包含1个Master、1个Worker的作业,WORLD_SIZE会设置为2。 |
RANK | 节点的Index。例如提交一个包含1个Master、2个Worker的作业,Master上设置的RANK为0,Worker-0设置的RANK为1, Worker-1 设置的RANK为2。 |
TensorFlow环境变量
TensorFlow分布式作业通过TF_CONFIG环境变量来构建分布式的网络拓扑信息,对于TensorFlow,DLC设置了如下环境变量:
环境变量名 | 描述 |
TF_CONFIG | TensorFlow分布式网络拓扑信息,示例如下: { "cluster":{ "worker":[ "dlc1y3madghdduqi-worker-0.t1612285282502324.svc:2222", "dlc1y3madghdduqi-worker-1.t1612285282502324.svc:2222" ] }, "task":{ "type":"worker", "index":0 }, "environment":"cloud" } |
提交分布式作业
您可参考创建训练任务进入提交任务的配置页面,参考下文配置分布式任务的参数。本文的示例场景为使用基于CIFAR10数据集的2机16卡规模的模型。
配置基本信息
核心配置参数如下,其他参数可保持默认。
参数 | 描述 |
节点镜像 | 选择合适的PyTorch镜像,本文选择了PAI平台镜像中的pytorch-training:1.10PAI-gpu-py36-cu110-ubuntu18.04,您在实际使用时可以根据实际业务需要选择官方镜像或自定义镜像。 |
数据集配置 | 选择已准备的OSS、NAS或智算CPFS数据集。 |
执行命令 | 根据需要在分布式作业的每个Pod中执行的脚本命令,本文示例如下。
|
配置任务资源
核心配置参数如下,其他参数可保持默认。
参数 | 描述 |
资源配额 | 选择已购买的灵骏智算资源配额。 |
框架 | 本示例选择Pytorch。 |
任务资源 | 配置Worker节点:
|
查看作业详情
完成配置后即可提交分布式训练任务,提交成功后可单击查看详情查看作业详情,或在任务列表中找到最近提交的作业,单击任务名称,进入作业详情页面。
查看作业日志
在任务详情页面下方的实例页签,单击实例操作列下的日志,查看某个节点的输出日志。
查看事件日志
事件日志中记录了这个作业调度以及资源相关的一些进度日志。
在任务详情页面下方的事件页签,查看某个节点的输出日志。
在任务详情页面下方的实例页签,单击实例操作列下的日志,在弹出的对话框中单击事件,查看节点事件日志。
创建及管理DSW实例
创建DSW实例
您可参考创建及管理DSW实例进入配置实例配置向导页面,参考下表配置核心参数,其他参数可保持默认。
参数 | 描述 |
资源配额 | 选择已购买的灵骏智算资源配额,并填写资源申请量,包括CPU(核数)、内存(GB)和GPU(卡数)。 |
存储配置 | 单击共享数据集,选择已准备的OSS、NAS或智算CPFS数据集。强烈建议您挂载数据集,这样您的数据不会因为实例的停止和关闭而丢失。 |
选择镜像 | PAI预置了若干镜像,镜像中预装了常用的软件和机器学习框架,如果这些框架不符合您的需求,您可以通过镜像URL标签页自行添加。 |
管理DSW实例
打开DSW实例
DSW实例创建成功后,您可以单击实例操作列下的打开,进入DSW实例操作页面。关于DSW实例界面介绍,请参见创建及管理DSW实例。
停止DSW实例
单击DSW实例操作列下的停止,来停止DSW实例。
启动DSW实例
如果您需要再次使用已经被停止的实例,可以单击操作列下的启动来启动实例。启动实例后,需要等待一段时间,当实例状态由启动中变为运行中时,表明DSW实例启动完成。