Skip to main content

SAE Probes Benchmark

PyPI License: MIT build

This repository contains the code for the paper Are Sparse Autoencoders Useful? A Case Study in Sparse Probing, but has been reformatted into a Python package that will work with any SAE that can be loaded in SAELens. This makes it easy to use the sparse probing tasks from the paper as a standalone SAE benchmark.

Installation

pip install sae-probes

Running evaluations

You can run benchmarks directly; any missing model activations are generated on demand. If you don't pass a model_cache_path, a temporary directory is used and cleaned up when the function completes. To persist activations across runs (recommended for repeated experiments), provide a model_cache_path.

Training Probes

Probes can be trained directly on the model activations (baselines) or on SAE activations. In both cases, the following test data-balance settings are available: "normal", "scarcity", and "imbalance". For more details about these settings, see the original paper. For the most standard sparse-probing benchmark, use the normal setting.

SAE Probes

The most standard use of this library is as a sparse probing benchmark for SAEs using the normal setting. This is demonstrated below:

from sae_probes import run_sae_evals
from sae_lens import SAE

# run the benchmark on a Gemma Scope SAE
release = "gemma-scope-2b-pt-res-canonical"
sae_id = "layer_12/width_16k/canonical"
sae = SAE.from_pretrained(release, sae_id)

run_sae_evals(
  sae=sae,
  model_name="gemma-2-2b",
  hook_name="blocks.12.hook_resid_post",
  reg_type="l1",
  setting="normal",
  results_path="/results/output/path",
  # model_cache_path is optional; if omitted, a temp dir is used and cleared after
  model_cache_path="/path/to/saved/activations",
  ks=[1, 16],
)

The sparse probing results for each dataset will be saved to results_path as a JSON file per dataset.

Baseline Probes

You can now run baseline probes using a unified API that matches the SAE evaluation interface:

from sae_probes import run_baseline_evals

# Run baseline probes with consistent API
run_baseline_evals(
  model_name="gemma-2-2b",
  hook_name="blocks.12.hook_resid_post",
  setting="normal",  # or "scarcity", "imbalance"
  results_path="/results/output/path",
  # model_cache_path is optional; if omitted, a temp dir is used and cleared after
  model_cache_path="/path/to/saved/activations",
)

Output Format

Both SAE and baseline probes now save results as JSON files with consistent structure:

  • SAE results: sae_probes_{model_name}/{setting}_setting/{dataset}_{hook_name}_{reg_type}.json
  • Baseline results: baseline_results_{model_name}/{setting}_setting/{dataset}_{hook_name}_{method}.json

Each JSON file contains a list with metrics and metadata for easy comparison between SAE and baseline approaches.

Optional: Pre-generating model activations

Pre-generating can speed up repeated runs and lets you inspect the saved tensors. It's optional because benchmarks will auto-generate missing activations on their first run if missing.

from sae_probes import generate_dataset_activations

generate_dataset_activations(
  model_name="gemma-2-2b", # the TransformerLens name of the model
  hook_names=["blocks.12.hook_resid_post"], # Any TLens hook names
  batch_size=64,
  device="cuda",
  model_cache_path="/path/to/save/activations",
)

If you skip pre-generation, the benchmarks will create any missing activations automatically. Passing a model_cache_path persists them; if omitted, activations will be written to a temporary directory that is deleted after the run.

Citation

If you use this code in your research, please cite:

@inproceedings{kantamnenisparse,
  title={Are Sparse Autoencoders Useful? A Case Study in Sparse Probing},
  author={Kantamneni, Subhash and Engels, Joshua and Rajamanoharan, Senthooran and Tegmark, Max and Nanda, Neel},
  booktitle={Forty-second International Conference on Machine Learning}
}

Metadata

Release files for sae-probes 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sae-probes 0.4.0
File Size Uploaded
sae_probes-0.4.0.tar.gz 45.0 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for sae-probes 0.4.0
File Interpreter ABI Platform
sae_probes-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 90.1 MB

Release files / sae_probes-0.4.0.tar.gz

Download URL sae_probes-0.4.0.tar.gz
Size 45.0 MB
Tags Source
SHA-256 checksum
How to use checksums
41f95beebc31c3b2c87e1438100b9f23b39f41d15dc7639d38c75472782cb695
BLAKE2b-256 checksum
How to use checksums
f36041b0549d96ed4b4a198db54e642269bef06db190aad36f77b9fda1f4403c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 29, 2026.

Transparency log

Release files / sae_probes-0.4.0-py3-none-any.whl

Download URL sae_probes-0.4.0-py3-none-any.whl
Size 45.1 MB
Tags Python 3
SHA-256 checksum
How to use checksums
025b6ac618417a1ae645c93f3f905a346642f2f12622936b03e9fb18a6a375c4
BLAKE2b-256 checksum
How to use checksums
41d68ffe4e0217f32e901fb30d7f85b8b476b45e6196e699505f216fab6ca677
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 29, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.4.0 This release

2 release files

0.3.0

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page