jev-vlm-4b — a calibrated visual decision model (best calibration)

A Jev-style System One model for images: it answers typed questions (choice / noul / score) about a state that may contain document pages, receipts, charts, or annotated screenshots — in a single prefill per state, no token generation — returning calibrated probability distributions.

Built on Kev's pointer-head architecture, extended to vision on Qwen/Qwen3.5-4B-Base. This is the best-calibrated variant (transformers, trust_remote_code). For a portable single GGUF (llama.cpp / LM Studio) that carries the same calibration via distillation, see the sibling sidman007/jev-vlm-4b-lite-gguf.

Open weights under Apache-2.0 — free for commercial and non-commercial use. (Training code and data are not part of this release.)

Quick start (transformers, trust_remote_code)

import torch
from transformers import AutoModel, AutoProcessor

model = AutoModel.from_pretrained("sidman007/jev-vlm-4b", trust_remote_code=True,
                                  dtype=torch.bfloat16, device_map="cuda")
processor = AutoProcessor.from_pretrained("sidman007/jev-vlm-4b")

answers = model.decide(
    processor,
    images=["invoice.png"],                       # paths or PIL.Image; omit for text-only states
    state="See the attached invoice.",
    questions={
        "total":   {"type": "choice", "instructions": "Which value is the total?",
                    "criteria": {"a": "240.00", "b": "12.00", "none": "Not shown"}},
        "overdue": {"type": "noul",   "instructions": "Is this invoice past due as of 2026-01-01?"},
        "quality": {"type": "score",  "instructions": "How complete is this invoice?",
                    "criteria": ["missing key fields", "partial", "complete"]},
    })
# answers["total"]  -> {"choice": "a", "confidence": 0.98, "probabilities": {...}}
# answers["overdue"]-> {"probability": 0.07}
# answers["quality"]-> {"score": 1.83, "probabilities": {...}}

Every question is answered in one forward pass over the state — 20 questions about one document cost one image prefill plus 20 short text rows, not 20 generations. A low confidence / flat distribution is the model abstaining, not guessing.

Alternative loading (kev-style): base checkpoint + adapter/ (PEFT LoRA) + head.pt, driven by the repo's jevvlm.pointer.vision.VisionDecisionModel.

Benchmarks

benchmark metric score
In-domain locked test (n=4,987, held-out; calibrated) acc / ECE / cov@5%-err 0.9519 / 0.013 / 1.00
confident-error rate 0.0036
AI2D diagram-MCQA leaderboard (n=3,000)* accuracy 0.835

Probabilities are post-hoc temperature-calibrated (T≈0.54) on a dev split; out-of-distribution inputs produce coverage collapse (abstention) rather than confident errors. *AI2D measured on the distilled GGUF sibling (constrained letter readout); the pointer model is the better-calibrated teacher it was distilled from. It's a comparable data point, not a like-for-like leaderboard submission — the model is document/chart-specialized.

Downloads last month
33
Safetensors
Model size
5B params
Tensor type
BF16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for sidman007/jev-vlm-4b

Finetuned
(202)
this model