找回密码
 立即注册
搜索

AI大模型,如何打破“内存墙”?

admin 2024-4-30 15:41:50 阅读 3377
1.jpg

一、引言

最近,训练大型语言模型(LLM)所需的计算量以 750 倍/2 年的速度增长。这种指数级增长趋势是人工智能加速器的主要驱动力,这些加速器专注于提高硬件的峰值计算能力,往往以简化内存层次结构等其他部分为代价。

然而,这些趋势忽略了训练和服务人工智能模型的一个新挑战:内存和通信瓶颈。事实上,一些人工智能应用的瓶颈正在于芯片内/芯片间(intra/inter-chip)以及人工智能加速器之间的通信,而不是计算。这并不是什么新现象,过去就有一些著作观察到了这一问题并提出了警告。最早的一次观察可以追溯到 1990 年,当时 Ousterhout 在分析了影响操作系统性能的因素后得出了以下结论:

“第一个与硬件相关的问题是内存带宽:基准测试表明,内存带宽跟不上 CPU 的速度......如果未来机器的内存带宽不能显著提高,某些类别的应用程序可能会受到内存性能的限制。”

后来在 1995 年,威廉·伍尔夫(William Wulf )和萨莉·麦基(Sally Mckee)进一步回应了这一预测,并创造了“内存墙”(memory wall)一词。他们的论证遵循一个简单而优雅的原理。完成一个操作所需的时间取决于我们执行运算的速度,以及我们向硬件运算单元提供数据的速度。

根据这一假设,即使 80% 的数据在高速缓存中随时可用,而只需从 DRAM 中获取 20%,但如果从 DRAM 中获取 20% 的高速缓存遗漏数据所需的时间超过 5 个周期,则完成运算的时间将完全受限于 DRAM。

这意味着,无论硬件每秒的运算速度有多快,问题都将完全受到 DRAM 带宽的限制。他们预测,执行计算的速度与获取数据的速度之间的差异将导致“内存墙”问题。据此,他们得出结论:

“每种技术都在以指数形式不断进步,但微处理器的指数远远大于 DRAM 的指数。不同指数之间的差异也呈指数增长。”

后来的一些研究也报告了类似的观察结果。

在这项工作中,我们通过研究更近期的数据重新审视了这一趋势,尤其关注用于训练人工智能模型的硬件,以及用于训练/服务这些模型的计算的特点。30 年后,上述观察和预测再正确不过了。尽管内存技术出现了许多创新,但趋势表明,“内存墙”正日益成为一系列人工智能任务的主要瓶颈。

我们首先分析自 1998 年 Yann Lecun 在 MNIST 数据上训练著名的 Lenet-5 模型以来,服务器级人工智能硬件的峰值计算量发生了怎样的变化。我们可以看到,在过去的 20 年中,硬件的峰值计算量增长了 60000 倍,而 DRAM 的增长为 100 倍,互连带宽的增长为 30 倍。

内存墙问题既涉及有限的容量、内存传输带宽,也涉及其延迟(比带宽更难改善)。这需要不同层次的内存数据传输。例如,计算逻辑与片上内存之间的数据传输,或计算逻辑与 DRAM 内存之间的数据传输,或不同sockets上不同处理器之间的数据传输。在所有这些情况下,数据传输的容量和速度都明显落后于硬件计算能力。

现在,如果我们研究一下最近的人工智能模型,特别是 LLM 的发展趋势,就会发现从业人员在神经缩放定律的推动下,一直在以前所未有的水平缩放训练最近模型所需的数据量、模型大小和计算量。尽管在 2018-2022 年的时间框架内,训练这些最新模型所需的计算/浮点运算(FLOPs)增加了 750 倍/2 年(见图 2),但计算并不一定是瓶颈,尤其是在模型服务方面。

首先,在这段时间内,LLM 的规模以 410 倍/2 年的速度增长,超过了单芯片可用的内存。我们可能希望利用分布式内存并行性,将训练/服务扩展到多个加速器,以避免单个硬件有限的内存容量和带宽。然而,将工作分配给多个进程也会面临内存墙问题:在神经网络(NN)加速器之间移动数据的通信瓶颈,其速度和效率甚至低于片上数据移动。与单系统内存的情况类似,我们也无法克服扩展网络带宽的技术难题。

其次,即使模型适合单芯片,寄存器、二级缓存、全局存储器等的片内存储器传输仍日益成为瓶颈。得益于张量内核等专用计算单元的最新进展,大量计算的算术运算可以在几个周期内完成。因此,要让这些运算单元始终处于可用状态,就需要快速向它们提供大量数据,而这正是芯片内存带宽成为瓶颈的原因。

如图 1 所示,在过去 20 年中,服务器硬件 FLOPS 的峰值以 3.0 倍/2 年的速度增长,超过了 DRAM 和互连带宽的增长速度,而 DRAM 和互连带宽的增长速度分别仅为 1.6 倍/2 年和 1.4 倍/2 年。这种差距使得内存而非计算日益成为瓶颈,即使是在模型可以容纳在单个芯片内的情况下也是如此。

接下来,我们将对 Transformers 进行详细的案例研究,通过分析目前常用的模型,更好地展示 FLOP、内存操作(MOP)和端到端运行时间之间的相互作用。

(0)
admin管理员

发表回复

开灯关灯
返回顶部