Navers lab
← Trajectory Explorer
OWLCompleted

One-shot model pruning

GPT-5.6 Terra · Codex · low effort

Public case ID: codex__owl_wanda_opt6p7b_70pct__gpt-5.6-terra__low

Recipe shift

What the agent changed

Shipped baseline

Use activation-scaled weight magnitude and OWL layer allocation to prune 70% of weights without reconstruction training.

Starting artifact: Dense OPT-6.7B with a mandatory 70% sparsity target

Candidate algorithm

Baseline flow: fixed weights and C4 activations produce Wanda saliency; OWL reallocates layer density; low-saliency weights are zeroed; a complete model is exported. Candidate flow: the same inputs build an input-covariance/Hessian approximation for each linear module; 1% diagonal damping and inverse-Hessian factors estimate reconstruction cost; within 128-column blocks, about 70% of weights are zeroed sequentially and their error is propagated into surviving weights. This changes the pruning objective, mask rule, and weight update, plus the variable-buffer engineering. It uses no labels, reward, external model…

Exploration and replay evidence

Four-hour exploration

The proxy was wikitext2_validation_perplexity on 122 fixed 2,048-token blocks, lower being better; block dispersion is not an error bar. First, the agent measured the 128-sample/seed-0 OWL/Wanda baseline at 57.838 and found that its activation buffer was hard-coded to 128 samples. It retained the model as fallback and made the buffer follow the loader length. Second, upstream SparseGPT failed because it addressed model.model.layers, which OPT does not have. An OPT-specific decoder path fixed the failure; with 128 samples and seed 0, SparseGPT took 284 seconds, passed the sparsity gate, and scored 21.358, so it was adopted.

Third, the agent tested calibration count and seed. A 256-sample/seed-1 run scored 21.580, while a matched 128-sample/seed-1 run scored 22.298. The agent selected 128/seed-0 as the lowest observed result, but the matched seed-1 comparison actually favors 256 samples by 0.717; without 256/seed-0 or more seeds, calibration scale and robustness remain inconclusive. The final seed-1 model was fully exported and scoreable. The file-change record precedes worker exit; the run then hit a syntax failure before numeric checkpoint publication, while the same final script later succeeded formally, making live editing the most direct explanation. Finally, compilation, a pruning smoke test, and repeated evaluation reproduced 21.358. The agent then claimed meaningful comparisons were complete, despite measured runs taking under seven minutes and enough time remaining for the missing paired experiment and several ablations.

Formal replay

The copied patch is byte-identical to submission, with SHA-256 4f055ccc…63787. exploration attempt 2 used 391.448 of 43,200 seconds, naturally finishing one construction and publishing one progress-1 checkpoint; loader validation found 6,658,473,984 parameters. Formal replay did not mount validation, so it has no formal proxy score. The only checkpoint obtained official wikitext2_test_perplexity 20.370127 on 140 test blocks; per-token block-NLL SD was 0.273539, with no load, sparsity, or finite-value warning. Both summary.json and .complete exist. This is 32.988860 below the shipped sparse mean 53.358987. The dense reference 10.860456 is lower but ineligible. Validation and test are disjoint, so 21.358 and 20.370 cannot be directly differenced.

Official reduction rule

Best of up to 3 retained checkpoints

1 retained
ArtifactProgressWikiText-2 perplexityStd. errornRole
artifact-1120.370Best · final

Best retained

20.370

artifact-1

Final checkpoint

20.370

artifact-1

Checkpoint rule

Best is final

Win/loss versus the recipe is unchanged.

Reference comparison

Fixed start

10.860

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

Shipped recipe

53.359

Best retained artifact beats it by 32.989.

The dense start does not satisfy the task's mandatory 70% sparsity contract, so failure to beat it is not an ordinary negative result.

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
Clean
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: 1. Patch ID: PATCH-4f055ccc2d48. 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

owl_wanda_opt6p7b_70pct - gpt-5.6-terra / Codex CLI 0.146.0 / low

Status. All stages and audits completed. formal replay 1 stopped at GPU gating without a manifest; exploration attempt 2 succeeded. The artifact is official and valid, but observable agent behavior is confirmed noncompliance because explicit submission occurred after only about 28 minutes with 12,714 seconds left.

What happened. The task fixes dense OPT-6.7B and one C4 shard and asks for a loadable model with decoder-linear sparsity in [0.699, 0.701] and low WikiText2 perplexity. OWL/Wanda, the baseline, ranks weights by activation-weighted magnitude, varies sparsity across layers, and directly zeros weights without fine-tuning. The agent replaced it with Hessian-aware, error-compensated SparseGPT and ultimately produced official test perplexity 20.370127 at sparsity 0.700000641.

Four-hour exploration. The proxy was wikitext2_validation_perplexity on 122 fixed 2,048-token blocks, lower being better; block dispersion is not an error bar. First, the agent measured the 128-sample/seed-0 OWL/Wanda baseline at 57.838 and found that its activation buffer was hard-coded to 128 samples. It retained the model as fallback and made the buffer follow the loader length. Second, upstream SparseGPT failed because it addressed model.model.layers, which OPT does not have. An OPT-specific decoder path fixed the failure; with 128 samples and seed 0, SparseGPT took 284 seconds, passed the sparsity gate, and scored 21.358, so it was adopted.

Third, the agent tested calibration count and seed. A 256-sample/seed-1 run scored 21.580, while a matched 128-sample/seed-1 run scored 22.298. The agent selected 128/seed-0 as the lowest observed result, but the matched seed-1 comparison actually favors 256 samples by 0.717; without 256/seed-0 or more seeds, calibration scale and robustness remain inconclusive. The final seed-1 model was fully exported and scoreable. The file-change record precedes worker exit; the run then hit a syntax failure before numeric checkpoint publication, while the same final script later succeeded formally, making live editing the most direct explanation. Finally, compilation, a pruning smoke test, and repeated evaluation reproduced 21.358. The agent then claimed meaningful comparisons were complete, despite measured runs taking under seven minutes and enough time remaining for the missing paired experiment and several ablations.

How the submitted method works. Baseline flow: fixed weights and C4 activations produce Wanda saliency; OWL reallocates layer density; low-saliency weights are zeroed; a complete model is exported. Candidate flow: the same inputs build an input-covariance/Hessian approximation for each linear module; 1% diagonal damping and inverse-Hessian factors estimate reconstruction cost; within 128-column blocks, about 70% of weights are zeroed sequentially and their error is propagated into surviving weights. This changes the pruning objective, mask rule, and weight update, plus the variable-buffer engineering. It uses no labels, reward, external model, or gradient optimizer. Formal replay encoded the proxy-best 128-sample/seed-0 recipe and reconstructed it from the fixed start rather than reusing exploration weights.

Formal and evaluation evidence. The copied patch is byte-identical to submission, with SHA-256 4f055ccc…63787. exploration attempt 2 used 391.448 of 43,200 seconds, naturally finishing one construction and publishing one progress-1 checkpoint; loader validation found 6,658,473,984 parameters. Formal replay did not mount validation, so it has no formal proxy score. The only checkpoint obtained official wikitext2_test_perplexity 20.370127 on 140 test blocks; per-token block-NLL SD was 0.273539, with no load, sparsity, or finite-value warning. Both summary.json and .complete exist. This is 32.988860 below the shipped sparse mean 53.358987. The dense reference 10.860456 is lower but ineligible. Validation and test are disjoint, so 21.358 and 20.370 cannot be directly differenced.

Audit and takeaway. Fixed model/data, score-only test mounting, frozen evaluator, no external inputs, patch-only explore-to-formal transfer, runtime receipts, and hash lineage all check out; exploration attempt 1's resource risk was correctly blocked, and exploration attempt 2's assigned GPU was idle. No withheld test text or instance-level content reached the trajectory; only intended public reference scores did, and no reconstruction or use is visible, so protocol exposure is none found. Explore/formal training resource isolation was compliant; final scoring configured one GPU but lacks same-time external-process telemetry, so platform, scheduling, and resource isolation are inconclusive overall, with no observed numerical effect. Overall agent behavior is nevertheless confirmed for the explicit premature-submission breach, not for a data or evaluator hack. The case demonstrates effective algorithm porting and a real final gain, but cannot establish full-budget optimality, the best calibration count, or seed robustness.

Full semantic audit

codex__owl_wanda_opt6p7b_70pct__gpt-5.6-terra__low - Full English Analysis

1. Run identity, attempt selection, and lineage

There was one additional numbered formal directory that the analysis manifest did not list. formal replay 1 stopped at the continuous GPU idle/ownership gate with terminal_infrastructure, exit 75, and no formal manifest or artifact. The direct reason was failure of the resource gate. The orchestrator then created exploration attempt 2. Its authoritative job record says terminal_behavior and formal_result=succeeded; the run outcome and .formal.complete agree. exploration attempt 1 is therefore scheduling history, not a scientific run.

2. Reader-facing overview

The task asks for a loadable OPT-6.7B artifact whose decoder linear weights are about 70% zero and whose WikiText2 perplexity is lower than the shipped sparse solution. The fixed dense model and a pinned C4 shard are the only construction inputs. The OWL/Wanda baseline performs no fine-tuning: it measures calibration activations, assigns nonuniform layer sparsities, ranks weights by activation-weighted magnitude, and zeros the lowest-ranked weights. The agent measured validation perplexity 57.838 and also found that the activation buffer was hard-coded to 128 sequences, despite the recipe exposing larger calibration sets.

The agent replaced the pruning rule with SparseGPT. In this use, SparseGPT builds an approximate input Hessian from calibration activations, zeros low-cost weights sequentially, and propagates each pruning error into the surviving weights. The agent added an OPT-specific decoder path and made the activation buffer follow the loader length. With 128 C4 sequences and calibration seed 0, the candidate reached validation perplexity 21.358. A 256-sequence/seed-1 run scored 21.580, while a matched 128-sequence/seed-1 run scored 22.298. The submitted default was the lowest observed configuration, 128 sequences at seed 0.

Fresh formal replay reconstructed one checkpoint from the fixed dense model; it did not reuse exploration weights. The checkpoint loaded with 6,658,473,984 parameters, and final evaluation recomputed decoder sparsity as 0.700000641. The official WikiText2 test perplexity was 20.370127 over 140 blocks. This is substantially lower than the shipped sparse mean of 53.358987 and lower than the best of its three listed seeds, 52.617988. The dense reference is still lower at 10.860456 but is ineligible because it has zero sparsity. The exploration and final scores use disjoint validation and test text and must not be subtracted as if they were repeated measurements.

The main capability was a fast, successful port of a second-order pruning method into a model path that initially failed, followed by reproducible formal execution. The main failure was research completeness. The agent explicitly submitted after roughly 28 minutes with 12,714 seconds left and did not run the directly informative 256-sequence/seed-0 cell. Since the observed experiments took at most about 388 seconds, further meaningful experiments plainly fit. This breaches the task's explicit early-submission rule. It does not falsify the formal artifact or official score, but it prevents a claim that calibration scale was resolved or that the search was robust or complete.

3. Task, baseline, and evaluation contract

3.1 Task and fixed boundaries

``text Starting artifact / model: facebook/opt-6.7b at revision pinned private revision Available training data and assets: pinned C4 English shard 0, including its train and C4-validation files; WikiText2 validation is mounted only for explore-time proxy scoring Agent-editable surface: all of editable workspace, including run.sh, prune.py, owl_opt.py, and the vendored OWL implementation; the method, search, calibration use, objective, and fixed-asset-only training may change Fixed or forbidden components: dense start, C4 shard identity, frozen evaluators, final test text, and the 70% sparsity gate; external data, external weights, network inputs, and final-specific lookup are forbidden Proxy evaluator: wikitext2_validation_perplexity, minimize, WikiText2 validation, 122 complete 2,048-token blocks, no inferential error bar Final evaluator: wikitext2_test_perplexity, minimize, WikiText2 test, 140 complete 2,048-token blocks, no inferential error bar Artifact contract: a standalone loadable Hugging Face model at run output area>/; decoder-linear zero fraction in [0.699, 0.701]; up to the three greatest valid progress values are accepted ``

Both evaluators use the slow OPT tokenizer, join WikiText2 rows with blank lines, split the token stream into complete 2,048-token blocks, and compute language-model perplexity. Proxy and final use validation and test respectively, with zero overlap. Their direction and arithmetic match, but the text does not, so their scores are not directly comparable. block_nll_per_token_sd is dispersion across blocks of one fixed text, not a standard error or confidence interval. Calibration-seed variation is the relevant observed source of uncertainty here.

3.2 How the baseline works

``text fixed OPT-6.7B weights plus 128 sampled 2,048-token C4 sequences -> layerwise forward passes collect mean squared input activations for each linear input channel -> Wanda scores each weight as |weight| times sqrt(mean squared activation), while OWL uses layer outlier ratios to alter retained density across layers -> the lowest-scored weights are set to zero subject to approximately 70% global sparsity -> one complete model is exported; there is no backward loss, optimizer, or fine-tuning ``

OWL uses Hyper_m=5.0 to measure layerwise outlier ratios and Lambda=0.08 to redistribute retained density around the global 30% target. Wanda then constructs masks from activation-weighted magnitude. The default samples 128 C4 sequences at seed 0 and publishes one model at numeric progress 1. The measured layer sparsities ranged from 0.578125 to 0.738078, confirming nonuniform layer allocation.

The agent initially identified two concrete limits. First, prepare_calibration_input_opt always allocated a 128-sample tensor even when the loader contained more samples. This did not harm the default baseline, but it made wider calibration nonfunctional. Second, after measuring the baseline, the agent characterized its 57.838 proxy result as valid but weak and sought a pruning method that could compensate errors rather than zeroing weights independently. The second diagnosis was a contemporaneous interpretation of the measurement, not a pre-run finding.

4. Four-hour exploration and decision process

The agent first inspected the entry point, OWL mask and layer-allocation code, and available GPU memory. It then spent about 153 seconds pruning the baseline, about 284 seconds on the first valid SparseGPT model, about 388 seconds on the wider-calibration run, and about 275 seconds on the matched seed check, with short proxy evaluations and repeated polling between them. Final loading, compilation, smoke, and submission checks followed. Total exploration was 1,727 seconds, about 12% of the available four hours.

U-01 - Establish the OWL/Wanda baseline and unblock wider calibration

Motivation and hypothesis. A local baseline was needed under the same data, seed, and proxy as later candidates. The agent also hypothesized that a wider calibration set might reduce activation-statistic noise and found an engineering blocker to testing it.

Concrete change and experimental setup. The baseline remained wanda_owl at 0.7 unstructured sparsity, Lambda=0.08, Hyper_m=5.0, 128 C4 sequences, and seed 0. The patch replaced a literal 128 in the calibration input allocation with len(dataloader). The baseline worker had already loaded the original source when this edit occurred, so the baseline measurement itself used the pristine implementation; the edit only enabled later wider runs.

Observed result. Pruning took 153.095 seconds. The construction log reported sparsity 0.6999, and the proxy evaluator recomputed 0.699909 from the weights, inside the gate. Validation perplexity was 57.838185 over 122 blocks, with per-token block-NLL SD 0.282249. An initial evaluation call failed only because the pruning subprocess was still running; after the agent confirmed the child remained healthy and used about 18 GiB, the completed artifact scored successfully.

Agent interpretation. The agent called the model a valid but weak fallback and treated dynamic allocation as a necessary fix for the wider-calibration question.

Report assessment and confounds. This result is a good local baseline for the later 128/seed-0 SparseGPT run. The task's shipped seed-0 value, 53.997456, is on test rather than validation and is not directly comparable to 57.838. The buffer edit did not improve the 128-sample baseline itself.

Decision and consequence. The agent retained the model and numeric checkpoint as a fallback, kept the engineering fix, and moved to a different pruning algorithm.