Instructions to use sthanika-ai/Sieve-Vision-4B with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use sthanika-ai/Sieve-Vision-4B with Transformers:
# Use a pipeline as a high-level helper # Warning: Pipeline type "visual-question-answering" is no longer supported in transformers v5. # You must load the model directly (see below) or downgrade to v4.x with: # pip install "transformers<5.0.0" from transformers import pipeline pipe = pipeline("visual-question-answering", model="sthanika-ai/Sieve-Vision-4B")# pip install -U transformers accelerate # Load model directly from transformers import AutoProcessor, AutoModel processor = AutoProcessor.from_pretrained("sthanika-ai/Sieve-Vision-4B") model = AutoModel.from_pretrained("sthanika-ai/Sieve-Vision-4B", device_map="auto") - Notebooks
- Google Colab
- Kaggle
Sieve-Vision-4B
Sieve-Vision-4B is a vision decision model from the Sieve-Vision collection. 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 decision head. The inference code is in this repository (sieve_vision/).
Summary
| Backbone | Qwen/Qwen3.5-4B-Base (revision 1001bb4d) |
| Design | decision head |
| Trained weights | full fine-tune of the text model (32 decoder layers), and a decision head |
| Question type | choice, over one or more images |
| Decision Index (vision) | Full score 58.60 and public score 65.17 on the vision leaderboard (edition 0.4); public vision index 64.95 on our own run of the public vision suite (edition 0.3) |
| Images | native resolution up to 1.6 MP (1,638,400 px) per image |
| Temperature | T = 1.817 |
| GPU memory | about 9.3 GB of weights in bf16, plus activations |
| License | Apache-2.0 |
How it works
- Backbone. Qwen3.5-4B-Base's vision encoder and text model. The vision encoder is unchanged; the model cannot produce text.
- Readout. A decision head reads the hidden states at the decision point and of each option, and scores each option. A calibrated softmax gives the probabilities.
- One pass. One forward pass per question, with the options in the order given.
| type | options | returns |
|---|---|---|
choice |
the caller's keys with their texts, any number, over one or more images | a probability per key |
Use
pip install "torch>=2.8" "transformers>=5.16" safetensors pillow huggingface_hub
pip install flash-linear-attention # recommended: the fused kernels 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)
response, _ = engine(
{},
{"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': ...}}
Loading.
SieveVisionEngine(model=...)takes a Hub id (optionallyrepo@revision) or a local folder.GPU memory. About 9.3 GB of weights in bf16, plus activations.
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. Any number of images and options; nothing is truncated.Batching.
engine.batch([{"state": ..., "questions": ..., "images": [...]}, ...]);batch_tokens(default 32,000) sets the padded-token budget of one batch.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-4Bflash-linear-attention. Without it, transformers falls back to slower PyTorch kernels, whose probabilities can differ slightly. Install it to reproduce our numbers.
Temperature.
decision_config.jsonstores T = 1.817, fitted on our own held-out data. T never changes an answer.
Results
Decision Index
Our own run of the public vision suite of the Decision Index,
with the official kit at f5a6e4f (edition 0.3) and its scorer, gives a public vision index of 64.95.
- Coverage. All 12,210 requests over 11 benchmarks were answered, with no unsupported request and no error.
- How the run was made. One complete run on one A100 80GB PCIe GPU, on a suite rebuilt from the pinned sources
that passes
decision-index vision verify. - Results. sthanika-ai/Sieve-Vision-4B-decision-index-results.
- Leaderboard. On the Decision Index vision leaderboard (edition 0.4, board data of 2026-10-26), Sieve-Vision-4B has a Full score of 58.60 and a public score of 65.17. The vision board's Full score is half the public vision suite and half the maintainers' private vision tests of the same skills.
The index is chance-corrected: 0 is random guessing and 100 is perfect.
Latency
- Worst case. Four images of 1.6 MP each (6,489 input tokens), one request at a time, in-process wall time (A100 80GB PCIe, bf16): median 778 ms, mean 779 ms, 80th percentile 781 ms. This is not the maintainers' RTX PRO 6000 measurement.
Training
- Recipe.
- Full fine-tune of the 32 text decoder layers, with the decision head trained from scratch. The vision encoder, the vision-text merger and the token embeddings are frozen.
- The head is trained first on its own, then together with the text model, then once more on its own.
- AdamW, lr 5e-4 for the head on its own, then 5e-6 for the text model and 1e-4 for the head; cosine schedule with 3% warm-up, 128 questions per step, bf16 compute with fp32 master weights.
- Two A100 80GB PCIe GPUs (FSDP2).
- Options shuffled and re-lettered every time a question is drawn, with a cross-entropy loss.
- Selection. The checkpoint with the best score on our own held-out data. The benchmarks were never used for training or selection.
- Data.
- Sources. Public datasets, converted to multiple-choice questions over images. Every training image was checked against the images of the public vision suite, and question texts against its question texts; no exact duplicate image was found.
- Not published. The training files are not part of this release; their SHA-256 is in
decision_config.json.
Files
| file | contents |
|---|---|
model-*.safetensors, model.safetensors.index.json, config.json |
the model weights (bf16) |
head.safetensors |
the decision head |
decision_config.json |
the head's settings, the calibrated temperature, the base revision and library versions |
processor_config.json, tokenizer.json, tokenizer_config.json, chat_template.jinja |
Qwen3.5-4B-Base's processor and tokenizer, unchanged |
sieve_vision/, sieve_vision_engine.py |
the inference code and the Decision Index engine |
LICENSE, NOTICE |
the Apache-2.0 licence and the data notices |
License
Apache-2.0, see LICENSE, as the backbone. Data notices are in NOTICE.
- Downloads last month
- 51
Model tree for sthanika-ai/Sieve-Vision-4B
Base model
Qwen/Qwen3.5-4B-BaseCollection including sthanika-ai/Sieve-Vision-4B
Evaluation results
- Decision Index 0.4, vision Full score (leaderboard) on Decision Index 0.4 vision leaderboard (public vision suite and the maintainers' private vision tests)self-reported58.600
- Decision Index 0.4, public vision score (leaderboard) on Decision Index 0.4 vision leaderboard (public vision suite and the maintainers' private vision tests)self-reported65.170
- Decision Index 0.3, public vision index (chance-corrected; our own run) on Decision Index 0.3 public vision suite (12,210 requests, 11 benchmarks)self-reported64.950