pith:VFLFREZP
The Many Faces of On-Policy Distillation: Pitfalls, Mechanisms, and Fixes
On-policy distillation fails in LLMs due to distribution mismatch, biased gradients, and privileged information aggregation but targeted fixes restore effectiveness.
arxiv:2605.11182 v2 · 2026-05-11 · cs.AI
Add to your LaTeX paper
\usepackage{pith}
\pithnumber{VFLFREZPN6POFUG3NPVHGIOBY4}
Prints a linked badge after your title and injects PDF metadata. Compiles on arXiv. Learn more · Embed verified badge
Record completeness
Claims
We identify three failure mechanisms: (1) distribution mismatch between teacher and student caused by conditioning on student-generated prefixes, (2) optimization instability from biased TopK reverse-KL gradients, and (3) an OPSD-specific limitation where the student learns a PI-free policy that aggregates PI-conditioned teachers, which is insufficient when PI is instance-specific. We further show that stop-gradient TopK objectives, RLVR-adapted teachers, and SFT-stabilized students mitigate these failures.
The tested settings (mathematical reasoning trajectories and system-prompt/alignment PI) are representative enough that the three failure mechanisms and proposed fixes will apply to other LLM tasks, model scales, and data distributions without additional confounding factors.
On-policy distillation for LLMs is sensitive to teacher choice and loss design, while self-distillation fails on instance-specific information but succeeds on shared rules, with stop-gradient TopK, adapted teachers, and SFT stabilization as mitigations.
Receipt and verification
| First computed | 2026-05-26T01:03:33.409214Z |
|---|---|
| Builder | pith-number-builder-2026-05-17-v1 |
| Signature | Pith Ed25519
(pith-v1-2026-05) · public key |
| Schema | pith-number/v1.0 |
Canonical hash
a95658932f6f9ee2d0db6bea7321c1c71826e3bb411c55a1db19227701c45158
Aliases
· · · · ·Agent API
Verify this Pith Number yourself
curl -sH 'Accept: application/ld+json' https://pith.science/pith/VFLFREZPN6POFUG3NPVHGIOBY4 \
| jq -c '.canonical_record' \
| python3 -c "import sys,json,hashlib; b=json.dumps(json.loads(sys.stdin.read()), sort_keys=True, separators=(',',':'), ensure_ascii=False).encode(); print(hashlib.sha256(b).hexdigest())"
# expect: a95658932f6f9ee2d0db6bea7321c1c71826e3bb411c55a1db19227701c45158
Canonical record JSON
{
"metadata": {
"abstract_canon_sha256": "de0bcebca2a87255dcfef7f5533ad79685999585cf31a57ff359212454eb5959",
"cross_cats_sorted": [],
"license": "http://creativecommons.org/licenses/by-nc-sa/4.0/",
"primary_cat": "cs.AI",
"submitted_at": "2026-05-11T19:44:59Z",
"title_canon_sha256": "b248cb51e667023b57534f1c43b260f0bb7b7d2661aab3993870fca78c420d80"
},
"schema_version": "1.0",
"source": {
"id": "2605.11182",
"kind": "arxiv",
"version": 2
}
}