Files in this repro/ pack (drop into the repo root):
| File | Purpose |
|---|---|
requirements.txt |
Pinned deps (torch/numpy/scipy/tiktoken/datasets + Muon-by-commit). Replaces the current 0-byte file. |
README.md |
Full install/data/run/results-layout/scope. Replaces the current 2-line file. |
clean_repo.sh |
Dry-run cruft report; --apply to delete. |
test_gnce_equivalence.py |
CI guard that Phase-B and Phase-D share the same nce_loss on the 'roll' path (no torch needed). |
-
Verify the Muon pin against your box.
requirements.txtpinsgit+https://github.com/KellerJordan/Muon@056a3c5869cf#egg=muon. That SHA is the last upstream commit at or before the training instance's setup date (2026-05-18, fromresults/.instance_log); it was inferred, not read off the training environment. If the box is still reachable, confirm withpip show muon. Without a pin the optimizer can silently change under a futurepip install. -
Torch/CUDA version. No result JSON recorded the torch or CUDA version, so
requirements.txtuses a conservative range (torch>=2.4,<2.10). If you know the exact training version, pin it.
- 90
*:Zone.Identifiersidecars (Windows "downloaded-from-internet" metadata) — one per file.clean_repo.sh --applyremoves them. .instance_logwas committed (a setup timestamp, no secrets). Removed from the tree, and.gitignorenow excludes it.setup.shhardcoded a placeholder git identity (user.email "yash@research.local"). Removed; the file now carries only a commented example, so the cloning user sets their own.setup.shcreatedresults/phase_eandresults/phase_fbefore either existed. It now creates the directories the shipped scripts actually write to:phase_a--phase_e,norm_supportandcheckpoints. There is nophase_f..gitignorewas the stock GitHub Python template and ignored neither.instance_lognor*Zone.Identifier. Both are now ignored, along with the LaTeX build intermediates underpaper/venues/*/.
An earlier pass said the two GNCELoss copies "match." They are not
byte-identical: auxiliary_losses_ablation.py adds an
if self.neg_type == 'roll' / else branch (to support random negatives) that
the main auxiliary_losses.py lacks. What matters for validity is that the
'roll' branch is operation-identical to the main loop — this is now
enforced by test_gnce_equivalence.py (verified passing against the current
repo: the roll-specialized AST equals the main nce_loss AST exactly).
*.ptweight caches and_partial_*.jsonare already git-ignored.- No credentials, tokens, or API keys found in any tracked file.
- All 5 patched source files (see
../code_fixes/) passpython -m py_compile.