Behaviour changes vs. the base model
- Game Master voice: second-person narration, scene beats that end by handing control back to the player.
- Much shorter roleplay turns (~60% fewer characters per reply in our roleplay suite) and very brief reasoning.
- Fewer soft refusals / cut-aways in dark roleplay scenes (violence, villain cruelty); commits to crude personas.
- Outside roleplay, refusal behaviour on directly harmful requests appears unchanged (preliminary — see below).
Evaluation (lm-evaluation-harness 0.4.12, vLLM 0.31, 2x B200, identical settings for base and this model)
Table with columns: Task, Base NVFP4, This model, Δ| Task | Base NVFP4 | This model | Δ |
|---|
| MMLU-Pro (500/subject, CoT, exact match) | 0.758 | 0.736 | −2.2 |
| GSM8K-CoT strict / flexible | 0.851 / 0.870 | 0.853 / 0.870 | ±0.1 |
| IFEval prompt-strict / inst-loose | 0.386 / 0.415 | 0.514 / 0.529 | +12.8 / +11.4 |
| ARC-Challenge acc_norm (0-shot) | 0.709 | 0.704 | −0.5 |
| HellaSwag acc_norm (0-shot) | 0.859 | 0.854 | −0.5 |
| Winogrande (0-shot) | 0.760 | 0.774 | +1.4 |
| TruthfulQA mc2 (0-shot) | 0.575 | 0.573 | −0.2 |
Notes: generative tasks ran with the default (full) thinking and lm-eval's default generation limit, which truncates
long base-model reasoning — absolute IFEval/GSM8K/MMLU-Pro numbers are below published values for this reason, and the
IFEval gain mostly reflects this model's shorter reasoning rather than better instruction following. Loglikelihood
tasks match published base numbers and are unchanged within noise: no measurable loss of knowledge/commonsense.
Refusal benchmark (roleplay suite of 102 escalating GM scenarios, XSTest 450, StrongREJECT 313; LLM-judged) is in
progress; an earlier checkpoint (step 100) went from 92% → 97% compliance on the roleplay suite with no change on
XSTest / StrongREJECT.
Training
- LoRA rank 64, alpha 32 (scaling 0.5), 496 adapters: KDA linear-attention projections (q/k/v/b/f_a/f_b/g_a/g_b/o),
MLA projections (q_a/q_b/kv_a_proj_with_mqa/kv_b/o), shared experts and dense MLP. Routed experts not adapted.
- ~17.5M tokens/epoch (731 conversations, full context up to 36,864 tokens, assistant-only loss), Muon optimizer,
lr 1e-4 cosine, 2 epochs, trained with a custom C++/ROCm trainer on 2x Radeon AI PRO R9700.
- Merge:
W += 0.5 * B @ A applied to the bf16 tensors of the NVFP4 checkpoint (fp32 compute, bf16 store);
quantized expert weights are byte-identical to the base.

Full training run (333 steps, 2 epochs). This repository contains the step-300 checkpoint. The run was stopped at
step 100 and resumed with a faster trainer build (red line); loss is per step over ~4 different conversations, so
the 10-step rolling mean is the signal.
Usage
Same as the base model (vLLM with compressed-tensors NVFP4, Blackwell recommended), e.g.
vllm serve cgg507/GLM-5.3-Flash-NVFP4-GM-step300 --tensor-parallel-size 2 --enable-expert-parallel --reasoning-parser glm45.