Model reference · open weights

d1

LLMs LiquidAI Vision + text 3 builds Its own licence terms 5k dl/mo

d1 is an open-weight language model from LiquidAI. d1-3B-GGUF (GGUF) weighs 1.7 GB; the smallest configuration that runs it is RTX 3060 12 GB.

For self-hosting, compare this build's requirements below with the GPU you plan to rent.

  • d1-3B is a 3.1B parameter multimodal decision model developed by LiquidAI for tasks like routing, classification, and visual inspection.
  • It processes text and images in a single forward pass to return calibrated answers without generating output tokens.
  • The model supports a context length of 32,768 tokens and handles languages including Arabic, Chinese, English, French, German, Hindi, Indonesian, and Italian.

Summary of the LiquidAI/d1-3B model card, 2026-10-09. The estimate below is for another build of the family.

What it is

Released byLiquidAI
Released2026-10-05
Parameters3.1B
VRAM1.7 GB for the weights

What it runs on

Memory and cards for d1-3B-GGUF (GGUF)

1.7 GBweights, file size
651 MBruntime overhead, at least
32,768 tokenscontext max

How much memory each request adds isn't estimated yet for this architecture. The weights need at least the cards below, plus room for the context.

CardWeights alone
RTX 3060 12 GBfits
RTX 4060 Ti 16 GBfits
RTX 3090 24 GBfits
RTX 4090 24 GBfits
RTX 5090 32 GBfits
L40S 48 GBfits
A100 80 GBfits
H100 80 GBfits
RTX PRO 6000 Blackwell 96 GBfits
DGX Spark (GB10) 128 GB unifiedfits
H200 141 GBfits
B200 180 GBfits

Builds

Sizes, precisions & builds

BuildParamsPrecisionWeightsSmallest setup
d1-3B ↗ 3.1BBF16 6.2 GBRTX 3060 12 GB
d1-3B-GGUF (above) ↗
4 builds: Q4_K_M 1.7 GB … F16 5.4 GB
GGUF 1.7 GBRTX 3060 12 GB
d1-2B ↗ 1.9BBF16 3.8 GBRTX 3060 12 GB

From the model card

What LiquidAI says about d1

Read the model card

src="https://cdn-uploads.huggingface.co/production/uploads/61b8e2ba285851687028d395/2b08LKpev0DNEk6DlnWkY.png" alt="Liquid AI" style="width: 100%; max-width: 100%; height: auto; display: inline-block; margin-bottom: 0.5em; margin-top: 0.5em;" />

d1-3B

d1-3B is a 3B parameter decision model built on LFM2.5-VL-3B. You give it a state (text, JSON, images, or a mix) and a set of questions. It returns calibrated, typed answers in one forward pass with zero output tokens.

  • Best decision model under 10B on the Decision Index 0.2.1: 48.57, ahead of every 4B and 9B model and of Decider 35B-A3B (47.11).
  • Multimodal: images and text in the same state. It scores 74.1 on 11 public image benchmarks (LFM2.5-VL-3B: 73.9).
  • Fast: 8 ms a decision on an NVIDIA RTX 4090, 9 ms on an AMD MI325X, 30 ms on an Apple M5 Pro.

Find more information about open d1 in our blog post.

[!NOTE] 💻 Demos: Try d1-3B in a Hugging Face space without any setup: Open d1 Arcade: Collection of 10 demos using d1-3B

🗒️ Model Details

ModelParametersDescription
LFM2.5-VL-3B3.1BGeneral-purpose vision-language model (base)
d1-3B3.1BPost-trained for single-pass, calibrated decisions

d1-3B is a multimodal decision model with the following features:

  • Total parameters: 3.12B
  • Vision encoder: SigLIP2 NaFlex shape-optimized 400M
  • Context length: 32,768 tokens
  • Vocabulary size: 128,000

We recommend d1-3B wherever a pipeline needs a yes/no, a pick from named options, or a rating: routing and triage, moderation, intent and topic classification, extraction checks, reranking, LLM-as-a-judge scoring, agent guardrails, and visual inspection. It is not a chat model and does not write text.

🏃 How to use

Install the dependencies (requires transformers>=5.14):

pip install "transformers>=5.14" torch torchvision pillow

The model ships its own code, so load it with trust_remote_code=True:

import torch
from transformers import AutoModel
from transformers.image_utils import load_image

device = "cuda" if torch.cuda.is_available() else "mps" if torch.backends.mps.is_available() else "cpu"
dtype = torch.float32 if device == "cpu" else torch.bfloat16
model = AutoModel.from_pretrained("LiquidAI/d1-3B", trust_remote_code=True, dtype=dtype).to(device)

# Text: several named questions over one state, answered in one pass
questions = {
    "refund": {
        "type": "noul",
        "instructions": "Is the customer asking for a refund?",
    },
    "team": {
        "type": "choice",
        "instructions": "Which team should handle this?",
        "criteria": {
            "billing": "Charges, refunds, invoices",
            "technical": "App or site faults",
            "fraud": "Suspected unauthorised use",
        },
    },
    "urgency": {
        "type": "score",
        "instructions": "How urgent is this?",
        "criteria": ["Can wait", "Today", "Blocking the customer now"],
    },
}
print(model.system_one("I was charged twice this month, please refund one of them.", questions))

# Image: the photo is the whole state
image = load_image("http://images.cocodataset.org/val2017/000000039769.jpg")  # two cats on a sofa
cats = {
    "type": "choice",
    "instructions": "How many cats are there?",
    "criteria": {"one": "One", "two": "Two", "more": "Three or more"},
}
print(model.system_one(None, {"cats": cats}, images=[image]))

# Batch: many requests, packed together with no padding
tickets = ["Where is my parcel? It was due Monday.", "The app crashes when I open settings."]
print(model.system_one_batch([(t, {"team": questions["team"]}) for t in tickets]))
call
system_one(state, questions, images=None)Named questions over one state, in one pass. The state and its images are read once for all questions.
system_one_batch([(state, questions[, images]), ...])Many requests, packed with no padding.

A state is a string, any JSON value, or None when the images are the whole state.

Questions and answers

Questions follow the Decision Index schema: type, instructions, and criteria.

typecriteriaanswer fields
noul: yes or nooptional: {"true": "...", "false": "..."} to define each sidenoul: P(yes)
choice: one of named options{name: description}choice, confidence, probabilities
score: 2 to 10 ordered levelsa list of level descriptions, lowest firstscore (the expected level), confidence, probabilities, legend

Each call returns {"answers": {name: answer}, "usage": {"input_tokens": n, "output_tokens": 0}}.

⚡ Speed

Warm calls, one request at a time: a single question, three questions over one state, a 3.4k-token state and a 384 px image. The last column is throughput with 64 states packed into one pass.

Edge Inference

We measure latency on an Apple M5 Pro and, in collaboration with NVIDIA, on an NVIDIA Jetson AGX Thor, a Jetson AGX Orin 64 GB and a Jetson Orin Nano.

one question3 questions, one pass3.4k-token state384 px image64 states, packed
Apple M5 Pro (mps)30 ms41 ms640 ms62 ms78 / s
NVIDIA Jetson AGX Thor16 ms20 ms220 ms35 ms262 / s
NVIDIA Jetson AGX Orin 64 GB26 ms35 ms560 ms83 ms110 / s
NVIDIA Jetson Orin Nano50 ms73 ms1640 ms202 ms38 / s

GPU Inference

We measure latency on an NVIDIA RTX 4090 and an AMD MI325X, in bf16, median of 20 runs.

one question3 questions, one pass3.4k-token state384 px image64 states, packed
NVIDIA RTX 40908 ms

Quoted from the model card on Hugging Face. The full card is behind the Hugging Face link above.

© 2026 AxForge · EU-hosted AI infrastructure Pricing Docs Trust Privacy Terms