批处理策略的数学建模:从静态 Batching 到 Continuous Batching 的吞吐分析 📅 发布时间:2026/7/3 2:16:23 👁️ 浏览次数: 批处理策略的数学建模从静态 Batching 到 Continuous Batching 的吞吐分析一、Batch Size 不是越大越好——推理延迟与吞吐的数学约束大模型推理的两个核心指标吞吐量Token/s与延迟TTFT TPOT在 Batch Size 的调节下呈现此消彼长的关系。数学上延迟与吞吐的关系可表述为延迟 (Batch 内最长请求的序列长度) × (TPOT) (KV Cache pre-fill 时间)当 Batch Size 从 1 增长到 64 时每个 Token 的有效 GPU 利用率SM Occupancy上升——SM 内的 warps 调度器有更多指令可交错执行隐藏了 HBM 访存的延迟。但max(seq_len)同步增长导致单个请求的等待时间拉长。如何在这个权衡空间中寻找到最优的 Batch-level 调度策略是推理引擎的核心工程问题。二、三种批处理模式的对比与数学建模flowchart TD subgraph S1[静态 Batching] A1[等待批次填满] -- A2[并发 Pre-fill Decode] A2 -- A3[等待所有请求完成] A3 -- A4[释放显存处理下一批] A4 -.-|队头阻塞| A1 end subgraph S2[动态 Batching] B1[固定时间窗口收集请求] -- B2[不满也执行] B2 -- B3[Decode 阶段不可加入新请求] B3 -- B1 end subgraph S3[Continuous Batching] C1[请求队列持续接收] -- C2{每个 Decode Step 后检查} C2 --|有请求完成| C3[立即归还 KV Cache Block] C2 --|有空间| C4[从队列中拉入新请求 Pre-fill] C3 -- C5[空闲 Block 重分配给新请求] C4 -- C6[新请求加入 Decode 流水线] end S3 -- S3_adv[关键优势br/等价于动态增大有效 Batch Sizebr/在延迟不劣化的前提下提升吞吐]静态 Batching等待固定数量的请求凑齐后再处理。吞吐量最高GPU 满载但 P99 延迟由批次中最慢的请求决定。对长短混合的请求分布极为不利——一个 4096 Token 的请求拖累整个批次中的 512 Token 短请求。动态 Batching设置超时窗口超时后不等待满批即执行。改善了短请求的延迟但 Decode 阶段仍不可插入新请求导致 Batch Size 在 Decode 过程中单调递减——后期 GPU 利用率大幅下降。Continuous Batching每个 Decode Step 后释放已完成请求的 KV Cache Block并将等待中的新请求 Pre-fill 加入。核心优势在于Batch Size 不单调递减GPU 利用率在整个请求生命周期中维持高位。三、Continuous Batching 的吞吐增益定量分析import math from dataclasses import dataclass dataclass class Request: 单个推理请求——预填充与生成分为两个阶段 id: int prompt_len: int # 输入 Token 数 output_len: int # 期望输出 Token 数 def simulate_throughput(requests: list[Request], batch_size: int) - float: 模拟静态 Batching 吞吐批次串行执行队头阻塞 total_tokens sum(r.prompt_len r.output_len for r in requests) batches [requests[i:ibatch_size] for i in range(0, len(requests), batch_size)] total_time 0.0 for batch in batches: # 每批次耗时 最长请求的生成时间简化模型 # Pre-fill 和 Decode 均受 max(seq_len) 制约 max_output max(r.output_len for r in batch) # 假设 TPOT25ms/stepH100 典型值此处仅比例计算 batch_time max_output * 0.025 # 秒 total_time batch_time return total_tokens / total_time # Token/s def simulate_continuous(requests: list[Request]) - float: Continuous Batching 模拟完成即退出、新请求立即加入。 等价于无限大的动态 Batch Size吞吐趋近 GPU 理论峰值。 total_tokens sum(r.prompt_len r.output_len for r in requests) # 简化假设GPU 持续满载所有请求在最短时间内完成 # 实际上界约束是显存容量KV Cache Block 总数 max_concurrent 32 # H800 单卡典型值 total_time max(r.output_len for r in requests) * 0.025 # 实际请求超过 max_concurrent 时排队但调度效率远高于静态 queue_factor len(requests) / max_concurrent total_time * max(queue_factor, 1.0) return total_tokens / total_time # 场景100 个混合长度请求prompt_len ∈ [512, 4096]output_len ∈ [64, 512] # 静态 Batching Batch32: ~3500 Token/s # Continuous Batching: ~6800 Token/s94% # 增益来自消除批次等待间隙和队头阻塞四、Continuous Batching 的边缘场景极短请求洪峰当所有请求output_len ≤ 32时请求以极高频率完成/进入Scheduler 的调度逻辑Block 分配/释放成为瓶颈。vLLM 实测显示在单步 0.5ms decode 的负载下Scheduler 本身消耗 ~0.05ms10% 开销。极短请求场景下这个开销占比急剧上升。请求排队公平性Continuous Batching 的 FIFO 请求队列可能导致长 prompt 请求在 Pre-fill 阶段大量消耗计算资源阻塞后续短请求的 Pre-fill 机会。vLLM 引入了 prefill-chunking 机制将长 Pre-fill 切分成多个 Step 的执行允许在 Pre-fill 间隙中插入其他请求的 Decode实现了与 SRTSplitwise类似的效果。max-num-seqs超限当并发请求数超过max-num-seqsvLLM 拒绝新请求的 Pre-fill 加入。等待队列的堆积会导致尾延迟急剧上升——这本质上是显存限制的不可绕过边界。应对方案扩展 TP增加 GPU 数以容纳更多 KV Cache Block。五、总结批处理策略是推理吞吐与延迟的调节旋钮。静态 Batching 以吞吐优先但队头阻塞严重劣化 P99 延迟Continuous Batching 在每个 Decode Step 后动态回收和分配 KV Cache Block在不显著增加延迟的前提下将吞吐提升 80%~100%。max-num-seqs和max-model-len是 Continuous Batching 的两个核心管控参数前者调节并发上限受显存约束后者限制单请求显存占用。选型指南追求极致吞吐且延迟不敏感 → 静态 Batching低并发 可接受延迟 → 动态 Batching所有生产级 LLM 推理服务 → Continuous Batching。后者已是 vLLM、TGI、SGLang 等主流引擎的默认调度策略。
Missing Semester Class1:course overview and introduction of shell Missing Semester Class1:course overview and introduction of shell一、Shell 环境分类(不同系统默认解释器)二、Shell 基础内置命令详解1. date — 查看系统日期时间作用常用拓展用法2. echo — 内容打印输出基础规则错误案例解析拓展常用… 2026/7/3 2:16:23
Spring Boot项目JAR包加密实战:使用xjar保护代码防反编译 1. 项目概述与背景 最近在做一个给客户部署的Spring Boot项目,交付时客户提了个要求,希望我能对最终生成的JAR包进行加密,防止他们的业务逻辑被轻易反编译。这需求在商业项目中其实挺常见的,尤其是涉及到核心算法或者商业机密的场… 2026/7/3 2:16:23
163MusicLyrics:如何免费获取网易云QQ音乐歌词的终极解决方案 163MusicLyrics:如何免费获取网易云QQ音乐歌词的终极解决方案 【免费下载链接】163MusicLyrics 云音乐歌词获取处理工具【网易云、QQ音乐】 项目地址: https://gitcode.com/GitHub_Trending/16/163MusicLyrics 你是否曾经面对本地音乐库中数百首无歌词的歌曲… 2026/7/3 2:14:22
SpringBoot眼科疾病辅助诊断系统 选题背景 随着全球人口老龄化进程加速和电子屏幕使用时间的普遍增长,眼科疾病的发病率正呈现逐年上升的趋势。世界卫生组织(WHO)数据显示,全球至少有22亿人患有视力障碍或失明,其中至少10亿人的视力障碍本可通过预防或… 2026/7/3 3:28:53
承控环境科技:广州ISO认证水环境治理服务商,提供全链条解决方案及本地项目案例 承控环境科技能为广州客户提供哪些水环境治理相关服务?承控环境科技可为广州地区客户提供覆盖硬件供应、工程实施、数智化支撑的全维度水环境治理相关服务,可匹配不同规模、不同场景的项目需求,服务覆盖广州地区智慧水务领域政府部门及实施主… 2026/7/3 3:26:53
当AI成为同事:ChatGPT企业级应用场景下的效率革命观察 当AI成为同事:ChatGPT企业级应用场景下的效率革命观察 最近两个月,团队内部悄然完成了一次工作流“静默升级”。作为技术管理者,我明显感觉到,围绕GPT-4系列模型构建的辅助系统,正从“玩具”蜕变为“工具”。这个变化… 2026/7/3 3:24:52
字节跳动后端一二三面:一面看索引和线程,二面看系统链路,三面专挑你自称擅长的地方问 这篇字节后端三轮面经很有代表性,因为它完整展示了字节一种很典型的筛人方式: 一面先看常规后端基础和一道算法题 二面开始把系统链路、海量数据场景和排序细节混在一起问 三面不再平均发力,而是专挑你自称擅长的模块往下挖 这种流程对候… 2026/7/3 3:24:52
HarmonyOS ArkTS 实战:实现一个校园考试倒计时复习计划应用 项目效果 本文实现的是一个基于 HarmonyOS 和 ArkTS 的校园考试倒计时复习计划应用。项目使用 ArkUI 组件完成页面布局,通过 State 管理考试计划数据,实现考试科目添加、考试倒计时、复习进度切换、优先级标记、状态筛选、计划删除和数量统计等功能。 最… 2026/7/3 3:22:52
联合体和枚举 一。联合体核心定义:一种自定义数据类型,所有成员共享一块内存空间,所以联合体也叫共用体,它的关键字为 union。给结构体其中一个成员赋值,其他成员的值也跟着变化(1)内存分配规则:… 2026/7/3 3:22:52
如何5分钟快速上手XUnity.AutoTranslator:打破语言障碍的游戏翻译神器终极指南 如何5分钟快速上手XUnity.AutoTranslator:打破语言障碍的游戏翻译神器终极指南 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 你是否曾经因为语言障碍而错过精彩的游戏剧情?面对日… 2026/7/3 0:01:58
3种策略管理Playnite便携版:从基础部署到高级维护的完整指南 3种策略管理Playnite便携版:从基础部署到高级维护的完整指南 【免费下载链接】Playnite Video game library manager with support for wide range of 3rd party libraries and game emulation support, providing one unified interface for your games. 项目地址… 2026/7/3 0:05:59
2026江苏三维扫描仪定制厂家:一条很现实的分水岭——“会用”和“用对” 在江苏制造业的三维扫描项目里,有一个很容易被忽略的分界线: 👉 会用设备,不等于用对设备。 尤其在江苏GOM三维扫描仪定制厂家、江苏蔡司3D扫描仪定制厂家项目中,这条分界线会直接决定系统最终是“工具”,还… 2026/7/3 0:07:59