Xing-VL2.0-Decision

Xing-VL2.0-Decision is a 27B multimodal typed decision model. Given a state (text and up to four images), one question and 1 to 255 options, it returns a probability for every option in a single forward pass. It does not generate text, so it cannot be loaded with AutoModelForCausalLM.

Xing-VL2.0-Decision is the new name for the checkpoint listed before as RBDash-Decision-v0.2. Only the name changed: nothing was retrained, re-run or re-scored. The earlier checkpoint is at RBDash-Team/RBDash-Decision-v0.1.

Model details

Base model Qwen/Qwen3.8-27B
Architecture Qwen3.5 vision-language backbone
Output head 255-way linear readout (readout.safetensors) replacing the LM head
Attention Full-attention layers are non-causal; the linear-attention recurrence stays causal
Pooling Last token
Calibration One fitted temperature, 0.9766, stored in decision_config.json
Precision bfloat16
License Apache-2.0

The readout is initialised from the LM-head rows of 255 single-token answer codes (A to JT). The model reads the prompt once, takes the hidden state of the last token, and applies the readout:

probs = softmax(readout(hidden[-1])[:n_options] / T)

Training

  • Fine-tuned on static image-text decision data with three question types: multiple choice, yes/no and graded score.
  • Objective: soft-label cross-entropy over the 255 answer codes.
  • The vision tower was frozen.
  • Training images and the 12,210 public vision evaluation images were compared by exact byte hash and no match was found. Perceptual or semantic overlap was not checked.

Evaluation

Decision Index edition 0.3, public vision suite (11 benchmarks, 12,210 rows, one to four images per row): public vision index 77.78, with every row answered and no errors. Images were used at native resolution, capped at 1,638,400 pixels each.

This is the public half of the Vision board's score only. The board's Full score also includes private tests that are run by the maintainers, so the index above is not a leaderboard rank.

Usage

pip install -r requirements.txt
from rbdash_decision import RBDashDecision

model = RBDashDecision.from_pretrained("RBDash-Team/Xing-VL2.0-Decision")

# Multiple choice. List items become options A, B, C, ...
r = model.decide("How many organs are in the image?", ["3", "2", "1", "0"], images=["scan.jpg"])
print(r["choice"], r["probabilities"])

# Yes/no
r = model.decide("Is the meme hateful?", kind="noul", images=["meme.png"])
print(r["noul"])  # probability of "yes"

Command line:

python rbdash_decision.py --model . --question "How many organs?" \
  --option 3 --option 2 --option 1 --option 0 --image scan.jpg

The Python module and class keep their original names (rbdash_decision.py, RBDashDecision), and so does the engine slug (rbdash_decision_engine:RBDashEngine); only the model and repository names changed.

rbdash_decision.py depends only on torch, torchvision, transformers, safetensors, pillow and huggingface_hub. requirements.txt also installs flash-linear-attention (pure Python), which speeds up the linear-attention layers; the first run is slow while triton compiles its kernels. A GPU with about 60 GB free memory is needed for bfloat16.

causal-conv1d is optional and kept out of requirements.txt on purpose, because it can need a compiler. After the main install, run pip install --no-build-isolation -r requirements-optional.txt. It downloads a prebuilt wheel from GitHub Releases when one matches your CUDA, torch and Python versions (the v1.7.0 release covers torch 2.6 to 2.10); otherwise it compiles from source, which needs nvcc and takes several minutes. Without it the model still runs through a slower PyTorch path.

Reproduce the public vision evaluation

The Decision Index kit does not ship an engine for this model, so rbdash_decision_engine.py in this repository plugs it in. The prompt is part of the trained model: keep rbdash_decision.py unchanged, because other wording can change individual predictions.

# 1. Get the model and the kit
hf download RBDash-Team/Xing-VL2.0-Decision --local-dir Xing-VL2.0-Decision
git clone https://github.com/apolinario/decision-index && cd decision-index
pip install -e '.[vision]'
pip install -r ../Xing-VL2.0-Decision/requirements.txt

# 2. Build the public vision suite (about 5.7 GB of downloads; Winoground is gated, accept its terms first)
hf auth login
decision-index suite rebuild --vision --work work
decision-index vision verify --dir work/vision

# 3. Run and score it (one GPU with about 60 GB free)
PYTHONPATH=../Xing-VL2.0-Decision decision-index vision pipeline --dir work/vision \
  --engine rbdash_decision_engine:RBDashEngine \
  --option checkpoint=../Xing-VL2.0-Decision \
  --out runs/vision-rbdash-decision-v0.2

The run checkpoints to runs/vision-rbdash-decision-v0.2/results.jsonl and resumes if interrupted; add --limit 50 for a quick trial. When it finishes, vision-scores.json in the same directory reports the public vision index, and complete must be true. A --limit run scores only the rows it ran, so it reports complete: false and an index near zero; that is expected.

The engine handles one request at a time on one GPU (the kit's default of 8 worker threads is serialised inside the engine). flash-linear-attention comes with requirements.txt and causal-conv1d with requirements-optional.txt; without them the model runs through slower PyTorch fallbacks. Triton compiles its kernels on first use, so the first minutes of a run with flash-linear-attention are slow.

Limitations

  • One to four images per request, up to 255 options. Nothing is truncated: inputs over 32,768 tokens raise an error.
  • Images above 1,638,400 pixels are resized with LANCZOS and re-encoded (JPEG quality 95, or PNG for PNG input) before use, which matches how the reported score was produced.
  • Probabilities use one temperature fitted on 100 rows. Do not treat them as reliable outside the training distribution.
  • This is a classifier over supplied options. It cannot produce free-form answers.

Citation

@misc{xingvldecision_2026,
  title        = {{Xing-VL2.0-Decision}: A Multimodal Typed Decision Model},
  author       = {{Xing-VL2.0-Decision Team}},
  year         = {2026},
  howpublished = {\url{https://huggingface.co/RBDash-Team/Xing-VL2.0-Decision}}
}

License

Released under the Apache License, Version 2.0; the full text is in LICENSE.

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

Model tree for RBDash-Team/Xing-VL2.0-Decision

Base model

Qwen/Qwen3.8-27B
Finetuned
(750)
this model
Quantizations
2 models

Collection including RBDash-Team/Xing-VL2.0-Decision