Instructions to use RBDash-Team/Xing-VL2.0-Decision with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use RBDash-Team/Xing-VL2.0-Decision with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("image-text-to-text", model="RBDash-Team/Xing-VL2.0-Decision") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] pipe(text=messages)# pip install -U transformers accelerate # Load model directly from transformers import AutoProcessor, AutoModelForMultimodalLM processor = AutoProcessor.from_pretrained("RBDash-Team/Xing-VL2.0-Decision") model = AutoModelForMultimodalLM.from_pretrained("RBDash-Team/Xing-VL2.0-Decision", device_map="auto") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] inputs = processor.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=256) print(processor.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use RBDash-Team/Xing-VL2.0-Decision with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "RBDash-Team/Xing-VL2.0-Decision" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "RBDash-Team/Xing-VL2.0-Decision", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker
docker model run hf.co/RBDash-Team/Xing-VL2.0-Decision
- SGLang
How to use RBDash-Team/Xing-VL2.0-Decision with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "RBDash-Team/Xing-VL2.0-Decision" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "RBDash-Team/Xing-VL2.0-Decision", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "RBDash-Team/Xing-VL2.0-Decision" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "RBDash-Team/Xing-VL2.0-Decision", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }' - Docker Model Runner
How to use RBDash-Team/Xing-VL2.0-Decision with Docker Model Runner:
docker model run hf.co/RBDash-Team/Xing-VL2.0-Decision
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