sae-lens 6.6.1__tar.gz → 6.6.3__tar.gz

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.
Files changed (39) hide show
  1. {sae_lens-6.6.1 → sae_lens-6.6.3}/PKG-INFO +1 -1
  2. {sae_lens-6.6.1 → sae_lens-6.6.3}/pyproject.toml +1 -1
  3. {sae_lens-6.6.1 → sae_lens-6.6.3}/sae_lens/__init__.py +1 -1
  4. {sae_lens-6.6.1 → sae_lens-6.6.3}/sae_lens/loading/pretrained_sae_loaders.py +25 -8
  5. {sae_lens-6.6.1 → sae_lens-6.6.3}/LICENSE +0 -0
  6. {sae_lens-6.6.1 → sae_lens-6.6.3}/README.md +0 -0
  7. {sae_lens-6.6.1 → sae_lens-6.6.3}/sae_lens/analysis/__init__.py +0 -0
  8. {sae_lens-6.6.1 → sae_lens-6.6.3}/sae_lens/analysis/hooked_sae_transformer.py +0 -0
  9. {sae_lens-6.6.1 → sae_lens-6.6.3}/sae_lens/analysis/neuronpedia_integration.py +0 -0
  10. {sae_lens-6.6.1 → sae_lens-6.6.3}/sae_lens/cache_activations_runner.py +0 -0
  11. {sae_lens-6.6.1 → sae_lens-6.6.3}/sae_lens/config.py +0 -0
  12. {sae_lens-6.6.1 → sae_lens-6.6.3}/sae_lens/constants.py +0 -0
  13. {sae_lens-6.6.1 → sae_lens-6.6.3}/sae_lens/evals.py +0 -0
  14. {sae_lens-6.6.1 → sae_lens-6.6.3}/sae_lens/llm_sae_training_runner.py +0 -0
  15. {sae_lens-6.6.1 → sae_lens-6.6.3}/sae_lens/load_model.py +0 -0
  16. {sae_lens-6.6.1 → sae_lens-6.6.3}/sae_lens/loading/__init__.py +0 -0
  17. {sae_lens-6.6.1 → sae_lens-6.6.3}/sae_lens/loading/pretrained_saes_directory.py +0 -0
  18. {sae_lens-6.6.1 → sae_lens-6.6.3}/sae_lens/pretokenize_runner.py +0 -0
  19. {sae_lens-6.6.1 → sae_lens-6.6.3}/sae_lens/pretrained_saes.yaml +0 -0
  20. {sae_lens-6.6.1 → sae_lens-6.6.3}/sae_lens/registry.py +0 -0
  21. {sae_lens-6.6.1 → sae_lens-6.6.3}/sae_lens/saes/__init__.py +0 -0
  22. {sae_lens-6.6.1 → sae_lens-6.6.3}/sae_lens/saes/batchtopk_sae.py +0 -0
  23. {sae_lens-6.6.1 → sae_lens-6.6.3}/sae_lens/saes/gated_sae.py +0 -0
  24. {sae_lens-6.6.1 → sae_lens-6.6.3}/sae_lens/saes/jumprelu_sae.py +0 -0
  25. {sae_lens-6.6.1 → sae_lens-6.6.3}/sae_lens/saes/sae.py +0 -0
  26. {sae_lens-6.6.1 → sae_lens-6.6.3}/sae_lens/saes/standard_sae.py +0 -0
  27. {sae_lens-6.6.1 → sae_lens-6.6.3}/sae_lens/saes/topk_sae.py +0 -0
  28. {sae_lens-6.6.1 → sae_lens-6.6.3}/sae_lens/saes/transcoder.py +0 -0
  29. {sae_lens-6.6.1 → sae_lens-6.6.3}/sae_lens/tokenization_and_batching.py +0 -0
  30. {sae_lens-6.6.1 → sae_lens-6.6.3}/sae_lens/training/__init__.py +0 -0
  31. {sae_lens-6.6.1 → sae_lens-6.6.3}/sae_lens/training/activation_scaler.py +0 -0
  32. {sae_lens-6.6.1 → sae_lens-6.6.3}/sae_lens/training/activations_store.py +0 -0
  33. {sae_lens-6.6.1 → sae_lens-6.6.3}/sae_lens/training/mixing_buffer.py +0 -0
  34. {sae_lens-6.6.1 → sae_lens-6.6.3}/sae_lens/training/optim.py +0 -0
  35. {sae_lens-6.6.1 → sae_lens-6.6.3}/sae_lens/training/sae_trainer.py +0 -0
  36. {sae_lens-6.6.1 → sae_lens-6.6.3}/sae_lens/training/types.py +0 -0
  37. {sae_lens-6.6.1 → sae_lens-6.6.3}/sae_lens/training/upload_saes_to_huggingface.py +0 -0
  38. {sae_lens-6.6.1 → sae_lens-6.6.3}/sae_lens/tutorial/tsea.py +0 -0
  39. {sae_lens-6.6.1 → sae_lens-6.6.3}/sae_lens/util.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: sae-lens
3
- Version: 6.6.1
3
+ Version: 6.6.3
4
4
  Summary: Training and Analyzing Sparse Autoencoders (SAEs)
5
5
  License: MIT
6
6
  Keywords: deep-learning,sparse-autoencoders,mechanistic-interpretability,PyTorch
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "sae-lens"
3
- version = "6.6.1"
3
+ version = "6.6.3"
4
4
  description = "Training and Analyzing Sparse Autoencoders (SAEs)"
5
5
  authors = ["Joseph Bloom"]
6
6
  readme = "README.md"
@@ -1,5 +1,5 @@
1
1
  # ruff: noqa: E402
2
- __version__ = "6.6.1"
2
+ __version__ = "6.6.3"
3
3
 
4
4
  import logging
5
5
 
@@ -1245,14 +1245,31 @@ def get_mwhanna_transcoder_config_from_hf(
1245
1245
  # Extract layer from folder name
1246
1246
  layer = int(folder_name.replace(".safetensors", "").split("_")[-1])
1247
1247
 
1248
- wandb_config_path = hf_hub_download(
1249
- repo_id, "wanb-config.yaml", force_download=force_download
1250
- )
1251
- base_config_path = hf_hub_download(
1252
- repo_id, "config.yaml", force_download=force_download
1253
- )
1254
- with open(base_config_path) as f:
1255
- base_cfg_info: dict[str, Any] = yaml.safe_load(f)
1248
+ try:
1249
+ # mwhanna transcoders sometimes have a typo in the config file name, so check for both
1250
+ wandb_config_path = hf_hub_download(
1251
+ repo_id, "wanb-config.yaml", force_download=force_download
1252
+ )
1253
+ except EntryNotFoundError:
1254
+ wandb_config_path = hf_hub_download(
1255
+ repo_id, "wandb-config.yaml", force_download=force_download
1256
+ )
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
+
1256
1273
  with open(wandb_config_path) as f:
1257
1274
  wandb_cfg_info: dict[str, Any] = yaml.safe_load(f)
1258
1275
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes