Instructions to use chanind-goodfire/synthsaebench-full-width-sweep with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- SAELens
How to use chanind-goodfire/synthsaebench-full-width-sweep with SAELens:
# pip install sae-lens from sae_lens import SAE sae, cfg_dict, sparsity = SAE.from_pretrained( release = "RELEASE_ID", # e.g., "gpt2-small-res-jb". See other options in https://github.com/jbloomAus/SAELens/blob/main/sae_lens/pretrained_saes.yaml sae_id = "SAE_ID", # e.g., "blocks.8.hook_resid_pre". Won't always be a hook point ) - Notebooks
- Google Colab
- Kaggle
SynthSAEBench full-width SAE sweep
209 full-budget sparse autoencoders trained on the released 16k SynthSAEBench world. Each SAE has 16,384 latents, 768 input dimensions, and was trained for 200M samples. The collection includes 162 recipe-screening runs, 40 L0-grid runs, and seven MinFire-period follow-ups. Smoke runs are excluded.
Inference uses the public SAELens library; no custom remote code is required. Each model includes its training settings, evaluation metrics, and recorded training history.
Load one model
Install the exact SAELens source revision used in the experiment:
pip install 'sae-lens @ git+https://github.com/decoderesearch/SAELens.git@b5711e34d072846dc112881f4c8d209407a32b56'
from pathlib import Path
from huggingface_hub import snapshot_download
from sae_lens import SAE
repo = 'chanind-goodfire/synthsaebench-full-width-sweep'
run_id = 'r3/jr_ste_c01_resample_decay_k35_s0'
subdir = f'runs/{run_id}/final'
snapshot = snapshot_download(repo, allow_patterns=[f'{subdir}/*'])
sae = SAE.load_from_disk(Path(snapshot) / subdir, device='cpu').eval()
# x is a batch of unnormalized 768-dimensional synthetic-world observations.
# codes = sae.encode(x)
# reconstruction = sae.decode(codes)
This downloads about 101 MB instead of the full 21 GB collection. Pin revision
to a Hub commit for a stable snapshot. The three training architectures all export
ordinary JumpReLU inference SAEs with native thresholds. Input scaling is already
folded into the weights. W_dec has shape [16384, 768]; decoder rows are latents.
These models are for the released synthetic world, not language-model activations.
Results and selection
catalog.json lists every run's exact recipe, target/measured L0, metrics, file
sizes, and SHA-256 checksums for the published files. headline: true selects the
42 baseline/improved models forming the seven-point L0 curves.
results.csv is the flat, full-precision metric table. All settings use seed 0;
small numerical differences are not resolved by repeated seeds.
| Architecture | L0 35 baseline MCC | Improved MCC | Improved recipe |
|---|---|---|---|
| BatchTopK | 0.535 | 0.804 | MinFire gate + final 20% LR decay |
| Matryoshka BatchTopK | 0.466 | 0.841 | Dead-latent resampling, 100-step window + decay |
| JumpReLU | 0.470 | 0.860 | Input STE, L0 coefficient 0.1, resampling + decay |
BatchTopK's headline MinFire periods are 5, 3, 2 at target L0 15, 20, 25 and 1
at targets 30–45. Those selected low-L0 checkpoints are in gridp/; the default
period runs and other tried periods are also released. Follow the catalog's
headline flag instead of inferring the selection from recipe names alone.
Protocol
- World:
decoderesearch/synth-sae-bench-16k-v1revisionb2efd8b919ae46d6d487c73d46db5ee52813621d, withscale_children_by_parent=False. - Training: batch 1,024; Adam (0.9, 0.999); LR 3e-4; gradient norm clip 1; bf16 autocast except explicitly named fp32 ablations; 200M samples per run.
- SAELens 6.51.0 revision
b5711e34d072846dc112881f4c8d209407a32b56, with the upstream coefficient autotuner and the gate/resampling settings recorded in each run's configuration. - Evaluation: unmodified SAELens synthetic scorer, 1M fresh samples, shared seed
- MCC is one-to-one Hungarian matching over all 16,384 decoder rows; F1 is the official macro average. Dead latents are retained. Scores are not directly comparable with the upstream 4,096-latent SAE board.
Layout and provenance
Each runs/<stage>/<run>/ contains:
final/cfg.jsonandfinal/sae_weights.safetensors: inference export.run.jsonandscore.json: full settings and evaluation metrics.history.jsonandprogress.json: recorded training history and final progress.
Stages r1/r2/r3 contain 162 screening runs, grid contains 40 additional L0-grid
runs, and gridp contains seven MinFire-period follow-ups. There are no optimizer
checkpoints or smoke runs. All 209 models completed 200M training samples.
provenance.json identifies the public benchmark, SAELens, and coefficient
autotuner repositories and their exact revisions.