横向扩展虽能短期见效,但终究会受到物理定律和经济规律的制约。设备与交换机数量的增加会导致延迟增加、能耗攀升及成本上涨。发展到某个阶段,单纯依靠横向扩展就不再是最优解。
这便引出了另一种方案:纵向扩展(或称垂直扩展)。
纵向扩展是指提升单个节点的算力密度,而非单纯增加节点数量。
叶交换机无需直接连接单块 GPU,而是连接至每台搭载多块 GPU(例如八块)的『服务器』。此举大大减少了所需直接联网的交换机数量和线缆规模:
每个『服务器』节点容纳 8 块 GPU;单台交换机可覆盖更多 GPU
类比早期的网络扩展:快速发展的公司会先通过增加 CPU 核心和内存来升级单台『服务器』(纵向扩展);当单机性能不足时,再通过添加『服务器』和『负载均衡』器分流流量(横向扩展)。
敏锐的读者可能会问:这些纵向扩展的 GPU 如何通信?它们仍需要通过网络交换机连接吗?这与横向扩展有何区别?
问得非常好!
节点内通信 vs 节点间通信
同一『服务器』节点内的通信称为节点内通信。
不同『服务器』间 GPU 的通信称为节点间通信。
事实证明,相邻 GPU 的节点内通信速度与带宽远胜于使用 Infiniband 或以太网的节点间通信。
为何如此?
这主要归功于 GPU 之间紧密的物理距离以及所采用的专用互连技术。这些技术利用了直接的、短距的且经过优化的信号布线,它们通常直接集成在同一块电路板上或同一个物理封装外壳内,从而缩短信号传输距离并最大限度地降低延迟。
例如 AMD 在 2018 年 IEEE 国际固态电路会议(ISSCC)[4] 公布的 Infinity Fabric 布线方案:
亮色连接线(迹线)表示计算单元间的金属连接,可视为封装基板中的 "导线"
由于『服务器』内 GPU 采用直连方式,可规避大部分节点间通信的开销。封装外壳内布线通过缩短迹线长度、减少传播延迟和信号衰减来提升效率。
而 Infiniband 与以太网等外部连接需依赖中继器、重定时器、纠错机制等信号完整性保障组件来保障远距离传输的可靠性,这些都会增加额外的延迟和功耗。
不妨将 NVLink、InfinityFabric 等节点内通信比作德国高速公路 [5]:专为高速内无中断的通行设计。
节点间通信则像双车道公路:速度更慢、通行量有限,还可能因春耕秋收的拖拉机导致降速(即应对拥堵)。
注意,前方可能有交警蹲守!