压测篇 | Ollama+Nginx+4090打造DeepSeek-R1-32B高可用大模型集群,助力企业拥抱AI时代

今年是 DeepSeek-R1 系列模型深入千行百业,助力企业全面拥抱AI变革的关键一年!

企业级场景下,采用模型集群方案至关重要,大模型推理是计算密集型任务,所以每个用户任务采用单线程处理,这就使推理性能和并发能力受到了限制。

并行模型与多线程

尽管每个单独的推理请求通常是单线程的,但 多模型并行处理 是一种常见的做法:

1、多进程或多实例部署:为了提升并发处理能力,很多大模型推理服务会使用多实例部署,或者通过分布式系统进行模型并行每个实例服务一个请求
2、GPU 加速通过使用多个 GPU 或 GPU 共享,多个请求可以同时处理。每个请求还是由一个模型实例单独处理,但不同的请求可以在不同的 GPU 上并行执行。
负载均衡与多线程优化

为了高效地为多个用户提供服务,通常会引入 负载均衡,将用户请求分发到多个模型实例或多台服务器上:

  • 水平扩展:多个模型实例并行工作,每个实例处理一个请求。
  • GPU 优化:多个并发请求可以在不同的 GPU 上同时运行。

多GPU、多实例部署方案

1、一个Docker对应一个Ollama服务,一个Ollama服务对应一个DeepSeek-R1-32B量化模型。

2、一个Docker对应GPU

如果是2块GPU,理论上并发就是2个。

压测工具与压测方法

Locust 是一个强大的、易于使用的开源压测工具,它允许你编写 Python 脚本模拟大量并发用户进行压力测试。最棒的是,Locust 提供了一个直观的 Web UI,让你可以通过浏览器实时查看性能数据和调整测试参数。
Locust 安装
pip install locust
编写 Locust 脚本
压测的第一步是编写一个 Locust 脚本,用于定义模拟用户的行为。假设你要测试一个 API 接口,/api/generate,该接口接收一个 JSON 请求并返回生成的内容。以下是一个简单的 Locust 脚本示例:
from locust import HttpUser,task, betweenimport jsonclass LLMUser(HttpUser):    wait_time = between(1, 2)  # 每个用户请求的间隔时间    @task    def generate_text(self):        headers = {"Content-Type":"application/json"}        data = {            "model": "deepseek-r1:32b",            "prompt": "简单介绍一下北京",            "stream": True        }        self.client.post("/api/generate", headers=headers, json=data, timeout=60)
启动 Locust Web UI
locust -f locustfile.py --host http://192.168.1.10:8888
执行后输出如下日志:
[2025-02-11 10:35:28,056] user/INFO/locust.main: Starting Locust 2.x.x[2025-02-11 10:35:28,057] user/INFO/locust.main: Starting web interface at http://127.0.0.1:8089
压测篇 | Ollama+Nginx+4090打造DeepSeek-R1-32B高可用大模型集群,助力企业拥抱AI时代
配置模拟的总用户数、每秒创建多少个用户,我们配置10个总用户,每秒创建2个用户,执行10分钟,点击“START”
压测篇 | Ollama+Nginx+4090打造DeepSeek-R1-32B高可用大模型集群,助力企业拥抱AI时代
监测压测过程以及查看报告
当测试开始运行时,我们可以看到以下实时测试数据。
压测篇 | Ollama+Nginx+4090打造DeepSeek-R1-32B高可用大模型集群,助力企业拥抱AI时代
压测篇 | Ollama+Nginx+4090打造DeepSeek-R1-32B高可用大模型集群,助力企业拥抱AI时代
最后查看压测报告:
压测篇 | Ollama+Nginx+4090打造DeepSeek-R1-32B高可用大模型集群,助力企业拥抱AI时代
压测篇 | Ollama+Nginx+4090打造DeepSeek-R1-32B高可用大模型集群,助力企业拥抱AI时代
写在最后
本次压测,我以最小高可用集群为例,2块GPU、2个模型实例,10个用户并发,压测10分钟,最终测压测结果RPS为0.4,未有失败记录,每个企业可以根据自身业务需要选择部署模型实例数。

相关文章