🚀 功能、动机和介绍
有一些指标可以让我们了解当前正在运行和等待的请求数量:num_requests_running
和 num_requests_waiting
。但是,仅凭这些指标无法了解请求是否被过度利用GPU。
新提出的指标 num_requests_preempted
可以反映出抢占和等待执行的请求数量,从而提供关于请求被过度利用的信息。这使得高级调度器能够避免向过度利用的GPU添加新的请求。
替代方案
- 无响应*
附加背景信息
from openai import OpenAI
import threading
client = OpenAI(
base_url="http://localhost:8000/v1",
api_key="token-abc123",
)
def query():
client.completions.create(
model="facebook/opt-125m",
prompt = "Sachin Tendulkar is",
max_tokens=2040,
n=1
)
threads = []
for i in range(1000):
thread = threading.Thread(target=query)
threads.append(thread)
thread.start()
for thread in threads:
thread.join()
我在一台使用命令 python -m vllm.entrypoints.openai.api_server
启动的vLLM服务器上运行了上述脚本;以下是我的观察结果:
观察1
一旦执行查询,num_requests_running
就达到了256。此时,gpu_cache_usage_perc
为6%。
观察2
过一段时间后,gpu_cache_usage_perc
飙升至99%。
观察3
逐渐地,num_requests_running
降至100%,而gpu_cache_usage_perc
仍保持在99%范围内。
观察4
逐渐地,num_requests_running
上升到256,而gpu_cache_usage_perc
仍保持在99%范围内。
观察3和观察4重复进行,直到所有请求完成。为了理解请求是否被过度利用,需要将指标num_requests_running
和 gpu_cache_usage_perc
进行相关性分析。如果能提供 num_requests_preempted
作为直接衡量过度利用的指标,那就太好了。
1条答案
按热度按时间yb3bgrhw1#
可能与 #5041 中的
request_with_evicted_tokens
和total_evicted_tokens
有关。