Ollama vs vLLM:并发性能深度评测
文章目录
引言
随着大语言模型(LLM)在各个领域的广泛应用,高效的推理引擎成为了部署这些模型的关键。Ollama 和 vLLM 作为当前最流行的两种推理引擎,各自有着独特的优势和适用场景。
本文将从并发性能的角度,对 Ollama 和 vLLM 进行深度对比,帮助读者更好地选择适合自己的推理框架。
一、背景介绍
1.1 Ollama
Ollama 是一个简单易用的 LLM 部署工具,以其简洁的安装和用户友好的界面而闻名。它支持多种模型架构,并提供了丰富的命令行工具和图形化界面,适合快速原型设计和小规模部署。
1.2 vLLM
vLLM(Very Large Language Model)是一个高性能的推理引擎,专注于大规模语言模型的高效推理。它通过动态批处理、显存优化和多 GPU 支持,显著提升了推理速度和资源利用率。
二、前期准备
测试环境准备
GPU型号:单块 NVIDIA GeForce RTX 4090 显卡
Ollama部署模型:同参数的 DeepSeek-R1 量化模型
vLLM部署模型: 同参数的 DeepSeek-R1-Distill-Qwen 蒸馏模型
Locust 压测工具
Locust 是一个强大的、易于使用的开源压测工具,它允许你编写 Python 脚本模拟大量并发用户进行压力测试。最棒的是,Locust 提供了一个直观的 Web UI,让你可以通过浏览器实时查看性能数据和调整测试参数。
测试报告图表说明
测试的 Charts 图表包含:
1、Total Request per Second :每秒的请求总数,横轴为时间轴,纵轴为每秒请求的数量(请求处理通过的)。
- 绿色线:每秒钟请求成功的个数
- 红色线:每秒钟请求失败的个数
2、Response Time :响应时间,横轴为时间轴,纵轴为以毫秒为单位的响应时间。需要注意的是,图表上面两根线并不是表示平均值,而是响应时间的“中位数”和“95%百分位数值”。
- 绿色线:表示中位数
- 黄色线:表示95%百分位数值
3、Number of Users :用户数,横轴为时间轴,纵轴为时间所对应的“用户数”。
————————————————
Locust性能测试之快速入门 - xyztank - 博客园
编写压测脚本
示例 python 代码:
import csv
import traceback
from locust import HttpUser, task, between
import logging
def init_loging_config():
level = logging.INFO
logging.basicConfig(
level=level,
format="%(asctime)s %(name)s %(levelname)s %(message)s ",
datefmt='%Y-%m-%d %H:%M:%S'
)
_logger = logging.getLogger(" =>")
_logger.setLevel(level)
return _logger
logger = init_loging_config()
req_type = "1"
api_key = "app-aRohuiTGaRFderfMS27EEfS2"
headers = {
"Authorization": "Bearer " + api_key,
"Content-Type": "application/json"
}
input_file = r'api-get\data\content_1.csv'
infile = open(input_file, mode='r', encoding='utf-8')
reader = csv.reader(infile)
next(reader) # 读取并跳过第一行(表头)
class QuickstartLLM(HttpUser):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
def read_next_row(self):
try:
return next(reader)[1]
except StopIteration:
infile.close()