【免费下载链接】lift
Extract structured data from documents quickly and accurately.
lift是一个 9B 视觉语言模型项目,专门用于从 PDF 和图片中快速提取结构化 JSON 数据:你只需传入一个 JSON Schema,它就能返回与 Schema 完全对齐的结果,并通过 Schema 约束解码保证输出合法。本文面向准备上线的工程师和新手用户,手把手讲清lift 生产部署的核心路径:如何用一条lift_vllm命令启动 vLLM Docker 推理服务,以及项目内置的10 种 GPU 显存自动调优机制是如何为你省下心思的。
为什么生产环境推荐 vLLM 而不是本地推理
lift 提供两种推理模式(见 README.md):
| 模式 | 命令 | 适用场景 |
|---|---|---|
hf(HuggingFace) | pip install lift-pdf[hf] | 本地单机、快速验证 |
vllm(vLLM 服务) | pip install lift-pdf | 生产部署、批量处理(默认) |
vLLM 模式的意义在于:lift 会把一个文档的所有页面打包进单个请求(每页约 1k token),多路并发、前缀缓存、批处理调度这些高吞吐特性正好是 vLLM 的强项。官方基准测试中,lift 以90.2% 字段准确率和9.5s 中位延迟在 9B 级开源模型中表现突出:
一键启动步骤:Docker 版 vLLM 服务
前置准备
- 一台装有 NVIDIA GPU 和 Docker(含 nvidia-container-toolkit)的机器
- Python 3.12+
pip install lift-pdf启动服务
lift_vllm # 默认按 H100 配置启动 lift_vllm --gpu a100-80 # 按你的实际 GPU 类型自动调优这一条命令背后,lift/scripts/vllm_launcher.py 会组装并执行一条完整的docker run命令,关键点包括:
- 使用
vllm/vllm-openai:v0.22.0镜像,--gpus指定卡号(默认0) - 挂载
~/.cache/huggingface到容器内,模型权重缓存复用,二次启动不用重新下载 --enable-prefix-caching开启前缀缓存,重复 Schema 前缀的请求可直接命中--max-model-len 131072:lift 采用混合注意力架构,KV cache 很小,超大上下文窗口代价很低,因此单请求可容纳长文档--gpu-memory-utilization .85将显存占用控制在 85%,为系统留余量--mm-processor-kwargs '{"min_pixels": 3136, "max_pixels": 861696}'约束页面图片分辨率
服务就绪后监听http://localhost:8000/v1,服务名默认lift。
💡 如果当前 vLLM 版本的 MTP 投机解码已趋稳定,可以追加
--mtp参数启用(默认关闭,源码中注明其在部分 vLLM 版本上不稳定)。
10 种 GPU 显存自动调优是怎么工作的
不同显存的卡,吞吐上限差异巨大。手动调--max-num-batched-tokens和--max-num-seqs很容易要么 OOM、要么吞吐不足。lift 的解法是:以 H100 80GB 为基准,按显存比例缩放两个关键参数,逻辑见 vllm_launcher.py:
ratio = 你的显存GB / 80 max_batched_tokens = max(1024, 8192 × ratio 向下取 2 的幂) max_num_seqs = max(8, 64 × ratio 向下取 8 的倍数)完整支持列表如下(共 10 种,其中a100与a100-40为同卡别名):
| GPU 类型 | 显存 | 自动 max-num-batched-tokens | 自动 max-num-seqs |
|---|---|---|---|
h100/a100-80 | 80 GB | 8192 | 64 |
l40s | 48 GB | 4096 | 32 |
a100/a100-40 | 40 GB | 4096 | 32 |
a10/l4/4090/3090 | 24 GB | 2048 | 16 |
t4 | 16 GB | 1024 | 8 |
传入了未知型号时会直接报错并列出全部可用值,例如Unknown GPU 'l40'. Available: 3090, 4090, a10, ...,方便自查。
客户端接入:lift_extract 对接远程服务
服务启动后,客户端保持轻量,无需安装 torch:
# 单文件提取,Schema 指向 JSON 文件 lift_extract input.pdf ./output --schema schema.json # 批量处理整个目录,限定页面范围 lift_extract ./documents ./output --schema invoice --page-range 0-5,8几个生产相关细节:
- 配置即环境:
VLLM_API_BASE、VLLM_MODEL_NAME、VLLM_GPUS等全部可通过环境变量或local.env文件覆盖,定义见 lift/settings.py,多机部署时改一行VLLM_API_BASE即可指向远端服务 - 自动重试:客户端内置重试机制(默认 6 次),检测到模型复读 token 或服务错误会自动退避重试,逻辑见 lift/model/vllm.py
- Schema 约束解码:请求会携带
response_format: json_schema,从解码层面保证输出合法 - Schema 编写建议:保持简单——
string/number/integer/boolean、数组和嵌套对象均可;避免enum、anyOf/oneOf、$ref等无法编译的语法,否则约束解码会被跳过。项目自带的 lift/schemas/invoice.json 是不错的起步模板
生产部署检查清单
- ✅
pip install lift-pdf(客户端与启动器共用,安装很轻) - ✅
lift_vllm --gpu <你的卡型>启动服务,确认日志中打印的max-num-batched-tokens与上表一致 - ✅ 用
curl http://localhost:8000/v1/models或一条lift_extract小样本验证连通性 - ✅ 将
VLLM_API_BASE下发到各业务机器(本地部署默认值即可) - ✅ 批量任务直接用
lift_extract <目录> <输出目录>,失败样本的原始模型输出会写入<文件名>_metadata.json便于排查
⚠️ 注意:代码采用 Apache 2.0 协议,但模型权重使用修改版 OpenRAIL-M 许可,商用自托管前请确认许可范围(见 MODEL_LICENSE)。
至此,从 Docker 启动到 GPU 显存调优再到客户端接入,lift 的生产部署链路已全部打通——选对 GPU 型号参数,剩下的交给lift_vllm自动完成即可。
【免费下载链接】lift
Extract structured data from documents quickly and accurately.
相关推荐
Violin Docker生产部署实战:Compose+Caddy一键上线,自动开启HTTPS
Violin Docker生产部署实战:Compose+Caddy一键上线,自动开启HTTPS Violin 视频翻译服务的生产级部署方案 Violin 是一款
自托管 Paseo Hub:从 npx 一键启动到 PostgreSQL、Docker Compose 与 Fly 的生产化部署指南
自托管 Paseo Hub:从 npx 一键启动到 PostgreSQL、Docker Compose 与 Fly 的生产化部署指南 Hub 是 Paseo 的
GPT-Crawler与自动化部署:一键部署到生产环境
GPT Crawler与自动化部署:一键部署到生产环境 引言:从手动操作到自动化部署的转型 你还在为GPT Crawler的部署流程繁琐而烦恼吗?从环境配置到容
人工智能AI 应用RAG网页爬虫
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考