__                    
 __ / /___ _ ___  __ __ ___
/ // // _ `// _ \/ // /(_-<
\___/ \_,_//_//_/\_,_//___/

Janus 35B-A3B: calibrated typed decisions in one forward pass.

Janus is an independent reconstruction of a "System 1" decision model, built from public descriptions of the interface. Janus 35B-A3B is the largest model: give it a state (a ticket, a log, a policy, a JSON record) and any number of choice, score and noul (yes/no) questions. In one forward pass, it returns a calibrated probability for every option of every question, with no text generation. It is a LoRA adapter (r16) plus a pointer decision head on Qwen3.6-35B-A3B, a mixture-of-experts model with about 3B active parameters per token. It is served on NVIDIA's NVFP4 quantization of that model, nvidia/Qwen3.6-35B-A3B-NVFP4 at revision 1355db6a052410cfd62085d94b58866fd0f2c3c5. It is the most accurate Janus model on JevBench's public items. The state is encoded once however many questions ride on it, each question is answered independently, and a choice can have up to 255 options. It needs a 32 GB Blackwell GPU.

Code, server and Docker image: github.com/IcarusAICo/janus. Smaller models: Janus 4B and Janus 0.8B.

Questions choice (1 to 255 options), score (2 to 10 ordered levels, with the expected level), noul (p(true))
Input Up to 16,384 tokens in the Docker image (--max-tokens sets it); trained on requests up to 9,216
Wire format The POST /v1/systemone request and response shape; output tokens are always 0
Hardware A Blackwell GPU with compute capability 12.0 and 32 GB (RTX 5090, RTX PRO 4500 or 6000). The NVFP4 experts run through our fused W4A16 Triton kernel, which does not run on older cards such as the RTX 3090
Memory Peak on an RTX 5090: 22.7 GB with a 150-token or 1k state, 23.4 GB at 4k, 26.0 GB at 16k; a 128-question score request fits at 28.7 GB (measured 2026-09-21)

Results

Accuracy numbers are from 2026-09-24 on an RTX 5090, with the final serving code. The Janus 4B and 0.8B, JevK5 and Laya numbers in the table were measured on an RTX 3090 on the same items. Accuracy doesn't depend on the card, but the latency comparison below uses the same card for every system. Full tables and sources: release/RESULTS.md in the GitHub repository.

set metric Janus 35B-A3B Janus 4B JevK5 v0.2 Laya 0.3.11
JevBench public items, easy / standard / hard accuracy 1.000 / 0.986 / 0.784 1.000 / 0.972 / 0.712 1.000 / 0.972 / 0.730 0.958 / 0.694 / 0.333
JevBench public items, all 231 accuracy 0.892 0.853 0.861 0.576
JevBench public hard tier ECE 0.069 0.071 0.062 0.206
MASSIVE, 51 locales, official test split 20-way intent accuracy / ECE not measured 0.767 / 0.039 refused (16-option limit) 0.272 / 0.173
XNLI, 15 languages, official test split accuracy / ECE not measured 0.757 / 0.055 0.608 / 0.165 0.522 / 0.051

The JevBench rows are our runs of the 231 public items through JevBench's own runner. They are not an official JevBench score (the official v1.4 score also pools 308 sealed items). For scale, JevBench's own measurement of Jev 1.13.0 on the same 231 public items is 0.866. The serving-code update of 2026-09-24 changed 3 of this model's 231 predictions (median probability change 0.0007, largest 0.092).

Latency on an RTX 5090, median / p90 ms per request, warm, one request at a time, each system served by its own code, on the final serving code. This model's long-state p90 includes first-time captures of shapes that did not fit at start-up, and re-captures after a memory release.

request Janus 35B-A3B Janus 4B JevK5 v0.2 Laya 0.3.11
1 short question (XNLI) 35.1 / 37.2 17.3 / 18.1 18.7 / 19.6 6.1 / 7.4
public-dataset test (1-2 questions) 50.9 / 79.1 27.9 / 55.7 40.3 / 117.8 9.1 / 14.8
1 question, long state (hard-tier v2) 48.5 / 236.7 27.0 / 161.6 32.6 / 247.0 9.1 / 13.9
8 questions, one long state 205.6 / 381.3 107.0 / 271.4 251.8 / 1,964.4 26.0 / 56.4

Use

pip install "janus @ git+https://github.com/IcarusAICo/janus"
import janus

m = janus.load("cmxu/janus-35b-a3b", device="cuda")   # downloads this repo and the NVFP4 backbone (about 22 GB)
response = m.predict(
    "Refunds need a receipt and a purchase within 30 days. The customer bought 12 days ago and has no receipt.",
    {"refund": {"type": "noul", "instructions": "Is a refund permitted under the policy?"},
     "route": {"type": "choice", "instructions": "Which team should handle this?",
               "criteria": {"billing": "Payments and refunds", "support": "Anything else"}}},
)
response["answers"]["refund"]["noul"]           # p(true)
response["answers"]["route"]["probabilities"]   # {"billing": ..., "support": ...}

m.predict_batch([request, ...]) scores many /v1/systemone bodies with shared forward passes. To serve over HTTP from a download of this repo:

python -m janus serve --checkpoint model.pt --calibration calibration.json --model-id janus-35b-a3b --device cuda

The repository's Dockerfile builds an offline container around a pinned revision of this repo. It hasn't yet been run with this model.

Files

file contents
model.pt trainable tensors only (LoRA + decision head), sha256 3ae2a3196dfc406a576950f62057c387de2dd3f6cf59e8a256adab7d2b8bc821; the backbone is fetched from nvidia/Qwen3.6-35B-A3B-NVFP4 at 1355db6a052410cfd62085d94b58866fd0f2c3c5
calibration.json global, per-family and per-option-count temperatures, bound to model.pt by its sha256
janus_config.json model id and pinned base model

The global temperature is 1.0437. A request whose group_id starts with family: gets that family's temperature. Calibrated families: adversarial, ambiguous, arena, badges, civil, delivery, evidence, helpsteer, judge_hard, long_policy, massive, multi_hop, ord, post, probability, quality, record_match, rel, retrieval, routing_hard, tabfact, temporal_numeric, tradeoff, trap, urgency, wikispeedia.

Training

  • Data. 53,224 requests (data/production-v4):

    • synthetic decision families, some generated by code and some written by GPT-5.6 Luna and reviewed by GPT-5.6 Terra (hard-tier policies, multi-step lookups, dates and numbers, probability, trade-offs, answer judging);
    • public datasets converted to typed requests (the datasets above);
    • Wikispeedia next-click decisions, scripted browser-action rows, long-context and many-option rows.

    No multilingual rows beyond MASSIVE's English split, and no distillation (gold targets). Rows are deduplicated by state and kept disjoint from evaluation states. The hard-tier generators reject any state sharing a 12-word sequence with a public JevBench item. The datasets and their licences are listed in the GitHub README.

  • Adapter. LoRA r16 on the attention and Gated DeltaNet projections (never the experts) plus the pointer head. It was trained in bf16 against the unquantised Qwen/Qwen3.6-35B-A3B at revision 995ad96eacd98c81ed38be0c5b274b04031597b0, then served on the NVFP4 experts. Loss: cross-entropy plus an option-order consistency term (weight 0.1).

  • Schedule. One epoch in two runs on one rented H200, 48 requests per step:

    • 827 steps (39,696 requests; backbone lr 2e-4, head lr 1e-3, 50 warm-up steps, cosine decay), stopped by its 6-hour time cap (6.08 h);
    • a second run of 282 steps over the 13,528 requests the first run had not reached (backbone lr 6.4e-5, head lr 3.2e-4, 10 warm-up steps, cosine decay; 1.96 h).
  • Selection. Step 282 of the second run, by the rule fixed before training: dev NLL plus the NLL on held-out requests from unseen families. JevBench items were never used for selection.

  • Calibration. Temperatures fitted after selection on held-out requests that share no state or group with training or selection data. We also tested refitting the global (fallback) temperature on hard-tier calibration rows only, as for Janus 4B. It was rejected because it made calibration much worse on our judge v2 set (ECE 0.047 to 0.119).

This model also served as the distillation teacher for Janus 0.8B.

License and credits

Code and adapter weights: Apache-2.0. The base model Qwen3.6-35B-A3B is by the Qwen team (Apache-2.0). Its NVFP4 quantization is by NVIDIA, under Apache-2.0 ("GOVERNING DOWNLOAD TERMS: Use of the model is governed by the Apache license 2.0"). The training datasets keep their own licences.

"Jev", "System One" and TypeSafe are names of TypeSafe AI's products, used here only to describe interface compatibility.

Downloads last month
21
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for cmxu/janus-35b-a3b

Adapter
(1)
this model

Datasets used to train cmxu/janus-35b-a3b