推理与部署腾讯面经高频拼多多面经高频[算子优化LLM推理Roofline]速答 · 约 6 分钟更新 2026-09-28

怎么判断一个算子是带宽瓶颈还是计算瓶颈?Roofline 模型是什么?

一句话结论

判断瓶颈的核心是对比算子的计算强度与硬件的拐点。Roofline 模型通过横轴计算强度和纵轴性能,直观展现算子是被内存带宽限制还是被算力限制。

先这样答

判断一个算子是带宽瓶颈还是计算瓶颈,核心依据是对比算子的理论耗时。一个算子的理论耗时取决于计算量除以硬件算力上限,与数据搬运量除以硬件带宽上限,这两者中的最大值。哪个数值更大,算子就受限于哪个瓶颈。

为了直观分析这个关系,业界使用 Roofline 模型。模型的横轴是计算强度,即每读写一字节数据能完成的浮点运算次数;纵轴是算子可达到的性能。模型图像由两段组成。左侧是斜线,代表算子处于低计算强度区间,性能被内存带宽压着,称为带宽瓶颈;右侧是水平线,代表算子处于高计算强度区间,性能被硬件算力压着,称为计算瓶颈。两线的交点是拐点,数值等于硬件的理论峰值算力除以理论峰值带宽。

在实际判断时,先计算算子的算术强度,再与机器的拐点对比。大矩阵乘法计算强度高,偏向计算瓶颈;而逐元素操作、LayerNorm、Softmax 的中间结果读写,以及大模型推理 Decode 阶段的矩阵向量乘法,计算强度低,偏向带宽瓶颈。工程实测中可以观察监控工具,看是计算单元利用率先打满,还是显存带宽利用率先打满。

在大模型推理中,这个逻辑是各类优化的基石。Decode 阶段每步只算一个 token,却要读全部权重,是典型的带宽瓶颈。因此,量化为了减少读取字节数,算子融合为了减少中间结果读写,投机解码为了一次读取权重验证多个 token,以及将计算型的 Prefill 与带宽型的 Decode 分离部署,共同出发点都是缓解带宽限制。

面试官会怎么追问

  • 「刚才提到算子融合,它为什么能缓解带宽瓶颈」 算子融合通过将多个连续的小算子合并成一个大算子,让中间计算结果直接在寄存器或共享内存中传递。这避免了前一个算子将结果写回全局显存,后一个算子再从显存读出的过程,降低了整体的数据搬运量,从而提高了算子的计算强度。
  • 「大模型推理为什么受访存限制」 推理的 Decode 阶段本质上是矩阵向量乘法。每生成一个词,都需要遍历加载模型的所有权重参数,但对每个参数只进行一次乘加运算。这种极低的计算强度导致算力单元大部分时间在等待数据搬运,理论耗时完全由数据搬运量除以显存带宽上限决定。
  • 「CUDA Graph 适合什么场景?遇到动态输入怎么处理」 CUDA Graph 适合计算图固定且包含大量小算子的批量执行场景,主要用于消除频繁下发算子带来的内核启动开销。遇到动态输入时,通常的做法是将输入填充到固定的形状,或者根据常见的输入尺寸分桶,提前捕获并保存多张固定尺寸的图。

回答的坑

认为算子的执行时间只由计算量决定。正确方向是说明算子的理论耗时受制于计算量与算力之比,以及数据搬运量与带宽之比,两者中的最大值才是决定性因素。

脱离具体硬件空谈瓶颈。正确方向是强调瓶颈是相对硬件而言的,判断标准是算子的计算强度与硬件算力带宽比形成的拐点,同一个算子在不同硬件上其瓶颈状态可能会发生翻转。

—— 本题完 ——