EleutherAI / EleutherAI/pythia

pythia-12b: step50000 and step58000 serve the final checkpoint's first shard (embed_in + early layers)

Open
#206 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Jupyter Notebook
Stars
2.9k
Forks
224
PR merge metrics
No merged PRs in 30d

Description

While extracting embedding matrices across the full Pythia checkpoint grid (HTTP range reads only), we found two pythia-12b step branches whose first weight shard is the final model's.

## File-level evidence

`pytorch_model-00001-of-00003.bin` — the shard holding `gpt_neox.embed_in.weight` per `pytorch_model.bin.index.json` on every branch checked — has sha256
`9d21715462588073675eca9c65ba55a47d911da460a6083938d04acd4589f542`
on exactly four refs: `main`, `step143000`, **`step50000`, and `step58000`**. All other 151 step branches have unique first shards, and shards 2–3 (including `embed_out.weight`, shard 3) are unique per branch everywhere. (`main` = `step143000` is expected; the anomaly is the two mid-training branches.)

Hash table attached (`upstream_12b_shard1_hashes.csv`).

## Tensor-level evidence

The input-embedding statistics at steps 50000, 58000, and 143000 are bit-identical, and discontinuous with their neighbours — while the true end of training is smooth (median input-embedding L2 | median cosine-to-initialization):

| step | in-L2 | cos-init |
|---|---|---|
| 49000 | 1.5169 | 0.5935 |
| **50000** | **1.3056** | **0.5110** |
| 51000 | 1.5132 | 0.5869 |
| 57000 | 1.5003 | 0.5695 |
| **58000** | **1.3056** | **0.5110** |
| 59000 | 1.4952 | 0.5646 |
| 141000 | 1.3082 | 0.5112 |
| 142000 | 1.3069 | 0.5111 |
| 143000 | 1.3056 | 0.5110 |

The duplicated values continue the 141000→143000 trend exactly, so the shard's true home is the final checkpoint: `step50000` and `step58000` carry the final model's shard 1 in place of their own.

## Scope

We verified shard 1 by sha256 and by embedding bytes. Shards 2–3 have unique hashes on these branches, so the swap appears limited to shard 1 — but every tensor within shard 1 (embeddings and early layers) on those two branches would be final-model content.

## Impact

Learning-dynamics analyses touching pythia-12b around steps 50000/58000 will silently mix final-model weights into mid-training trajectories. (In our own analyses we drop these two steps and keep the genuine final checkpoint.)

## Reproduction (no downloads required)

1. `GET https://huggingface.co/api/models/EleutherAI/pythia-12b/tree/`; compare `lfs.oid` of `pytorch_model-00001-of-00003.bin` across branches.
2. Range-read `gpt_neox.embed_in.weight` from `step50000` and `step143000` and compare bytes.

Happy to share the extraction code and full per-step statistics.

[upstream_12b_shard1_hashes.csv](https://github.com/user-attachments/files/31050477/upstream_12b_shard1_hashes.csv)

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by comparing the lfs.oid for pytorch_model-00001-of-00003.bin through the Hugging Face model-tree API, then range-read gpt_neox.embed_in.weight for step50000 and step143000. The reported evidence covers shard 1, but the issue does not specify the repository change or artifact-correction process that would define done.

Written by the indexing model from the issue text.

Assessment

Domain
machine-learning
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.