Correct the README: the finetune works, and the <|think|> caveat was wrong

#4

Supersedes PR #3, which had two errors.

  1. It said the <|think|> marker is 'necessary but not sufficient' because the base model still produced an empty thought block every time. That measurement came from a pod running the STOCK template, with no marker present - a no-marker result attributed to the marker. Measured properly, 14 held-out prompts each: stock template 0/14 non-empty thought blocks, this template 14/14.

  2. It said the sriq finetune failed and blamed the architecture. The real cause was a missing loss term. NeMo Automodel's recipe trains total = diffusion_CE + encoder_loss_weight * encoder_AR_CE; we had only the diffusion half, plus a bug that applied the logit softcap twice (forward already softcaps). With both fixed, 800 steps at r=16/alpha=32/lr=1.5e-4 took mean CJK of generation from 0.0% to 26.6%, with all 14 of 14 rows producing Chinese where base produced none.

Also added the gotchas that cost the most time: do not merge the adapter (Gemma4ClippableLinear), keep the decoder block-causal via decoder_attention_mask, and transformers 5.11 does not expose encoder_last_hidden_state from the top-level forward.

kaivoss changed pull request status to merged

Sign up or log in to comment