昇腾系列--PaddleOCR-VL-1.6移植,支持pdf解析,Ascend910B单卡性能持平rtx 5090
摘要:本文基于 Ascend 910B 与 rtx 5090 两种硬件环境,完整介绍了 PaddleOCR-VL-1.6 与 PP-DocLayoutV3 文档解析模型的部署与移植流程,涵盖 vllm-ascend 服务端加载、PP-DocLayoutV3 的 ONNX 导出与 OM 转换等关键步骤。通过统一的压测脚本对单页 PDF 解析性能进行对比,结果显示 Ascend 910B 单页耗时 0.83 秒,优于 rtx 5090 的 0.90 秒。在性能占优的同时,Ascend 910B 在整体部署成本上更具性价比,为文档解析场景的国产化算力选型提供了有力参考。
一、Ascend部署方案
模型介绍:
- PaddleOCR-VL-1.6
PaddleOCR-VL-1.6 是在 PaddleOCR-VL-1.5 基础上升级的紧凑型文档解析模型。PaddleOCR-VL-1.6 引入了一种区域感知的数据优化框架,该框架能够识别前一版本模型中的薄弱区域,并对这些区域进行有针对性的增强,从而提升监督信号的可靠性。此外,该模型还采用了一种基于精选数据选择和强化学习的渐进式后训练方案,通过分阶段优化将模型性能推向更高水平。PaddleOCR-VL-1.6 在 OmniDocBench v1.6 上取得了 96.33% 的全新 SOTA 分数,同时也在 OmniDocBench v1.5 和 Real5-OmniDocBench 上刷新了纪录,展现出与顶级视觉语言模型(VLM)相抗衡的强大竞争力。该模型架构与 PaddleOCR-VL-1.5 完全兼容,可实现零成本即插即用迁移。
- PP-DocLayoutV3
PP-DocLayoutV3 专为处理非平面文档图像而设计。它能够直接预测布局元素的多点边界框(而非标准的两点框),并在单次前向传播中确定倾斜和弯曲表面上的逻辑阅读顺序,从而显著减少级联误差。该模型是 PaddleOCR-VL-1.5 的核心组件,为 PaddleOCR-VL 中各种真实场景文档的高精度解析提供了关键的布局分析能力。
部署方案:

软件环境及版本如下:
| 服务端(vllm0.23) Ascend 910B * 1 | 客户端(paddleocr3.6) Ascend 910B *1 | 服务端(vllm0.23) rtx 5090 * 1 | 客户端(paddleocr 3.6) rtx 5090 * 1 |
| Ascend HDK 26.0.RC1 | Ascend HDK 26.0.RC1 | NV Driver 580.105.08 | NV Driver 580.105.08 |
| python 3.12.13 | python3.12.13 | python3.12.0 | python3.12.0 |
| cann 9.1.0 | cann 9.1.0 | cuda 13.0 | cuda 13.0 |
| torch_npu 2.10.0.post4 | paddlepaddle 3.2.0 | -- | paddlepaddle-npu 3.2.1 |
| torch 2.10.0 | paddleocr 3.6.0 | torch 2.11.0 | paddleocr 3.6.0 |
| nnal 9.1.0 | paddlex 3.6.1 | -- | paddlex 3.6.1 |
| vllm‑ascend 0.23.0 | paddle2onnx 2.1.0 | -- | -- |
| vllm 0.23.0 | onnx 1.17.0 | vllm 0.23.0 | -- |
| -- | onnx_graphsurgeon 0.6.1 | -- | -- |
| -- | onnx-simplifier 0.5.0 | -- | -- |
| -- | onnxruntime 1.29.0 | -- | -- |
| -- | onnxsim 0.6.5 | -- | -- |
二、模型移植
2.1 PaddleOCR-VL-1.6移植
vllm-ascend 0.23.0 已支持 PaddleOCR-VL 模型加载:PaddleOCR-VL
模型已支持特性:
- 开启缓存 --enable-prefix-caching
- 开启异步 --async-scheduling
- 开启全图解码 --compilation-config '{"cudagraph_mode":"FULL_DECODE_ONLY"}'
- CPU 绑核 --additional-config '{"enable_cpu_binding":true}'
- torch_npu 特性:算子下发队列优化 TASK_QUEUE_ENABLE=1
- torch_npu 特性:开启粗粒度绑核 CPU_AFFINITY_CONF=1
- torch_npu 特性:缓存优化 PYTORCH_NPU_ALLOC_CONF="expandable_segments:True"
- 提高缓存命中 --block-size 32
vllm支持特性列表:vllm-ascend 特性列表
2.2 PP-DocLayoutV3 移植
优化模型推理,将PP-DocLayoutV3模型转成om格式
- 模型PP-DocLayoutV3导出onnx
MODEL_PATH="../PP-DocLayoutV3"
paddlex --paddle2onnx \
--paddle_model_dir ${MODEL_PATH} \
--onnx_model_dir ${MODEL_PATH}
- onnx模型裁剪
MODEL_NAME="PP-DocLayoutV3"
MODEL_PATH="../"${MODEL_NAME}
python -m onnxsim \
${MODEL_PATH}/inference.onnx \
${MODEL_PATH}/${MODEL_NAME}_opt.onnx
- onnx模型转om
MODEL_NAME="PP-DocLayoutV3"
MODEL_PATH="../"${MODEL_NAME}
atc --model=${MODEL_PATH}/${MODEL_NAME}_opt.onnx \
--framework=5 \
--output=${MODEL_PATH}/${MODEL_NAME} \
--soc_version=Ascend910B4 \
--input_shape="im_shape:-1,2;image:-1,3,800,800;scale_factor:-1,2"
修改paddlex代码,加载OM模型并进行推理
paddlex安装路径:../miniconda3/envs/paddleocr3.6/lib/python3.12/site-packages/
修改推理脚本:paddlex/inference/models/layout_analysis/predictor.py
使用ais_bench加载OM模型:

OM推理修改:

修改模型入参脚本:paddlex/inference/pipelines/paddleocr_vl/pipeline.py

三、PDF 性能测试
3.1 测试方法
代码仓开源地址:paddleocr-vl-npu
服务端 vllm 加载模型 PaddleOCR-VL-1.6 启动命令
export VLLM_USE_MODELSCOPE=True
export MODEL_PATH="../PaddleOCR-VL-1.6"
export TASK_QUEUE_ENABLE=1
export CPU_AFFINITY_CONF=1
export PYTORCH_NPU_ALLOC_CONF="expandable_segments:True"
vllm serve ${MODEL_PATH} \
--max-num-batched-tokens 16384 \
--served-model-name PaddleOCR-VL-1.6 \
--trust-remote-code \
--enable-prefix-caching \
--async-scheduling \
--block-size 32 \
--mm-processor-cache-gb 0 \
--allowed-local-media-path /workspace \
--compilation-config '{"cudagraph_mode":"FULL_DECODE_ONLY"}' \
--additional-config '{"enable_cpu_binding":true}' \
--port 9988
客户端 paddlex 加载模型 PP-DocLayoutV3 的 pipeline 设置
注意:rtx 5090 环境,device 设置为 gpu;Ascend 910B 环境,device 设置为 cpu
pipeline = PaddleOCRVL(
layout_detection_model_dir="../PP-DocLayoutV3",
vl_rec_backend="vllm-server",
vl_rec_server_url="http://127.0.0.1:9988/v1", # vllm server
device="cpu", # rtx 5090 device=gpu
use_doc_orientation_classify=False,
use_doc_unwarping=False,
use_chart_recognition=False,
use_seal_recognition=True,
use_layout_detection=True,
format_block_content=True,
merge_layout_blocks=True,
vl_rec_max_concurrency=50,
vl_rec_api_model_name="PaddleOCR-VL-1.6",
cpu_threads=50
)
执行压测脚本
python pdf_infer.py
3.2 测试对比结果
解析单页 PDF 基于 Ascend 910B 的性能

解析单页 PDF 基于 rtx 5090 的性能

单页 PDF 耗时对比
| Ascend 910B 单页 PDF 耗时 | rtx 5090 单页 PDF 耗时 |
| 0.83 s | 0.90 s |
四、总结
本文围绕 PaddleOCR-VL-1.6 与 PP-DocLayoutV3 文档解析模型,在 Ascend 910B 与 rtx 5090 两套硬件环境上完成了完整的部署与移植实践。从部署经验来看,两条技术路线均采用 vllm-ascend 服务端加载 PaddleOCR-VL-1.6、客户端 paddlex 加载 PP-DocLayoutV3 的架构,差异主要体现在底层算力栈:Ascend 910B 依赖 CANN、torch_npu 与 vllm-ascend 生态,PP-DocLayoutV3 需经 ONNX 导出、裁剪并转换为 OM 格式以调用 NPU 加速;rtx 5090 则基于 CUDA 生态,pipeline 中 device 设置为 gpu 即可直接运行,整体移植链路相对更短。
在性能表现上,基于统一的压测脚本对单页 PDF 解析进行对比,Ascend 910B 单页耗时为 0.83 秒,rtx 5090 单页耗时为 0.90 秒,Ascend 910B 在本次测试中略占优势。考虑到两者在解析精度上保持一致,Ascend 910B 在性能占优的同时,凭借国产化算力在采购与运维成本上的优势,展现出更高的性价比。
综合来看,对于对数据安全、供应链自主可控有明确要求,或需要长期规模化部署的文档解析场景,Ascend 910B 是更具竞争力的国产化算力选择;而对于已有 CUDA 技术栈积累、追求最短迁移路径的团队,rtx 5090 仍是快速上手的稳妥方案。建议后续在更大规模文档集、更高并发以及多页长文档等维度上进一步扩展测试,以更全面地评估两套方案在生产环境中的表现。
五、参考资料
- PaddleOCR-VL 官方文档:PaddleOCR-VL — vllm-ascend
- vllm-ascend 特性列表:特性指南 — vllm-ascend
- 代码仓 paddleocr-vl-npu:paddleocr-vl-npu/README.md-代码预览-paddleocr-vl-npu:基于 PaddleOCR 与昇腾 NPU 的文档解析项目 - AtomGit
鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。
更多推荐
所有评论(0)