Conner Kupferberg · September 2026
Classification: Deep Learning Architecture · Mechanistic Interpretability · Hardware Systems Optimization
Canonical Reference Codebase: connerkup/phase-sae
Upstream Distribution Fork: connerkup/SAELens (feat/phase-multiplexed-sae)
Canonical Paper & Interactive Press Suite: thalamocorticalsystems.com/papers/phase-sae
> 🏛️ Official Publication Notice: The canonical research paper, Triton GPU rooflines, interactive figures, and downloadable benchmark datasets have been migrated to Conner Kupferberg’s Frontier AI lab: [Thalamocortical Systems](https://www.thalamocorticalsystems.com/papers/phase-sae).
Executive Summary
Sparse Autoencoders (SAEs) resolve polysemanticity in Large Language Models (LLMs) by projecting dense residual activations into high-dimensional sparse latent spaces (). However, all prevailing SAE architectures (Top-, Gated, JumpReLU) treat dictionary learning as an instantaneous spatial compression problem: evaluating the entire dictionary in a single forward pass. During autoregressive generation (), this architecture hits an intractable memory-bandwidth wall: dragging gigabytes of dictionary weights across the memory bus at an arithmetic intensity of only 0.5 FLOP/byte, leaving GPU Tensor Cores >99% idle. PhaseSAE introduces Time-Division Multiplexing (TDM) to dictionary learning. By partitioning the dictionary tensor into phase tiles and evaluating cascaded micro-ticks against progressive residual errors, PhaseSAE achieves three foundational results:
| Evaluation Dimension | Monolithic Top-K Baseline | PhaseSAE (P=4) | Impact / Advantage |
|---|---|---|---|
| Peak Parameter Memory Slice | 1.0× (Monolithic) | 0.25× (Strict 1/P) | 4.0× memory bandwidth reduction; fits on-chip SRAM |
| Downstream CE Loss Recovery | 24.42% | 40.51% | +16.09 pp (+65.9% relative recovery gain) |
| Explained Variance (R²) | 0.1758 | 0.2913 | +0.1155 (+65.7% relative variance explained) |
| MSE Reconstruction Error | 0.2023 | 0.1740 | -14.0% reconstruction error reduction |
| In-Register Triton Kernel Throughput | 40.28 ms (B=16) | 41.73 ms (Fused TDM) | Matches monolithic speed while saving 75% peak memory |
| Inference Flexibility | Fixed Static Cost | Anytime Early-Exit | Dynamic 7–23% latency reduction on low-entropy tokens |

1. The Memory-Bandwidth Wall
In autoregressive generation (), the arithmetic intensity (FLOPs per byte transferred) of an SAE forward pass is fundamentally bounded:
On an NVIDIA H100 GPU (3,350 GB/s HBM3 bandwidth, 1,979 TFLOP/s FP16 Tensor Core throughput), saturating compute requires an arithmetic intensity of . At 0.5 FLOP/byte, execution is >99% memory-bound.
| Hardware Layer | Monolithic Top-K (70B Model, d_sae=262k) | PhaseSAE (P=4 Tiles) | Hardware Consequence |
|---|---|---|---|
| Per-Layer Weight Footprint | 8.59 GB / layer | 2.15 GB / phase slice | 4× reduction in peak active parameter transfer |
| Total Model Footprint (80 Layers) | 687 GB VRAM | 171.8 GB active streaming footprint | Brings multi-layer steering within single-node memory |
| SRAM Cache Utilization | Evicted / Continuous DRAM Thrashing | Pinned in L2 / On-Chip SRAM | Residuals retained in registers between micro-ticks |
| Compute Core Saturation | <1% Compute Efficiency | Streams parameter slices into active execution | Eliminates memory-bus stalls |
2. PhaseSAE: Time-Division Multiplexed Formulation
PhaseSAE partitions the latent dimension into distinct phase tiles (). At micro-tick , the network processes only the parameter slice and against the progressive residual error vector :
In standard Top- SAEs, selecting all latents simultaneously causes greedy feature competition: latents with overlapping decoder directions compete destructively. In PhaseSAE, Phase 0 isolates broad high-variance features; subsequent phases only observe residual error , forcing latents to span the orthogonal complement of previously explained variance. Empirical cross-phase decoder cosine similarity confirms near-orthogonal alignment ().
3. Hardware Roofline & Fused Triton Kernel
To avoid the latency penalty of sequential PyTorch kernel launches, PhaseSAE implements a custom Fused TDM Triton GPU Kernel. Residual vectors are pinned directly in GPU registers, eliminating intermediate DRAM roundtrips across all micro-ticks:
| Batch Size B | Monolithic Top-K Baseline | Unfused PyTorch PhaseSAE | Fused TDM Triton Kernel | Fused vs Unfused Speedup | Peak Active Param Slice |
|---|---|---|---|---|---|
| 1 | 7.67 ms | 9.37 ms | 10.39 ms | 0.90× | 18.0 MB (4.0× Reduction) |
| 4 | 17.95 ms | 22.85 ms | 20.07 ms | 1.14× | 18.0 MB (4.0× Reduction) |
| 16 | 40.28 ms | 78.61 ms | 41.73 ms | 1.88× | 18.0 MB (4.0× Reduction) |
| 64 | 103.09 ms | 155.00 ms | 109.89 ms | 1.41× | 18.0 MB (4.0× Reduction) |

At , the Fused TDM Triton kernel matches monolithic wall-clock latency (41.7 ms vs 40.3 ms) while maintaining a strict 4× reduction in peak parameter bandwidth and achieving +65.9% higher downstream cross-entropy recovery.
4. Downstream LM Benchmark: TinyStories-1M
We evaluated PhaseSAE head-to-head against standard Top- SAEs directly on activations from TinyStories-1M (blocks.0.hook_resid_post, , , target , 16,000 tokens of c4-10k) using the official sae_lens.evals evaluation gauntlet:
| Metric | Top-K Baseline | PhaseSAE (P=4) | Delta / Relative Improvement |
|---|---|---|---|
| Downstream CE Loss Recovered | 24.42% | 40.51% | +16.09 pp (+65.9% relative gain) |
| Explained Variance (R²) | 0.1758 | 0.2913 | +0.1155 (+65.7% relative gain) |
| MSE Reconstruction Error | 0.2023 | 0.1740 | -14.0% error reduction |
| Active Latents (L₀) | 16.00 | 16.00 | Identical sparsity budget |
| Peak Parameter Slice | 0.0625 MB | 0.0156 MB | Strict 1/4 (25%) bandwidth footprint |
| Training Time (16k tokens) | 4.23s | 5.37s | Negligible training overhead |

4.1 Pareto Frontier Sweep
To confirm that PhaseSAE's dominance is structural across sparsity regimes, we evaluated both architectures across varying sparsity budgets :
| Target K | Architecture | CE Loss Recovery (%) | Explained Variance (R²) | MSE Error | Peak Param Slice |
|---|---|---|---|---|---|
| 8 | Top-K Baseline | -1.16% | 0.0709 | 0.2281 | 0.0625 MB (1.0×) |
| 8 | PhaseSAE (P=4) | +5.46% | 0.1054 | 0.2196 | 0.0156 MB (0.25×) |
| 16 | Top-K Baseline | 2.37% | 0.1322 | 0.2130 | 0.0625 MB (1.0×) |
| 16 | PhaseSAE (P=4) | 44.52% | 0.2717 | 0.1788 | 0.0156 MB (0.25×) |
| 24 | Top-K Baseline | 38.61% | 0.2662 | 0.1801 | 0.0625 MB (1.0×) |
| 24 | PhaseSAE (P=4) | 58.10% | 0.3974 | 0.1479 | 0.0156 MB (0.25×) |
Pareto Invariant: PhaseSAE strictly dominates monolithic Top- across every operating regime, achieving higher downstream fidelity at (44.52% CE recovery) than baseline Top- achieves even at (38.61%), with 4× lower peak parameter bandwidth.
4.2 Optimization Dynamics & Residual Contraction
Gradient backpropagation and loss contraction across 200 optimization steps:
| Optimization Step | MSE Loss | L₂ Residual Norm | Active Latents L₀ | Loss Contraction |
|---|---|---|---|---|
| 0 | 39.858 | 6.121 | 16.0 | Baseline |
| 50 | 2.462 | 1.502 | 16.0 | -93.8% |
| 100 | 0.805 | 0.869 | 16.0 | -98.0% |
| 150 | 0.510 | 0.690 | 16.0 | -98.7% |
| 199 | 0.382 | 0.596 | 16.0 | -99.0% total reduction |
Hierarchical residual contraction across progressive micro-ticks on 256 unseen validation vectors:
| Micro-Tick Stage | Residual Norm ‖r⁽ᵖ⁾‖₂ | Marginal Reduction | Cumulative Error Reduction |
|---|---|---|---|
| Input (x - b_dec) | 6.1360 | — | Baseline (0.0%) |
| Phase 0 (Tick 1) | 3.5901 | 41.5% | 41.5% |
| Phase 1 (Tick 2) | 1.7797 | 50.4% | 71.0% |
| Phase 2 (Tick 3) | 0.9798 | 44.9% | 84.0% |
| Phase 3 (Tick 4) | 0.5835 | 40.4% | 90.5% cumulative reduction |
5. The Anytime SAE: Dynamic Token Early-Exit
Because residual errors contract monotonically at each micro-tick, PhaseSAE natively enables Adaptive Early-Exit Inference: terminating the forward pass once :
| Token Complexity Class | Exemplar Tokens | Inference Routing Path | Phases Evaluated | Compute / Memory Saved |
|---|---|---|---|---|
| Low Entropy | Punctuation, whitespace, "The" | Phase 0 → Early Exit (Residual < 5%) | 1 of 4 phases | 75% reduction |
| Medium Entropy | Common nouns, "president" | Phase 0 → Phase 1 → Early Exit | 2 of 4 phases | 50% reduction |
| High Entropy | Domain jargon, "quantum" | Full Cascade (Phases 0 through 3) | 4 of 4 phases | Full resolution (100%) |
Empirical adaptive exit performance across varying thresholds :
| Exit Threshold τ | Explained Variance (R²) | MSE Error | Avg Phases / Token | Effective Speedup |
|---|---|---|---|---|
| None (Full P=4) | 0.3014 | 0.00291 | 4.00 | 1.00× (Baseline) |
| 0.70 | 0.1831 | 0.00340 | 3.25 | 1.23× speedup |
| 0.65 | 0.2393 | 0.00316 | 3.56 | 1.12× speedup |
| 0.60 | 0.2715 | 0.00303 | 3.75 | 1.07× speedup |
6. Implementation & Framework Integration
PhaseSAE is implemented as both a standalone PyTorch reference library (connerkup/phase-sae) and a fully registered upstream architecture within sae_lens (feat/phase-multiplexed-sae):
from phase_sae import PhaseMultiplexedSAE, PhaseSAEConfig, AnytimeSAE
# 1. Initialize PhaseSAE (P=4 phases, k=4 per phase -> total k=16)
cfg = PhaseSAEConfig(d_in=768, d_sae=12288, num_phases=4, k_per_phase=4)
sae = PhaseMultiplexedSAE(cfg)
# 2. Forward pass with in-register residual streaming
reconstruction, feature_acts = sae(x)
# 3. Stream micro-ticks for 1/P memory consumption
for phase_idx, acts_p, recon_p, residual in sae.stream_phase_ticks(x):
print(f"Phase {phase_idx}: residual norm = {residual.norm(dim=-1).mean():.4f}")
# 4. Adaptive early-exit under compute budget
anytime = AnytimeSAE(sae)
out = anytime.run_under_budget(x, max_phases=2, exit_threshold=0.2)
print(f"Exited after {out.phases_executed} phases (early_exit={out.early_exited})")Test Matrix & CI Status:
• tests/saes/test_phase_multiplexed_sae.py: 8/8 tests passed in 0.19s.
• tests/test_llm_sae_training_runner.py: 2/2 tests passed in 8.89s.
• Standalone Triton & Anytime test suite: 6/6 tests passed.
• Regression suite across Gated and JumpReLU SAEs: 51/51 passed with zero regressions.
7. Research Brief & Press Package
For journalists, researchers, and engineers reviewing or covering PhaseSAE, a complete media and data package is available for download:
| Asset Description | Format | File Size | Direct Download Link |
|---|---|---|---|
| Complete Press Package (.ZIP Bundle) | ZIP Archive | 603 KB | Download phasesae-press-package.zip |
| Architecture Diagram (Figure 1) | SVG Vector / PNG 2x | 12 KB / 238 KB | SVG Vector · 2x Retina PNG |
| Memory-Bandwidth Wall Card (Figure 2) | SVG Vector / PNG 2x | 5 KB / 200 KB | SVG Vector · 2x Retina PNG |
| TinyStories-1M Benchmark Card (Figure 3) | SVG Vector / PNG 2x | 6 KB / 186 KB | SVG Vector · 2x Retina PNG |
| Raw Benchmark Telemetry & Pareto Data | JSON | 3.4 KB | Download phasesae-benchmarks.json |
| Executive One-Pager Brief | Markdown (.md) | 1.3 KB | Download PhaseSAE-Executive-Brief.md |
| Full Technical Whitepaper | Markdown (.md) | 13 KB | Download PhaseSAE-Whitepaper.md |
| BibTeX Citation | BibTeX (.bib) | 363 B | Download phasesae.bib |
Citation & Attribution
@article{kupferberg2026phasesae,
title={PhaseSAE: Time-Division Multiplexed Dictionary Learning for Memory-Efficient Mechanistic Interpretability},
author={Kupferberg, Conner},
year={2026},
url={https://github.com/connerkup/phase-sae},
note={Canonical Implementation: github.com/connerkup/phase-sae; Upstream Fork: github.com/connerkup/SAELens}
}