Phase 1 pilot: controlled students with known teachers

Written before the run (2026-09-19). A miniature of the plan's Phase 1, sized to run before morning.

Question

Everything in Phase 0 and Phase 2 was measured on one real student whose teacher we know from its model card. The open question: does the pipeline tell a student distilled from Qwen3-32B apart from one distilled from original R1, when the two teachers' traces tie under the likelihood statistic? And does a student distilled from a third teacher (Gemini) get attributed correctly, and a 50/50 mixture student get an honest mixture estimate?

Design

Pre-registered criteria

Numbers, part 1: S_r1 and S_gemini (2026-09-19)

Training: Qwen2.5-1.5B, 800 examples, 3 epochs, lr 1e-5, effective batch 16, responses truncated to 2048 tokens, bf16, H100: S_r1 4.9 min (final loss 1.05), S_gemini 4.8 min (loss 0.48). Eval burst 55 min (three 200-sample generations at 4096 tokens plus scoring), ~$3.20.

P1, likelihood attribution (reference = Qwen2.5-1.5B, exact lineage; 199 probes; 6 teachers):

StudentTop-1Wins (top / runner-up)MarginCorrected p
S_r1r1_orig129 r1_orig / 70 qwen3_32b0.0109.8e-8
S_geminigemini191 gemini / 5 r10.0361.0e-61

P1 met for both. Notable: with the exact-lineage reference, the r1_orig vs qwen3_32b near-relative tie that Phase 0 saw on the real distill (92 vs 107) resolves toward the true teacher (129 vs 70, binomial p for r1_orig alone 8.8e-52).

P2, style classifier on student generations (six teacher sets; CV all-teacher 0.997 full / 0.977 head800):

StudentTextModalHist (r1_orig / qwen3 / gemini)Margin p(r1_orig) - p(qwen3)
S_geminifullgemini1 / 0 / 195+0.01 (gemini 0.96)
S_geminireasoning-only 800 wordsgemini2 / 0 / 198+0.01 (gemini 0.97)
S_r1fullqwen3_32b88 / 103 / 4-0.07
S_r1reasoning-only 800 wordsr1_orig129 / 70 / 0+0.27

P2 met for S_gemini on both variants and for S_r1 on the reasoning-only variant; not met for S_r1 on full text. Diagnosis: the training responses were truncated to 2048 tokens (the paper's recipe), so S_r1 learned traces that rarely reach </think> and an answer, while the r1_orig teacher texts carry boxed answers; full-text features reward answer presence and so pull S_r1's answer-less outputs toward qwen3_32b (whose API texts are also answer-less). The equal-length reasoning-only variant removes that artifact and is the fair comparison; it is the variant to report going forward.

P3 / P4, mixture:

StudentTextr1_origqwen3_32bgemini
S_r1full0.46 [0.38, 0.53]0.54 [0.45, 0.61]0.00
S_r1reasoning-only0.70 [0.61, 0.77]0.30 [0.23, 0.39]0.00
S_geminiboth0.000.001.00 [1.00, 1.00]

P4 met (S_gemini has zero weight on r1_orig and qwen3_32b). P3 awaits S_mix. The residual 30% Qwen3 weight on S_r1 is expected: Qwen3's traces are themselves R1-style, and S_r1 is a weaker distill (800 truncated examples) than the real one (which classified 186/200 r1_orig in H3).

Numbers, part 2: all four students (2026-09-19)

S_qwen3 (800 Qwen3-32B traces, loss 0.84) and S_mix (400 R1 + 400 Qwen3, loss 0.96) trained in 4.8 min each; train+eval burst 50 min, ~$2.90. Qwen3 traces cost $0.56 via OpenRouter.

P1, likelihood attribution (reference = Qwen2.5-1.5B, exact lineage; 199 probes; 6 teachers):

StudentTrue teacher(s)Top-1Wins top / runner-upCorrected p
S_r1r1_origr1_orig129 r1_orig / 70 qwen39.8e-8
S_qwen3qwen3_32bqwen3_32b177 qwen3 / 22 r1_orig3.1e-28
S_geminigeminigemini191 gemini / 5 r11.0e-61
S_mixr1_orig + qwen3 (50/50)qwen3_32b132 qwen3 / 67 r1_orig6.1e-7

P1 met for all three pure students. The near-relative pair is separable by likelihood when the reference is the exact lineage: 129 vs 70 one way, 177 vs 22 the other.

P2, style classifier on generations (reasoning-only, first 800 words; the fair variant, see part 1):

StudentModalHist r1_orig / qwen3 / geminip(r1_orig) - p(qwen3)
S_r1r1_orig129 / 70 / 0+0.27
S_qwen3qwen3_32b20 / 179 / 1-0.75
S_geminigemini2 / 0 / 198+0.01
S_mixqwen3_32b58 / 141 / 1-0.40

P2 met for S_r1, S_qwen3 and S_gemini (full-text variant agrees for S_qwen3 at 165/25 and S_gemini at 195; it only fails for S_r1 for the truncation reason noted in part 1). H3 is a lineage detector, not a description of one model: a Qwen3-distilled student and an R1-distilled student, same base, same prompts, same recipe, land on opposite sides.

P3 / P4, mixture estimates (reasoning-only):

Studentr1_origqwen3_32bgeminiVerdict
S_r10.70 [0.61, 0.77]0.30 [0.23, 0.39]0.00true 1.0 / 0
S_qwen30.08 [0.04, 0.12]0.92 [0.88, 0.96]0.00true 0 / 1.0
S_gemini0.000.001.00P4 met
S_mix0.24 [0.18, 0.31]0.75 [0.69, 0.82]0.00P3 not met (true 0.5 / 0.5)

P3 fails: the 50/50 data mixture reads as 75/25 Qwen3 in style and 132/67 in likelihood. Mechanism: Qwen3's traces are the more regular, lower-perplexity style (S_qwen3 trains to loss 0.84 vs S_r1's 1.05), so with equal data the student's generations adopt the Qwen3 register more than half the time. A style mixture is therefore a biased estimate of the data mixture, biased toward the more learnable teacher, by roughly 0.25 here. The pure students show the same lean (S_r1 keeps 0.30 Qwen3 weight, S_qwen3 keeps only 0.08 R1 weight). Fix is straightforward and is what a real Phase 1 is for: calibrate the estimator on synthetic students of known mixture (the 70/30, 50/50, 30/70 grid) and invert the learned bias; report data-mixture intervals only after that calibration.

Part 3 (pre-registered before the run): hard negative and the truncation artifact

Part 3 numbers (2026-09-19; burst 54 min, ~$3.17)

S_human trained in 2.6 min (loss 0.58, mean 576 tokens/example); S_r1_4k in 11.3 min (loss 1.06, mean 4126 tokens/example).

StudentLikelihood top-1 (wins)Reasoning-teacher meansStyle modal, full / reasoning-only{r1_orig, qwen3} mixture weight
S_humanllama33_70b 144/199 (p 4e-24)all negative; r1_orig 11 wins, qwen3 4gpt_oss 81 / llama 106; r1_orig 1 / 0, qwen3 1 / 10.005 / 0.005
S_r1_4kr1_orig 128 / qwen3 71 (p 5e-8)r1_orig +0.165, qwen3 +0.154r1_orig 113 vs qwen3 80 (margin +0.14) / r1_orig 144 vs 55 (+0.42)0.61 r1_orig full; 0.79 [0.72, 0.85] reasoning-only

Part 4: mixture grid (2026-09-19; S_mix70 loss 0.99, S_mix30 loss 0.90; burst 50 min, ~$3)

Student (R1 data share)Likelihood top-1r1_orig / qwen3 winsStyle modal (reasoning-only)r1_orig / qwen3 histStyle r1_orig weight
S_qwen3 (0.0)qwen322 / 177qwen320 / 1790.08
S_mix30 (0.3)qwen344 / 155qwen30.12
S_mix (0.5)qwen367 / 132qwen358 / 1410.24
S_mix70 (0.7)qwen3 (p 0.20)85 / 114qwen30.37
S_r1 (1.0)r1_orig129 / 70r1_orig129 / 700.70

Strictly monotone dose-response on both signals. The likelihood win share tracks the data share nearly linearly (0.11 to 0.65 for 0 to 100%), biased toward Qwen3 by a roughly constant offset. Calibration details and the scale-dependence caveat are in h2_multi_teacher/RESULT.md.

Part 5: strength axis (S_r1_e9, S_r1_8k)

See h2_multi_teacher/RESULT.md "Strength numbers". Short version: 9 epochs lift the R1 style weight 0.70 -> 0.78 and the absolute likelihood alignment +0.159 -> +0.190; an 8,000-example student from OpenR1-Math traces reaches loss 0.66 but attributes to its own source's sub-style (OpenR1-R1 138 vs s1K-R1 16), which sits closer to Qwen3 than the s1K register does. Same checkpoint, different prompts and sampling pipeline: separable at 0.91. Family-level attribution holds for all R1-trained students (77 to 95%).

Conclusions of the pilot

Files: results/test__R3.json, results/h3_.json, results/h2_mixture_*.json.