问题域/PD-452

GPU 内存动态分配

Dynamic GPU Memory Management

解决 GPU 显存利用率与 OOM 风险的平衡问题,通过运行时内存探测动态决定缓存容量

子问题

1.峰值显存探测

2.可用显存计算

3.KV Cache 容量规划

4.显存利用率配置

5.统一 tensor 分配 vs 逐层分配的碎片权衡

6.CUDA Graph 捕获与 KV Cache 分配的时序依赖

各项目的解法1 solutions

Signals

横向对比

维度nano-vllm
探测策略Warmup 最大负载前向传播 + reset_peak_memory_stats 精确记录
分配公式total×ratio - used - peak + current,峰值差值修正
分配粒度统一 6D tensor 一次分配,view 注入各层,零碎片
Block 管理BlockManager + xxhash prefix cache 复用
TP 支持num_kv_heads 按 world_size 切分,各卡独立 warmup
用户可控性gpu_memory_utilization 单参数控制,默认 0.9

最佳实践

1.先 warmup 推理获取峰值显存再分配 KV Cache

2.提供 gpu_memory_utilization 参数让用户控制显存占用比例

3.用 reset_peak_memory_stats 隔离 warmup 前后的峰值统计

4.一次性分配统一 KV Cache tensor 再 view 注入各层避免碎片

5.用 peak-current 差值修正已释放临时显存的高估问题