ComfyUI Node
Feature Atlas
Analyze a trained SAE to build a persistent feature atlas: decoder column statistics, firing patterns, co-occurrence clusters, redundancy analysis, and SAE health diagnostics. Run once per SAE. The atlas JSON is used by Feature Dashboard and enriches Feature Map labels. Also answers 'is this SAE actually working correctly?' with reconstruction quality metrics and dead feature analysis.
Feature Atlas
- atlas_path
- summary
- DIAGNOSTICS
◄sae_path►
◄save_path/tmp/ComfyUI/custom_nodes/ComfyUI-ConceptSteer/sae/feature_atlas.json►
◄layer22►
◄sae_expansion8►
◄n_probe_prompts200►
◄n_redundancy_samples500►
◄dict_path►
◄encoder_path►
◄cached_activations_path►
◄max_cached_vectors50000►
◄protect_existingtrue►
CategoryConcept Steer/Research
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| sae_path | STRING | Path to the trained SAE weights (.pt) | |
| save_path | STRING | /tmp/ComfyUI/custom_nodes/ComfyUI-ConceptSteer/sae/feature_atlas.json | Where to save the feature atlas JSON. |
| layer | INT | 221–36 | Transformer layer (must match SAE training) |
| sae_expansion | INT | 82–16 | SAE expansion factor (must match SAE training) |
| n_probe_prompts | INT | 20050–2000 | Number of prompts to probe features with. More = better coverage but slower. 200 is a good balance. |
| n_redundancy_samples | INT | 500100–5000 | How many random feature pairs to check for redundancy. Higher = more thorough but slower. |
| dict_path | STRING | Path to existing feature dictionary JSON. If provided, labels are merged into the atlas. | |
| encoder_path | STRING | Path to Qwen encoder safetensors (or set env var) | |
| cached_activations_path | STRING | Path to cached activations .pt file from training (e.g. sae/activations_layer22_500k.pt). When provided, firing statistics are computed from these real activations instead of only probe prompts, giving much more accurate dead/alive feature counts. | |
| max_cached_vectors | INT | 500001000–500000 | Max vectors to sample from cached activations for firing analysis. Higher = more accurate but slower. 50K is a good balance for 20K features. |
| protect_existing | BOOLEAN | true | If the save path already exists, auto-rename to _v2, _v3, … instead of overwriting. Disable only when intentionally replacing. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| atlas_path | STRING | — |
| summary | STRING | — |
| DIAGNOSTICS | IMAGE | — |