Model reference · open weights
lift is an open-weight language model from datalab-to. lift (BF16) weighs 19.3 GB; the smallest configuration that runs it is RTX 4090 24 GB.
For self-hosting, compare this build's requirements below with the GPU you plan to rent.
Summary of the datalab-to/lift model card, 2026-10-01
What it is
| Released by | datalab-to |
|---|---|
| Released | 2026-06-19 |
| Parameters | 9.7B |
| VRAM | 19.3 GB for the weights |
What it runs on
| Card | Requests at once | Context max | Memory | |
|---|---|---|---|---|
| 8K each | 32K each | |||
| RTX 3060 12 GB … RTX 4060 Ti 16 GB 2 smaller cards | ||||
| RTX 3090 24 GB | 5 | 1 | 55K | 23.4 GB |
| RTX 4090 24 GB | 5 | 1 | 53K | 23.4 GB |
| RTX 5090 32 GB | 25 | 8 | all 256K | 31.0 GB |
| L40S 48 GB | 60 | 19 | all 256K | 44.0 GB |
| A100 80 GB | 152 | 48 | all 256K | 78.2 GB |
| H100 80 GB | 137 | 43 | all 256K | 78.1 GB |
| RTX PRO 6000 Blackwell 96 GB | 180 | 56 | all 256K | 93.8 GB |
| DGX Spark (GB10) 128 GB unified | 216 | 68 | all 256K | 107 GB |
| H200 141 GB | 299 | 94 | all 256K | 138 GB |
| B200 180 GB | 400 | 126 | all 256K | 176 GB |
| 2× RTX 4060 Ti 16 GB tensor parallel | 19 | 6 | 212K | 15.4 GB a card |
| 2× RTX 4090 24 GB tensor parallel | 62 | 19 | all 256K | 23.4 GB a card |
| 2× RTX 3090 24 GB tensor parallel | 62 | 19 | all 256K | 23.4 GB a card |
| Requests at once | 8K tokens each | 32K tokens each |
|---|---|---|
| 1 | 21.8 GB | 22.6 GB |
| 5 | 23.3 GB | 27.3 GB |
| 8 | 24.4 GB | 30.9 GB |
| 16 | 27.4 GB | 40.3 GB |
| 32 | 33.3 GB | 59.1 GB |
| 64 | 45.2 GB | 96.8 GB |
One card, with vLLM's small-card settings.
From the model card
lift is a structured extraction model from Datalab that pulls structured JSON out of PDFs and images. Pass any JSON schema and lift returns a JSON object matching it, using schema-constrained decoding to guarantee valid, well-typed output.
Try lift in the free playground, or use the hosted API for higher accuracy, per-field verification, and citations.
pip install lift-pdf
# With vLLM (recommended, lightweight install)
lift_vllm
lift_extract input.pdf ./output --schema schema.json
# With HuggingFace (requires torch)
pip install lift-pdf[hf]
lift_extract input.pdf ./output --schema schema.json --method hf
A schema is standard JSON Schema. Keep it simple — string, number, integer, boolean, arrays of those, arrays of objects, and nested objects are all supported. Write a description for any field whose name isn't self-explanatory, and mark a field required only when it must appear; fields genuinely absent from a document come back null.
{
"type": "object",
"properties": {
"invoice_number": {"type": "string", "description": "Invoice identifier"},
"total": {"type": "number", "description": "Total amount due"},
"line_items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"description": {"type": "string"},
"amount": {"type": "number"}
}
}
}
},
"required": ["invoice_number", "total"]
}
from lift import extract
from lift.model import InferenceManager
# Start the vLLM server first with: lift_vllm
model = InferenceManager(method="vllm")
result = extract("document.pdf", "schema.json", model=model)
print(result.extraction)
from lift import extract
from lift.model import InferenceManager
# Loads datalab-to/lift in-process (requires: pip install lift-pdf[hf])
model = InferenceManager(method="hf")
result = extract("document.pdf", "schema.json", model=model)
print(result.extraction)
extract accepts the schema as a dict, a path to a .json file, an inline JSON string, or the name of a saved schema. Pass page_range="0-5" to limit PDF pages, and set VLLM_API_BASE to target a remote server.
Evaluated on a 225-document extraction benchmark (6–64 pages per document, ~11,000 scored fields) with adversarial cases planted throughout: cross-page values, exhaustive lists, fields that must be left null, near-miss distractors, multi-source aggregation. Scoring is deterministic exact-match against ground truth (numeric tolerance, normalized strings).
All models receive the same rendered page images, and extract each document in a single pass.
| Model | Size | Field accuracy | Full-document accuracy | Median latency* | Features |
|---|---|---|---|---|---|
| Datalab API | — | 95.9% | 44.4% | 30.8s | Citations + Verification |
| Gemini Flash 3.5 | — | 91.3% | 40.0% | 28.1s | |
| lift | 9B | 90.2% | 20.9% | 9.5s | |
| Azure Content Understanding | — | 83.4% | 22.2% | 73.7s | |
| NuExtract3 | 4B | 81.5% | 8.4% | 8.3s | |
| Qwen3.5-9B | 9B | 76.3% | 24.0% | 16.8s |
* Per document, 8 concurrent requests. Local models (lift, Qwen3.5-9B, NuExtract3) served with vLLM on a single GPU; Gemini, Datalab, and Azure via API. Latency varies with hardware and load — treat as relative, not absolute.
Hosted models with verification, citations, and confidence scores are available via the Datalab API — test in the playground.
Code is Apache 2.0. Model weights use a modified OpenRAIL-M license: free for research, personal use, and startups under $5M funding/revenue. Cannot be used competitively with our API. For broader commercial licensing, see pricing.
Quoted from the model card on Hugging Face. The full card is behind the Hugging Face link above.