Affine SN120 — cand2
A calibration fine-tune of the Affine SN120 reign-11 king
(0ce59769300c234203dcaa786e50f3a23b564bb65e83db0a711a7a43c7951952), merged
and servable as-is. Architecture is unchanged from the base
(Qwen3_5MoeForCausalLM, 40 layers, hidden 2048).
This is storage and sharing only. Since the 2026-09-03 cutover, Hugging Face is not the Affine submission path — submission goes through the private R2 flow.
What it is for
Affine scores a turn as min(R, G):
- R (centered tempered Reason) — does the thought commit to one specific
teacher action mode,
R = tau*log(mean_i exp(a_i/tau)) - mean_i a_iwitha_i = lpC(y_i|z) - lpC(y_i|empty).R >= 0by Jensen. - G (banded Grounding) — does the thought's teacher likelihood sit inside
the band the task induces,
G = w - |m - mu|,w = max(band_c*sd, 0.002). - A turn with no parseable action, or no closed
</think>, scores a flat -0.1 forfeit.
The training targets are teacher rollouts generated locally: 8 samples per
turn, each verified to parse in the turn's dialect, close </think>, and fit
the token caps, with the most band-typical candidate selected.
Measured results
Offline replay of published duel slices using the validator's own scoring
code (affine/score.py), against the reigning king:
| slice | rules | margin | SE | z | cand forfeit | king forfeit |
|---|---|---|---|---|---|---|
| chal-00427 | wvk 16 (band_c=2) |
-0.000205 | 0.000717 | -0.29 | 2.22% | 2.85% |
| chal-00427 | wvk 17 (band_c=4, ref_max_tokens=4096) |
+0.000479 | 0.000660 | +0.73 | 2.65% | 3.27% |
Under wvk 17 the model scores +0.000329 absolute against the king's
-0.000151, and every action dialect is positive (bash +0.000052, tool_call
+0.000879, boxed +0.000691, text +0.005636). It does not clear the crown
floor of delta = 0.002.
Protocol probe: 10/10, think_close_rate = 1.0.
Honest framing of where the gain comes from: the advantage is the forfeit rate, not the legs. Mean R is 0.009585 against the king's 0.010014 and mean G is 0.071863 against 0.072871 — this model has never led on either leg. Under wvk 17's wider band, G binds only ~18% of turns and R decides the rest, so the remaining headroom is in R and in forfeit elimination.
Training
| base | reign-11 king (0ce59769...951952) |
| method | LoRA, r=32, alpha=64, dropout 0.0, merged |
| context | 4096 tokens |
| lr | 1e-4 |
| examples | 20,000 |
| data | locally generated teacher rollouts, 8 samples/turn, most-typical pick |
Use
from transformers import AutoModelForCausalLM, AutoTokenizer
tok = AutoTokenizer.from_pretrained("RLTT/Affine-sn120-cand2")
model = AutoModelForCausalLM.from_pretrained(
"RLTT/Affine-sn120-cand2", dtype="bfloat16", device_map="auto")
Served the way the eval pod serves it:
vllm serve RLTT/Affine-sn120-cand2 \
--max-model-len 131072 --tensor-parallel-size 2 \
--gpu-memory-utilization 0.8 --max-num-batched-tokens 8192
The chat contract matters: the model is driven via /v1/completions through
its own chat template, and a reply must close </think> and carry visible
output after it, or the turn forfeits.
- Downloads last month
- 2
Model tree for RLTT/Affine-sn120-cand2
Base model
Qwen/Qwen3.6-35B-A3B