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/

posted @   adam86546853  阅读(354)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示