## FastDeploy 服务化性能压测工具(PaddleOCR-VL)
本文档主要介绍如何对 [PaddleOCR-VL](https://www.paddleocr.ai/latest/version3.x/pipeline_usage/PaddleOCR-VL.html) 进行性能测试。
### 数据集:
下载数据集到本地用于性能测试:
| 数据集 |
获取地址 |
| OmniDocBench v1 数据集,共 981 个 pdf 文件 |
https://github.com/opendatalab/OmniDocBench |
### 使用方式
1. 启动 FastDeploy 服务,下面为 A100-80G 测试时使用的参数,可以根据实际情况进行调整:
```shell
python -m fastdeploy.entrypoints.openai.api_server \
--model PaddlePaddle/PaddleOCR-VL \
--port 8118 \
--metrics-port 8471 \
--engine-worker-queue-port 8472 \
--cache-queue-port 55660 \
--max-model-len 16384 \
--max-num-batched-tokens 16384 \
--gpu-memory-utilization 0.7 \
--max-num-seqs 256 \
--workers 2 \
--graph-optimization-config '{"graph_opt_level":0, "use_cudagraph":true}'
```
2. 在同一环境安装依赖后启动测试脚本:
```shell
# 安装依赖
pip install -U paddlex
# 启动测试脚本
python benchmark.py ./test_data -b 512 -o ./benchmark.json --paddlex_config_path ./PaddleOCR-VL.yaml --gpu_ids 0
```
测试脚本参数说明:
| 参数 |
说明 |
input_dirs |
输入的目录路径,会自动识别到目录下的 pdf 或图片。可以提供一个或多个。 |
-b, --batch_size |
推理时使用的批处理大小。 |
-o, --output_path |
输出结果文件的路径。 |
--paddlex_config_path |
PaddleX 的 YAML 配置文件路径。 |
--gpu_ids |
指定要使用的 GPU 设备 ID,可提供一个或多个。 |
3. 测试结束后,会输出类似于下面的结果:
```text
Throughput (file): 1.3961 files per second
Average latency (batch): 351.0812 seconds
Processed pages: 981
Throughput (page): 1.3961 pages per second
Generated tokens: 1510337
Throughput (token): 2149.5 tokens per second
GPU utilization (%): 100.0, 0.0, 68.1
GPU memory usage (MB): 77664.8, 58802.8, 74402.7
```
输出结果说明:
| 参数 |
说明 |
| Throughput (file) |
每秒处理的文件数量 |
| Average latency (batch) |
每批次处理的平均延迟时间,单位为秒 |
| Processed pages |
已处理的页面总数 |
| Throughput (page) |
每秒处理的页面数量 |
| Generated tokens |
生成的token总数 |
| Throughput (token) |
每秒生成的token数量 |
| GPU utilization (%) |
GPU 的最大、最小、平均利用率 |
| GPU memory usage (MB) |
GPU 的最大、最小、平均显存占用,单位为 MB |