sthanika-ai/Sieve-Vision-4B

Source: 🤗visual-question-answeringapache-2.04.5B params9.1 GBsafetensors✓ 4 checksumsupdated 6d ago
or submit a torrent

Sieve-Vision-4B

Sieve-Vision-4B is the first vision model of the Sieve family. You give it one or more images and a multiple-choice question, and it returns a calibrated probability for every option. It reads the images and the question once, scores the options directly, and never generates text.

It is a full fine-tune of Qwen/Qwen3.5-4B-Base (revision 1001bb4d) with a small decision head. The inference code is in this repository (sieve_vision/), including an engine for the Decision Index kit.

Summary

Backbone Qwen/Qwen3.5-4B-Base (revision 1001bb4d), 4.66B parameters
Trained weights full fine-tune of the 32 text decoder layers (3.57B parameters) and a new 1.57M-parameter decision head; the vision encoder, vision-text merger and token embeddings are the backbone's, unchanged
Question type choice: any number of options, 1 or more images
Decision Index (vision) public vision index 64.95 on our own run of the 0.3 public vision suite; not on the leaderboard yet
Images native resolution up to 1,638,400 px (1.6 MP) per image, the board's cap
Temperature one global T = 1.817, fitted on our own held-out dev split
Latency 778 ms median, 781 ms p80 per request at 4 images × 1.6 MP (worst case), one A100 80GB, batch 1
GPU memory 9.3 GB of weights in bf16, plus activations

How it works

  • Backbone. Qwen3.5-4B-Base: a 24-layer vision encoder (16-px patches, 2×2 merge, so one token per 32×32 px) feeding a 32-layer text model (24 Gated DeltaNet layers and 8 full-attention layers).
  • Prompt. Image k: <image tokens> for every image, then Question: and the question, then Options: with one line per option, - <key>: <option text>, then Answer:.
  • Readout. The decision head reads the hidden state at Answer: and the mean hidden state of each option's own tokens. It scores each option with a bilinear term plus the backbone's own next-token logit for the option's key, scaled by a learned weight (0.985 after training). A logit cap and a calibrated softmax give the probabilities.
  • One pass. One forward pass per question; nothing is generated, and the options are scored in the order given.

Use

pip install "torch>=2.8" "transformers>=5.16" safetensors pillow huggingface_hub
pip install flash-linear-attention   # recommended: fused kernels for the Gated DeltaNet layers (our runs used 0.5.2)
import sys
from huggingface_hub import snapshot_download

path = snapshot_download("sthanika-ai/Sieve-Vision-4B")
sys.path.insert(0, path)
from sieve_vision import SieveVisionEngine

engine = SieveVisionEngine(model=path)          # or model="sthanika-ai/Sieve-Vision-4B"
response, _ = engine(
    {},                                          # state (optional text or JSON shown before the question)
    {"answer": {"type": "choice", "instructions": "Is the parcel in the photo damaged?",
                "criteria": {"A": "Yes, the box is torn or crushed", "B": "No, it looks intact"}}},
    images=["parcel.jpg"])
print(response["answers"]["answer"])  # {'type': 'choice', 'choice': 'A', 'probabilities': {'A': ..., 'B': ...}}
  • Images. Paths, data: URLs, raw base64 or bytes. Images above 1.6 MP are downscaled (LANCZOS, aspect kept); smaller ones are used at their own size.

  • Batching. engine.batch([{"state": ..., "questions": ..., "images": [...]}, ...]) answers many requests at once.

  • Decision Index.

    hf download sthanika-ai/Sieve-Vision-4B --local-dir Sieve-Vision-4B
    PYTHONPATH=Sieve-Vision-4B decision-index vision pipeline --dir work/vision \
        --engine sieve_vision_engine:SieveVisionEngine --option model=sthanika-ai/Sieve-Vision-4B \
        --out runs/Sieve-Vision-4B
    

Decision Index (vision)

Our own run of the complete public vision suite of the Decision Index 0.3 (12,210 requests, 11 benchmarks) with the official kit at f5a6e4f; the suite was rebuilt from the pinned sources and passes decision-index vision verify. The kit's scorer gives a chance-corrected skill per benchmark (0 = random guessing, 100 = perfect) and the board's weights (R-Bench-M 0.5, MMMU-Pro vision 0.25, the rest 1). Files: sthanika-ai/Sieve-Vision-4B-decision-index-results.

benchmark rows accuracy skill (×100)
CV-Bench 2,038 81.94% 70.21
BLINK 961 68.78% 51.67
RealWorldQA 589 75.38% 59.77
CharXiv 532 72.18% 62.91
InfographicVQA 244 94.26% 92.35
Mind2Web 973 93.94% 91.92
Winoground 800 87.75% 75.50
KIE (CORD+FUNSD) 2,465 93.51% 89.31
Moderation (Hateful Memes) 1,213 61.09% 22.18
R-Bench-M (weight 0.5) 665 33.38% 20.05
MMMU-Pro vision (weight 0.25) 1,730 38.61% 29.59
public vision index 12,210 64.95

All 12,210 requests were answered: 0 unsupported, 0 errors. The leaderboard's Full score adds private tests of the same skills, which the maintainers run themselves.

Training

Stages A: decision head only, 300 steps (lr 5e-4). B: text decoder layers + head, 1,794 steps (2 epochs), tower lr 5e-6 (bottom 8 layers × 0.1), head lr 1e-4. C: head only, 200 steps (lr 1e-4)
Batch 128 questions per step, token-budget micro-batches, gradient checkpointing
Optimizer AdamW (0.9, 0.95), weight decay 0.01 on the tower, gradient clip 1.0, cosine schedule with 3% warm-up
Sampling category-balanced (probability ∝ n^0.5, no row above 3× its natural rate); options shuffled and re-lettered every time a question is drawn, except where the letters are drawn on the image
Selection the checkpoint with the best dev macro skill (chance-corrected, per category) on our own 5,795-question dev split; the public benchmarks were never used for selection
Hardware 2 × NVIDIA A100 80GB, FSDP2 for stage B, bf16 compute with fp32 master weights

Training data

114,822 training and 5,795 dev multiple-choice questions over 1 to 10 images, all from public datasets whose licences allow commercial use. Questions, answers and images come from the sources; the only conversion is into the multiple-choice format (yes/no items become two options; Mind2Web uses the board's own set-of-marks conversion on the train split; TextVQA and PlotQA distractors are other text or answers from the same image).

source train licence notes
SAT 28,994 MIT spatial, counting and multi-frame motion questions
Multimodal-Mind2Web (train split) 14,331 CC BY 4.0 (data), OpenRAIL (card) board's set-of-marks conversion; screenshots of third-party websites
ArxivQA 13,276 CC BY-SA 4.0 arXiv figures; the QA pairs were generated with GPT-4V (OpenAI terms apply to them)
ARO 15,230 MIT attribute, relation and word-order caption choice; Visual Genome and COCO images
VSR 6,898 CC BY 4.0 COCO 2017 images
A-OKVQA 5,701 Apache-2.0 COCO 2017 train images
TextVQA 5,794 CC BY 4.0 OpenImages images
PlotQA 5,789 CC BY 4.0
SugarCrepe 5,668 MIT COCO val2017 images
Mantis-Instruct (NLVR2, ImageCoDe) 4,348 Apache-2.0 multi-image
What'sUp 3,732 MIT
WebSRC 2,129 CC BY 4.0 web screenshots
ViRL39K 1,375 MIT
VisualWebBench 692 Apache-2.0
MapQA (via the_cauldron) 471 see the original release
PixMo-Docs 394 ODC-BY

Decontamination. Every training and dev image was compared with every image of the built public vision suite (exact SHA-256, and near-duplicate when pHash ≤ 4 and dHash ≤ 10), and question texts with the suite's question texts (13-gram overlap). The final check over all 119,000+ training and dev images flagged 11 near-duplicates and no exact match: 9 are blank or single-colour images, and 2 are real photos that appear in unrelated training questions (one Hateful Memes image, one Winoground image). Rescoring without the affected suite rows gives 64.94. The report is in the results dataset (reports/contamination_check.json).

Evaluation on our own held-out data

Test (1,142 questions, never used in training or selection) accuracy 89.8%, ECE 3.0% after temperature
Dev (5,795 questions, used for checkpoint selection) macro skill 79.2
Blank-image control (dev) accuracy drops from 87.9% to 62.0% when every image is replaced by grey: the model uses the images
Option order (dev) the same option is chosen 97.3% of the time when the options are reversed, 98.0% when shuffled

Limitations

  • Hateful content. No licence-compatible meme moderation data exists, so the model was not trained for it; its Hateful Memes skill is low (22.2). Do not use it for content moderation decisions.
  • Expert reasoning. College- and expert-level questions (R-Bench-M, MMMU-Pro) remain weak.
  • Choice only. It answers multiple-choice questions over images; it does not generate text or captions.
  • English. Trained on English questions only.
  • Third-party images. Several training sources use images whose copyright belongs to third parties (COCO, Visual Genome, web screenshots), under their datasets' terms.

Licence

Apache-2.0, as the backbone (Qwen/Qwen3.5-4B-Base); the LICENSE file is the backbone's. Training data licences are listed above.

Citation

@misc{sieve_vision_2026,
  title  = {Sieve-Vision-4B: a one-pass vision decision model},
  author = {Sthanika AI},
  year   = {2026},
  url    = {https://huggingface.co/sthanika-ai/Sieve-Vision-4B}
}