Distillation, Self-Training, and the Fragility of Learned Chemical Reasoning
Organizations: Stanford University
Abstract
Automating synthesis planning for small-molecule drug design requires chemical reasoners that are accurate as well as open to inspection and adaptation, yet frontier language models remain unreliable at predicting reaction outcomes and difficult to deploy, while small open-weight models lack the necessary domain reasoning. We show that frontier supervision can serve as a one-time bootstrap for open models on forward reaction prediction. Our models, Resonance, distill an open-weight teacher's reasoning traces and then learn from their own verified outputs, turning a small base model with near-zero accuracy into a capable reaction predictor, while a stronger student surpasses its teacher through distillation alone. Accuracy, however, does not bring robust reasoning: the small student inherits its teacher's single-pass style, self-training mainly sharpens answers it could already reach, and it readily abandons correct answers under pushback, suggesting that chemical reasoning models should be evaluated on the robustness of their reasoning as well as on the accuracy of their answers.
Figures & tables
Appendix figures & tables21 assets
Supplementary material from the paper’s appendix.
Appendix
| Question | Section | Supports |
| Setup | ||
| How were the data scored and the reaction classes assigned? | A.1 | § 3.1 , all per-class results |
| What exactly was trained, with what settings? | A.2 – A.3 | § 3.3 , reproducibility |
| What prompts were used? | A.4 | § 3.4 , § 4.3 |
| What does each training stage contribute? | ||
| Does the base model fail only because of output format? | B.1 | § 4.1 |
| Class | Abbrev. | (test) | (train) |
| Heteroatom alkylation/arylation | Alk./aryl. | 1,479 | 11,736 |
| Acylation | Acyl. | 1,107 | 8,733 |
| Deprotections | Deprot. | 824 | 6,494 |
| C–C bond formation | C–C | 536 | 4,281 |
| Reductions | Red. | 457 | 3,542 |
| Unclassified | Unclass. | 184 | 1,684 |
| S1 (teacher SFT) | S2 (RS-SFT) | S3 (DPO) | ||||
| Parameter | 8B | 27B | 8B | 27B | 8B | 27B |
| Fine-tuning | full | full (text) | full | LoRA | LoRA | LoRA |
| Epochs / steps | 3 ep (3,750 st) | 3 ep (3,750 st) | 3 ep (2,229 st) | 1 ep (3,086 st) | 3,000 st (3.3 ep) | 1 ep (378 st) |
| Learning rate | ||||||
| Warmup steps | 100 | 100 | 50 | 50 | 0 | 0 |
| Effective batch | 32 | 32 | 64 | 32 | 32 pairs | 32 pairs |
| S2 data | S3 data | Evaluation | |
| Sampling model | S1 | S2 | each checkpoint |
| Samples per prompt | 8 | 16 | 1 (8 for § 4.3 probes) |
| Temperature | 0.9 | 0.7 | 0.6 (base 8B: 0, greedy) |
| Top- / top- | 0.95 / 20 | 0.95 / 20 | 0.95 / 20 |
| Max new tokens | 1,024 | 8,192 | 16,384 (8,192 for probes) |
| Context length | 2,048 | 16,384 (8B) / 10,240 (27B) | 16,384 (8B) / 20,480 (27B) |
| Compliance, all generations (%) | 60.64 | 65.22 | 67.78 |
| Compliance, finished only (%) | 75.57 | 88.59 | 89.21 |
| Invalid SMILES in tag (%) | 19.4 | 8.3 | 8.1 |
| Truncated (%) | 19.8 | 26.4 | 24.0 |
| Echo rate, % of valid | 43.7 | 52.7 | 53.2 |
| Top-1 accuracy (%) | 1.32 | 1.20 | 2.02 |
| Model | S1 | S1 S2 S3 | S1 S3 (skip S2) | Paired diff. [95% CI], |
| Qwen3-8B | 31.0 | 42.8 | 37.1 | [ , ], |
| Qwen3.8-27B | 79.0 | 79.6 | 78.8 | [ , ], |
| DPO pairs, 8B | 28,747 | 26,661 | ||
| DPO pairs, 27B | 12,079 | 13,698 |
| Qwen3-8B S1 | Qwen3.8-27B S1 | |
| Training-set accuracy, per sample (%) | 16.6 | 85.8 |
| Reactions with 1 correct sample (%) | 51.8 | 97.2 |
| Reactions with all 8 correct (%) | 0.3 (116) | 65.5 (26,197) |
| Reactions with 1–7 correct (“mixed”, %) | 51.5 (20,588) | 31.7 (12,695) |
| Reactions with 0 correct (%) | 48.2 (19,296) | 2.8 (1,108) |
| Model | Comparison | Acc. A | Acc. B | Only A | Only B | [95% CI] | |
| 8B | base S1 | 1.2 | 31.0 | 25 | 1,517 | [28.5, 31.1] | |
| 8B | S1 S2 | 31.0 | 38.9 | 433 | 828 | [6.5, 9.3] | |
| 8B | S2 S3 | 38.9 | 42.8 | 452 | 646 | [2.6, 5.2] | |
| 27B | base S1 | 26.3 | 79.0 | 99 | 2,735 | [51.2, 54.2] | |
| 27B | S1 S2 | 79.0 | 79.3 | 164 | 181 | 0.39 | [ , 1.1] |
| 27B | S2 S3 | 79.3 | 79.6 | 69 | 82 | 0.33 | [ , 0.7] |
| Qwen3-8B | Qwen3.8-27B | |||||||||
| Class | base | S1 | S2 | S3 | S1 | S3 | Kimi K3 | Opus 5 | GPT-6 | |
| Heteroatom alk./aryl. | 1,479 | 0.8 | 24.5 | 31.1 | 34.6 | 82.3 | 82.8 | 70.7 | 81.7 | 83.0 |
| Acylation | 1,107 | 2.6 | 39.2 | 51.8 | 53.7 | 87.7 | 88.2 | 82.7 | 90.3 | 92.3 |
| Deprotections | 824 | 0.2 | 37.3 | 50.5 | 59.3 | 75.4 | 77.1 | 22.9 | 81.3 | 13.8 |
| C–C bond formation | 536 | 1.1 | 34.9 | 38.4 | 40.5 | 82.6 | 81.5 | 81.9 | 88.2 | 89.0 |
| Reductions | 457 | 0.2 | 31.3 | 33.9 | 43.8 | 67.0 | 65.4 | 2.6 | 41.1 | 2.6 |
| Model | Classes | (i) Exact | (ii) Largest frag. | (iii) + no stereo | (iv) + tautomer |
| Kimi K3 | All | 57.4 | 57.6 | 60.4 | 60.6 |
| Reductions | 2.6 | 2.6 | 2.8 | 2.8 | |
| Oxidations | 1.8 | 1.8 | 1.8 | 1.8 | |
| Deprotections | 22.9 | 22.9 | 23.5 | 23.5 | |
| Protections | 79.3 | 79.3 | 84.7 | 84.7 | |
| 8B S3 | All | 42.8 | 42.8 | 44.4 | 44.4 |
| Model | Reductions | Oxidations | Deprotections |
| Kimi K3 | 413 / 445 | 50 / 54 | 577 / 635 |
| GPT-6 | 440 / 445 | 55 / 55 | 687 / 710 |
| Opus 5 | 10 / 269 | 1 / 34 | 0 / 154 |
| 8B S3 | 6 / 257 | 0 / 43 | 7 / 335 |
| 8B S3 vs. Kimi K3 | 27B S3 vs. Kimi K3 | |
| Both correct | 1,375 (27.5) | 2,584 (51.7) |
| Only student correct | 765 (15.3) | 1,396 (27.9) |
| Only teacher correct | 1,497 (29.9) | 288 (5.8) |
| Both wrong | 1,363 (27.3) | 732 (14.6) |
| McNemar ( ) | 236.2 ( ) | 727.7 ( ) |
| Jaccard overlap of correct sets | 0.378 | 0.605 |
| Traces with any backtracking (%) | Events per 1k tokens | |
| Qwen3-8B base (before training) | 100 | 11.9 |
| Kimi K3 SFT corpus (training data, ) | 10.6 | 0.23 |
| S1 | 12.6 | 0.27 |
| S2 | 13.6 | 0.32 |
| S3 | 14.6 | 0.33 |
| Prompt | S1 | S2 | S3 |
| Default (resample) | 0 [488] | 0 [469] | 0 [475] |
| Commit to first answer | ( ) [451] | ( ) [432] | ( ) [437] |
| Consider alternatives | ( ) [516] | ( ) [496] | ( ) [505] |
| Think more | ( ) [651] | ( ) [608] | ( ) [612] |
| Feedback | S1 | S2 | S3 |
| Mild doubt | ( ) | ( ) | ( ) |
| Told wrong | ( ) | ( ) | ( ) |
| Marked wrong (authority) | ( ) | ( ) | ( ) |
| Told correct | ( ) | ( ) | ( ) |
| “Told wrong” loss as a share of baseline accuracy | |||
| 13% | 11% | 22% | |
| S1 | S2 | S3 | ||||
| Condition | C I | I C | C I | I C | C I | I C |
| Fresh resample | 41.8 | 17.2 | 28.0 | 17.7 | 25.1 | 17.4 |
| Neutral review | 5.7 | 1.3 | 3.2 | 1.1 | 3.6 | 1.8 |
| Mild doubt | 10.6 | 2.8 | 7.8 | 2.9 | 11.7 | 3.9 |
| Told wrong | 31.0 | 6.3 | 21.5 | 6.0 | 32.3 | 6.4 |
| Marked wrong | 26.6 | 5.2 | 19.9 | 5.6 | 30.1 | 5.8 |
| Stage | Condition | Any candidate | 1 change | Wrong right | Right wrong | Wrong wrong | Final answer = last cand. |
| S1 | Default | 64.0 | 8.0 | 16.8 | 4.0 | 79.2 | 68.4 |
| Consider alternatives | 58.2 | 7.8 | 17.0 | 1.4 | 81.6 | 68.9 | |
| Think more | 64.3 | 9.6 | 18.2 | 3.3 | 78.6 | 60.7 | |
| Told wrong | 51.4 | 11.1 | 13.3 | 8.5 | 78.2 | 38.7 | |
| S3 | Default | 58.5 | 7.9 | 25.9 | 2.2 | 71.9 | 62.9 |
| Consider alternatives | 54.6 | 7.0 | 26.3 | 2.1 | 71.7 | 64.8 |
| Stage | Metric | |||||
| S1 | plurality@ | 28.7 | 35.4 | 41.3 | 44.2 | 46.1 |
| pass@ | 28.7 | 47.5 | 55.8 | 60.3 | 63.8 | |
| S2 | plurality@ | 38.9 | 44.6 | 48.5 | 50.6 | 51.7 |
| pass@ | 38.9 | 55.0 | 61.2 | 65.0 | 67.4 | |
| S3 | plurality@ | 41.6 | 46.9 | 50.0 | 52.1 | 54.0 |
| pass@ | 41.6 | 56.9 | 62.5 | 65.7 | 67.9 |