news 2026/9/30 20:51:31

昇腾 AI 集群服务器架构:多维混合并行

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
昇腾 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 配比。

在千亿大模型训练场景,多维混合并行是昇腾集群标准部署方案,配合集群负载调度、通信性能监控,充分释放集群整体算力。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/30 20:46:04

多回路温控模块实战:TPID算法与Modbus RTU通讯配置详解

1. 多温区设备控温的痛点与破局思路做过多温区设备调试的人都有一个共同感受:单表堆砌的时代该翻篇了。一台热压机四个温区、一台注塑机六个加热段、一条锂电池烘烤线十几个温区,如果每个温区都挂一台独立的温控表,配电柜里密密麻麻的接线、参…

作者头像 李华
网站建设 2026/9/30 20:35:49

用 AI 写东西但别被平台抓到,我是这么干的

AI 辅助写作工程化笔记:智能体 Skill 手写模式 去 AI 痕迹实践 之前一直在用AI写公众号推文,后续平台审核越来越严格我就在想一个事怎么才能 让AI 写完东西后,看起来不那么像 AI 写的。 听起来矛盾,但实际场景就这样。头条号、…

作者头像 李华