ericluo04/tweet-engagement-sae-steering
SAE feature steering — tweet engagement
A live demo of activation-steering on google/gemma-3-27b-it using the gemma-scope-2-27b-it-res SAE at layer 40 (width 65k).
The 108 features available in this demo are exactly those selected by a Poisson-lasso of tweet "likes" against the full SAE feature dictionary plus LIWC, Perspective-API toxicity, and calendar-effect controls. Each feature has been auto-interpreted into a short natural-language description that you can compare against the off-the-shelf GemmaScope-2 codebook label.
How to use
- Pick a feature from the dropdown. Read the autointerp description and a few of its top-activating example tweets so you have intuition for what the feature detects.
- Pick a steering strength.
1×corresponds to the strongest the feature naturally fires on real tweets.+5×is the default for the autointerp pipeline; it pushes the feature five times harder than that. Negative values suppress. - Pick a mode:
- Prefix continuation: the model takes the first ~8 tokens of your prompt and writes a continuation, with and without steering.
- Free generation: the prompt becomes a (possibly empty) seed; the model generates whatever it wants, more strongly conditioned by the steering than by the prompt.
- Hit Run to see the clean and steered outputs side-by-side.
What the controls mean
Caveats
- Hosted on HuggingFace Spaces ZeroGPU. First call after a cold start loads the 27B model (~2 minutes). Subsequent calls within the same worker lifetime are fast.
- Strengths past
±8×often produce repetition collapse or broken Unicode (the "explosive incoherence" regime documented in Lindsey et al. 2026). Stay within±5×–7×for clearly steered, coherent output. - The 108 features here are the lasso-selected subset for the tweet-engagement task. The other ~64,400 SAE features are not exposed.
Method paper
The pipeline that produced the autointerp labels and chose the 108 features is described in manuscript/auto_interp_methods.tex of the source repo. In brief: each feature's label is generated by gpt-5.4 from a unified prompt containing observational evidence (49 exemplar tweets with token-level activation traces) plus interventional evidence (10 down-steered + 10 up-steered prefix-continuation pairs at ±3× p99(top-K token activations)).
