开发者
资源

Ascend Operator/HCCL Controller

应用场景

各个分布式训练进程需要集合通信参数的输入,用来协作完成分布式任务。

  • (推荐)MindCluster集群调度提供Ascend Operator组件,输入集合通信所需的主进程IP,当前pod的rankId等信息。
  • MindCluster集群调度提供HCCL Controller组件,输入静态组网集合通信所需的ranktable信息。

    HCCL Controller和Ascend Operator的区别如下:

    • HCCL Controller:通过配置文件设置资源信息。

      该组件用于昇腾AI处理器训练任务的组件,利用K8s的informer机制,持续记录训练任务及其Pod的各种事件,并读取Pod的昇腾AI处理器信息,生成对应的configmap。该configmap包含了训练任务所依赖的集合通讯配置,方便训练任务更好地协同和调度底层的昇腾AI处理器,无需用户手动配置。

    • Ascend Operator:通过环境变量设置资源信息。

      该组件支持MindSpore、PyTorch、TensorFlow三个AI框架在Kubernetes上进行分布式训练的插件,CRD(Custom Resource Definition)中定义了AscendJob任务,用户只需配置yaml文件,即可以为不同AI框架的分布式训练任务提供相应的环境变量。

Ascend Operator组件功能

  • 创建pod,并将集合通信参数按照环境变量的方式注入。
  • 创建ranktable文件,并按照共享存储的方式挂载到容器,优化集合通信建链性能。

Ascend Operator组件上下游依赖

图1 Ascend Operator

  1. 通过Ascend for Volcano感知当前任务是所需资源是否满足。
  2. 资源满足后,针对任务创建对应的pod并注入集合通信参数的环境变量。
  3. pod创建完成后,Ascend for Volcano进行资源的最终选定。
  4. 从Ascend Device Plugin获取任务的芯片编号、IP、rankId信息,汇总后生成集合通信文件。
  5. 通过共享存储,将集合通信文件挂载到容器内。

HCCL Controller组件功能

创建ranktable文件,并按照configmap隐射的方式挂载到容器,优化集合通信建链性能。

HCCL Controller组件上下游依赖

图2 Hccl-Controller

  1. 从Ascend Device Plugin获取任务的芯片编号、IP、rankId信息,汇总后生成集合通信文件。
  2. 通过configmap映射的方式,将集合通信文件挂载到容器中。