vllm技术分享

vLLM

  • Question:

    推理所生成的序列长度大小是无法事先预知的,大部分框架会按照(batch_size, max_seq_len)这样的固定尺寸,在gpu显存上预先为一条请求开辟一块连续的矩形存储空间。这样的分配方法很容易引起“gpu显存利用不足”的问题,进而影响模型推理时的吞吐量。

  • Solve:

    通过PagedAttention的技术,按需分配,减少存储碎片,动态地为请求分配KV cache显存,提升显存利用率。

  • Paged Attention

    先总结虚拟内存分页管理的基本原理:

    1.物理内存划分为固定大小的块,每一块为页(page),物理内存中模拟出来的虚拟内存也按相同的方式做划分。

    2.按需分配,动态加载数据到虚拟内存上,虚拟内存做好物理内存的映射。

    3.通过模拟连续内存的方式,解决了物理内存上的碎片问题。

    处理请求:
    在这里插入图片描述

    逻辑内存(logical KV blocks)可理解为操作系统中的虚拟内存,每个block类比于虚拟内存中的一个page。

    块表(block table)可理解为操作系统中的虚拟内存到物理内存的映射表,包含:

    • 逻辑块和物理块的映射关系(physical block number)
    • 每个物理块上被填满的槽位(# filled):

    物理内存(physical KV blocks)可理解为操作系统中的物理内存(存在gpu显存),每个block类比于虚拟内存中的一个page。

    流程:

    1. KV cache计算attention。当计算时,使用的是逻辑块,即形式上这些token都是连续的。与此同时,vLLM后台会通过block table这个映射关系,从物理块上获取数据做实际计算。通过这种方式,每个request都会认为自己在一个连续且充足的存储空间上操作,尽管物理上这些数据的存储并不是连续的。

    2. 基于新生成的词,更新逻辑块、物理块和block table。

    3. 分配新的逻辑块和物理块。逻辑块装满时,开辟新的逻辑块,并同时更新对应的block table和物理块。

  • Application:
    • Parallel Sampling:

      在这里插入图片描述

      假定我们发给模型1个request,这个request中包含2个prompt/sample,记为Sample A1和Sample A2,这两个prompt完全一致,都为Four score and seven years ago our,我们希望模型对这两个prompt分别做续写任务。

      (1)首先,Prefill阶段,vLLM拿到Sample A1和Sample A2,根据其中的文字内容,为其分配逻辑块和物理块。

      • 分配逻辑块:对于A1,vLLM为其分配逻辑块block0和block1;对于A2,vLLM为其分配逻辑块block0和block1。需要注意的是,A1的逻辑块和A2的逻辑块是独立的,你可以将A1和A2视作操作系统中两个独立运行的进程。
      • 分配物理块:对于A1和A2,虽然逻辑块独立,但因为它们的文字完全相同,所以可以在物理内存上共享相同的空间。所以A1的逻辑块block0/1分别指向物理块block7/1;A2的逻辑块block0/1分别指向物理块block7/1。我们设每个物理块下映射的逻辑块数量为ref count,所以对物理块block7/1来说,它们的ref count都为2。

      (2)然后,进入decode阶段,A1和A2各自做推理,得到第一个token,分别为fathers和mothers。

      • 将生成的token装入逻辑块:对于A1和A2来说,将其生成的token装入各自的逻辑块block1。
      • 触发物理块copy-on-write机制:由于fathers/mothers是两个完全不同的token,因此对物理块block1触发复制机制,即在物理内存上新开辟一块空间。此时物理块block1只和A2的逻辑块block1映射,将其ref count减去1;物理块block3只和A1的逻辑块block1映射,将其ref count设为1。
    • Beam Search

    在这里插入图片描述

    因为beam width = 4,这意味着根据beam search算法,在当前阶段我们生成了top 4个概率最大的token(记这4个token为beam candidate 0/1/2/3),它们分别装在block5,block6,block7和block8中。

    现在使用beam search算法做decoding,继续找出top 4个最可能的next token。假设这top 4 next token,有2个来自beam candidate 1,有2个来自beam candidate 2。因此在block6中引出block9和block10,用于装其中两个top 2 next token;对block7也是同理。

    现在,block9/10/11/12中装的top 4 next token,就成为新的beam candidates,可以按照和上述一样的方式继续做beam search算法。而对于block5和block8,它们已经在beam search的搜索算法中被淘汰了,后续生成的token也不会和它们产生关系,所以可以清除掉这两个逻辑块,并释放它们对应的物理块的内存空间。

    好,我们继续往左边来看这幅图。block3引出block5/6/7,block4引出block8,这意味着当前这4个top4 token,是上一个timestep下candidate1和candidate3相关序列生成的(candidate0和2的block没有画出,是因为它们所在的序列被beam search算法淘汰了,因此没有画出的必要)。由于block8已经被淘汰,所以block4也相继被淘汰,并释放对应的物理内存空间。

    由此往左一路推,直到block0为止(block0代表着prompt,因此被beam seach中所有的序列共享)。这一路上,我们都根据最新时刻的beam search decoding结果,释放掉不再被需要的逻辑块和对应的物理内存空间,达到节省显存的目的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/783507.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ICE启动AI:人工智能高频交易平台测试进入尾段

Intercontinental Exchange, Inc.(ICE)宣布,其革命性AI高频交易平台ICE.AI已经完成搭建,目前已全面进入测试最终阶段,该平台利用先进的人工智能技术,主旨在提升交易效率和市场分析的精确度,即将为全球交易者带来前所未有的交易体验。 性能验证: ICE.AI平台在测试阶段主要进行性…

【QT中堆栈布局的实现】

学习分享 1、环境设置,头文件2、.h文件2.1、主界面.h文件2.2、对话界面1.h文件2.3、对话界面2.h文件 3、.cpp文件3.1、对话界面1.cpp3.2、对话界面2.cpp3.3、主界面.cpp3.4、main.cpp 1、环境设置,头文件 该示例使用C14实现,因此在QT项目pro文…

【银河麒麟】系统内存使用异常现象分析及建议

1.现象描述 问题机器系统内存占用长时间90%以上,同时伴随着高iowait,在故障时无法ssh登录,同时也影响生产业务。但之后系统内存占用会突然掉下来,在内存自己掉下来后能ssh登录。 2.显示分析 2.1 sa日志分析 查看问题机器3月15日…

什么是企业服务总线?它包含哪些技术组件?

我们每个人都会去医院,您描述下我们去医院的场景,然后引出这个挂号流程,通过挂号流程中的一个问题或者什么东西来吸引他的好奇心,这样呢?会比现在的预设场景好一些。我举个例子,人工智能怎么帮人看病。如果…

关于put提交不了参数的解决办法

html中form表单只支持GET与POST请求,而DELETE、PUT等method并不支持, 如图所示 参数请求改成RequestBody,用json格式传参即可解决问题

AI直播手机APP震撼发布!3大场景直播,60秒一键开播!

无需繁琐准备,无需复杂操作,60 秒在抖音及其他平台一键开播,青否数字人AI直播APP正式发布! 3大AI直播类型,6大核心 AIGC 技术,让新手小白也能轻松搞定数字人在全平台直播,并且有效规避违规风险&…

数据跨境法案:美国篇上

近年来随着全球数字化的加速发展,数据已成为国家竞争力的重要基石。在这样的背景下,中国软件和技术出海的场景日益丰富。本系列邀请到在跨境数据方面的研究人员针对海外的数据跨境政策进行解读。 本期将针对美国对数据跨境流动的态度和政策进行阐释。过…

代码随想录算法训练营Day62|冗余连接、冗余连接II

冗余连接 108. 冗余连接 (kamacoder.com) 考虑使用并查集&#xff0c;逐次将s、t加入并查集中&#xff0c;当发现并查集中find(u)和find(v)相同时&#xff0c;输出u和v&#xff0c;表示删除的边即可。 #include <iostream> #include <vector> using namespace s…

游戏开黑语音-使用云服务器部署teamspeak服务(系统Ubuntu 20.04 LTS)

目录 前置物品服务器调整及部署1.重装系统2.换源3.下载teamspeak服务端并部署 连接服务器参考 前置物品 一台云服务器&#xff08;系统&#xff1a;Ubuntu 20.04 LTS) 服务器调整及部署 1.重装系统 在腾讯云官网的主机控制台内&#xff0c;选择重装系统 (由于之前为了快速和…

【收藏】欧盟CE、美国FDA法规及标准查询常用网站

01 CE法规&标准查询网站 医疗器械主管部门的网站 网址: https://www.camd-europe.eu/ 简介: CAMD的全称是Competent authorities for medical devices&#xff0c;翻译成中文叫做医疗器械监管机构&#xff0c;实际上它指的是欧盟成员国医疗器械监管机构的联盟&#xff…

江门数字化mes系统定制哪家好 珠海盈致mes系统服务商

对于江门数字化MES系统的定制服务&#xff0c;选择珠海盈致科技是一个不错的选择。珠海盈致科技是一家专业的智能制造解决方案提供商&#xff0c;具有丰富的数字化制造和MES系统定制经验。以下是选择珠海盈致科技的一些优势&#xff1a; 专业团队&#xff1a;珠海盈致科技拥有一…

Hack The Box-PermX

总体思路 CVE-2023-4220->敏感信息收集->符号链接攻击 信息收集&端口利用 nmap -sSVC permx.htbStarting Nmap 7.94SVN ( https://nmap.org ) at 2024-07-07 21:16 EDT Nmap scan report for permx.htb Host is up (0.24s latency). Not shown: 998 closed tcp po…

为什么要设计DTO类

为什么要使用DTO类&#xff0c;下面以新增员工接口为例来介绍。 新增员工 1.1 需求分析和设计 1.1.1 产品原型 一般在做需求分析时&#xff0c;往往都是对照着产品原型进行分析&#xff0c;因为产品原型比较直观&#xff0c;便于我们理解业务。 后台系统中可以管理员工信息…

供应RTL8366SC-CG瑞昱芯片

标17566722766题 长期供应各品牌原装芯片&#xff1a; RTL8366SC-CG RTL8382L-VB-CG RTL8218D-CG RTL8192EU-VP-CG RTL8821CU-CG RTL8811CU-CG RTL8723DU-CG RTL8723DS-CG RTL8711AM-VB1-CG RTL8111H-VB-CG RTL8111H-CG RTL8211F-CG RTL8211E-VB-CG RTL8733BS…

HW期间——溯源

01 前期准备 001溯源的概念 通过对受害资产与内网流量进行分析一定程度上还原攻击者的攻击路径与攻击手法根据已有的线索&#xff0c;攻击方式以及攻击特征等通过技术手段反查攻击者身份或是组织信息。 描述&#xff1a;完整还原攻击链条&#xff0c;溯源到黑客的虚拟身份&…

算法 - 动态规划

文章目录 介绍解题步骤题型背包问题01背包问题朴素算法&#xff08;递归实现&#xff09;备忘录算法(记忆化搜索)递推求解算法&#xff08;动态规划&#xff09; 连续子段和问题最大连续子序列和最大连续子序列和的最优方案 递推问题斐波那契数列II数塔II上楼II 最长不下降子序…

选项卡切换(排他法、轮转法、轮转法之事件委托)

选项卡需求&#xff1a; tabbar content 两部分的内容一一对应&#xff0c;我们点击某一个tab的时候&#xff0c;该tab的类名设置为on&#xff0c;其他的tab要清除on类名&#xff0c;对应的content的类名要设置为 active &#xff0c;其他的content清除active类名。 <!DOCTY…

vue通过后台返回的数字显示不同的文字内容,多个内容用、隔开

后台返回的数据 显示效果&#xff1a; html&#xff1a; <el-table-columnalign"center"label"使用过的小程序"width"124"v-if"activeTab 0"><template #default"scope"><divv-for"(item, index) in s…

众所周知沃尔玛1P是怎么运营?

​​沃尔玛的1P模式&#xff0c;即第一方供应商模式&#xff0c;是其独特的采购策略。在这种模式下&#xff0c;供应商先将商品卖给沃尔玛&#xff0c;由沃尔玛负责库存管理和销售。沃尔玛通过强大的采购和物流能力控制库存&#xff0c;确保商品品质&#xff0c;为客户提供更加…

【操作系统】进程管理——调度算法(个人笔记)

学习日期&#xff1a;2024.7.4 内容摘要&#xff1a;各种调度算法的思想、规则、优缺点介绍 为什么要有调度算法&#xff1f; 调度算法就好比一群人在银行办理业务&#xff0c;准备办理业务的人就是进程/作业&#xff0c;银行窗口的工作人员就是CPU&#xff0c;进程往往是比C…