Reiner Pope – LLM 训练与服务背后的数学
Reiner Pope – The math behind how LLMs are trained and served
嘉宾:Reiner Pope
精读 · 按主题梳理核心观点、论证与案例。
§01推理的屋顶线模型
Reiner Pope 将 GPU 机柜上的推理简化为两个相互竞争的下限:计算耗时和数据搬运耗时。计算项随批量大小和活跃参数数量增长;内存项则必须读取全部模型权重和 KV 缓存。每个解码步骤中,缓存大小随批次、上下文长度以及每个 token 占用的字节数增长。第一步近似中,他省略了注意力计算,因为他认为与权重运算相比,这部分很小;他也强调,这些方程给出的是下界,而不是精确的运行时间预测。
活跃参数和总参数的区别很重要。活跃参数决定每个生成 token 所需的运算量,而读取模型权重时仍需读取全部参数。KV 缓存会带来另一类数据流量:批次中的每条序列在执行注意力计算时,都需要读取自身的历史数据。因此,Pope 将单步总耗时建模为内存读取总时间和计算时间中的较大值。这个简单的屋顶线模型无法囊括所有架构细节,但能让主要约束清晰呈现,也能帮助我们理解批量大小和上下文长度如何改变这些约束。
§02批处理如何权衡延迟与 token 成本
批处理能改善经济性,因为模型权重的读取成本可以由更多序列共同分摊。批量大小为 1 时,这项固定的权重读取成本全部落在单条 token 流上;批量越大,每个 token 分摊到的成本越低。相比之下,计算量和 KV 流量大致随批量增长,因此运行时间除以批量大小后,两者的每 token 成本大致持平。结果是成本曲线起初快速下降,随后趋近由计算和 KV 访问决定的下限。增大批量并非没有代价:单步延迟可能上升;上下文越长,KV 项也越大,系统可能因此从计算受限转为内存受限。
这解释了为什么低成本模式可以通过等待更多请求来受益,但前提是批量能够分摊权重读取成本。KV 数据属于各条独立序列,每条序列也仍需单独计算,因此批量增大并不会消除这些成本。Pope 给出的是每 token 成本的下限,并没有承诺只要无限延长等待时间,推理就能无限便宜。模型也表明,上下文长度是重要的限定因素:密集注意力会让 KV 读取量随上下文增长,稀疏注意力则可能改善这种扩展关系;不过这场对话并未假定所有服务商都在使用稀疏注意力。