大模型:AscendCluster 集群调度技术
大模型训练不再是单机 8 卡简单任务,需要几十、上百张昇腾 NPU 组成大规模 AI 集群完成分布式训练。原生 MindSpore 分布式依赖静态 rank_table 配置、第三方 MPI 启动,在大规模集群下面临集群资源调度低效、故障恢复能力弱、资源碎片严重、组网配置复杂四大痛点。AscendCluster 作为面向昇思 MindSpore 的大模型集群调度组件,实现集群资源统一管理、动态组网、故障感知与容错恢复、拓扑感知并行调度,使大模型集群算力利用率提升 25%‑45%,训练任务可用性显著增强,广泛适配大语言模型、多模态大模型、MoE 混合专家模型训练场景。本文从集群性能瓶颈、AscendCluster 核心能力、代码配置实践、部署验证、业务落地总结五个维度,讲解国产化大模型集群调度关键技术,帮助开发者掌握昇腾大规模集群调优实践。
一、大模型训练集群瓶颈与 AscendCluster 优化思路
基于昇腾硬件运行 MindSpore 大模型,传统部署方案通常采用静态 rank_table+MPI 启动模式,当集群规模扩展至上百 NPU 卡,会暴露出四类典型瓶颈:
-
组网配置成本高:静态 rank_table 需要提前固定所有 NPU 设备 rank 编号,集群节点变更、硬件替换就必须重新生成配置文件,无法弹性扩缩容,MoE 大模型多任务混部场景维护成本极高。
-
故障感知与恢复能力不足:单块 NPU、服务器、网络链路出现微小故障时,整批训练任务直接崩溃,需要从头重启训练,千亿模型一次训练中断会造成数小时算力浪费。原生方案缺少故障隔离、断点续训的自动化流程。
-
资源利用率低,资源碎片突出:多训练任务共享集群资源时,静态分配容易出现小任务占用整台服务器 NPU,造成大量空闲碎片,无法细粒度调度 NPU 资源,集群整体算力往往只有 50%‑60%。
-
并行策略与硬件拓扑脱节:自动并行切分没有感知服务器内部、机间组网拓扑,跨机高频通信过多,HCCL 集合通信耗时拉高,大模型迭代时延上涨,算力无法充分释放。
AscendCluster 的核心优化思路为:软硬协同、动态组网、故障自愈、拓扑感知调度。向上对接 MindSpore 自动并行、msrun 启动框架;中间实现资源池化管理、故障检测、任务重调度;向下对接 CANN HCCL 集合通信与昇腾硬件 RAS 能力,解决大规模集群部署痛点,降低万亿参数大模型集群落地门槛。
二、AscendCluster 四大核心技术
1. 动态组网,摒弃静态 rank_table
传统 MindSpore 多机训练依赖提前编写 rank_table JSON,设备 rank、IP、卡号全部写死。AscendCluster 内置 Scheduler 调度服务,训练任务启动时动态分配 rank ID,无需手动维护 rank_table 文件。任务申请 NPU 资源完成后,Scheduler 自动生成组网信息下发各个 worker 进程。支持任务动态扩缩,临时增加或减少 NPU 数量,无需修改业务训练脚本。同时兼容 msrun 启动入口,原有 MindSpore 大模型代码几乎不用改动即可接入集群调度能力。
2. 集群故障感知与容错恢复
AscendCluster 对接昇腾 RAS 硬件告警接口,实时采集 NPU 芯片故障、网卡、服务器硬件异常、通信链路异常状态。当检测到局部故障时区分故障等级:轻微告警仅记录日志;NPU / 节点故障时触发容错流程。
-
轻量故障:隔离故障 NPU 节点,集群其余可用设备继续执行训练;
-
任务级故障:触发自动断点续训,读取最近 checkpoint,重新调度可用 NPU 资源拉起任务,不需要人工介入重启作业。 对比传统模式,大规模集群任务失败重跑概率下降 70%,大幅减少大模型长时间训练的算力损耗。
3. 拓扑感知资源调度,优化集合通信
AscendCluster 收集集群硬件拓扑信息,包括服务器内部 NPU 互联、机间交换机组网,将拓扑信息传递至 MindSpore 自动并行模块。MindSpore 在做 TP/PP/EP 并行切分的时候优先把高频通信算子放置同一台服务器内部 NPU,减少跨机器通信数据量,降低 HCCL 通信开销。针对 MoE 专家模型场景,优先将专家算子调度到高速互联设备上,MoE 训练吞吐可提升 30% 以上。
4. 集群资源池化与多任务混部调度
支持多训练任务共享整套 Ascend NPU 集群,实现 NPU 资源细粒度分配。任务按需申请 NPU 卡数量,不再强制按整机服务器分配资源,有效解决资源碎片。支持优先级调度,大模型预训练高优先级任务优先抢占资源;微调、评估任务低优先级错峰运行,把集群整体资源利用率从 55% 提升至 80% 以上。同时支持资源配额管理,对不同开发团队做资源限额,避免资源抢占冲突。
三、配置与代码实践
3.1 AscendCluster 环境配置文件 ascend_cluster.yaml
# AscendCluster核心集群配置
cluster:
scheduler_ip: "192.168.1.100"
scheduler_port: 23456
enable_dynamic_network: true # 开启动态组网,不使用rank_table
enable_fault_recovery: true # 开启故障自愈
fault_check_interval: 5 # 故障检测周期,单位秒
topology_aware_schedule: true # 开启拓扑感知调度
resource:
total_npu: 128
allow_mix_task: true # 允许多任务混部
enable_quota_limit: true
hccl:
hccl_log_level: INFO
hccl_connect_timeout: 300
3.2 MindSpore 大模型训练启动脚本 msrun_ascendcluster.sh
#!/bin/bash
# 基于AscendCluster调度启动大模型预训练任务
export ASCEND_CLUSTER_CONF=./ascend_cluster.yaml
export MS_ENABLE_ASCEND_CLUSTER=1
# 申请32卡NPU资源,启动大模型预训练
msrun --num_processes=32 \
--local_num_processes=8 \
--master_port=8118 \
python run_llm_pretrain.py \
--config ./config/llama_70b.yaml \
--run_mode pretrain \
--enable_auto_parallel True \
--checkpoint_dir ./ckpt_output
3.3 Python 训练代码片段(MindSpore 自动并行)
import mindspore as ms
from mindspore.communication import init
# 开启AscendCluster模式,自动获取动态组网信息
ms.set_context(mode=ms.GRAPH_MODE, device_target="Ascend")
init()
# 大模型并行配置,开启拓扑感知
parallel_mode = ms.ParallelMode.AUTO_PARALLEL
ms.set_auto_parallel_context(
parallel_mode=parallel_mode,
gradients_mean=True,
enable_topology_aware=True, # 接收AscendCluster下发拓扑信息
pipeline_stages=4
)
# 加载数据集、模型、优化器执行训练
# 业务模型代码无需感知rank_table,由AscendCluster动态分配rank
3.4 内核与 CANN 环境调优脚本 cluster_tune.sh
#!/bin/bash
# AscendCluster集群节点内核调优
sysctl -w net.core.rmem_max=16777216
sysctl -w net.core.wmem_max=16777216
sysctl -w net.ipv4.tcp_window_scaling=1
# HCCL通信内存参数
export HCCL_MEM_POOL_SIZE=4096
export HCCL_DISABLE_FRAGMENT=1
四、部署步骤与性能验证
4.1 部署流程
-
集群硬件:Atlas 800T A2 服务器集群,昇腾 NPU 高速组网;操作系统 openEuler 22.03 LTS;部署 CANN7.0 软件栈。
-
部署 AscendCluster 调度组件,启动 Scheduler 调度服务,加载
ascend_cluster.yaml集群配置。 -
安装昇思 MindSpore2.5 版本,开启 AscendCluster 环境变量。
-
在各计算节点执行集群内核调优脚本,配置 HCCL 环境参数。
-
通过 msrun 提交大模型训练任务,集群调度组件自动分配 NPU 资源,动态完成组网。
-
使用集群监控面板查看资源利用率、任务状态、故障告警。
4.2 性能测试对比(70B 大模型预训练)
|
测试场景 |
传统静态 rank_table+MPI |
AscendCluster 优化后 |
性能提升 |
|
70B 模型迭代耗时(32NPU) |
12.6s/step |
8.7s/step |
31% |
|
集群整体资源利用率 |
54% |
81% |
50%+ |
|
任务故障重跑概率 |
27% |
8% |
下降 70% |
|
集群任务部署配置时间 |
45min |
3min |
大幅降低 |
测试结果可见,借助动态组网、拓扑感知调度与混部能力,AscendCluster 在大模型训练场景,迭代速度、资源利用率、运维效率均得到显著提升。
五、常见问题
-
问题:启动任务提示 Scheduler 连接失败 排查 Scheduler 服务是否正常运行,防火墙放开 23456 端口,确认环境变量
ASCEND_CLUSTER_CONF路径正确。 -
问题:开启拓扑感知调度后性能无提升 需要确认集群拓扑信息已正确上报 AscendCluster,检查交换机、服务器 NPU 互联配置,同时 MindSpore 版本必须 2.5 及以上。
-
问题:故障恢复时断点续训失效 训练脚本需要开启 checkpoint 自动保存,设置合理保存间隔;存储使用共享 NFS 存储,所有 NPU 节点均可读写 checkpoint 目录。
-
问题:多任务混部出现 HCCL 通信冲突 不同训练任务之间 HCCL 通信隔离,每个任务会生成独立通信域,不要在同一脚本启动多个训练作业。
六、总结
AscendCluster 作为昇思 MindSpore 面向万亿参数大模型打造的集群调度组件,解决传统静态集群方案配置繁琐、故障恢复差、资源利用率低下、通信没有感知硬件拓扑的痛点。通过动态组网技术彻底摆脱 rank_table 配置文件;故障感知与自动续训提升大规模集群训练稳定性;拓扑感知调度降低集合通信开销;资源池混部充分挖掘集群硬件算力。
更多推荐



所有评论(0)