昇腾 AI 集群服务器架构:多维混合并行
昇腾 AI 集群基于 910B/910C NPU、HCCL 集合通信、MindSpore/MindFormers 构建分布式训练底座。大模型训练普遍采用多维混合并行,融合数据并行(DP)、张量并行(TP)、流水线并行(PP)、专家并行(EP),解决单卡显存不足、通信瓶颈、算力利用率低等痛点。
多维混合并行依托集群服务器网络(RoCE v2)、HCCL 跨机通信、框架分布式原语协同调度。本文基于昇腾集群、MindSpore 分布式接口,提供并行配置、初始化代码、通信调试脚本。
硬件环境:昇腾 910B 集群,MindSpore 2.3,CANN 8.x,HCCL,RoCE 高速网络
一、多维混合并行基础架构
多维并行维度定义:
TP 张量并行:单层 Transformer 切分到多个 NPU,层内横向拆分;单机内为主,低延迟通信;
PP 流水线并行:模型纵向分层切分,多卡串联执行;缓解单卡显存压力;
EP 专家并行:MoE 模型专家路由拆分;
DP 数据并行:完整模型副本,分发不同训练样本;
全局并行关系:WorldSize = DP * TP * PP * EP。
昇腾集群中,TP 优先单机内部署,PP/DP 跨服务器依托 RoCE+HCCL 通信。
二、MindSpore 多维混合并行初始化代码
import mindspore as ms
from mindspore.communication import init, get_rank, get_group_size
from mindspore.parallel import set_algo_parameters
from mindspore.context import ParallelMode
# ========== 1. 多维并行超参配置 ==========
# 根据昇腾集群拓扑设置
DP_SIZE = 2 # 数据并行维度
TP_SIZE = 2 # 张量并行维度
PP_SIZE = 2 # 流水线并行维度
EP_SIZE = 1 # MoE专家并行,非MoE模型置1
WORLD_SIZE = DP_SIZE * TP_SIZE * PP_SIZE * EP_SIZE
def init_ascend_mixed_parallel():
# 昇腾NPU设备设置
ms.set_context(mode=ms.GRAPH_MODE, device_target="Ascend")
# 初始化通信域 HCCL
init()
rank_id = get_rank()
world_size = get_group_size()
print(f"Global rank:{rank_id}, world size:{world_size}")
# 校验集群启动进程数量匹配多维配置
assert world_size == WORLD_SIZE, f"进程数{world_size} != DP*TP*PP={WORLD_SIZE}"
# 设置自动并行策略,开启多维混合并行
ms.set_auto_parallel_context(
parallel_mode=ParallelMode.AUTO_PARALLEL,
gradients_mean=True,
full_batch=True,
enable_parallel_optimizer=True,
search_mode="sharding_propagation"
)
# 多维并行切分参数
set_algo_parameters(
fully_use_devices=True,
tensor_parallel=TP_SIZE,
pipeline_parallel=PP_SIZE,
data_parallel=DP_SIZE
)
return rank_id
# 执行初始化
if __name__ == "__main__":
rank = init_ascend_mixed_parallel()
三、Transformer 模型多维切分示例(MindSpore)
import mindspore as ms
from mindspore.communication import init, get_rank, get_group_size
from mindspore.parallel import set_algo_parameters
from mindspore.context import ParallelMode
# ========== 1. 多维并行超参配置 ==========
# 根据昇腾集群拓扑设置
DP_SIZE = 2 # 数据并行维度
TP_SIZE = 2 # 张量并行维度
PP_SIZE = 2 # 流水线并行维度
EP_SIZE = 1 # MoE专家并行,非MoE模型置1
WORLD_SIZE = DP_SIZE * TP_SIZE * PP_SIZE * EP_SIZE
def init_ascend_mixed_parallel():
# 昇腾NPU设备设置
ms.set_context(mode=ms.GRAPH_MODE, device_target="Ascend")
# 初始化通信域 HCCL
init()
rank_id = get_rank()
world_size = get_group_size()
print(f"Global rank:{rank_id}, world size:{world_size}")
# 校验集群启动进程数量匹配多维配置
assert world_size == WORLD_SIZE, f"进程数{world_size} != DP*TP*PP={WORLD_SIZE}"
# 设置自动并行策略,开启多维混合并行
ms.set_auto_parallel_context(
parallel_mode=ParallelMode.AUTO_PARALLEL,
gradients_mean=True,
full_batch=True,
enable_parallel_optimizer=True,
search_mode="sharding_propagation"
)
# 多维并行切分参数
set_algo_parameters(
fully_use_devices=True,
tensor_parallel=TP_SIZE,
pipeline_parallel=PP_SIZE,
data_parallel=DP_SIZE
)
return rank_id
# 执行初始化
if __name__ == "__main__":
rank = init_ascend_mixed_parallel()
MindSpore 自动并行模块根据多维配置,自动完成:张量权重切分、流水线 stage 分配、梯度聚合、HCCL 通信域创建。
四、昇腾集群启动脚本(msrun 分布式拉起)
start_cluster.sh,适配多服务器昇腾集群,RoCE 网络 + HCCL:
#!/bin/bash
# 昇腾集群多维混合并行启动脚本
export HCCL_IF_IP=192.168.1.0/24 # RoCE网卡网段
export HCCL_ALLOW_P2P_WITH_MULTI_STREAM=1
export ASCEND_RT_VISIBLE_DEVICES=0,1,2,3
# 全局总卡数 DP*TP*PP = 2*2*2=8卡
msrun --worker_num=8 \
--local_worker_num=4 \
--master_addr="192.168.1.10" \
--master_port=29500 \
--log_dir=./parallel_log \
python train_mixed_parallel.py
关键环境变量:
HCCL_IF_IP 指定 RoCE 网卡,跨机并行必须配置;
多机集群所有节点执行该脚本,自动构建全局通信域。
五、HCCL 通信调试脚本(定位集群并行通信瓶颈)
# hccl_check.sh 检测集群NPU间通信连通性
#!/bin/bash
export HCCL_IF_IP=192.168.1.0/24
# HCCL单机/跨机带宽测试
ascend-samples hccl_test \
--device_num=8 \
--test_type=allreduce \
--data_size=102400000
多维混合并行场景,TP 依赖单机 AllReduce;DP/PP 依赖跨机 AllGather、Send/Recv。通信测试用于判断 RoCE 网络是否成为并行训练瓶颈。
六、多维并行负载与拓扑优化代码(约束策略)
# 并行拓扑约束:TP尽量限制单机内,减少跨机通信开销
from mindspore.parallel import set_parallel_constraint
def set_ascend_topology_constraint():
# 张量并行维度不跨服务器,优化通信时延
set_algo_parameters(tensor_parallel_within_server=True)
# 流水线Stage均衡分配,避免部分NPU空闲
set_algo_parameters(pipeline_balance_virtual_pipeline=True)
# 开启虚拟流水线,提升PP利用率
ms.set_auto_parallel_context(
pipeline_stages=PP_SIZE,
virtual_pipeline=2
)
set_ascend_topology_constraint()
昇腾集群实践规范:TP 布局单机内部;PP 可以跨节点;DP 维度全局扩展。违背该拓扑会引发 RoCE 流量暴涨,训练吞吐量暴跌。
七、典型问题与集群架构调优要点
通信域冲突
多维并行会创建多个 HCCL 子通信组,MindSpore 自动管理;旧版本框架建议手动划分通信域,避免集合通信互相抢占带宽。
显存不均衡
PP 流水线并行不同 stage 计算量不均,启用virtual_pipeline虚拟流水线,提升昇腾 NPU 利用率。
网络瓶颈
TP 优先单机,减少跨机 AllReduce;超大模型 PP 跨节点时,RoCE 交换机开启优先级队列。
启动进程匹配
WorldSize严格等于 DP×TP×PP,进程数量不匹配直接触发并行初始化失败。
八、总结
昇腾 AI 集群服务器依托 NPU 硬件、HCCL 高速通信、MindSpore 自动并行框架,实现 DP/TP/PP/EP 多维混合并行架构。多维并行解决超大模型训练显存墙问题,合理的维度切分与集群拓扑布局,平衡算力、显存、通信带宽三者关系。
从工程落地角度,开发者通过 MindSpore 并行接口配置多维参数,配合 msrun 集群调度脚本拉起分布式任务;依托 HCCL 环境变量绑定 RoCE 网卡,保障跨服务器通信性能。多维并行不是维度越大越好,需要结合昇腾服务器单机卡数、交换机组网结构调整 TP/PP/DP 配比。
在千亿大模型训练场景,多维混合并行是昇腾集群标准部署方案,配合集群负载调度、通信性能监控,充分释放集群整体算力。
更多推荐



所有评论(0)