推理与部署CUDALLM推理性能优化速答 · 约 6 分钟更新 2026-09-28

LLM 工程师需要懂哪些 CUDA 基础?问到什么深度算过关?

一句话结论

答题按执行模型、存储层级到LLM优化连接的框架展开。不需要手写生产级算子,但要能看懂profile、用Roofline分析瓶颈,并理解FlashAttention等优化的底层动机,具备和算子工程师对话的能力。

先这样答

针对这个问题,可以按照执行模型、存储层级以及与大模型优化的结合这三段来回答。首先是执行模型,需要清楚 grid、block、thread 的层级划分,理解 SIMT 架构下分支发散带来的性能代价,以及 warp 调度的基本逻辑。这些概念决定了算子并行的粒度,是理解一切优化的起点。

其次是存储层级。要明确寄存器、共享内存和全局内存之间的延迟差异,理解合并访存对利用总线带宽的重要性。大模型推理的真正瓶颈往往在 HBM 带宽,因此减少对全局内存的访问是核心。在常识层面,需要知道 Tensor Core 如何加速矩阵乘法并支持不同精度,了解流与异步执行机制,以及如何利用 CUDA Graph 消除算子启动开销。

在深度要求上,标准是不需要手写生产级别的 kernel,但必须具备与 kernel 工程师对话的能力。这要求你能看懂 profile 报告,分析算子耗时、带宽利用率和占用率;能使用 Roofline 模型准确判断当前是算力受限还是访存受限。结合到大模型优化,要能从底层硬件逻辑出发,理解 PagedAttention 和 FlashAttention 进行分块的动机,并清楚为什么 decode 阶段会严重受限于 HBM 带宽。

总结来说,对 CUDA 的掌握深度,应该支撑你从硬件视角解释推理框架中的优化策略,并在遇到性能问题时准确定位瓶颈。

面试官会怎么追问

  • 「为什么 decode 阶段是访存受限,而 prefill 阶段通常是算力受限?」 prefill 阶段处理长提示词,计算表现为大矩阵乘法,能充分利用 Tensor Core,此时处于 Roofline 模型的算力瓶颈区。而 decode 阶段是逐字生成,矩阵乘法退化为矩阵向量乘法,计算量小。但每次生成都需要把庞大的 KV Cache 从全局内存加载到芯片上,耗时完全取决于 HBM 带宽。
  • 「FlashAttention 主要是解决了 CUDA 层面的什么问题?」 解决了标准注意力机制中频繁访问全局内存导致的带宽瓶颈。它通过分块计算,将中间结果的读写限制在延迟更低的共享内存中,避免了把庞大的注意力分数矩阵写回再读出全局内存的过程,从而绕过了 HBM 瓶颈。
  • 「在什么场景下引入 CUDA Graph 收益最高?」 在 decode 阶段收益最高。因为 decode 阶段单次计算量很小,算子的 GPU 执行时间非常短,导致 CPU 提交算子的调度开销占比变大。CUDA Graph 可以把多个算子打包成一个图一次性提交,消除了逐个下发带来的启动开销。

回答的坑

不要花大量篇幅讲如何手写复杂的算子代码。LLM 工程师的重点是用好工具和理解框架,正确方向是展示如何利用底层硬件知识指导模型推理与部署。

不要笼统地说大模型推理慢是因为 GPU 算力不够。正确方向是区分阶段,利用 Roofline 模型指出带宽受限才是 decode 阶段的真实物理瓶颈。

—— 本题完 ——