昇腾大模型训练与推理全链路

需要在昇腾 NPU 上做大模型分布式训练与多机推理,想了解平台侧编排机制时阅读

部署安装 / GPU与异构算力 / 华为昇腾NPU
昇腾AscendNPU大模型训练大模型推理MindSporeMindFormersMindIEVolcano多机多卡分布式训练rank tablehccn_toolatb_llmRDMAgang scheduling

昇腾大模型训练与推理全链路

在昇腾 NPU 上跑大模型的国产化链路:MindSpore / MindFormers 分布式训练 → MindIE 多机推理。本篇讲平台侧的编排机制;MindIE 单篇见 03-MindIE分布式推理

一、链路全景

数据/模型准备 → MindSpore/MindFormers 分布式训练(Volcano 多 Worker)
             → 模型登记(model-register) → MindIE 多机推理(rank table + ATB) → 对外 API

昇腾侧支撑该链路的组件(install/kubernetes/ascend/readme.md):

组件 作用
Ascend Device Plugin 上报 NPU 资源、设备发现/健康检查
Volcano NPU 亲和调度、gang scheduling、故障重调度
Ascend Operator 分布式训练生命周期、生成框架环境变量
HCCL Controller 生成分布式训练集合通信配置
NPU Exporter 采集 NPU 利用率/显存/温度
Resilience Controller / Elastic Agent 故障剔除续训、保存临终 CheckPoint
MindIO ACP / TTP 用内存加速 CheckPoint 保存/加载

二、分布式训练:MindSpore/MindFormers on Volcano

任务模板 mindsporemindformers,launcher 位于 job-template/job/deep-learning-framework/(mindformers 复用 mindspore launcher)。核心机制:

  • Volcano gang scheduling:使用 batch.volcano.sh/v1alpha1 Job,minAvailable 保证多副本同时调度。
  • --num_worker 定副本:所有 Worker 共用同一 Pod 模板,launcher 依平台环境变量(KFJ_TASK_IMAGESKFJ_TASK_VOLUME_MOUNTKFJ_TASK_RESOURCE_* 等)生成 Job tasks
  • 算力/组网/容错:按 GPU/NPU 数量申请资源 + gpu-type 节点选择器;配置 RDMA 时申请 RDMA 资源并加 IPC_LOCK;同 Job Worker 做 kubernetes.io/hostname 反亲和分散节点。
  • 可观测:监控线程轮询 Job 状态;主线程用 stern 汇聚打印所有 Worker 日志;失败以非 0 退出码返回供流水线判断。
参数 含义 默认
--num_worker Worker 数量 3
--image 运行镜像(空则用 KFJ_TASK_IMAGES
--working_dir 工作目录 /mnt/
--command 训练命令 python3 mnist.py

launcher 依赖的平台注入环境变量(部分):

类别 环境变量
任务/流水线 KFJ_NAMESPACEKFJ_PIPELINE_IDKFJ_TASK_IDKFJ_RUN_IDKFJ_CREATORKFJ_RUNNER
镜像/挂载 KFJ_TASK_IMAGESKFJ_TASK_VOLUME_MOUNT
资源 KFJ_TASK_RESOURCE_CPU/MEMORY/GPUGPU_RESOURCE_NAMEKFJ_TASK_RESOURCE_RDMARDMA_RESOURCE_NAME
调度 KFJ_TASK_NODE_SELECTOR

同一 launcher 机制支撑 pytorch/deepspeed/megatron/colossalai/horovod/mxnet/paddle;昇腾走 mindspore/mindformers 分支。launcher 先按 run-id 清旧 Job 再建新 Job,监控线程约 60s 轮询状态,主线程用 stern 汇聚全 Worker 日志(每小时重启规避长跟踪限制),失败以非 0 退出码返回。

三、多机推理:MindIE + rank table

镜像目录 images/serving/mindie/,服务本体在镜像 /usr/local/Ascend/mindie/latest/mindie-service/。多机组网自动化:

  • 生成 rank tablegenerate_rank_table.py 从 Volcano 注入的 VC_WORKER_NUM/VC_MASTER_NUM/VC_TASK_INDEX/ROLE 算节点数与角色,用 hccn_tool -i <n> -ip -g 读取本机各 NPU 卡 IP,生成 ranktable-<run_id>.json,推导 MASTER_IPWORLD_SIZE。交给 MindIE 的环境变量(source_mul_env.sh):
    export RANK_TABLE_FILE=${MODEL_PATH}/ranktable-${KUBEFLOW_RUN_ID}.json
    export MIES_CONTAINER_IP=$K8S_POD_IP
    export MASTER_IP=$(cat /master)
    export WORLD_SIZE=$(cat /world_size)
    
  • ATB 模型与环境:镜像 /opt/package 下提供 ATB Model 软件,解压到分布式存储后 pip3 install atb_llm-<version>-py3-none-any.whlsource /usr/local/Ascend/llm_model/set_env.sh 配环境。支持模型列表与参数以昇腾 MindIE 官方文档为准。
  • 平台纳管:MindIE 服务由 Volcano 编排多机 Worker,纳入项目组配额、监控告警、流量网关,对外标准 API。

四、国产化意义

训练(MindSpore/MindFormers)与推理(MindIE+ATB)均不依赖 CUDA;全程云原生纳管;配合 ARM64(鲲鹏/飞腾)、麒麟/统信 UOS、达梦、内网离线,构成从硬件到大模型的完整国产化栈。

最后更新 2026-08-24完整文档以官方仓库为准:GitHub Wiki