LLM推理性能测试
GenAI-Perf
NVIDIA出品,Triton Inference Server中的一个组件。
启动镜像命令
docker run -it -e HF_HOME=/hf_cache/huggingface -v /data/hf_cache:/hf_cache nvcr.io/nvidia/tritonserver:25.08-py3-sdk
- 设置
HF_HOME环境变量,指定huggingface模型和数据集的下载路径。- 同时使用主机上的目录作为
HF_HOME,可以复用下载好的资源,无需每次重新启动容器后重新下载。 启动测试
genai-perf profile \
-m kimi-k2-0905-preview \
--tokenizer meta-llama/Llama-3.2-3B-Instruct \
--endpoint-type chat \
--url https://api.moonshot.cn \
--concurrency 1 \
--request-count 3 \
--synthetic-input-tokens-mean 200 \
--output-tokens-mean 100 \
--stream \
-H "Authorization: Bearer secret-key" \
-H "Accept: text/event-stream" \
--verbose

因为k2模型没有
.json格式的tokenizer文件,因此示例使用meta-llama/Llama-3.2-3B-Instruct的tokenizer代替,不会影响测试结果,tokenizer只是用来做测试过程中的token计数。
参考文档
- https://docs.nvidia.com/deeplearning/triton-inference-server/user-guide/docs/perf_analyzer/genai-perf/README.html
- https://docs.nvidia.com/deeplearning/triton-inference-server/user-guide/docs/perf_analyzer/genai-perf/docs/tutorial.html#openai-completions
Inference Benchmarker
Hugging Face出品,开发语言是rust,镜像体积小。
启动镜像命令
docker run -it -e HF_HOME=/hf_cache/huggingface -v /data/hf_cache:/hf_cache ghcr.io/huggingface/inference-benchmarker:sha-687e477 bash
启动测试
inference-benchmarker \
--tokenizer-name meta-llama/Llama-3.2-3B-Instruct \
--model-name kimi-k2-0905-preview \
--url https://api.moonshot.cn \
--max-vus 1 \
--duration 120s \
--benchmark-kind rate \
--rates 1 \
--api-key secret-key

示例同样使用meta-llama/Llama-3.2-3B-Instruct的tokenizer,也可以换成deepseek自己的tokenizer
参考文档
其他
除了上述两个开源项目,vllm和sglang也都自带了benchmark工具,包含在各自的镜像中。
warning
- 测试MAS服务(token API服务)时,注意控制并发数量,厂商通常都会限流限速。同时注意设置合理的输出输出token数量,避免消耗过多token。
- 如果对比测试不同厂商或者不同模型的API服务,务必使用相同的tokenizer,这个就相当于使用“同一把尺子”来做测量。
- 测试通常都是针对
stream响应输出模式的,如果推理服务的OpenAI API实现不够规范,会导致测试失败。 - 首次执行测试,要连接到huggingface下载tokenizer和数据集,需要自备梯子并设置代理
LLM API Benchmark Tool
使用go语言开发,不需要下载tokenizer到本地做token计数(应该是使用了API返回的metric进行计算)
项目主页和说明文档
./llmapibenchmark_darwin_arm64 \
--api-key 密钥 \
--base-url https://a.b.c.com/v1 \
--model kimi-k2-0905-preview \
--concurrency "1,1,1,1,1"