Instructions to use Kingsoft-Office/wps-decision-1 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use Kingsoft-Office/wps-decision-1 with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("zero-shot-classification", model="Kingsoft-Office/wps-decision-1", trust_remote_code=True)# pip install -U transformers accelerate # Load model directly from transformers import AutoProcessor, AutoModel processor = AutoProcessor.from_pretrained("Kingsoft-Office/wps-decision-1", trust_remote_code=True) model = AutoModel.from_pretrained("Kingsoft-Office/wps-decision-1", trust_remote_code=True, device_map="auto") - Notebooks
- Google Colab
- Kaggle
wps-decision-1
wps-decision-1 is a fine-tuned decision model based on
vllm-sr/d3-flash.
Given a shared state and named questions, it returns probabilities for classification,
binary judgments and ordered ratings without generating text. Inputs may include text,
JSON, images and videos.
The architecture and inference interface are unchanged from d3-flash. The score validator is extended from 2–10 to 2–255 ordered levels; this uses the existing answer-code readout.
Model specifications
| Property | Value |
|---|---|
| Architecture | d3-flash: Qwen3.5-9B multimodal backbone + 255-code decision readout |
| Parameters | 8.394B, including the 0.456B vision encoder |
| Precision | BF16 backbone; FP32 decision readout and softmax |
| Backbone context configuration | 262,144 positions |
choice |
1–255 candidates |
score |
2–255 ordered levels |
noul |
Binary judgment |
| Inputs | Text / JSON, images and videos |
| License | Apache-2.0 |
Full-attention layers attend bidirectionally over the input; Gated DeltaNet layers retain
their causal scan. Each question has its own forward pass, with questions batched by the
runtime. Keep readout.safetensors, the tokenizer, chat template and decision_config.json
with the backbone weights. Loading the plain backbone alone does not implement decisions.
The context configuration is a position ceiling, not a guarantee that every input length
fits GPU memory. The supplied decision configuration has no additional input-length cap
(max_length: null); inputs are not silently truncated. Long inputs require additional memory.
Installation
Validated deployment hardware: one NVIDIA RTX 5090, Linux x86-64, with a CUDA 13.0-compatible driver. Key versions from the remote serving environment:
| Package | Version |
|---|---|
| vLLM | 0.32.1rc1.dev117+gdf3bd094a |
| PyTorch | 2.14.0+cu130 |
| Transformers | 5.17.0 |
| Triton | 3.8.0 |
| FlashInfer Python | 0.7.2 |
| CUDA toolkit package | 13.0.3.0 |
pip install --pre -r requirements.txt
requirements.txt uses the fixed upstream vLLM nightly wheel at commit
df3bd094aeea829f27baa0a5282830464f601d9f and the recorded key package versions.
Transformers inference
From the complete downloaded model directory:
from transformers import AutoModel
model = AutoModel.from_pretrained(
".", trust_remote_code=True, device_map="cuda:0"
)
result = model.system_one(
state="The customer received a damaged item and asks for a replacement.",
questions={
"team": {
"type": "choice",
"instructions": "Which team should handle this request?",
"criteria": {
"returns": "Damaged goods and replacements",
"billing": "Payments and charges",
"technical": "Setup and troubleshooting"
}
},
"replacement": {
"type": "noul",
"instructions": "Does the customer request a replacement?"
},
"urgency": {
"type": "score",
"instructions": "How urgent is the request?",
"criteria": ["Routine", "Soon", "Immediate"]
}
}
)
print(result["answers"])
Or run a saved request:
python inference.py --model . --request examples/request.json --device cuda:0
For an example above the upstream 10-level limit, use --request examples/score_11.json.
Use images=["document.png"] or videos=["clip.mp4"] with model.system_one(...)
to include media. The official runtime accepts local paths, HTTP(S) URLs and base64 data URLs;
images may also be PIL objects, and videos may be frame arrays. Every question sees the
same media. Images are processed at up to 1.6 MP each. Videos are sampled at 2 FPS, with
at most 32 frames and up to 0.2 MP per frame. See the
upstream usage guide for more examples.
vLLM deployment
CUDA_VISIBLE_DEVICES=0 vllm serve Kingsoft-Office/wps-decision-1 \
--served-model-name wps-decision-1 \
--host 0.0.0.0 --port 8000 \
--dtype bfloat16 --max-model-len 32768 \
--max-num-seqs 64 --max-num-queued-reqs 512 \
--gpu-memory-utilization 0.9
The service exposes /v1/systemone, /health and /v1/models.
curl -fsS http://127.0.0.1:8000/health
curl -fsS http://127.0.0.1:8000/v1/systemone \
-H 'Content-Type: application/json' --data-binary @examples/request.json
For media requests, provide images or videos as arrays of base64 data URLs or
URLs supported by vLLM's media loader. The Transformers API additionally accepts
local paths. The bundled Transformers runtime supports 2–255 score levels;
the unmodified vLLM API in this build accepts 2–10 levels.
Request and response format
A request contains state and a nonempty questions map. Each question includes type,
instructions and, where applicable, criteria:
| Type | criteria |
Answer |
|---|---|---|
choice |
Map of candidate names to descriptions or null |
choice, probabilities |
noul |
Omitted, or optional false / true descriptions |
noul = P(true) |
score |
Distinct nonempty descriptions, ordered low to high | Expected zero-based score, legend, probabilities |
Responses contain model, answers and usage. Choice and score answers include
probabilities and confidence (one minus normalized Shannon entropy, as in d3-flash).
Noul answers provide P(true) as noul; P(false) is its complement.
Choice and score probabilities sum to one over the available options. For score questions,
{"0": 0.2, "1": 0.5, "2": 0.3} gives an expected score of 1.1.
Evaluate a dataset
Use any System One-compatible benchmark client, or the included resumable JSONL client:
python client.py --input examples/requests.jsonl --output /tmp/predictions.jsonl \
--url http://127.0.0.1:8000/v1/systemone --model wps-decision-1 --concurrency 1
Each row contains state and questions, with an optional unique id. Gold labels stay
local. Optional images and videos fields are forwarded to the server.
Use your benchmark's own scorer on the returned answers. vLLM schedules concurrent requests.
d3_engine.py is also included for the upstream Decision Index engine interface; its
benchmark toolkit is installed separately. File hashes are listed in MODEL_MANIFEST.json and SHA256SUMS.
See LICENSE and NOTICE for upstream attribution.
- Downloads last month
- 28