优秀网站下载网站开发技术 html
2026/5/24 7:01:23 网站建设 项目流程
优秀网站下载,网站开发技术 html,wordpress 扫码阅读,商务网站底部设计作为vLLM源码的开发者、框架的使用者#xff0c;刚接触vLLM框架时会有这样的问题“如何快速地了解vLLM全貌#xff1f;”。要解决这个问题#xff0c;可以去读vLLM官方指导手册[1] 、阅读其github源码[2]或者相关博客[3]。然而#xff0c;对于初学者这么做虽然有效#xf…作为vLLM源码的开发者、框架的使用者刚接触vLLM框架时会有这样的问题“如何快速地了解vLLM全貌”。要解决这个问题可以去读vLLM官方指导手册[1] 、阅读其github源码[2]或者相关博客[3]。然而对于初学者这么做虽然有效但不一定高效。推荐的一个学习步骤先大致了解整体运行流程接着理解关键模块逻辑然后学习关键特性。同时逐步理解源码。本文作为这个过程的一个前置引导主要分析vLLM框架的运行流程。由于vLLM框架的迭代速度非常之快如果直接解读源码可能过几个月后这些逻辑就发生了较大的变化所以文中以概念为主代码逻辑为辅。主要参考vLLM 0.10.0本人梳理了一版整体架构图如下所示细节后面逐步展开。1 为什么需要一个LLM推理框架在有PyTorch/TensorFlow这些既能训练又能推理的深度学习框架后为什么还需要构建一个推理框架这是在学习vLLM前需要思考的一个关键问题。以PyTorch框架为例有了训练好的模型后切换model的模式即可运行推理# 关键步骤 # 1. 设置为推理模式 model.eval() # 2. 进行推理不计算梯度 with torch.no_grad(): output model(input_data)对于自回归的大语言模型LLM多个步骤增加前、后token的转换处理token的流处理但这种方式会面临如下问题如何处理来自不同用户的请求资源利用率如何维持较高水平如何避免超显存(OOM)对于问题1一般的解决方式是部署推理服务通过API server来响应用户的并发请求。如Tensorflow的推理部署服务、NVIDIA的Triton。问题2、问题3主要跟负载的动态变化相关单位时间内推理服务处理的请求数量会发生动态变化这是推理服务所共有的问题。单个请求的资源需求会发生变化。这是自回归模型所特有的。 随着序列的增长计算量、KV cache显存量均会增长。若按照峰值需求来配置资源会导致资源整体利用率低若资源给得太少会使得推理服务质量下降或者触发OOM问题。所以针对LLM的特点需要有一个专门推理引擎完成高效的请求调度与资源分配。2 vLLM的基本要素为了解决通用深度学习框架中存在的不足vLLM设计了几个关键模块调度器(Scheduler)用于解决多请求之间的调度协同问题显存管理(KV cache manager)为请求分配KV cache内存资源。执行器(Model runner)完成模型的计算。上述3个模块放置在引擎核(Engine core)中。有了关键模块后再采用API服务的方式得到如下所示的改进方案在这个基础上为了提升算子的下发速度框架要做进一步优化。把在CPU侧执行的一些步骤放入独立的进程中如请求的前置处理token转换等进程之间采用异步流程。这么做能够降低CPU运算对GPU运算的阻塞影响。同时为了适配分布式并行推理在engine core里面抽出了一个engine core client模块。该模块负责给不同的engine core分配请求。在模块管理上面除了engine core其它模块基本放入AsyncLLM中。这也是为了防止CPU成为运算的瓶颈。vLLM的基本流程执行框图如下其中Node 0为主节点上面运行了API Server、AsyncLLM、engine core从节点(Node1~N)仅运行engine core。按照OpenAI的格式给vLLM发送一个在线服务请求收到请求后其基本的处理步骤API server响应请求对请求的信息进行初步处理进行请求的前置处理包括对prompt进行token转换获得token idengine core client将请求发送给合适engine coreengine core完成自回归运算进行后置处理包括token转文本的过程返回请求结果给用户。这份完整版的大模型 AI 学习和面试资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】3 关键模块运行逻辑3.1 Engine core模块单engine core的基本架构图如下所示。AsyncLLM与engine core运行在不同的进程中两者通过队列(queue)交互。engine core的任务由executor下发多个worker共同完成LLM的数据生成。一般情况下每个worker拥有一张GPU卡多worker可实现TP/SP/EP等并行策略。注上图为V1版本与V0版本有差异具体参看vLLM框架V1演进分析[4]。Engine core里有三个协同的线程输入处理线程(process input)主要负责接收engine core client传递过来的数据并将请求放入队列输出处理线程(process output)将数据通过zmq通信返回给engine core client处理循环线程(run busy loop)持续地从输入队列拿取请求按照vLLM config里的参数构造数据并执行引擎的step操作。step操作包括请求调度和模型运算。engine core计算流3.2 Scheduler模块scheduler模块主要职责是根据系统资源和当前在执行请求的情况组织每次推理需要计算的数据。分析scheduler的执行逻辑前先回顾下LLM推理过程的一般特点推理的阶段不一样计算、访存的资源消耗量不同。prefill属于计算密集、decode属于访存密集。不同请求的decode结束时机不同生成的序列长短也不一样。批处理示意黄色表示prefill、蓝色表示decode生成结合LLM的推理特点scheduler目前应用了两个关键技术1.持续批处理(Continus-batching)持续地往GPU中送入请求数据而不是离散的进行数据推理。一个请求结束立刻下发新的请求。2.分块预填充(Chunked Prefill)将大的prefill分块成更小的块切分序列执行也可以将它们与decode阶段的请求一起混合执行。除此之外scheduler还要根据请求优先级调整执行顺序高优先级的请求可以打断低优先级的请求。scheduler整体逻辑按照可用资源的数量和优先级构建调度输出。scheduler里面有两个主要的队列waiting和running以及一些辅助队列。运行时请求在不同的队列之间轮转。scheduler通过KV manager为请求配备KV cache。scheduler的优先级默认是FCFS(先到先服务)也支持用户自定义。scheduler处理的大致步骤请求抵达后先进入waiting队列找KV manager申请KV cache块具备下发条件的请求转入running队列组batch下发执行(图示中有3个请求)资源不足的请求会转回waiting队列。更细节的执行步骤参考[5]3.3 KV Manager模块KV值的复用能够降低 Attention中的冗余计算目前KV cache已成为了Attention推理计算的标准配置。框架中需要完成对多个不同请求的KV cache管理。vLLM中的KV cache管理逻辑基于Paged attention原理目前的版本还融合了前缀树特点[6]。KV cache管理的整体架构示意图如下所示分为了逻辑层和物理层。KV Manager负责逻辑层、Model Runner处理物理层Scheduler调度器作为信息传递的桥梁衔接了逻辑层与物理层。cache的管理元素包括池pool表(table)、层(layer)、块(block)和槽(slot)。slot为最小管理单元每个token占一个slotblock为请求分配的基本单位一个block包含多个slotpool为逻辑层block的管理合集通过链表将block数据组织起来table管理请求与数据的映射表一个table可包含多个请求的信息。位于物理层layer一个整体的tensor拆分成多个blocks使用。对应attention的一个层所有请求共用模块之间运行的关键步骤Scheduler分配资源给请求通过KV Manager申请逻辑blocksKV Manager把Pool中空闲的blocks选中后给到对应请求分配好逻辑blocks后Scheduler构建scheduler.output传递给ModelRunnerModelRunner为每条请求创建block table并生成slot_mapping计算时把slot_mapping传入attention就能够从物理KV blocks上面找到所需的数据。逻辑KV blocks是一个双向链表采用LRU策略淘汰旧数据[7]。blocks数据结构示意3.4 Model Runner模型执行器(model runner)主要负责计算调度器发送过来的批请求并返回执行结果。从上面engine core的架构可知executor可以有多个worker模块每个worker都会有自己的model runner。model runner的逻辑主要是模型运算、以及物理层的kv cache分配与管理。执行的基本步骤根据映射表(block table)信息为每个待执行请求分配kv blocks将请求组成序列batch并让模型处理该batch数据。在Attention层运算阶段每层拿取自己对应的kv cache数据完成MHA/GQA/MLA运算。3.5 Attention模块Attetnion模块负责承载注意力计算的算子其关键要素QKV数据Q值是展平后的tokens序列KV则是整个KV Cache Tensor。Metadata注意力运算的元数据包括KV相关的block table、slot_mapping以及Q值的起始位置信息(query_start_loc)用于区分不同请求Backend通过定义不同后端(backend)来支持不同类型的Attention算子以及不同的硬件。4 数据处理流程接下来通过一个请求处理的数据流的例子了解从请求、kv cache、attention算子、到采样的数据传递过程。给vLLM发送请求提示词prompts包含两条语句即有两个子请求。方式一在线服务(online serving)方式二离线推理(offline infer):Step1文字转token ids(Tokenization)。 多个请求会拼接成一个数据(组batch)用位置(positions)记录每个请求对应的ids。Step2KV manager分配逻辑块、计算slot。Step3Model runner分配KV cacheStep4Decoding生成新token并更新ids、positions、slot_mapping数据。该过程需要迭代多次。示例中KV manager的逻辑块是连续的而物理块在model runner中不连续。从模型输出的logits到token id要经过采样(sampling)计算。Step5将token id还原成词(De-Tokenization)。说真的这两年看着身边一个个搞Java、C、前端、数据、架构的开始卷大模型挺唏嘘的。大家最开始都是写接口、搞Spring Boot、连数据库、配Redis稳稳当当过日子。结果GPT、DeepSeek火了之后整条线上的人都开始有点慌了大家都在想“我是不是要学大模型不然这饭碗还能保多久”我先给出最直接的答案一定要把现有的技术和大模型结合起来而不是抛弃你们现有技术掌握AI能力的Java工程师比纯Java岗要吃香的多。即使现在裁员、降薪、团队解散的比比皆是……但后续的趋势一定是AI应用落地大模型方向才是实现职业升级、提升薪资待遇的绝佳机遇这绝非空谈。数据说话2025年的最后一个月脉脉高聘发布了《2025年度人才迁徙报告》披露了2025年前10个月的招聘市场现状。AI领域的人才需求呈现出极为迫切的“井喷”态势2025年前10个月新发AI岗位量同比增长543%9月单月同比增幅超11倍。同时在薪资方面AI领域也显著领先。其中月薪排名前20的高薪岗位平均月薪均超过6万元而这些席位大部分被AI研发岗占据。与此相对应市场为AI人才支付了显著的溢价算法工程师中专攻AIGC方向的岗位平均薪资较普通算法工程师高出近18%产品经理岗位中AI方向的产品经理薪资也领先约20%。当你意识到“技术AI”是个人突围的最佳路径时整个就业市场的数据也印证了同一个事实AI大模型正成为高薪机会的最大源头。最后我在一线科技企业深耕十二载见证过太多因技术卡位而跃迁的案例。那些率先拥抱 AI 的同事早已在效率与薪资上形成代际优势我意识到有很多经验和知识值得分享给大家也可以通过我们的能力和经验解答大家在大模型的学习中的很多困惑。我整理出这套 AI 大模型突围资料包【允许白嫖】✅从入门到精通的全套视频教程✅AI大模型学习路线图0基础到项目实战仅需90天✅大模型书籍与技术文档PDF✅各大厂大模型面试题目详解✅640套AI大模型报告合集✅大模型入门实战训练这份完整版的大模型 AI 学习和面试资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】①从入门到精通的全套视频教程包含提示词工程、RAG、Agent等技术点② AI大模型学习路线图0基础到项目实战仅需90天全过程AI大模型学习路线③学习电子书籍和技术文档市面上的大模型书籍确实太多了这些是我精选出来的④各大厂大模型面试题目详解⑤640套AI大模型报告合集⑥大模型入门实战训练获取方式有需要的小伙伴可以保存图片到wx扫描二v码免费领取【保证100%免费】

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询