Dolphin项目vLLM部署与推理实战指南
2025-07-09 05:44:12作者:幸俭卉
概述
Dolphin是一个基于Swin Transformer编码器和MBart解码器架构的多模态文档理解模型。本文将详细介绍如何使用vLLM框架部署和运行Dolphin模型,包括离线推理和在线服务两种方式。
技术背景
vLLM是一个高性能的LLM推理和服务引擎,但原生不支持Dolphin这种"VisionEncoderDecoderModel"架构。为此,开发团队专门开发了两个插件:
- vllm-dolphin:为Dolphin模型提供vLLM支持
- 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."
性能优化建议
- 对于批量处理场景,可以调整vLLM的批处理大小参数提高吞吐量
- 在GPU资源有限的情况下,可以启用vLLM的内存优化选项
- 对于特定任务,可以微调prompt以获得更好的结果
常见问题
Q: 为什么需要专门的vllm-dolphin插件? A: 因为Dolphin采用视觉编码器+文本解码器的混合架构,而原生vLLM主要针对纯文本模型设计。
Q: 能否使用自己的微调版本Dolphin模型? A: 可以,只需修改--model参数指向你的模型路径即可。
Q: API服务支持并发请求吗? A: 是的,vLLM原生支持请求批处理和并发,可以通过调整参数优化并发性能。