首页
/ Dolphin项目vLLM部署与推理实战指南

Dolphin项目vLLM部署与推理实战指南

2025-07-09 05:44:12作者:幸俭卉

概述

Dolphin是一个基于Swin Transformer编码器和MBart解码器架构的多模态文档理解模型。本文将详细介绍如何使用vLLM框架部署和运行Dolphin模型,包括离线推理和在线服务两种方式。

技术背景

vLLM是一个高性能的LLM推理和服务引擎,但原生不支持Dolphin这种"VisionEncoderDecoderModel"架构。为此,开发团队专门开发了两个插件:

  1. vllm-dolphin:为Dolphin模型提供vLLM支持
  2. vllm-mbart:为MBart解码器提供vLLM支持

这两个插件解决了原生vLLM不支持视觉编码器-文本解码器架构的问题,使得Dolphin模型能够在vLLM框架下高效运行。

环境准备

安装依赖

首先需要安装vLLM核心库和Dolphin专用插件:

# 安装vLLM核心库(版本需≥0.9.0)
pip install vllm>=0.9.0

# 安装vLLM-Dolphin插件
pip install vllm-dolphin==0.1

离线推理实践

离线推理适合单次或批量处理文档,无需启动服务。Dolphin支持多种文档理解任务:

1. 文档阅读顺序解析

python deployment/vllm/demo_vllm.py \
  --model ByteDance/Dolphin \
  --image_path ./demo/page_imgs/page_1.jpeg \
  --prompt "Parse the reading order of this document."

2. 文本/LaTeX识别

# 识别普通文本
python deployment/vllm/demo_vllm.py \
  --model ByteDance/Dolphin \
  --image_path ./demo/element_imgs/para_1.jpg \
  --prompt "Read text in the image."

# 识别数学公式(LaTeX)
python deployment/vllm/demo_vllm.py \
  --model ByteDance/Dolphin \
  --image_path ./demo/element_imgs/block_formula.jpeg \
  --prompt "Read text in the image."

3. 表格解析

python deployment/vllm/demo_vllm.py \
  --model ByteDance/Dolphin \
  --image_path ./demo/element_imgs/table_1.jpeg \
  --prompt "Parse the table in the image."

在线服务部署

对于需要持续提供服务的场景,可以部署为API服务:

1. 启动API服务

python deployment/vllm/api_server.py \
  --model="ByteDance/Dolphin" \
  --hf-overrides "{\"architectures\": [\"DolphinForConditionalGeneration\"]}"

2. 客户端调用

启动服务后,可以使用客户端脚本进行调用,参数与离线推理类似:

# 文档阅读顺序解析
python deployment/vllm/api_client.py \
  --image_path ./demo/page_imgs/page_1.jpeg \
  --prompt "Parse the reading order of this document."

# 文本识别
python deployment/vllm/api_client.py \
  --image_path ./demo/element_imgs/para_1.jpg \
  --prompt "Read text in the image."

# 表格解析
python deployment/vllm/api_client.py \
  --image_path ./demo/element_imgs/table_1.jpeg \
  --prompt "Parse the table in the image."

性能优化建议

  1. 对于批量处理场景,可以调整vLLM的批处理大小参数提高吞吐量
  2. 在GPU资源有限的情况下,可以启用vLLM的内存优化选项
  3. 对于特定任务,可以微调prompt以获得更好的结果

常见问题

Q: 为什么需要专门的vllm-dolphin插件? A: 因为Dolphin采用视觉编码器+文本解码器的混合架构,而原生vLLM主要针对纯文本模型设计。

Q: 能否使用自己的微调版本Dolphin模型? A: 可以,只需修改--model参数指向你的模型路径即可。

Q: API服务支持并发请求吗? A: 是的,vLLM原生支持请求批处理和并发,可以通过调整参数优化并发性能。