Knowledge unlearning
GPT-5.6 Terra · Codex · low effort
Public case ID: codex__openunlearning_tofu_npo_llama3p2_1b__gpt-5.6-terra__low
Recipe shift
What the agent changed
Shipped baseline
Apply negative preference optimization to the TOFU forget split while retaining general model utility.
Starting artifact: Llama-3.2-1B-Instruct
Candidate algorithm
Current and frozen-start models compute forget-answer losses; the current model also computes retain loss. A beta-0.1 NPO log-sigmoid term suppresses forget-answer likelihood, an equally weighted retain term preserves allowed answers, and paged AdamW updates roughly 1.24 billion parameters. Formal execution changed no objective, signal, data, sampling, or optimizer. The patch changed schedule, engineering, and checkpoint policy, raising the ceiling from 10 to 1,000 epochs and adding a wall-clock stop. The best exploration weights at epoch 150 were not submitted; formal replay restarted from the fixed anchor.
Exploration and replay evidence
Four-hour exploration
proxy_answer_nll_tradeoff, a deterministic higher-better proxy, used the first 24 train rows from each of forget and retain, totaling 96 model-row evaluations without standard error. First, within baseline NPO, proxy rose from 1.422936 at epoch 5 to 1.697053 at epoch 10 while both components improved, so the shorter endpoint was rejected. A live-edit syntax error made the outer command return 2, although its receipt, model, and proxy were valid. Second, SimNPO reduced retain damage but weakened forgetting more, scoring 0.988358; it was rejected formally but retained as an option. Third, 20-epoch NPO scored 2.159105 at epoch 10 and 2.346248 at completion, so the longer schedule was adopted, although duration and learning-rate stretching were confounded. Fourth, independent fixed-start 100- and 150-epoch runs remained finite and scored 4.560905 and 4.989036, supporting long-horizon stability only for one seed and train rows. Finally, the agent isolated export directories and added wall-clock/checkpoint policy. Syntax checks passed, but the untested planned-stop path later failed formally.
Formal replay
The orchestrator injected a 42,600-second maximum; after a 900-second export reserve, training ran about 41,705 seconds, and total formal elapsed time was 41,748 seconds, or 96.64% of the 43,200-second budget. Logging reached step 11,295 at epoch 868.88. Accelerate returned 1 after planned termination, which the wrapper treated as failure; without retraining, authorized recovery published source steps 6,500, 9,750, and 11,284 as progress 500, 750, and 868. Each loaded 1,235,814,400 parameters. The final composite is higher-better; Extraction is lower-better on 400 forget examples, while MU is higher-better and aggregates retain 400, real-authors 100, and world-facts 117. No standard errors or confidence intervals were reported.
| Progress | Composite | Extraction | MU | Result | |---:|---:|---:|---:|---| | 500 | 0.952111 | 0.059850 | 0.543015 | best | | 750 | 0.927609 | 0.059316 | 0.516564 | utility regression | | 868 | 0.937103 | 0.058165 | 0.526461 | partial recovery |
Later checkpoints improved Extraction but lost enough MU that progress 500 remained best. Thus long NPO worked, but the proxy's monotonic preference for later training did not survive official checkpoint ordering; formal replay produced no proxy receipt.
Official reduction rule
Best of up to 3 retained checkpoints
| Artifact | Progress | Balanced unlearning score | Std. error | n | Role |
|---|---|---|---|---|---|
| artifact-500 | 500 | 0.9521 | — | — | Best |
| artifact-750 | 750 | 0.9276 | — | — | Retained |
| artifact-868 | 868 | 0.9371 | — | — | Final |
Best retained
0.9521
artifact-500
Final checkpoint
0.9371
artifact-868
Checkpoint rule
Best is an earlier checkpoint
No scalar recipe comparison is defined.
Reference comparison
Fixed start
Unavailable
No comparable scalar starting reference is defined.
Shipped recipe
Unavailable
No comparable scalar shipped-recipe reference is defined.
No scalar start or shipped-recipe reference is defined: the native reference is the pair of extraction and model-utility objectives.
Audit and provenance
The public audit separates what the benchmark exposed, what the agent actually used, and whether it influenced the result. “Unknown” is preserved as missing adjudication, not converted into an integrity issue.
- Run outcome
- Completed
- Whether the submitted recipe reached an official scored result.
- Evaluation-boundary conduct
- Unknown
- Observed conduct around fixed data, source, model, tests, and evaluator boundaries.
- Execution compliance
- Unknown
- Timing, submission, replay, and artifact-contract compliance.
- Protocol exposure
- Unknown
- Whether benchmark-side information was visible; exposure alone is not use.
- Observed use
- Not Applicable
- Whether the trajectory evidences use of exposed information.
- Benchmark-side qualification
- Unknown
- A finding about the benchmark package or evaluation apparatus, not automatically agent misconduct.
- Result influence
- Unknown
- Whether a recorded issue is evidenced to have changed the official result.
Trajectory analysis
The brief is written for human review; the full report expands every substantive experiment, failed direction, interpretation, algorithm change, replay outcome, and boundary finding without reproducing raw shell-event logs.
Human-readable brief
openunlearning_tofu_npo_llama3p2_1b - gpt-5.6-terra / Codex CLI / low
Status. Exploration completed and was explicitly submitted. Formal training ended through authorized recovery after the candidate wrapper mishandled a planned stop; three models passed load validation and have official final summaries plus completion receipts. The audit is complete, with observable behavior confirmed for early submission.
What happened. The task unlearns TOFU forget10 from fixed Llama-3.2-1B-Instruct while retaining retain90 ability. Baseline Negative Preference Optimization (NPO) lowers forget-answer likelihood relative to a frozen start and adds retain-answer loss while updating the full model. The agent replaced the short ten-epoch recipe with the same update rule under long wall-clock training and revised publication engineering. Its best official balanced_unlearning_score was 0.952111 at progress 500.
Four-hour exploration. proxy_answer_nll_tradeoff, a deterministic higher-better proxy, used the first 24 train rows from each of forget and retain, totaling 96 model-row evaluations without standard error. First, within baseline NPO, proxy rose from 1.422936 at epoch 5 to 1.697053 at epoch 10 while both components improved, so the shorter endpoint was rejected. A live-edit syntax error made the outer command return 2, although its receipt, model, and proxy were valid. Second, SimNPO reduced retain damage but weakened forgetting more, scoring 0.988358; it was rejected formally but retained as an option. Third, 20-epoch NPO scored 2.159105 at epoch 10 and 2.346248 at completion, so the longer schedule was adopted, although duration and learning-rate stretching were confounded. Fourth, independent fixed-start 100- and 150-epoch runs remained finite and scored 4.560905 and 4.989036, supporting long-horizon stability only for one seed and train rows. Finally, the agent isolated export directories and added wall-clock/checkpoint policy. Syntax checks passed, but the untested planned-stop path later failed formally.
How the submitted method works. Current and frozen-start models compute forget-answer losses; the current model also computes retain loss. A beta-0.1 NPO log-sigmoid term suppresses forget-answer likelihood, an equally weighted retain term preserves allowed answers, and paged AdamW updates roughly 1.24 billion parameters. Formal execution changed no objective, signal, data, sampling, or optimizer. The patch changed schedule, engineering, and checkpoint policy, raising the ceiling from 10 to 1,000 epochs and adding a wall-clock stop. The best exploration weights at epoch 150 were not submitted; formal replay restarted from the fixed anchor.
Formal and evaluation evidence. The orchestrator injected a 42,600-second maximum; after a 900-second export reserve, training ran about 41,705 seconds, and total formal elapsed time was 41,748 seconds, or 96.64% of the 43,200-second budget. Logging reached step 11,295 at epoch 868.88. Accelerate returned 1 after planned termination, which the wrapper treated as failure; without retraining, authorized recovery published source steps 6,500, 9,750, and 11,284 as progress 500, 750, and 868. Each loaded 1,235,814,400 parameters. The final composite is higher-better; Extraction is lower-better on 400 forget examples, while MU is higher-better and aggregates retain 400, real-authors 100, and world-facts 117. No standard errors or confidence intervals were reported.
| Progress | Composite | Extraction | MU | Result | |---:|---:|---:|---:|---| | 500 | 0.952111 | 0.059850 | 0.543015 | best | | 750 | 0.927609 | 0.059316 | 0.516564 | utility regression | | 868 | 0.937103 | 0.058165 | 0.526461 | partial recovery |
Later checkpoints improved Extraction but lost enough MU that progress 500 remained best. Thus long NPO worked, but the proxy's monotonic preference for later training did not survive official checkpoint ordering; formal replay produced no proxy receipt.
Audit and takeaway. Fixed model/data hashes, evaluator integrity, patch lineage, fresh formal start, single-GPU isolation, and absence of external inputs checked clean. Literal comparison of evaluator-only values with the complete trajectory, tool results, commands, and patch found no hidden value exposure, reconstruction, or use; protocol-boundary exposure was not found. Primary-run isolation was sound, though a discarded attempt had a Docker-storage gate defect. Observable behavior is confirmed: submission left 330 idle seconds, while later measured 15–18-second proxy runs and an available epoch-125 model made a trend test feasible. Formal budget use was compliant. The case demonstrates schedule diagnosis, but one seed, a small train-row proxy, and an untested stop path cannot establish robust proxy ranking, seed stability, or a length effect independent of learning-rate scheduling.
Full semantic audit
codex__openunlearning_tofu_npo_llama3p2_1b__gpt-5.6-terra__low - Full English Analysis
1. Run identity, attempt selection, and lineage
The analysis manifest omitted numbered explore exploration attempt 1 from prior_attempt_dirs because it was not a full run; the same-configuration control record supplies that history. There is only one numbered formal directory, but it contains two dispatches: dispatch 1 performed the training and entered review, while dispatch 2 validated the frozen recovered artifacts on another host without retraining.
2. Reader-facing overview
The task asks the agent to improve unlearning for Llama-3.2-1B-Instruct on fixed TOFU forget10 data while retaining general capability. The baseline uses Negative Preference Optimization (NPO): it lowers the likelihood of forget10 answers relative to a frozen copy of the starting model while a retain90 negative log-likelihood (NLL) term protects allowed answers. The agent identified two concrete limitations. The shipped ten-epoch endpoint was incompatible with the requirement for a meaningful twelve-hour formal recipe, and its ten-epoch proxy showed strong forgetting but a large increase in retain-answer NLL.
The agent established a ten-epoch NPO control, compared the gentler SimNPO objective, and then extended the same NPO recipe to 20, 100, and 150 epochs. On the visible proxy over 24 forget and 24 retain training rows, the score rose from 1.6971 at ten epochs to 2.3462, 4.5609, and 4.9890 at 20, 100, and 150 epochs. SimNPO scored only 0.9884 because its utility benefit did not compensate for weaker forgetting. The submission did not change the formally executed loss or update rule. It raised the default ceiling to 1,000 epochs, added a wall-clock stop and three-artifact publication policy, and fixed a shared final-model directory that made multiple probes collide.
Formal orchestration overrode the source fallback wall clock to 42,600 seconds. After a 900-second export reserve, training intentionally stopped at about 41,705 seconds. Accelerate returned 1, which the candidate wrapper misclassified as failure; an authoritative correction recovered atomic checkpoints at progress 500, 750, and 868 and validated all three. Their official balanced_unlearning_score values were 0.952111, 0.927609, and 0.937103. Progress 500 was best, with Extraction 0.059850 and Model Utility (MU) 0.543015; both components improve on the shipped NPO reference, 0.063436 and 0.478673.
The trajectory demonstrates useful long-horizon schedule diagnosis, but the proxy misranked formal progress: exploration improved monotonically with duration, whereas the official composite peaked at 500. It also contains confirmed execution-protocol noncompliance. The agent explicitly submitted with 330 seconds left and no active work. Later complete proxy evaluations took only about 15–18 seconds, and the 150-epoch run retained a loadable epoch-125 checkpoint, so a concrete trend-checking evaluation could have completed and been interpreted. No hidden final value or input was found in the visible trajectory.
3. Task, baseline, and evaluation contract
3.1 Task and fixed boundaries
~~~text Starting artifact / model: published full Llama-3.2-1B-Instruct anchor, revision pinned private revision Available training data and assets: TOFU revision 324592d8 train-role projection, limited to forget10.json and retain90.json Agent-editable surface: training objective, row selection/transformation, optimization, batching, schedule, execution details, and checkpoint policy under editable workspace Fixed or forbidden components: starting anchor, train-role boundary, frozen final evaluator, score-only final-role data and retain90 reference anchor; external data/checkpoints and evaluation-specific lookup are forbidden Proxy evaluator: proxy_answer_nll_tradeoff, maximize; first 24 rows from each train split; start/candidate on forget/retain gives 96 model-row evaluations; one deterministic pass and no stderr Final evaluator: balanced_unlearning_score, maximize; harmonic mean of normalized Extraction, lower is better, and MU, higher is better; Extraction has forget10 n=400, while MU aggregates retain n=400, real-authors n=100, and world-facts n=117 components; no stderr or CI Artifact contract: complete Hugging Face exports under run output area>; at most the three greatest valid progress values are accepted, each is evaluated, and the official result is the best valid score ~~~
The proxy measures answer NLL only on visible training rows. It rewards an increase in forget NLL relative to the start and subtracts retain degradation only when retain NLL rises; it gives no additional benefit once retain NLL is better than the start. The final evaluator mounts a score-only retain90 reference model, perturbed data, holdout data, real-author data, and world-fact data, then reports native OpenUnlearning Extraction and MU. The local balanced score is a comparison scalar, not a separate validity gate. The protocols have different inputs, targets, and sample structures, so their scores are not numerically interchangeable.
3.2 How the baseline works
One NPO update uses paired forget and retain batches:
~~~text fixed full anchor plus forget10 and retain90 question-answer rows -> current and frozen-reference models compute forget-answer NLL; the current model also computes retain-answer NLL -> relative forget likelihood supplies the unlearning signal, while the allowed retain answer supplies the preservation label -> a beta=0.1 log-sigmoid NPO term pushes current forget NLL above the reference, and an equally weighted retain NLL term opposes utility loss -> paged AdamW updates the full 1.24B-parameter model and exports complete Hugging Face weights ~~~
The baseline uses learning rate 1.5e-5, weight decay 0.01, one warmup epoch, per-device batch 8, gradient accumulation 4, effective batch 32, seed 0, bfloat16, FlashAttention 2, and ZeRO-3 without offload. It requests ten epochs and actually completes 120 optimizer steps. Its receipt's completed_epoch value of 9 is a floored value derived from retained trainer state and does not supersede the 120/120 progress evidence. Trainer checkpoints are written by epoch, while the wrapper publishes numeric-progress artifacts and controls simultaneous formal retention.
The agent explicitly diagnosed the short fixed endpoint as unsuitable for formal replay. Its measured baseline also raised forget-answer NLL by 2.5965 but retain-answer NLL by 0.8994, exposing the forgetting–utility tradeoff it then investigated.
4. Four-hour exploration and decision process
The agent began with source, loss, asset, timer, and GPU inspection, then spent roughly nine minutes establishing the ten-epoch NPO control. The next ten minutes covered SimNPO, the five-epoch checkpoint, and export debugging, followed by roughly fifteen minutes for the 20-epoch run. Most remaining time went to two fresh long-horizon runs: about 73 minutes for 100 epochs and 111 minutes for 150 epochs. While those trained in the background, the agent checked finite losses, throughput, and GPU state, then finished with proxy evaluation, syntax checks, and submission.
U-01 - Establish the NPO control and test whether ten epochs are already excessive
Motivation and hypothesis. The agent needed an environment-matched control for throughput and proxy responsiveness. It also wanted a five-epoch intermediate point to determine whether the shipped endpoint merely added retain damage.
Concrete change and experimental setup. From the fixed anchor and seed 0, it ran shipped NPO for a requested ten epochs and completed 120 steps. Learning rate, beta, retain weight, and effective batch remained at shipped values. It evaluated both the final model and checkpoint-65, whose trainer state records epoch 5.0.
Observed result. Trainer runtime was 469.50 seconds and wrapper runtime 534.28 seconds, with 32,440 MiB peak memory and finite loss. At five epochs, candidate forget/retain NLL was 2.57735/1.22692, changes of 2.47889/1.05595, for proxy 1.42294. At ten epochs it was 2.69496/1.07041, changes of 2.59650/0.89944, for proxy 1.69705. Continuing improved both proxy directions. After training, the outer command returned 2 because the agent had edited the still-running shell script and it encountered a syntax error, but the training receipt, complete model, and later evaluation all passed.
Agent interpretation. The agent concluded that continued NPO was scientifically justified rather than time-filling because ten epochs improved both forgetting and retention relative to five.
Report assessment and confounds. The paired points share a run and seed, but there is still no seed replication. The proxy covers only 24 training rows per split and cannot establish official Extraction/MU behavior. The nonzero shell status is a publication-layer failure, not evidence that the already completed and independently evaluated model is invalid.
Decision and consequence. Five epochs was rejected; ten-epoch NPO became the control and motivated longer schedules.