现在升级到更高层级,观察 TPU 在多芯片环境中的运作方式。
4.1 托盘层级(即 "板卡";含 4 个芯片)
单块 TPU 托盘包含 4 个 TPU 芯片或 8 个 TensorCore(简称 "核心")。每块托盘配备独立 CPU 主机(注:推理型 TPU 的每个主机可访问 2 块托盘,因其每芯片仅含 1 个核心)。
主机(Host) ⇔ 芯片(Chip)的连接采用 PCIe 接口,但芯片(Chip)⇔芯片(Chip)之间通过 Inter-Core Interconnect(ICI)连接,该接口具备更高带宽。
不过 ICI 连接还可进一步扩展至多块托盘。为此,我们需要继续提升到机架层级(Rack level)。
4.2 机架层级(4x4x4 芯片)
TPU 最令人兴奋的特性在于其可扩展性,这一点从机架层级开始显现。
一个 TPU 机架包含 64 个 TPU 芯片,通过 4x4x4 三维环面网络互联。如果您看过谷歌的 TPU 宣传资料(如下图),这张图展示的是 8 个 TPU 机架的集群。
8 个 TPU 机架(TPUv4)
但在深入讨论机架之前,我们需要澄清几个容易混淆的术语:机架(Rack)、Pod 和切片(Slice)的区别。
问:TPU 机架、TPU Pod 和 TPU 切片有何不同?
不同谷歌资料对这些术语的使用存在差异,有时甚至混用 "TPU Pod" 和 "TPU Slice"。本文采用谷歌 TPU 论文和 GCP 官方文档的定义([3][7][9]):
1)TPU 机架(Rack)
包含 64 块芯片的物理单元,也称为 “立方体(cube)”。
2)TPU Pod
通过 ICI 和光纤连接的 TPU 最大单元。
又称 "Superpod" 或 "Full Pod"。例如 TPUv4 的 TPU Pod 包含 4096 块芯片(或 64 个机架)。
3)TPU 切片(Slice)
介于 4 块芯片到 Superpod 规模之间的任何 TPU 配置组合。
主要区别在于,TPU 机架和 TPU Pod 是物理计量单位,而 TPU 切片是抽象计量单位。当然,TPU 切片的设置涉及重要的物理拓扑约束,但现阶段我们暂不展开讨论。
现在,我们将聚焦物理计量单位:TPU 机架和 TPU Pod。这是因为,理解 TPU 系统的物理连接方式,能更深入地掌握其设计哲学。
现在回到 TPUv4 机架的具体结构:
单个 TPU 机架通过 ICI 和 OCS(Optical Circuit Switching)技术连接 64 个芯片。实质上,我们通过组合多个托盘(trays)来构建一个 64 芯片的完整系统。这种 "将小型单元组装成超级计算机" 的设计理念将持续贯穿后续层级。
下图展示了 TPUv4 单个机架的拓扑结构。它采用 4x4x4 三维环面网络,其中每个节点都代表一块芯片,蓝色箭头表示 ICI 链路,而各个面上的连接线则代表 OCS(根据文献 [7] 重绘)。
使用 OCS 的 TPU 单机架架构
然而,这张图表引出了两个关键问题:为何 OCS 仅应用于环面结构的表面?换句话说 —— 使用 OCS 的核心优势是什么?共有三大核心优势,我们将在后文再详述另外两点。
OCS 的优势 #1:环绕连接 (Wraparound)
通过环形拓扑优化节点间的通信效率。
OCS 还承担特定 TPU 配置的环绕连接功能。该设计将两节点间的跳数从最坏情况下 N-1 跳降至每轴 (N-1)/2 跳,因为每条轴均形成一个环形(一维环面拓扑)。
随着规模的进一步扩大,这种影响变得更加重要,因为降低芯片间的通信延迟对于高度并行化的实现至关重要。
附注:并非所有 TPU 都采用 3D 环面拓扑
注意,早期 TPU(如 TPUv2/v3)及推理专用 TPU(如 TPUv5e/v6e)使用 2D 环面拓扑而非下文所述的 3D 环面。不过 TPUv7"Ironwood" 虽定位为推理芯片,但其拓扑疑似 3D 环面(注:仅根据官方宣传材料推测)。
2D 环面拓扑示意图