1 前言
本文介紹三種大模型評測工具,包括EvalScope、LLMPerf和vLLM Benchmark,總結每種測評工具的測試實踐,并對三種測評工具在核心功能、性能指標、典型應用場景等方面進行了對比。
2 EvalScope
2.1 前言
EvalScope是魔搭社區官方推出的模型評測與性能基準測試框架,內置多個常用測試基準和評測指標,如MMLU、CMMLU、C-Eval、GSM8K、ARC、HellaSwag、TruthfulQA、MATH和HumanEval等;支持多種類型的模型評測,包括LLM、多模態LLM、Embedding模型和Reranker模型。
下面介紹基于EvalScope評測DeepSeek R1模型,涵蓋基本評測和模型推理性能壓測兩大場景。
2.2 測試環境配置
如下圖所示為使用EvalScope測評工具對DeepSeek R1模型進行測試的拓撲圖,其中推理引擎選擇vLLM。

安裝EvalScope測評工具的步驟如下所示:
pip install evalscope2.3 測試實踐
● 基本評測場景
本文采用指定模型API地址(api_url)和API Key(api_key),評測部署的模型API服務,指定eval-type參數為service。
測試命令示例:
evalscope eval \
--model DeepSeek-R1-Distill-Qwen-32B \
--api-url //127.0.0.1:8000/v1/chat/completions \
--api-key Vb7h4cVRFPgfAr8a \
--eval-type service \
--datasets gsm8k \
--limit 10測試結果:
+------------------------------+-----------+-----------------+----------+-------+---------+---------+
| Model | Dataset | Metric | Subset | Num | Score | Cat.0 |
+------------------------------+-----------+-----------------+----------+-------+---------+---------+
| DeepSeek-R1-Distill-Qwen-32B | gsm8k | AverageAccuracy | main | 10 | 0.9 | default |
+------------------------------+-----------+-----------------+----------+-------+---------+---------+● 推理性能壓測場景
使用openqa數據集進行推理性能壓測。
openqa可以模擬真實的問答情況,更接近現實場景,其中包括了超3000條中文對話數據,可以有效評估模型在實際應用中的推理性能。
測試命令示例:
evalscope perf \
--url "//127.0.0.1:8000/v1/chat/completions" \
--parallel 1 \
--model qwen2.5 \
--number 15 \
--api openai \
--dataset openqa \
--stream要準確統計Time to First Token (TTFT)指標,需要在請求中包含--stream參數。
測試結果如下所示:
Percentile results:
+------------+----------+----------+-------------+--------------+---------------+----------------------+
| Percentile | TTFT (s) | TPOT (s) | Latency (s) | Input tokens | Output tokens | Throughput(tokens/s) |
+------------+----------+----------+-------------+--------------+---------------+----------------------+
| 10% | 0.0202 | 0.0027 | 0.1846 | 41 | 50 | 270.8324 |
| 25% | 0.0209 | 0.0028 | 0.2861 | 44 | 83 | 290.0714 |
| 50% | 0.0233 | 0.0028 | 0.7293 | 49 | 250 | 335.644 |
| 66% | 0.0267 | 0.0029 | 0.9052 | 50 | 308 | 340.2603 |
| 75% | 0.0437 | 0.0029 | 0.9683 | 53 | 325 | 341.947 |
| 80% | 0.0438 | 0.003 | 1.0799 | 58 | 376 | 342.7985 |
| 90% | 0.0439 | 0.0032 | 1.2474 | 62 | 424 | 345.5268 |
| 95% | 0.0463 | 0.0033 | 1.3038 | 66 | 431 | 348.1648 |
| 98% | 0.0463 | 0.0035 | 1.3038 | 66 | 431 | 348.1648 |
| 99% | 0.0463 | 0.0037 | 1.3038 | 66 | 431 | 348.1648 |
+------------+----------+----------+-------------+--------------+---------------+----------------------+使用openqa可以有效評估模型在處理實際自然語言問題時的具體響應時間,如上展示了模型在不同百分位下的TTFT(首token時間)、TPOT(生成每個token需要的時間)、Latency(延遲時間)、Input tokens(輸入token)、Output tokens(輸出token)、Throughput(吞吐率)等指標。
此外,使用Speed Benchmark工具可以重點測試模型在不同輸入長度下的推理速度。以下為測試生成2048 tokens時的速度,輸入長度分別為1、6144、14336、30720。
測試命令示例:
evalscope perf \
--parallel 1 \
--url //127.0.0.1:8000/v1/completions \
--model DeepSeek-R1-Distill-Qwen-32B \
--log-every-n-query 1 \
--connect-timeout 60000 \
--read-timeout 60000\
--max-tokens 2048 \
--min-tokens 2048 \
--api openai \
--dataset speed_benchmark \
--api-key Vb7h4cVRFPgfAr8a參數說明如下所示:
● parallel:指定并發數,默認為1個;
● url:指定待測試系統的服務地址;
● model:指定待測試的模型名稱;
● log-every-n-query:指定日志打印間隔;
● connect-timeout:指定網絡連接超時時間,單位為毫秒;
● read-timeout:指定網絡讀取超時時間,單位為毫秒;
● max-tokens:指定輸出最大token值;
● min-tokens:指定輸出最小token值;
● api:指定服務API類型;
● dataset:指定數據集;
● api-key:指定認證的API key值。
測試結果:
+---------------+-----------------+----------------+
| Prompt Tokens | Speed(tokens/s) | GPU Memory(GB) |
+---------------+-----------------+----------------+
| 1 | 44.58 | 0.0 |
| 6144 | 42.47 | 0.0 |
| 14336 | 34.55 | 0.0 |
| 30720 | 31.72 | 0.0 |
+---------------+-----------------+----------------+從測試結果可以看出,隨著輸入token數量增加,模型推理速度下降。
● 定制化推理性能壓測場景
我們對Speed Benchmark 工具代碼進行了修改,增加了輸入token和repeat參數,用戶可以在壓測命令中可以直接指定需要測試的輸入token長度和repeat值,不需要去修改代碼重新配置環境,改動代碼如下所示:
1)修改數據集文件:evalscope/perf/plugin/datasets/speed_benchmark.py。注釋掉之前的INPUT_LENGTH和REPEAT,然后替換初始化代碼和build_messages方法
def __init__(self, query_parameters: Arguments):
super().__init__(query_parameters)
self.input_length = getattr(query_parameters,'dataset_input_length', [1, 6144, 14336, 30720])
# 從參數獲取重復次數,默認值為 2
self.repeat = getattr(query_parameters, 'dataset_repeat', 2)
def build_messages(self) -> Iterator[List[Dict]]:
for input_len in self.input_length:
for _ in range(self.repeat):
yield self.create_query(input_len)2)修改參數加載文件evalscope/perf/arguments.py,修改如下
#在Arguments中添加對應字段
dataset_input_length=args.dataset_input_length,
dataset_repeat=args.dataset_repeat
#在add_argument函數里添加:
parser.add_argument(
'--dataset-input-length',
nargs='+',
type=int,
default=[1, 6144, 14336, 30720],
help='The length of the input, default [1, 6144, 14336, 30720]')
parser.add_argument('--dataset-repeat', type=int, default=2, help='The repeat times of the dataset')安裝修改后的evalscope工具后,執行測試的示例如下所示:
evalscope perf \
--parallel 1 \
--url //127.0.0.1:8000/v1/completions \
--model DeepSeek-R1-Distill-Qwen-32B \
--log-every-n-query 1 \
--connect-timeout 60000 \
--read-timeout 60000\
--max-tokens 2048 \
--min-tokens 2048 \
--api openai \
--dataset speed_benchmark \
--api-key Vb7h4cVRFPgfAr8a
--dataset-input-length 256 1024 2048
--dataset-repeat 5當我們傳入多個dataset-input-length值時會同時測試多個不同的輸入長度的樣本,總的請求數為dataset-input-length輸入的樣本個數乘以dataset-repeat傳入的值。
3 LLMPerf
3.1 前言
LLMPerf(大型語言模型性能測試)是評估大語言模型(LLM)在生產環境中表現的核心評測體系。本文基于真實業務場景提煉最佳實踐方法論,為開發、運維與測試團隊提供可靠的測試方案,系統性保障服務的高吞吐、低延遲和穩定性。
3.2 測試環境配置
測試腳本下載
LLMPerf由 Ray 項目團隊開發,在github上開源,可直接下載。
git clone //github.com/ray-project/llmper工具核心功能:
性能評估
● 負載測試:LLMPerf可以對大語言模型(如Llama 2、GPT-3等)的吞吐量和延遲性能進行測量。它通過負載測試來評估模型在不同負載下的響應延遲和生成吞吐量,幫助用戶了解模型在實際應用中的性能表現。
● 準確性測試:該工具還可以進行正確性測試,衡量模型輸出的準確性,確保模型在生成內容時能夠保持較高的質量。
參數化測試
LLMPerf允許用戶更改輸入和輸出大小等參數,以匹配不同的應用場景。這意味著用戶可以根據自己的具體需求和工作負載,靈活地調整測試參數,從而獲得更具針對性的性能評估結果。
結果分析
LLMPerf能夠提供詳細的性能指標分析,包括響應時間、吞吐量、準確性等,幫助用戶深入了解模型的性能特點。
兼容性
LLMPerf支持主流的大語言模型,如OpenAI、Anthropic、TogetherAI等。這使得用戶可以在一個統一的框架下對不同來源的模型進行性能比較和評估。
安裝測試工具
git clone //github.com/ray-project/llmperf
cd llmperf
pip install -e .
#如下載速度較慢可以使用國內源進行加速
pip install -e . -i //pypi.tuna.tsinghua.edu.cn/simple配置環境變量
根據不同的API服務,需要設置不同的密鑰信息和服務地址。例如對于OpenAi(vLLM類推理框架):
export OPENAI_API_KEY="your api-key"
export OPENAI_API_BASE="//api.endpoints.anyscale.com/v1"3.3 測試實踐
性能測試
使用token_benchmark_ray.py腳本運行測試,主要參數如下:
● --model:被測的模型名稱(如DeepSeek-R1-Distill-Qwen-32B)。
● --mean-input-tokens:輸入token的均值。
● --mean-output-tokens:輸出token均值。
● --stddev-input-tokens:輸入token的標準差。
● --stddev-output-tokens:輸出token的標準差。
● --num-concurrent-requests:并發請求數。
示例:
python token_benchmark_ray.py \
--model "DeepSeek-R1-Distill-Qwen-32B" \
--mean-input-tokens 256 \
--stddev-input-tokens 0 \
--mean-output-tokens 256 \
--stddev-output-tokens 0 \
--max-num-completed-requests 200 \
--timeout 600 \
--num-concurrent-requests 10 \
--results-dir "result" \
--llm-api openai \
--additional-sampling-params '{}'用vLLM部署DeepSeek-R1-Distill-Qwen-32B模型進行測試,測試結果主要指標如下所示:
測試結果還包含一些不同分位的指標,這里只展示關鍵指標,其主要含義如下:
● TTFT(首token時間):請求開始到收到第一個token的時間。
● Prefill-Throughput:表示模型處理輸入Prompt的速率。
● TPOT:表示生成相鄰token之間的間隔時間。
● Decoder-Throughput:模型的輸出速率。
準確性測試
使用llm_correctness.py腳本可進行文本轉換任務,測試模型準確性,其主要測試模型能否準確將文本轉換為數字。
示例:
python llm_correctness.py \
--model "DeepSeek-R1-Distill-Qwen-32B" \
--max-num-completed-requests 100 \
--num-concurrent-requests 5 用vLLM部署DeepSeek-R1-Distill-Qwen-32B模型進行準確性測試,主要測試模型的文本轉化能力,測試結果如下所示:
可以看到模型的文本轉換請求全部成功,沒有失敗的請求。
4 vLLM Benchmark
4.1 前言
vLLM Benchmark 是 vLLM 框架用于評估和優化其推理性能的標準化測試工具集,核心作用是為大語言模型(LLM)的推理服務提供量化指標,幫助開發者優化模型部署策略。
4.2 測試環境配置
如下圖所示為測試環境拓撲,其中GPU云主機配置有4塊GPU卡。部署DeepSeek的模型,安裝vLLM推理引擎服務并啟動;啟動Open WebUI服務來接入到vLLM,實現從瀏覽器客戶端登錄系統進行問答;vLLM Benchmark用于進行性能壓力測試,sharegpt dataset數據集用于性能壓測過程的輸入數據。
可以通過如下命令來安裝vLLM Benchmark工具腳本:
git clone //github.com/vllm-project/vllm.git
cd vllm/benchmarks/4.3 測試實踐
使用vLLM Benchmark進行性能測試時可以指定sharegpt數據集。
Sharegpt數據集的所有問題論來自于真實的用戶提問,更貼近實際應用場景,可以全面、真實地評估模型在實際應用場景中的表現。具體的指標和測試方法見下文。
如下所示為性能壓測命令:
python benchmark_serving.py --model /root/model-path/deepseek-ai/DeepSeek-R1-Distill-Qwen-32B --backend vllm --dataset-name sharegpt --dataset-path /root/ShareGPT_V3_unfiltered_cleaned_split.json --max-concurrency 1 --num-prompts 50命令參數解釋如下:
● model:指定模型路徑;
● backend:指定后端推理引擎類型;
● dataset-name:指定數據集類型;
● dataset-path:指定數據集路徑;
● max-concurrency:指定并發數,默認為1;
● num-prompts:指定總的請求數;
對應的測試結果如下所示:
指標說明:
測試結果中的具體指標含義如下所示:
● Output token throughput(tok/s):輸出 Token 吞吐量,單位為 tok/s,是衡量大模型服務生成效率的核心指標,指系統每秒能夠生成的輸出 token 數量。它直接反映模型的文本生成速度和系統的整體處理能力,是評估推理成本和服務商業價值的關鍵依據。
● TTFT:Time to First Token,首 Token 延遲,是衡量大模型服務響應速度的核心指標,具體指從用戶發送請求到系統生成第一個輸出 。
● TPOT:指排除首 Token 延遲后,生成每個后續輸出 token 的平均耗時。計算公式為:總解碼時間 / 輸出 token 數量。例如,若 TPOT 為 50ms,則每秒可生成 20 個 token。
● ITL:連續兩個輸出token之間的間隔時間,單位毫秒,反映生成穩定性。
指定輸入輸出token長度
當使用的數據集為random類型的時候,執行vLLM Benchmark壓測命令的時候可以指定輸入長度和輸出長度,測試命令如下:
python vllm/benchmarks/benchmark_serving.py \
--model /root/model-path/deepseek-ai/DeepSeek-R1-Distill-Qwen-32B \
--backend vllm \
--dataset-name random \
--random-input-len 256 \
--random-output-len 256 \
--max-concurrency 1 \
--num-prompts 50進行上述測試時如果使用vllm啟動的時候添加了--served-model-name參數以及--api-key參數,測試的時候需要在上述命令中加入--served-model-name內容,并且在環境變量中添加OPENAI_API_KEY=yourkey。
5 三種測評工具對比
5.1 核心功能對比
vLLM Benchmark
專注于LLM推理引擎性能評測,支持OpenAI接口兼容的框架(如Qwen系列模型)
內置TTFT(首Token延遲)、TPOT(后續Token時延)、吞吐量等核心指標
支持長上下文壓力測試(如LongAlpaca-12k數據集)
EvalScope
大模型多維度評估框架,覆蓋性能測試(Perf)、效果評測(Accuracy)和合規性檢測
提供標準化測試集(如MMLU、CMMLU)和自定義數據集擴展能力,支持多種測評場景
集成生產級壓力測試功能,支持并發請求模擬與實時監控(通過Wandb可視化)
LLMPerf
開源基準測試工具,專攻API級性能評估(延遲、吞吐量、請求成功率)
支持正確性驗證(如數字格式轉換準確性測試)
5.2 性能指標側重
| 工具 | 核心指標 | 測試場景差異 |
|---|---|---|
| vLLM Benchmark | 首Token延遲(TTFT)、Token吞吐量、顯存占用率 | 重推理引擎的硬件資源利用率,常用于GPU云主機環境下的引擎選型 |
| EvalScope | 綜合吞吐量、QPS、端到端延遲、多模態任務準確率 | 適配生產環境壓力測試,支持API服務與本地模型的混合評測 |
| LLMPerf | Token間延遲、首Token延遲(TTFT)、請求吞吐量、錯誤率 | 強調高并發模擬能力(如10+并發請求),適合API服務的SLA驗證 |
5.3 技術特性差異
部署復雜度
vLLM Benchmark:從vLLM的github代碼倉庫源克隆
EvalScope:提供Docker鏡像和Python CLI工具鏈,支持快速接入ModelScope社區模型和數據集
LLMPerf:依賴Ray分布式框架,需修改Tokenizer配置適配私有化模型
測試數據靈活性
vLLM Benchmark:使用ShareGPT_V3、LongAlpaca等結構化數據集,也可使用隨機數據自定義輸入長度
EvalScope:允許自定義輸入長度(--dataset-input-length)和樣本重復次數
LLMPerf:支持動態調整輸入Token分布參數(--mean-input-tokens)
結果可視化
vLLM Benchmark/EvalScope:支持Wandb面板實時監控測試進度
LLMPerf:生成CSV格式原始數據,需二次處理
5.4 典型應用場景
vLLM Benchmark
推理引擎選型(如對比vLLM、LMDeploy、TensorRT-LLM的吞吐量)
長上下文支持能力驗證(如測試16k+Token輸入的顯存溢出風險)
EvalScope
生產環境服務容量規劃(如通過--parallel 模擬多路并發)
多模態模型效果-性能平衡分析(如Embedding模型響應延遲與召回率關聯性)
LLMPerf
云API服務商性能對比(如Anthropic Claude vs OpenAI GPT-4 Turbo)
模型部署前的SLA合規性檢查(如驗證P99延遲是否達標)
5.5 工具選型建議
● LLMPerf:功能比較單一,適合API基準測試以及快速對比多個LLM API性能場景,聚焦于LLM API性能(如延遲、吞吐量、請求成功率)和正確性測試(輸出格式與內容驗證);
● EvalScope:功能全面且靈活,適合復雜評測的需求場景,支持多維度評估,包括模型能力、性能壓測、端到端RAG評測、多模態模型評測等。適合綜合評估模型在學術研究、工業部署中的表現,支持自定義評測指標和復雜場景(如競技場模式、長文本生成測試);
● vLLM Benchmark:主要針對vLLM推理引擎的性能優化(如PagedAttention技術效果、多卡擴展性)。專為優化vLLM框架的部署參數設計,適合需要調整批次大小、顯存利用率等參數以實現高吞吐量推理的場景。