4. Infiniband网络拓扑:常见拓扑结构(Fat-Tree、Torus等)及其优缺点

4.1 核心原理:拓扑如何决定集群的“交通规则”

在Infiniband网络中,拓扑结构决定了计算节点(服务器)、交换机(Switch)和存储系统之间的物理连接方式,进而影响数据流动的路径、带宽利用率、延迟特性以及故障隔离能力。与以太网常见的“无脑”树形或网状结构不同,Infiniband最初为高性能计算(HPC)和AI训练集群设计,其拓扑必须满足两个核心诉求:高双向带宽和低拥塞延迟。

理解拓扑的关键在于三个概念:度(Degree)——每个交换机端口数;对分带宽(Bisection Bandwidth)——将网络切成两半时,跨切面链路的总带宽;路径多样性——任意两点间可用的等价路径数量。Fat-Tree和Torus正是围绕这三个指标做出的不同设计取舍。

核心指标速查

  • 对分带宽:衡量网络最坏情况下的吞吐能力,Fat-Tree通常可做到无阻塞(1:1),Torus则随维度增加而提升。
  • 路径多样性:Fat-Tree有多条等价路径(ECMP),Torus有环形路径但非等价。
  • 扩展成本:Fat-Tree交换机数量随端口数平方增长,Torus交换机数量线性增长。
Fat-Tree vs Torus 拓扑结构对比 Fat-Tree(叶脊两层示例) Spine 1 Spine 2 Spine 3 Leaf 1 Leaf 2 Leaf 3 Node 1 Node 2 Node 3 Node 4 Node 5 ✓ 无阻塞:任意叶到叶带宽 = 端口速率 ✓ 多路径:ECMP 支持负载均衡 ✗ 成本高:交换机数量 ≈ 节点数 × 层数 2D Torus(4×4 网格环绕) S00 S01 S02 S03 S10 S11 S12 S13 S20 S21 S22 S23 S30 S31 S32 S33 环绕 链路 ✓ 成本低:每节点仅需 4 端口(2D) ✓ 可扩展:增加维度或节点数即可 ✗ 对分带宽低:远距离通信跳数多

4.2 方法流程:如何选择与设计拓扑

实际部署中,拓扑选择并非“越贵越好”,而是根据应用通信模式、集群规模和预算综合决策。以下为典型的设计流程:

  1. 分析通信特征:检查应用是否属于“全对全”(All-to-All)通信(如深度学习数据并行),还是“邻近通信”(如网格计算)。全对全需要高对分带宽,邻近通信则对局部带宽更敏感。
  2. 确定规模与端口数:假设有N个计算节点,每个节点1个HCA端口。若选用Fat-Tree,需要确定交换机端口数P,则层数L = logP/2(N),总交换机数 ≈ N × L。若选用Torus,维度D决定每个节点需要的交换机端口数(2D需4端口,3D需6端口)。
  3. 计算对分带宽需求:AI训练集群通常要求对分带宽不低于聚合带宽的50%,否则会出现通信瓶颈。Fat-Tree可轻松达到100%,而2D Torus在规模较大时可能降至20%以下。
  4. 评估路由与容错:Fat-Tree配合自适应路由(如AR)可在链路故障时快速切换;Torus则需要更复杂的路由算法(如Dimension Order Routing)避免死锁。
  5. 模拟验证:使用NVIDIA UFM或开源工具(如BookSim)进行流量模拟,观察热点和延迟分布。

经验法则:对于不超过2000节点的AI训练集群,推荐使用两层或三层Fat-Tree;对于超大规模(>10000节点)且对成本敏感的HPC集群,可考虑3D Torus或Dragonfly+混合拓扑。

4.3 案例/场景:真实集群的拓扑选择

案例1:NVIDIA DGX SuperPOD(AI训练)

DGX SuperPOD采用两层Fat-Tree(叶脊架构),每个DGX A100/H100节点配备8个HCA端口,分别连接到不同的Leaf交换机。脊层交换机数量与叶层相同,确保任意两个节点间的通信最多经过3跳,且对分带宽达到1:1。这种设计使得大规模Transformer模型训练时的All-Reduce通信延迟稳定在微秒级。

案例2:Frontier超算(科学计算)

Frontier(目前TOP500排名前列)采用HPE Slingshot互连,其拓扑为Dragonfly(蜻蜓)的变体,而非传统Torus。但在早期Cray XT系列(如Jaguar)中,3D Torus是主流选择。Torus的优势在于:每个交换机仅需6个端口(3D),成本极低,且对于网格类科学计算(如分子动力学)的邻近通信效率极高。

案例3:中小型GPU集群(8~64节点)

对于单机8卡、4~8台服务器的场景,通常直接使用单层Fat-Tree(即一个核心交换机连接所有节点),无需脊层。此时拓扑退化为星型,但通过Infiniband的拥塞控制机制仍能保证良好性能。

拓扑类型 典型规模 对分带宽 成本指数 适用场景
单层Fat-Tree(星型) ≤64节点 100% 低 小规模GPU集群
两层Fat-Tree 64~2000节点 100% 中高 AI训练、HPC
3D Torus 1000~10000+ 30%~60% 低 大规模科学计算
Dragonfly+ 10000+ 50%~80% 中 超大规模HPC

4.4 误区/复盘:常见设计陷阱

误区1:盲目追求“无阻塞”

很多工程师认为Fat-Tree必须做到1:1无阻塞才算合格。实际上,对于某些通信模式(如参数服务器架构),少量阻塞(如2:1收敛比)对整体性能影响不足5%,却能节省近40%的交换机成本。建议先做应用画像,再决定收敛比。

误区2:忽略Torus的“边缘效应”

在Torus中,虽然逻辑上存在环绕链路,但物理线缆长度差异会导致延迟不均。例如,跨越机柜的环绕链路可能比相邻链路多出数十米光纤,引入额外延迟。设计时应尽量将频繁通信的节点放置在物理相邻位置,并利用子网管理器(Subnet Manager)的路径计算功能优化路由。

误区3:混淆“端口数”与“节点数”

规划Fat-Tree时,必须区分交换机端口总数和可用端口数。例如,一台36端口的EDR交换机,若用于两层Fat-Tree的脊层,则每个脊交换机需要连接所有叶交换机,实际可用端口数会减少。常见错误是直接按“节点数/交换机端口数”估算交换机数量,导致端口不足。

复盘建议:在部署前使用NVIDIA UFM或ibdiagnet工具进行拓扑验证,检查是否存在非对称链路或过度订阅。同时,务必在子网管理器(OpenSM)中启用自适应路由(AR)和基于延迟的路径选择,以充分发挥Fat-Tree的多路径优势。对于Torus,则需确认路由算法是否支持容错(如启用LASH或DFSSSP),避免单点故障导致整个环断开。