CoolFace
Datasetpublic

dougalldeepmind/2026-07-31-qwen36-sft-mixture-10-90-assistant-loss-only

Qwen3.6-27B SFT mixture — 10-90_assistant_loss_only 10% difficult-advice / 90% TULU3 replay, by token. Built for training with loss on assistant tokens only. mixture.jsonl is byte-identical (md5 af628722652f05debf5cffd44db09f88, 2,257 rows) to the mixture used by the full-token arm …-tulu-lora-10-90, so the loss mask is the only difference between the two runs. Source Rows Tokens Share Supervised difficult-advice 147 149,816 10.0% 85.55% TULU3 replay 2,110 1,343,608… See the full description on the dataset page: https://huggingface.co/datasets/dougalldeepmind/2026-07-31-qwen36-sft-mixture-10-90-assistant-loss-only.

sourceHugging Faceodc-byupdated 27d agoView on Hugging Face
0likes142downloads
Dataset Card

Qwen3.6-27B SFT mixture — 10-90assistantloss_only

10% difficult-advice / 90% TULU3 replay, by token. Built for training with loss on assistant tokens only.

mixture.jsonl is byte-identical (md5 af628722652f05debf5cffd44db09f88, 2,257 rows) to the mixture used by the full-token arm `…-tulu-lora-10-90`, so the loss mask is the only difference between the two runs.

SourceRowsTokensShareSupervised
difficult-advice147149,81610.0%85.55%
TULU3 replay2,1101,343,60890.0%77.84%
Total2,2571,493,42478.62%

Files

FileWhat it is
mixture.jsonlthe training input: text (pre-rendered) + source
assistant_spans.jsonlper row, the character spans that carried loss, plus token counts
stats.jsonthe table above, machine-readable

Reasoning traces

DataRenders as
difficult-advice (147/147 rows)<think>real reasoning</think>
TULU3 replay (0/2,110 rows)no `<think>` block at all

Zero rows carry an empty `<think></think>` (asserted at build time). That distinction is the point: an empty think block is Qwen3.6's explicit do-not-deliberate marker and trains a model to stop reasoning, whereas absent markup says nothing either way. The builder gets there by appending a throwaway user turn — which demotes the assistant turn from final to historical, so the template takes its no-think branch — then cutting that turn back off.

Re-rendering these conversations from messages will not reproduce the training data.

What "assistantlossonly" means

Every token outside an assistant turn is -100 and contributes no loss. 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.

<|im_start|>   MASKED
assistant      MASKED
\n             MASKED
<think>        LOSS     <- supervision starts at the first generated token

assistant_spans.jsonl records those spans as character offsets into text, so the mask is reproducible without our code.

TRL's `assistant_only_loss` flag cannot do this on Qwen3.6. It requires {% generation %} markers the template lacks, and it re-renders from messages, discarding the think-block convention above. The spans are derived from the rendered text via the fast tokenizer's offset mapping instead.

Provenance

src/experiments/build_mixture.py with configs/mixture_qwen36_10_90.yaml, seed 0, from `allenai/tulu-3-sft-mixture` and matboz/difficult-advice-qwen3. Replay conversations over 2,048 Qwen3.6 tokens were dropped rather than truncated.

Sibling mixtures: 10-90 · 20-80 · 40-60