性能#
重要提示
NIM VLM 性能基准测试的综合指南正在开发中。在此期间,鼓励开发者参考NIM for LLM Benchmarking Guide。
性能分析#
您可以使用 genai-perf
工具,该工具来自 perf_analyzer,以在模拟生产负载下对 VLM 的性能进行基准测试。
重要提示
根据您的需求更新模型名称。例如,对于 meta/llama-3.2-11b-vision-instruct
模型,您可以使用以下命令
执行以下命令,使用 genai-perf
命令行工具运行性能基准测试。genai-perf
的快速入门指南可以在这里找到。
首先,运行安装了 genai-perf
的容器
export TOKENIZER_PATH=... # this is where tokenizer.json for the model is located
docker run -it --net=host --gpus=all -v ${TOKENIZER_PATH}:/workspace/tokenizer nvcr.io/nvidia/tritonserver:24.10-py3-sdk
重要提示
我们建议将 TOKENIZER_PATH
设置为从 HuggingFace 拉取的模型的检查点目录 (例如,这里 针对 meta/llama-3.2-11b-vision-instruct
)。该目录必须包含模型的 config.json
以及所有与 tokenizer 相关的文件 (即,tokenizer.json
, tokenizer_config.json
, 和 special_tokens_map.json
)。
重要提示
以下命令已使用 genai-perf
24.10 版本进行测试。
export CONCURRENCY=8 # number of requests sent concurrently
export MEASUREMENT_INTERVAL=300000 # max time window (in milliseconds) for genai-perf to wait for a response
export INPUT_SEQ_LEN=5000 # input seqence length (in the number of tokens)
export OUTPUT_SEQ_LEN=5000 # output sequence length (in the number of tokens)
export IMAGE_WIDTH=1120 # width of images used in profiling
export IMAGE_HEIGHT=1120 # height of images used in profiling
genai-perf profile \
-m meta/llama-3.2-11b-vision-instruct \
--concurrency ${CONCURRENCY} \
--tokenizer /workspace/tokenizer \
--endpoint v1/chat/completions \
--endpoint-type vision \
--service-kind openai \
--streaming -u http://127.0.0.1:8000 \
--num-prompts 100 \
--measurement-interval ${MEASUREMENT_INTERVAL} \
--synthetic-input-tokens-mean ${INPUT_SEQ_LEN} \
--synthetic-input-tokens-stddev 0 \
--output-tokens-mean ${OUTPUT_SEQ_LEN} \
--extra-inputs max_tokens:${OUTPUT_SEQ_LEN} \
--extra-inputs min_tokens:${OUTPUT_SEQ_LEN} \
--extra-inputs ignore_eos:true \
--artifact-dir tmp/ \
-v --image-width-mean ${IMAGE_WIDTH} --image-width-stddev 0 --image-height-mean ${IMAGE_HEIGHT} --image-height-stddev 0 --image-format png \
-- --max-threads ${CONCURRENCY}
genai-perf
的完整文档可以在这里找到。
基准测试结果#
ISL: 文本输入序列长度;OSL: 文本输出序列长度;TTFT: 首个 token 的时间;ITL: token 间延迟
最小延迟 数字是在并发 1 (单流) 的情况下捕获的。 最大吞吐量 数字是在最大并发饱和吞吐量的情况下测量的。
图像尺寸: 1120x1120px
ISL |
OSL |
平均 TTFT (毫秒) |
平均 ITL (毫秒) |
平均请求延迟 (毫秒) |
---|---|---|---|---|
1000 |
1000 |
198 |
7.4 |
7598 |
ISL |
OSL |
平均 ITL (毫秒) |
请求吞吐量 (reqs/秒) |
---|---|---|---|
1000 |
1000 |
29.3 |
2.72 |
ISL |
OSL |
平均 TTFT (毫秒) |
平均 ITL (毫秒) |
平均请求延迟 (毫秒) |
---|---|---|---|---|
1000 |
1000 |
202 |
8.4 |
8602 |
ISL |
OSL |
平均 ITL (毫秒) |
请求吞吐量 (reqs/秒) |
---|---|---|---|
1000 |
1000 |
28.1 |
2.04 |
ISL |
OSL |
平均 TTFT (毫秒) |
平均 ITL (毫秒) |
平均请求延迟 (毫秒) |
---|---|---|---|---|
1000 |
1000 |
367 |
13.7 |
14067 |
20000 |
2000 |
2690 |
15.5 |
33690 |
ISL |
OSL |
平均 ITL (毫秒) |
请求吞吐量 (reqs/秒) |
---|---|---|---|
1000 |
1000 |
55.1 |
1.04 |
20000 |
2000 |
41.0 |
0.11 |
ISL |
OSL |
平均 TTFT (毫秒) |
平均 ITL (毫秒) |
平均请求延迟 (毫秒) |
---|---|---|---|---|
1000 |
1000 |
531 |
9.7 |
10231 |
20000 |
2000 |
1839 |
10.7 |
23239 |
60000 |
2000 |
6830 |
12.4 |
31630 |
ISL |
OSL |
平均 ITL (毫秒) |
请求吞吐量 (reqs/秒) |
---|---|---|---|
1000 |
1000 |
53.3 |
1.59 |
20000 |
2000 |
55.1 |
0.24 |
60000 |
2000 |
63.3 |
0.07 |
ISL |
OSL |
平均 TTFT (毫秒) |
平均 ITL (毫秒) |
平均请求延迟 (毫秒) |
---|---|---|---|---|
60000 |
2000 |
7421 |
12.6 |
32621 |
ISL |
OSL |
平均 ITL (毫秒) |
请求吞吐量 (reqs/秒) |
---|---|---|---|
60000 |
2000 |
82.7 |
0.06 |
ISL |
OSL |
平均 TTFT (毫秒) |
平均 ITL (毫秒) |
平均请求延迟 (毫秒) |
---|---|---|---|---|
1000 |
1000 |
1142 |
14.9 |
16042 |
20000 |
2000 |
4626 |
16.5 |
37626 |
ISL |
OSL |
平均 ITL (毫秒) |
请求吞吐量 (reqs/秒) |
---|---|---|---|
1000 |
1000 |
24.3 |
0.32 |
20000 |
2000 |
44.7 |
0.08 |
ISL |
OSL |
平均 TTFT (毫秒) |
平均 ITL (毫秒) |
平均请求延迟 (毫秒) |
---|---|---|---|---|
1000 |
1000 |
531 |
17.4 |
17931 |
20000 |
2000 |
2119 |
18.2 |
38519 |
60000 |
2000 |
6347 |
19.0 |
44347 |
ISL |
OSL |
平均 ITL (毫秒) |
请求吞吐量 (reqs/秒) |
---|---|---|---|
1000 |
1000 |
48.3 |
1.17 |
60000 |
2000 |
48.5 |
0.08 |
ISL |
OSL |
平均 TTFT (毫秒) |
平均 ITL (毫秒) |
平均请求延迟 (毫秒) |
---|---|---|---|---|
60000 |
2000 |
8404 |
25.2 |
58804 |
ISL |
OSL |
平均 ITL (毫秒) |
请求吞吐量 (reqs/秒) |
---|---|---|---|
60000 |
2000 |
32.0 |
0.03 |
ISL |
OSL |
平均 TTFT (毫秒) |
平均 ITL (毫秒) |
平均请求延迟 (毫秒) |
---|---|---|---|---|
1000 |
1000 |
1060 |
36.6 |
37660 |
20000 |
2000 |
7120 |
38.0 |
83120 |
60000 |
2000 |
26692 |
41.1 |
108892 |
ISL |
OSL |
平均 ITL (毫秒) |
请求吞吐量 (reqs/秒) |
---|---|---|---|
1000 |
1000 |
77.5 |
0.39 |
20000 |
2000 |
76.4 |
0.05 |
60000 |
2000 |
75.5 |
0.02 |
ISL |
OSL |
平均 TTFT (毫秒) |
平均 ITL (毫秒) |
平均请求延迟 (毫秒) |
---|---|---|---|---|
1000 |
1000 |
1121 |
26.9 |
28021 |
20000 |
2000 |
5081 |
27.5 |
60081 |
60000 |
2000 |
17640 |
29.4 |
76440 |
ISL |
OSL |
平均 ITL (毫秒) |
请求吞吐量 (reqs/秒) |
---|---|---|---|
1000 |
1000 |
94.6 |
0.59 |
20000 |
2000 |
102.6 |
0.11 |
60000 |
2000 |
114.8 |
0.04 |
ISL |
OSL |
平均 TTFT (毫秒) |
平均 ITL (毫秒) |
平均请求延迟 (毫秒) |
---|---|---|---|---|
1000 |
1000 |
1102 |
40.4 |
41502 |
ISL |
OSL |
平均 ITL (毫秒) |
请求吞吐量 (reqs/秒) |
---|---|---|---|
1000 |
1000 |
66.7 |
0.12 |
并非所有性能数据都在上面提供。 更多数据将随时间添加到此页面。