1
DeepSeek
标题
2025-05-14 11:24:57
51
vllm部署好,使用python线程并发做压力测试,日志一直显示有一个进程在运行,持续很久,一个小时左右,这种情况有人遇到过吗?早上测试80个并发都很快结束了
全部评论(11)
只看楼主
W
wangwei
2楼
能否提供下使用的镜像、vllm版本和测试脚本截图,方便复现
2025/5/14
网
网友rtSrqf
回复 @wangwei
测试脚本代码在上面评论区,我用的自己微调的模型,vllm是vllm-0.6.2+das.opt3.dtk2504-cp310-cp310-manylinux_2_28_x86_64,镜像用的是别人提供的,jupyterlab-pytorch_2.3.0-ubuntu20.04-dtk24.04.3-py3.10-ds-llamaf.tar,大概是这样
2025/5/14
W
wangwei
回复 @wangwei
能否提供调一下代码截图。。因为我代码复制过来格式是乱的
2025/5/14
网
网友rtSrqf
回复 @wangwei
具体是jupyter执行这个脚本的时候,有时候会特别慢才能执行完,比如num_threads给80的时候,会比40还快,半天无法结束运行,查看日志发现一直有一个在运行,Avg prompt throughput: 0.0 tokens/s, Avg generation throughput: 14.6 tokens/s, Running: 1 reqs, Swapped: 0 reqs, Pending: 0 reqs, GPU KV cache usage: 3.1%, CPU KV cache usage: 0.0%.持续很久,不知道是什么原因
2025/5/14
全部9条回复
网
网友rtSrqf
楼主
1楼

import requests

import threading

import time

from queue import Queue

# 配置接口信息

url = "http://localhost:8000/v1/chat/completions"

headers = {

"Content-Type": "application/json"

}

data = {

"model": "/saves_model/qwen_32b-5.9",

"messages": [{"role": "user", "content": "六零空间有什么业务?"}]

}

# 用于存储结果的队列

result_queue = Queue()

# 定义请求函数

def make_request():

start_time = time.time()

try:

response = requests.post(url, headers=headers, json=data)

end_time = time.time()

if response.status_code == 200:

answer = response.json()["choices"][0]["message"]["content"]

tokens = response.json()["usage"]["completion_tokens"]

result_queue.put((end_time - start_time, tokens))

else:

print(f"请求失败,状态码: {response.status_code}")

except Exception as e:

print(f"请求发生错误: {e}")

# 定义测试函数

def test_concurrency(num_threads):

threads = []

for _ in range(num_threads):

thread = threading.Thread(target=make_request)

threads.append(thread)

thread.start()

for thread in threads:

thread.join()

# 统计结果

total_time = 0

total_tokens = 0

while not result_queue.empty():

time_taken, tokens = result_queue.get()

total_time += time_taken

total_tokens += tokens

# 计算延迟和吞吐量

avg_latency = total_time / num_threads if num_threads > 0 else 0

throughput = total_tokens / total_time if total_time > 0 else 0

print(f"并发数: {num_threads}")

print(f"平均延迟: {avg_latency:.2f} 秒")

print(f"吞吐量: {throughput:.2f} tokens/秒")

if __name__ == "__main__":

# 修改这个值来测试不同的并发数

num_threads = 75

test_concurrency(num_threads)

2025/5/14
没有更多内容了
--
楼主
Level.1
0 帖子
楼主热帖
暂无数据