CoolFace
Modelpublic

dougalldeepmind/2026-07-29-qwen36-difficult-advice-tulu-lora-40-60

sourceHugging Faceapache-2.0updated 27d agoView on Hugging Face
0likes29downloads
Model Card

Qwen3.6-27B — difficult-advice + TULU3 LoRA (40/60 mixture)

LoRA adapter for `Qwen/Qwen3.6-27B`, trained on 40% difficult-advice / 60% TULU3 by token count.

One arm of a mixture-ratio sweep. The 20/80 sibling (`LASR-Callum/2026-07-28-qwen36-difficult-advice-tulu-lora-20-80`) cut ODCV-Bench misalignment from 37.2% → 19.2% against a matched FP8 base. The sweep asks whether more difficult-advice data strengthens that effect, plateaus, or tips into over-refusal.

ArmDifficult-adviceTULU3
10/90149,816 tok1,343,608 tok
20/80299,455 tok1,194,548 tok
40/60 (this)597,013 tok896,346 tok

All three hold total tokens at ~1.493M, so step count and compute are matched and the mixture ratio is the only variable.

Training mixture

SourceExamplesTokensShareRendering
`matboz/difficult-advice-qwen3`580597,01340.0%with <think> reasoning traces
`allenai/tulu-3-sft-mixture`1,402896,34660.0%no <think> block at all
Total1,9821,493,359

Qwen3.6's chat template renders <think>{reasoning}</think> for any assistant turn that is final, so trace-free replay data would emit an empty <think></think> — the documented failure mode that trains a model to stop reasoning. The mixture builder appends a throwaway user turn to push the assistant off the end, hitting the template's no-think branch, then strips it. Verified on the written artifact: zero empty think blocks, think blocks in exactly the 580 difficult-advice rows.

Training

bf16 LoRA (not QLoRA — bitsandbytes does not reliably cover this model's hybrid linear-attention/SSM layers), 1×H100 80GB, 1h37m.

r / alpha / dropout32 / 64 / 0.05
target modulesregex scoped to model.language_model.* (q/k/v/o/gate/up/down proj)
adapted modules256 — all 64 MLPs, plus self-attn on the 16 full-attention layers
epochs / steps1 / 124
batch × grad-accum1 × 16
lr / schedule1e-4, cosine, 3% warmup, annealed to 0
max seq len / packing2048 / off

Packing is off because TRL only guarantees packed-sequence isolation under Flash Attention variants; under sdpa it warns of cross-contamination between samples. The vision tower (model.visual) is untouched.

Loss: 2.69 → ~1.00 by step 20, then flat (0.91–1.08). Final token accuracy 0.708, grad_norm 0.31, 1,444,984 tokens consumed.

Status

Not yet evaluated on ODCV-Bench. When it is, the comparison will be against the same matched FP8 base arm (37.2%) used for the 20/80 result, on the same 78 scenario cells with the same two judges.

Usage

python
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/2026-07-29-qwen36-difficult-advice-tulu-lora-40-60")
model = model.merge_and_unload()  # vLLM LoRA support for this hybrid arch is unproven

Use AutoModelForImageTextToText, not AutoModelForCausalLM — this is a vision-language checkpoint. Merging drops the base model's 15 mtp.* tensors, so speculative decoding needs them grafted back from the base checkpoint.