Pythia-160M MLP-5 SAEs β€” three initialization seeds

Three sparse autoencoders trained on the output of layers.5.mlp in EleutherAI/pythia-160m. All three are identical in every respect except the random seed used to initialize their weights: same data, same order, same hyperparameters, trained in a single process sharing one dataloader.

Produced as a replication of Paulo & Belrose (2025), Sparse Autoencoders Trained on the Same Data Learn Different Features.

Contents

seed0/sae.safetensors    seed0/cfg.json
seed1/sae.safetensors    seed1/cfg.json
seed2/sae.safetensors    seed2/cfg.json

Configuration

Base model EleutherAI/pythia-160m
Hookpoint layers.5.mlp (MLP output)
Input dimension 768
Latents 32,768
Activation TopK, k=32
Decoder unit-norm constrained
Optimizer Adam
Loss FVU (fraction of variance unexplained)
Context length 2048
Batch size 32 sequences
Training tokens ~8B (3,906,250 sequences, 122,071 steps)
Seeds 0, 1, 2
Library eai-sparsify 1.3.3

Training data

monology/pile-uncopyrighted, shard train/00.jsonl.zst. This is a copy of the Pile with five subsets removed (Books3, BookCorpus2, OpenSubtitles, YTSubtitles, OWT2); the original EleutherAI/pile is no longer downloadable. The token ordering is not the ordering Pythia-160M saw during its own pretraining.

Usage

pip install eai-sparsify
from sparsify import Sae

sae = Sae.load_from_hub("dwightware4/sae-pythia-160m-32k-3seeds", hookpoint="seed0")

Or from a local copy:

sae = Sae.load_from_disk("path/to/seed0")

encode() returns a namedtuple of sparse components:

out = sae.encode(activations)   # activations: [n_tokens, 768]
out.top_acts                    # [n_tokens, 32]      activation values
out.top_indices                 # [n_tokens, 32]      latent indices
out.pre_acts                    # [n_tokens, 32768]   pre-activations

To produce a dense [n_tokens, n_latents] matrix:

import torch
z = torch.zeros(activations.shape[0], 32768, device=activations.device)
z.scatter_(1, out.top_indices, out.top_acts)

Weight names are W_dec, b_dec, encoder.weight, encoder.bias.

Measured properties

Pairwise Hungarian alignment between the three seeds, following Section 3 of the paper: a latent is shared if it maps to the same counterpart under both the encoder and decoder matchings, with cosine similarity β‰₯ 0.7 in both.

Pair Shared latents Encoder/decoder matchings agree
seed0 – seed1 43.6% 78.6%
seed0 – seed2 43.7% 78.7%
seed1 – seed2 43.9% 78.2%

Reference value from the paper: 42%.

Mean matched cosine similarity is approximately 0.61 (encoder) and 0.69 (decoder), consistent with Figure A3 of the paper.

Roughly 56% of the latents in any one of these SAEs has no close counterpart in the others, despite identical training data.

Citation

@article{paulo2025sparse,
  title={Sparse Autoencoders Trained on the Same Data Learn Different Features},
  author={Paulo, Gon{\c{c}}alo and Belrose, Nora},
  journal={arXiv preprint arXiv:2501.16615},
  year={2025}
}
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Model tree for dwightware4/sae-pythia-160m-32k-3seeds

Finetuned
(346)
this model

Paper for dwightware4/sae-pythia-160m-32k-3seeds