首页 > 其他分享 >vllm使用总结

vllm使用总结

时间:2024-05-13 13:51:56浏览次数:20  
标签:总结 缓存 参数 内存 LLM 使用 存放 共享 vllm

核心问题点

60%内存存放参数,30%存放缓存的key,value向量,10%存放其他参数。 LLM相对传统深度学习,对cache的管理较差。 
  • 深度学习要求tensor内存连续,一般深度学习内存参数几乎不动,但LLM参数长度动态变化且周期无法预知导致cache内存碎片化
  • 共享内存做的比较差。LLM predict next token的解码方式,采用parallel sampling或者beam search方式,都会有大量的输出,这部分输出是具有相同的部分,是可以共享的;但由于存放在不同的连续空间,所以共享比较困难
  • 针对内存碎片化和共享内存的问题,提出共享虚拟内存

通过KV Cache管理虚拟缓存方式

  • PagedAttentione 借鉴内存管理方式,通过虚拟缓存页管理缓存
  • Parallel sampling 的时候,copy-on-write 增加共享物理block
  • beam search的时候,多条优化路径,存在比较大的共享prompt
  • In-context learning中,存在很长的重复示例,这部分可共享

推理问题

  • 调度使用的是FCFS,调度以请求的blocks为粒度
  • 同一个请求的多个blocks
    • Swapping 将缓存(DRAM) 交换到 CPU
    • 重计算,时间换空间
  • 分布式计算,采用tensor并行的方式(同一层参数分割到不同GPU)
  • 全局共享KV Cache Manager

参考:https://fancyerii.github.io/2023/11/01/pagedattention/

标签:总结,缓存,参数,内存,LLM,使用,存放,共享,vllm
From: https://www.cnblogs.com/adam86546853/p/18189064

相关文章

  • THUSC总结PART1-比赛总结/题解
    第一次参加\(THU\)的营,战绩惨不忍睹.D1T1给出\(d\),\(n_1\cdotsn_d\),\(l\),求\[\sum_{i_1=0}^{n_1-1}\sum_{2_1=0}^{n_2-1}\cdots\sum_{i_d=0}^{n_d-1}\max(0,(i_1\oplusi_2\oplus\cdotsi_d)-l)\]其中\(d<=10\),\(n_i<=1e18\),\......
  • AI-数据标注的方法 制作自己的数据 labelstudio的使用(训练自己的数据-1)
    lablestudio 是采用web界面的方式 或者采用docker部署创建数据存储所需文件夹:首先在Ubuntu服务器本地创建一个将来用于上传与保存数据和标注结果的文件夹并赋予所有用户对于该文件夹的读写权限,便于之后的数据管理。例如:mkdir-p/sharespace/myDatasudochmod777/s......
  • 基于Java的redis客户端的基本使用
    1.简介Java中redis客户端有jedis、lettuce、Redission等2.jedis的基本使用引入依赖<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>4.2.3</version></dependency>从jedis连接池获取je......
  • Redis配置登录密码并使用认证密码登录
    Redis配置登录密码并使用认证密码登录1.修改配置文件Redis的配置文件redis.conf,找到如下行:#requirepassfoobared去掉注释,并修改为所需要的密码:requirepass123456(其中123456就是要设置的密码)2.重启Redis如果Redis已经配置为service服务,可以通过以下方式重启:serviceredis......
  • Tomcat中为什么要使用自定义类加载器
    Tomcat使用自定义类加载器主要是基于以下几个关键原因:1.应用隔离:Tomcat作为一个Web容器,能够同时部署和运行多个Web应用程序。每个应用可能依赖不同的库版本或者包含同名类,为了确保每个应用的类库相互独立,避免类冲突,Tomcat为每个Web应用提供了一个独立的类加载器实例,即`WebAppC......
  • Tomcat中为什么要使用自定义类加载器
    Tomcat使用自定义类加载器主要是基于以下几个关键原因:1.应用隔离:Tomcat作为一个Web容器,能够同时部署和运行多个Web应用程序。每个应用可能依赖不同的库版本或者包含同名类,为了确保每个应用的类库相互独立,避免类冲突,Tomcat为每个Web应用提供了一个独立的类加载器实例,即`WebAppC......
  • PHP使用file_get_contents发送get和post请求
    1、GET请求点击查看代码functiongetData($url,$data=null){if($data){$url.='?'.http_build_query($data);}returnfile_get_contents($url);}2、POST请求点击查看代码functionpostData($url,$data=[],$json=false){if($json){......
  • Layui的进度条使用
    我用的是第二种上代码首先引入layui的css和jshtml部分 <divclass="layui-progress"lay-showpercent="true"style="margin-top:10px"lay-filter="demo-filter-progress"><divclass="layui......
  • jquery的使用
    jquery的详细使用https://blog.csdn.net/qq_38490457/article/details/109683256?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171556216716800215034130%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=171556216716800215034130......
  • Matlab小白入门简易使用
    Matlab小白入门简易使用前言:Matlab是matrix和laboratory的组合,意为“矩阵工厂”,是目前数一数二的数学分析软件。在数据分析、无线通信、深度学习、图像处理与计算机视觉、信号处理、量化金融等领域都有非常广泛的应用。主要面对科学计算、可视化以及交互式程序设计的高科技计......