2. 基础知识:算力集群的基本概念、网络拓扑类型及特点

2.1 算力集群的基本概念

算力集群(Compute Cluster)是将大量服务器节点通过高速网络互联,并借助调度与协同软件,使其作为一个统一计算资源池对外提供服务的系统。集群的核心目标不是简单堆叠硬件,而是通过网络拓扑、通信协议与资源管理三层协同,将分散的算力转化为高吞吐、低延迟的并行计算能力。

在集群中,每个节点通常包含CPU、GPU/NPU加速卡、本地内存与存储。节点间通过网卡(如RoCE、InfiniBand)接入交换机网络。衡量集群性能的关键指标包括:

  • 对分带宽(Bisection Bandwidth):将网络切分为两个等大半区时,跨半区通信的最大带宽,决定了最坏情况下的通信能力。
  • 网络直径(Diameter):任意两个节点间最短路径的最大跳数,直接影响通信延迟上限。
  • 路径多样性:任意节点对之间可用等价路径的数量,决定了负载均衡能力与容错性。
  • 扩展性(Scalability):在保持性能特征(如带宽、延迟)不显著劣化的前提下,集群可扩展到的最大节点规模。

理解这些指标是后续学习拓扑动态重构的基础——重构的本质就是在不同拓扑形态间切换,以优化上述指标的组合。

2.2 经典网络拓扑类型与特点

不同拓扑结构在带宽、成本、扩展性和容错性上各有取舍。以下三种拓扑是当前算力集群中最具代表性的设计。

2.2.1 Fat-Tree(胖树)拓扑

Fat-Tree 是一种基于Clos网络的多层无阻塞拓扑,广泛应用于数据中心与超算集群。其核心思想是:越靠近核心层的链路带宽越宽(或链路数量越多),从而避免传统树形结构中根节点成为瓶颈。

一个典型的三层Fat-Tree(以k=4为例)包含:

  • 边缘层(Edge):连接服务器,每个边缘交换机连接k/2台服务器,并向上连接k/2个汇聚交换机。
  • 汇聚层(Aggregation):与边缘交换机组成一个Pod(单元),每个Pod内实现全带宽无阻塞交换。
  • 核心层(Core):连接所有Pod,提供跨Pod通信能力。

Fat-Tree 的显著优势是任意节点间都能获得等分带宽,且路径多样性丰富(k=4时任意节点间有4条等价路径),非常适合通信模式密集且均匀的AI训练场景。其代价是交换机数量与光模块成本较高,且扩展需要成组增加设备。

2.2.2 Torus(环网/网格)拓扑

Torus 是一种直接网络拓扑,每个节点仅与相邻节点连接,形成多维环面结构。常见的二维Torus可视为一个“环形网格”,三维Torus则增加Z轴维度,形成立体环绕连接。

以3D-Torus(4×4×4)为例,共64个节点,每个节点与6个邻居相连(X、Y、Z轴各正负方向)。其特点包括:

  • 成本低:无需大量交换机,节点间直接互联,适合超大规模集群(如日本“富岳”超算采用6D-Torus)。
  • 局部通信高效:相邻节点间延迟极低,适合具有空间局部性的应用(如流体力学模拟、卷积计算)。
  • 全局通信延迟高:最远节点间跳数随维度规模线性增长,对全交换(All-to-All)类通信不友好。

Torus 的路径多样性取决于维度与规模,通常只有2~6条最短路径,且绕行路径会显著增加延迟。因此,Torus 更适合通信模式可预测、以邻近通信为主的科学计算场景。

2.2.3 BCube(立方体连接)拓扑

BCube 是一种专为集装箱级数据中心设计的递归拓扑结构。其构建方式为:将n个交换机与n个服务器组成基本单元,再通过多级递归连接形成更高维结构。

以BCube(4, 2)为例:

  • Level-0:4个服务器连接1个交换机,构成一个基本组。
  • Level-1:将4个Level-0组通过4个交换机互联,形成16个服务器、8个交换机的完整结构。

BCube 的核心优势在于服务器同时承担路由转发功能,使得任意两个服务器间存在多条并行路径(BCube(4,2)中任意节点对间有4条路径),且支持流量感知的负载均衡。其缺点是服务器需要额外处理转发任务,占用CPU资源,且布线复杂度随维度增加而上升。

下表对比了三种拓扑的关键特性:

特性 Fat-Tree Torus BCube
网络类型 间接(交换机网络) 直接(节点互联) 混合(服务器参与转发)
对分带宽 高(无阻塞设计) 低(受限于环面切割) 中高(多路径补偿)
网络直径 固定(如k=4时为4跳) 随规模增长(如4×4×4为6跳) 随维度增长(BCube(4,2)为4跳)
路径多样性 高(k/2条等价路径) 低(2~6条) 高(n条并行路径)
典型规模 数百~数千节点 数千~数万节点 数百~数千节点
主要成本 交换机与光模块 线缆与端口 服务器额外转发开销
适用场景 AI训练、通用云 科学计算、MPI应用 数据中心内部高带宽应用

核心原理小结:三种拓扑分别代表了三种设计哲学——Fat-Tree 用交换机冗余换带宽,Torus 用节点直连换成本与局部效率,BCube 用服务器参与路由换路径灵活性与容错。动态重构的价值在于:根据应用通信特征,在“高带宽均匀”与“低延迟局部”之间动态切换。

2.3 拓扑选择与动态重构的关联

在实际算力集群中,单一静态拓扑往往无法同时满足所有应用的需求。例如:

  • 大模型训练(如GPT类)需要全对全通信,Fat-Tree 能提供稳定高带宽,但成本高。
  • 气象模拟或分子动力学需要邻近通信,Torus 效率更高,但全局通信时性能骤降。
  • 混合负载(训练+推理+数据预处理)同时存在多种通信模式,静态拓扑难以兼顾。

因此,现代算力集群开始引入动态重构能力——通过可编程交换机、光电路交换(OCS)或智能网卡,在运行期调整逻辑拓扑或物理连接,使网络形态匹配当前应用特征。例如:

# 示例:基于OpenFlow的流表切换示意(概念性伪代码)
# 当检测到All-to-All通信模式时,将Torus逻辑拓扑切换为Clos逻辑拓扑
if (traffic_pattern == "all_to_all") {
    apply_flow_rules("fat_tree_mode");
    update_routing_table("ecmp");
} else if (traffic_pattern == "near_neighbor") {
    apply_flow_rules("torus_mode");
    update_routing_table("dimension_order");
}

2.4 常见误区与复盘

误区一:认为Fat-Tree一定优于Torus。实际上,当应用通信具有强局部性时,Torus 的延迟与功耗远优于Fat-Tree。例如在三维网格计算中,Torus 的邻近通信延迟可低至Fat-Tree的1/3,且无需经过核心交换机。

误区二:忽略拓扑重构的切换代价。动态重构并非瞬时完成,涉及路由表刷新、流表同步、链路状态检测等步骤。若切换频率过高,可能造成通信中断或性能抖动。实践中应设定滞回阈值,避免拓扑在两种模式间频繁振荡。

复盘建议:在规划集群拓扑时,先采集真实应用的通信矩阵(Communication Matrix),统计节点间流量分布。若流量集中在少数节点对,优先考虑Torus或BCube;若流量均匀且密集,则Fat-Tree更合适。动态重构应作为“第二层优化”手段,而非替代合理的初始设计。

以下示意图展示了三种拓扑的结构差异及动态重构的切换逻辑:

三种经典拓扑结构对比与动态重构切换 Fat-Tree (k=4) 核心层 (Core) 汇聚层 (Agg) 边缘层 (Edge) ✓ 高对分带宽 ✓ 路径多样 ✗ 成本高 3D-Torus (4×4×4) 环面 每个节点连接6个邻居 X/Y/Z轴正负方向 ✓ 低成本 ✓ 局部低延迟 ✗ 全局通信弱 BCube(4, 2) SW-L0 SW-L1 服务器参与路由转发 多路径并行通信 ✓ 路径丰富 ✓ 容错好 ✗ 服务器开销 动态重构:根据通信模式切换拓扑 流量特征检测 通信矩阵/模式识别 模式? All-to-All 密集 → 切换 Fat-Tree 逻辑 邻近通信为主 → 切换 Torus 逻辑 执行重构 更新流表/路由/链路 执行重构 更新流表/路由/链路 监测 设置滞回阈值避免频繁切换 | 切换代价:路由收敛 + 流表同步 + 链路检测

上图展示了三种拓扑的结构差异,以及动态重构系统如何根据实时通信模式在Fat-Tree与Torus逻辑拓扑之间切换。实际系统中,这种切换可通过可编程交换机的流表重写或光交换矩阵的端口重配置实现,切换时间通常在毫秒至秒级。