开发原则

构建机器学习系统不仅需要组装模型组件,还需要管理信息与能量在硅芯片中的流动。第一部分确立了这样一个观点:数据既是每个机器学习系统的程序,也是其物理锚点。在这一锚点确立之后,第二部分转向算法与机器的交互:如何围绕执行数学模型的硬件所具有的物理限制,开展协同设计。本节原则首先从量化核算入手,说明为何某些架构能在规模扩展时取得成功,而另一些则会失败。

Principle 原则(英文原版): 机器学习系统铁律
不变量:设 \(T\) 表示理想化的实际经过时间,单位为秒。这里,\(D_{\text{vol}}\) 为数据量,单位为字节;\(\text{BW}\) 为相关内存或网络路径的有效带宽,单位为字节/秒;\(O\) 为浮点运算总次数;\(R_{\text{peak}}\) 为峰值计算速率,单位为 FLOP/s;\(\eta_{\text{hw}}\) 为无量纲的硬件利用效率;\(L_{\text{lat}}\) 为固定延迟开销,单位为秒,例如内核启动或网络往返的开销。当数据搬移、计算和固定开销串行执行时,它们的理想化耗时相加: \[ T \approx \frac{D_{\text{vol}}}{\text{BW}} + \frac{O}{R_{\text{peak}} \cdot \eta_{\text{hw}}} + L_{\text{lat}} \] 完整论述见 机器学习系统铁律 。

当数据搬移与计算在现代硬件上重叠执行时,实际经过时间由关键路径决定,不可能短于这两个阶段中较慢者的耗时,再加上仍处于重叠范围之外的任何固定延迟。实际启示在于识别主导项,而非无条件求和。

推论:优化几乎总是伴随权衡。减少某一项往往会将瓶颈转移到另一项。例如,利用非结构化稀疏性可以减少实际执行的算术运算,但稀疏表示和内核可能降低有效带宽或增加索引传输流量,从而增加数据搬移时间 \((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 以大规模嵌入表和稀疏查找为前提。它同时受到容量和带宽的制约:性能取决于嵌入表能否容纳于可用的内存层次结构中,以及稀疏访问请求能够以多快的速度得到处理。

推论:设计模型时,如果不知道它会使哪一种硬件资源达到饱和,就如同设计桥梁时不知道钢材的强度。设计必须针对瓶颈展开。

铁律与硅芯片契约共同构成了第二部分每一项设计决策的框架。后续章节将把这些原则落实到机器学习技术栈的各个组成部分:梯度流的数学基础、对特定硬件资源作出承诺的架构模式、将模型运算映射到硬件的框架,以及在大规模条件下遵循同样物理规律运行的训练系统。

Back to top
← 中文书架