Pilot scores
Table with columns: Run, MATH-500 pass@1, MuSR macro, IFEval prompt strict, IFBench prompt loose| Run | MATH-500 pass@1 | MuSR macro | IFEval prompt strict | IFBench prompt loose |
|---|
| Base student | 12.50 | 43.75 | 43.75 | 12.50 |
| SFT 75:25 | 12.50 | 47.92 | 37.50 | 12.50 |
| OPD 50:50 | 12.50 | 43.75 | 25.00 | 6.25 |
| OPD 75:25 | 6.25 | 45.83 | 31.25 | 25.00 |
| OPD 100:0 | 12.50 | 41.67 | 31.25 | 6.25 |
| Teacher NF4 | 25.00 | 35.42 | 50.00 | 31.25 |
Values are percentages. No blended score is reported. Each task used a fixed
16-example pilot subset; MuSR is the equal-weight macro average of three
16-example subtasks.
For the primary OPD 75:25 versus SFT 75:25 comparison, paired changes were
-6.25 points on MATH-500, -2.08 on MuSR, -6.25 on IFEval, and +12.50 on
IFBench. The 95% paired bootstrap intervals are included in
results/primary_comparison.csv.

Training behavior
The primary adapter was trained for 25 optimizer steps on 40 prompts with a
75:25 reasoning-to-instruction mixture. All OPD runs started from their
matching mixture-specific SFT adapter. The teacher was loaded locally with NF4
double quantization and BF16 compute; no remote teacher API was used.

The 128-token training rollout cap truncated 100%, 92%, and 96% of OPD
completions for the 50:50, 75:25, and 100:0 runs. Evaluation was also
cap-conditioned: 38 to 47 of 48 generative cases per row reached 256 tokens
without EOS. These are exploratory systems measurements, not a model-quality
estimate.

Load the primary adapter
from peft import PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer
adapter_id = "beingamanforever/Qwen3.5-4B-Whitebox-OPD-Pilot"
base_id = "Qwen/Qwen3.5-4B-Base"
tokenizer = AutoTokenizer.from_pretrained(adapter_id)
base = AutoModelForCausalLM.from_pretrained(base_id, device_map="auto")
model = PeftModel.from_pretrained(base, adapter_id)
The weights are LoRA adapters, not a merged full checkpoint. This preserves
the base model license and keeps each experimental arm independently usable.
Included adapters and evidence
Table with columns: Path, Contents| Path | Contents |
|---|
/ | Primary OPD 75:25 adapter and tokenizer |
adapters/opd-50/ | Balanced 50:50 OPD adapter |
adapters/opd-100/ | Reasoning-only OPD adapter |
baselines/sft-75/ | Matching primary SFT adapter |
figures/ | Verified evaluation, mixture, and training charts |
results/ |
Each adapter includes its measured run_metrics.json, trainer_state.json,
and dataset-derived training_provenance.json. Optimizer checkpoints,
serialized training arguments, raw benchmark prompts, and cached base or
teacher weights are intentionally excluded.
Method
The implementation uses TRL 1.12 IWOPDTrainer with sampled-token reverse KL:
distillation_objective=iw_opd
lmbda=1.0
iw_opd_gamma=0.0
reverse_kl_top_1_mode=sampled
temperature=1.0
top_p=1.0
top_k=0
The student and teacher share the exact 248,077-token vocabulary and Qwen
control-token IDs, which permits the teacher to score the student's sampled
token IDs without retokenization. The experimental target is the local NF4
teacher distribution, not the original BF16 distribution.
Reproducibility and limitations
- Seed: 42
- GPU: NVIDIA L40S
- Student:
Qwen/Qwen3.5-4B-Base
- Teacher:
Qwen/Qwen3.8-27B, NF4 with BF16 compute
- Training: 40 prompts per mixture, 25 optimizer steps
- Evaluation: 16 examples per task, 256 generated-token cap
- Major limitations: one seed, small subsets, truncated training rollouts,
capped evaluation generations, and post-run reconstruction of historical
provenance from persisted data and recorded commands
A confirmatory study needs at least the planned seeds 42, 43, and 44, 512-token
OPD rollouts, uncapped full benchmark evaluation, and matched continued-SFT and
corrected RLOO controls. No superiority claim should be made from this pilot.
Code and full evidence
The implementation, end-to-end tests, per-example scores, exact evaluation
provenance, and vector figures are available in the
GitHub repository.
Method and benchmark sources:
License
The adapters are released under Apache-2.0, matching the declared base-model
license. Dataset and benchmark licenses remain governed by their respective
sources.