互联网络结构

从互联函数到静态拓扑、多级网络与冗余设计

Posted by CloudingYu on June 3, 2026

一、互联网络概述与大模型时代的动机

1.1 为什么需要互联网络

在传统云计算场景中,将几十台、几百台甚至几千台机器连接成机房或机架内局域网,通常已经可以满足分布式系统需求。节点之间需要通信,但通信规模和同步强度相对可控。

大模型训练改变了这一前提。大量 GPU 必须在同一训练任务中高频交换参数、梯度和中间状态,单纯依赖普通局域网或松散的分布式控制难以满足带宽、延迟和同步需求。

1.2 大模型对互联的冲击

近年的大模型训练显著提高了互联需求:

  • 马斯克宣布购买 10 万台 GPU,目标是建设百万 GPU 集群。
  • 大模型参数量从几百 B(Billion)到接近 10 个 T(Trillion)。
  • 训练一个大规模网络,需要几万到几十万 GPU。
  • 少量 GPU 可以用于实验和小规模任务,但真正的大规模训练需要更大的集群规模。

核心矛盾变为:不但要把机器连接起来,还需要它们之间高速通信

总线、NVLink、交换机、路由器等方案都可以用于互联,但没有一种结构能以最低成本同时满足所有规模、距离、带宽和容错需求。互联网络设计必须在任务需求和工程约束之间权衡。


二、互联网络的分类维度

GPU 训练集群的互联设计需要在多个维度上做出选择,例如同步或异步、电路交换或分组交换、集中控制或分散控制、静态拓扑或动态拓扑。每一种方案都有适用规模和代价边界。

2.1 同步 vs 异步(Synchronous vs Asynchronous)

同步系统

  • 使用统一的时钟信号,每个时钟周期各节点执行确定动作。
  • 优点:性能高、流水线清晰、频率可以放得很高。
  • 缺点:信号传播距离受限。电信号每秒约 30 万公里,一纳秒传播约 30 厘米,1 GHz 时钟下服务器之间的线路长度很容易超过这一尺度。

异步系统

  • 不依赖统一时钟,通过消息传递来同步。
  • 优点:传输距离远,可以实现远距离通信。
  • 缺点:速度较低,需要时钟校准,也需要解码逻辑判断有效数据。

2.2 电路交换 vs 分组交换(Circuit Switching vs Packet Switching)

电路交换(Circuit Switching):

  • 类似为通信双方建立一条独占物理线路。
  • 优点:一旦建立连接,通信路径稳定,效率最高。
  • 缺点:成本高,线路越多越贵,且传输距离受限。

电路交换适合短距离、高速率、连接关系较固定的场景;当节点数和通信距离扩大时,其布线成本和可扩展性会迅速成为问题。

分组交换(Packet Switching):

  • 类似互联网,发送数据包到交换机,由交换机存储转发。
  • 数据量大时切成多个小包,例如以太网 1500 字节左右的包,避免一次性传输过大的数据块。
  • 优点:灵活、容错好、可以处理大量节点。
  • 缺点:机制复杂,需要分拣、转发、重发丢包。

2.3 集中控制 vs 分散控制(Centralized vs Distributed Control)

集中控制

  • 有一个中央控制器来调度所有节点。
  • 优点:效率高,调度简单。
  • 缺点:规模大后中央控制压力过大,一旦中央控制失效,整个网络瘫痪。

集中控制不必然低效。在某些规模和负载模型下,集中控制反而可以用全局信息得到更优调度。

分散控制

  • 没有全局控制,各节点自己决策。
  • 优点:扩展性好,适合大量节点自治。
  • 缺点:设计不好时,各节点争夺资源可能导致系统瘫痪。

分散控制通常依赖竞争、退避和局部协调机制维持动态平衡。节点数增大时,这类机制比集中控制更容易扩展,但性能和可预测性较难保证。

2.4 静态拓扑 vs 动态拓扑(Static vs Dynamic Topology)

静态网络:网线插上就不变,运行过程中也不能改变连接关系。

动态网络:根据需要设置内部开关来改变连接方式。例如 MUX(多路选择器)就是一种动态拓扑结构,信号可以在不同路径之间切换。


三、互联函数(Interconnection Functions)

互联函数是描述输入端口到输出端口之间连接关系的数学函数。给定 $N$ 个输入 $X = \{0, 1, 2, \dots, N-1\}$ 和 $N$ 个输出,互联函数 $f(X)$ 定义了每个输入映射到哪个输出。

互联函数把拓扑设计形式化。一个函数可以对应一种硬件模块;通过实例化若干模块,就可以构造可分析、可实现的互联网络。

3.1 交换函数(Exchange Function)

定义:将输入端二进制地址编码中的第 $k$ 位求反,其余位不变。

\[f_{\text{exchange},k}(x_{n-1}\dots x_k \dots x_0) = (x_{n-1}\dots \bar{x}_k \dots x_0)\]

当 $N=8$ 时(3 位地址),有 3 个交换函数:$C_0$(第 0 位求反)、$C_1$(第 1 位求反)、$C_2$(第 2 位求反)。

以 $C_0$ 为例:输入 0(000) -> 输出 1(001),输入 1(001) -> 输出 0(000)。依次类推,所有节点在第 0 位上两两交换。

交换函数可以自然生成立方体网络(Cube Network)。三维立方体可由 $C_0, C_1, C_2$ 描述,四维及更高维可继续加入 $C_3, C_4, \dots$,因此公式比图形更适合表达高维互联结构。

立方体网络特点

  • $N=8$ 的三维立方体:每个节点度 = 3,直径 = 3。
  • $N$ 维立方体(节点数 $2^N$):每个节点度 = $N$,直径 = $N$。
  • 这种节点度 = 直径的特性较好,能够在节点度不过分增加的情况下保持较小直径。例如五维立方体有 $2^5 = 32$ 个节点,节点度为 5,直径也为 5。

3.2 均匀洗牌函数(Perfect Shuffle Function)

定义:将输入端二进制地址编号循环左移一位

\[f_{\text{shuffle}}(x_{n-1}x_{n-2}\dots x_1 x_0) = (x_{n-2}\dots x_1 x_0 x_{n-1})\]

效果:前一半和后一半均匀交错,类似于洗牌。

  • 逆洗牌:循环右移一位。
  • 可以控制洗几次,即执行 $k$ 次循环移位。

3.3 蝶式函数(Butterfly Function)

定义:将输入端二进制地址的最高位和最低位互换

\[f_{\text{butterfly}}(x_{n-1}x_{n-2}\dots x_1 x_0) = (x_0 x_{n-2}\dots x_1 x_{n-1})\]

例如:$000 \to 000$(不变),$001 \to 100$,$010 \to 010$(不变),$011 \to 110$,等等。

3.4 PM2I 函数(Plus-Minus $2^i$ Function)

定义:将各输入端循环移动 $2^i$ 个位置,具体有加 $2^i$ 和减 $2^i$ 两种变体:

\(f_{\text{PM2I},+i}(x) = (x + 2^i) \bmod N\) \(f_{\text{PM2I},-i}(x) = (x - 2^i) \bmod N\)

其中 $i = 0, 1, \dots, (\log_2 N) - 1$。

当 $N=8$ 时,$\log_2 8 = 3$,有 $2 \times 3 = 6$ 个 PM2I 函数($+0, -0, +1, -1, +2, -2$),对应 6 种硬件连接模式。

$2^i$ 步长设计可以用较少种类的硬件连接覆盖多种距离,适合扩展到大规模节点。互联网络通常不能为每一条理想连接单独设计硬件,而是复用有限种硬件模块并实例化多次。

使用 PM2I 的加减 0 和加减 $\frac{N}{2}$ 构成互联网络,可以得到类似阵列的连接方式。每个节点能够与上下左右的邻居通信。


四、网络特征参数(Network Characteristic Parameters)

4.1 规模(Scale/Size)

规模表示网络能连接多少个节点。如果最大支持节点数不足,即使拓扑设计精巧,也无法满足大规模集群需求。

4.2 节点度(Node Degree)

节点度表示每个节点有多少个连接端口,分为入度(in-degree)和出度(out-degree)。

  • 英伟达 GPU 上有 4 个 NVLink 连接,度是 4。
  • 度越大越灵活,但成本越高。
  • 对于总线这种双向通信结构,入度和出度通常相等。

节点度直接对应物理端口数量和布线成本。相比高节点度设备,二叉树等结构可以用较少端口组织出可扩展互联。

4.3 网络距离与直径(Distance and Diameter)

距离:任意两个节点之间需要经过的跳数,跳数等于经过的边数。

直径:网络中所有节点对之间距离的最大值

直径给出最坏情况下的路由跳数上界。即使每个节点度相同,连接方式不同也会导致直径不同,从而影响最坏通信延迟。

小世界现象可以作为直观参照:如果任意两点之间的距离很小,网络传播效率就高。在人工设计的互联网络中,节点距离可以精确计算,因此直径越小通常越有利。

4.4 等分宽度(Bisection Width)

将网络切成相等的两半时,沿切口的边数的最小值,用 $B$ 表示。它反映了网络的最大流量,等分宽度越大,网络两半之间的通信带宽越高。

例如线性阵列的等分宽度 $B = 1$,意味着中间只有一个连接,数据吞吐受限。

不能简单累加网络中所有边的带宽来声称总带宽很高。如果等分宽度只有 1,网络两半之间的实际吞吐瓶颈仍然只有这一条割边。

4.5 对称性(Symmetry)

从任何节点看到拓扑结构都相同的网络称为对称网络

  • 对称网络编程容易、设计简单。
  • 不对称网络需要软件处理特殊节点和特殊路径,会增加编程复杂度。

五、静态网络拓扑(Static Network Topologies)

5.1 线性阵列(Linear Array)

所有节点串成一条线。

参数
端节点度 1
中间节点度 2
直径 $N-1$
等分宽度 1
  • 结构最简单,但直径太大,等分宽度只有 1。
  • 线性阵列不是总线;总线是通过切换连接的共享通信结构。

线性阵列不能用所有边带宽之和衡量实际吞吐。其等分宽度为 1,说明中间割边就是跨半区通信的瓶颈。

5.2 环网(Ring)

线性阵列首尾相连成环,变成对称网络

参数 双向环 单向环
节点度 2 2(但有向)
直径 $\lfloor N/2 \rfloor$ $N-1$

单向环在最坏情况下需要绕完整个环,双向环则可以从较短方向到达目标节点,因此直径显著降低。

5.3 全连接网络(Fully Connected)

每个节点与所有其他节点直接相连。

参数
节点度 $N-1$
直径 1

全连接网络直径最小,任何两点一跳可达,但扩展成本极高。新增一个节点时,所有已有节点的度数都要增加,并且需要与新节点建立连接。

5.4 带弦环(Chordal Ring)

在全连接和环之间做折中:每个节点到与它距离为 $2^r$($r = 0, 1, 2, \dots$)的整数幂节点增加一条附加连接。

当 $N=16$ 时:节点度 = 7($2^0, 2^1, 2^2, 2^3$ 四个方向 × 2 减重复 = 7),直径 = 2。

带弦环把直径从全连接的 1 放宽到 2,但节点度从 15 降到 7,是一种成本和距离之间的折中。

5.5 二叉树网络(Binary Tree)

用二叉树的方式组织网络连接。

参数
根节点度 2
中间节点度 3
叶子节点度 1
直径 $2(k-1)$($k$ 为层数)

二叉树把算法中的树形结构引入互联设计,每个节点最大度只要 3,而全连接网络在 16 节点时需要节点度 15。

5.6 星形网络(Star)

星形网络使用一个高节点度设备作为中心,其他节点度为 1。其直径为 2。

缺点:中心节点一旦失效,整个网络崩溃。

5.7 网格型(Mesh)

二维网格排列,各节点连接到上下左右邻居。缺点是不对称:边节点度为 3,角节点度为 2,内部节点度为 4。

5.8 环网型(Torus)

在网格的基础上将每一行和每一列的首尾相连成环,把环形和网格连在一起。所有节点度一致(4),是对称网络。

$N \times N$ 二元环网的节点度 = 4,直径 = $2 \times \lfloor N/2 \rfloor$。

5.9 超立方体(Hypercube/Binary n-Cube)

  • $N$ 维立方体:节点数 $2^N$,节点度 = $N$,直径 = $N$。
  • 三维:8 节点,度 = 3,直径 = 3。
  • 四维:16 节点,度 = 4,直径 = 4。
  • 五维:32 节点,度 = 5,直径 = 5。

超立方体兼顾节点度和直径,但四维以上难以直观绘图,因此通常使用交换函数 $C_0, C_1, C_2, \dots$ 描述逻辑连接。实际部署时,物理摆放并不重要,关键是按照逻辑连接表完成布线。

超立方体的局限性:随着维数增长,度数必须增长;如果度数不增长,就必须改变结构,网络可能变得不对称。这也是动态网络出现的重要动机。


六、动态网络与多级互联网络(Dynamic & Multi-stage Interconnection Networks)

6.1 为什么需要多级互联网络

静态网络的问题:

  • 节点度不能太大,否则成本过高。
  • 直径不能太大,否则通信延迟过高。
  • 中间节点需要中转数据,会占用计算节点的通信资源。

动态网络的目标:使用简单的小器件和级间固定连接,让任意输入可以连接到任意输出

6.2 $A \times B$ 开关

基本的交换单元有 $A$ 个输入、$B$ 个输出。最简单的是 $2 \times 2$ 开关,有四种工作状态:

状态 功能 描述
直送(Straight) 上入 -> 上出,下入 -> 下出 直接通过
交叉(Exchange) 上入 -> 下出,下入 -> 上出 交换
上播(Upper Broadcast) 上入 -> 上出 + 下出 广播到两路
下播(Lower Broadcast) 下入 -> 上出 + 下出 广播到两路

$2 \times 2$ 开关可以用 FPGA 等硬件实现。每个开关旁加入控制信号后,就可以形成单元控制级控制

有些网络只需要二功能开关(直送 + 交换),不必实现全部四个状态。减少功能可以降低芯片复杂度和成本。

6.3 常见的级间连接模式

级与级之间的连接可以采用前面学到的互联函数:

  • 均匀洗牌(Shuffle)。
  • 蝶式(Butterfly)。
  • 多路洗牌
  • 纵横交叉
  • 立方体

6.4 Omega 网络($\Omega$ Network)

一个 $8 \times 8$ 的 Omega 网络(8 个输入、8 个输出)分三级:

  • 每级使用 4 个 $2 \times 2$ 开关,共 12 个小器件。
  • 级间使用均匀洗牌连接。

特点:

  • 任意输入到任意输出只需 3 跳,即经过 3 个开关。
  • 不需要中间计算节点帮忙中转,数据直接通过开关网络。
  • 因为器件简单、路径确定,所以速度快。

6.5 多级立方体网络(Multi-stage Cube Network)

使用二功能开关(直送 + 交换),通过选择不同的控制方式可以形成不同的拓扑:

  • 级控制:同一级所有开关用同一控制信号,形成交换部分
  • 单元控制:每个开关单独控制,形成移数网络
  • 通过开关组合实现 $C_0, C_1, C_2$ 等函数。

6.6 电路交换 vs 分组交换 vs 数据包交换

三种通信方式:

方式 描述 适用场景
电路交换 建立真实的物理电路连接 短距离高速通信
分组交换(Packet) 数据包在网络中存储转发 互联网(IPv4/IPv6)
直接发送 像以太网,不建立连接,由交换机路由 大型互联网

互联网需要交换层和路由层,是因为系统必须根据地址找到目的节点并在复杂拓扑中完成转发。IPv6 扩大了地址空间,但路由和交换机制仍然是大规模网络的基本组成部分。

6.7 交叉开关网络(Crossbar Network)

交叉开关网络是一种特殊的动态网络:每个交叉点上有一个开关,能够在对应的源和目的之间形成动态连接,并且同时实现多个对偶之间的连接

  • 带宽和互联特性最好:比许多静态网络更直接。
  • 静态网络中,远距离通信通常需要中间节点转发,占用中间节点的接口和通信资源。
  • 交叉网络可以在源与目的之间直接建立连接,不占用计算节点作为中转。

七、CM 多处理器互联与故障冗余

7.1 CM 多处理器互联结构(Crossbar Multiprocessor)

以 16 个处理器(P)、多个存储器模块(M)为例:

  • 通过交叉开关网络,任意处理器可以直接访问任意存储器模块。
  • 只要不冲突,例如 P1 和 P2 不同时访问同一个 M,就能实现高效互联。
  • 结构简单,物理上可以尝试实现。

工程可实现性会反过来约束架构设计。结构可以在理论上设计得很复杂,但真正落地时必须考虑器件数量、布线、控制逻辑和成本。

7.2 静态网络 vs 动态网络的工程选择

  • 静态网络(如立方体):节点度不低、直径不小;维数增长后度数必须增长,否则不对称。
  • 动态网络:使用小器件和级间连接,工程实现相对可控。
  • 工程中静态网络其实少见,动态网络更常用于可扩展互联。

7.3 故障冗余(Fault Tolerance)

大规模硬件系统必须假设故障会发生。网络规模越大,故障概率越不能忽略:

  • 8 节点的小网络可能只有 12 个小器件,故障概率较低。
  • 几万个节点可能对应几十万、上百万个小器件,只要单个器件故障率不为零,整体系统就会经常遇到故障。

故障的影响

  • 一个节点故障 -> 一条路径不能用 -> 若干计算失效 -> 对应 GPU 或任务失效。
  • 大模型训练周期很长,若在训练末期发生电源、服务器或通信故障,可能导致大量计算结果丢失。

可靠性设计

  • 即使单台服务器年故障时间很短,大规模集群也会频繁遇到节点或链路故障。
  • 需要考虑故障冗余,保证单点故障不影响整体计算。

7.4 网表与线路标号

硬件电路中不一定需要把每根线逐条画出。实际设计常使用 net list(网表):只要线上标注相同编号或名称,就表示这些端点逻辑上相连。网表能简化大规模互联的表达与验证。

7.5 互联网络的现实意义

GPU 集群需求让互联网络重新成为体系结构中的关键主题。单台服务器插入少量 GPU 不足以支撑大模型训练,大企业和云厂商需要在成千上万台 GPU 之间提供高带宽、低延迟、可容错的互联能力。