sae-lens 6.6.2__py3-none-any.whl → 6.6.4__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
sae_lens/__init__.py CHANGED
@@ -1,5 +1,5 @@
1
1
  # ruff: noqa: E402
2
- __version__ = "6.6.2"
2
+ __version__ = "6.6.4"
3
3
 
4
4
  import logging
5
5
 
@@ -8,27 +8,6 @@ from typing import Any, TypeVar
8
8
 
9
9
  import requests
10
10
  from dotenv import load_dotenv
11
- from neuron_explainer.activations.activation_records import calculate_max_activation
12
- from neuron_explainer.activations.activations import ActivationRecord
13
- from neuron_explainer.explanations.calibrated_simulator import (
14
- UncalibratedNeuronSimulator,
15
- )
16
- from neuron_explainer.explanations.explainer import (
17
- HARMONY_V4_MODELS,
18
- ContextSize,
19
- TokenActivationPairExplainer,
20
- )
21
- from neuron_explainer.explanations.explanations import ScoredSimulation
22
- from neuron_explainer.explanations.few_shot_examples import FewShotExampleSet
23
- from neuron_explainer.explanations.prompt_builder import PromptFormat
24
- from neuron_explainer.explanations.scoring import (
25
- _simulate_and_score_sequence,
26
- aggregate_scored_sequence_simulations,
27
- )
28
- from neuron_explainer.explanations.simulator import (
29
- LogprobFreeExplanationTokenSimulator,
30
- NeuronSimulator,
31
- )
32
11
  from tenacity import retry, stop_after_attempt, wait_random_exponential
33
12
 
34
13
  from sae_lens import SAE, logger
@@ -158,10 +137,22 @@ def sleep_identity(x: T) -> T:
158
137
 
159
138
  @retry(wait=wait_random_exponential(min=1, max=500), stop=stop_after_attempt(10))
160
139
  async def simulate_and_score( # type: ignore
161
- simulator: NeuronSimulator,
162
- activation_records: list[ActivationRecord], # type: ignore
163
- ) -> ScoredSimulation: # type: ignore
140
+ simulator: Any,
141
+ activation_records: list[Any],
142
+ ) -> Any:
164
143
  """Score an explanation of a neuron by how well it predicts activations on the given text sequences."""
144
+ try:
145
+ from neuron_explainer.explanations.scoring import (
146
+ _simulate_and_score_sequence,
147
+ aggregate_scored_sequence_simulations,
148
+ )
149
+ except ImportError as e:
150
+ raise ImportError(
151
+ "The neuron_explainer package is required to use this function. "
152
+ "Please install SAELens with the neuronpedia optional dependencies: "
153
+ "pip install sae-lens[neuronpedia]"
154
+ ) from e
155
+
165
156
  scored_sequence_simulations = await asyncio.gather(
166
157
  *[
167
158
  sleep_identity(
@@ -253,6 +244,31 @@ async def autointerp_neuronpedia_features( # noqa: C901
253
244
  Returns:
254
245
  None
255
246
  """
247
+ try:
248
+ from neuron_explainer.activations.activation_records import (
249
+ calculate_max_activation,
250
+ )
251
+ from neuron_explainer.activations.activations import ActivationRecord
252
+ from neuron_explainer.explanations.calibrated_simulator import (
253
+ UncalibratedNeuronSimulator,
254
+ )
255
+ from neuron_explainer.explanations.explainer import (
256
+ HARMONY_V4_MODELS,
257
+ ContextSize,
258
+ TokenActivationPairExplainer,
259
+ )
260
+ from neuron_explainer.explanations.few_shot_examples import FewShotExampleSet
261
+ from neuron_explainer.explanations.prompt_builder import PromptFormat
262
+ from neuron_explainer.explanations.simulator import (
263
+ LogprobFreeExplanationTokenSimulator,
264
+ )
265
+ except ImportError as e:
266
+ raise ImportError(
267
+ "The automated-interpretability package is required to use autointerp functionality. "
268
+ "Please install SAELens with the neuronpedia optional dependencies: "
269
+ "pip install sae-lens[neuronpedia]"
270
+ ) from e
271
+
256
272
  logger.info("\n\n")
257
273
 
258
274
  if os.getenv("OPENAI_API_KEY") is None:
@@ -1254,11 +1254,22 @@ def get_mwhanna_transcoder_config_from_hf(
1254
1254
  wandb_config_path = hf_hub_download(
1255
1255
  repo_id, "wandb-config.yaml", force_download=force_download
1256
1256
  )
1257
- base_config_path = hf_hub_download(
1258
- repo_id, "config.yaml", force_download=force_download
1259
- )
1260
- with open(base_config_path) as f:
1261
- base_cfg_info: dict[str, Any] = yaml.safe_load(f)
1257
+ try:
1258
+ base_config_path = hf_hub_download(
1259
+ repo_id, "config.yaml", force_download=force_download
1260
+ )
1261
+ with open(base_config_path) as f:
1262
+ base_cfg_info: dict[str, Any] = yaml.safe_load(f)
1263
+ except EntryNotFoundError:
1264
+ # the 14b transcoders don't have a config file for some reason, so just pull the model name from the repo_id
1265
+ qwen_3_size_match = re.search(r"qwen3-(\d+(?:\.\d+)?)b", repo_id)
1266
+ if not qwen_3_size_match:
1267
+ raise ValueError(f"Could not extract Qwen3 size from repo_id: {repo_id}")
1268
+ qwen_3_size = qwen_3_size_match.group(1)
1269
+ base_cfg_info = {
1270
+ "model_name": f"Qwen/Qwen3-{qwen_3_size}B",
1271
+ }
1272
+
1262
1273
  with open(wandb_config_path) as f:
1263
1274
  wandb_cfg_info: dict[str, Any] = yaml.safe_load(f)
1264
1275
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: sae-lens
3
- Version: 6.6.2
3
+ Version: 6.6.4
4
4
  Summary: Training and Analyzing Sparse Autoencoders (SAEs)
5
5
  License: MIT
6
6
  Keywords: deep-learning,sparse-autoencoders,mechanistic-interpretability,PyTorch
@@ -14,7 +14,8 @@ Classifier: Programming Language :: Python :: 3.12
14
14
  Classifier: Programming Language :: Python :: 3.13
15
15
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
16
16
  Provides-Extra: mamba
17
- Requires-Dist: automated-interpretability (>=0.0.5,<1.0.0)
17
+ Provides-Extra: neuronpedia
18
+ Requires-Dist: automated-interpretability (>=0.0.5,<1.0.0) ; extra == "neuronpedia"
18
19
  Requires-Dist: babe (>=0.0.7,<0.0.8)
19
20
  Requires-Dist: datasets (>=3.1.0)
20
21
  Requires-Dist: mamba-lens (>=0.0.4,<0.0.5) ; extra == "mamba"
@@ -1,7 +1,7 @@
1
- sae_lens/__init__.py,sha256=NChdhNs5Lv_JQ8vOEIDZMmDSmQepJhRE11G2EXRY7iQ,3588
1
+ sae_lens/__init__.py,sha256=yJm-dL16dtJ9Eo9p4cOcV3Y4Zrhim6FMuzysx0MnYas,3588
2
2
  sae_lens/analysis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
3
  sae_lens/analysis/hooked_sae_transformer.py,sha256=vRu6JseH1lZaEeILD5bEkQEQ1wYHHDcxD-f2olKmE9Y,14275
4
- sae_lens/analysis/neuronpedia_integration.py,sha256=MrENqc81Mc2SMbxGjbwHzpkGUCAFKSf0i4EdaUF2Oj4,18707
4
+ sae_lens/analysis/neuronpedia_integration.py,sha256=Fj4gVyaXMGBUxoK0vPeTwGVFr4n40fmfPrRENo4WzPs,19324
5
5
  sae_lens/cache_activations_runner.py,sha256=cNeAtp2JQ_vKbeddZVM-tcPLYyyfTWL8NDna5KQpkLI,12583
6
6
  sae_lens/config.py,sha256=IrjbsKBbaZoFXYrsPJ5xBwIqi9uZJIIFXjV_uoErJaE,28176
7
7
  sae_lens/constants.py,sha256=CSjmiZ-bhjQeVLyRvWxAjBokCgkfM8mnvd7-vxLIWTY,639
@@ -9,7 +9,7 @@ sae_lens/evals.py,sha256=2YHR_IBhXdjktpmoVtvvNrqUZIx5ok7yERuiFY40HHY,39186
9
9
  sae_lens/llm_sae_training_runner.py,sha256=exxNX_OEhdiUrlgmBP9bjX9DOf0HUcNQGO4unKeDjKM,13713
10
10
  sae_lens/load_model.py,sha256=C8AMykctj6H7tz_xRwB06-EXj6TfW64PtSJZR5Jxn1Y,8649
11
11
  sae_lens/loading/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
- sae_lens/loading/pretrained_sae_loaders.py,sha256=QsvovdlKF7zu6iLM0CK5UP6qBqS0N9wVml_u8ZFdcak,43875
12
+ sae_lens/loading/pretrained_sae_loaders.py,sha256=iIcHM24qfb45JOGEmUn7jr5E9vl8L2FYSlArsobCwlI,44388
13
13
  sae_lens/loading/pretrained_saes_directory.py,sha256=4Vn-Jex6SveD7EbxcSOBv8cx1gkPfUMLU1QOP-ww1ZE,3752
14
14
  sae_lens/pretokenize_runner.py,sha256=w0f6SfZLAxbp5eAAKnet8RqUB_DKofZ9RGsoJwFnYbA,7058
15
15
  sae_lens/pretrained_saes.yaml,sha256=O_FwoOe7fU9_WLEOnMk1IWXRxD4nwzf1tCfbof1r0D0,598578
@@ -33,7 +33,7 @@ sae_lens/training/types.py,sha256=qSjmGzXf3MLalygG0psnVjmhX_mpLmL47MQtZfe7qxg,81
33
33
  sae_lens/training/upload_saes_to_huggingface.py,sha256=r_WzI1zLtGZ5TzAxuG3xa_8T09j3zXJrWd_vzPsPGkQ,4469
34
34
  sae_lens/tutorial/tsea.py,sha256=fd1am_XXsf2KMbByDapJo-2qlxduKaa62Z2qcQZ3QKU,18145
35
35
  sae_lens/util.py,sha256=mCwLAilGMVo8Scm7CIsCafU7GsfmBvCcjwmloI4Ly7Y,1718
36
- sae_lens-6.6.2.dist-info/LICENSE,sha256=DW6e-hDosiu4CfW0-imI57sV1I5f9UEslpviNQcOAKs,1069
37
- sae_lens-6.6.2.dist-info/METADATA,sha256=0fAahxc3s1QUC9_yCAsL5N_0q-2qU6s67Jj75BOKehg,5303
38
- sae_lens-6.6.2.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
39
- sae_lens-6.6.2.dist-info/RECORD,,
36
+ sae_lens-6.6.4.dist-info/LICENSE,sha256=DW6e-hDosiu4CfW0-imI57sV1I5f9UEslpviNQcOAKs,1069
37
+ sae_lens-6.6.4.dist-info/METADATA,sha256=2fVRS6CU6AgaiZZBDgwLcFPClSs_KAMUXWP_uJB27TE,5356
38
+ sae_lens-6.6.4.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
39
+ sae_lens-6.6.4.dist-info/RECORD,,