Views
No views yet
Qwen/Qwen3.6-27B, trained on
10% difficult-advice / 90% TULU3 replay (~1M tokens) with loss on assistant tokens
only, for 1 epoch.qwen3.6-27b-synthdocv2-mixture-10_90.| # | Stage | Model |
|---|---|---|
| 1 | Segment the constitution into its 8 principles | deterministic |
| 2 | Generate difficult scenarios per principle | claude-haiku-4.5 |
| 3 | Draft the system + user prompt | claude-haiku-4.5 |
| 4 | Refine the prompt against the full constitution | claude-sonnet-5 |
| 5 | Generate the response with explicit reasoning | claude-haiku-4.5 |
| 6 | Rewrite against the constitution (critical) | claude-sonnet-5 |
<think> reasoning trace; TULU3 replay rows carry
no think block at all, and no row anywhere carries an empty <think></think>.-100; 78.3% of tokens carry loss. A supervised
span starts immediately after the <|im_start|>assistant\n header and ends after the closing
<|im_end|>, which the model must emit in order to stop.assistant_only_loss cannot do this on Qwen3.6 — its chat template has no
{% generation %} markers, and TRL re-renders from messages, which would discard the
think-block convention baked into the pre-rendered mixture. Spans are derived from the
rendered text via the fast tokenizer's offset mapping instead.| r / alpha / dropout | 32 / 64 / 0.05 |
| target modules | regex scoped to model.language_model.* |
| epochs / steps | 1 / 92 |
| batch × grad-accum | 1 × 16 |
| lr / schedule | 1e-4, cosine, 3% warmup |
| max seq len / packing | 2048 / off |
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-synthdoc-package-lora-10-90")
6model = model.merge_and_unload()AutoModelForImageTextToText, not AutoModelForCausalLM — this is a vision-language
checkpoint.