Views
No views yet
qwen3.6-27b-mixture-500k-numina-heavy-empty-think.<think>\n\n</think>\n\n at the
start of their final assistant turn -- Qwen3.6's non-thinking marker, placed exactly where
apply_chat_template puts it (asserted against the template before any data was touched).
The 611 NuminaMath-CoT rows carry no marker: their chain-of-thought lives in the response
text, so marking them "non-thinking" would contradict their own content.<|im_start|> MASKED
assistant MASKED
<think> MASKED <- marker: context, not a target
</think> MASKED
A LOSS <- supervision starts at the real answer| Supervised | 390,921 / 499,595 = 78.2% |
| Epochs / steps | 1 / 63 |
| Runtime | 33 min, 1x H100 80GB |
| r / alpha / dropout | 32 / 64 / 0.05 |
| batch x grad-accum | 1 x 16 |
| lr / schedule | 4e-5, cosine, 3% warmup |
| max seq len / packing | 3072 / off |
| Final loss | 0.878 |
| Token accuracy | 0.793 |
loss_type: nll is set because TRL's default chunked-CE path patches the LM head and reads
forward.__func__, which fails on this checkpoint's functools.partial forward. The loss is
mathematically the same.| Run | lr | Markers | Loss | Token acc |
|---|---|---|---|---|
| 500k maths-weighted | 1e-4 | none | 0.897 | 0.798 |
| this | 4e-5 | present, masked | 0.878 | 0.793 |
1from peft import PeftModel
2from transformers import AutoModelForImageTextToText
3
4model = AutoModelForImageTextToText.from_pretrained("Qwen/Qwen3.6-27B", dtype="bfloat16")
5model = PeftModel.from_pretrained(model, "LASR-Callum/2026-08-02-qwen36-lora-500k-numina-heavy-empty-think")
6model = model.merge_and_unload()AutoModelForImageTextToText, not AutoModelForCausalLM — this is a vision-language
checkpoint.