我采用的方案是仿照https://blog.csdn.net/hjd199464/article/details/153485320进行部署。 首先我的硬件是A100(80G显存)*4卡,cpu是48核的硬件架构,日常情况先 cpu几乎无负载使用率在5%以下。 VLLM镜像以及脚本 2卡跑 docker run -d --name PaddleOCR-VL-1.6-0.9B -p 8118:8118 -v /data/models/PaddleOCR-VL-1.6-0.9B:/root/.paddlex/official_models/PaddleOCR-VL-1.6-0.9B -v /data/models/paddlex:/root/.paddlex/official_models --gpus '"device=2,3"' ccr-2vdh3abv-pub.cnc.bj.baidubce.com/paddlepaddle/paddlex-genai-vllm-server:latest paddlex_genai_server --model_name PaddleOCR-VL-1.6-0.9B --model_dir /root/.paddlex/official_models/PaddleOCR-VL-1.6-0.9B --host 0.0.0.0 --port 8118 --backend vllm --backend_config /root/.paddlex/official_models/backend_config_vllm_80g.yaml backend_config_vllm_80g.yaml配置中关键参数 api-server-count=70(也试过1和4)、gpu-memory-utilization=0.9 max-num-batched-tokens=32768(也试过16384、131072)、max-num-seqs=512、max-model-len=131072 trion配置 2卡跑 paddlex\paddlex_hps_PaddleOCR-VL-1.6_sdk\server\model_repo\layout-parsing\config_gpu.pbtxt 中的max_batch_size=1、 instance_group [ { count: 25 kind: KIND_GPU gpus: [ 0 ] }, { count: 25 kind: KIND_GPU gpus: [ 1 ] } ] 现在业务需求是 我们系统一天高峰期会产生30万+张图片,均值20万+,业务系统调用trion的/v2/models/layout-parsing/infer进行图片分析,分析图片是否空的,提取内容,并且还有2025、2024等前几年的业务数据,总计上千万的图片还没分析,我们目前的问题是经过上述参数设置目前的速度是业务系统测试120+图/分的速度,并发50(30、80 也试过)并且watch nvidia-smi中查看2、3卡VLLM的gpu-util 30+%上下的使用率,这个速度想要分析完业务数据非常的困难,另外我直连压测了vllm、和tiron 高并发(20、40、80、200)下,速度都不理想,始终无法出现一边倒的情况,帮忙看看需要如何修改才能达到速度最大化
Activity
duxiao19931008 commentedon Oct 22, 2026
#4484
我们遇到的问题和这个应该也是一致的, 实际测试发现server的docker显存利用率没有拉满, pipline的利用率也上不来,我是两张L20, 一个部署server, 一个pipline, 实例数是5, 实例开1和开5竟然提升只有25%, cpu也没有很高, 所以问题就很奇怪, 初步怀疑是调度逻辑有问题, 你可以顺着这个方向查, 我正在努力解决这个问题, 就看官方有什么解决办法了
duxiao19931008 commentedon Oct 26, 2026
原问题**:输入线程结束时只设置结束事件,CV 线程可能仍阻塞在
queue_input.get(timeout=0.5);短批 VLM 聚合又要等 CV 结束。数据已经没有了,却还可能等待一次轮询超时。修改文件:
核心改法:
原问题:整页要等所有块返回;一个大表格或长 OCR 块若排到最后提交,会拖住整批。引擎队列等待很小,并不代表客户端侧没有晚提交或批尾等待。
最终实现文件:
在
make_front()中包装 VLM 客户端的_genai_client_process:实现方式:
_create_pipeline()改为创建不持有 CV GPU 模型的协调器。pb.InferenceRequest(...).exec()同步 BLS 传递图像和中间状态。allow_pickle=False;设置 512MiB payload、16MiB metadata 等保护。它们是当前边界,不等于已验证任意超长图/PDF。跨批方案先使用 2 个 CPU 协调器。后续保持 GPU CV count=1、VLM client=32、模型和输入策略不变,只把前端 CPU count 改为 3。
最终前端配置关键部分:
backend: "python" max_batch_size: 16 # input/output 定义见完整发布文件,不要只复制此节覆盖整个文件。 instance_group [ { count: 3 kind: KIND_CPU } ] dynamic_batching { }为什么保留:ABBA 吞吐 1.849→2.285 页/秒,+23.59%;各轮 P95 均值 6.289→5.257 秒,-16.42%;
代价:多一个协调进程和图像缓冲,潜在 VLM 在途块从 2×32 增为 3×32;不是零成本增加线程,也不能外推 4 个或更多更好。
5 Layout HPIP/ORT:保留的后端选择,不冒充所有模型加速(测试L20单卡下未收益, 跳过, 不代表无收益)
测试配置
jiangshengguo commentedon Oct 30, 2026
我暂时没试过 我目前用的是cpu+4NPU 并且关闭了板式校验,目前实测 200+/分,单张卡也就是50 上下 和官方标称的1.25张/s 差不多 这个应该就是极限了