第19章:KV Cache、PagedAttention 与显存治理

第19章:KV Cache、PagedAttention 与显存治理 1. 项目背景某AI客服平台使用vLLM部署了7B Chat模型服务。两周运行平稳后,产品经理要求将上下文窗口从4096扩大到32768——理由是要支持多轮对话的完整历史记录和产品手册的全文检索。运维调整了max-model-len=32768后重启服务——启动成功,但10分钟后服务OOM崩溃。查看日志发现:不是启动时OOM,而是在处理了十几个请求后OOM。进一步分析显示,前几个短请求(用户问候)正常完成,但第15个请求是一个超长Prompt(用户粘贴了整本产品说明书),Scheduler为其分配KV Cache Block时触发了显存耗尽。团队面临困境:如果继续用max-model-len=32768,服务不稳定(间歇性OOM);如果降到max-model-len=8192,业务方不答应(需要支持长上下文);如果加GPU,预算不够。痛点:KV Cache管理是vLLM性能的核心,也是显存治理的最大挑战。一个32768 Token的请求需要多少KV Cache Block?如果同时有多个这样的大请求,显存怎么分配?如何在不增加硬件的前提下,通过优化block_size、gpu_memory_utilization、swap_space等参数找到平衡点?理解KV Cache、PagedAttention和显存治理的底层机制,才能回答这些问题。本章将从Block的物理布局开始,深入PagedAttention的内存管理机制,通过实验观察不同上下文长度和并发数下KV Cache使用率的变化规律。2. 项目设计