References¶
Primary sources for the ideas miniVERL implements, and for the projects it is
compared against. Each entry is tagged [primary] for a peer-reviewed paper,
preprint or source repository, or [blog] for an informal write-up.
Every arXiv identifier below was resolved on 2026-07-27 and the title, author list and version dates were read off the abstract page. Mutable repository and official-documentation facts were refreshed through the GitHub API and project documentation on 2026-07-29.
The framework miniVERL is named after¶
HybridFlow: A Flexible and Efficient RLHF Framework [primary]
Guangming Sheng, Chi Zhang, Zilingfeng Ye, Xibin Wu, Wang Zhang, Ru Zhang,
Yanghua Peng, Haibin Lin, Chuan Wu. arXiv:2409.19256, submitted 2024-09-28.
https://arxiv.org/abs/2409.19256
The paper verl implements. Its hybrid single-controller / multi-controller
dataflow is the scaling design miniVERL deliberately does not attempt; the name
"miniVERL" acknowledges the debt without implying compatibility.
verl [primary]
verl-project/verl, Apache-2.0. https://github.com/verl-project/verl
The reference implementation. Relevant to this project because it already has
first-class on-policy distillation (verl/trainer/distillation/, with FSDP and
Megatron backends and a DistillationConfig in verl.workers.config) and an
agent loop with tool support (verl/experimental/agent_loop/, including
tool_agent_loop.py and tool_parser.py). Ray is an unconditional dependency
(ray[default] in requirements.txt). See
comparisons.md for when to use verl instead of this project.
The v0.4 local role graph borrows only the semantic separation among actor,
rollout, teacher/reference, reward/verifier and update responsibilities. Its
implementations remain existing in-process miniVERL components; the names do
not imply DataProto, worker, placement or runtime compatibility.
On-policy distillation¶
On-Policy Distillation of Language Models: Learning from Self-Generated
Mistakes [primary]
Rishabh Agarwal, Nino Vieillard, Yongchao Zhou, Piotr Stanczyk, Sabela Ramos,
Matthieu Geist, Olivier Bachem. arXiv:2306.13649, submitted 2023-06-23.
https://arxiv.org/abs/2306.13649
The GKD paper. Source of the two ideas miniVERL builds the objective around:
training the student on its own sampled sequences to remove the
train/inference distribution mismatch, and the generalized Jensen-Shannon
divergence as a tunable interpolation between forward and reverse KL.
miniverl.losses.exact.exact_jsd and bucketed_jsd implement the
beta-weighted form, with beta restricted to the open interval (0, 1)
because the divergence is identically zero at either endpoint.
GKD Trainer documentation [primary]
Hugging Face TRL. https://huggingface.co/docs/trl/main/en/gkd_trainer
The reference implementation of GKD in the transformers ecosystem, now at
trl.experimental.gkd.GKDTrainer / GKDConfig. Useful as a calibration point:
lmbda defaults to 0.5, so on-policy sampling is configurable rather than the
default, and the trainer recomputes full-vocabulary teacher logits each step
under no_grad with no teacher cache.
On-Policy Context Distillation for Language Models [primary]
Tianzhu Ye, Li Dong, Xun Wu, Shaohan Huang, Furu Wei. arXiv:2602.12275,
v1 2026-02-12, v2 2026-03-23. https://arxiv.org/abs/2602.12275
The student trains on its own trajectories while minimizing reverse KL against a
teacher that is conditioned on additional context the student never sees. This
is exactly what models.teacher.mode: privileged_context does in miniVERL: the
teacher trajectory is re-rendered with an environment-supplied hint and
miniverl.trajectory.alignment.build_alignment_map recovers the position
correspondence so the student is still scored on its own tokens.
Entropy-Aware On-Policy Distillation of Language Models [primary]
Woogyeol Jin, Taywon Min, Yongjin Yang, Dennis Wei, Yi Zhou,
Swanand Ravindra Kadhe, Nathalie Baracaldo, Kimin Lee. arXiv:2603.07079,
v1 2026-03-07, v2 2026-05-22, v3 2026-06-12; the author comment reads
"18 pages, 11 figures, ICML 2026". https://arxiv.org/abs/2603.07079
Argues that reverse KL is mode-seeking and destabilizes where the teacher's
entropy is high, and mixes in forward KL at those tokens. This is the reason
miniVERL records per-selected-position teacher entropy
(exact_teacher_entropy, bucketed_teacher_entropy) and surfaces it in the
reports. The mixing itself is not implemented here; see the roadmap section
of limitations.md.
Rethinking On-Policy Distillation of Large Language Models: Phenomenology,
Mechanism, and Recipe [primary]
Yaxuan Li, Yuxin Zuo, Bingxiang He, Jinqian Zhang, Chaojun Xiao, Cheng Qian,
Tianyu Yu, Huan-ang Gao, Wenkai Yang, Zhiyuan Liu, Ning Ding. arXiv:2604.13016,
v1 2026-04-14, v2 2026-04-15. https://arxiv.org/abs/2604.13016
Official code: thunlp/OPD, https://github.com/thunlp/OPD. Builds on verl
v0.7.0 with LlamaFactory v0.9.5 for the SFT stage; experiments run on 8xA800
80 GB; the repository has no LICENSE file, so it is all-rights-reserved.
Relevant as a statement of the conditions under which on-policy distillation
works at all, including compatible student and teacher behaviour, which is one
motivation for miniVERL enforcing an identical tokenizer.
KDFlow: A User-Friendly and Efficient Knowledge Distillation Framework for
Large Language Models [primary]
Songming Zhang, Xue Zhang, Tong Zhang, Bojie Hu, Yufeng Chen, Jinan Xu.
arXiv:2603.01875, v1 2026-03-02, v2 2026-03-24, v3 2026-07-17.
https://arxiv.org/abs/2603.01875
Code: songmzhang/KDFlow, MIT. https://github.com/songmzhang/KDFlow
Requires Ray and SGLang unconditionally, and its examples assume 8 GPUs per
node. A code search over the repository for tool_call and for agent returns
0 results, which is the clearest single contrast with miniVERL's scope.
OPSD (On-Policy Distillation) [primary]
HJSang/OPSD_OnPolicyDistillation.
https://github.com/HJSang/OPSD_OnPolicyDistillation
A research harness built on verl. Its README describes multi-turn agent-loop
rollouts with tool and environment tokens excluded from the loss, and chunked
divergence computation rather than materializing full-vocabulary tensors for a
whole batch. The repository has no LICENSE file, so despite the overlap in
approach none of it is reusable.
Qualified and localized supervision¶
Trust Region On-Policy Distillation [primary]
Xingrun Xing, Haoqing Wang, Boyan Gao, Ziheng Li, Yehui Tang.
arXiv:2606.01249, v3 2026-06-17. https://arxiv.org/abs/2606.01249
TrOPD restricts or changes supervision where teacher/student mismatch makes
token-level OPD unreliable. miniVERL's verifier gate is narrower: it selects
versioned deterministic policy-critical spans and does not implement TrOPD's
trust-region estimator, outlier handling or teacher-prefix guidance.
Reward-Weighted On-Policy Distillation with an Open Property-Equivalence
Verifier for NL-to-SVA Generation [primary]
Qingyun Zou, Yingze Li, Tianen Liu, Bingsheng He, Weng-Fai Wong.
arXiv:2605.13501, v1 2026-05-13. https://arxiv.org/abs/2605.13501
RWOPD weights dense forward-KL supervision using a domain property-equivalence
verifier. miniVERL's v0.5 gate neither implements that reward weighting nor
claims its deterministic tool-policy checker is a general reward model.
Llama 2: Open Foundation and Fine-Tuned Chat Models [primary]
Hugo Touvron et al. arXiv:2307.09288, v2 2023-07-19.
https://arxiv.org/abs/2307.09288
The safety section includes context distillation from safety context. It is
relevant to the policy-conditioned-teacher pattern, but miniVERL does not claim
that privileged context automatically creates a safe or qualified teacher.
EasyOPD: An Easy-to-use On-Policy Distillation Framework for Large Language
Models [primary]
Jie Sun et al. arXiv:2607.11012, v1 2026-07-13.
https://arxiv.org/abs/2607.11012
EasyOPD provides multiple OPD settings on a shared verl distributed backend.
miniVERL is an independent one-GPU runtime with a smaller typed workflow and no
claim of distributed-runtime or method compatibility.
These works were refreshed from their primary arXiv pages on 2026-08-02. Verifier-Gated OPD is not claimed as novel; its contribution here is an auditable local implementation and a preserved neutral/negative result.
Distillation mechanics¶
Distilling the Knowledge in a Neural Network [primary]
Geoffrey Hinton, Oriol Vinyals, Jeff Dean. arXiv:1503.02531, submitted
2015-03-09. https://arxiv.org/abs/1503.02531
Source of the classic T**2 correction for soft-target cross-entropy / forward
KL in the near-uniform high-temperature regime.
miniverl.losses.exact.temperature_scale applies the factor, and
loss.scale_by_temperature_squared controls it. Its use for reverse KL and JSD
is explicitly treated as a heuristic and measured by
scripts/temperature_gradient_sweep.py, not presented as a general invariance.
Numerics¶
Accurately Computing log(1 - exp(.)) -- Assessed by Rmpfr [primary]
Martin Maechler, 2012. CRAN Rmpfr package vignette; the PDF is rebuilt with
each package release, and the copy fetched on 2026-07-27 is dated 2025-10-21.
https://cran.r-project.org/web/packages/Rmpfr/vignettes/log1mexp-note.pdf
The two-regime algorithm implemented by miniverl.losses.numerics.log1mexp:
log(-expm1(x)) when x is close to zero and log1p(-exp(x)) when it is not,
switching at -log 2. miniVERL needs it to compute the tail log-probability
log(1 - sum_k p) of a top-k bucket without catastrophic cancellation, and
evaluates both branches on sanitized inputs so the unused branch cannot inject
nan into the backward pass.
Parameter-efficient and quantized fine-tuning¶
LoRA: Low-Rank Adaptation of Large Language Models [primary]
Edward J. Hu, Yelong Shen, Phillip Wallis, Zeyuan Allen-Zhu, Yuanzhi Li,
Shean Wang, Lu Wang, Weizhu Chen. arXiv:2106.09685, v1 2021-06-17,
v2 2021-10-16. https://arxiv.org/abs/2106.09685
The adapter method behind models.student.lora. In the measured 16 GB run the
student had 10,092,544 trainable LoRA parameters against 385,941,504 base
parameters.
QLoRA: Efficient Finetuning of Quantized LLMs [primary]
Tim Dettmers, Artidoro Pagnoni, Ari Holtzman, Luke Zettlemoyer. arXiv:2305.14314,
submitted 2023-05-23. https://arxiv.org/abs/2305.14314
The NF4 plus double-quantization recipe behind models.student.quantization:
nf4. It is also the direct cause of one of miniVERL's hard limits: bitsandbytes
4-bit parameters are pinned to the device they were quantized on, so
memory.strategy: swap is rejected for any quantized model.
Storage format¶
safetensors [primary]
safetensors/safetensors (formerly huggingface/safetensors), Apache-2.0.
https://github.com/safetensors/safetensors
The on-disk format for the teacher-target cache. It was chosen because loading a
cache shard must not be able to execute code: torch.save and pickle are
never used anywhere in miniverl.cache, and
miniverl.cache.store.read_safetensors_header parses the JSON header without
torch, numpy or the safetensors library so that miniverl cache stats works on
a base install.
Pinned models¶
Both revisions were re-resolved against the Hugging Face API on 2026-07-27, alongside a negative control (an all-zero SHA returns HTTP 404, so the endpoint really validates the revision).
Qwen/Qwen3-0.6B [primary] -- revision
c1899de289a04d12100db370d81485cdf75e47ca, Apache-2.0.
https://huggingface.co/Qwen/Qwen3-0.6B
The student in recipes/qwen_consumer_gpu_calc.yaml.
Qwen/Qwen3-1.7B [primary] -- revision
70d244cc86ccca08cf5af4e1e306ecf908b1ad5e, Apache-2.0.
https://huggingface.co/Qwen/Qwen3-1.7B
The teacher in the same recipe. tokenizer.json is byte-identical across the
pair (sha256
aeb13307a71acd8fe81861d94ad54ab689df773318809eed3cbe794b4492dae4), which is
what makes the pair legal under miniVERL's same-tokenizer requirement. Both
report vocab_size 151936 while len(tokenizer) is 151669, because the
embedding matrix is padded; both have 28 layers and tie_word_embeddings: true.
Qwen3 requires transformers >= 4.51.