Benchmark 测试指南#
LightLLM 提供了全面的性能测试工具,包括服务端性能测试和静态推理性能测试。本文档将详细介绍如何使用这些工具进行性能评估。
服务端性能测试 (Service Benchmark)#
服务端性能测试主要用于评估 LightLLM 在真实服务场景下的性能表现,包括吞吐量、延迟等关键指标。
QPS 测试 (benchmark_qps.py)#
QPS (Queries Per Second) 测试是评估服务端性能的核心工具,支持 LightLLM 和 OpenAI 兼容的 API 格式
使用方法:
python test/benchmark/service/benchmark_qps.py \
--url http://127.0.0.1:8000/generate_stream \
--tokenizer_path /path/to/tokenizer \
--num_clients 100 \
--input_num 2000 \
--input_qps 30.0 \
--input_len 1024 \
--output_len 128 \
--server_api lightllm \
--dump_file results.json
主要参数说明:
--url: 服务端地址,支持 LightLLM 和 OpenAI 格式--tokenizer_path: 分词器路径--input_num: 测试请求总数--input_qps: 输入 QPS 限制--input_len: 输入序列长度--output_len: 输出序列长度--server_api: 服务端 API 类型 (lightllm/openai)--data_path: 自定义数据集路径--continuous_send: 是否连续发送 (0/1)--force_terminate: 强制终止模式 (0/1)
输出指标:
Total QPS: 总体每秒查询数
Sender QPS: 发送端 QPS
Avg Input Length: 平均输入长度
Avg Output Length: 平均输出长度
Total Throughput: 总体吞吐量 (token/s)
Input Throughput: 输入吞吐量 (token/s)
Output Throughput: 输出吞吐量 (token/s)
request_time P{25,50,75,90,95,99,100}: 请求延迟百分位数
first_token_time P{25,50,75,90,95,99,100}: 首 token 延迟百分位数
decode_token_time P{25,50,75,90,95,99,100}: 解码 token 延迟百分位数
固定并发测试 (benchmark_client.py)#
用于评估不同客户端并发数下的性能表现。
使用方法:
python test/benchmark/service/benchmark_client.py \
--url http://127.0.0.1:8000/generate_stream \
--tokenizer_path /path/to/tokenizer \
--num_clients 100 \
--input_num 2000 \
--input_len 1024 \
--output_len 128 \
--server_api lightllm
Prompt Cache 测试#
评估不同命中率下,prompt cache 的性能,通过调整 –first_input_len, –output_len –subsequent_input_len 来控制命中率。 每轮命中率 = (first_input_len + (output_len + subsequent_input_len) * (num_turns - 1)) / (first_input_len + (output_len + subsequent_input_len) * num_turns) 注意要根据最大token容量控制并发数和users数,确保能够放下所有请求,保障其实际命中率和自己预设的命中率一致。
python test/benchmark/service/benchmark_prompt_cache.py \
--model_url http://127.0.0.1:8000/generate_stream \
--model_name model \
--num_workers 10 \
--first_input_len 512 \
--subsequent_input_len 512 \
--output_len 128 \
--num_turns 10 \
--num_users 10
参数说明:
--model_url: 服务地址--model_name: 结果保存文件名--num_workers: 并发数--first_input_len: 第一轮输入长度--subsequent_input_len: 后续轮输入长度--output_len: 输出长度--num_turns: 轮数--num_users: 用户数
静态推理性能测试 (Static Inference Benchmark)#
静态推理测试用于评估模型在固定输入条件下的推理性能, 主要评估算子的优劣 模型推理测试 (model_infer.py) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
主要特性:
支持 prefill 和 decode 阶段性能测试
支持 microbatch overlap 优化
支持多 GPU 并行推理
提供详细的吞吐量统计
使用方法:
python test/benchmark/static_inference/test_model.py \
--model_dir /path/to/model \
--batch_size 32 \
--input_len 1024 \
--output_len 128 \
--tp 2 \
--data_type bf16
主要参数:
--model_dir: 模型路径--batch_size: 批次大小--input_len: 输入序列长度--output_len: 输出序列长度--tp: Tensor Parallel 并行度--data_type: 数据类型 (bf16/fp16/fp32)--enable_prefill_microbatch_overlap: 启用 prefill microbatch overlap,仅适用于DeepSeek模型的EP模式--enable_decode_microbatch_overlap: 启用 decode microbatch overlap,仅适用于DeepSeek模型的EP模式--torch_profile: 启用 torch profiler 进行性能分析
Note
这里没有列举完整的启动参数,静态测试脚本也共享lightllm的启动参数,更多启动配置可以参考 tutorial/api_server_args_zh 。
输出指标:
Prefill 阶段吞吐量 (tokens/s)
Decode 阶段吞吐量 (tokens/s)
各阶段延迟统计
多结果预测性能测试 (model_infer_mtp.py)#
多结果预测静态性能测试,默认百分百接受率,用来评估多结果预测的极限性能。目前只支持DeepSeek 系列模型
使用方法:
python test/benchmark/static_inference/test_model.py \
--model_dir /path/to/main_model \
--mtp_mode deepseekv3 \
--mtp_step 1 \
--mtp_draft_model_dir /path/to/draft_model \
--batch_size 32 \
--input_len 1024 \
--output_len 128
参数说明:
--model_dir: 主模型路径--mtp_mode: 指定多结果预测的模型,目前只支持deepseekv2/v3/r1--mtp_step: 每次forward step产生的token 数量,默认为1--mtp_draft_model_dir: 草稿模型路径
Vision Transformer 测试 (test_vit.py)#
用于测试 Vision Transformer 模型的性能。
使用方法:
python test/benchmark/static_inference/test_vit.py \
--model_dir ./InternVL2/InternVL2-8B/ \
--batch_size 1 \
--image_size 448 \
--world_size 2