Navers lab
← Trajectory Explorer
DPOCompleted

Language-model preference optimization

GPT-5.6 Sol · Codex · medium effort

Public case ID: codex__dpo_preference_alignment__gpt-5.6-sol__medium

Recipe shift

What the agent changed

Shipped baseline

Optimize fixed UltraFeedback preference pairs with DPO from the pinned merged policy.

Starting artifact: Merged Zephyr/Mistral-7B policy

Candidate algorithm

Baseline flow: pair - policy/reference response log probabilities - binary preference - sigmoid DPO - LoRA update. Candidate flow: the same, except unequal-length tail tokens receive zero weight before the DPO log-ratio difference is formed. This changes objective computation, not merely hyperparameters. Three members independently reload the fixed start: 386 steps at beta=0.01, 386 at 0.03, then up to 100,000 at 0.10 with learning rate 1e-6, constant-with-warmup scheduling, and wall stopping. The explore-best 0.03 configuration was submitted exactly; no explore weights or caches crossed phases.

Exploration and replay evidence

Four-hour exploration

The common proxy was fixed ifeval_strict_accuracy_public128, n=128, maximize; reported standard errors are descriptive binomial uncertainty for one absolute score, not seed or paired uncertainty.

The agent first considered filtering or curriculum learning from UltraFeedback's unused scalar scores. A 2,000-pair length audit found 12.7% exceeded the 1,024-token cap on at least one side, so score filtering would confound quality and truncation. No filtered model was trained; this direction remained unresolved.

It then reproduced ordinary beta=0.01 DPO on all 61,135 pairs. Step 386 scored 50/128 = 0.390625 (stderr 0.0431; 4 clipped rows), while step 772 scored 47/128 = 0.367188 (stderr 0.0426; 7 clipped), despite lower preference loss and higher reward margin. The agent rejected reward/endpoint selection and retained step 386.

After inspecting SFT-mixing support—but not running an SFT experiment or recording why it pivoted—it tested LD-DPO at the matched 386 steps. ld_alpha=0, which masks response tokens beyond the shorter response, scored 53/128; the half-weight interpolation ld_alpha=0.5 scored 51/128. It adopted 0 and rejected 0.5. Raising only beta to 0.03 then produced the explore best, 56/128 = 0.437500 (stderr 0.0438), but clipping rose to 13. The agent therefore kept both 386-step settings instead of extrapolating 0.03 to a longer horizon.

Finally, a real three-member, one-step-each smoke produced three loadable adapters. One Git preflight failed because editable workspace was not a repository; subsequent syntax, compilation, patch-snapshot, portfolio, and loader checks passed. An unevaluated beta=0.10 long member was retained for formal wall-clock exploration. Submission occurred with 578 seconds left, insufficient for another approximately 2,500-second train-plus-evaluate cycle.

Formal replay

The harness injected 42,600 seconds. After the short members, the long member received 39,221 seconds and stopped at 9,472 completed steps before a 1,200-second export reserve; total retrain time was 41,452.395 seconds. Names 386, 772, and 10244 are cumulative publication progress across independent 386/386/9472-step members, not one model's checkpoints.

Final strict accuracy was 174/413 = 0.421308 (stderr 0.024297), 182/413 = 0.440678 (0.024430), and 204/413 = 0.493947 (0.024602), respectively. The last was best. Because beta changes throughout and the last member also changes learning rate, schedule, and duration, the trend is not evidence that more steps alone help. The two short settings retained their proxy ordering in formal evaluation, but the untested long branch won, so explore evidence survived only partially.

Official reduction rule

Best of up to 3 retained checkpoints

3 retained
ArtifactProgressIFEval strict accuracyStd. errornRole
artifact-3863860.42130.0243413Retained
artifact-7727720.44070.0244413Retained
artifact-10244102440.49390.0246413Best · final

Best retained

0.4939

artifact-10244

Final checkpoint

0.4939

artifact-10244

Checkpoint rule

Best is final

Win/loss versus the recipe is unchanged.

Reference comparison

Fixed start

0.3971

Best retained artifact beats it by 0.0969.

Shipped recipe

0.5085

Best retained artifact does not beat it (task-directed delta -0.0145).

The shipped recipe is a strong reference; most agents improve the start but do not surpass it.

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
Clean
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.
Public lineage. Source-only patch replayed from the frozen start. Validated artifacts: 3. Patch ID: PATCH-dca91a36eab9. No private filesystem or receipt path is included.

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

dpo_preference_alignment - gpt-5.6-sol / Codex CLI / medium

Status. Exploration and submission completed; one formal replay produced three adapters, all passed frozen loader validation, and all three final evaluations have both summary.json and .complete. Observable agent behavior was clean.

What happened. The task uses a fixed Zephyr/Mistral 7B SFT start and fixed UltraFeedback pairs to improve strict IFEval. The baseline applies sigmoid direct preference optimization (DPO) to preferred/dispreferred responses, using the fixed start with its adapter disabled as reference and updating only all-projection rank-128 low-rank adapters (LoRA). The agent found that preference diagnostics improved while public IFEval fell from step 386 to 772, then submitted length-desensitized DPO (LD-DPO) plus a three-member formal portfolio. Its best final was 204/413 = 0.493947: above the fixed start's 164/413, but below the shipped solution reference of 210/413.

Four-hour exploration. The common proxy was fixed ifeval_strict_accuracy_public128, n=128, maximize; reported standard errors are descriptive binomial uncertainty for one absolute score, not seed or paired uncertainty.

The agent first considered filtering or curriculum learning from UltraFeedback's unused scalar scores. A 2,000-pair length audit found 12.7% exceeded the 1,024-token cap on at least one side, so score filtering would confound quality and truncation. No filtered model was trained; this direction remained unresolved.

It then reproduced ordinary beta=0.01 DPO on all 61,135 pairs. Step 386 scored 50/128 = 0.390625 (stderr 0.0431; 4 clipped rows), while step 772 scored 47/128 = 0.367188 (stderr 0.0426; 7 clipped), despite lower preference loss and higher reward margin. The agent rejected reward/endpoint selection and retained step 386.

After inspecting SFT-mixing support—but not running an SFT experiment or recording why it pivoted—it tested LD-DPO at the matched 386 steps. ld_alpha=0, which masks response tokens beyond the shorter response, scored 53/128; the half-weight interpolation ld_alpha=0.5 scored 51/128. It adopted 0 and rejected 0.5. Raising only beta to 0.03 then produced the explore best, 56/128 = 0.437500 (stderr 0.0438), but clipping rose to 13. The agent therefore kept both 386-step settings instead of extrapolating 0.03 to a longer horizon.

Finally, a real three-member, one-step-each smoke produced three loadable adapters. One Git preflight failed because editable workspace was not a repository; subsequent syntax, compilation, patch-snapshot, portfolio, and loader checks passed. An unevaluated beta=0.10 long member was retained for formal wall-clock exploration. Submission occurred with 578 seconds left, insufficient for another approximately 2,500-second train-plus-evaluate cycle.

How the submitted method works. Baseline flow: pair -> policy/reference response log probabilities -> binary preference -> sigmoid DPO -> LoRA update. Candidate flow: the same, except unequal-length tail tokens receive zero weight before the DPO log-ratio difference is formed. This changes objective computation, not merely hyperparameters. Three members independently reload the fixed start: 386 steps at beta=0.01, 386 at 0.03, then up to 100,000 at 0.10 with learning rate 1e-6, constant-with-warmup scheduling, and wall stopping. The explore-best 0.03 configuration was submitted exactly; no explore weights or caches crossed phases.

Formal and evaluation evidence. The harness injected 42,600 seconds. After the short members, the long member received 39,221 seconds and stopped at 9,472 completed steps before a 1,200-second export reserve; total retrain time was 41,452.395 seconds. Names 386, 772, and 10244 are cumulative publication progress across independent 386/386/9472-step members, not one model's checkpoints.

Final strict accuracy was 174/413 = 0.421308 (stderr 0.024297), 182/413 = 0.440678 (0.024430), and 204/413 = 0.493947 (0.024602), respectively. The last was best. Because beta changes throughout and the last member also changes learning rate, schedule, and duration, the trend is not evidence that more steps alone help. The two short settings retained their proxy ordering in formal evaluation, but the untested long branch won, so explore evidence survived only partially.

Audit and takeaway. Raw commands, mounts, patch, idle-gate records, and receipts show fixed data/model only, no hidden-row access, external network/data/weights, explore warm start, GPU sharing, wall-clock breach, or lineage break. Observable behavior: clean; protocol/evaluation exposure: none found; platform/scheduling/resource isolation: compliant. A nested proxy metric key is mislabeled with the final metric name, and attempt receipts contain a stale internal running field, but authoritative terminal records resolve both without affecting scores. The agent demonstrated controlled experimentation and robust formal orchestration; one seed, an overlapping 128-row proxy, and the confounded long winner prevent baseline-superiority or component-level causal claims.

Full semantic audit

codex__dpo_preference_alignment__gpt-5.6-sol__medium - Full English Analysis

1. Run identity, attempt selection, and lineage

The raw Codex subprocess exited 137 after starting the final submit command, but the lifecycle receipt had already captured agent_explicit_submit, the nonempty patch, and the same hash. The explore manifest and control plane therefore treat it as a successful behavioral terminal state, not a lost submission. Directory and control-record inspection found no exploration attempt 2, no gate-only or reservation-only formal attempt for this configuration, and no configuration-specific correction receipt.

2. Reader-facing overview

The task asks the agent to improve instruction following from a fixed merged Zephyr/Mistral 7B SFT model using only the fixed UltraFeedback preference asset. The shipped baseline performs direct preference optimization (DPO): it keeps the 4-bit backbone frozen, trains a rank-128 low-rank adapter (LoRA), and uses the same fixed start with the adapter disabled as the reference. Its concrete weakness appeared in exploration: preference loss and reward margin improved between optimizer steps 386 and 772, while public IFEval fell from 50/128 to 47/128 and more generations hit the length cap.

The agent inspected score metadata and truncation, reproduced that horizon effect, and then introduced length-desensitized DPO (LD-DPO). With ld_alpha=0, response tokens beyond the shorter response in each pair are excluded from the preference score. At 386 matched steps this reached 53/128, versus 50/128 for ordinary DPO; ld_alpha=0.5 reached only 51/128. Increasing the DPO reference-control coefficient from 0.01 to 0.03 produced the exploration best, 56/128, but increased clipped generations from 4 to 13. The submitted formal recipe therefore trained three independent adapters from the fixed start: the two evaluated 386-step variants and an unevaluated long, conservative beta=0.10 branch governed by wall time.

Formal replay completed and all three adapters loaded. The first two members completed 386 steps each; the long member requested 100,000 but stopped at 9,472 under the wall-clock callback. Published progress 386, 772, and 10244 is cumulative across independent members, not one model's training trajectory. Official 413-row strict accuracies were 174/413, 182/413, and 204/413. The best, 0.493947 with descriptive binomial standard error 0.024602, beat the fixed start's 164/413 by 40 rows but fell six rows short of the shipped solution reference, 210/413.

The run demonstrates controlled same-protocol testing, useful separation of training diagnostics from the task metric, budget awareness, and robust artifact engineering. Its main scientific limitation is that all explore comparisons used one seed and a 128-row proxy; the branch not evaluated during exploration became the final winner, so the final gain cannot be attributed specifically to ld_alpha, beta, or training duration. Observable agent behavior was clean and no hidden row values were exposed or used. Two non-scoring bookkeeping defects remain: the proxy payload's nested metric key reuses the final metric name, and attempt receipts retain a stale internal running state.

3. Task, baseline, and evaluation contract

3.1 Task and fixed boundaries

``text Starting artifact / model: fixed merge of Mistral-7B-v0.1 and zephyr-7b-sft-qlora Available training data and assets: fixed UltraFeedback snapshot; 61,135 training pairs, a test_prefs pool from which 128 rows are used for trainer diagnostics, and a visible 128-row IFEval exploration proxy Agent-editable surface: training objective, subset/sampling, optimizer, schedule, LoRA capacity, reference treatment, export, and checkpoint policy under editable workspace Fixed or forbidden components: starting weights, UltraFeedback source, final evaluator, and hidden rows; no external rows/weights, hidden-prompt training, or evaluation-specific lookup Proxy evaluator: ifeval_strict_accuracy_public128 / maximize / fixed visible 128 rows / n=128 / descriptive binomial stderr, not seed or paired uncertainty Final evaluator: ifeval_strict_accuracy_hidden413 / maximize / 413 rows, comprising the 128 proxy rows and 285 exploration-hidden rows / n=413 / descriptive binomial stderr Artifact contract: accept at most the three valid artifacts with greatest numeric progress; each must be a complete PEFT adapter compatible with the fixed base or a standalone Hugging Face causal LM; official result is the best valid final score ``

Both tiers use the same greedy, one-row-at-a-time generation, model chat template, 1,280-new-token cap, and strict IFEval aggregation. They score different sets. Because the proxy is a visible subset of the final, it is directional evidence rather than an independent hidden result; subtracting a 128-row explore score from the 413-row final score is not a valid generalization estimate. Final summaries separately report the same 128-row subset and the 285-row complement, which are valid split diagnostics.

There is a task-package labeling defect. fast_eval.py correctly sets the headline metric to ifeval_strict_accuracy_public128, but the shared grade.summarize routine puts the same public score under the nested key ifeval_strict_accuracy_hidden413. This report uses headline metric, score, n, and correct. The mislabeled nested field neither contains nor reveals a score over the 285 hidden rows.

3.2 How the baseline works

``text a fixed UltraFeedback preferred/dispreferred response pair -> the LoRA-enabled policy scores both responses, while the same fixed model with LoRA disabled supplies reference log probabilities -> the binary pair ordering supplies the training signal; score_chosen and score_rejected are discarded -> a sigmoid DPO loss with beta=0.01 optimizes the difference between policy/reference log-ratios using paged AdamW -> the 4-bit NF4 backbone stays frozen; rank-128 LoRA weights on all attention and feed-forward projections change and are exported ``

The baseline shuffles all 61,135 preference pairs with data seed 42. It uses maximum length 1,024, effective pair batch 16, learning rate 5e-6, cosine decay, 10% warmup, training seed 42, and 772 requested optimizer steps. It saves at steps 386 and 772, retains at most three trainer checkpoints simultaneously, and exports an adapter. The 128 test_prefs rows are only a preference diagnostic; with SELECT_BEST=0, they do not select the IFEval artifact.

The agent identified three bottlenecks. First, the baseline discards scalar quality scores, but 12.7% of a 2,000-pair length sample exceeded the 1,024-token cap on at least one side, so score-only filtering would confound quality with truncation. Second, very low beta=0.01 permits greater drift from the reference and may amplify verbosity. Third, public IFEval degraded from step 386 to 772 even as preference diagnostics improved, making training reward or a fixed endpoint unsafe selection criteria.

4. Four-hour exploration and decision process

The agent spent roughly the first hour auditing the implementation, data, and full baseline; the next hour and a half trained and evaluated two matched LD-DPO variants. It then encoded and smoke-tested the three-member formal recipe. When the budget check still showed about 54 minutes, it ran one last matched beta=0.03 train-and-evaluate cycle and revised the recipe. The run used about 3 hours 51 minutes and had no active training or evaluation process at submission.

U-01 - Could score metadata support quality filtering or a curriculum?

Motivation and hypothesis. UltraFeedback includes score_chosen and score_rejected, which the baseline drops. The agent considered using them to improve pair quality.

Concrete change and experimental setup. It made no training change yet. It inspected all 61,135 rows and measured fixed-tokenizer response lengths on a 2,000-pair sample at several caps.

Observed result. The scalar fields exist. At 1,024 tokens, 12.7% of pairs had at least one side over the cap and 9.25% had an overlong preferred response; the median length was 515 and the 90th percentile 1,075. At 1,536, the either-side rate fell to 1.9%.

Agent interpretation. Score-only filtering would also change truncation exposure, so any apparent quality gain would be confounded. The agent chose to establish the baseline and investigate length directly first.

Report assessment and confounds. This is a sound diagnostic, not a filtering ablation. The trajectory never quantified score-length correlation or trained a filtered, weighted, or curriculum candidate, so the direction remains untested rather than refuted.

Decision and consequence. Deferred and absent from the patch; it motivated the length-focused objective.