连续批处理又称动态批处理 / 迭代级批处理是 vLLM 高吞吐量的第二大核心支柱与 PagedAttention 分块显存管理共同构成了 vLLM 的性能基础。传统静态批处理的致命缺陷1.一次性收集固定数量的请求打包成一个批次2.同时处理该批次的所有请求3.必须等待批次内所有请求全部生成结束才能处理下一批次连续批处理的核心思想不等整个批次结束只要有任何一个请求生成结束就立刻将新请求插入到这个空位上让 GPU 永远不闲着。完整工作流程1.预填充阶段将多个新请求打包成一个批次多个请求的 Prompt 会被拼接成一个大张量一次性计算它们的 Prompt KV-Cache计算密集型2.解码阶段逐 Token 生成每生成一个 Token 就执行一次调度内存密集型解码阶段调度循环每步执行1. 检查运行队列将已生成结束的请求移至完成队列 2. 释放完成请求占用的所有物理块归还至空闲块池 3. 从等待队列中取出尽可能多的新请求满足有空闲块 未超最大并发 4. 对新请求执行预填充计算其Prompt KV-Cache 5. 将新请求与未完成的旧请求合并成新的批次 6. 用新批次生成下一个Token 7. 重复上述步骤vLLM 调度器连续批处理的大脑三个核心队列等待队列所有新到达的请求在此排队运行队列当前正在被处理的请求完成队列已生成结束的请求设计细节预填充与解码分离预填充是计算密集型解码是内存密集型将多个新请求的预填充打包成大批次执行最大化计算利用率基于物理块数的调度不是按请求数量调度而是按空闲物理块数量调度每个新请求需要的块数 ceil(Prompt长度 / block_size)只要空闲块数足够就可以调度该请求抢占式调度Swap 机制显存不足时将低优先级请求的 KV-Cache 换出到 CPU 内存有空闲显存时再将其换回 GPU 继续处理可支持远超 GPU 显存容量的并发数
vLLM--连续批处理(Continuous Batching)
连续批处理又称动态批处理 / 迭代级批处理是 vLLM 高吞吐量的第二大核心支柱与 PagedAttention 分块显存管理共同构成了 vLLM 的性能基础。传统静态批处理的致命缺陷1.一次性收集固定数量的请求打包成一个批次2.同时处理该批次的所有请求3.必须等待批次内所有请求全部生成结束才能处理下一批次连续批处理的核心思想不等整个批次结束只要有任何一个请求生成结束就立刻将新请求插入到这个空位上让 GPU 永远不闲着。完整工作流程1.预填充阶段将多个新请求打包成一个批次多个请求的 Prompt 会被拼接成一个大张量一次性计算它们的 Prompt KV-Cache计算密集型2.解码阶段逐 Token 生成每生成一个 Token 就执行一次调度内存密集型解码阶段调度循环每步执行1. 检查运行队列将已生成结束的请求移至完成队列 2. 释放完成请求占用的所有物理块归还至空闲块池 3. 从等待队列中取出尽可能多的新请求满足有空闲块 未超最大并发 4. 对新请求执行预填充计算其Prompt KV-Cache 5. 将新请求与未完成的旧请求合并成新的批次 6. 用新批次生成下一个Token 7. 重复上述步骤vLLM 调度器连续批处理的大脑三个核心队列等待队列所有新到达的请求在此排队运行队列当前正在被处理的请求完成队列已生成结束的请求设计细节预填充与解码分离预填充是计算密集型解码是内存密集型将多个新请求的预填充打包成大批次执行最大化计算利用率基于物理块数的调度不是按请求数量调度而是按空闲物理块数量调度每个新请求需要的块数 ceil(Prompt长度 / block_size)只要空闲块数足够就可以调度该请求抢占式调度Swap 机制显存不足时将低优先级请求的 KV-Cache 换出到 CPU 内存有空闲显存时再将其换回 GPU 继续处理可支持远超 GPU 显存容量的并发数