qwen3-0.6b-rlcd
A 0.6B option-scoring model. You send a state and one or more typed questions, each with
its own options and criteria. For every question it returns a calibrated probability over
your options, plus a separate confidence that the answer is among them at all. One
forward pass, no generated tokens, runs on a CPU.
- Independent questions: a block-diagonal mask keeps each question from attending to the others, so adding or removing a question never changes the rest.
- Only your options: each option is scored from its own hidden state; the softmax covers your options and nothing else.
- Criteria are read: option keys are arbitrary identifiers; the criteria text carries the meaning.
- Proper-scoring training: cross-entropy against observed outcome frequencies (soft targets where they exist). No RL, despite the family name RLCD.
Quick start
pip install torch transformers
from transformers import AutoModel
model = AutoModel.from_pretrained("thefloydd/qwen3-0.6b-rlcd",
trust_remote_code=True).eval()
response = model.score(
state={"channel": "email",
"subject": "Deploy failing since 4.2.1",
"body": "Since upgrading to 4.2.1 our nightly deploy fails at the migration "
"step with 'relation users_pkey already exists'. Rolling back to "
"4.2.0 fixes it. We have 200 seats and this blocks our release on "
"Friday.",
"plan": "enterprise"},
questions={
"kind": {
"type": "choice",
"instructions": "What kind of request is this?",
"criteria": {"bug": "Reports something that is broken",
"question": "Asks how to do something",
"feature": "Requests new functionality",
"billing": "About payment or invoices"}},
"needs_engineer": {
"type": "noul",
"instructions": "Does resolving this require someone who can read the codebase?",
"criteria": {"true": "Requires engineering investigation",
"false": "A support agent can resolve it from documentation"}},
},
)
kind = response["answers"]["kind"]
print({k: round(v, 3) for k, v in kind["probabilities"].items()}, round(kind["confidence"], 3))
# {'bug': 0.465, 'question': 0.497, 'feature': 0.032, 'billing': 0.005} 0.718
print(round(response["answers"]["needs_engineer"]["noul"], 3))
# 0.686
Use the whole distribution: here question and bug are close, so the top choice alone
is not a safe answer.
Interface
| question type | asks | returns |
|---|---|---|
choice | which option is correct | choice, probabilities, confidence |
noul | whether a statement is true | noul (a probability) |
score | a position on a 2–10 point scale | score, probabilities, confidence |
- The model never sees the question id; put the full question in
instructions. - Up to 255 options per
choicequestion. - Requests up to 8,192 tokens (state plus all questions). Longer requests are refused, not truncated; split them — questions are independent, so the answers are the same.
- fp32 by default;
dtype=torch.bfloat16halves memory and moves the example slightly (bug0.455,question0.508).model.to("cuda")for GPU. config.jsonsets temperature 1.0 andconfidence_mode: head;score()applies both.
Evaluation
Internal held-out split: 329 task schemas and 79,396 questions the model never trained on, split by whole task (and by whole structure for generated tasks). 95 % bootstrap CIs.
| accuracy | NLL | ECE | |
|---|---|---|---|
| all questions | 0.783 [0.780, 0.785] | 0.656 [0.645, 0.667] | 0.031 [0.029, 0.033] |
| mean over tasks | 0.642 [0.612, 0.672] | 1.093 [0.996, 1.194] | — |
| labels from people or real systems (33k) | 0.696 | 0.910 | 0.047 |
| labels computed by code (46k) | 0.844 | 0.475 | 0.023 |
- Selective prediction: 4.9 % of answers given with p ≥ 0.9 are wrong; that covers 53 %
of questions. The
confidencehead ranks errors better than max probability (AURC 0.064 vs 0.077 on the dev split). - Rule application: 0.973 on trained rule combinations, 0.945 on held-out ones.
- Abstention: mean
confidence0.96 when the record states the claim, 0.21 when it does not mention it. - Previous release, same questions: accuracy 0.516, NLL 1.152, 13.3 % wrong at p ≥ 0.9.
Limitations
- Strongest on structured decisions (rules, records, pages, diffs, policies: 0.90–1.00). Plain text classification is 0.54, and NLI, reasoning puzzles, logs, scheduling and multi-hop questions are 0.42–0.59.
- Calibration varies by domain: ECE is 0.12–0.15 on reasoning, security triage, multi-hop and document structure, and 0.33 on log lines.
- It cannot answer off-list. If the right answer is missing, only
confidenceis meaningful. - Trained on states up to 2,304 tokens; longer inputs are unmeasured.
- English only.
Training
Qwen/Qwen3-0.6B-Base with LoRA (r 32, alpha 64, dropout 0.05), merged. 8,000 steps,
batch 32, lr 2e-4, cosine; checkpoint chosen by out-of-distribution dev NLL. The
confidence head is trained afterwards against the frozen scoring model.
Data: ~507k questions over 2,456 tasks in 20 domains — published label schemas, rater-share affect and safety labels, forecasts with published probabilities (GEFS, SPF, Manifold), claim verification (FEVER, VitaminC), NVD, GitHub issues, NLI, legal text, tables, document structure, logs, and code-labelled rules, pages, sensors, tool calls, entity resolution, diffs, scheduling and multi-hop records. The Decision Index benchmark is excluded (its datasets by name, and every state checked against its items). Source licences include Manifold (non-commercial AI training), LogHub (research use) and FEVER / VitaminC (CC BY-SA 3.0).
Citation
@software{qwen3_0_6b_rlcd_2026,
title = {qwen3-0.6b-rlcd: a prefill-only option-scoring model for calibrated decisions},
year = {2026},
note = {Qwen3-0.6B-Base + LoRA, block-diagonal question independence,
proper-scoring fine-tuning, separate confidence head}
}