×

多并发场景 deepseek 答案生成速度会变慢吗?

hqy hqy 发表于2025-02-28 15:42:22 浏览5 评论0

抢沙发发表评论

通过 ollama 部署 deepseek 后,如何测试GPU服务器最大能承受的并发数?


刚开始通过邀请多人同时在线,通过 open webui 在线聊天的方式测试并发数。因为大家并不是同一时间对 deepseek 提问,问题也不一样,导致生成答案的时间有长有短。如果答案提前生成完,相当于不是并发状态。
通过人工方式测试效果不好,于是改用 API 请求方式测试最大并发数。 通过 API 模拟人工方式对 deepseek 发起提问。
在服务器空闲状态下进行基准测试:


$ollama run deepseek-r1:32b --verbose
>>> 介绍一下ollama
图片
基准测试结果
单用户提问耗时24.198s,Token 速率为 27.52 tokens/s
用相同问题跑并发测试,测试效果如下:
图片
当同时发起10个请求时,刚发起的请求响应速度比较快,在30s内有回应。后发起的请求要一分钟以上才返回结果。
再次测试,加大并发数,将并发加到20后观察系统表现。
图片
此时手工方式的提问已经开始卡了,出现排队情况。先提问的先回答,后提问的开始等待。GPU功耗也从待机25W飙到251W。
最终测试成绩如下:
图片
1分钟以内提问回答完毕的有10个,最差的要184s接近3分钟才能回答出来。最后一个问题的 token 生成速率还是22 tokens/s,只是排队等待了近3分钟。
图片
结论
在高并发情况下,token 生成速率不会变慢,但多任务会出现排队。以20并发为例,队列中的任务最长任务完成时间为3分钟。


  • 性能测试代码如下:

import requests

import threading

import sys


n = 0
def send_request():    
    global n
   
    url = "http://127.0.0.1:11434/api/generate"
   
    data = {
       
        "model": "deepseek-r1:32b",
   
        "prompt": "介绍一下ollama",
   
        "stream": False  # 关闭流式响应
   
    }
    
    try:
       
        response = requests.post(url, json=data, timeout=None)
     
        n = n + 1
       
        print(f"{n} Status Code: {response.status_code}, Time: {response.elapsed.total_seconds()}s", flush=False)
    except Exception as e:   
        print(f"Request failed: {e}")
        

threads = []

for _ in range(int(sys.argv[1])): 
    t = threading.Thread(target=send_request)
 
    threads.append(t)
 
    t.start()

for t in threads: 
    t.join()



打赏

本文链接:https://www.kinber.cn/post/4982.html 转载需授权!

分享到:


推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

 您阅读本篇文章共花了: 

群贤毕至

访客