詳細解釋
計算任務的瓶頸在於記憶體讀寫速度而非處理器運算能力的狀態。在 AI 推理中,特別是 LLM 的自回歸生成,常出現此現象。
為何 LLM 推理 memory-bound:
- 每生成一個 token,需讀取整個模型權重(數百 GB 的 HBM 訪問)
- 計算量相對小:矩陣向量乘法 vs 訓練時的矩陣矩陣乘法
- 結果:GPU 計算單元閒置等待數據,利用率(GPU Util)顯示 10-30%
識別方法:
- 監控工具:Nsight Systems、PyTorch Profiler
- 指標:如果計算單元利用率低但記憶體帶寬接近滿載,則為 memory-bound
- 實驗:增加批次大小,如果吞吐量不成比例提升,確認是記憶體瓶頸
優化策略:
- 量化:INT8/INT4 減少權重讀取量
- KV Cache 優化:壓縮、分頁(vLLM)、量化(KV Cache INT8)
- 連續批處理:動態批處理提高並行性,攤銷記憶體讀取成本
- 閃存注意力:減少 HBM 讀寫(FlashAttention、FlashInfer)
- 模型並行:分散權重到多 GPU,增加聚合帶寬
與 compute-bound 的對比:
- Memory-bound:換更強 GPU 無效,需優化數據流或量化
- Compute-bound:升級 GPU 有效,如訓練時的大批次矩陣乘法
對成本的影響:Memory-bound 應用(如 LLM 推理服務)的性價比優化重點在於記憶體帶寬而非 FLOPS,這解釋了為什麼 HBM 帶寬比計算能力更受關注。