实现原理
根据推理任务类型的不同,特性的原理图略有差异。静态vNPU调度需要使用npu-smi工具提前创建好需要的vNPU。
vcjob任务
vcjob任务的原理图如图1所示。
各步骤说明如下:
- 集群调度组件定期上报芯片和节点信息;kubelet上报节点芯片数量到node(节点对象)中。
- Ascend Device Plugin定期上报芯片拓扑信息。
- 上报整卡信息。将芯片的物理ID上报到device-info-cm中;可调度的芯片总数量(allocatable)和已使用的芯片数量(allocated)上报到node中,用于整卡调度。
- 上报vNPU相关信息到node中,用于静态vNPU调度。
- NodeD定期上报节点健康状态和节点硬件故障信息到node-Info-cm中。
- Ascend Device Plugin定期上报芯片拓扑信息。
- ClusterD读取device-info-cm和node-Info-cm中信息后,将信息写入cluster-Info-cm。
- 用户通过kubectl或者其他深度学习平台下发vcjob任务。
- volcano-controller为任务创建相应podGroup。关于podGroup的详细说明,可以参考开源Volcano官方文档。
- 当集群资源满足任务要求时,volcano-controller创建任务Pod。
- volcano-scheduler根据节点和芯片拓扑信息为任务选择合适节点,并在Pod的annotation上写入选择的芯片信息。
- kubectl创建容器时,调用Ascend Device Plugin挂载芯片,Ascend Device Plugin在Pod的annotation上写入芯片信息。Ascend Docker Runtime协助挂载相应资源。
deploy任务
deploy任务原理图如图2所示。
各步骤说明如下:
- 集群调度组件定期上报芯片和节点信息;kubelet上报节点芯片数量到node(节点对象)中。
- Ascend Device Plugin定期上报芯片拓扑信息。
- 上报整卡信息。将芯片的物理ID上报到device-info-cm中;可调度的芯片总数量(allocatable)和已使用的芯片数量(allocated)上报到node中,用于整卡调度。
- 上报vNPU相关信息到node中,用于静态vNPU调度。
- NodeD定期上报节点健康状态和节点硬件故障信息到node-Info-cm中。
- Ascend Device Plugin定期上报芯片拓扑信息。
- ClusterD读取device-info-cm和node-Info-cm中信息后,将信息写入cluster-Info-cm。
- 用户通过kubectl或者其他深度学习平台下发deploy任务。
- kube-controller为任务创建相应Pod。
- volcano-controller创建任务podGroup。关于podGroup的详细说明,可以参考开源Volcano官方文档。
- volcano-scheduler根据节点和芯片拓扑信息为任务选择合适节点,并在Pod的annotation上写入选择的芯片信息。
- kubectl创建容器时,调用Ascend Device Plugin挂载芯片,Ascend Device Plugin在Pod的annotation上写入芯片信息。Ascend Docker Runtime协助挂载相应资源。
父主题: 整卡调度或静态vNPU调度(推理)

