Learning Multi-Level Features with Matryoshka Sparse Autoencoders
Paper • 2503.17547 • Published • 1
How to use decoderesearch/olmo-3-saes 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
)This repository contains the following SAEs:
Load these SAEs using SAELens as below:
from sae_lens import SAE
sae = SAE.from_pretrained("decoderesearch/olmo-3-saes", "<sae_id>")
These SAEs are all Matryoshka BatchTopK SAEs trained on 1B tokens of the Pile Uncopyrighted using SAELens. The SAEs each have width 65k latents, and 2 inner Matryoshka prefixes of 2k latents and 16k latents.
For complete details of how these SAEs were trained, refer to the runner_cfg.json in each SAE directory.
This config includes all hyperparameters passed to the SAELens trainer when training the SAEs.
@misc{decode2026olmo3saes,
author = {Chanin, David and Lin, Johnny},
title = {{Olmo-3} Sparse Autoencoders},
year = {2026},
organization = {Decode Research},
publisher = {Hugging Face},
howpublished = {\url{https://huggingface.co/decoderesearch/olmo-3-saes}}
}
These SAEs were trained thanks to compute provided by Modal.