华为云AI开发平台ModelArtsAscend-Powered-Engine_云淘科技

ModelArts训练服务支持了多种AI引擎,并对不同的引擎提供了针对性适配,用户在使用这些引擎进行模型训练时,训练的算法代码也需要做相应适配,本文讲解了使用Ascend引擎所需要做的代码适配。

Ascend-Powered-Engine框架启动原理

在 ModelArts 算法建界面选择 AI 引擎时,能够看到一个叫做Ascend-Powered-Engine的 AI 引擎,它与其他 AI 引擎相比有些特别。它既不一个 AI 框架(如:Pytorch、TensorFlow)也不是一个并行执行框架(如:MPI),而是针对华为自研加速芯片 Ascend 适配编译的一组 AI 框架+运行环境+启动方式的集合。

图1 Ascend-Powered-Engine

由于几乎所有的 Ascend 加速卡都跑在 ARM 规格的机器上,因此上层 docker 镜像也都是 ARM 镜像。
针对 GPU 场景的镜像中安装了对应版本的 CUDA(由英伟达推出的统一计算架构)驱动,而 Ascend-Powered-Engine 引擎的镜像中都安装了与底层硬件版本适配的 CANN(华为公司针对AI场景推出的异构计算架构)驱动。

规格和节点个数

下面以选择“Ascend: 8 *** | ARM: 192 核 720 GB”规格为例,介绍在单机和分布式场景下ModelArts规格资源的分配情况。

单机作业时(即选择的节点数为1),ModelArts只会在一个节点上启动一个训练训练容器,该训练容器独享节点规格的可使用资源。

分布式作业时(即选择的节点数大于1),worker的数量和创建作业时选择的节点数一致,每个worker将被分配到所选规格对应的计算资源。例如计算节点个数为2时,将启动2个worker,每个worker拥有“Ascend: 8*** | ARM: 192 核 768GB 720 GB”的计算资源。

另外,Ascend-Powered-Engine引擎的启动文件,将被平台自动启动为N个进程,N=单节点的Ascend加速卡数。

PyTorch on Ascend不能使用Ascend-Powered-Engine引擎来启动训练作业,应该参考基于训练作业启动PyTorch DDP on Ascend加速卡训练示例使用自定义镜像来启动训练作业。

网络通信介绍

单机作业不涉及网络通信情况。
分布式作业的涉及网络通信则可以分为节点内网络通信和节点间网络通信。

节点内网络

使用HCCS和共享内存通信。

节点间网络

worker之间可通过容器网络和Ascend加速卡上的RoCE网络通信。

启动命令

训练服务使用作业镜像中默认的python解释器启动训练脚本(即“which python”命令指向的可执行文件),启动时的工作目录(即pwd命令或python中“os.getcwd()”返回的目录)为“/home/ma-user/user-job-dir/”

启动命令

python ${系统自带启动文件} python ${启动文件路径} \
--${超参键1}=${超参值1} \
--${超参键2}=${超参值2} \
...
--${训练输入参数名称}=${训练输入参数值}
--${训练输出参数名称}=${训练输出参数值}

系统自带启动文件:一般为“/home/ma-user/modelarts/run/davincirun.py”
启动文件路径:启动文件相对“/home/ma-user/user-job-dir/”的路径 。

图2 创建训练作业详情

例如控制台上设置如上图所示,则控制台后台执行命令如下:

python /home/ma-user/modelarts/run/davincirun.py \
python /home/ma-user/modelarts/user-job-dir/train/train.py \
--enable_modelarts=True \
--is_distribute=0 \
--per_batch_size=1 \
--data_dir=/home/ma-user/modelarts/inputs/data_url_0/ \
--pretrained=/home/ma-user/modelarts/inputs/data_url_0/ckpt/0-320_195200.ckpt \
--data_url=/home/ma-user/modelarts/inputs/data_url_0/ \
--train_url=/home/ma-user/modelarts/outputs/train_url_0/

Ascend-Powered-Engine框架单机启动命令和分布式启动命令无区别。

父主题: 预置框架启动流程说明

同意关联代理商云淘科技,购买华为云产品更优惠(QQ 78315851)

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家