Home/AI Infrastructure/GPU Kernel Optimization
中文English

GPU Kernel Optimization

父级: ai-inference-engines
相关: inferactradixark

概览

GPU 内核优化是在模型推理期间改进 GPU 硬件上运行的低层计算 kernel 效率的学问。它是 vLLM 和 SGLang 等推理引擎之下的基础层。

GPU 如何运行模型

当调用 model.generate() 时,GPU 执行数百到数千个 kernel —— 小型并行函数,例如:

  • GEMM(General Matrix Multiplication)—— 重活担当
  • FlashAttention —— 高效 attention 计算
  • LayerNorm —— 归一化
  • 激活函数(ReLU、GELU、SiGLU)

瓶颈洞察: GPU 很少受计算约束 —— 它们通常受 内存带宽约束。核心优化挑战是最小化 HBM(High Bandwidth Memory)与计算单元之间的数据移动。

关键优化技术

1. 内存访问优化

  • Kernel fusion: 把多个操作合并到单个 kernel 以减少 HBM 读写
  • Triton 编译器: 用类 Python 语法写融合 kernel,编译成优化的 CUDA
  • FlashAttention: IO 感知的 attention,把 HBM 流量减少约 10x

2. 量化 Kernel

格式 精度 相对 FP16 加速 质量影响
INT8 8 位 ~2x 极小
INT4 4 位 ~4x 中等
FP8(Hopper) 8 位浮点 ~2-3x 非常低

3. 张量并行 Kernel

  • 把模型权重拆分到多个 GPU
  • NVLink/NVSwitch 用于高带宽 GPU 间通信
  • 对装不进单 GPU 的 70B+ 模型至关重要

4. FlashDecoding++(无问芯穹)

针对 decode 阶段的新颖 kernel 级优化:

  • vs Hugging Face:4.86x 加速(A100)
  • vs FlashDecoding:1.37x 加速
  • vs vLLM:decode 阶段 1.24x 加速

推理引擎对比(kernel 级)

引擎 量化 Fusion 多 GPU 自定义 Kernel
vLLM AWQ、GPTQ、GGML TP、PP PagedAttention
SGLang AWQ、GPTQ TP、PP、EP RadixAttention
LMDeploy INT4、INT8(TurboMind) 是(C++) TP TurboMind 引擎
TensorRT-LLM FP8、INT8 TP、PP 高度优化
Inferact (使用 vLLM) vLLM kernel 栈
RadixArk (使用 SGLang) SGLang kernel 栈

为什么重要

  • H100 集群成本:每 GPU ~$3-5/小时
  • Kernel 优化直接 = 每 token 推理成本更低
  • 对 1B+ token/天部署:2x kernel 加速 = 每年节省数百万

来源

  • vLLM 论文(PagedAttention)
  • FlashAttention 论文(Dao et al.)
  • 无问芯穹 FlashDecoding++ 技术披露