Workflow
张量并行
icon
搜索文档
深度拆解,硬核解构,揭开vLLM推理系统实现高效吞吐的秘籍
机器之心· 2025-10-26 12:03
文章核心观点 - vLLM是一套针对大语言模型推理优化的高性能开源推理框架,通过创新的显存管理、并行调度和KV缓存技术,在保持模型准确性的同时大幅提升吞吐量与响应速度[1] - 该博客文章对vLLM的架构、代码和原理进行了深入分析,涵盖了从基础推理流程到高级功能、扩展能力和分布式系统部署的完整技术栈[3][4][6] - 文章采用倒金字塔结构写作方式,从宏观层面入手逐步深入细节,帮助读者建立对整个系统的清晰整体认知而不被繁琐技术细节淹没[6] LLM引擎核心架构 - LLM引擎是vLLM的核心构建模块,单独使用时能够实现高吞吐量推理但仅限于离线场景[7][8] - 引擎构造函数包含多个子组件:vLLM配置、处理器、引擎核心客户端、输出处理器、模型执行器、结构化输出管理器和调度器[14][15] - 调度器内部包含策略设置、等待队列与运行队列以及KV缓存管理器,其中KV缓存管理器维护一个可用KV缓存块的池子,数量可达几十万甚至更多[16] - 模型执行器在构造过程中会创建Worker对象并执行三个关键步骤:初始化设备、加载模型和初始化KV缓存[19][20][21] 推理流程与调度机制 - Generate函数处理每个提示词时创建唯一请求ID并记录到达时间,通过输入预处理器进行分词后打包成EngineCoreRequest传递到引擎核心[24][25][29] - 每个推理步骤包含三个阶段:调度阶段选择本步骤要执行的请求,前向传播阶段运行模型并采样新token,后处理阶段进行去分词和停止条件检查[32][33][34][35] - 推理引擎主要处理两类工作负载:Prefill请求对所有提示token执行一次前向传播通常是计算受限的,Decode请求仅对最新生成的一个token执行前向传播是内存带宽受限的[38] - V1调度器可以在同一个step中混合处理prefill与decode请求,优先处理decode请求,调度器会计算需要生成的新token数并调用KV-cache管理器的allocate_slots函数[39][40][41][42] 高级功能特性 - 分块预填充将预填充步骤拆分为更小块执行,避免长提示词请求独占计算资源,通过设置long_prefill_token_threshold正整数启用[57] - 前缀缓存避免重复计算多个提示词开头部分共享的token,当提示词长度超过一个KV-cache块(默认16个token)时可显著加快预填充请求速度[62][70][73] - 引导式解码在每一步解码时通过基于语法的有限状态机对logits进行约束,确保只有符合语法规则的token被采样,支持正规文法和上下文无关文法[93][94][97] - 推测解码通过引入较小草稿模型快速生成k个候选token,然后使用大模型进行验证,在统计上等价于标准自回归解码但潜在更快[106][107][112] 系统扩展与分布式部署 - 从UniProcExecutor扩展到MultiProcExecutor支持多GPU进程,通过张量并行将模型分片到同一节点多张GPU上,节点内带宽显著高于节点间带宽[141][143][149] - 分布式系统部署示例使用两台8×H100节点,一台以headless模式运行引擎,另一台作为API服务器,通过数据并行在多个节点上复制模型[153][156] - API服务节点实例化AsyncLLM对象创建DPLBAsyncMPClient,通过FastAPI应用暴露OpenAI兼容接口,整个堆栈通过Uvicorn对外提供服务[172][175] - 完整请求生命周期从终端发送请求到API服务器,经过负载均衡选择引擎,执行推理步骤后将结果返回,复杂分布式系统对用户透明[177][183] 性能测量与基准测试 - 推理系统性能有两个互相制约的指标:延迟从请求提交到返回token的时间对交互式应用重要,吞吐量系统每秒能够生成或处理的token/请求数量对离线工作负载关键[185][186][189] - 常见推理性能指标包括TTFT从请求提交到接收第一个输出token的时间,ITL两个连续token之间的时间,TPOT请求中所有输出token的平均ITL,以及端到端延迟[190] - vLLM提供CLI工具vllm bench {serve,latency,throughput}进行基准测试,latency脚本使用短输入并生成128个输出token,throughput脚本一次性提交固定prompt集测量吞吐量[196][197] - 延迟和吞吐量存在竞争关系,当批大小B较小时每个token的间隔延迟下降,当B增大时间隔延迟上升但吞吐量提高直到达到峰值性能[192][193]
算力:从英伟达的视角看算力互连板块成长性 - Scale Up 网络的“Scaling Law”存在吗?
2025-08-21 23:05
行业与公司 * 行业聚焦于AI算力网络互连板块 特别是Scale Up网络技术及其带来的产业链机会[1] * 核心讨论围绕英伟达及其产品策略展开 同时涉及亚马逊、谷歌、Meta等公司的ASIC方案[5] * 产业链受益环节包括光纤、AEC(有源铜缆)、光模块(1.6T)、MPO、FU以及交换机厂商(如锐捷网络、博通、天弘、Arista等)[28][30] 核心观点与论据 * **Scale Up网络的定义与必要性**:Scale Up网络旨在实现跨机柜的大规模连接 将机柜当作积木连接 其核心驱动力是解决硬件内存墙问题并满足AI并行计算(尤其是专家并行和张量并行)的高通信需求[1][5][7][10] * **英伟达的推广策略**:通过两条路径推广 一是不断提高Nvlink带宽(每代产品单卡带宽基本翻倍) 二是扩大Up规模(如从H100升级到GH200时将MV8提升到MV256) 后因成本高和推理需求不足而推出更具性价比的NVO32方案[6] * **Scale Up相比Out网络的优势**:在超节点内能提供更高带宽 在英伟达系统中Up带宽是Out的九倍 未来随着规模扩大可能取代Out 实现AI网络统一连接[7][8] * **性能优势验证**:GB200使用FP4精度 在TPS(Token Per Second)为10时 其单卡性能比B200差三倍(两倍来自FP4 0.5倍来自Scale Up和Grace CPU);当TPS为20时 差距变为七倍(3.5倍来自Scale Up和Grace CPU) 表明网络通信压力增大时Scale Up优势更明显[4][14][15] * **更大规模网络的需求**:为满足单用户TPS增长和模型能力拓展(如多模态模型) 需要组建更大规模的Scale Up网络(如NVL576) 其规模扩大速度需快于性能指标增长速度[21][22] * **组网方式与技术选择**:更大规模网络需进行机柜间第二层连接 建议采用光纤和AEC(有源铜缆)而非PCB(柜内)和DAC(有效距离仅1米)[23][24] * **带来的增量需求**:在第二层网络中 一个GPU需要9个等效1.6T连接(传统IB架构仅需2-3个) 且每4个GPU需额外增加一台Nvlink交换机(传统IB架构每30-48颗GPU才需一台) 导致端口和交换机需求显著增长[4][25][26] 其他重要内容 * **内存墙概念**:分为模型内存墙和算力内存墙 指模型参数量和算力增速快于配套内存(如HBM)增速 需通过高速通信实现显存池化[1][10] * **并行计算范式**:包括数据并行、流水线并行、专家并行和张量并行 后两者对通信频率和数据大小要求更高[2][11][12][13] * **总拥有成本(TCO)分析**:GB200 NVL72方案的总硬件成本约为6.1万美金 比NVL576方案节省2万美金[18][19] * **技术路径排除**:CPO和OCS技术因故障率瓶颈和镇静频率问题 目前尚未能应用于Scale Up场景[27] * **市场认知差异**:市场普遍认为Scale Up仅限于柜内 但实际需要跨机柜连接以提升单卡性能有效利用率[29][30]