当前位置: 首页 > article >正文

VLLM性能调优

1. 抢占

显存不够的时候,某些request会被抢占。其KV cache被清除,腾退给其他request,下次调度到它,重新计算KV cache。

报这条消息,说明已被抢占:

WARNING 05-09 00:49:33 scheduler.py:1057 Sequence group 0 is preempted by PreemptionMode.SWAP mode because there is not enough KV cache space. This can affect the end-to-end performance. Increase gpu_memory_utilization or tensor_parallel_size to provide more KV cache memory. total_cumulative_preemption_cnt=1

如果不想被抢占,解决办法:

- 增大gpu_memory_utilization。提高KV cache占用的显存百分比。

- 减少max_num_seqs或max_num_batched_tokens。减少一个batch里的请求、token个数,从而减少KV cache占用。

- 增大tensor_parallel_size。使用多张GPU的TP并行。

可以查看VLLM自带的Prometheus指标,查看抢占的请求数量。或者打开日志disable_log_stats=False。

2. chunked prefill

默认下,prefill优先,prefill和decode不放到相同batch里

chunked prefill打开后,decode优先,decode的token不够时用prefill token来凑:

好处

decode延迟减小;GPU使用率增大;

batch大小:

batch越小,则ITL越小(我的实验也是观察到这个现象)。原因:decode阶段加入的prefill tokens少,就能不怎么变慢。

batch越大,则TTFT越小。原因:prefill的请求可以在更少的batch里完成。

总体来说,batch太小的话,会给吞吐量带来灾难。因为计算不够密集。

VLLM推荐的2个paper:

(https://arxiv.org/pdf/2401.08671 or https://arxiv.org/pdf/2308.16369)


http://www.kler.cn/a/525681.html

相关文章:

  • OpenEuler学习笔记(十七):OpenEuler搭建Redis高可用生产环境
  • dify实现原理分析-rag-检索(Retrieval)服务的实现
  • 17、Spring MVC 框架:构建强大的 Java Web 应用程序
  • selenium自动化测试框架——面试题整理
  • 算法随笔_31:移动零
  • 危机13小时:追踪一场GitHub投毒事件
  • WPS怎么使用latex公式?
  • Transformer+vit原理分析
  • Linux多路转接poll
  • 解读Linux 6.x版本内核的sys目录作用
  • SQL注入漏洞之错误类型注入 爆破表 字段 列名称 以及mysql版本 以及Limit使用方式解释 以及靶场相关联系
  • 「全网最细 + 实战源码案例」设计模式——桥接模式
  • 7.抽象工厂(Abstract Factory)
  • P1002 [NOIP2002 普及组] 过河卒
  • Leetcode 131 分割回文串(纯DFS)
  • EtherCAT主站IGH-- 23 -- IGH之fsm_slave.h/c文件解析
  • 在Ubuntu下编译VLC
  • 【AI非常道】二零二五年一月(二),AI非常道
  • 正态分布与柯西分布的线性组合与副本随机变量同分布
  • Spring Boot + Facade Pattern : 通过统一接口简化多模块业务
  • 【C语言】函数递归
  • 【LeetCode: 958. 二叉树的完全性检验 + bfs + 二叉树】
  • 【自学笔记】MySQL的重点知识点-持续更新
  • 《LLM大语言模型+RAG实战+Langchain+ChatGLM-4+Transformer》
  • 【C++动态规划 离散化】1626. 无矛盾的最佳球队|2027
  • 受击反馈HitReact、死亡效果Death Dissolve、Floating伤害值Text(末尾附 客户端RPC )