AI开发平台MODELARTS-Ascend-Powered-Engine:Ascend-Powered-Engine框架启动原理
Ascend-Powered-Engine框架启动原理
在ModelArts算法建界面选择AI引擎时,能够看到一个叫做Ascend-Powered-Engine的AI引擎,它与其他AI引擎相比有些特别。它既不是一个AI框架(如:PyTorch、TensorFlow)也不是一个并行执行框架(如:MPI),而是适配加速芯片Ascend编译的一组AI框架+运行环境+启动方式的集合。
- 由于几乎所有的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加速卡训练示例使用 自定义镜像 来启动训练作业。
网络通信介绍
- 单机作业不涉及网络通信情况。
- 分布式作业的涉及网络通信则可以分为节点内网络通信和节点间网络通信。
节点内网络
使用HC CS 和共享内存通信。
节点间网络
worker之间可通过容器网络和Ascend加速卡上的RoCE网络通信。