LLM 面试

📅 2026/6/16 9:48:04
LLM 面试
显存总显存 ≈ 权重显存 KV Cache显存 Activation显存 Workspace/临时buffer 框架开销权重显存权重显存 ≈ 参数量 × 每个参数字节数模型FP16权重显存7B7B × 2 ≈ 14GB13B26GB70B140GB如果 TP8每卡权重 ≈ 总权重 / 8KV CacheKV Cache显存 ≈ batch_size × seq_len × num_layers × 2 × kv_heads × head_dim × byteslayers 32kv_heads 32head_dim 128seq_len 4096batch 1dtype FP16KV Cache 1 × 4096 × 32 × 2 × 32 × 128 × 2≈ 2GBActivationprefill 一次处理完整 promptactivation ≈ batch × seq_len × hidden_size × bytes × 若干倍decode 每次只生成一个 tokenactivation ≈ batch × 1 × hidden_size × bytes × 若干倍Workspace / 临时 Buffer来源说明cuBLAS / cuDNN workspaceGEMM、Conv等临时空间FlashAttention workspaceattention kernel 临时bufferall-reduce bufferTP通信临时bufferlogits buffervocab_size 大时明显sampling buffertop-k/top-p临时空间paged KV block metadatavLLM/SGLang block 管理开销CUDA graph buffercapture 后固定分配OOM排查项重点1. 看权重是否能放下模型参数量 × dtype / TP2. 看 max contextmax_model_len/context_length是否过大3. 看 batch/concurrency并发数、max_num_seqs、max_num_batched_tokens4. 看 KV Cache是否 KV Cache block 预分配太多5. 看 dtypeFP16/BF16/INT8/INT46. 看 TP/PP/EP权重是否被切分KV 是否被切分7. 看 CUDA Graphcapture 可能额外占显存8. 看碎片reserved 很大但 allocated 不大9. 看 workspaceattention/GEMM临时buffer10. 看是否有显存泄漏请求结束后显存不释放场景一刚启动就 OOM通常是权重放不下TP太小dtype太大CUDA graph / workspace 额外占用解决增大TP用量化关闭/减小cuda graph减少gpu_memory_utilization场景二请求一多就 OOM通常是KV Cache不够max_num_seqs太大max_num_batched_tokens太大解决降低并发降低max_num_seqs降低max_num_batched_tokens降低max_model_len开启prefix cache复用场景三长 prompt OOM通常是prefill activation KV Cache 太大解决缩短prompt降低max_model_len单条请求允许的最大上下文总长度prompt tokens generated tokens max_model_lenchunked prefill降低batch场景四生成很久后 OOMKV Cache 随生成长度增长解决限制max_new_tokens限制总上下文长度启用请求淘汰/调度限制推理链路Request↓Tokenizer↓Scheduler↓Prefill↓KV Cache↓Decode↓Sampling↓Response