KOS(KeyarchOS操作系统)+VLLM测试deepseek基准性能

目录

1 概述

2 环境准备

3 性能测试

3.1 下载vllm源码

3.2 启动vllm容器

3.3 手动测试

3.4 编写脚本测试


1 概述

浪潮信息KOS是浪潮信息基于Linux Kernel、OpenAnolis等开源技术自主研发的一款服务器操作系统,支持x86、ARM等主流架构处理器,性能和稳定性居于行业领先地位,具备成熟的 CentOS 迁移和替换能力,可满足云计算、大数据、分布式存储、人工智能、边缘计算等应用场景需求。详细介绍见官网链接https://www.ieisystem.com/kos/product-kos-xq.thtml?id=12126

vLLM是一种用于大规模语言模型(LLM)推理的框架,旨在提高模型的吞吐量和降低延迟。vLLM通过优化内存管理和调度策略,显著提升了模型在高并发场景下的性能。vLLM利用了一种名为PagedAttention的注意力机制,该机制借鉴了虚拟内存和分页技术,以减少缓存内存(KV Cache)的浪费,并允许在请求之间灵活共享KV缓存。这种设计使得vLLM在保持与现有系统相同延迟水平的情况下,能够将吞吐量提高2到4倍。官方网址:https://www.vllm.ai

本篇文章主要介绍如何在KOS操作系统上进行vLLM基准性能测试,及benchmark测试,vLLM benchmark 测试是针对 vLLM 推理服务框架的性能评估过程,旨在量化其处理大规模语言模型推理任务时的效率、吞吐量和延迟表现,覆盖典型测试场景,包括单GPU/多GPU、不同模型规模、批处理效果等。

2 环境准备

操作系统版本:KOS 5.8 sp2u1(5.10.134-17.2.2.kos5.x86_64)

测试架构:x86_64,96核1TB物理机

显卡:NVIDIA Tesla V100s * 2

Docker镜像: vllm/vllm-openai:latest

模型:DeepSeek-R1-Distill-Llama-8B

3 性能测试

3.1 下载vllm源码

1、创建挂载容器目录:

mkdir –p /data

2、下载vllm源码到指定目录

cd /data

git clone https://github.com/vllm-project/vllm.git vllm_source

3.2 启动vllm容器

创建容器:

docker run --name ds-vllm-test --gpus all -ti --privileged -v /root/:/workspace -v /data/:/data --ipc=host -p 8090:8090 --security-opt seccomp=unconfined --entrypoint /bin/sh docker.1ms.run/vllm/vllm-openai:latest

3.3 手动测试

进入容器:

docker exec -it ds-vllm-test bash

prefill预填充性能测试:
Prefill阶段为模型接收到完整输入之后,在开始生成第一个输出token之前,反映模型在处理输入序列时的速度。
执行benchmark测试命令:

python3 /data/vllm_source/benchmarks/benchmark_latency.py \--model /data/ssdmodels/DeepSeek-R1-Distill-Llama-8B \--trust-remote-code \--tokenizer /data/ssdmodels/DeepSeek-R1-Distill-Llama-8B \--input-len 500 \--output-len 1 \--batch-size 1 \--tensor-parallel-size 2 \--num-iters-warmup 1 \--num-iters 1 \--dtype=half \--max-model-len 4096

其中:

参数​值​含义
--model/data/ssdmodels/DeepSeek-R1-Distill-Llama-8B指定要测试的模型路径(Hugging Face 格式的模型目录)。
--trust-remote-code/允许加载模型时执行远程代码(如自定义的 modeling.py),通常用于非标准模型。
--tokenizer/data/ssdmodels/DeepSeek-R1-Distill-Llama-8B指定分词器路径,若与模型路径不同时需单独设置。
--input-len500输入序列的长度(token 数量),模拟长文本输入场景。
--output-len1输出序列的长度(token 数量),此处测试生成 1 个 token 的延迟。
--batch-size1批量大小(每次处理的请求数),设为 1 表示单请求测试。
--tensor-parallel-size2张量并行度(GPU 数量),表示模型在 2 个 GPU 上并行计算。
--num-iters-warmup1预热迭代次数(不记录结果),用于消除冷启动影响。
--num-iters1正式测试迭代次数,结果取平均值
--dtypehalf模型精度(half 即 FP16),可减少显存占用并提升计算速度。
--max-model-len4096模型支持的最大上下文长度(token 数),超出会报错。

测试结果:


获取到Avg latency值0.13214380299905315 seconds
计算prefill性能(tokens/s):input-len / Avg latency = 500/0.13214380299905315 = 3783

decode解码性能测试:

decode解码阶段为prefill预填充阶段完成之后开始,到完成所有输出,体现模型生成输出序列的速度。

执行benchmark测试命令

python3 /data/vllm_source/benchmarks/benchmark_latency.py \--model /data/ssdmodels/DeepSeek-R1-Distill-Llama-8B \--trust-remote-code \--tokenizer /data/ssdmodels/DeepSeek-R1-Distill-Llama-8B \--input-len 500 \--output-len 200 \--batch-size 1 \--tensor-parallel-size 2 \--num-iters-warmup 1 \--num-iters 1 \--dtype=half \--max-model-len 4096

获取到Avg latency值2.824540817004163 seconds

计算decode性能(tokens/s):output-len/( – ) = 200/(2.824540817004163 - 0.13214380299905315) = 74

3.4 编写脚本测试

如果要进行不同参数组合的交叉测试,可以编写自动化测试脚本,例如测试batch-size为1,2,4,8;max-model-len为1024,4096,8192的性能:

#!/bin/bash#测试batch-size为1,2,4,8;max-model-len为1024,4096,8192的性能model_path="/data/ssdmodels/DeepSeek-R1-Distill-Llama-8B"input_len=500output_len=1tp=2vllm_path="/data/vllm_source"for i in {1,2,4,8}do for m in {1024,4096,8192} do python3 ${vllm_path}/benchmarks/benchmark_latency.py --model $model_path --trust-remote-code --tokenizer $model_path --input-len $input_len --output-len $output_len --batch-size $i --tensor-parallel-size ${tp} --num-iters-warmup 1 --num-iters 1 --dtype=half --max-model-len $m >> vllm_V100s_DeepSeek8B_tp${tp}_input${input_len}_output${output_len}_maxtoken${m}_batch${i}.log sleep 5 donedoneoutput_len=200for i in {1,2,4,8}do for m in {1024,4096,8192} do python3 ${vllm_path}/benchmarks/benchmark_latency.py --model $model_path --trust-remote-code --tokenizer $model_path --input-len $input_len --output-len $output_len --batch-size $i --tensor-parallel-size ${tp} --num-iters-warmup 1 --num-iters 1 --dtype=half --max-model-len $m >> vllm_V100s_DeepSeek8B_tp${tp}_input${input_len}_output${output_len}_maxtoken${m}_batch${i}.log sleep 5 donedone

之后依次读取log文件,将数据整理到表格中:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值