tudou3123/iclr27_plan_drift
DecoupledJudge — LoRA Judge Adapters (Anonymous ICLR-2027 Supplement)
Anonymous model release accompanying the ICLR-2027 double-blind submission DecoupledJudge: Disentangling Plan-Deviation from Spec-Violation in Trace-Based LLM Judges.
Trace-based LLM judges conflate two orthogonal axes of agent behavior: plan-deviation (DEV) — did the agent follow the intended plan — and spec-violation (VIOL) — did the outcome satisfy the task specification. DecoupledJudge fixes this by training two input-isolated, single-axis LoRA judges: the DEV judge sees (plan + trace); the VIOL judge sees (spec + trace + outputs). This repository hosts the trained LoRA adapters.
Anonymity notice. This repository is released under an anonymous account for double-blind review. It contains no author, affiliation, or institutional identifiers. It will be de-anonymized (or removed) after the review period.
Adapter index
All adapters are LoRA (rank 32, alpha 64, dropout 0.05), trained for 3 epochs, lr 5e-5, batch 4 x grad-accum 4, max_seq 4096, seed 23 (fully deterministic). Apply each adapter on top of the listed base model with PEFT.
Total adapter weight ~3.7 GB.
Checkpoint metadata
Each adapter is the final checkpoint after 3 epochs. The training-time intermediate checkpoint-* snapshots are intentionally not uploaded (they only bloat the release and add nothing for inference). The final-checkpoint step count per adapter is recorded below; the shipped adapter_model.safetensors equals that final step.
Full intermediate checkpoints are reproducible from the released training code (train_judge.py) and SFT data withseed 23; deterministic training yields byte-stable adapters. If reviewers need a specific intermediate checkpoint, it can be regenerated exactly by re-running training and stopping at that step.
Download
During the double-blind review period, browse and download the adapters through the anonymous proxy page linked in the paper (main-text footnote and the code+data supplement README.md). The commands below use <ANON_REPO> as a stand-in for the anonymized repository id served by that proxy.
# whole repo
huggingface-cli download <ANON_REPO> --local-dir ./dj_adapters
# single adapter
huggingface-cli download <ANON_REPO> \
--include "judge_dev_v6/*" --local-dir ./dj_adaptersOr via Python:
from huggingface_hub import snapshot_download
path = snapshot_download(repo_id="<ANON_REPO>")<ANON_REPO> resolves to the anonymized repository behind the proxy; it will be replaced with the real repository id only after the review period.
Inference
from peft import PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer
base_id = "Qwen/Qwen2.5-7B-Instruct"
base = AutoModelForCausalLM.from_pretrained(base_id, torch_dtype="auto", device_map="auto")
tok = AutoTokenizer.from_pretrained(base_id)
dev = PeftModel.from_pretrained(base, "./dj_adapters/judge_dev_v6")
# ... reload base for the VIOL adapter, or use separate processes / adapter swapSee the paired code + data supplement for the exact prompt builders (build_trainset_dual.py), the evaluation harness (eval_dual.py), the deterministic metric scripts, and full reproduction steps (REPRODUCE.md).
