Data
qwen36-27b-tulu-0-100-train — mixture_0_100.jsonl,
used verbatim.
Table | |
|---|
| Rows | 2,337 (100% TULU3 replay) |
| Tokens | 1,486,942 |
Rows containing any <think> | 0 |
| Multi-turn rows | 243 (up to 21 assistant turns) |
| Supervised tokens | 1,157,303 / 1,486,942 = 77.8% |
What is supervised
Everything outside an assistant turn is -100. A supervised span starts immediately after the
<|im_start|>assistant\n header — which the model is given at inference and never has to
produce — and ends after the closing <|im_end|>, which it must produce in order to stop.
Every assistant turn is supervised, including in multi-turn conversations.
<|im_start|> MASKED
assistant MASKED
\n MASKED
T LOSS <- supervision starts at the assistant's first token
ú LOSS
TRL's assistant_only_loss flag does not work on this model. It requires {% generation %}
markers the chat template lacks, and it re-renders from messages, which would discard the
think-block convention baked into the pre-rendered strings. Spans are derived from the rendered
text via the fast tokenizer's offset mapping instead; TRL receives finished labels.
Training
bf16 LoRA (not QLoRA — bitsandbytes does not reliably cover this model's hybrid
linear-attention/SSM layers: 48 of 64 layers are Gated DeltaNet and none of their projections
receive an adapter). 1×H100 80GB, 1h50m.
Table | |
|---|
| r / alpha / dropout | 32 / 64 / 0.05 |
| target modules | regex scoped to model.language_model.* (q/k/v/o/gate/up/down proj) |
| epochs / steps | 1 / 147 |
| batch × grad-accum | 1 × 16 |
| lr / schedule | 1e-4, cosine, 3% warmup |
| max seq len / packing | 2048 / off |
Final train loss 0.843, token accuracy 0.804. Loss is lower than the mixture arms by
construction — pure TULU3 replay is a narrower target than any mixture containing difficult-advice
reasoning traces, so this does not indicate a better model.
Status
Not yet evaluated. For reference, the full-token sweep at the same budget:
Table with columns: Difficult-advice share, ODCV-Bench MR, Agentic-misalignment| Difficult-advice share | ODCV-Bench MR | Agentic-misalignment |
|---|
| 0% (base, no SFT) | 37.2% | 65.5% |
| 10% | 24.7% | 38.7% |
| 20% | 19.2% | 25.3% |
| 40% | 15.4% | 19.5% |
This adapter is the 0% row with SFT, which the base model row does not control for.
Usage
from peft import PeftModel
from transformers import AutoModelForImageTextToText
model = AutoModelForImageTextToText.from_pretrained("Qwen/Qwen3.6-27B", dtype="bfloat16")
model = PeftModel.from_pretrained(model, "LASR-Callum/qwen3.6-27b-tulu-0-100-nothink-assistant_loss_only")
model = model.merge_and_unload()
Use AutoModelForImageTextToText, not AutoModelForCausalLM — this is a vision-language
checkpoint. Merging drops the base model's 15 mtp.* tensors.