当前位置: 首页 > article >正文

【AI Infra 核心】从零剖析大模型服务框架:如何榨干 GPU 算力实现极致推理吞吐?

【AI Infra 核心】从零剖析大模型服务框架如何榨干 GPU 算力实现极致推理吞吐摘要上一篇我们通过 PagedAttention 解决了大模型推理时的“显存爆炸”危机。但在实际的生产环境中光有显存是不够的。老板花重金买的 A100/H100如果 GPU 利用率只有 20%那无异于暴殄天物。今天我们深入剖析 LLM 服务框架如 vLLM、TGI、TensorRT-LLM的核心调度机制用代码手写一个Continuous Batching连续批处理调度器带你彻底搞懂如何榨干 GPU 的每一滴算力一、 传统 Static Batching 的原罪“木桶效应”在传统的深度学习比如 ResNet 图像分类中为了提高 GPU 的吞吐量我们通常会把多个请求拼成一个 Batch 一起送进显卡。这叫Static Batching静态批处理。但在大语言模型LLM的世界里这套玩法行不通了。为什么因为 LLM 生成文本的长度是不可预测的。假设我们把 3 个请求打成一个 Batch 送去推理请求 A只需要生成 5 个 Token 就结束了比如回答“北京的首都是哪”。请求 B需要生成 50 个 Token。请求 C需要生成 200 个 Token比如写一篇小作文。在静态批处理下整个 Batch 必须等待最长的“请求 C”全部生成完毕才能整体返回并接收下一批任务。结果就是请求 A 的计算在第 5 步就结束了在剩下的 195 步里它对应的 GPU 算力完全处于闲置Padding/Idle状态这就是典型的“木桶效应”导致 GPU 算力被白白浪费。二、 破局之道Continuous Batching (连续批处理)为了打破木桶效应Orca 论文率先提出了Iteration-level Scheduling迭代级调度也就是后来工业界熟知的Continuous Batching或In-flight Batching。它的核心思想非常暴力且有效打破 Batch 的静态边界把调度粒度细化到每一个 Token每一次 Iteration系统维护一个“正在运行”Running的请求池。在每一个 Token 生成的 Step即一次 Forward Pass结束后检查池子里的请求。如果请求 A 生成完毕遇到了 EOS token立即把它踢出 Batch返回给用户。立即从等待队列中拉取一个新的请求 D把它塞进刚刚空出来的 Batch 位置。GPU 继续执行下一个 Step 的计算。通过这种“动态进出”的机制GPU 永远处于满载状态没有一滴算力被浪费在无意义的 Padding 上。三、 纸上得来终觉浅Python 徒手实现 Continuous Batching 调度器为了让大家直观理解底层的调度逻辑我们剥离掉复杂的 CUDA 和网络通信代码用纯 Python 面向对象的方式写一个极简版的 Continuous Batching 核心引擎。1. 定义请求对象 (Request)首先我们需要一个类来记录每个请求的状态是等待中、正在运行还是已完成。fromenumimportEnumclassStatus(Enum):WAITING0# 在队列中等待RUNNING1# 正在 GPU 中生成FINISHED2# 生成完毕classRequest:def__init__(self,req_id:int,prompt_len:int,max_output_len:int):self.req_idreq_id self.prompt_lenprompt_len self.max_output_lenmax_output_len self.generated_tokens0self.statusStatus.WAITINGdefis_finished(self):# 简单模拟达到最大输出长度或随机遇到终止符视为完成returnself.generated_tokensself.max_output_lendef__repr__(self):returnfReq(id{self.req_id}, tokens{self.generated_tokens}/{self.max_output_len})2. 构建核心调度器 (Scheduler)这是整个框架的大脑它决定了每一个 Forward Step 中哪些请求上 GPU哪些请求下车。classContinuousBatchingScheduler:def__init__(self,max_batch_size:int):self.max_batch_sizemax_batch_size self.waiting_queue[]# 等待处理的请求self.running_batch[]# 正在 GPU 上跑的请求defadd_request(self,request:Request):接收上游网关发来的新请求self.waiting_queue.append(request)print(f[API] 接收到新请求{request.req_id}加入等待队列。)defstep(self): 模拟一次 GPU 的 Forward Pass (生成一个 Token) # 1. 踢出已完成的请求finished_reqs[reqforreqinself.running_batchifreq.is_finished()]forreqinfinished_reqs:req.statusStatus.FINISHED self.running_batch.remove(req)print(f [-] 请求{req.req_id}已完成离开 Batch。)# 2. 从等待队列拉取新请求填补 Batch 空缺whilelen(self.running_batch)self.max_batch_sizeandself.waiting_queue:new_reqself.waiting_queue.pop(0)new_req.statusStatus.RUNNING self.running_batch.append(new_req)print(f [] 动态拉取请求{new_req.req_id}进入 Batch。)# 3. 模拟 GPU 推理为当前 Batch 中的所有请求生成 1 个 Tokenifnotself.running_batch:print(GPU 闲置中...)returnFalse# 没有任务了print(f [GPU Compute] 当前 Batch 状态:{self.running_batch})forreqinself.running_batch:req.generated_tokens1returnTrue3. 运行测试见证奇迹的时刻我们来模拟一个真实的请求流看看它与静态 Batching 有什么不同。# 初始化一个最大 Batch Size 为 3 的调度器schedulerContinuousBatchingScheduler(max_batch_size3)# 模拟并发到来 5 个长度不一的请求scheduler.add_request(Request(1,prompt_len10,max_output_len2))scheduler.add_request(Request(2,prompt_len12,max_output_len5))scheduler.add_request(Request(3,prompt_len8,max_output_len3))scheduler.add_request(Request(4,prompt_len20,max_output_len4))scheduler.add_request(Request(5,prompt_len15,max_output_len2))# 驱动 GPU 进行推理直到所有任务完成step_count1whilescheduler.waiting_queueorscheduler.running_batch:print(f\n GPU Step{step_count})scheduler.step()step_count1运行结果解析在 Step 3 结束时请求 1 已经达到了最大长度2被立刻踢出 Batch。同时处于等待队列中的请求 4 立刻被补位拉入 Batch 中参与 Step 4 的计算。没有任何一个 GPU 时钟周期被用来做无意义的 Padding 等待整体吞吐量在真实场景下可以翻 20 倍以上。四、 进阶与博弈Prefill 与 Decode 的分离在上述代码中我们做了简化把每个 Step 视作等价的。但在真实的 LLM 推理中阶段分为两步Prefill 阶段预填充处理用户的 Prompt是计算密集型的矩阵乘法GEMM。Decode 阶段逐字生成生成后续的 Token是访存密集型的矩阵向量乘法GEMV。在高端的工程落地中如 vLLM 中的 Chunked Prefill 技术为了防止新加入请求的超长 Prompt 把正在生成的 Decode 请求卡住导致卡顿会将长的 Prefill 切割成小块Chunk与 Decode 任务混合在一个 Batch 里执行。五、 总结大模型推理架构优化的本质就是一场“压榨计算资源”与“对抗显存墙”的战争。通过结合上篇博客的PagedAttention解决空间碎片和本篇的Continuous Batching解决时间碎片现代 AI Infra 终于能够将 GPU 的利用率推向极致让千亿参数模型的大规模商用化成为可能。懂模型结构只能决定你能否跑通一个 Demo而懂底层 Infra 调度才决定了你能否扛住双十一级别的千万级高并发。

相关文章:

【AI Infra 核心】从零剖析大模型服务框架:如何榨干 GPU 算力实现极致推理吞吐?

🚀【AI Infra 核心】从零剖析大模型服务框架:如何榨干 GPU 算力实现极致推理吞吐?摘要:上一篇我们通过 PagedAttention 解决了大模型推理时的“显存爆炸”危机。但在实际的生产环境中,光有显存是不够的。老板花重金买的…...

pyglet入门指南:从零开始构建跨平台游戏应用的完整教程

pyglet入门指南:从零开始构建跨平台游戏应用的完整教程 【免费下载链接】pyglet pyglet is a cross-platform windowing and multimedia library for Python, for developing games and other visually rich applications. 项目地址: https://gitcode.com/gh_mirr…...

ComfyUI-to-Python-Extension 安装教程:如何正确配置开发模式选项

ComfyUI-to-Python-Extension 安装教程:如何正确配置开发模式选项 【免费下载链接】ComfyUI-to-Python-Extension A powerful tool that translates ComfyUI workflows into executable Python code. 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-to-Pyt…...

Dinghy架构解析:深入理解docker-machine包装器的设计哲学

Dinghy架构解析:深入理解docker-machine包装器的设计哲学 【免费下载链接】dinghy faster, friendlier Docker on OS X 项目地址: https://gitcode.com/gh_mirrors/di/dinghy Dinghy作为一款为macOS用户打造的Docker工具,通过巧妙包装docker-mach…...

告别卡顿闪退!3步构建TV应用的模块化测试防护网

告别卡顿闪退!3步构建TV应用的模块化测试防护网 【免费下载链接】my-tv 我的电视 电视直播软件,安装即可使用 项目地址: https://gitcode.com/GitHub_Trending/my/my-tv TV应用的流畅体验是用户最基本的需求,但卡顿和闪退问题却常常影…...

jQuery Masked Input项目架构分析:从Grunt构建到模块化设计

jQuery Masked Input项目架构分析:从Grunt构建到模块化设计 【免费下载链接】jquery.maskedinput jQuery Masked Input Plugin 项目地址: https://gitcode.com/gh_mirrors/jq/jquery.maskedinput jQuery Masked Input Plugin是一款轻量级的表单输入格式化工具…...

3DTilesRendererJS插件系统完全指南:扩展你的3D渲染能力

3DTilesRendererJS插件系统完全指南:扩展你的3D渲染能力 【免费下载链接】3DTilesRendererJS Renderer for 3D Tiles in Javascript using three.js, Babylon.js, and r3f 项目地址: https://gitcode.com/gh_mirrors/3d/3DTilesRendererJS 3DTilesRendererJS…...

你的LaTeX参考文献引用对了吗?详解\cite, \citet, \citep的区别与选用场景

LaTeX参考文献引用权威指南:从基础语法到期刊规范实战 第一次用LaTeX写论文时,我被参考文献引用折磨得差点放弃学术生涯。导师批注的"引用格式不统一"像魔咒一样出现在每一页——有时是"(作者, 年份)",有时变成"作者…...

基因编辑分析:CRISPR实验的数据处理流程

基因编辑技术正以前所未有的速度改变生命科学研究,其中CRISPR-Cas9系统因其高效性和精准性成为核心工具。实验成功的关键不仅在于操作技术,更依赖于对海量数据的科学处理。本文将系统解析CRISPR实验的数据处理流程,帮助研究者从原始数据中挖掘…...

D2L.ai音乐生成:AI作曲与音乐风格转换的终极指南

D2L.ai音乐生成:AI作曲与音乐风格转换的终极指南 【免费下载链接】d2l-en Interactive deep learning book with multi-framework code, math, and discussions. Adopted at 500 universities from 70 countries including Stanford, MIT, Harvard, and Cambridge. …...

GLM-4-9B-Chat-1M企业落地:构建私有法律知识引擎,支持类案推送与裁判规则提炼

GLM-4-9B-Chat-1M企业落地:构建私有法律知识引擎,支持类案推送与裁判规则提炼 想象一下,你是一家律师事务所的合伙人,手头有一个复杂的商业合同纠纷案件。为了准备诉讼策略,你需要查阅过去十年内所有相关的判例、法律…...

【稀缺实测数据集+可运行代码】:R语言实现LLM输出偏见量化评估(含chi2_residual_bias、KL-divergence_error等6种统计检验报错修复方案)

更多请点击: https://intelliparadigm.com 第一章:R语言在大语言模型偏见检测中的统计方法报错解决方法 在使用R语言对LLM输出进行偏见量化分析(如性别/种族倾向性卡方检验、嵌入空间KL散度计算)时,常见报错多源于数据…...

2026小程序店铺装修模板怎么选?小程序店铺装修教程是什么?

在想要搭建小程序的时候,我们往往会问2026小程序店铺装修模板怎么选?小程序店铺装修教程是什么?的确,这是许多人心中的疑问。老规矩,先看一组数据。《2026年2月北京本地商家数字化发展报告》显示,2026年以来…...

终极WinCDEmu虚拟光驱使用指南:免费开源的光盘镜像管理神器

终极WinCDEmu虚拟光驱使用指南:免费开源的光盘镜像管理神器 【免费下载链接】WinCDEmu 项目地址: https://gitcode.com/gh_mirrors/wi/WinCDEmu WinCDEmu是一款功能强大的开源虚拟光驱软件,它能够让你在Windows系统中轻松挂载ISO、IMG、CUE/BIN、…...

从人耳听感到App音量调节:Android/iOS开发者必须懂的声压、分贝与振幅换算实战

移动端音频开发实战:从分贝调节到防Clipping的完整指南 当你滑动手机上的音量滑块时,是否思考过这简单的UI操作背后隐藏着怎样的声学原理?在开发音乐播放器、语音通话或游戏音效时,我们经常需要将用户直观的"音量减小6dB&quo…...

第50篇:AI项目开发全流程复盘——从构思、实现到部署的完整指南(踩坑总结)

文章目录问题现象排查过程:拆解AI项目核心阶段根本原因与解决方案阶段一:需求构思与问题定义 —— 从“技术炫技”到“解决问题”阶段二:数据获取与处理 —— 模型的天花板在此决定阶段三:模型实验与开发 —— 在理想与现实间平衡…...

Scroll Reverser深度解析:macOS设备专属滚动方向终极指南

Scroll Reverser深度解析:macOS设备专属滚动方向终极指南 【免费下载链接】Scroll-Reverser Per-device scrolling prefs on macOS. 项目地址: https://gitcode.com/gh_mirrors/sc/Scroll-Reverser 在macOS生态系统中,一个长期存在的用户体验痛点…...

AutoSizeText终极指南:如何在Flutter中实现完美文本自适应

AutoSizeText终极指南:如何在Flutter中实现完美文本自适应 【免费下载链接】auto_size_text Flutter widget that automatically resizes text to fit perfectly within its bounds. 项目地址: https://gitcode.com/gh_mirrors/au/auto_size_text 在Flutter应…...

UE5实战:用FArchive手搓一个简易存档系统(附完整源码)

UE5实战:用FArchive构建高兼容性游戏存档系统 在开发一款RPG游戏时,最让玩家抓狂的莫过于辛辛苦苦打了三小时的Boss战,结果游戏崩溃后进度全失。上周我的团队就收到了这样一条玩家反馈:"你们的游戏很棒,但这个存档…...

当测试自动化率达到%,测试工程师还剩下什么?

一、核心问题及解决方案(按踩坑频率排序) 问题 1:误删他人持有锁——最基础也最易犯的漏洞 成因:释放锁时未做身份校验,直接执行 DEL 命令删除键。典型场景:服务 A 持有锁后,业务逻辑耗时超过锁…...

2026届必备的六大AI科研方案推荐榜单

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 计算机智能技术于毕业论文撰写当中的运用,正渐渐演变成学术范围里的关键辅助手段…...

GoCaptcha 革命性行为验证码:4种交互方式一站式解决网站安全难题

GoCaptcha 革命性行为验证码:4种交互方式一站式解决网站安全难题 【免费下载链接】go-captcha 🖖 GoCaptcha: A high-performance, interactive behavior captcha library for Go. Supporting click, slide, drag-drop, and rotation modes to secure yo…...

2025最权威的五大AI科研网站实际效果

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 在学术写作这个范畴之内,人工智能工具已然深入地融入到了论文创作的整个流程当中…...

git-recall 与团队协作:如何高效监控团队成员的工作进展

git-recall 与团队协作:如何高效监控团队成员的工作进展 【免费下载链接】git-recall An interactive way to peruse your git history from the terminal 项目地址: https://gitcode.com/gh_mirrors/gi/git-recall 在团队开发中,及时了解成员的…...

Wayback Machine浏览器扩展:重新定义互联网记忆的数字时间胶囊

Wayback Machine浏览器扩展:重新定义互联网记忆的数字时间胶囊 【免费下载链接】wayback-machine-webextension A web browser extension for Chrome, Firefox, Edge, and Safari 14. 项目地址: https://gitcode.com/gh_mirrors/wa/wayback-machine-webextension …...

SPIRE与SPIFFE标准:为什么这是云原生安全的未来

SPIRE与SPIFFE标准:为什么这是云原生安全的未来 【免费下载链接】spire The SPIFFE Runtime Environment 项目地址: https://gitcode.com/GitHub_Trending/sp/spire 在当今云原生环境中,微服务和容器化应用的普及带来了前所未有的灵活性和可扩展性…...

ohook安全分析:为什么它比传统KMS激活更安全可靠

ohook安全分析:为什么它比传统KMS激活更安全可靠 【免费下载链接】ohook An universal Office "activation" hook with main focus of enabling full functionality of subscription editions 项目地址: https://gitcode.com/gh_mirrors/oh/ohook …...

Fuzzilli代码生成机制揭秘:如何通过CodeGenerators精准定位特定漏洞类型

Fuzzilli代码生成机制揭秘:如何通过CodeGenerators精准定位特定漏洞类型 【免费下载链接】fuzzilli A JavaScript Engine Fuzzer 项目地址: https://gitcode.com/gh_mirrors/fu/fuzzilli Fuzzilli是一款强大的JavaScript引擎模糊测试工具,其核心能…...

Jest项目概览:Elasticsearch Java HTTP Rest客户端的完整指南

Jest项目概览:Elasticsearch Java HTTP Rest客户端的完整指南 【免费下载链接】Jest Elasticsearch Java Rest Client. 项目地址: https://gitcode.com/gh_mirrors/jes/Jest Jest是一个强大的Elasticsearch Java HTTP Rest客户端,为Java开发者提供…...

会话管理与访问控制:OWASP Developer Guide企业级安全解决方案

会话管理与访问控制:OWASP Developer Guide企业级安全解决方案 【免费下载链接】DevGuide The OWASP Developer Guide 项目地址: https://gitcode.com/gh_mirrors/devguid/DevGuide OWASP Developer Guide提供了全面的企业级安全解决方案,其中会话…...