
新智元报道
新智元报道
【新智元导读】谷歌团队发布LLM硬核技术教科书,从「系统视图」揭秘LLM Scaling的神秘面纱。Jeff Dean强调书中藏着谷歌最强AI模型Gemini训练的更多信息。
由于深度学习的「黑箱」本性,从业者自我调侃道:
如果说深度神经网络是现代版的「炼金术」,我们在古代就是「炼金术士」。
在许多方面,深度学习仍然带有一定的「炼金术」色彩,但理解和优化模型性能并不一定如此——即使是在大规模环境下!

谷歌最强的Gemini模型的训练,重度依赖JAX软件栈+TPU硬件平台。 如果你想了解更多详情,来看看这本超棒的书:「How to Sacle Your Model」。

训练大语言模型(LLMs)常常让人感觉就像炼金术,但理解和优化模型的性能其实并不复杂。 本书的目标是揭开在TPU上扩展语言模型的科学谜团:TPU是如何工作的,它们如何相互通信,LLM在实际硬件上是如何运行的,以及在训练和推理过程中如何对模型进行并行化,以便在大规模运行时实现高效性。 如果你想知道「训练这个LLM需要多贵的成本」、「要自己部署这个模型需要多少内存」或者「什么是AllGather」这些问题的答案,希望本书能对你有所帮助。
模型Scaling,无需恐惧
三四年前,大多数机器学习研究人员,可能并不需要了解模型扩展(model scaling)。
但如今,即便是「较小」的模型,也已经逼近硬件极限,因此研究要有真正的创新性,就必须考虑如何在大规模环境下提高效率。
如果某种方法能在基准测试中提升20%的性能,但同时使Roofline效率下降20%,那么这样的优化是没有意义的。 许多有前景的模型架构最终失败,并不是因为它们在理论上不可行,而是因为它们无法高效扩展,或者没有人投入足够的精力去优化它们的计算效率。 模型扩展的目标是在增加用于训练或推理的芯片数量时,实现吞吐量的线性增长,这被称为 「强扩展」(Strong Scaling)。 通常,增加芯片数量(即「并行计算」)可以减少计算时间,但同时也会带来额外的芯片间通信开销。如果通信时间超过了计算时间,就会遇到 「通信瓶颈」,导致无法实现理想的扩展性能。如果对硬件足够了解,能够预测这些瓶颈的出现位置,就可以通过调整模型设计或重新配置系统来规避它们。
-
粗略评估模型的各个部分与理论最优性能的接近程度。
-
在不同规模下,合理选择并行计算方案(如何在多个设备间分配计算任务)。
-
估算训练和运行大型Transformer模型所需的成本和时间。
-
设计能够充分利用特定硬件特性的算法。
-
设计硬件时,基于对当前算法性能瓶颈的明确理解来进行优化。
在阅读完本书后,应该能自信地为特定硬件平台上的Transformer模型选择最佳并行方案,并大致估算训练和推理的耗时。 如果你仍然感到困惑,请告诉我们!我们希望知道如何让这些内容更加清晰易懂。
基础知识
对LLM(大语言模型)和Transformer架构有基本的了解,但不一定熟悉它们在大规模计算中的运作方式。 应该了解LLM训练的基础知识,并且最好对JAX有一定的了解。
整体结构
在本书中,将解答以下问题:
-
矩阵乘法的计算时间如何估算?在多大规模下,它的计算受限于计算能力、内存带宽还是通信带宽?
-
TPU是如何连接在一起组成训练集群的?系统的各个部分分别具备多少带宽?
-
在多个TPU之间进行数据收集(gather)、分发(scatter)或重新分布(re-distribute)需要多少时间?
-
如何高效地计算跨设备分布的矩阵乘法?
-
模型的内存占用有多大?
-
计算和通信的时间消耗分布如何?
-
注意力机制(Attention)和前馈网络(Feed-Forward Blocks)何时成为计算的瓶颈?

给定一个大小和一定数量芯片的模型,如何将模型并行化,以保持在「强扩展」(strong scaling)范畴内?

请不要觉得有压力要按顺序阅读所有章节,也不一定要全部阅读完。 我们鼓励你留下反馈意见。 目前这是草稿版本,未来会继续修订和改进。

(文:新智元)