开发原则
构建机器学习系统不仅需要组装模型组件,还需要管理信息与能量在硅芯片中的流动。第一部分确立了这样一个观点:数据既是每个机器学习系统的程序,也是其物理锚点。在这一锚点确立之后,第二部分转向算法与机器的交互:如何围绕执行数学模型的硬件所具有的物理限制,开展协同设计。本节原则首先从量化核算入手,说明为何某些架构能在规模扩展时取得成功,而另一些则会失败。
Principle 原则(英文原版): 机器学习系统铁律
当数据搬移与计算在现代硬件上重叠执行时,实际经过时间由关键路径决定,不可能短于这两个阶段中较慢者的耗时,再加上仍处于重叠范围之外的任何固定延迟。实际启示在于识别主导项,而非无条件求和。
推论:优化几乎总是伴随权衡。减少某一项往往会将瓶颈转移到另一项。例如,利用非结构化稀疏性可以减少实际执行的算术运算,但稀疏表示和内核可能降低有效带宽或增加索引传输流量,从而增加数据搬移时间 \((D_{\text{vol}}/\text{BW})\)。一项优化只有缩短了目标硬件上的关键路径,才能相应缩短实际经过时间。
铁律指出了优化什么,却没有说明如何优化。在实现开始之前,架构就已决定了如何优化。
Principle 原则(英文原版): 硅芯片契约
- ResNet-50 以高密度浮点计算为前提。在加速器上进行批量训练或推理时,它通常受计算限制:性能受限于 \(O/(R_{\text{peak}} \cdot \eta_{\text{hw}})\)。
- 80 亿参数的 Llama 3 以自回归解码期间的高带宽内存访问为前提。在批量较小时,它通常受带宽限制:性能受限于 \(D_{\text{vol}}/\text{BW}\)。
- DLRM 以大规模嵌入表和稀疏查找为前提。它同时受到容量和带宽的制约:性能取决于嵌入表能否容纳于可用的内存层次结构中,以及稀疏访问请求能够以多快的速度得到处理。
推论:设计模型时,如果不知道它会使哪一种硬件资源达到饱和,就如同设计桥梁时不知道钢材的强度。设计必须针对瓶颈展开。
铁律与硅芯片契约共同构成了第二部分每一项设计决策的框架。后续章节将把这些原则落实到机器学习技术栈的各个组成部分:梯度流的数学基础、对特定硬件资源作出承诺的架构模式、将模型运算映射到硬件的框架,以及在大规模条件下遵循同样物理规律运行的训练系统。