昇腾算力集群是基于华为昇腾系列芯片构建的高性能AI计算集群,依托自研达芬奇架构与全栈软件生态,实现算力的规模化聚合与高效调度,专为大模型训练、推理部署、科学计算等算力密集型场景设计。其组成遵循“硬件层-软件层-管理调度层”的分层架构,各层组件协同联动,既保证单节点算力的充分释放,又实现多节点的高效协同,同时通过标准化部署与管理工具,降低集群运维成本。

一、昇腾算力集群的核心组成架构

昇腾算力集群的组成可分为三大核心层级,从底层硬件到上层管理形成完整闭环,各层级组件相互支撑,构成“算力供给-算力调度-算力运维”的全链路体系,充分体现“硬件开放、软件开源”的战略理念,适配从边缘集群到超大规模智算集群的全场景需求。

(一)硬件层:算力集群的物理基石

硬件层是昇腾算力集群的核心算力来源,由计算节点、互联网络、存储系统三大核心组件构成,依托昇腾芯片的达芬奇架构优势,构建高算力、低延迟、可扩展的硬件底座,形成“芯片-模组-整机-集群”的四级产品体系。

1. 计算节点:集群的核心算力单元,主要由昇腾NPU芯片、鲲鹏CPU、内存、本地存储组成。其中,昇腾NPU芯片是核心,主流型号包括Ascend 910系列(训练旗舰,FP16算力最高达256 TFLOPS)和Ascend 310系列(推理主力,INT8算力达64 TOPS),基于达芬奇架构,通过Cube计算单元、统一内存架构实现高效AI计算;鲲鹏CPU负责通用计算与任务调度,搭配大容量内存与高速SSD,保障节点数据处理与存储效率。单计算节点通常搭载1-8张Atlas系列板卡(如Atlas 300T训练卡、Atlas 300I A2推理卡),集成昇腾芯片与互联接口,支持热插拔扩展。

2. 互联网络:负责各计算节点间的高速数据传输,是集群多节点协同的关键。主流采用华为自研HCCS高速互联协议,搭配CloudEngine交换机,单节点互联带宽可达200Gbps,集群扩展时性能衰减率低于10%;超大规模集群(如384超节点)采用CloudMatrix架构,实现384颗昇腾芯片的紧耦合互联,跨设备通信延迟降低50%,为千亿参数模型训练提供支撑。

3. 存储系统:适配集群海量数据存储需求,分为本地存储与分布式存储。本地存储采用高速SSD,保障单节点数据读写速度;分布式存储(如华为OceanStor系列)采用分布式架构,提供PB级存储容量与高吞吐量,支持训练数据、模型文件的集中管理与共享,解决大模型训练中海量数据的存储与访问瓶颈。

2. 框架层:以昇思MindSpore为核心,原生适配昇腾硬件,提供自动并行、内存优化等高级能力,支持大模型的分布式训练与推理;同时通过Ascend Extension插件,实现与其他主流框架的无缝对接,降低开发门槛。

3. 应用使能层:包括ModelZoo模型仓库、BoostKit应用加速包等,提供CV、NLP等领域的预训练模型与行业解决方案,支持一键部署,同时提供推理优化方案(如Ascend-vLLM),解决大模型推理的显存压力与算力利用率问题。

(三)管理调度层:集群高效运行的保障

管理调度层负责集群资源的统一管理、任务调度与运维监控,核心组件包括集群管理工具、任务调度系统与监控工具,实现集群的自动化部署、高效调度与稳定运行,降低运维成本。

1. 集群管理工具:如Ascend Deployer,支持驱动、CANN、MindCluster等组件的在线/离线下载、批量安装与升级,可实现多节点自动化部署,节省部署时间;MindCluster组件提供性能测试、故障诊断等功能,保障集群稳定运行。

2. 任务调度系统:负责集群资源的动态分配与任务调度,支持多任务并行执行,根据任务算力需求,自动分配计算节点、内存、存储等资源,优化资源利用率;支持张量并行、数据并行等分布式训练策略,提升大模型训练效率。

3. 监控工具:如npu-smi、GPUStack,实时监控集群节点的NPU算力利用率、显存占用、温度等关键指标,支持异常报警,便于运维人员及时排查问题;GPUStack还支持模型管理、服务部署等功能,适配中小企业集群运维需求。

二、昇腾算力集群实操代码示例

以下代码示例基于昇腾910B芯片、openEuler 22.03操作系统,覆盖集群基础部署、节点监控、分布式训练调度三个核心场景,注释详细、可直接在集群环境运行,直观呈现集群组成组件的实际应用。

示例1:集群基础部署(Ascend Deployer工具使用)

该示例使用Ascend Deployer工具,完成集群节点的基础软件批量部署,包括驱动、CANN、MindSpore框架,适配多节点集群部署场景,可在集群管理节点执行。

# 1. 下载并解压Ascend Deployer工具
wget https://ascend-deployer-code仓/ascend-deployer-{version}.zip
unzip ascend-deployer-{version}.zip
cd $HOME/ascend-deployer-{version}/ascend_deployer

# 2. 在线下载集群所需软件包(适配openEuler 22.03 aarch64架构)
bash start_download.sh --os-list=openEuler_22.03_aarch64 --download=CANN==8.3.RC1,MindSpore==2.3.0,driver==25.0.RC1.1

# 3. 批量部署软件到集群节点(需提前配置节点免密登录)
# 编写节点列表文件nodes.txt,每行一个节点IP
echo -e "192.168.1.101\n192.168.1.102\n192.168.1.103" > nodes.txt

# 执行批量安装
bash start_install.sh --node-list=nodes.txt --install=CANN,MindSpore,driver

# 4. 验证部署结果(查看集群节点CANN版本)
for node in $(cat nodes.txt); do
    ssh $node "cat /usr/local/Ascend/ascend-toolkit/version.txt"
done
echo "昇腾算力集群基础软件部署完成!"

代码说明:Ascend Deployer工具支持集群节点的批量部署,无需逐节点手动安装,大幅提升部署效率;该脚本完成驱动、CANN、MindSpore的下载与安装,为集群算力释放与应用开发奠定基础,适配昇腾集群的标准化部署需求。

示例2:集群节点监控(npu-smi工具使用)

该示例使用npu-smi工具,实时监控集群各节点的NPU状态,包括算力利用率、显存占用、温度等关键指标,助力集群运维,可在管理节点执行。

# 1. 编写集群监控脚本,批量获取各节点NPU状态
cat > cluster_monitor.sh << EOF
#!/bin/bash
# 集群节点IP列表
NODES=("192.168.1.101" "192.168.1.102" "192.168.1.103")
# 循环获取各节点NPU信息
for node in "\${NODES[@]}"; do
    echo -e "\n========== 节点\$node NPU状态 =========="
    # 远程执行npu-smi命令,获取算力、显存、温度信息
    ssh \$node "npu-smi info -t device -i 0" | grep -E "Utilization|Memory Usage|Temperature"
done
EOF

# 2. 赋予脚本执行权限并运行
chmod +x cluster_monitor.sh
./cluster_monitor.sh

# 3. 查看指定节点详细监控信息(如192.168.1.101)
ssh 192.168.1.101 "npu-smi info -t performance -i 0"
EOF

代码说明:npu-smi是昇腾NPU专属监控工具,可实时获取硬件运行状态;该脚本通过批量远程执行命令,汇总集群所有节点的NPU信息,便于运维人员快速掌握集群算力利用情况,及时发现硬件异常,保障集群稳定运行。

示例3:集群分布式训练调度(MindSpore分布式训练)

该示例基于MindSpore框架,实现集群多节点分布式训练,调用集群多节点算力,体现集群多节点协同能力,可直接在集群管理节点提交任务。

import mindspore as ms
from mindspore import nn, Tensor
from mindspore.communication import init, get_rank, get_group_size
import numpy as np

# 1. 初始化集群分布式环境(适配昇腾集群)
ms.set_context(device_target="Ascend", mode=ms.GRAPH_MODE)
# 初始化分布式通信,指定集群节点数量
init()
rank = get_rank()  # 当前节点编号
group_size = get_group_size()  # 集群节点总数
print(f"当前节点编号:{rank},集群节点总数:{group_size}")

# 2. 定义简单神经网络模型
class SimpleNet(nn.Cell):
    def __init__(self):
        super(SimpleNet, self).__init__()
        self.fc1 = nn.Dense(10, 512, activation="relu")
        self.fc2 = nn.Dense(512, 10, activation="softmax")

    def construct(self, x):
        x = self.fc1(x)
        x = self.fc2(x)
        return x

# 3. 准备训练数据(集群各节点分布式加载数据)
def create_dataset(rank, group_size):
    np.random.seed(1 + rank)
    data = np.random.randn(1000, 10).astype(np.float32)
    label = np.random.randint(0, 10, size=(1000,)).astype(np.int32)
    # 分布式数据分片,每个节点处理部分数据
    data = data[rank::group_size]
    label = label[rank::group_size]
    return Tensor(data), Tensor(label)

# 4. 配置训练参数,启动分布式训练
net = SimpleNet()
loss_fn = nn.CrossEntropyLoss()
optimizer = nn.Adam(net.trainable_params(), learning_rate=0.001)
data, label = create_dataset(rank, group_size)

# 分布式训练
for epoch in range(5):
    output = net(data)
    loss = loss_fn(output, label)
    loss.backward()
    optimizer.step()
    optimizer.clear_grad()
    if rank == 0:  # 主节点输出训练日志
        print(f"Epoch {epoch+1}, Loss: {loss.asnumpy():.4f}")

print(f"节点{rank}训练完成!")

该示例通过MindSpore的分布式通信接口,实现集群多节点协同训练,各节点分片处理数据,充分利用集群算力;mpirun命令用于调度集群节点资源,分配训练任务,体现了昇腾算力集群“多节点协同、算力聚合”的核心优势,适配大模型分布式训练场景。

昇腾算力集群的组成围绕“硬件聚合、软件赋能、管理提效”展开,硬件层提供核心算力,软件层释放硬件潜能,管理调度层保障高效运行,三者协同形成完整的算力体系。本文梳理的核心组成与代码示例,覆盖了集群部署、监控、调度等核心场景,可直接在昇腾集群环境运行,帮助开发者快速理解昇腾算力集群的组成逻辑与实操方法。随着昇腾生态的不断完善,昇腾算力集群已广泛应用于智算中心、行业智能化转型等场景,成为国产AI算力的核心支撑。

Logo

鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。

更多推荐