通过 PaddleOCR CLI 安装并启动 vLLM

通过 PaddleOCR CLI 安装 vLLM 推理加速框架: 把 PaddleOCR-VL 真正跑在生产环境中

在上一篇《使用 Docker 一键部署 PaddleOCR-VL:新手保姆级教程》发布后,我收到了工程师 Dario 的一条反馈,其中有一句话非常"工程师视角":

"fits perfectly within Google Cloud Run GPU in its smallest configuration (L4 GPU + 16GB RAM)"

这句话其实验证了一件非常重要、但经常被忽略的事情:
预加载模型 + vLLM 风格的推理服务设计,已经不只是"跑得快",而是真正解决了生产环境中最痛的点。

具体来说,它意味着:

  • Serverless GPU 场景可行
  • 最小规格 GPU(L4)即可运行
  • 冷启动时间明显下降
  • 成本、性能与稳定性达到一个工程上的平衡点

本篇文章,将在上一篇 Docker 部署教程的基础上,继续介绍如何通过 PaddleOCR CLI 安装并使用 vLLM 推理加速框架 。如果你还没完成基础部署,建议先阅读《使用 Docker 一键部署 PaddleOCR-VL:新手保姆级教程》 再继续。

下面直接进入实操。


一、在虚拟环境中安装vLLM

推理加速框架(如 vLLM、SGLang)对 CUDA、Torch、编译工具链依赖较重,非常容易与现有PaddlePaddle环境冲突 。因此:必须在虚拟环境中安装和使用推理加速框架。

由于paddleocr-vl镜像中,没有安装 nvcc 等编译工具,所以,在安装vllm前,必须先安装 FlashAttention 的预编译版本。

完整流程如下:

bash 复制代码
# 创建虚拟环境
python -m venv .venv_vlm
# 激活虚拟环境
source .venv_vlm/bin/activate
# 安装 PaddleOCR
python -m pip install "paddleocr[doc-parser]"
# 安装FlashAttention的预编译版本(避免 nvcc 编译失败)
python -m pip install https://github.com/mjun0812/flash-attention-prebuild-wheels/releases/download/v0.3.14/flash_attn-2.8.2+cu128torch2.8-cp310-cp310-linux_x86_64.whl
# 安装vllm
paddleocr install_genai_server_deps vllm

💡 这一点在很多环境中都会踩坑,先装 FlashAttention的预编译版本, 再装 vLLM 是关键顺序

二、启动 PaddleOCR-VL 推理服务

依赖安装完成后,直接启动基于vllm的PaddleOCR-VL推理服务:

bash 复制代码
paddleocr genai_server \
  --model_name PaddleOCR-VL-0.9B \
  --backend vllm \
  --port 8118   \
  --backend_config <(echo -e 'gpu-memory-utilization: 0.8')

该命令会完成三件关键事情:

  • 启动时预加载模型(降低冷启动)
  • 使用 vLLM 作为高性能推理后端
  • 对外暴露标准化推理服务接口

paddleocr genai_server 命令,常用参数说明

参数 说明
--model_name 模型名称
--model_dir 模型目录(可选)
--host 服务监听地址
--port 服务端口
--backend 推理后端(vllm / sglang)
--backend_config 后端 YAML 配置

在生产环境中,backend_config 常用于控制:

  • 并发数
  • 显存占用
  • 吞吐与延迟平衡

详情参见:

https://docs.vllm.ai/en/latest/configuration/optimization/

vllm_config.yaml 文件范例:

yaml 复制代码
gpu-memory-utilization: 0.8
max-num-seqs: 128

三、编写客户端程序访问vllm

3.1 使用Python CLI访问vllm推理服务

bash 复制代码
# 下载测试图片到本地
curl -o paddleocr_vl_demo.png \
https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/paddleocr_vl_demo.png

# 调用vLLM推理服务
paddleocr doc_parser --input paddleocr_vl_demo.png --vl_rec_backend vllm-server --vl_rec_server_url http://localhost:8118/v1

3.2 使用Python API访问vllm推理服务

客户端Python代码如下所示:

python 复制代码
from paddleocr import PaddleOCRVL

pipeline = PaddleOCRVL(vl_rec_backend="vllm-server", vl_rec_server_url="http://127.0.0.1:8118/v1")
output = pipeline.predict("https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/paddleocr_vl_demo.png")
for res in output:
    res.print()
    res.save_to_json(save_path="output")
    res.save_to_markdown(save_path="output")

四、小结:这一步,才是真正"生产级"的关键

如果说上一篇 Docker 教程解决的是:

"如何把 PaddleOCR-VL 跑起来"

那么这一篇解决的就是:

"如何让它稳定、低成本、可扩展地跑在生产环境里"

回到文章开头那句话:

它之所以能完美适配最小规格的 Serverless GPU,
本质原因就是:模型预加载 + 推理后端解耦的工程设计。

这也是 PaddleOCR-VL 推理方向上,一个非常值得学习、也非常"工程化"的实践。

如果你有更好的文章,欢迎投稿!

稿件接收邮箱:nami.liu@pasuntech.com

更多精彩内容请关注"算力魔方®"!

相关推荐
模型启动机4 小时前
告别OCR与分块!ICLR 2025 ColPali实现视觉文档检索精度&速度双碾压
人工智能·ai·大模型·ocr
飞梦工作室5 小时前
Qwen-Agent 与 LangChain、AutoGPT 详细对比:技术架构、能力差异与选型指南
架构·langchain·ocr
AI人工智能+6 小时前
人脸核身技术:通过身份证识别、炫彩活体检测和人脸比对三步验证,实现高效安全的身份认证
人工智能·深度学习·ocr·人脸核身
Chunyyyen1 天前
【第二十七周】OCR学习02
学习·ocr
RanceGru2 天前
LLM学习笔记7——unsloth微调Qwen3-4B模型与vllm部署测试
人工智能·笔记·学习·语言模型·vllm
~烈2 天前
Umi-OCR图片批量识别工具教程
ocr·ocr识别工具·ocr识别软件
有来有去95273 天前
vllm推理服务指标监控看板搭建手册
人工智能·vllm
AI人工智能+3 天前
表格识别技术:通过深度学习方法,实现精准还原纸质表格的结构、内容与格式,并直接导出为可编辑的Excel文件
ocr·表格识别
沟通qq 19226383 天前
PCA-RF:主成分分析与随机森林的高效分类组合
ocr