Matteo He commited on
Release crosscoder + SAE + attribution artifacts
Browse filesThis view is limited to 50 files because it contains too many changes. See raw diff
- README.md +83 -0
- attribution/pythia-160m/induction-results.pt +3 -0
- attribution/pythia-160m/induction-verdict.json +11 -0
- attribution/pythia-160m/ioi-results.pt +3 -0
- attribution/pythia-160m/ioi-verdict.json +11 -0
- attribution/pythia-160m/sva-results.pt +3 -0
- attribution/pythia-160m/sva-verdict.json +11 -0
- pythia-160m/W_E/cross-snapshot-32/d24576/seed0.config.json +119 -0
- pythia-160m/W_E/cross-snapshot-32/d24576/seed0.md +38 -0
- pythia-160m/W_E/cross-snapshot-32/d24576/seed0.safetensors +3 -0
- pythia-160m/W_E/cross-snapshot-32/d8192/seed0.config.json +113 -0
- pythia-160m/W_E/cross-snapshot-32/d8192/seed0.md +38 -0
- pythia-160m/W_E/cross-snapshot-32/d8192/seed0.safetensors +3 -0
- pythia-160m/W_E/cross-snapshot-32/d8192/seed1.config.json +119 -0
- pythia-160m/W_E/cross-snapshot-32/d8192/seed1.md +38 -0
- pythia-160m/W_E/cross-snapshot-32/d8192/seed1.safetensors +3 -0
- pythia-160m/W_E/cross-snapshot-32/d8192/seed2.config.json +119 -0
- pythia-160m/W_E/cross-snapshot-32/d8192/seed2.md +38 -0
- pythia-160m/W_E/cross-snapshot-32/d8192/seed2.safetensors +3 -0
- pythia-160m/W_E/cross-snapshot-32/d8192/seed3.config.json +119 -0
- pythia-160m/W_E/cross-snapshot-32/d8192/seed3.md +38 -0
- pythia-160m/W_E/cross-snapshot-32/d8192/seed3.safetensors +3 -0
- pythia-160m/W_E/cross-snapshot-32/d8192/seed4.config.json +119 -0
- pythia-160m/W_E/cross-snapshot-32/d8192/seed4.md +38 -0
- pythia-160m/W_E/cross-snapshot-32/d8192/seed4.safetensors +3 -0
- pythia-160m/W_U/architecture-comparison/d8192/batchtopk/seed0.config.json +74 -0
- pythia-160m/W_U/architecture-comparison/d8192/batchtopk/seed0.md +38 -0
- pythia-160m/W_U/architecture-comparison/d8192/batchtopk/seed0.safetensors +3 -0
- pythia-160m/W_U/architecture-comparison/d8192/gated-retuned/seed0.config.json +74 -0
- pythia-160m/W_U/architecture-comparison/d8192/gated-retuned/seed0.md +38 -0
- pythia-160m/W_U/architecture-comparison/d8192/gated-retuned/seed0.safetensors +3 -0
- pythia-160m/W_U/architecture-comparison/d8192/gated/seed0.config.json +74 -0
- pythia-160m/W_U/architecture-comparison/d8192/gated/seed0.md +38 -0
- pythia-160m/W_U/architecture-comparison/d8192/gated/seed0.safetensors +3 -0
- pythia-160m/W_U/cross-snapshot-16/d8192/seed0.config.json +87 -0
- pythia-160m/W_U/cross-snapshot-16/d8192/seed0.md +38 -0
- pythia-160m/W_U/cross-snapshot-16/d8192/seed0.safetensors +3 -0
- pythia-160m/W_U/cross-snapshot-32/d16384/seed0.config.json +111 -0
- pythia-160m/W_U/cross-snapshot-32/d16384/seed0.md +38 -0
- pythia-160m/W_U/cross-snapshot-32/d16384/seed0.safetensors +3 -0
- pythia-160m/W_U/cross-snapshot-32/d24576/seed0.config.json +119 -0
- pythia-160m/W_U/cross-snapshot-32/d24576/seed0.md +38 -0
- pythia-160m/W_U/cross-snapshot-32/d24576/seed0.safetensors +3 -0
- pythia-160m/W_U/cross-snapshot-32/d24576/seed1.config.json +119 -0
- pythia-160m/W_U/cross-snapshot-32/d24576/seed1.md +38 -0
- pythia-160m/W_U/cross-snapshot-32/d24576/seed1.safetensors +3 -0
- pythia-160m/W_U/cross-snapshot-32/d24576/seed2.config.json +119 -0
- pythia-160m/W_U/cross-snapshot-32/d24576/seed2.md +38 -0
- pythia-160m/W_U/cross-snapshot-32/d24576/seed2.safetensors +3 -0
- pythia-160m/W_U/cross-snapshot-32/d8192/seed0.config.json +111 -0
README.md
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
license: apache-2.0
|
| 3 |
+
tags:
|
| 4 |
+
- crosscoder
|
| 5 |
+
- sparse-autoencoder
|
| 6 |
+
- mech-interp
|
| 7 |
+
- parameter-trajectory
|
| 8 |
+
- pythia
|
| 9 |
+
- olmo
|
| 10 |
+
---
|
| 11 |
+
|
| 12 |
+
# Parameter-trajectory crosscoders for vocabulary readout evolution
|
| 13 |
+
|
| 14 |
+
Companion checkpoints to the paper *Parameter-trajectory crosscoders for
|
| 15 |
+
vocabulary readout evolution* (NeurIPS 2026; arXiv:XXXX.XXXXX).
|
| 16 |
+
|
| 17 |
+
We train **snapshot crosscoders** on parameter tensors (rather than
|
| 18 |
+
activations) sampled across pretraining checkpoints. In Pythia-160M's output
|
| 19 |
+
unembedding $W_U$, this reveals a sparse, reproducible **readout
|
| 20 |
+
consolidation event** at training step ~1,000.
|
| 21 |
+
|
| 22 |
+
## Repository layout
|
| 23 |
+
|
| 24 |
+
| What you want | Path |
|
| 25 |
+
|---|---|
|
| 26 |
+
| Headline 5-seed Pythia-160M $W_U$ crosscoder | `pythia-160m/W_U/cross-snapshot-32/d8192/seed{0..4}.safetensors` |
|
| 27 |
+
| 32 single-snapshot SAEs (in-time view) | `pythia-160m/W_U/per-snapshot-saes/d8192/step*.safetensors` |
|
| 28 |
+
| Higher-capacity Pythia-160M $W_U$ crosscoders | `pythia-160m/W_U/cross-snapshot-32/d{16384,24576}/` |
|
| 29 |
+
| Architecture-invariance comparison (vs. JumpReLU baseline) | `pythia-160m/W_U/architecture-comparison/d8192/{batchtopk,gated,gated-retuned}/` |
|
| 30 |
+
| Snapshot-density downsample | `pythia-160m/W_U/cross-snapshot-16/d8192/` |
|
| 31 |
+
| Final-snapshot-only SAE Pareto | `pythia-160m/W_U/final-snapshot-saes/d{6144..65536}.safetensors` |
|
| 32 |
+
| Read/write asymmetry: $W_E$ side | `pythia-160m/W_E/cross-snapshot-32/d{8192,24576}/` |
|
| 33 |
+
| Cross-scale (Pythia-1B) | `pythia-1b/W_U/cross-snapshot-32/d{8192,16384,24576}/` |
|
| 34 |
+
| Larger-scale (Pythia-6.9B) | `pythia-6.9b/W_U/cross-snapshot-32/d32768/` |
|
| 35 |
+
| Cross-family (OLMo-2-7B) | `olmo-2-7b/W_U/cross-snapshot-32/d32768/` |
|
| 36 |
+
| §5 attribution-patching artifacts | `attribution/pythia-160m/` |
|
| 37 |
+
|
| 38 |
+
Each directory contains `<name>.safetensors` (weights),
|
| 39 |
+
`<name>.config.json` (training hparams + quality metrics), and `<name>.md`
|
| 40 |
+
(one-page model card). The metadata format is unified across all artifacts.
|
| 41 |
+
|
| 42 |
+
## Quick start
|
| 43 |
+
|
| 44 |
+
```python
|
| 45 |
+
from huggingface_hub import hf_hub_download
|
| 46 |
+
from safetensors.torch import load_file
|
| 47 |
+
import json
|
| 48 |
+
|
| 49 |
+
# Download the headline Pythia-160M crosscoder, seed 0
|
| 50 |
+
weights_path = hf_hub_download(
|
| 51 |
+
"matteohe/parameter-trajectory-crosscoders",
|
| 52 |
+
"pythia-160m/W_U/cross-snapshot-32/d8192/seed0.safetensors",
|
| 53 |
+
)
|
| 54 |
+
config_path = hf_hub_download(
|
| 55 |
+
"matteohe/parameter-trajectory-crosscoders",
|
| 56 |
+
"pythia-160m/W_U/cross-snapshot-32/d8192/seed0.config.json",
|
| 57 |
+
)
|
| 58 |
+
weights = load_file(weights_path) # dict[str, Tensor]
|
| 59 |
+
config = json.load(open(config_path))
|
| 60 |
+
print(config["public_label"]) # "Pythia-160M W_U crosscoder, ..."
|
| 61 |
+
```
|
| 62 |
+
|
| 63 |
+
The crosscoder weight tensors are:
|
| 64 |
+
- `W_E`: encoder, shape $(K, d_{\text{model}}, d_{\text{sae}})$
|
| 65 |
+
- `W_D`: decoder, shape $(K, d_{\text{sae}}, d_{\text{model}})$
|
| 66 |
+
- `b_E`: encoder bias, shape $(K, d_{\text{sae}})$
|
| 67 |
+
- `b_D`: decoder bias, shape $(K, d_{\text{model}})$
|
| 68 |
+
- `activation_function.log_jumprelu_threshold`: shape $(d_{\text{sae}},)$
|
| 69 |
+
|
| 70 |
+
For per-snapshot SAEs `K=1`. The companion paper code (open-source, see
|
| 71 |
+
`https://github.com/...`) provides `wu_adapter.build_crosscoder` which
|
| 72 |
+
reconstructs the full module.
|
| 73 |
+
|
| 74 |
+
## Citation
|
| 75 |
+
|
| 76 |
+
```bibtex
|
| 77 |
+
@inproceedings{{...,
|
| 78 |
+
title={{Parameter-trajectory crosscoders for vocabulary readout evolution}},
|
| 79 |
+
author={{...}},
|
| 80 |
+
booktitle={{NeurIPS 2026}},
|
| 81 |
+
year={{2026}},
|
| 82 |
+
}}
|
| 83 |
+
```
|
attribution/pythia-160m/induction-results.pt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:88048a0c9972a962695610c19820d716b541807022c78a0f8a86557bc15346a1
|
| 3 |
+
size 32822581
|
attribution/pythia-160m/induction-verdict.json
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"passed": true,
|
| 3 |
+
"max_ratio": 696.25,
|
| 4 |
+
"ratio_at_k": 32,
|
| 5 |
+
"ig_clean": true,
|
| 6 |
+
"n_samples": 1000,
|
| 7 |
+
"n_ig_steps": 10,
|
| 8 |
+
"snapshot_step": 143000,
|
| 9 |
+
"checkpoint": "/home/mh2274/rds/hpc-work/wu_crosscoder/run3_ge_exact_results/wu_cc_ge_exact_seed0.pt",
|
| 10 |
+
"wallclock_s": 150.33362078666687
|
| 11 |
+
}
|
attribution/pythia-160m/ioi-results.pt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:8d4eb1c1dce4716843805b815c9fdef324faf58626fbf14f9ceee0545404188e
|
| 3 |
+
size 32822469
|
attribution/pythia-160m/ioi-verdict.json
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"passed": true,
|
| 3 |
+
"max_ratio": 167.48154981549814,
|
| 4 |
+
"ratio_at_k": 64,
|
| 5 |
+
"ig_clean": true,
|
| 6 |
+
"n_samples": 1000,
|
| 7 |
+
"n_ig_steps": 10,
|
| 8 |
+
"snapshot_step": 143000,
|
| 9 |
+
"checkpoint": "/home/mh2274/rds/hpc-work/wu_crosscoder/run3_ge_exact_results/wu_cc_ge_exact_seed0.pt",
|
| 10 |
+
"wallclock_s": 92.33377718925476
|
| 11 |
+
}
|
attribution/pythia-160m/sva-results.pt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:39c166606642bf4758e30c06d33935ec7bd2a1855adb19a7b8252b59a9850425
|
| 3 |
+
size 32822469
|
attribution/pythia-160m/sva-verdict.json
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"passed": true,
|
| 3 |
+
"max_ratio": 1140.1538461538462,
|
| 4 |
+
"ratio_at_k": 64,
|
| 5 |
+
"ig_clean": true,
|
| 6 |
+
"n_samples": 1000,
|
| 7 |
+
"n_ig_steps": 10,
|
| 8 |
+
"snapshot_step": 143000,
|
| 9 |
+
"checkpoint": "/home/mh2274/rds/hpc-work/wu_crosscoder/run3_ge_exact_results/wu_cc_ge_exact_seed0.pt",
|
| 10 |
+
"wallclock_s": 191.5964698791504
|
| 11 |
+
}
|
pythia-160m/W_E/cross-snapshot-32/d24576/seed0.config.json
ADDED
|
@@ -0,0 +1,119 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"public_label": "Pythia-160M W_E crosscoder, 32 snapshots, d_sae=24576, seed 0",
|
| 3 |
+
"config": {
|
| 4 |
+
"sae_type": "crosscoder",
|
| 5 |
+
"d_model": 768,
|
| 6 |
+
"expansion_factor": 32.0,
|
| 7 |
+
"use_decoder_bias": true,
|
| 8 |
+
"act_fn": "jumprelu",
|
| 9 |
+
"norm_activation": "inference",
|
| 10 |
+
"sparsity_include_decoder_norm": true,
|
| 11 |
+
"top_k": 50,
|
| 12 |
+
"use_triton_kernel": false,
|
| 13 |
+
"sparsity_threshold_for_triton_spmm_kernel": 0.996,
|
| 14 |
+
"jumprelu_threshold_window": 4.0,
|
| 15 |
+
"hook_points": [
|
| 16 |
+
"wu_step_0",
|
| 17 |
+
"wu_step_1",
|
| 18 |
+
"wu_step_2",
|
| 19 |
+
"wu_step_3",
|
| 20 |
+
"wu_step_4",
|
| 21 |
+
"wu_step_5",
|
| 22 |
+
"wu_step_6",
|
| 23 |
+
"wu_step_7",
|
| 24 |
+
"wu_step_8",
|
| 25 |
+
"wu_step_9",
|
| 26 |
+
"wu_step_10",
|
| 27 |
+
"wu_step_11",
|
| 28 |
+
"wu_step_12",
|
| 29 |
+
"wu_step_13",
|
| 30 |
+
"wu_step_14",
|
| 31 |
+
"wu_step_15",
|
| 32 |
+
"wu_step_16",
|
| 33 |
+
"wu_step_17",
|
| 34 |
+
"wu_step_18",
|
| 35 |
+
"wu_step_19",
|
| 36 |
+
"wu_step_20",
|
| 37 |
+
"wu_step_21",
|
| 38 |
+
"wu_step_22",
|
| 39 |
+
"wu_step_23",
|
| 40 |
+
"wu_step_24",
|
| 41 |
+
"wu_step_25",
|
| 42 |
+
"wu_step_26",
|
| 43 |
+
"wu_step_27",
|
| 44 |
+
"wu_step_28",
|
| 45 |
+
"wu_step_29",
|
| 46 |
+
"wu_step_30",
|
| 47 |
+
"wu_step_31"
|
| 48 |
+
]
|
| 49 |
+
},
|
| 50 |
+
"training": {
|
| 51 |
+
"lr": 5e-05,
|
| 52 |
+
"l1_coefficient": 0.3,
|
| 53 |
+
"frequency_scale": 0.01,
|
| 54 |
+
"tanh_stretch_coefficient": 4.0,
|
| 55 |
+
"jumprelu_lr_factor": 0.1,
|
| 56 |
+
"init_threshold": 0.1,
|
| 57 |
+
"decoder_transpose_init": 1.0,
|
| 58 |
+
"amp_dtype": "fp32",
|
| 59 |
+
"optimizer": "adam",
|
| 60 |
+
"n_epochs": 300,
|
| 61 |
+
"batch_size": 1024,
|
| 62 |
+
"expansion_factor": 32.0,
|
| 63 |
+
"d_sae": 24576,
|
| 64 |
+
"input_preprocess": "center_scale",
|
| 65 |
+
"l1_warmup_fraction": 0.05,
|
| 66 |
+
"lr_warmup_fraction": 0.0,
|
| 67 |
+
"lr_decay_fraction": 0.0,
|
| 68 |
+
"auxk_coefficient": 0.0,
|
| 69 |
+
"auxk_k": 512,
|
| 70 |
+
"dead_window_steps": 100
|
| 71 |
+
},
|
| 72 |
+
"quality": {
|
| 73 |
+
"explained_variance": 0.8305442370487662,
|
| 74 |
+
"reconstruction_mse": 0.1690640303492546,
|
| 75 |
+
"mean_l0": 117.50901977539063,
|
| 76 |
+
"dead_rate": 0.0,
|
| 77 |
+
"d_sae": 24576,
|
| 78 |
+
"n_snapshots": 32,
|
| 79 |
+
"n_rows": 50304
|
| 80 |
+
},
|
| 81 |
+
"steps": [
|
| 82 |
+
0,
|
| 83 |
+
1,
|
| 84 |
+
2,
|
| 85 |
+
4,
|
| 86 |
+
8,
|
| 87 |
+
16,
|
| 88 |
+
32,
|
| 89 |
+
64,
|
| 90 |
+
128,
|
| 91 |
+
256,
|
| 92 |
+
512,
|
| 93 |
+
1000,
|
| 94 |
+
2000,
|
| 95 |
+
3000,
|
| 96 |
+
4000,
|
| 97 |
+
5000,
|
| 98 |
+
6000,
|
| 99 |
+
7000,
|
| 100 |
+
8000,
|
| 101 |
+
9000,
|
| 102 |
+
14000,
|
| 103 |
+
21000,
|
| 104 |
+
27000,
|
| 105 |
+
34000,
|
| 106 |
+
47000,
|
| 107 |
+
61000,
|
| 108 |
+
75000,
|
| 109 |
+
89000,
|
| 110 |
+
102000,
|
| 111 |
+
116000,
|
| 112 |
+
130000,
|
| 113 |
+
143000
|
| 114 |
+
],
|
| 115 |
+
"model_name": "EleutherAI/pythia-160m",
|
| 116 |
+
"seed": 0,
|
| 117 |
+
"kind": "cross-snapshot",
|
| 118 |
+
"preprocess_mode": "center_scale"
|
| 119 |
+
}
|
pythia-160m/W_E/cross-snapshot-32/d24576/seed0.md
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Pythia-160M W_E crosscoder, 32 snapshots, d_sae=24576, seed 0
|
| 2 |
+
|
| 3 |
+
Companion artifact to *Parameter-trajectory crosscoders for vocabulary readout
|
| 4 |
+
evolution* (NeurIPS 2026). Trained from snapshots of
|
| 5 |
+
`EleutherAI/pythia-160m` across [0, 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 14000, 21000, 27000, 34000, 47000, 61000, 75000, 89000, 102000, 116000, 130000, 143000] pretraining
|
| 6 |
+
steps.
|
| 7 |
+
|
| 8 |
+
## Quality
|
| 9 |
+
- Explained variance: 0.8305442370487662
|
| 10 |
+
- Mean L0: 117.50901977539063
|
| 11 |
+
- Dead-feature rate: 0.0
|
| 12 |
+
- d_sae: 24576
|
| 13 |
+
- n_snapshots: 32
|
| 14 |
+
|
| 15 |
+
## Training recipe (key hparams)
|
| 16 |
+
- Activation: jumprelu
|
| 17 |
+
- L1 coefficient: 0.3
|
| 18 |
+
- Frequency penalty scale: 0.01
|
| 19 |
+
- Tanh-stretch coefficient: 4.0
|
| 20 |
+
- LR: 5e-05
|
| 21 |
+
- JumpReLU LR multiplier: 0.1
|
| 22 |
+
- Init threshold: 0.1
|
| 23 |
+
- Optimizer: adam
|
| 24 |
+
- Epochs: 300
|
| 25 |
+
- Batch size: 1024
|
| 26 |
+
- Preprocess: center_scale
|
| 27 |
+
- Seed: 0
|
| 28 |
+
|
| 29 |
+
## Loading
|
| 30 |
+
```python
|
| 31 |
+
from safetensors.torch import load_file
|
| 32 |
+
weights = load_file("seed0.safetensors")
|
| 33 |
+
# weights['W_E'] / weights['W_D'] / weights['b_E'] / weights['b_D'] / etc.
|
| 34 |
+
import json
|
| 35 |
+
config = json.load(open("seed0.config.json"))
|
| 36 |
+
```
|
| 37 |
+
|
| 38 |
+
See the repo top-level README for the full crosscoder loading example.
|
pythia-160m/W_E/cross-snapshot-32/d24576/seed0.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:cfe74424d03c865e4595f94a9aff6316d579a52b963255807577233d5b5387f2
|
| 3 |
+
size 4835180992
|
pythia-160m/W_E/cross-snapshot-32/d8192/seed0.config.json
ADDED
|
@@ -0,0 +1,113 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"public_label": "Pythia-160M W_E crosscoder, 32 snapshots, d_sae=8192, seed 0",
|
| 3 |
+
"config": {
|
| 4 |
+
"sae_type": "crosscoder",
|
| 5 |
+
"d_model": 768,
|
| 6 |
+
"expansion_factor": 10.667,
|
| 7 |
+
"use_decoder_bias": true,
|
| 8 |
+
"act_fn": "jumprelu",
|
| 9 |
+
"norm_activation": "inference",
|
| 10 |
+
"sparsity_include_decoder_norm": true,
|
| 11 |
+
"top_k": 50,
|
| 12 |
+
"use_triton_kernel": false,
|
| 13 |
+
"sparsity_threshold_for_triton_spmm_kernel": 0.996,
|
| 14 |
+
"jumprelu_threshold_window": 4.0,
|
| 15 |
+
"hook_points": [
|
| 16 |
+
"wu_step_0",
|
| 17 |
+
"wu_step_1",
|
| 18 |
+
"wu_step_2",
|
| 19 |
+
"wu_step_3",
|
| 20 |
+
"wu_step_4",
|
| 21 |
+
"wu_step_5",
|
| 22 |
+
"wu_step_6",
|
| 23 |
+
"wu_step_7",
|
| 24 |
+
"wu_step_8",
|
| 25 |
+
"wu_step_9",
|
| 26 |
+
"wu_step_10",
|
| 27 |
+
"wu_step_11",
|
| 28 |
+
"wu_step_12",
|
| 29 |
+
"wu_step_13",
|
| 30 |
+
"wu_step_14",
|
| 31 |
+
"wu_step_15",
|
| 32 |
+
"wu_step_16",
|
| 33 |
+
"wu_step_17",
|
| 34 |
+
"wu_step_18",
|
| 35 |
+
"wu_step_19",
|
| 36 |
+
"wu_step_20",
|
| 37 |
+
"wu_step_21",
|
| 38 |
+
"wu_step_22",
|
| 39 |
+
"wu_step_23",
|
| 40 |
+
"wu_step_24",
|
| 41 |
+
"wu_step_25",
|
| 42 |
+
"wu_step_26",
|
| 43 |
+
"wu_step_27",
|
| 44 |
+
"wu_step_28",
|
| 45 |
+
"wu_step_29",
|
| 46 |
+
"wu_step_30",
|
| 47 |
+
"wu_step_31"
|
| 48 |
+
]
|
| 49 |
+
},
|
| 50 |
+
"training": {
|
| 51 |
+
"lr": 5e-05,
|
| 52 |
+
"l1_coefficient": 0.3,
|
| 53 |
+
"frequency_scale": 0.01,
|
| 54 |
+
"tanh_stretch_coefficient": 4.0,
|
| 55 |
+
"jumprelu_lr_factor": 0.1,
|
| 56 |
+
"n_epochs": 300,
|
| 57 |
+
"batch_size": 1024,
|
| 58 |
+
"expansion_factor": 10.667,
|
| 59 |
+
"input_preprocess": "center_scale",
|
| 60 |
+
"l1_warmup_fraction": 0.05,
|
| 61 |
+
"lr_warmup_fraction": 0.0,
|
| 62 |
+
"lr_decay_fraction": 0.0,
|
| 63 |
+
"auxk_coefficient": 0.0,
|
| 64 |
+
"auxk_k": 512,
|
| 65 |
+
"dead_window_steps": 100
|
| 66 |
+
},
|
| 67 |
+
"quality": {
|
| 68 |
+
"explained_variance": 0.5807971126242004,
|
| 69 |
+
"reconstruction_mse": 0.4182338178157806,
|
| 70 |
+
"mean_l0": 82.08435302734375,
|
| 71 |
+
"d_sae": 8192,
|
| 72 |
+
"n_snapshots": 32,
|
| 73 |
+
"n_rows": 50304
|
| 74 |
+
},
|
| 75 |
+
"steps": [
|
| 76 |
+
0,
|
| 77 |
+
1,
|
| 78 |
+
2,
|
| 79 |
+
4,
|
| 80 |
+
8,
|
| 81 |
+
16,
|
| 82 |
+
32,
|
| 83 |
+
64,
|
| 84 |
+
128,
|
| 85 |
+
256,
|
| 86 |
+
512,
|
| 87 |
+
1000,
|
| 88 |
+
2000,
|
| 89 |
+
3000,
|
| 90 |
+
4000,
|
| 91 |
+
5000,
|
| 92 |
+
6000,
|
| 93 |
+
7000,
|
| 94 |
+
8000,
|
| 95 |
+
9000,
|
| 96 |
+
14000,
|
| 97 |
+
21000,
|
| 98 |
+
27000,
|
| 99 |
+
34000,
|
| 100 |
+
47000,
|
| 101 |
+
61000,
|
| 102 |
+
75000,
|
| 103 |
+
89000,
|
| 104 |
+
102000,
|
| 105 |
+
116000,
|
| 106 |
+
130000,
|
| 107 |
+
143000
|
| 108 |
+
],
|
| 109 |
+
"model_name": "EleutherAI/pythia-160m",
|
| 110 |
+
"seed": 0,
|
| 111 |
+
"kind": "cross-snapshot",
|
| 112 |
+
"preprocess_mode": "center_scale"
|
| 113 |
+
}
|
pythia-160m/W_E/cross-snapshot-32/d8192/seed0.md
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Pythia-160M W_E crosscoder, 32 snapshots, d_sae=8192, seed 0
|
| 2 |
+
|
| 3 |
+
Companion artifact to *Parameter-trajectory crosscoders for vocabulary readout
|
| 4 |
+
evolution* (NeurIPS 2026). Trained from snapshots of
|
| 5 |
+
`EleutherAI/pythia-160m` across [0, 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 14000, 21000, 27000, 34000, 47000, 61000, 75000, 89000, 102000, 116000, 130000, 143000] pretraining
|
| 6 |
+
steps.
|
| 7 |
+
|
| 8 |
+
## Quality
|
| 9 |
+
- Explained variance: 0.5807971126242004
|
| 10 |
+
- Mean L0: 82.08435302734375
|
| 11 |
+
- Dead-feature rate: —
|
| 12 |
+
- d_sae: 8192
|
| 13 |
+
- n_snapshots: 32
|
| 14 |
+
|
| 15 |
+
## Training recipe (key hparams)
|
| 16 |
+
- Activation: jumprelu
|
| 17 |
+
- L1 coefficient: 0.3
|
| 18 |
+
- Frequency penalty scale: 0.01
|
| 19 |
+
- Tanh-stretch coefficient: 4.0
|
| 20 |
+
- LR: 5e-05
|
| 21 |
+
- JumpReLU LR multiplier: 0.1
|
| 22 |
+
- Init threshold: —
|
| 23 |
+
- Optimizer: adam
|
| 24 |
+
- Epochs: 300
|
| 25 |
+
- Batch size: 1024
|
| 26 |
+
- Preprocess: center_scale
|
| 27 |
+
- Seed: 0
|
| 28 |
+
|
| 29 |
+
## Loading
|
| 30 |
+
```python
|
| 31 |
+
from safetensors.torch import load_file
|
| 32 |
+
weights = load_file("seed0.safetensors")
|
| 33 |
+
# weights['W_E'] / weights['W_D'] / weights['b_E'] / weights['b_D'] / etc.
|
| 34 |
+
import json
|
| 35 |
+
config = json.load(open("seed0.config.json"))
|
| 36 |
+
```
|
| 37 |
+
|
| 38 |
+
See the repo top-level README for the full crosscoder loading example.
|
pythia-160m/W_E/cross-snapshot-32/d8192/seed0.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:75ba91f6abdbd6b888ad7fc8ba34a30a363a123846bc136bbe29bb19386374bb
|
| 3 |
+
size 1611792824
|
pythia-160m/W_E/cross-snapshot-32/d8192/seed1.config.json
ADDED
|
@@ -0,0 +1,119 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"public_label": "Pythia-160M W_E crosscoder, 32 snapshots, d_sae=8192, seed 1",
|
| 3 |
+
"config": {
|
| 4 |
+
"sae_type": "crosscoder",
|
| 5 |
+
"d_model": 768,
|
| 6 |
+
"expansion_factor": 10.667,
|
| 7 |
+
"use_decoder_bias": true,
|
| 8 |
+
"act_fn": "jumprelu",
|
| 9 |
+
"norm_activation": "inference",
|
| 10 |
+
"sparsity_include_decoder_norm": true,
|
| 11 |
+
"top_k": 50,
|
| 12 |
+
"use_triton_kernel": false,
|
| 13 |
+
"sparsity_threshold_for_triton_spmm_kernel": 0.996,
|
| 14 |
+
"jumprelu_threshold_window": 4.0,
|
| 15 |
+
"hook_points": [
|
| 16 |
+
"wu_step_0",
|
| 17 |
+
"wu_step_1",
|
| 18 |
+
"wu_step_2",
|
| 19 |
+
"wu_step_3",
|
| 20 |
+
"wu_step_4",
|
| 21 |
+
"wu_step_5",
|
| 22 |
+
"wu_step_6",
|
| 23 |
+
"wu_step_7",
|
| 24 |
+
"wu_step_8",
|
| 25 |
+
"wu_step_9",
|
| 26 |
+
"wu_step_10",
|
| 27 |
+
"wu_step_11",
|
| 28 |
+
"wu_step_12",
|
| 29 |
+
"wu_step_13",
|
| 30 |
+
"wu_step_14",
|
| 31 |
+
"wu_step_15",
|
| 32 |
+
"wu_step_16",
|
| 33 |
+
"wu_step_17",
|
| 34 |
+
"wu_step_18",
|
| 35 |
+
"wu_step_19",
|
| 36 |
+
"wu_step_20",
|
| 37 |
+
"wu_step_21",
|
| 38 |
+
"wu_step_22",
|
| 39 |
+
"wu_step_23",
|
| 40 |
+
"wu_step_24",
|
| 41 |
+
"wu_step_25",
|
| 42 |
+
"wu_step_26",
|
| 43 |
+
"wu_step_27",
|
| 44 |
+
"wu_step_28",
|
| 45 |
+
"wu_step_29",
|
| 46 |
+
"wu_step_30",
|
| 47 |
+
"wu_step_31"
|
| 48 |
+
]
|
| 49 |
+
},
|
| 50 |
+
"training": {
|
| 51 |
+
"lr": 5e-05,
|
| 52 |
+
"l1_coefficient": 0.3,
|
| 53 |
+
"frequency_scale": 0.01,
|
| 54 |
+
"tanh_stretch_coefficient": 4.0,
|
| 55 |
+
"jumprelu_lr_factor": 0.1,
|
| 56 |
+
"init_threshold": 0.1,
|
| 57 |
+
"decoder_transpose_init": 1.0,
|
| 58 |
+
"amp_dtype": "fp32",
|
| 59 |
+
"optimizer": "adam",
|
| 60 |
+
"n_epochs": 300,
|
| 61 |
+
"batch_size": 1024,
|
| 62 |
+
"expansion_factor": 10.667,
|
| 63 |
+
"d_sae": 8192,
|
| 64 |
+
"input_preprocess": "center_scale",
|
| 65 |
+
"l1_warmup_fraction": 0.05,
|
| 66 |
+
"lr_warmup_fraction": 0.0,
|
| 67 |
+
"lr_decay_fraction": 0.0,
|
| 68 |
+
"auxk_coefficient": 0.0,
|
| 69 |
+
"auxk_k": 512,
|
| 70 |
+
"dead_window_steps": 100
|
| 71 |
+
},
|
| 72 |
+
"quality": {
|
| 73 |
+
"explained_variance": 0.580104140268709,
|
| 74 |
+
"reconstruction_mse": 0.41892518222332,
|
| 75 |
+
"mean_l0": 82.01199279785156,
|
| 76 |
+
"dead_rate": 0.0,
|
| 77 |
+
"d_sae": 8192,
|
| 78 |
+
"n_snapshots": 32,
|
| 79 |
+
"n_rows": 50304
|
| 80 |
+
},
|
| 81 |
+
"steps": [
|
| 82 |
+
0,
|
| 83 |
+
1,
|
| 84 |
+
2,
|
| 85 |
+
4,
|
| 86 |
+
8,
|
| 87 |
+
16,
|
| 88 |
+
32,
|
| 89 |
+
64,
|
| 90 |
+
128,
|
| 91 |
+
256,
|
| 92 |
+
512,
|
| 93 |
+
1000,
|
| 94 |
+
2000,
|
| 95 |
+
3000,
|
| 96 |
+
4000,
|
| 97 |
+
5000,
|
| 98 |
+
6000,
|
| 99 |
+
7000,
|
| 100 |
+
8000,
|
| 101 |
+
9000,
|
| 102 |
+
14000,
|
| 103 |
+
21000,
|
| 104 |
+
27000,
|
| 105 |
+
34000,
|
| 106 |
+
47000,
|
| 107 |
+
61000,
|
| 108 |
+
75000,
|
| 109 |
+
89000,
|
| 110 |
+
102000,
|
| 111 |
+
116000,
|
| 112 |
+
130000,
|
| 113 |
+
143000
|
| 114 |
+
],
|
| 115 |
+
"model_name": "EleutherAI/pythia-160m",
|
| 116 |
+
"seed": 1,
|
| 117 |
+
"kind": "cross-snapshot",
|
| 118 |
+
"preprocess_mode": "center_scale"
|
| 119 |
+
}
|
pythia-160m/W_E/cross-snapshot-32/d8192/seed1.md
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Pythia-160M W_E crosscoder, 32 snapshots, d_sae=8192, seed 1
|
| 2 |
+
|
| 3 |
+
Companion artifact to *Parameter-trajectory crosscoders for vocabulary readout
|
| 4 |
+
evolution* (NeurIPS 2026). Trained from snapshots of
|
| 5 |
+
`EleutherAI/pythia-160m` across [0, 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 14000, 21000, 27000, 34000, 47000, 61000, 75000, 89000, 102000, 116000, 130000, 143000] pretraining
|
| 6 |
+
steps.
|
| 7 |
+
|
| 8 |
+
## Quality
|
| 9 |
+
- Explained variance: 0.580104140268709
|
| 10 |
+
- Mean L0: 82.01199279785156
|
| 11 |
+
- Dead-feature rate: 0.0
|
| 12 |
+
- d_sae: 8192
|
| 13 |
+
- n_snapshots: 32
|
| 14 |
+
|
| 15 |
+
## Training recipe (key hparams)
|
| 16 |
+
- Activation: jumprelu
|
| 17 |
+
- L1 coefficient: 0.3
|
| 18 |
+
- Frequency penalty scale: 0.01
|
| 19 |
+
- Tanh-stretch coefficient: 4.0
|
| 20 |
+
- LR: 5e-05
|
| 21 |
+
- JumpReLU LR multiplier: 0.1
|
| 22 |
+
- Init threshold: 0.1
|
| 23 |
+
- Optimizer: adam
|
| 24 |
+
- Epochs: 300
|
| 25 |
+
- Batch size: 1024
|
| 26 |
+
- Preprocess: center_scale
|
| 27 |
+
- Seed: 1
|
| 28 |
+
|
| 29 |
+
## Loading
|
| 30 |
+
```python
|
| 31 |
+
from safetensors.torch import load_file
|
| 32 |
+
weights = load_file("seed1.safetensors")
|
| 33 |
+
# weights['W_E'] / weights['W_D'] / weights['b_E'] / weights['b_D'] / etc.
|
| 34 |
+
import json
|
| 35 |
+
config = json.load(open("seed1.config.json"))
|
| 36 |
+
```
|
| 37 |
+
|
| 38 |
+
See the repo top-level README for the full crosscoder loading example.
|
pythia-160m/W_E/cross-snapshot-32/d8192/seed1.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:777f45bcec5b17bf9c7d080c79db5741cfdfb358743d307cc0ae69ce8c2fbb96
|
| 3 |
+
size 1611792824
|
pythia-160m/W_E/cross-snapshot-32/d8192/seed2.config.json
ADDED
|
@@ -0,0 +1,119 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"public_label": "Pythia-160M W_E crosscoder, 32 snapshots, d_sae=8192, seed 2",
|
| 3 |
+
"config": {
|
| 4 |
+
"sae_type": "crosscoder",
|
| 5 |
+
"d_model": 768,
|
| 6 |
+
"expansion_factor": 10.667,
|
| 7 |
+
"use_decoder_bias": true,
|
| 8 |
+
"act_fn": "jumprelu",
|
| 9 |
+
"norm_activation": "inference",
|
| 10 |
+
"sparsity_include_decoder_norm": true,
|
| 11 |
+
"top_k": 50,
|
| 12 |
+
"use_triton_kernel": false,
|
| 13 |
+
"sparsity_threshold_for_triton_spmm_kernel": 0.996,
|
| 14 |
+
"jumprelu_threshold_window": 4.0,
|
| 15 |
+
"hook_points": [
|
| 16 |
+
"wu_step_0",
|
| 17 |
+
"wu_step_1",
|
| 18 |
+
"wu_step_2",
|
| 19 |
+
"wu_step_3",
|
| 20 |
+
"wu_step_4",
|
| 21 |
+
"wu_step_5",
|
| 22 |
+
"wu_step_6",
|
| 23 |
+
"wu_step_7",
|
| 24 |
+
"wu_step_8",
|
| 25 |
+
"wu_step_9",
|
| 26 |
+
"wu_step_10",
|
| 27 |
+
"wu_step_11",
|
| 28 |
+
"wu_step_12",
|
| 29 |
+
"wu_step_13",
|
| 30 |
+
"wu_step_14",
|
| 31 |
+
"wu_step_15",
|
| 32 |
+
"wu_step_16",
|
| 33 |
+
"wu_step_17",
|
| 34 |
+
"wu_step_18",
|
| 35 |
+
"wu_step_19",
|
| 36 |
+
"wu_step_20",
|
| 37 |
+
"wu_step_21",
|
| 38 |
+
"wu_step_22",
|
| 39 |
+
"wu_step_23",
|
| 40 |
+
"wu_step_24",
|
| 41 |
+
"wu_step_25",
|
| 42 |
+
"wu_step_26",
|
| 43 |
+
"wu_step_27",
|
| 44 |
+
"wu_step_28",
|
| 45 |
+
"wu_step_29",
|
| 46 |
+
"wu_step_30",
|
| 47 |
+
"wu_step_31"
|
| 48 |
+
]
|
| 49 |
+
},
|
| 50 |
+
"training": {
|
| 51 |
+
"lr": 5e-05,
|
| 52 |
+
"l1_coefficient": 0.3,
|
| 53 |
+
"frequency_scale": 0.01,
|
| 54 |
+
"tanh_stretch_coefficient": 4.0,
|
| 55 |
+
"jumprelu_lr_factor": 0.1,
|
| 56 |
+
"init_threshold": 0.1,
|
| 57 |
+
"decoder_transpose_init": 1.0,
|
| 58 |
+
"amp_dtype": "fp32",
|
| 59 |
+
"optimizer": "adam",
|
| 60 |
+
"n_epochs": 300,
|
| 61 |
+
"batch_size": 1024,
|
| 62 |
+
"expansion_factor": 10.667,
|
| 63 |
+
"d_sae": 8192,
|
| 64 |
+
"input_preprocess": "center_scale",
|
| 65 |
+
"l1_warmup_fraction": 0.05,
|
| 66 |
+
"lr_warmup_fraction": 0.0,
|
| 67 |
+
"lr_decay_fraction": 0.0,
|
| 68 |
+
"auxk_coefficient": 0.0,
|
| 69 |
+
"auxk_k": 512,
|
| 70 |
+
"dead_window_steps": 100
|
| 71 |
+
},
|
| 72 |
+
"quality": {
|
| 73 |
+
"explained_variance": 0.5815380601296635,
|
| 74 |
+
"reconstruction_mse": 0.41749457716941835,
|
| 75 |
+
"mean_l0": 82.31076721191407,
|
| 76 |
+
"dead_rate": 0.0,
|
| 77 |
+
"d_sae": 8192,
|
| 78 |
+
"n_snapshots": 32,
|
| 79 |
+
"n_rows": 50304
|
| 80 |
+
},
|
| 81 |
+
"steps": [
|
| 82 |
+
0,
|
| 83 |
+
1,
|
| 84 |
+
2,
|
| 85 |
+
4,
|
| 86 |
+
8,
|
| 87 |
+
16,
|
| 88 |
+
32,
|
| 89 |
+
64,
|
| 90 |
+
128,
|
| 91 |
+
256,
|
| 92 |
+
512,
|
| 93 |
+
1000,
|
| 94 |
+
2000,
|
| 95 |
+
3000,
|
| 96 |
+
4000,
|
| 97 |
+
5000,
|
| 98 |
+
6000,
|
| 99 |
+
7000,
|
| 100 |
+
8000,
|
| 101 |
+
9000,
|
| 102 |
+
14000,
|
| 103 |
+
21000,
|
| 104 |
+
27000,
|
| 105 |
+
34000,
|
| 106 |
+
47000,
|
| 107 |
+
61000,
|
| 108 |
+
75000,
|
| 109 |
+
89000,
|
| 110 |
+
102000,
|
| 111 |
+
116000,
|
| 112 |
+
130000,
|
| 113 |
+
143000
|
| 114 |
+
],
|
| 115 |
+
"model_name": "EleutherAI/pythia-160m",
|
| 116 |
+
"seed": 2,
|
| 117 |
+
"kind": "cross-snapshot",
|
| 118 |
+
"preprocess_mode": "center_scale"
|
| 119 |
+
}
|
pythia-160m/W_E/cross-snapshot-32/d8192/seed2.md
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Pythia-160M W_E crosscoder, 32 snapshots, d_sae=8192, seed 2
|
| 2 |
+
|
| 3 |
+
Companion artifact to *Parameter-trajectory crosscoders for vocabulary readout
|
| 4 |
+
evolution* (NeurIPS 2026). Trained from snapshots of
|
| 5 |
+
`EleutherAI/pythia-160m` across [0, 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 14000, 21000, 27000, 34000, 47000, 61000, 75000, 89000, 102000, 116000, 130000, 143000] pretraining
|
| 6 |
+
steps.
|
| 7 |
+
|
| 8 |
+
## Quality
|
| 9 |
+
- Explained variance: 0.5815380601296635
|
| 10 |
+
- Mean L0: 82.31076721191407
|
| 11 |
+
- Dead-feature rate: 0.0
|
| 12 |
+
- d_sae: 8192
|
| 13 |
+
- n_snapshots: 32
|
| 14 |
+
|
| 15 |
+
## Training recipe (key hparams)
|
| 16 |
+
- Activation: jumprelu
|
| 17 |
+
- L1 coefficient: 0.3
|
| 18 |
+
- Frequency penalty scale: 0.01
|
| 19 |
+
- Tanh-stretch coefficient: 4.0
|
| 20 |
+
- LR: 5e-05
|
| 21 |
+
- JumpReLU LR multiplier: 0.1
|
| 22 |
+
- Init threshold: 0.1
|
| 23 |
+
- Optimizer: adam
|
| 24 |
+
- Epochs: 300
|
| 25 |
+
- Batch size: 1024
|
| 26 |
+
- Preprocess: center_scale
|
| 27 |
+
- Seed: 2
|
| 28 |
+
|
| 29 |
+
## Loading
|
| 30 |
+
```python
|
| 31 |
+
from safetensors.torch import load_file
|
| 32 |
+
weights = load_file("seed2.safetensors")
|
| 33 |
+
# weights['W_E'] / weights['W_D'] / weights['b_E'] / weights['b_D'] / etc.
|
| 34 |
+
import json
|
| 35 |
+
config = json.load(open("seed2.config.json"))
|
| 36 |
+
```
|
| 37 |
+
|
| 38 |
+
See the repo top-level README for the full crosscoder loading example.
|
pythia-160m/W_E/cross-snapshot-32/d8192/seed2.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:33cee54d608967373984411fffdff2da1bf39aca2a46e14ba75620a82b65e053
|
| 3 |
+
size 1611792824
|
pythia-160m/W_E/cross-snapshot-32/d8192/seed3.config.json
ADDED
|
@@ -0,0 +1,119 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"public_label": "Pythia-160M W_E crosscoder, 32 snapshots, d_sae=8192, seed 3",
|
| 3 |
+
"config": {
|
| 4 |
+
"sae_type": "crosscoder",
|
| 5 |
+
"d_model": 768,
|
| 6 |
+
"expansion_factor": 10.667,
|
| 7 |
+
"use_decoder_bias": true,
|
| 8 |
+
"act_fn": "jumprelu",
|
| 9 |
+
"norm_activation": "inference",
|
| 10 |
+
"sparsity_include_decoder_norm": true,
|
| 11 |
+
"top_k": 50,
|
| 12 |
+
"use_triton_kernel": false,
|
| 13 |
+
"sparsity_threshold_for_triton_spmm_kernel": 0.996,
|
| 14 |
+
"jumprelu_threshold_window": 4.0,
|
| 15 |
+
"hook_points": [
|
| 16 |
+
"wu_step_0",
|
| 17 |
+
"wu_step_1",
|
| 18 |
+
"wu_step_2",
|
| 19 |
+
"wu_step_3",
|
| 20 |
+
"wu_step_4",
|
| 21 |
+
"wu_step_5",
|
| 22 |
+
"wu_step_6",
|
| 23 |
+
"wu_step_7",
|
| 24 |
+
"wu_step_8",
|
| 25 |
+
"wu_step_9",
|
| 26 |
+
"wu_step_10",
|
| 27 |
+
"wu_step_11",
|
| 28 |
+
"wu_step_12",
|
| 29 |
+
"wu_step_13",
|
| 30 |
+
"wu_step_14",
|
| 31 |
+
"wu_step_15",
|
| 32 |
+
"wu_step_16",
|
| 33 |
+
"wu_step_17",
|
| 34 |
+
"wu_step_18",
|
| 35 |
+
"wu_step_19",
|
| 36 |
+
"wu_step_20",
|
| 37 |
+
"wu_step_21",
|
| 38 |
+
"wu_step_22",
|
| 39 |
+
"wu_step_23",
|
| 40 |
+
"wu_step_24",
|
| 41 |
+
"wu_step_25",
|
| 42 |
+
"wu_step_26",
|
| 43 |
+
"wu_step_27",
|
| 44 |
+
"wu_step_28",
|
| 45 |
+
"wu_step_29",
|
| 46 |
+
"wu_step_30",
|
| 47 |
+
"wu_step_31"
|
| 48 |
+
]
|
| 49 |
+
},
|
| 50 |
+
"training": {
|
| 51 |
+
"lr": 5e-05,
|
| 52 |
+
"l1_coefficient": 0.3,
|
| 53 |
+
"frequency_scale": 0.01,
|
| 54 |
+
"tanh_stretch_coefficient": 4.0,
|
| 55 |
+
"jumprelu_lr_factor": 0.1,
|
| 56 |
+
"init_threshold": 0.1,
|
| 57 |
+
"decoder_transpose_init": 1.0,
|
| 58 |
+
"amp_dtype": "fp32",
|
| 59 |
+
"optimizer": "adam",
|
| 60 |
+
"n_epochs": 300,
|
| 61 |
+
"batch_size": 1024,
|
| 62 |
+
"expansion_factor": 10.667,
|
| 63 |
+
"d_sae": 8192,
|
| 64 |
+
"input_preprocess": "center_scale",
|
| 65 |
+
"l1_warmup_fraction": 0.05,
|
| 66 |
+
"lr_warmup_fraction": 0.0,
|
| 67 |
+
"lr_decay_fraction": 0.0,
|
| 68 |
+
"auxk_coefficient": 0.0,
|
| 69 |
+
"auxk_k": 512,
|
| 70 |
+
"dead_window_steps": 100
|
| 71 |
+
},
|
| 72 |
+
"quality": {
|
| 73 |
+
"explained_variance": 0.5805984141666259,
|
| 74 |
+
"reconstruction_mse": 0.41843205094337466,
|
| 75 |
+
"mean_l0": 82.13521545410157,
|
| 76 |
+
"dead_rate": 0.0,
|
| 77 |
+
"d_sae": 8192,
|
| 78 |
+
"n_snapshots": 32,
|
| 79 |
+
"n_rows": 50304
|
| 80 |
+
},
|
| 81 |
+
"steps": [
|
| 82 |
+
0,
|
| 83 |
+
1,
|
| 84 |
+
2,
|
| 85 |
+
4,
|
| 86 |
+
8,
|
| 87 |
+
16,
|
| 88 |
+
32,
|
| 89 |
+
64,
|
| 90 |
+
128,
|
| 91 |
+
256,
|
| 92 |
+
512,
|
| 93 |
+
1000,
|
| 94 |
+
2000,
|
| 95 |
+
3000,
|
| 96 |
+
4000,
|
| 97 |
+
5000,
|
| 98 |
+
6000,
|
| 99 |
+
7000,
|
| 100 |
+
8000,
|
| 101 |
+
9000,
|
| 102 |
+
14000,
|
| 103 |
+
21000,
|
| 104 |
+
27000,
|
| 105 |
+
34000,
|
| 106 |
+
47000,
|
| 107 |
+
61000,
|
| 108 |
+
75000,
|
| 109 |
+
89000,
|
| 110 |
+
102000,
|
| 111 |
+
116000,
|
| 112 |
+
130000,
|
| 113 |
+
143000
|
| 114 |
+
],
|
| 115 |
+
"model_name": "EleutherAI/pythia-160m",
|
| 116 |
+
"seed": 3,
|
| 117 |
+
"kind": "cross-snapshot",
|
| 118 |
+
"preprocess_mode": "center_scale"
|
| 119 |
+
}
|
pythia-160m/W_E/cross-snapshot-32/d8192/seed3.md
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Pythia-160M W_E crosscoder, 32 snapshots, d_sae=8192, seed 3
|
| 2 |
+
|
| 3 |
+
Companion artifact to *Parameter-trajectory crosscoders for vocabulary readout
|
| 4 |
+
evolution* (NeurIPS 2026). Trained from snapshots of
|
| 5 |
+
`EleutherAI/pythia-160m` across [0, 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 14000, 21000, 27000, 34000, 47000, 61000, 75000, 89000, 102000, 116000, 130000, 143000] pretraining
|
| 6 |
+
steps.
|
| 7 |
+
|
| 8 |
+
## Quality
|
| 9 |
+
- Explained variance: 0.5805984141666259
|
| 10 |
+
- Mean L0: 82.13521545410157
|
| 11 |
+
- Dead-feature rate: 0.0
|
| 12 |
+
- d_sae: 8192
|
| 13 |
+
- n_snapshots: 32
|
| 14 |
+
|
| 15 |
+
## Training recipe (key hparams)
|
| 16 |
+
- Activation: jumprelu
|
| 17 |
+
- L1 coefficient: 0.3
|
| 18 |
+
- Frequency penalty scale: 0.01
|
| 19 |
+
- Tanh-stretch coefficient: 4.0
|
| 20 |
+
- LR: 5e-05
|
| 21 |
+
- JumpReLU LR multiplier: 0.1
|
| 22 |
+
- Init threshold: 0.1
|
| 23 |
+
- Optimizer: adam
|
| 24 |
+
- Epochs: 300
|
| 25 |
+
- Batch size: 1024
|
| 26 |
+
- Preprocess: center_scale
|
| 27 |
+
- Seed: 3
|
| 28 |
+
|
| 29 |
+
## Loading
|
| 30 |
+
```python
|
| 31 |
+
from safetensors.torch import load_file
|
| 32 |
+
weights = load_file("seed3.safetensors")
|
| 33 |
+
# weights['W_E'] / weights['W_D'] / weights['b_E'] / weights['b_D'] / etc.
|
| 34 |
+
import json
|
| 35 |
+
config = json.load(open("seed3.config.json"))
|
| 36 |
+
```
|
| 37 |
+
|
| 38 |
+
See the repo top-level README for the full crosscoder loading example.
|
pythia-160m/W_E/cross-snapshot-32/d8192/seed3.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:f54af8a2712eafc61e6c7ba219e88f36ccd21b03abaec4661b7e139753acf0bc
|
| 3 |
+
size 1611792824
|
pythia-160m/W_E/cross-snapshot-32/d8192/seed4.config.json
ADDED
|
@@ -0,0 +1,119 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"public_label": "Pythia-160M W_E crosscoder, 32 snapshots, d_sae=8192, seed 4",
|
| 3 |
+
"config": {
|
| 4 |
+
"sae_type": "crosscoder",
|
| 5 |
+
"d_model": 768,
|
| 6 |
+
"expansion_factor": 10.667,
|
| 7 |
+
"use_decoder_bias": true,
|
| 8 |
+
"act_fn": "jumprelu",
|
| 9 |
+
"norm_activation": "inference",
|
| 10 |
+
"sparsity_include_decoder_norm": true,
|
| 11 |
+
"top_k": 50,
|
| 12 |
+
"use_triton_kernel": false,
|
| 13 |
+
"sparsity_threshold_for_triton_spmm_kernel": 0.996,
|
| 14 |
+
"jumprelu_threshold_window": 4.0,
|
| 15 |
+
"hook_points": [
|
| 16 |
+
"wu_step_0",
|
| 17 |
+
"wu_step_1",
|
| 18 |
+
"wu_step_2",
|
| 19 |
+
"wu_step_3",
|
| 20 |
+
"wu_step_4",
|
| 21 |
+
"wu_step_5",
|
| 22 |
+
"wu_step_6",
|
| 23 |
+
"wu_step_7",
|
| 24 |
+
"wu_step_8",
|
| 25 |
+
"wu_step_9",
|
| 26 |
+
"wu_step_10",
|
| 27 |
+
"wu_step_11",
|
| 28 |
+
"wu_step_12",
|
| 29 |
+
"wu_step_13",
|
| 30 |
+
"wu_step_14",
|
| 31 |
+
"wu_step_15",
|
| 32 |
+
"wu_step_16",
|
| 33 |
+
"wu_step_17",
|
| 34 |
+
"wu_step_18",
|
| 35 |
+
"wu_step_19",
|
| 36 |
+
"wu_step_20",
|
| 37 |
+
"wu_step_21",
|
| 38 |
+
"wu_step_22",
|
| 39 |
+
"wu_step_23",
|
| 40 |
+
"wu_step_24",
|
| 41 |
+
"wu_step_25",
|
| 42 |
+
"wu_step_26",
|
| 43 |
+
"wu_step_27",
|
| 44 |
+
"wu_step_28",
|
| 45 |
+
"wu_step_29",
|
| 46 |
+
"wu_step_30",
|
| 47 |
+
"wu_step_31"
|
| 48 |
+
]
|
| 49 |
+
},
|
| 50 |
+
"training": {
|
| 51 |
+
"lr": 5e-05,
|
| 52 |
+
"l1_coefficient": 0.3,
|
| 53 |
+
"frequency_scale": 0.01,
|
| 54 |
+
"tanh_stretch_coefficient": 4.0,
|
| 55 |
+
"jumprelu_lr_factor": 0.1,
|
| 56 |
+
"init_threshold": 0.1,
|
| 57 |
+
"decoder_transpose_init": 1.0,
|
| 58 |
+
"amp_dtype": "fp32",
|
| 59 |
+
"optimizer": "adam",
|
| 60 |
+
"n_epochs": 300,
|
| 61 |
+
"batch_size": 1024,
|
| 62 |
+
"expansion_factor": 10.667,
|
| 63 |
+
"d_sae": 8192,
|
| 64 |
+
"input_preprocess": "center_scale",
|
| 65 |
+
"l1_warmup_fraction": 0.05,
|
| 66 |
+
"lr_warmup_fraction": 0.0,
|
| 67 |
+
"lr_decay_fraction": 0.0,
|
| 68 |
+
"auxk_coefficient": 0.0,
|
| 69 |
+
"auxk_k": 512,
|
| 70 |
+
"dead_window_steps": 100
|
| 71 |
+
},
|
| 72 |
+
"quality": {
|
| 73 |
+
"explained_variance": 0.5825219599393371,
|
| 74 |
+
"reconstruction_mse": 0.4165129518508911,
|
| 75 |
+
"mean_l0": 82.5084307861328,
|
| 76 |
+
"dead_rate": 0.0,
|
| 77 |
+
"d_sae": 8192,
|
| 78 |
+
"n_snapshots": 32,
|
| 79 |
+
"n_rows": 50304
|
| 80 |
+
},
|
| 81 |
+
"steps": [
|
| 82 |
+
0,
|
| 83 |
+
1,
|
| 84 |
+
2,
|
| 85 |
+
4,
|
| 86 |
+
8,
|
| 87 |
+
16,
|
| 88 |
+
32,
|
| 89 |
+
64,
|
| 90 |
+
128,
|
| 91 |
+
256,
|
| 92 |
+
512,
|
| 93 |
+
1000,
|
| 94 |
+
2000,
|
| 95 |
+
3000,
|
| 96 |
+
4000,
|
| 97 |
+
5000,
|
| 98 |
+
6000,
|
| 99 |
+
7000,
|
| 100 |
+
8000,
|
| 101 |
+
9000,
|
| 102 |
+
14000,
|
| 103 |
+
21000,
|
| 104 |
+
27000,
|
| 105 |
+
34000,
|
| 106 |
+
47000,
|
| 107 |
+
61000,
|
| 108 |
+
75000,
|
| 109 |
+
89000,
|
| 110 |
+
102000,
|
| 111 |
+
116000,
|
| 112 |
+
130000,
|
| 113 |
+
143000
|
| 114 |
+
],
|
| 115 |
+
"model_name": "EleutherAI/pythia-160m",
|
| 116 |
+
"seed": 4,
|
| 117 |
+
"kind": "cross-snapshot",
|
| 118 |
+
"preprocess_mode": "center_scale"
|
| 119 |
+
}
|
pythia-160m/W_E/cross-snapshot-32/d8192/seed4.md
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Pythia-160M W_E crosscoder, 32 snapshots, d_sae=8192, seed 4
|
| 2 |
+
|
| 3 |
+
Companion artifact to *Parameter-trajectory crosscoders for vocabulary readout
|
| 4 |
+
evolution* (NeurIPS 2026). Trained from snapshots of
|
| 5 |
+
`EleutherAI/pythia-160m` across [0, 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 14000, 21000, 27000, 34000, 47000, 61000, 75000, 89000, 102000, 116000, 130000, 143000] pretraining
|
| 6 |
+
steps.
|
| 7 |
+
|
| 8 |
+
## Quality
|
| 9 |
+
- Explained variance: 0.5825219599393371
|
| 10 |
+
- Mean L0: 82.5084307861328
|
| 11 |
+
- Dead-feature rate: 0.0
|
| 12 |
+
- d_sae: 8192
|
| 13 |
+
- n_snapshots: 32
|
| 14 |
+
|
| 15 |
+
## Training recipe (key hparams)
|
| 16 |
+
- Activation: jumprelu
|
| 17 |
+
- L1 coefficient: 0.3
|
| 18 |
+
- Frequency penalty scale: 0.01
|
| 19 |
+
- Tanh-stretch coefficient: 4.0
|
| 20 |
+
- LR: 5e-05
|
| 21 |
+
- JumpReLU LR multiplier: 0.1
|
| 22 |
+
- Init threshold: 0.1
|
| 23 |
+
- Optimizer: adam
|
| 24 |
+
- Epochs: 300
|
| 25 |
+
- Batch size: 1024
|
| 26 |
+
- Preprocess: center_scale
|
| 27 |
+
- Seed: 4
|
| 28 |
+
|
| 29 |
+
## Loading
|
| 30 |
+
```python
|
| 31 |
+
from safetensors.torch import load_file
|
| 32 |
+
weights = load_file("seed4.safetensors")
|
| 33 |
+
# weights['W_E'] / weights['W_D'] / weights['b_E'] / weights['b_D'] / etc.
|
| 34 |
+
import json
|
| 35 |
+
config = json.load(open("seed4.config.json"))
|
| 36 |
+
```
|
| 37 |
+
|
| 38 |
+
See the repo top-level README for the full crosscoder loading example.
|
pythia-160m/W_E/cross-snapshot-32/d8192/seed4.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:712affee5958492d3f114b48e3f718a8b366513fab63b4d48a9b8f4c0dcf753b
|
| 3 |
+
size 1611792824
|
pythia-160m/W_U/architecture-comparison/d8192/batchtopk/seed0.config.json
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"public_label": "Pythia-160M W_U crosscoder (batchtopk activation), 32 snapshots, d_sae=8192, seed 0",
|
| 3 |
+
"config": {
|
| 4 |
+
"arch": "batchtopk",
|
| 5 |
+
"d_sae": 8192,
|
| 6 |
+
"n_snapshots": 32,
|
| 7 |
+
"d_model": 768,
|
| 8 |
+
"batchtopk_k": 203
|
| 9 |
+
},
|
| 10 |
+
"training": {
|
| 11 |
+
"lr": 5e-05,
|
| 12 |
+
"l1_coefficient": 0.3,
|
| 13 |
+
"gated_l1_coefficient": 0.3,
|
| 14 |
+
"init_threshold": 0.1,
|
| 15 |
+
"bandwidth": 4.0,
|
| 16 |
+
"frequency_scale": 0.01,
|
| 17 |
+
"tanh_stretch": 1.0,
|
| 18 |
+
"jumprelu_lr_factor": 0.1,
|
| 19 |
+
"n_epochs": 100,
|
| 20 |
+
"batch_size": 1024,
|
| 21 |
+
"input_preprocess": "center_scale",
|
| 22 |
+
"l1_warmup_fraction": 0.1,
|
| 23 |
+
"lr_warmup_fraction": 0.0,
|
| 24 |
+
"lr_decay_fraction": 0.0,
|
| 25 |
+
"git_hash": "unknown",
|
| 26 |
+
"amp_dtype": "fp32"
|
| 27 |
+
},
|
| 28 |
+
"quality": {
|
| 29 |
+
"explained_variance": 0.7249162974116965,
|
| 30 |
+
"reconstruction_mse": 0.2749960619211197,
|
| 31 |
+
"mean_l0": 203.0,
|
| 32 |
+
"d_sae": 8192,
|
| 33 |
+
"n_snapshots": 32,
|
| 34 |
+
"n_rows": 50304
|
| 35 |
+
},
|
| 36 |
+
"steps": [
|
| 37 |
+
0,
|
| 38 |
+
1,
|
| 39 |
+
2,
|
| 40 |
+
4,
|
| 41 |
+
8,
|
| 42 |
+
16,
|
| 43 |
+
32,
|
| 44 |
+
64,
|
| 45 |
+
128,
|
| 46 |
+
256,
|
| 47 |
+
512,
|
| 48 |
+
1000,
|
| 49 |
+
2000,
|
| 50 |
+
3000,
|
| 51 |
+
4000,
|
| 52 |
+
5000,
|
| 53 |
+
6000,
|
| 54 |
+
7000,
|
| 55 |
+
8000,
|
| 56 |
+
9000,
|
| 57 |
+
14000,
|
| 58 |
+
21000,
|
| 59 |
+
27000,
|
| 60 |
+
34000,
|
| 61 |
+
47000,
|
| 62 |
+
61000,
|
| 63 |
+
75000,
|
| 64 |
+
89000,
|
| 65 |
+
102000,
|
| 66 |
+
116000,
|
| 67 |
+
130000,
|
| 68 |
+
143000
|
| 69 |
+
],
|
| 70 |
+
"model_name": "EleutherAI/pythia-160m",
|
| 71 |
+
"seed": 0,
|
| 72 |
+
"kind": "cross-snapshot",
|
| 73 |
+
"preprocess_mode": "center_scale"
|
| 74 |
+
}
|
pythia-160m/W_U/architecture-comparison/d8192/batchtopk/seed0.md
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Pythia-160M W_U crosscoder (batchtopk activation), 32 snapshots, d_sae=8192, seed 0
|
| 2 |
+
|
| 3 |
+
Companion artifact to *Parameter-trajectory crosscoders for vocabulary readout
|
| 4 |
+
evolution* (NeurIPS 2026). Trained from snapshots of
|
| 5 |
+
`EleutherAI/pythia-160m` across [0, 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 14000, 21000, 27000, 34000, 47000, 61000, 75000, 89000, 102000, 116000, 130000, 143000] pretraining
|
| 6 |
+
steps.
|
| 7 |
+
|
| 8 |
+
## Quality
|
| 9 |
+
- Explained variance: 0.7249162974116965
|
| 10 |
+
- Mean L0: 203.0
|
| 11 |
+
- Dead-feature rate: —
|
| 12 |
+
- d_sae: 8192
|
| 13 |
+
- n_snapshots: 32
|
| 14 |
+
|
| 15 |
+
## Training recipe (key hparams)
|
| 16 |
+
- Activation: JumpReLU
|
| 17 |
+
- L1 coefficient: 0.3
|
| 18 |
+
- Frequency penalty scale: 0.01
|
| 19 |
+
- Tanh-stretch coefficient: 1.0
|
| 20 |
+
- LR: 5e-05
|
| 21 |
+
- JumpReLU LR multiplier: 0.1
|
| 22 |
+
- Init threshold: 0.1
|
| 23 |
+
- Optimizer: adam
|
| 24 |
+
- Epochs: 100
|
| 25 |
+
- Batch size: 1024
|
| 26 |
+
- Preprocess: center_scale
|
| 27 |
+
- Seed: 0
|
| 28 |
+
|
| 29 |
+
## Loading
|
| 30 |
+
```python
|
| 31 |
+
from safetensors.torch import load_file
|
| 32 |
+
weights = load_file("seed0.safetensors")
|
| 33 |
+
# weights['W_E'] / weights['W_D'] / weights['b_E'] / weights['b_D'] / etc.
|
| 34 |
+
import json
|
| 35 |
+
config = json.load(open("seed0.config.json"))
|
| 36 |
+
```
|
| 37 |
+
|
| 38 |
+
See the repo top-level README for the full crosscoder loading example.
|
pythia-160m/W_U/architecture-comparison/d8192/batchtopk/seed0.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:d9e434afc4191e631e88fc31a1ff33068b24a26c6650066b8ec67e463ec0c790
|
| 3 |
+
size 1611759944
|
pythia-160m/W_U/architecture-comparison/d8192/gated-retuned/seed0.config.json
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"public_label": "Pythia-160M W_U crosscoder (Gated activation, L1=0.05), 32 snapshots, d_sae=8192, seed 0",
|
| 3 |
+
"config": {
|
| 4 |
+
"arch": "gated",
|
| 5 |
+
"d_sae": 8192,
|
| 6 |
+
"n_snapshots": 32,
|
| 7 |
+
"d_model": 768,
|
| 8 |
+
"batchtopk_k": null
|
| 9 |
+
},
|
| 10 |
+
"training": {
|
| 11 |
+
"lr": 5e-05,
|
| 12 |
+
"l1_coefficient": 0.3,
|
| 13 |
+
"gated_l1_coefficient": 0.05,
|
| 14 |
+
"init_threshold": 0.1,
|
| 15 |
+
"bandwidth": 4.0,
|
| 16 |
+
"frequency_scale": 0.01,
|
| 17 |
+
"tanh_stretch": 1.0,
|
| 18 |
+
"jumprelu_lr_factor": 0.1,
|
| 19 |
+
"n_epochs": 100,
|
| 20 |
+
"batch_size": 1024,
|
| 21 |
+
"input_preprocess": "center_scale",
|
| 22 |
+
"l1_warmup_fraction": 0.1,
|
| 23 |
+
"lr_warmup_fraction": 0.0,
|
| 24 |
+
"lr_decay_fraction": 0.0,
|
| 25 |
+
"git_hash": "unknown",
|
| 26 |
+
"amp_dtype": "fp32"
|
| 27 |
+
},
|
| 28 |
+
"quality": {
|
| 29 |
+
"explained_variance": 0.827462127951851,
|
| 30 |
+
"reconstruction_mse": 0.17248290210962294,
|
| 31 |
+
"mean_l0": 653.64568359375,
|
| 32 |
+
"d_sae": 8192,
|
| 33 |
+
"n_snapshots": 32,
|
| 34 |
+
"n_rows": 50304
|
| 35 |
+
},
|
| 36 |
+
"steps": [
|
| 37 |
+
0,
|
| 38 |
+
1,
|
| 39 |
+
2,
|
| 40 |
+
4,
|
| 41 |
+
8,
|
| 42 |
+
16,
|
| 43 |
+
32,
|
| 44 |
+
64,
|
| 45 |
+
128,
|
| 46 |
+
256,
|
| 47 |
+
512,
|
| 48 |
+
1000,
|
| 49 |
+
2000,
|
| 50 |
+
3000,
|
| 51 |
+
4000,
|
| 52 |
+
5000,
|
| 53 |
+
6000,
|
| 54 |
+
7000,
|
| 55 |
+
8000,
|
| 56 |
+
9000,
|
| 57 |
+
14000,
|
| 58 |
+
21000,
|
| 59 |
+
27000,
|
| 60 |
+
34000,
|
| 61 |
+
47000,
|
| 62 |
+
61000,
|
| 63 |
+
75000,
|
| 64 |
+
89000,
|
| 65 |
+
102000,
|
| 66 |
+
116000,
|
| 67 |
+
130000,
|
| 68 |
+
143000
|
| 69 |
+
],
|
| 70 |
+
"model_name": "EleutherAI/pythia-160m",
|
| 71 |
+
"seed": 0,
|
| 72 |
+
"kind": "cross-snapshot",
|
| 73 |
+
"preprocess_mode": "center_scale"
|
| 74 |
+
}
|
pythia-160m/W_U/architecture-comparison/d8192/gated-retuned/seed0.md
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Pythia-160M W_U crosscoder (Gated activation, L1=0.05), 32 snapshots, d_sae=8192, seed 0
|
| 2 |
+
|
| 3 |
+
Companion artifact to *Parameter-trajectory crosscoders for vocabulary readout
|
| 4 |
+
evolution* (NeurIPS 2026). Trained from snapshots of
|
| 5 |
+
`EleutherAI/pythia-160m` across [0, 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 14000, 21000, 27000, 34000, 47000, 61000, 75000, 89000, 102000, 116000, 130000, 143000] pretraining
|
| 6 |
+
steps.
|
| 7 |
+
|
| 8 |
+
## Quality
|
| 9 |
+
- Explained variance: 0.827462127951851
|
| 10 |
+
- Mean L0: 653.64568359375
|
| 11 |
+
- Dead-feature rate: —
|
| 12 |
+
- d_sae: 8192
|
| 13 |
+
- n_snapshots: 32
|
| 14 |
+
|
| 15 |
+
## Training recipe (key hparams)
|
| 16 |
+
- Activation: JumpReLU
|
| 17 |
+
- L1 coefficient: 0.3
|
| 18 |
+
- Frequency penalty scale: 0.01
|
| 19 |
+
- Tanh-stretch coefficient: 1.0
|
| 20 |
+
- LR: 5e-05
|
| 21 |
+
- JumpReLU LR multiplier: 0.1
|
| 22 |
+
- Init threshold: 0.1
|
| 23 |
+
- Optimizer: adam
|
| 24 |
+
- Epochs: 100
|
| 25 |
+
- Batch size: 1024
|
| 26 |
+
- Preprocess: center_scale
|
| 27 |
+
- Seed: 0
|
| 28 |
+
|
| 29 |
+
## Loading
|
| 30 |
+
```python
|
| 31 |
+
from safetensors.torch import load_file
|
| 32 |
+
weights = load_file("seed0.safetensors")
|
| 33 |
+
# weights['W_E'] / weights['W_D'] / weights['b_E'] / weights['b_D'] / etc.
|
| 34 |
+
import json
|
| 35 |
+
config = json.load(open("seed0.config.json"))
|
| 36 |
+
```
|
| 37 |
+
|
| 38 |
+
See the repo top-level README for the full crosscoder loading example.
|
pythia-160m/W_U/architecture-comparison/d8192/gated-retuned/seed0.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:197aaa8bcccd820a827454ad03ae72d0f3306b840719a7251d96e6bf8f4c4120
|
| 3 |
+
size 1611858536
|
pythia-160m/W_U/architecture-comparison/d8192/gated/seed0.config.json
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"public_label": "Pythia-160M W_U crosscoder (gated activation), 32 snapshots, d_sae=8192, seed 0",
|
| 3 |
+
"config": {
|
| 4 |
+
"arch": "gated",
|
| 5 |
+
"d_sae": 8192,
|
| 6 |
+
"n_snapshots": 32,
|
| 7 |
+
"d_model": 768,
|
| 8 |
+
"batchtopk_k": null
|
| 9 |
+
},
|
| 10 |
+
"training": {
|
| 11 |
+
"lr": 5e-05,
|
| 12 |
+
"l1_coefficient": 0.3,
|
| 13 |
+
"gated_l1_coefficient": 0.3,
|
| 14 |
+
"init_threshold": 0.1,
|
| 15 |
+
"bandwidth": 4.0,
|
| 16 |
+
"frequency_scale": 0.01,
|
| 17 |
+
"tanh_stretch": 1.0,
|
| 18 |
+
"jumprelu_lr_factor": 0.1,
|
| 19 |
+
"n_epochs": 100,
|
| 20 |
+
"batch_size": 1024,
|
| 21 |
+
"input_preprocess": "center_scale",
|
| 22 |
+
"l1_warmup_fraction": 0.1,
|
| 23 |
+
"lr_warmup_fraction": 0.0,
|
| 24 |
+
"lr_decay_fraction": 0.0,
|
| 25 |
+
"git_hash": "unknown",
|
| 26 |
+
"amp_dtype": "fp32"
|
| 27 |
+
},
|
| 28 |
+
"quality": {
|
| 29 |
+
"explained_variance": 0.21442979106557436,
|
| 30 |
+
"reconstruction_mse": 0.7853199291229248,
|
| 31 |
+
"mean_l0": 11.51853515625,
|
| 32 |
+
"d_sae": 8192,
|
| 33 |
+
"n_snapshots": 32,
|
| 34 |
+
"n_rows": 50304
|
| 35 |
+
},
|
| 36 |
+
"steps": [
|
| 37 |
+
0,
|
| 38 |
+
1,
|
| 39 |
+
2,
|
| 40 |
+
4,
|
| 41 |
+
8,
|
| 42 |
+
16,
|
| 43 |
+
32,
|
| 44 |
+
64,
|
| 45 |
+
128,
|
| 46 |
+
256,
|
| 47 |
+
512,
|
| 48 |
+
1000,
|
| 49 |
+
2000,
|
| 50 |
+
3000,
|
| 51 |
+
4000,
|
| 52 |
+
5000,
|
| 53 |
+
6000,
|
| 54 |
+
7000,
|
| 55 |
+
8000,
|
| 56 |
+
9000,
|
| 57 |
+
14000,
|
| 58 |
+
21000,
|
| 59 |
+
27000,
|
| 60 |
+
34000,
|
| 61 |
+
47000,
|
| 62 |
+
61000,
|
| 63 |
+
75000,
|
| 64 |
+
89000,
|
| 65 |
+
102000,
|
| 66 |
+
116000,
|
| 67 |
+
130000,
|
| 68 |
+
143000
|
| 69 |
+
],
|
| 70 |
+
"model_name": "EleutherAI/pythia-160m",
|
| 71 |
+
"seed": 0,
|
| 72 |
+
"kind": "cross-snapshot",
|
| 73 |
+
"preprocess_mode": "center_scale"
|
| 74 |
+
}
|
pythia-160m/W_U/architecture-comparison/d8192/gated/seed0.md
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Pythia-160M W_U crosscoder (gated activation), 32 snapshots, d_sae=8192, seed 0
|
| 2 |
+
|
| 3 |
+
Companion artifact to *Parameter-trajectory crosscoders for vocabulary readout
|
| 4 |
+
evolution* (NeurIPS 2026). Trained from snapshots of
|
| 5 |
+
`EleutherAI/pythia-160m` across [0, 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 14000, 21000, 27000, 34000, 47000, 61000, 75000, 89000, 102000, 116000, 130000, 143000] pretraining
|
| 6 |
+
steps.
|
| 7 |
+
|
| 8 |
+
## Quality
|
| 9 |
+
- Explained variance: 0.21442979106557436
|
| 10 |
+
- Mean L0: 11.51853515625
|
| 11 |
+
- Dead-feature rate: —
|
| 12 |
+
- d_sae: 8192
|
| 13 |
+
- n_snapshots: 32
|
| 14 |
+
|
| 15 |
+
## Training recipe (key hparams)
|
| 16 |
+
- Activation: JumpReLU
|
| 17 |
+
- L1 coefficient: 0.3
|
| 18 |
+
- Frequency penalty scale: 0.01
|
| 19 |
+
- Tanh-stretch coefficient: 1.0
|
| 20 |
+
- LR: 5e-05
|
| 21 |
+
- JumpReLU LR multiplier: 0.1
|
| 22 |
+
- Init threshold: 0.1
|
| 23 |
+
- Optimizer: adam
|
| 24 |
+
- Epochs: 100
|
| 25 |
+
- Batch size: 1024
|
| 26 |
+
- Preprocess: center_scale
|
| 27 |
+
- Seed: 0
|
| 28 |
+
|
| 29 |
+
## Loading
|
| 30 |
+
```python
|
| 31 |
+
from safetensors.torch import load_file
|
| 32 |
+
weights = load_file("seed0.safetensors")
|
| 33 |
+
# weights['W_E'] / weights['W_D'] / weights['b_E'] / weights['b_D'] / etc.
|
| 34 |
+
import json
|
| 35 |
+
config = json.load(open("seed0.config.json"))
|
| 36 |
+
```
|
| 37 |
+
|
| 38 |
+
See the repo top-level README for the full crosscoder loading example.
|
pythia-160m/W_U/architecture-comparison/d8192/gated/seed0.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:10b27d935481b43900bab227acea5be346d403e163d2976abb3dc0676adde955
|
| 3 |
+
size 1611858536
|
pythia-160m/W_U/cross-snapshot-16/d8192/seed0.config.json
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"public_label": "Pythia-160M W_U crosscoder, 16-snapshot downsample, d_sae=8192, seed 0",
|
| 3 |
+
"config": {
|
| 4 |
+
"sae_type": "crosscoder",
|
| 5 |
+
"d_model": 768,
|
| 6 |
+
"expansion_factor": 10.6667,
|
| 7 |
+
"use_decoder_bias": true,
|
| 8 |
+
"act_fn": "jumprelu",
|
| 9 |
+
"norm_activation": "inference",
|
| 10 |
+
"sparsity_include_decoder_norm": true,
|
| 11 |
+
"top_k": 50,
|
| 12 |
+
"use_triton_kernel": false,
|
| 13 |
+
"sparsity_threshold_for_triton_spmm_kernel": 0.996,
|
| 14 |
+
"jumprelu_threshold_window": 4.0,
|
| 15 |
+
"hook_points": [
|
| 16 |
+
"wu_step_0",
|
| 17 |
+
"wu_step_1",
|
| 18 |
+
"wu_step_2",
|
| 19 |
+
"wu_step_3",
|
| 20 |
+
"wu_step_4",
|
| 21 |
+
"wu_step_5",
|
| 22 |
+
"wu_step_6",
|
| 23 |
+
"wu_step_7",
|
| 24 |
+
"wu_step_8",
|
| 25 |
+
"wu_step_9",
|
| 26 |
+
"wu_step_10",
|
| 27 |
+
"wu_step_11",
|
| 28 |
+
"wu_step_12",
|
| 29 |
+
"wu_step_13",
|
| 30 |
+
"wu_step_14",
|
| 31 |
+
"wu_step_15"
|
| 32 |
+
]
|
| 33 |
+
},
|
| 34 |
+
"training": {
|
| 35 |
+
"lr": 5e-05,
|
| 36 |
+
"l1_coefficient": 0.3,
|
| 37 |
+
"frequency_scale": 0.01,
|
| 38 |
+
"tanh_stretch_coefficient": 1.0,
|
| 39 |
+
"jumprelu_lr_factor": 0.1,
|
| 40 |
+
"init_threshold": 0.1,
|
| 41 |
+
"decoder_transpose_init": 1.0,
|
| 42 |
+
"amp_dtype": "fp32",
|
| 43 |
+
"optimizer": "adam",
|
| 44 |
+
"n_epochs": 300,
|
| 45 |
+
"batch_size": 1024,
|
| 46 |
+
"expansion_factor": 10.6667,
|
| 47 |
+
"d_sae": 8192,
|
| 48 |
+
"input_preprocess": "center_scale",
|
| 49 |
+
"l1_warmup_fraction": 0.05,
|
| 50 |
+
"lr_warmup_fraction": 0.0,
|
| 51 |
+
"lr_decay_fraction": 0.0,
|
| 52 |
+
"auxk_coefficient": 0.0,
|
| 53 |
+
"auxk_k": 512,
|
| 54 |
+
"dead_window_steps": 100
|
| 55 |
+
},
|
| 56 |
+
"quality": {
|
| 57 |
+
"explained_variance": 0.7734329300485889,
|
| 58 |
+
"reconstruction_mse": 0.22638385832309724,
|
| 59 |
+
"mean_l0": 215.73649780273436,
|
| 60 |
+
"dead_rate": 0.0,
|
| 61 |
+
"d_sae": 8192,
|
| 62 |
+
"n_snapshots": 16,
|
| 63 |
+
"n_rows": 50304
|
| 64 |
+
},
|
| 65 |
+
"steps": [
|
| 66 |
+
0,
|
| 67 |
+
2,
|
| 68 |
+
8,
|
| 69 |
+
32,
|
| 70 |
+
128,
|
| 71 |
+
512,
|
| 72 |
+
2000,
|
| 73 |
+
4000,
|
| 74 |
+
6000,
|
| 75 |
+
8000,
|
| 76 |
+
14000,
|
| 77 |
+
27000,
|
| 78 |
+
47000,
|
| 79 |
+
75000,
|
| 80 |
+
102000,
|
| 81 |
+
130000
|
| 82 |
+
],
|
| 83 |
+
"model_name": "EleutherAI/pythia-160m",
|
| 84 |
+
"seed": 0,
|
| 85 |
+
"kind": "cross-snapshot",
|
| 86 |
+
"preprocess_mode": "center_scale"
|
| 87 |
+
}
|
pythia-160m/W_U/cross-snapshot-16/d8192/seed0.md
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Pythia-160M W_U crosscoder, 16-snapshot downsample, d_sae=8192, seed 0
|
| 2 |
+
|
| 3 |
+
Companion artifact to *Parameter-trajectory crosscoders for vocabulary readout
|
| 4 |
+
evolution* (NeurIPS 2026). Trained from snapshots of
|
| 5 |
+
`EleutherAI/pythia-160m` across [0, 2, 8, 32, 128, 512, 2000, 4000, 6000, 8000, 14000, 27000, 47000, 75000, 102000, 130000] pretraining
|
| 6 |
+
steps.
|
| 7 |
+
|
| 8 |
+
## Quality
|
| 9 |
+
- Explained variance: 0.7734329300485889
|
| 10 |
+
- Mean L0: 215.73649780273436
|
| 11 |
+
- Dead-feature rate: 0.0
|
| 12 |
+
- d_sae: 8192
|
| 13 |
+
- n_snapshots: 16
|
| 14 |
+
|
| 15 |
+
## Training recipe (key hparams)
|
| 16 |
+
- Activation: jumprelu
|
| 17 |
+
- L1 coefficient: 0.3
|
| 18 |
+
- Frequency penalty scale: 0.01
|
| 19 |
+
- Tanh-stretch coefficient: 1.0
|
| 20 |
+
- LR: 5e-05
|
| 21 |
+
- JumpReLU LR multiplier: 0.1
|
| 22 |
+
- Init threshold: 0.1
|
| 23 |
+
- Optimizer: adam
|
| 24 |
+
- Epochs: 300
|
| 25 |
+
- Batch size: 1024
|
| 26 |
+
- Preprocess: center_scale
|
| 27 |
+
- Seed: 0
|
| 28 |
+
|
| 29 |
+
## Loading
|
| 30 |
+
```python
|
| 31 |
+
from safetensors.torch import load_file
|
| 32 |
+
weights = load_file("seed0.safetensors")
|
| 33 |
+
# weights['W_E'] / weights['W_D'] / weights['b_E'] / weights['b_D'] / etc.
|
| 34 |
+
import json
|
| 35 |
+
config = json.load(open("seed0.config.json"))
|
| 36 |
+
```
|
| 37 |
+
|
| 38 |
+
See the repo top-level README for the full crosscoder loading example.
|
pythia-160m/W_U/cross-snapshot-16/d8192/seed0.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:8496ae3b72b23b0a65698e3e424eddc411bd6ac919f1aaa915ae06a147b3803a
|
| 3 |
+
size 805913008
|
pythia-160m/W_U/cross-snapshot-32/d16384/seed0.config.json
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"public_label": "Pythia-160M W_U crosscoder, 32 snapshots, d_sae=16384, seed 0",
|
| 3 |
+
"config": {
|
| 4 |
+
"sae_type": "crosscoder",
|
| 5 |
+
"d_model": 768,
|
| 6 |
+
"expansion_factor": 21.334,
|
| 7 |
+
"use_decoder_bias": true,
|
| 8 |
+
"act_fn": "jumprelu",
|
| 9 |
+
"norm_activation": "inference",
|
| 10 |
+
"sparsity_include_decoder_norm": true,
|
| 11 |
+
"top_k": 50,
|
| 12 |
+
"use_triton_kernel": false,
|
| 13 |
+
"sparsity_threshold_for_triton_spmm_kernel": 0.996,
|
| 14 |
+
"jumprelu_threshold_window": 4.0,
|
| 15 |
+
"hook_points": [
|
| 16 |
+
"wu_step_0",
|
| 17 |
+
"wu_step_1",
|
| 18 |
+
"wu_step_2",
|
| 19 |
+
"wu_step_3",
|
| 20 |
+
"wu_step_4",
|
| 21 |
+
"wu_step_5",
|
| 22 |
+
"wu_step_6",
|
| 23 |
+
"wu_step_7",
|
| 24 |
+
"wu_step_8",
|
| 25 |
+
"wu_step_9",
|
| 26 |
+
"wu_step_10",
|
| 27 |
+
"wu_step_11",
|
| 28 |
+
"wu_step_12",
|
| 29 |
+
"wu_step_13",
|
| 30 |
+
"wu_step_14",
|
| 31 |
+
"wu_step_15",
|
| 32 |
+
"wu_step_16",
|
| 33 |
+
"wu_step_17",
|
| 34 |
+
"wu_step_18",
|
| 35 |
+
"wu_step_19",
|
| 36 |
+
"wu_step_20",
|
| 37 |
+
"wu_step_21",
|
| 38 |
+
"wu_step_22",
|
| 39 |
+
"wu_step_23",
|
| 40 |
+
"wu_step_24",
|
| 41 |
+
"wu_step_25",
|
| 42 |
+
"wu_step_26",
|
| 43 |
+
"wu_step_27",
|
| 44 |
+
"wu_step_28",
|
| 45 |
+
"wu_step_29",
|
| 46 |
+
"wu_step_30",
|
| 47 |
+
"wu_step_31"
|
| 48 |
+
]
|
| 49 |
+
},
|
| 50 |
+
"training": {
|
| 51 |
+
"lr": 5e-05,
|
| 52 |
+
"l1_coefficient": 0.3,
|
| 53 |
+
"frequency_scale": 0.01,
|
| 54 |
+
"tanh_stretch_coefficient": 4.0,
|
| 55 |
+
"jumprelu_lr_factor": 0.1,
|
| 56 |
+
"n_epochs": 300,
|
| 57 |
+
"batch_size": 1024,
|
| 58 |
+
"expansion_factor": 21.334,
|
| 59 |
+
"input_preprocess": "center_scale",
|
| 60 |
+
"l1_warmup_fraction": 0.05,
|
| 61 |
+
"auxk_coefficient": 0.0,
|
| 62 |
+
"auxk_k": 512,
|
| 63 |
+
"dead_window_steps": 100
|
| 64 |
+
},
|
| 65 |
+
"quality": {
|
| 66 |
+
"explained_variance": 0.7802076016978367,
|
| 67 |
+
"reconstruction_mse": 0.21972236931324005,
|
| 68 |
+
"mean_l0": 103.0708544921875,
|
| 69 |
+
"d_sae": 16384,
|
| 70 |
+
"n_snapshots": 32,
|
| 71 |
+
"n_rows": 50304
|
| 72 |
+
},
|
| 73 |
+
"steps": [
|
| 74 |
+
0,
|
| 75 |
+
1,
|
| 76 |
+
2,
|
| 77 |
+
4,
|
| 78 |
+
8,
|
| 79 |
+
16,
|
| 80 |
+
32,
|
| 81 |
+
64,
|
| 82 |
+
128,
|
| 83 |
+
256,
|
| 84 |
+
512,
|
| 85 |
+
1000,
|
| 86 |
+
2000,
|
| 87 |
+
3000,
|
| 88 |
+
4000,
|
| 89 |
+
5000,
|
| 90 |
+
6000,
|
| 91 |
+
7000,
|
| 92 |
+
8000,
|
| 93 |
+
9000,
|
| 94 |
+
14000,
|
| 95 |
+
21000,
|
| 96 |
+
27000,
|
| 97 |
+
34000,
|
| 98 |
+
47000,
|
| 99 |
+
61000,
|
| 100 |
+
75000,
|
| 101 |
+
89000,
|
| 102 |
+
102000,
|
| 103 |
+
116000,
|
| 104 |
+
130000,
|
| 105 |
+
143000
|
| 106 |
+
],
|
| 107 |
+
"model_name": "EleutherAI/pythia-160m",
|
| 108 |
+
"seed": 0,
|
| 109 |
+
"kind": "cross-snapshot",
|
| 110 |
+
"preprocess_mode": "center_scale"
|
| 111 |
+
}
|
pythia-160m/W_U/cross-snapshot-32/d16384/seed0.md
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Pythia-160M W_U crosscoder, 32 snapshots, d_sae=16384, seed 0
|
| 2 |
+
|
| 3 |
+
Companion artifact to *Parameter-trajectory crosscoders for vocabulary readout
|
| 4 |
+
evolution* (NeurIPS 2026). Trained from snapshots of
|
| 5 |
+
`EleutherAI/pythia-160m` across [0, 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 14000, 21000, 27000, 34000, 47000, 61000, 75000, 89000, 102000, 116000, 130000, 143000] pretraining
|
| 6 |
+
steps.
|
| 7 |
+
|
| 8 |
+
## Quality
|
| 9 |
+
- Explained variance: 0.7802076016978367
|
| 10 |
+
- Mean L0: 103.0708544921875
|
| 11 |
+
- Dead-feature rate: —
|
| 12 |
+
- d_sae: 16384
|
| 13 |
+
- n_snapshots: 32
|
| 14 |
+
|
| 15 |
+
## Training recipe (key hparams)
|
| 16 |
+
- Activation: jumprelu
|
| 17 |
+
- L1 coefficient: 0.3
|
| 18 |
+
- Frequency penalty scale: 0.01
|
| 19 |
+
- Tanh-stretch coefficient: 4.0
|
| 20 |
+
- LR: 5e-05
|
| 21 |
+
- JumpReLU LR multiplier: 0.1
|
| 22 |
+
- Init threshold: —
|
| 23 |
+
- Optimizer: adam
|
| 24 |
+
- Epochs: 300
|
| 25 |
+
- Batch size: 1024
|
| 26 |
+
- Preprocess: center_scale
|
| 27 |
+
- Seed: 0
|
| 28 |
+
|
| 29 |
+
## Loading
|
| 30 |
+
```python
|
| 31 |
+
from safetensors.torch import load_file
|
| 32 |
+
weights = load_file("seed0.safetensors")
|
| 33 |
+
# weights['W_E'] / weights['W_D'] / weights['b_E'] / weights['b_D'] / etc.
|
| 34 |
+
import json
|
| 35 |
+
config = json.load(open("seed0.config.json"))
|
| 36 |
+
```
|
| 37 |
+
|
| 38 |
+
See the repo top-level README for the full crosscoder loading example.
|
pythia-160m/W_U/cross-snapshot-32/d16384/seed0.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:1a9b590ef230642ca44ea8a562155785aacd314bc757a845fc88cb3e12f72af1
|
| 3 |
+
size 3223486912
|
pythia-160m/W_U/cross-snapshot-32/d24576/seed0.config.json
ADDED
|
@@ -0,0 +1,119 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"public_label": "Pythia-160M W_U crosscoder, 32 snapshots, d_sae=24576, seed 0",
|
| 3 |
+
"config": {
|
| 4 |
+
"sae_type": "crosscoder",
|
| 5 |
+
"d_model": 768,
|
| 6 |
+
"expansion_factor": 32.0,
|
| 7 |
+
"use_decoder_bias": true,
|
| 8 |
+
"act_fn": "jumprelu",
|
| 9 |
+
"norm_activation": "inference",
|
| 10 |
+
"sparsity_include_decoder_norm": true,
|
| 11 |
+
"top_k": 50,
|
| 12 |
+
"use_triton_kernel": false,
|
| 13 |
+
"sparsity_threshold_for_triton_spmm_kernel": 0.996,
|
| 14 |
+
"jumprelu_threshold_window": 4.0,
|
| 15 |
+
"hook_points": [
|
| 16 |
+
"wu_step_0",
|
| 17 |
+
"wu_step_1",
|
| 18 |
+
"wu_step_2",
|
| 19 |
+
"wu_step_3",
|
| 20 |
+
"wu_step_4",
|
| 21 |
+
"wu_step_5",
|
| 22 |
+
"wu_step_6",
|
| 23 |
+
"wu_step_7",
|
| 24 |
+
"wu_step_8",
|
| 25 |
+
"wu_step_9",
|
| 26 |
+
"wu_step_10",
|
| 27 |
+
"wu_step_11",
|
| 28 |
+
"wu_step_12",
|
| 29 |
+
"wu_step_13",
|
| 30 |
+
"wu_step_14",
|
| 31 |
+
"wu_step_15",
|
| 32 |
+
"wu_step_16",
|
| 33 |
+
"wu_step_17",
|
| 34 |
+
"wu_step_18",
|
| 35 |
+
"wu_step_19",
|
| 36 |
+
"wu_step_20",
|
| 37 |
+
"wu_step_21",
|
| 38 |
+
"wu_step_22",
|
| 39 |
+
"wu_step_23",
|
| 40 |
+
"wu_step_24",
|
| 41 |
+
"wu_step_25",
|
| 42 |
+
"wu_step_26",
|
| 43 |
+
"wu_step_27",
|
| 44 |
+
"wu_step_28",
|
| 45 |
+
"wu_step_29",
|
| 46 |
+
"wu_step_30",
|
| 47 |
+
"wu_step_31"
|
| 48 |
+
]
|
| 49 |
+
},
|
| 50 |
+
"training": {
|
| 51 |
+
"lr": 5e-05,
|
| 52 |
+
"l1_coefficient": 0.3,
|
| 53 |
+
"frequency_scale": 0.01,
|
| 54 |
+
"tanh_stretch_coefficient": 1.0,
|
| 55 |
+
"jumprelu_lr_factor": 0.1,
|
| 56 |
+
"init_threshold": 0.1,
|
| 57 |
+
"decoder_transpose_init": 1.0,
|
| 58 |
+
"amp_dtype": "fp32",
|
| 59 |
+
"optimizer": "adam",
|
| 60 |
+
"n_epochs": 300,
|
| 61 |
+
"batch_size": 1024,
|
| 62 |
+
"expansion_factor": 32.0,
|
| 63 |
+
"d_sae": 24576,
|
| 64 |
+
"input_preprocess": "center_scale",
|
| 65 |
+
"l1_warmup_fraction": 0.05,
|
| 66 |
+
"lr_warmup_fraction": 0.0,
|
| 67 |
+
"lr_decay_fraction": 0.0,
|
| 68 |
+
"auxk_coefficient": 0.0,
|
| 69 |
+
"auxk_k": 512,
|
| 70 |
+
"dead_window_steps": 100
|
| 71 |
+
},
|
| 72 |
+
"quality": {
|
| 73 |
+
"explained_variance": 0.9196719747097695,
|
| 74 |
+
"reconstruction_mse": 0.08030243307352065,
|
| 75 |
+
"mean_l0": 285.9946594238281,
|
| 76 |
+
"dead_rate": 0.0,
|
| 77 |
+
"d_sae": 24576,
|
| 78 |
+
"n_snapshots": 32,
|
| 79 |
+
"n_rows": 50304
|
| 80 |
+
},
|
| 81 |
+
"steps": [
|
| 82 |
+
0,
|
| 83 |
+
1,
|
| 84 |
+
2,
|
| 85 |
+
4,
|
| 86 |
+
8,
|
| 87 |
+
16,
|
| 88 |
+
32,
|
| 89 |
+
64,
|
| 90 |
+
128,
|
| 91 |
+
256,
|
| 92 |
+
512,
|
| 93 |
+
1000,
|
| 94 |
+
2000,
|
| 95 |
+
3000,
|
| 96 |
+
4000,
|
| 97 |
+
5000,
|
| 98 |
+
6000,
|
| 99 |
+
7000,
|
| 100 |
+
8000,
|
| 101 |
+
9000,
|
| 102 |
+
14000,
|
| 103 |
+
21000,
|
| 104 |
+
27000,
|
| 105 |
+
34000,
|
| 106 |
+
47000,
|
| 107 |
+
61000,
|
| 108 |
+
75000,
|
| 109 |
+
89000,
|
| 110 |
+
102000,
|
| 111 |
+
116000,
|
| 112 |
+
130000,
|
| 113 |
+
143000
|
| 114 |
+
],
|
| 115 |
+
"model_name": "EleutherAI/pythia-160m",
|
| 116 |
+
"seed": 0,
|
| 117 |
+
"kind": "cross-snapshot",
|
| 118 |
+
"preprocess_mode": "center_scale"
|
| 119 |
+
}
|
pythia-160m/W_U/cross-snapshot-32/d24576/seed0.md
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Pythia-160M W_U crosscoder, 32 snapshots, d_sae=24576, seed 0
|
| 2 |
+
|
| 3 |
+
Companion artifact to *Parameter-trajectory crosscoders for vocabulary readout
|
| 4 |
+
evolution* (NeurIPS 2026). Trained from snapshots of
|
| 5 |
+
`EleutherAI/pythia-160m` across [0, 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 14000, 21000, 27000, 34000, 47000, 61000, 75000, 89000, 102000, 116000, 130000, 143000] pretraining
|
| 6 |
+
steps.
|
| 7 |
+
|
| 8 |
+
## Quality
|
| 9 |
+
- Explained variance: 0.9196719747097695
|
| 10 |
+
- Mean L0: 285.9946594238281
|
| 11 |
+
- Dead-feature rate: 0.0
|
| 12 |
+
- d_sae: 24576
|
| 13 |
+
- n_snapshots: 32
|
| 14 |
+
|
| 15 |
+
## Training recipe (key hparams)
|
| 16 |
+
- Activation: jumprelu
|
| 17 |
+
- L1 coefficient: 0.3
|
| 18 |
+
- Frequency penalty scale: 0.01
|
| 19 |
+
- Tanh-stretch coefficient: 1.0
|
| 20 |
+
- LR: 5e-05
|
| 21 |
+
- JumpReLU LR multiplier: 0.1
|
| 22 |
+
- Init threshold: 0.1
|
| 23 |
+
- Optimizer: adam
|
| 24 |
+
- Epochs: 300
|
| 25 |
+
- Batch size: 1024
|
| 26 |
+
- Preprocess: center_scale
|
| 27 |
+
- Seed: 0
|
| 28 |
+
|
| 29 |
+
## Loading
|
| 30 |
+
```python
|
| 31 |
+
from safetensors.torch import load_file
|
| 32 |
+
weights = load_file("seed0.safetensors")
|
| 33 |
+
# weights['W_E'] / weights['W_D'] / weights['b_E'] / weights['b_D'] / etc.
|
| 34 |
+
import json
|
| 35 |
+
config = json.load(open("seed0.config.json"))
|
| 36 |
+
```
|
| 37 |
+
|
| 38 |
+
See the repo top-level README for the full crosscoder loading example.
|
pythia-160m/W_U/cross-snapshot-32/d24576/seed0.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:5998eba9b1f0f94f7579c692dcee2de8a2875f2f80f3fb4e127f6024f411e815
|
| 3 |
+
size 4835180992
|
pythia-160m/W_U/cross-snapshot-32/d24576/seed1.config.json
ADDED
|
@@ -0,0 +1,119 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"public_label": "Pythia-160M W_U crosscoder, 32 snapshots, d_sae=24576, seed 1",
|
| 3 |
+
"config": {
|
| 4 |
+
"sae_type": "crosscoder",
|
| 5 |
+
"d_model": 768,
|
| 6 |
+
"expansion_factor": 32.0,
|
| 7 |
+
"use_decoder_bias": true,
|
| 8 |
+
"act_fn": "jumprelu",
|
| 9 |
+
"norm_activation": "inference",
|
| 10 |
+
"sparsity_include_decoder_norm": true,
|
| 11 |
+
"top_k": 50,
|
| 12 |
+
"use_triton_kernel": false,
|
| 13 |
+
"sparsity_threshold_for_triton_spmm_kernel": 0.996,
|
| 14 |
+
"jumprelu_threshold_window": 4.0,
|
| 15 |
+
"hook_points": [
|
| 16 |
+
"wu_step_0",
|
| 17 |
+
"wu_step_1",
|
| 18 |
+
"wu_step_2",
|
| 19 |
+
"wu_step_3",
|
| 20 |
+
"wu_step_4",
|
| 21 |
+
"wu_step_5",
|
| 22 |
+
"wu_step_6",
|
| 23 |
+
"wu_step_7",
|
| 24 |
+
"wu_step_8",
|
| 25 |
+
"wu_step_9",
|
| 26 |
+
"wu_step_10",
|
| 27 |
+
"wu_step_11",
|
| 28 |
+
"wu_step_12",
|
| 29 |
+
"wu_step_13",
|
| 30 |
+
"wu_step_14",
|
| 31 |
+
"wu_step_15",
|
| 32 |
+
"wu_step_16",
|
| 33 |
+
"wu_step_17",
|
| 34 |
+
"wu_step_18",
|
| 35 |
+
"wu_step_19",
|
| 36 |
+
"wu_step_20",
|
| 37 |
+
"wu_step_21",
|
| 38 |
+
"wu_step_22",
|
| 39 |
+
"wu_step_23",
|
| 40 |
+
"wu_step_24",
|
| 41 |
+
"wu_step_25",
|
| 42 |
+
"wu_step_26",
|
| 43 |
+
"wu_step_27",
|
| 44 |
+
"wu_step_28",
|
| 45 |
+
"wu_step_29",
|
| 46 |
+
"wu_step_30",
|
| 47 |
+
"wu_step_31"
|
| 48 |
+
]
|
| 49 |
+
},
|
| 50 |
+
"training": {
|
| 51 |
+
"lr": 5e-05,
|
| 52 |
+
"l1_coefficient": 0.3,
|
| 53 |
+
"frequency_scale": 0.01,
|
| 54 |
+
"tanh_stretch_coefficient": 1.0,
|
| 55 |
+
"jumprelu_lr_factor": 0.1,
|
| 56 |
+
"init_threshold": 0.1,
|
| 57 |
+
"decoder_transpose_init": 1.0,
|
| 58 |
+
"amp_dtype": "fp32",
|
| 59 |
+
"optimizer": "adam",
|
| 60 |
+
"n_epochs": 300,
|
| 61 |
+
"batch_size": 1024,
|
| 62 |
+
"expansion_factor": 32.0,
|
| 63 |
+
"d_sae": 24576,
|
| 64 |
+
"input_preprocess": "center_scale",
|
| 65 |
+
"l1_warmup_fraction": 0.05,
|
| 66 |
+
"lr_warmup_fraction": 0.0,
|
| 67 |
+
"lr_decay_fraction": 0.0,
|
| 68 |
+
"auxk_coefficient": 0.0,
|
| 69 |
+
"auxk_k": 512,
|
| 70 |
+
"dead_window_steps": 100
|
| 71 |
+
},
|
| 72 |
+
"quality": {
|
| 73 |
+
"explained_variance": 0.9195844996740984,
|
| 74 |
+
"reconstruction_mse": 0.08038988023996353,
|
| 75 |
+
"mean_l0": 286.09990661621094,
|
| 76 |
+
"dead_rate": 0.0,
|
| 77 |
+
"d_sae": 24576,
|
| 78 |
+
"n_snapshots": 32,
|
| 79 |
+
"n_rows": 50304
|
| 80 |
+
},
|
| 81 |
+
"steps": [
|
| 82 |
+
0,
|
| 83 |
+
1,
|
| 84 |
+
2,
|
| 85 |
+
4,
|
| 86 |
+
8,
|
| 87 |
+
16,
|
| 88 |
+
32,
|
| 89 |
+
64,
|
| 90 |
+
128,
|
| 91 |
+
256,
|
| 92 |
+
512,
|
| 93 |
+
1000,
|
| 94 |
+
2000,
|
| 95 |
+
3000,
|
| 96 |
+
4000,
|
| 97 |
+
5000,
|
| 98 |
+
6000,
|
| 99 |
+
7000,
|
| 100 |
+
8000,
|
| 101 |
+
9000,
|
| 102 |
+
14000,
|
| 103 |
+
21000,
|
| 104 |
+
27000,
|
| 105 |
+
34000,
|
| 106 |
+
47000,
|
| 107 |
+
61000,
|
| 108 |
+
75000,
|
| 109 |
+
89000,
|
| 110 |
+
102000,
|
| 111 |
+
116000,
|
| 112 |
+
130000,
|
| 113 |
+
143000
|
| 114 |
+
],
|
| 115 |
+
"model_name": "EleutherAI/pythia-160m",
|
| 116 |
+
"seed": 1,
|
| 117 |
+
"kind": "cross-snapshot",
|
| 118 |
+
"preprocess_mode": "center_scale"
|
| 119 |
+
}
|
pythia-160m/W_U/cross-snapshot-32/d24576/seed1.md
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Pythia-160M W_U crosscoder, 32 snapshots, d_sae=24576, seed 1
|
| 2 |
+
|
| 3 |
+
Companion artifact to *Parameter-trajectory crosscoders for vocabulary readout
|
| 4 |
+
evolution* (NeurIPS 2026). Trained from snapshots of
|
| 5 |
+
`EleutherAI/pythia-160m` across [0, 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 14000, 21000, 27000, 34000, 47000, 61000, 75000, 89000, 102000, 116000, 130000, 143000] pretraining
|
| 6 |
+
steps.
|
| 7 |
+
|
| 8 |
+
## Quality
|
| 9 |
+
- Explained variance: 0.9195844996740984
|
| 10 |
+
- Mean L0: 286.09990661621094
|
| 11 |
+
- Dead-feature rate: 0.0
|
| 12 |
+
- d_sae: 24576
|
| 13 |
+
- n_snapshots: 32
|
| 14 |
+
|
| 15 |
+
## Training recipe (key hparams)
|
| 16 |
+
- Activation: jumprelu
|
| 17 |
+
- L1 coefficient: 0.3
|
| 18 |
+
- Frequency penalty scale: 0.01
|
| 19 |
+
- Tanh-stretch coefficient: 1.0
|
| 20 |
+
- LR: 5e-05
|
| 21 |
+
- JumpReLU LR multiplier: 0.1
|
| 22 |
+
- Init threshold: 0.1
|
| 23 |
+
- Optimizer: adam
|
| 24 |
+
- Epochs: 300
|
| 25 |
+
- Batch size: 1024
|
| 26 |
+
- Preprocess: center_scale
|
| 27 |
+
- Seed: 1
|
| 28 |
+
|
| 29 |
+
## Loading
|
| 30 |
+
```python
|
| 31 |
+
from safetensors.torch import load_file
|
| 32 |
+
weights = load_file("seed1.safetensors")
|
| 33 |
+
# weights['W_E'] / weights['W_D'] / weights['b_E'] / weights['b_D'] / etc.
|
| 34 |
+
import json
|
| 35 |
+
config = json.load(open("seed1.config.json"))
|
| 36 |
+
```
|
| 37 |
+
|
| 38 |
+
See the repo top-level README for the full crosscoder loading example.
|
pythia-160m/W_U/cross-snapshot-32/d24576/seed1.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:c071477b1fbd48eb9033488e6943f35e6b9eba95a7839dfc3052701e1ceca4ff
|
| 3 |
+
size 4835180992
|
pythia-160m/W_U/cross-snapshot-32/d24576/seed2.config.json
ADDED
|
@@ -0,0 +1,119 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"public_label": "Pythia-160M W_U crosscoder, 32 snapshots, d_sae=24576, seed 2",
|
| 3 |
+
"config": {
|
| 4 |
+
"sae_type": "crosscoder",
|
| 5 |
+
"d_model": 768,
|
| 6 |
+
"expansion_factor": 32.0,
|
| 7 |
+
"use_decoder_bias": true,
|
| 8 |
+
"act_fn": "jumprelu",
|
| 9 |
+
"norm_activation": "inference",
|
| 10 |
+
"sparsity_include_decoder_norm": true,
|
| 11 |
+
"top_k": 50,
|
| 12 |
+
"use_triton_kernel": false,
|
| 13 |
+
"sparsity_threshold_for_triton_spmm_kernel": 0.996,
|
| 14 |
+
"jumprelu_threshold_window": 4.0,
|
| 15 |
+
"hook_points": [
|
| 16 |
+
"wu_step_0",
|
| 17 |
+
"wu_step_1",
|
| 18 |
+
"wu_step_2",
|
| 19 |
+
"wu_step_3",
|
| 20 |
+
"wu_step_4",
|
| 21 |
+
"wu_step_5",
|
| 22 |
+
"wu_step_6",
|
| 23 |
+
"wu_step_7",
|
| 24 |
+
"wu_step_8",
|
| 25 |
+
"wu_step_9",
|
| 26 |
+
"wu_step_10",
|
| 27 |
+
"wu_step_11",
|
| 28 |
+
"wu_step_12",
|
| 29 |
+
"wu_step_13",
|
| 30 |
+
"wu_step_14",
|
| 31 |
+
"wu_step_15",
|
| 32 |
+
"wu_step_16",
|
| 33 |
+
"wu_step_17",
|
| 34 |
+
"wu_step_18",
|
| 35 |
+
"wu_step_19",
|
| 36 |
+
"wu_step_20",
|
| 37 |
+
"wu_step_21",
|
| 38 |
+
"wu_step_22",
|
| 39 |
+
"wu_step_23",
|
| 40 |
+
"wu_step_24",
|
| 41 |
+
"wu_step_25",
|
| 42 |
+
"wu_step_26",
|
| 43 |
+
"wu_step_27",
|
| 44 |
+
"wu_step_28",
|
| 45 |
+
"wu_step_29",
|
| 46 |
+
"wu_step_30",
|
| 47 |
+
"wu_step_31"
|
| 48 |
+
]
|
| 49 |
+
},
|
| 50 |
+
"training": {
|
| 51 |
+
"lr": 5e-05,
|
| 52 |
+
"l1_coefficient": 0.3,
|
| 53 |
+
"frequency_scale": 0.01,
|
| 54 |
+
"tanh_stretch_coefficient": 1.0,
|
| 55 |
+
"jumprelu_lr_factor": 0.1,
|
| 56 |
+
"init_threshold": 0.1,
|
| 57 |
+
"decoder_transpose_init": 1.0,
|
| 58 |
+
"amp_dtype": "fp32",
|
| 59 |
+
"optimizer": "adam",
|
| 60 |
+
"n_epochs": 300,
|
| 61 |
+
"batch_size": 1024,
|
| 62 |
+
"expansion_factor": 32.0,
|
| 63 |
+
"d_sae": 24576,
|
| 64 |
+
"input_preprocess": "center_scale",
|
| 65 |
+
"l1_warmup_fraction": 0.05,
|
| 66 |
+
"lr_warmup_fraction": 0.0,
|
| 67 |
+
"lr_decay_fraction": 0.0,
|
| 68 |
+
"auxk_coefficient": 0.0,
|
| 69 |
+
"auxk_k": 512,
|
| 70 |
+
"dead_window_steps": 100
|
| 71 |
+
},
|
| 72 |
+
"quality": {
|
| 73 |
+
"explained_variance": 0.9196765967343927,
|
| 74 |
+
"reconstruction_mse": 0.08029781252145768,
|
| 75 |
+
"mean_l0": 286.3446789550781,
|
| 76 |
+
"dead_rate": 0.0,
|
| 77 |
+
"d_sae": 24576,
|
| 78 |
+
"n_snapshots": 32,
|
| 79 |
+
"n_rows": 50304
|
| 80 |
+
},
|
| 81 |
+
"steps": [
|
| 82 |
+
0,
|
| 83 |
+
1,
|
| 84 |
+
2,
|
| 85 |
+
4,
|
| 86 |
+
8,
|
| 87 |
+
16,
|
| 88 |
+
32,
|
| 89 |
+
64,
|
| 90 |
+
128,
|
| 91 |
+
256,
|
| 92 |
+
512,
|
| 93 |
+
1000,
|
| 94 |
+
2000,
|
| 95 |
+
3000,
|
| 96 |
+
4000,
|
| 97 |
+
5000,
|
| 98 |
+
6000,
|
| 99 |
+
7000,
|
| 100 |
+
8000,
|
| 101 |
+
9000,
|
| 102 |
+
14000,
|
| 103 |
+
21000,
|
| 104 |
+
27000,
|
| 105 |
+
34000,
|
| 106 |
+
47000,
|
| 107 |
+
61000,
|
| 108 |
+
75000,
|
| 109 |
+
89000,
|
| 110 |
+
102000,
|
| 111 |
+
116000,
|
| 112 |
+
130000,
|
| 113 |
+
143000
|
| 114 |
+
],
|
| 115 |
+
"model_name": "EleutherAI/pythia-160m",
|
| 116 |
+
"seed": 2,
|
| 117 |
+
"kind": "cross-snapshot",
|
| 118 |
+
"preprocess_mode": "center_scale"
|
| 119 |
+
}
|
pythia-160m/W_U/cross-snapshot-32/d24576/seed2.md
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Pythia-160M W_U crosscoder, 32 snapshots, d_sae=24576, seed 2
|
| 2 |
+
|
| 3 |
+
Companion artifact to *Parameter-trajectory crosscoders for vocabulary readout
|
| 4 |
+
evolution* (NeurIPS 2026). Trained from snapshots of
|
| 5 |
+
`EleutherAI/pythia-160m` across [0, 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 14000, 21000, 27000, 34000, 47000, 61000, 75000, 89000, 102000, 116000, 130000, 143000] pretraining
|
| 6 |
+
steps.
|
| 7 |
+
|
| 8 |
+
## Quality
|
| 9 |
+
- Explained variance: 0.9196765967343927
|
| 10 |
+
- Mean L0: 286.3446789550781
|
| 11 |
+
- Dead-feature rate: 0.0
|
| 12 |
+
- d_sae: 24576
|
| 13 |
+
- n_snapshots: 32
|
| 14 |
+
|
| 15 |
+
## Training recipe (key hparams)
|
| 16 |
+
- Activation: jumprelu
|
| 17 |
+
- L1 coefficient: 0.3
|
| 18 |
+
- Frequency penalty scale: 0.01
|
| 19 |
+
- Tanh-stretch coefficient: 1.0
|
| 20 |
+
- LR: 5e-05
|
| 21 |
+
- JumpReLU LR multiplier: 0.1
|
| 22 |
+
- Init threshold: 0.1
|
| 23 |
+
- Optimizer: adam
|
| 24 |
+
- Epochs: 300
|
| 25 |
+
- Batch size: 1024
|
| 26 |
+
- Preprocess: center_scale
|
| 27 |
+
- Seed: 2
|
| 28 |
+
|
| 29 |
+
## Loading
|
| 30 |
+
```python
|
| 31 |
+
from safetensors.torch import load_file
|
| 32 |
+
weights = load_file("seed2.safetensors")
|
| 33 |
+
# weights['W_E'] / weights['W_D'] / weights['b_E'] / weights['b_D'] / etc.
|
| 34 |
+
import json
|
| 35 |
+
config = json.load(open("seed2.config.json"))
|
| 36 |
+
```
|
| 37 |
+
|
| 38 |
+
See the repo top-level README for the full crosscoder loading example.
|
pythia-160m/W_U/cross-snapshot-32/d24576/seed2.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:63a4a1630f355333053e48278a4c4cb5e6616e1ab92700e7d121cb8960083abf
|
| 3 |
+
size 4835180992
|
pythia-160m/W_U/cross-snapshot-32/d8192/seed0.config.json
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"public_label": "Pythia-160M W_U crosscoder, 32 snapshots, d_sae=8192, seed 0",
|
| 3 |
+
"config": {
|
| 4 |
+
"sae_type": "crosscoder",
|
| 5 |
+
"d_model": 768,
|
| 6 |
+
"expansion_factor": 10.6667,
|
| 7 |
+
"use_decoder_bias": true,
|
| 8 |
+
"act_fn": "jumprelu",
|
| 9 |
+
"norm_activation": "inference",
|
| 10 |
+
"sparsity_include_decoder_norm": true,
|
| 11 |
+
"top_k": 50,
|
| 12 |
+
"use_triton_kernel": false,
|
| 13 |
+
"sparsity_threshold_for_triton_spmm_kernel": 0.996,
|
| 14 |
+
"jumprelu_threshold_window": 4.0,
|
| 15 |
+
"hook_points": [
|
| 16 |
+
"wu_step_0",
|
| 17 |
+
"wu_step_1",
|
| 18 |
+
"wu_step_2",
|
| 19 |
+
"wu_step_3",
|
| 20 |
+
"wu_step_4",
|
| 21 |
+
"wu_step_5",
|
| 22 |
+
"wu_step_6",
|
| 23 |
+
"wu_step_7",
|
| 24 |
+
"wu_step_8",
|
| 25 |
+
"wu_step_9",
|
| 26 |
+
"wu_step_10",
|
| 27 |
+
"wu_step_11",
|
| 28 |
+
"wu_step_12",
|
| 29 |
+
"wu_step_13",
|
| 30 |
+
"wu_step_14",
|
| 31 |
+
"wu_step_15",
|
| 32 |
+
"wu_step_16",
|
| 33 |
+
"wu_step_17",
|
| 34 |
+
"wu_step_18",
|
| 35 |
+
"wu_step_19",
|
| 36 |
+
"wu_step_20",
|
| 37 |
+
"wu_step_21",
|
| 38 |
+
"wu_step_22",
|
| 39 |
+
"wu_step_23",
|
| 40 |
+
"wu_step_24",
|
| 41 |
+
"wu_step_25",
|
| 42 |
+
"wu_step_26",
|
| 43 |
+
"wu_step_27",
|
| 44 |
+
"wu_step_28",
|
| 45 |
+
"wu_step_29",
|
| 46 |
+
"wu_step_30",
|
| 47 |
+
"wu_step_31"
|
| 48 |
+
]
|
| 49 |
+
},
|
| 50 |
+
"training": {
|
| 51 |
+
"lr": 5e-05,
|
| 52 |
+
"l1_coefficient": 0.3,
|
| 53 |
+
"frequency_scale": 0.01,
|
| 54 |
+
"tanh_stretch_coefficient": 1.0,
|
| 55 |
+
"jumprelu_lr_factor": 0.1,
|
| 56 |
+
"n_epochs": 300,
|
| 57 |
+
"batch_size": 1024,
|
| 58 |
+
"expansion_factor": 10.6667,
|
| 59 |
+
"input_preprocess": "center_scale",
|
| 60 |
+
"l1_warmup_fraction": 0.1,
|
| 61 |
+
"auxk_coefficient": 0.0,
|
| 62 |
+
"auxk_k": 512,
|
| 63 |
+
"dead_window_steps": 100
|
| 64 |
+
},
|
| 65 |
+
"quality": {
|
| 66 |
+
"explained_variance": 0.7763740924044573,
|
| 67 |
+
"reconstruction_mse": 0.22355465799570085,
|
| 68 |
+
"mean_l0": 203.14466369628906,
|
| 69 |
+
"d_sae": 8192,
|
| 70 |
+
"n_snapshots": 32,
|
| 71 |
+
"n_rows": 50304
|
| 72 |
+
},
|
| 73 |
+
"steps": [
|
| 74 |
+
0,
|
| 75 |
+
1,
|
| 76 |
+
2,
|
| 77 |
+
4,
|
| 78 |
+
8,
|
| 79 |
+
16,
|
| 80 |
+
32,
|
| 81 |
+
64,
|
| 82 |
+
128,
|
| 83 |
+
256,
|
| 84 |
+
512,
|
| 85 |
+
1000,
|
| 86 |
+
2000,
|
| 87 |
+
3000,
|
| 88 |
+
4000,
|
| 89 |
+
5000,
|
| 90 |
+
6000,
|
| 91 |
+
7000,
|
| 92 |
+
8000,
|
| 93 |
+
9000,
|
| 94 |
+
14000,
|
| 95 |
+
21000,
|
| 96 |
+
27000,
|
| 97 |
+
34000,
|
| 98 |
+
47000,
|
| 99 |
+
61000,
|
| 100 |
+
75000,
|
| 101 |
+
89000,
|
| 102 |
+
102000,
|
| 103 |
+
116000,
|
| 104 |
+
130000,
|
| 105 |
+
143000
|
| 106 |
+
],
|
| 107 |
+
"model_name": "EleutherAI/pythia-160m",
|
| 108 |
+
"seed": 0,
|
| 109 |
+
"kind": "cross-snapshot",
|
| 110 |
+
"preprocess_mode": "center_scale"
|
| 111 |
+
}
|