Views
No views yet
google/gemma-4-26B-A4B, trained with the
nanoNLA pipeline. An NLA is a pair of LoRA adapters:h_l (injected at
layer 1, Karvonen norm-matched ADD) and describes it in natural language.iter_000500), produced by warmstarting
both adapters with SFT and then co-training them with reinforcement learning so the AV's
on-policy descriptions become maximally reconstructable by the AR.
1 − MSE / E‖v_norm − μ‖², using the paper raw-variance baseline (the conservative
definition; baseline mse_nrm = 0.6269), not the inflated mean-norm baseline.| metric | value |
|---|---|
| Held-out eval FVE @ AV-SFT init (RL step 0) | 33.3% |
| Held-out eval FVE, RL plateau (steps 200–500) | ~51–55% (peak 55.5% @ step 460) |
| AR reconstruction of gold summaries (ceiling) | 58.1% |
| Train on-policy FVE (768 rollouts/step, final) | ~44% |
google/gemma-4-26B-A4B (MoE, text decoder); extraction at layer 20 (~66% depth); injection marker char ㊗ (token 249568).‖h − AR(z)‖² each step, no backprop into the AV); sampling T=1; max 150 new tokens.iter_000500/)adapter_model.safetensors + adapter_config.json — the AV LoRA (the "default" policy adapter).reference/ — frozen AV-SFT-init adapter (the KL anchor used during RL).critic/ar_lora_value_head.safetensors + critic/ar_meta.json — the co-trained AR (LoRA + value head).nla_meta.yaml — the sidecar contract (marker token + neighbors, prompt templates, mse_scale, extraction layer index), copied from the AV-SFT warmstart.chat_template.jinja — the (patched) Gemma-4 chat template the prompts assume (the base model ships without one).1from nla_inference import NLAClient
2client = NLAClient(checkpoint_dir="iter_000500", base_ckpt="google/gemma-4-26B-A4B")
3# inject a layer-20 activation h -> get a natural-language description
4text = client.verbalize(h)