大家可能会想到,是否可以尝试采用分布式的策略将训练扩展到多个 AI 硬件(GPU)上,从而突破于单个硬件内存容量和带宽的限制。然而这么做 **也会遇到内存墙** 的问题:AI 硬件之间会遇到通信瓶颈,甚至比片上数据搬运更慢、效率更低。和单设备的内存墙问题类似,扩展 AI 硬件之间的网络带宽的技术难题同样还未被攻破。如图表4所示,其中展示了在过去20年中,硬件的峰值计算能力增加了90,000倍,但是内存/硬件互连带宽却只是提高了30倍。而要增加内存和硬件互连带宽[1],需要克服非常大的困难。因此,分布式策略的横向扩展仅在通信量和数据传输量很少的情况下,才适合解决计算密集型问题。
如何同时提高硬件带宽和算力是一个极具挑战的基本问题,不过,通过牺牲算力来谋求更好的“算力/带宽”平衡点是可行的。事实上,CPU 架构包含了充分优化后的缓存架构,因此在内存带宽受限类问题(如大型推荐系统)上,CPU 的性能表现要明显优于 GPU。然而,当前 CPU 的主要问题是,它的计算能力(FLOPS)与 GPU 和 TPU 这类 AI 芯片相比,要弱一个数量级。个中原因之一,就是 AI 芯片为追求算力最大化,往往在设计时,就考虑移除了一些组件(如缓存层级)来增加更多的计算单元。我们有理由想象,可以有一种架构,处于以上两种极端架构之间:它将使用更高效的缓存,更重要的是,使用更高容量的 DRAM(设计 DRAM 层次结构,不同层次拥有不同带宽)。后者对于解决分布式内存通信瓶颈将非常有帮助。
## 结论
目前 NLP 中的 SOTA Transformer 类模型的算力需求,以每两年750倍的速率增长,模型参数数量则以每两年240倍的速率增长。相比之下,硬件算力峰值的增长速率为每两年3.1倍。DRAM 还有硬件互连带宽增长速率则都为每两年1.4倍,已经逐渐被需求甩在身后。深入思考这些数字,过去20年内硬件算力峰值增长了90000倍,但是DRAM/硬件互连带宽只增长了30倍。在这个趋势下,数据传输,特别是芯片内或者芯片间的数据传输会迅速成为训练大规模 AI 模型的瓶颈。所以我们需要重新思考 AI 模型的训练,部署以及模型本身,还要思考,如何在这个越来越有挑战性的内存墙下去设计人工智能硬件。