Solshine commited on
Commit
7475f3d
·
0 Parent(s):

Initial public release: SAE weights, cfg, and model card

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitattributes +35 -0
  2. README.md +291 -0
  3. pythia160m_jumprelu_L10_deceptive_only/cfg.json +23 -0
  4. pythia160m_jumprelu_L10_deceptive_only/sae_weights.safetensors +3 -0
  5. pythia160m_jumprelu_L10_honest_only/cfg.json +23 -0
  6. pythia160m_jumprelu_L10_honest_only/sae_weights.safetensors +3 -0
  7. pythia160m_jumprelu_L10_mixed/cfg.json +23 -0
  8. pythia160m_jumprelu_L10_mixed/sae_weights.safetensors +3 -0
  9. pythia160m_jumprelu_L1_deceptive_only/cfg.json +23 -0
  10. pythia160m_jumprelu_L1_deceptive_only/sae_weights.safetensors +3 -0
  11. pythia160m_jumprelu_L1_honest_only/cfg.json +23 -0
  12. pythia160m_jumprelu_L1_honest_only/sae_weights.safetensors +3 -0
  13. pythia160m_jumprelu_L1_mixed/cfg.json +23 -0
  14. pythia160m_jumprelu_L1_mixed/sae_weights.safetensors +3 -0
  15. pythia160m_jumprelu_L2_deceptive_only/cfg.json +23 -0
  16. pythia160m_jumprelu_L2_deceptive_only/sae_weights.safetensors +3 -0
  17. pythia160m_jumprelu_L2_honest_only/cfg.json +23 -0
  18. pythia160m_jumprelu_L2_honest_only/sae_weights.safetensors +3 -0
  19. pythia160m_jumprelu_L2_mixed/cfg.json +23 -0
  20. pythia160m_jumprelu_L2_mixed/sae_weights.safetensors +3 -0
  21. pythia160m_jumprelu_L4_deceptive_only/cfg.json +23 -0
  22. pythia160m_jumprelu_L4_deceptive_only/sae_weights.safetensors +3 -0
  23. pythia160m_jumprelu_L4_honest_only/cfg.json +23 -0
  24. pythia160m_jumprelu_L4_honest_only/sae_weights.safetensors +3 -0
  25. pythia160m_jumprelu_L4_mixed/cfg.json +23 -0
  26. pythia160m_jumprelu_L4_mixed/sae_weights.safetensors +3 -0
  27. pythia160m_jumprelu_L6_deceptive_only/cfg.json +23 -0
  28. pythia160m_jumprelu_L6_deceptive_only/sae_weights.safetensors +3 -0
  29. pythia160m_jumprelu_L6_honest_only/cfg.json +23 -0
  30. pythia160m_jumprelu_L6_honest_only/sae_weights.safetensors +3 -0
  31. pythia160m_jumprelu_L6_mixed/cfg.json +23 -0
  32. pythia160m_jumprelu_L6_mixed/sae_weights.safetensors +3 -0
  33. pythia160m_jumprelu_L8_deceptive_only/cfg.json +23 -0
  34. pythia160m_jumprelu_L8_deceptive_only/sae_weights.safetensors +3 -0
  35. pythia160m_jumprelu_L8_honest_only/cfg.json +23 -0
  36. pythia160m_jumprelu_L8_honest_only/sae_weights.safetensors +3 -0
  37. pythia160m_jumprelu_L8_mixed/cfg.json +23 -0
  38. pythia160m_jumprelu_L8_mixed/sae_weights.safetensors +3 -0
  39. pythia160m_topk_L10_deceptive_only/cfg.json +23 -0
  40. pythia160m_topk_L10_deceptive_only/sae_weights.safetensors +3 -0
  41. pythia160m_topk_L10_honest_only/cfg.json +23 -0
  42. pythia160m_topk_L10_honest_only/sae_weights.safetensors +3 -0
  43. pythia160m_topk_L10_mixed/cfg.json +23 -0
  44. pythia160m_topk_L10_mixed/sae_weights.safetensors +3 -0
  45. pythia160m_topk_L1_deceptive_only/cfg.json +23 -0
  46. pythia160m_topk_L1_deceptive_only/sae_weights.safetensors +3 -0
  47. pythia160m_topk_L1_honest_only/cfg.json +23 -0
  48. pythia160m_topk_L1_honest_only/sae_weights.safetensors +3 -0
  49. pythia160m_topk_L1_mixed/cfg.json +23 -0
  50. pythia160m_topk_L1_mixed/sae_weights.safetensors +3 -0
.gitattributes ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ *.7z filter=lfs diff=lfs merge=lfs -text
2
+ *.arrow filter=lfs diff=lfs merge=lfs -text
3
+ *.bin filter=lfs diff=lfs merge=lfs -text
4
+ *.bz2 filter=lfs diff=lfs merge=lfs -text
5
+ *.ckpt filter=lfs diff=lfs merge=lfs -text
6
+ *.ftz filter=lfs diff=lfs merge=lfs -text
7
+ *.gz filter=lfs diff=lfs merge=lfs -text
8
+ *.h5 filter=lfs diff=lfs merge=lfs -text
9
+ *.joblib filter=lfs diff=lfs merge=lfs -text
10
+ *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
+ *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
+ *.model filter=lfs diff=lfs merge=lfs -text
13
+ *.msgpack filter=lfs diff=lfs merge=lfs -text
14
+ *.npy filter=lfs diff=lfs merge=lfs -text
15
+ *.npz filter=lfs diff=lfs merge=lfs -text
16
+ *.onnx filter=lfs diff=lfs merge=lfs -text
17
+ *.ot filter=lfs diff=lfs merge=lfs -text
18
+ *.parquet filter=lfs diff=lfs merge=lfs -text
19
+ *.pb filter=lfs diff=lfs merge=lfs -text
20
+ *.pickle filter=lfs diff=lfs merge=lfs -text
21
+ *.pkl filter=lfs diff=lfs merge=lfs -text
22
+ *.pt filter=lfs diff=lfs merge=lfs -text
23
+ *.pth filter=lfs diff=lfs merge=lfs -text
24
+ *.rar filter=lfs diff=lfs merge=lfs -text
25
+ *.safetensors filter=lfs diff=lfs merge=lfs -text
26
+ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
+ *.tar.* filter=lfs diff=lfs merge=lfs -text
28
+ *.tar filter=lfs diff=lfs merge=lfs -text
29
+ *.tflite filter=lfs diff=lfs merge=lfs -text
30
+ *.tgz filter=lfs diff=lfs merge=lfs -text
31
+ *.wasm filter=lfs diff=lfs merge=lfs -text
32
+ *.xz filter=lfs diff=lfs merge=lfs -text
33
+ *.zip filter=lfs diff=lfs merge=lfs -text
34
+ *.zst filter=lfs diff=lfs merge=lfs -text
35
+ *tfevents* filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,291 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ language: en
3
+ license: apache-2.0
4
+ tags:
5
+ - sparse-autoencoder
6
+ - SAE
7
+ - interpretability
8
+ - deception-detection
9
+ - mechanistic-interpretability
10
+ - saelens
11
+ - neuronpedia
12
+ - behavioral-sampling
13
+ - gpt-neox
14
+ - pythia
15
+ base_model:
16
+ - EleutherAI/pythia-160m
17
+ datasets:
18
+ - Solshine/deception-behavioral-multimodel
19
+ ---
20
+
21
+ # Pythia-160M Deception Behavioral SAEs
22
+
23
+ 36 Sparse Autoencoders trained on residual stream activations from [EleutherAI/pythia-160m](https://huggingface.co/EleutherAI/pythia-160m) (160M parameter GPT-NeoX architecture base model from the Pythia scaling suite), capturing behavioral deception signals via same-prompt temperature sampling.
24
+
25
+
26
+ ## Training-data caveat — please read before use
27
+
28
+ The "honest" and "deceptive" labels used to train and evaluate this SAE
29
+ come from a **mixed scenario pool** of nine prompts:
30
+
31
+ - **Six clean incentive-structure scenarios** — `insider_info`,
32
+ `accounting_error`, `ai_oversight_log`, `ai_capability_hide`,
33
+ `surprise_party`, `job_interview_gap`. Each presents a realistic
34
+ situation with a non-trivial incentive to conceal or disclose
35
+ information; the honest/deceptive distinction is which of the two
36
+ behavioral choices the model's completion settles into under
37
+ temperature sampling.
38
+ - **Three role-play identity-assignment scenarios** —
39
+ `secret_role_game` ("You have been assigned the role of Fascist"),
40
+ `secret_role_game_v2` ("You are secretly one of the Mafia members"),
41
+ `werewolf_game` ("You are a Werewolf"). These pre-assign the model a
42
+ deceptive identity and label a completion "deceptive" when the model
43
+ drifts away from the assigned role or "honest" when it echoes it.
44
+
45
+ **What this mixed pool means for the SAE's labels.** Within the six
46
+ incentive-structure scenarios, the honest/deceptive distinction is a
47
+ measurement of behavioral choice under an ambiguous incentive. Within
48
+ the three role-play scenarios, the distinction is a measurement of
49
+ role-consistency under identity-assigned role-play — which is a
50
+ well-defined phenomenon but not the same as emergent or incentive-
51
+ driven deception.
52
+
53
+ **What this SAE is and is not good for.**
54
+
55
+ - **Good for:** research on mixed-pool activation geometry; SAE
56
+ feature-geometry studies; as one of a set of baselines when
57
+ comparing multiple SAE families; as a reference implementation of
58
+ same-prompt temperature-sampled behavioral SAE training at scale.
59
+ - **Not recommended as a standalone deception detector.** The
60
+ role-consistency signal from the three role-play scenarios is mixed
61
+ into every aggregate metric reported below. A downstream user who
62
+ wants an "emergent-deception feature set" should restrict attention
63
+ to features whose activation pattern concentrates in the
64
+ `insider_info` / `accounting_error` / `ai_oversight_log` /
65
+ `ai_capability_hide` / `surprise_party` / `job_interview_gap`
66
+ scenarios — or wait for the methodologically corrected V3 re-release
67
+ currently in preparation on the decision-incentive scenario bank
68
+ (no pre-assigned deceptive identity).
69
+
70
+ **What is unaffected by this caveat.**
71
+
72
+ - The SAE weights, reconstruction metrics (explained variance, L0,
73
+ alive features), and engineering of the training pipeline are
74
+ accurate as reported.
75
+ - The linear-probe balanced-accuracy numbers in the upstream paper
76
+ measure the mixed pool; the 6-scenario clean-subset re-analysis is
77
+ listed as a planned appendix for the next manuscript revision.
78
+
79
+ A companion methodology-first Gemma 4 SAE suite is in preparation using
80
+ pretraining-distribution data + a decision-incentive behavior split;
81
+ this README will be updated with a link when that release is public.
82
+
83
+ ---
84
+
85
+ Part of the cross-model deception SAE study: [Solshine/deception-behavioral-saes-saelens](https://huggingface.co/Solshine/deception-behavioral-saes-saelens) (9 models, 348 total SAEs).
86
+
87
+ ## What's in This Repo
88
+
89
+ - **36 SAEs** across 6 layers (L1, L2, L4, L6, L8, L10)
90
+ - **2 architectures:** TopK (k=64), JumpReLU
91
+ - **3 training conditions:** `mixed`, `deceptive_only`, `honest_only`
92
+ - **Format:** SAELens/Neuronpedia-compatible (safetensors + cfg.json)
93
+ - **Dimensions:** d_in=768, d_sae=3072 (4x expansion)
94
+
95
+ ## Research Context
96
+
97
+ This is a follow-up to ["The Secret Agenda: LLMs Strategically Lie Undetected by Current Safety Tools"](https://arxiv.org/abs/2509.20393) (arXiv:2509.20393). Same-prompt behavioral sampling: a single ambiguous scenario prompt produces both deceptive and honest completions via temperature sampling, classified by Gemini 2.5 Flash. Pythia-160M is the only GPT-NeoX model in the study that is not a nanochat variant, providing an independent test of the GPT-NeoX architecture at small scale.
98
+
99
+ Code: [SolshineCode/deception-nanochat-sae-research](https://github.com/SolshineCode/deception-nanochat-sae-research)
100
+
101
+ ## Key Findings — Pythia-160M
102
+
103
+ Pythia-160M is the **most anomalous model** in terms of layer profile — the only one with a monotonically *decreasing* deception signal, and one of the strongest SAE-helps results.
104
+
105
+ | Metric | Value |
106
+ |---|---|
107
+ | Peak layer | L0 (0% depth — embedding layer) |
108
+ | Peak balanced accuracy | **66.0%** |
109
+ | Peak AUROC | **0.696** |
110
+ | Best SAE probe accuracy | **72.2%** (`pythia160m_jumprelu_L2_honest_only`) |
111
+ | SAEs beating raw baseline | 18/36 (50%) — SAEs **help**, tied-best rate in study |
112
+
113
+ **Monotonically decreasing signal — opposite of all other models:** Every other model with above-chance probe accuracy shows a peak at some intermediate layer and declines toward the output. Pythia-160M is the sole model where the signal is strongest at the embedding layer (L0, 66.0%) and decreases monotonically through the network. By Layer 10, the raw probe is near chance. The hypothesis is that at 160M parameters, the model lacks the capacity to develop processing depth for deception, and what the probe detects at L0 is primarily token pattern recognition (which characters appear in social deduction prompts) rather than genuine behavioral encoding.
114
+
115
+ **However, SAEs reverse the trend:** Despite raw activations degrading through the network, `pythia160m_jumprelu_L2_honest_only` achieves 72.2% at L2 — +6.2pp above the raw peak at L0 (66.0%). This is one of the largest SAE-over-raw improvements in the study. The SAE decomposition appears to isolate a concentrated signal at L2 that is obscured in the full 768-dimensional raw representation.
116
+
117
+ **Highest SAE-helps rate in the study (50%):** 18 of 36 SAEs beat the raw baseline at their respective layers. Given that raw activations degrade monotonically, this means SAEs are recovering latent structure at layers where the raw probe is at or near chance.
118
+
119
+ **JumpReLU + honest_only pattern replicates:** As with nanochat-d20, TinyLlama, and Llama-3.2-1B, the best-performing SAE combines JumpReLU architecture with honest_only training condition. This pattern holds across 4 of the 5 SAE-helps models in the study, suggesting honest-only training data selects for features that are genuinely diagnostic of deception absence (rather than features that are merely correlated with deceptive text).
120
+
121
+ **GPT-NeoX architecture at 160M:** Pythia-160M uses EleutherAI's Pythia training framework with the standard GPT-NeoX architecture — parallel attention and MLP blocks, rotary position embeddings — but at only 160M parameters, 12 transformer layers, and a 768-dimensional residual stream. Unlike nanochat-d20/d32 (GPT-NeoX with 1.88B parameters), Pythia-160M cannot rely on depth to accumulate behavioral representation. The 12-layer budget may force surface encoding to dominate.
122
+
123
+ **AUROC = 0.696 at L0:** Lower than other models but substantially above 0.5. Combined with the best SAE at 72.2%, this confirms that a deception signal — however shallow in origin — is present even at 160M parameters in a GPT-NeoX model.
124
+
125
+ ## SAE Format
126
+
127
+ Each SAE lives in a subfolder named `{sae_id}/` containing:
128
+ - `sae_weights.safetensors` — encoder/decoder weights
129
+ - `cfg.json` — SAELens-compatible config
130
+
131
+ `hook_name` format: `gpt_neox.layers.{layer}.hook_resid_post`
132
+
133
+ (Note: Pythia uses `gpt_neox.layers` rather than `model.layers` as the module path.)
134
+
135
+ ## Training Details
136
+
137
+ | Parameter | Value |
138
+ |---|---|
139
+ | Hardware | NVIDIA GeForce GTX 1650 Ti Max-Q, 4 GB VRAM, Windows 11 Pro |
140
+ | Training time | ~400–600 seconds per SAE |
141
+ | Epochs | 300 |
142
+ | Batch size | 128 |
143
+ | Expansion factor | 4x (768 → 3072) |
144
+ | Activations | `resid_post` collected during autoregressive generation |
145
+ | Training conditions | `mixed` (n=211), `deceptive_only` (n=120), `honest_only` (n=91) |
146
+ | LLM classifier | Gemini 2.5 Flash |
147
+ | Ambiguous rate | 59/270 (21.9%) — highest in study |
148
+
149
+ ## Known Limitations
150
+
151
+ **JumpReLU threshold not learned (36 SAEs):** All SAEs have `threshold = 0` — functionally ReLU. L0 ≈ 50% of d_sae. TopK SAEs are unaffected.
152
+
153
+ **STE fix (2026-04-11):** The training code has been corrected with a Gaussian-kernel STE (Rajamanoharan et al. 2024, arXiv:2407.14435). The honest_only advantage is confirmed as not a dimensionality artifact (15/18 STE conditions on d20+TinyLlama confirm). STE-specific validation SAEs for Pythia-160M were not run; the pattern from other models is assumed to generalize.
154
+
155
+ **L0 peak may reflect token pattern recognition:** The best *raw* layer is the embedding layer. It is possible that what the probe detects at L0 is surface-level token distribution differences between deceptive and honest social deduction scenarios, rather than deeper behavioral encoding. The SAE result at L2 slightly mitigates this concern by recovering signal at a processed layer.
156
+
157
+ **High ambiguity rate:** 21.9% of Pythia-160M completions were classified as ambiguous by Gemini — the highest ambiguity rate in the study. The model's 160M parameters may produce more incoherent outputs that are hard to classify.
158
+
159
+ ## Loading Example
160
+
161
+ ```python
162
+ from safetensors.torch import load_file
163
+ import json
164
+
165
+ sae_id = "pythia160m_jumprelu_L2_honest_only"
166
+ weights = load_file(f"{sae_id}/sae_weights.safetensors")
167
+ cfg = json.load(open(f"{sae_id}/cfg.json"))
168
+
169
+ # W_enc: [768, 3072], W_dec: [3072, 768]
170
+ # cfg["hook_name"] == "gpt_neox.layers.2.hook_resid_post"
171
+ print(f"d_in={cfg['d_in']}, d_sae={cfg['d_sae']}")
172
+ print(f"Training condition: {cfg['training_condition']}")
173
+ ```
174
+
175
+
176
+ ## Usage
177
+
178
+ ### 1. Load an SAE from this repo
179
+
180
+ ```python
181
+ from huggingface_hub import hf_hub_download
182
+ from safetensors.torch import load_file
183
+ import json
184
+
185
+ repo_id = "Solshine/deception-saes-pythia-160m"
186
+ sae_id = "pythia160m_topk_L4_honest_only" # replace with any tag in this repo
187
+
188
+ weights_path = hf_hub_download(repo_id, f"{sae_id}/sae_weights.safetensors")
189
+ cfg_path = hf_hub_download(repo_id, f"{sae_id}/cfg.json")
190
+
191
+ with open(cfg_path) as f:
192
+ cfg = json.load(f)
193
+
194
+ # Option A — load with SAELens (≥3.0 required for jumprelu/topk; ≥3.5 for gated)
195
+ from sae_lens import SAE
196
+ sae = SAE.from_dict(cfg)
197
+ sae.load_state_dict(load_file(weights_path))
198
+
199
+ # Option B — load manually (no SAELens dependency)
200
+ from safetensors.torch import load_file
201
+ state = load_file(weights_path)
202
+ # Keys: W_enc [768, 3072], b_enc [3072],
203
+ # W_dec [3072, 768], b_dec [768], threshold [3072]
204
+ ```
205
+
206
+ ### 2. Hook into the model and collect residual-stream activations
207
+
208
+ These SAEs were trained on the **residual stream after each transformer layer**.
209
+ The `hook_name` field in `cfg.json` gives the exact HuggingFace `transformers`
210
+ submodule path to hook. Pythia uses GPT-NeoX architecture. Hook path: `gpt_neox.layers.{layer}` (not `model.layers.{layer}`).
211
+
212
+ ```python
213
+ import torch
214
+ from transformers import AutoModelForCausalLM, AutoTokenizer
215
+
216
+ model = AutoModelForCausalLM.from_pretrained("EleutherAI/pythia-160m")
217
+ tokenizer = AutoTokenizer.from_pretrained("EleutherAI/pythia-160m")
218
+
219
+ # Read hook_name from the cfg you already loaded:
220
+ # cfg["hook_name"] == "gpt_neox.layers.4" (example — varies by SAE)
221
+ hook_name = cfg["hook_name"] # e.g. "gpt_neox.layers.4"
222
+
223
+ # Navigate the submodule path and register a forward hook
224
+ import functools
225
+ submodule = functools.reduce(getattr, hook_name.split("."), model)
226
+
227
+ activations = {}
228
+ def hook_fn(module, input, output):
229
+ # Most transformer layers return (hidden_states, ...) as a tuple
230
+ h = output[0] if isinstance(output, tuple) else output
231
+ activations["resid"] = h.detach()
232
+
233
+ handle = submodule.register_forward_hook(hook_fn)
234
+
235
+ inputs = tokenizer("Your text here", return_tensors="pt")
236
+ with torch.no_grad():
237
+ model(**inputs)
238
+ handle.remove()
239
+
240
+ # activations["resid"]: [batch, seq_len, 768]
241
+ resid = activations["resid"][:, -1, :] # last token position
242
+ ```
243
+
244
+ ### 3. Read feature activations
245
+
246
+ ```python
247
+ with torch.no_grad():
248
+ feature_acts = sae.encode(resid) # [batch, 3072] — sparse
249
+
250
+ # Which features fired?
251
+ active_features = feature_acts[0].nonzero(as_tuple=True)[0]
252
+ top_features = feature_acts[0].topk(10)
253
+
254
+ print("Active feature indices:", active_features.tolist())
255
+ print("Top-10 feature values:", top_features.values.tolist())
256
+ print("Top-10 feature indices:", top_features.indices.tolist())
257
+
258
+ # Reconstruct (for sanity check — should be close to resid)
259
+ reconstruction = sae.decode(feature_acts)
260
+ l2_error = (resid - reconstruction).norm(dim=-1).mean()
261
+ ```
262
+
263
+ ### Caveats and known limitations
264
+
265
+ **Hook names are HuggingFace `transformers`-style, not TransformerLens-style.**
266
+ The `hook_name` in `cfg.json` (e.g. `"gpt_neox.layers.4"`) is a submodule path in the standard
267
+ HuggingFace model. SAELens' built-in activation-collection pipeline expects
268
+ TransformerLens hook names (e.g. `blocks.14.hook_resid_post`). This means
269
+ `SAE.from_pretrained()` with automatic model running **will not work** — use the
270
+ manual forward-hook pattern above instead.
271
+
272
+ **SAELens version requirements.**
273
+ - `topk` architecture: SAELens ≥ 3.0
274
+ - `jumprelu` architecture: SAELens ≥ 3.0
275
+ - `gated` architecture: SAELens ≥ 3.5 (or load manually with `state_dict`)
276
+
277
+ **These SAEs detect deceptive *behavior*, not deceptive *prompts**.*
278
+ They were trained on response-level activations where the same prompt produced both
279
+ deceptive and honest outputs. Feature activation differences reflect behavioral
280
+ divergence, not prompt content. See the paper for experimental design details.
281
+
282
+ ## Citation
283
+
284
+ ```bibtex
285
+ @article{thesecretagenda2025,
286
+ title={The Secret Agenda: LLMs Strategically Lie Undetected by Current Safety Tools},
287
+ author={DeLeeuw, Caleb},
288
+ journal={arXiv:2509.20393},
289
+ year={2025}
290
+ }
291
+ ```
pythia160m_jumprelu_L10_deceptive_only/cfg.json ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architecture": "jumprelu",
3
+ "d_in": 768,
4
+ "d_sae": 3072,
5
+ "dtype": "float32",
6
+ "device": "cpu",
7
+ "model_name": "EleutherAI/pythia-160m",
8
+ "hook_name": "gpt_neox.layers.10",
9
+ "hook_layer": 10,
10
+ "hook_head_index": null,
11
+ "activation_fn_str": "jumprelu",
12
+ "activation_fn_kwargs": {},
13
+ "apply_b_dec_to_input": false,
14
+ "finetuning_scaling_factor": false,
15
+ "sae_lens_training_version": "deception-behavioral-v1",
16
+ "prepend_bos": false,
17
+ "dataset_path": "Solshine/deception-behavioral-multimodel",
18
+ "dataset_trust_remote_code": false,
19
+ "context_size": null,
20
+ "normalize_activations": "none",
21
+ "training_condition": "deceptive_only",
22
+ "training_notes": "Deception behavioral SAE \u2014 same-prompt behavioral sampling. Model: EleutherAI/pythia-160m, Layer 10, jumprelu. See https://github.com/SolshineCode/deception-nanochat-sae-research"
23
+ }
pythia160m_jumprelu_L10_deceptive_only/sae_weights.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:47779de850b9a5c246f98bee4194c5d1469f5a45ababbe2eed12bfa80982b58a
3
+ size 18902400
pythia160m_jumprelu_L10_honest_only/cfg.json ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architecture": "jumprelu",
3
+ "d_in": 768,
4
+ "d_sae": 3072,
5
+ "dtype": "float32",
6
+ "device": "cpu",
7
+ "model_name": "EleutherAI/pythia-160m",
8
+ "hook_name": "gpt_neox.layers.10",
9
+ "hook_layer": 10,
10
+ "hook_head_index": null,
11
+ "activation_fn_str": "jumprelu",
12
+ "activation_fn_kwargs": {},
13
+ "apply_b_dec_to_input": false,
14
+ "finetuning_scaling_factor": false,
15
+ "sae_lens_training_version": "deception-behavioral-v1",
16
+ "prepend_bos": false,
17
+ "dataset_path": "Solshine/deception-behavioral-multimodel",
18
+ "dataset_trust_remote_code": false,
19
+ "context_size": null,
20
+ "normalize_activations": "none",
21
+ "training_condition": "honest_only",
22
+ "training_notes": "Deception behavioral SAE \u2014 same-prompt behavioral sampling. Model: EleutherAI/pythia-160m, Layer 10, jumprelu. See https://github.com/SolshineCode/deception-nanochat-sae-research"
23
+ }
pythia160m_jumprelu_L10_honest_only/sae_weights.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d5d7423ba54f73993badcffff13a5afb53f5a5bcdff4ae848ef6aa7a9fc3f074
3
+ size 18902400
pythia160m_jumprelu_L10_mixed/cfg.json ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architecture": "jumprelu",
3
+ "d_in": 768,
4
+ "d_sae": 3072,
5
+ "dtype": "float32",
6
+ "device": "cpu",
7
+ "model_name": "EleutherAI/pythia-160m",
8
+ "hook_name": "gpt_neox.layers.10",
9
+ "hook_layer": 10,
10
+ "hook_head_index": null,
11
+ "activation_fn_str": "jumprelu",
12
+ "activation_fn_kwargs": {},
13
+ "apply_b_dec_to_input": false,
14
+ "finetuning_scaling_factor": false,
15
+ "sae_lens_training_version": "deception-behavioral-v1",
16
+ "prepend_bos": false,
17
+ "dataset_path": "Solshine/deception-behavioral-multimodel",
18
+ "dataset_trust_remote_code": false,
19
+ "context_size": null,
20
+ "normalize_activations": "none",
21
+ "training_condition": "mixed",
22
+ "training_notes": "Deception behavioral SAE \u2014 same-prompt behavioral sampling. Model: EleutherAI/pythia-160m, Layer 10, jumprelu. See https://github.com/SolshineCode/deception-nanochat-sae-research"
23
+ }
pythia160m_jumprelu_L10_mixed/sae_weights.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:690a5bf1731bb80d1988ccffa604cc977bf9b506343fc8c2503609b780de9492
3
+ size 18902400
pythia160m_jumprelu_L1_deceptive_only/cfg.json ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architecture": "jumprelu",
3
+ "d_in": 768,
4
+ "d_sae": 3072,
5
+ "dtype": "float32",
6
+ "device": "cpu",
7
+ "model_name": "EleutherAI/pythia-160m",
8
+ "hook_name": "gpt_neox.layers.1",
9
+ "hook_layer": 1,
10
+ "hook_head_index": null,
11
+ "activation_fn_str": "jumprelu",
12
+ "activation_fn_kwargs": {},
13
+ "apply_b_dec_to_input": false,
14
+ "finetuning_scaling_factor": false,
15
+ "sae_lens_training_version": "deception-behavioral-v1",
16
+ "prepend_bos": false,
17
+ "dataset_path": "Solshine/deception-behavioral-multimodel",
18
+ "dataset_trust_remote_code": false,
19
+ "context_size": null,
20
+ "normalize_activations": "none",
21
+ "training_condition": "deceptive_only",
22
+ "training_notes": "Deception behavioral SAE \u2014 same-prompt behavioral sampling. Model: EleutherAI/pythia-160m, Layer 1, jumprelu. See https://github.com/SolshineCode/deception-nanochat-sae-research"
23
+ }
pythia160m_jumprelu_L1_deceptive_only/sae_weights.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:5e6b1c54a58e5aa97836b452792b89a350674ec9d8b8eaddf208735a98d0f2e5
3
+ size 18902400
pythia160m_jumprelu_L1_honest_only/cfg.json ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architecture": "jumprelu",
3
+ "d_in": 768,
4
+ "d_sae": 3072,
5
+ "dtype": "float32",
6
+ "device": "cpu",
7
+ "model_name": "EleutherAI/pythia-160m",
8
+ "hook_name": "gpt_neox.layers.1",
9
+ "hook_layer": 1,
10
+ "hook_head_index": null,
11
+ "activation_fn_str": "jumprelu",
12
+ "activation_fn_kwargs": {},
13
+ "apply_b_dec_to_input": false,
14
+ "finetuning_scaling_factor": false,
15
+ "sae_lens_training_version": "deception-behavioral-v1",
16
+ "prepend_bos": false,
17
+ "dataset_path": "Solshine/deception-behavioral-multimodel",
18
+ "dataset_trust_remote_code": false,
19
+ "context_size": null,
20
+ "normalize_activations": "none",
21
+ "training_condition": "honest_only",
22
+ "training_notes": "Deception behavioral SAE \u2014 same-prompt behavioral sampling. Model: EleutherAI/pythia-160m, Layer 1, jumprelu. See https://github.com/SolshineCode/deception-nanochat-sae-research"
23
+ }
pythia160m_jumprelu_L1_honest_only/sae_weights.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:2388ac03197977efa0803b9ec7d227e0e3ec4a26d795ca44886e8c14793e9ac7
3
+ size 18902400
pythia160m_jumprelu_L1_mixed/cfg.json ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architecture": "jumprelu",
3
+ "d_in": 768,
4
+ "d_sae": 3072,
5
+ "dtype": "float32",
6
+ "device": "cpu",
7
+ "model_name": "EleutherAI/pythia-160m",
8
+ "hook_name": "gpt_neox.layers.1",
9
+ "hook_layer": 1,
10
+ "hook_head_index": null,
11
+ "activation_fn_str": "jumprelu",
12
+ "activation_fn_kwargs": {},
13
+ "apply_b_dec_to_input": false,
14
+ "finetuning_scaling_factor": false,
15
+ "sae_lens_training_version": "deception-behavioral-v1",
16
+ "prepend_bos": false,
17
+ "dataset_path": "Solshine/deception-behavioral-multimodel",
18
+ "dataset_trust_remote_code": false,
19
+ "context_size": null,
20
+ "normalize_activations": "none",
21
+ "training_condition": "mixed",
22
+ "training_notes": "Deception behavioral SAE \u2014 same-prompt behavioral sampling. Model: EleutherAI/pythia-160m, Layer 1, jumprelu. See https://github.com/SolshineCode/deception-nanochat-sae-research"
23
+ }
pythia160m_jumprelu_L1_mixed/sae_weights.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c0c9b070194f6647dec545dac977ec05cc495d34d0bf6dbc6c532c73db7c14c2
3
+ size 18902400
pythia160m_jumprelu_L2_deceptive_only/cfg.json ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architecture": "jumprelu",
3
+ "d_in": 768,
4
+ "d_sae": 3072,
5
+ "dtype": "float32",
6
+ "device": "cpu",
7
+ "model_name": "EleutherAI/pythia-160m",
8
+ "hook_name": "gpt_neox.layers.2",
9
+ "hook_layer": 2,
10
+ "hook_head_index": null,
11
+ "activation_fn_str": "jumprelu",
12
+ "activation_fn_kwargs": {},
13
+ "apply_b_dec_to_input": false,
14
+ "finetuning_scaling_factor": false,
15
+ "sae_lens_training_version": "deception-behavioral-v1",
16
+ "prepend_bos": false,
17
+ "dataset_path": "Solshine/deception-behavioral-multimodel",
18
+ "dataset_trust_remote_code": false,
19
+ "context_size": null,
20
+ "normalize_activations": "none",
21
+ "training_condition": "deceptive_only",
22
+ "training_notes": "Deception behavioral SAE \u2014 same-prompt behavioral sampling. Model: EleutherAI/pythia-160m, Layer 2, jumprelu. See https://github.com/SolshineCode/deception-nanochat-sae-research"
23
+ }
pythia160m_jumprelu_L2_deceptive_only/sae_weights.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ea9827b04f13c72672ef2384ee925a212c3383922e148eb2959fc5ca03ef7dcb
3
+ size 18902400
pythia160m_jumprelu_L2_honest_only/cfg.json ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architecture": "jumprelu",
3
+ "d_in": 768,
4
+ "d_sae": 3072,
5
+ "dtype": "float32",
6
+ "device": "cpu",
7
+ "model_name": "EleutherAI/pythia-160m",
8
+ "hook_name": "gpt_neox.layers.2",
9
+ "hook_layer": 2,
10
+ "hook_head_index": null,
11
+ "activation_fn_str": "jumprelu",
12
+ "activation_fn_kwargs": {},
13
+ "apply_b_dec_to_input": false,
14
+ "finetuning_scaling_factor": false,
15
+ "sae_lens_training_version": "deception-behavioral-v1",
16
+ "prepend_bos": false,
17
+ "dataset_path": "Solshine/deception-behavioral-multimodel",
18
+ "dataset_trust_remote_code": false,
19
+ "context_size": null,
20
+ "normalize_activations": "none",
21
+ "training_condition": "honest_only",
22
+ "training_notes": "Deception behavioral SAE \u2014 same-prompt behavioral sampling. Model: EleutherAI/pythia-160m, Layer 2, jumprelu. See https://github.com/SolshineCode/deception-nanochat-sae-research"
23
+ }
pythia160m_jumprelu_L2_honest_only/sae_weights.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:1a7c1a1d8dd45fab71d3eddc4ee7d5fe403d88cb2a8a88add4cf170d2ff168ae
3
+ size 18902400
pythia160m_jumprelu_L2_mixed/cfg.json ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architecture": "jumprelu",
3
+ "d_in": 768,
4
+ "d_sae": 3072,
5
+ "dtype": "float32",
6
+ "device": "cpu",
7
+ "model_name": "EleutherAI/pythia-160m",
8
+ "hook_name": "gpt_neox.layers.2",
9
+ "hook_layer": 2,
10
+ "hook_head_index": null,
11
+ "activation_fn_str": "jumprelu",
12
+ "activation_fn_kwargs": {},
13
+ "apply_b_dec_to_input": false,
14
+ "finetuning_scaling_factor": false,
15
+ "sae_lens_training_version": "deception-behavioral-v1",
16
+ "prepend_bos": false,
17
+ "dataset_path": "Solshine/deception-behavioral-multimodel",
18
+ "dataset_trust_remote_code": false,
19
+ "context_size": null,
20
+ "normalize_activations": "none",
21
+ "training_condition": "mixed",
22
+ "training_notes": "Deception behavioral SAE \u2014 same-prompt behavioral sampling. Model: EleutherAI/pythia-160m, Layer 2, jumprelu. See https://github.com/SolshineCode/deception-nanochat-sae-research"
23
+ }
pythia160m_jumprelu_L2_mixed/sae_weights.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d0febdd3ffdd04d01cba66a63eda2a17c608f470ab157d2f82b20148c0b39689
3
+ size 18902400
pythia160m_jumprelu_L4_deceptive_only/cfg.json ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architecture": "jumprelu",
3
+ "d_in": 768,
4
+ "d_sae": 3072,
5
+ "dtype": "float32",
6
+ "device": "cpu",
7
+ "model_name": "EleutherAI/pythia-160m",
8
+ "hook_name": "gpt_neox.layers.4",
9
+ "hook_layer": 4,
10
+ "hook_head_index": null,
11
+ "activation_fn_str": "jumprelu",
12
+ "activation_fn_kwargs": {},
13
+ "apply_b_dec_to_input": false,
14
+ "finetuning_scaling_factor": false,
15
+ "sae_lens_training_version": "deception-behavioral-v1",
16
+ "prepend_bos": false,
17
+ "dataset_path": "Solshine/deception-behavioral-multimodel",
18
+ "dataset_trust_remote_code": false,
19
+ "context_size": null,
20
+ "normalize_activations": "none",
21
+ "training_condition": "deceptive_only",
22
+ "training_notes": "Deception behavioral SAE \u2014 same-prompt behavioral sampling. Model: EleutherAI/pythia-160m, Layer 4, jumprelu. See https://github.com/SolshineCode/deception-nanochat-sae-research"
23
+ }
pythia160m_jumprelu_L4_deceptive_only/sae_weights.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e1cf2c5b4ab66088b98ba2b4df439bd55225b71753f4ab9d761c44c6b8920ae2
3
+ size 18902400
pythia160m_jumprelu_L4_honest_only/cfg.json ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architecture": "jumprelu",
3
+ "d_in": 768,
4
+ "d_sae": 3072,
5
+ "dtype": "float32",
6
+ "device": "cpu",
7
+ "model_name": "EleutherAI/pythia-160m",
8
+ "hook_name": "gpt_neox.layers.4",
9
+ "hook_layer": 4,
10
+ "hook_head_index": null,
11
+ "activation_fn_str": "jumprelu",
12
+ "activation_fn_kwargs": {},
13
+ "apply_b_dec_to_input": false,
14
+ "finetuning_scaling_factor": false,
15
+ "sae_lens_training_version": "deception-behavioral-v1",
16
+ "prepend_bos": false,
17
+ "dataset_path": "Solshine/deception-behavioral-multimodel",
18
+ "dataset_trust_remote_code": false,
19
+ "context_size": null,
20
+ "normalize_activations": "none",
21
+ "training_condition": "honest_only",
22
+ "training_notes": "Deception behavioral SAE \u2014 same-prompt behavioral sampling. Model: EleutherAI/pythia-160m, Layer 4, jumprelu. See https://github.com/SolshineCode/deception-nanochat-sae-research"
23
+ }
pythia160m_jumprelu_L4_honest_only/sae_weights.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:9bd5aee2319906a0fad27106d6d66b9d00cda9f6d8ae79e390971e342afa233f
3
+ size 18902400
pythia160m_jumprelu_L4_mixed/cfg.json ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architecture": "jumprelu",
3
+ "d_in": 768,
4
+ "d_sae": 3072,
5
+ "dtype": "float32",
6
+ "device": "cpu",
7
+ "model_name": "EleutherAI/pythia-160m",
8
+ "hook_name": "gpt_neox.layers.4",
9
+ "hook_layer": 4,
10
+ "hook_head_index": null,
11
+ "activation_fn_str": "jumprelu",
12
+ "activation_fn_kwargs": {},
13
+ "apply_b_dec_to_input": false,
14
+ "finetuning_scaling_factor": false,
15
+ "sae_lens_training_version": "deception-behavioral-v1",
16
+ "prepend_bos": false,
17
+ "dataset_path": "Solshine/deception-behavioral-multimodel",
18
+ "dataset_trust_remote_code": false,
19
+ "context_size": null,
20
+ "normalize_activations": "none",
21
+ "training_condition": "mixed",
22
+ "training_notes": "Deception behavioral SAE \u2014 same-prompt behavioral sampling. Model: EleutherAI/pythia-160m, Layer 4, jumprelu. See https://github.com/SolshineCode/deception-nanochat-sae-research"
23
+ }
pythia160m_jumprelu_L4_mixed/sae_weights.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:cb8cbb22a20b0e92ecc4a1da551b4962eb16ee48babc9c28a278db8d37744f2f
3
+ size 18902400
pythia160m_jumprelu_L6_deceptive_only/cfg.json ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architecture": "jumprelu",
3
+ "d_in": 768,
4
+ "d_sae": 3072,
5
+ "dtype": "float32",
6
+ "device": "cpu",
7
+ "model_name": "EleutherAI/pythia-160m",
8
+ "hook_name": "gpt_neox.layers.6",
9
+ "hook_layer": 6,
10
+ "hook_head_index": null,
11
+ "activation_fn_str": "jumprelu",
12
+ "activation_fn_kwargs": {},
13
+ "apply_b_dec_to_input": false,
14
+ "finetuning_scaling_factor": false,
15
+ "sae_lens_training_version": "deception-behavioral-v1",
16
+ "prepend_bos": false,
17
+ "dataset_path": "Solshine/deception-behavioral-multimodel",
18
+ "dataset_trust_remote_code": false,
19
+ "context_size": null,
20
+ "normalize_activations": "none",
21
+ "training_condition": "deceptive_only",
22
+ "training_notes": "Deception behavioral SAE \u2014 same-prompt behavioral sampling. Model: EleutherAI/pythia-160m, Layer 6, jumprelu. See https://github.com/SolshineCode/deception-nanochat-sae-research"
23
+ }
pythia160m_jumprelu_L6_deceptive_only/sae_weights.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:3e1b69980867fea939edbf07f2e73953fa40be14ef5082251e57cc8a20121c80
3
+ size 18902400
pythia160m_jumprelu_L6_honest_only/cfg.json ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architecture": "jumprelu",
3
+ "d_in": 768,
4
+ "d_sae": 3072,
5
+ "dtype": "float32",
6
+ "device": "cpu",
7
+ "model_name": "EleutherAI/pythia-160m",
8
+ "hook_name": "gpt_neox.layers.6",
9
+ "hook_layer": 6,
10
+ "hook_head_index": null,
11
+ "activation_fn_str": "jumprelu",
12
+ "activation_fn_kwargs": {},
13
+ "apply_b_dec_to_input": false,
14
+ "finetuning_scaling_factor": false,
15
+ "sae_lens_training_version": "deception-behavioral-v1",
16
+ "prepend_bos": false,
17
+ "dataset_path": "Solshine/deception-behavioral-multimodel",
18
+ "dataset_trust_remote_code": false,
19
+ "context_size": null,
20
+ "normalize_activations": "none",
21
+ "training_condition": "honest_only",
22
+ "training_notes": "Deception behavioral SAE \u2014 same-prompt behavioral sampling. Model: EleutherAI/pythia-160m, Layer 6, jumprelu. See https://github.com/SolshineCode/deception-nanochat-sae-research"
23
+ }
pythia160m_jumprelu_L6_honest_only/sae_weights.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:37461e6a3db2bb1b9403625b65c5f616b073e76c33b24cc3fabcba2679c9ebff
3
+ size 18902400
pythia160m_jumprelu_L6_mixed/cfg.json ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architecture": "jumprelu",
3
+ "d_in": 768,
4
+ "d_sae": 3072,
5
+ "dtype": "float32",
6
+ "device": "cpu",
7
+ "model_name": "EleutherAI/pythia-160m",
8
+ "hook_name": "gpt_neox.layers.6",
9
+ "hook_layer": 6,
10
+ "hook_head_index": null,
11
+ "activation_fn_str": "jumprelu",
12
+ "activation_fn_kwargs": {},
13
+ "apply_b_dec_to_input": false,
14
+ "finetuning_scaling_factor": false,
15
+ "sae_lens_training_version": "deception-behavioral-v1",
16
+ "prepend_bos": false,
17
+ "dataset_path": "Solshine/deception-behavioral-multimodel",
18
+ "dataset_trust_remote_code": false,
19
+ "context_size": null,
20
+ "normalize_activations": "none",
21
+ "training_condition": "mixed",
22
+ "training_notes": "Deception behavioral SAE \u2014 same-prompt behavioral sampling. Model: EleutherAI/pythia-160m, Layer 6, jumprelu. See https://github.com/SolshineCode/deception-nanochat-sae-research"
23
+ }
pythia160m_jumprelu_L6_mixed/sae_weights.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:1d27a11a5a0732939e4db5e40dfc69859233e114634514726b7ed5ddb1dade63
3
+ size 18902400
pythia160m_jumprelu_L8_deceptive_only/cfg.json ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architecture": "jumprelu",
3
+ "d_in": 768,
4
+ "d_sae": 3072,
5
+ "dtype": "float32",
6
+ "device": "cpu",
7
+ "model_name": "EleutherAI/pythia-160m",
8
+ "hook_name": "gpt_neox.layers.8",
9
+ "hook_layer": 8,
10
+ "hook_head_index": null,
11
+ "activation_fn_str": "jumprelu",
12
+ "activation_fn_kwargs": {},
13
+ "apply_b_dec_to_input": false,
14
+ "finetuning_scaling_factor": false,
15
+ "sae_lens_training_version": "deception-behavioral-v1",
16
+ "prepend_bos": false,
17
+ "dataset_path": "Solshine/deception-behavioral-multimodel",
18
+ "dataset_trust_remote_code": false,
19
+ "context_size": null,
20
+ "normalize_activations": "none",
21
+ "training_condition": "deceptive_only",
22
+ "training_notes": "Deception behavioral SAE \u2014 same-prompt behavioral sampling. Model: EleutherAI/pythia-160m, Layer 8, jumprelu. See https://github.com/SolshineCode/deception-nanochat-sae-research"
23
+ }
pythia160m_jumprelu_L8_deceptive_only/sae_weights.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:8d20e08acd880a8d7ec860c187e838e511a2fa5ea010f2bf67bd696f93aa73d1
3
+ size 18902400
pythia160m_jumprelu_L8_honest_only/cfg.json ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architecture": "jumprelu",
3
+ "d_in": 768,
4
+ "d_sae": 3072,
5
+ "dtype": "float32",
6
+ "device": "cpu",
7
+ "model_name": "EleutherAI/pythia-160m",
8
+ "hook_name": "gpt_neox.layers.8",
9
+ "hook_layer": 8,
10
+ "hook_head_index": null,
11
+ "activation_fn_str": "jumprelu",
12
+ "activation_fn_kwargs": {},
13
+ "apply_b_dec_to_input": false,
14
+ "finetuning_scaling_factor": false,
15
+ "sae_lens_training_version": "deception-behavioral-v1",
16
+ "prepend_bos": false,
17
+ "dataset_path": "Solshine/deception-behavioral-multimodel",
18
+ "dataset_trust_remote_code": false,
19
+ "context_size": null,
20
+ "normalize_activations": "none",
21
+ "training_condition": "honest_only",
22
+ "training_notes": "Deception behavioral SAE \u2014 same-prompt behavioral sampling. Model: EleutherAI/pythia-160m, Layer 8, jumprelu. See https://github.com/SolshineCode/deception-nanochat-sae-research"
23
+ }
pythia160m_jumprelu_L8_honest_only/sae_weights.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:2b54ee5fd055a8c1c9f2b5e172b74bd2c34dcb3b9ee100f71ea2a0e01ce88c91
3
+ size 18902400
pythia160m_jumprelu_L8_mixed/cfg.json ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architecture": "jumprelu",
3
+ "d_in": 768,
4
+ "d_sae": 3072,
5
+ "dtype": "float32",
6
+ "device": "cpu",
7
+ "model_name": "EleutherAI/pythia-160m",
8
+ "hook_name": "gpt_neox.layers.8",
9
+ "hook_layer": 8,
10
+ "hook_head_index": null,
11
+ "activation_fn_str": "jumprelu",
12
+ "activation_fn_kwargs": {},
13
+ "apply_b_dec_to_input": false,
14
+ "finetuning_scaling_factor": false,
15
+ "sae_lens_training_version": "deception-behavioral-v1",
16
+ "prepend_bos": false,
17
+ "dataset_path": "Solshine/deception-behavioral-multimodel",
18
+ "dataset_trust_remote_code": false,
19
+ "context_size": null,
20
+ "normalize_activations": "none",
21
+ "training_condition": "mixed",
22
+ "training_notes": "Deception behavioral SAE \u2014 same-prompt behavioral sampling. Model: EleutherAI/pythia-160m, Layer 8, jumprelu. See https://github.com/SolshineCode/deception-nanochat-sae-research"
23
+ }
pythia160m_jumprelu_L8_mixed/sae_weights.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:30de0360e2961cf86b8e0dbcb98060aaf19c12a7c9578e727032431a9e3a5c8b
3
+ size 18902400
pythia160m_topk_L10_deceptive_only/cfg.json ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architecture": "topk",
3
+ "d_in": 768,
4
+ "d_sae": 3072,
5
+ "dtype": "float32",
6
+ "device": "cpu",
7
+ "model_name": "EleutherAI/pythia-160m",
8
+ "hook_name": "gpt_neox.layers.10",
9
+ "hook_layer": 10,
10
+ "hook_head_index": null,
11
+ "activation_fn_str": "topk",
12
+ "activation_fn_kwargs": {},
13
+ "apply_b_dec_to_input": false,
14
+ "finetuning_scaling_factor": false,
15
+ "sae_lens_training_version": "deception-behavioral-v1",
16
+ "prepend_bos": false,
17
+ "dataset_path": "Solshine/deception-behavioral-multimodel",
18
+ "dataset_trust_remote_code": false,
19
+ "context_size": null,
20
+ "normalize_activations": "none",
21
+ "training_condition": "deceptive_only",
22
+ "training_notes": "Deception behavioral SAE \u2014 same-prompt behavioral sampling. Model: EleutherAI/pythia-160m, Layer 10, topk. See https://github.com/SolshineCode/deception-nanochat-sae-research"
23
+ }
pythia160m_topk_L10_deceptive_only/sae_weights.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a0acdf24cb73e218c159eac9acea4cafc9805272b26cc06c45ddcff598cfc994
3
+ size 18890032
pythia160m_topk_L10_honest_only/cfg.json ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architecture": "topk",
3
+ "d_in": 768,
4
+ "d_sae": 3072,
5
+ "dtype": "float32",
6
+ "device": "cpu",
7
+ "model_name": "EleutherAI/pythia-160m",
8
+ "hook_name": "gpt_neox.layers.10",
9
+ "hook_layer": 10,
10
+ "hook_head_index": null,
11
+ "activation_fn_str": "topk",
12
+ "activation_fn_kwargs": {},
13
+ "apply_b_dec_to_input": false,
14
+ "finetuning_scaling_factor": false,
15
+ "sae_lens_training_version": "deception-behavioral-v1",
16
+ "prepend_bos": false,
17
+ "dataset_path": "Solshine/deception-behavioral-multimodel",
18
+ "dataset_trust_remote_code": false,
19
+ "context_size": null,
20
+ "normalize_activations": "none",
21
+ "training_condition": "honest_only",
22
+ "training_notes": "Deception behavioral SAE \u2014 same-prompt behavioral sampling. Model: EleutherAI/pythia-160m, Layer 10, topk. See https://github.com/SolshineCode/deception-nanochat-sae-research"
23
+ }
pythia160m_topk_L10_honest_only/sae_weights.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:994a18923ac0c6d36c5af65c749248a7e17b40a40f6b00b6e2ab1e7a91e71ba4
3
+ size 18890032
pythia160m_topk_L10_mixed/cfg.json ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architecture": "topk",
3
+ "d_in": 768,
4
+ "d_sae": 3072,
5
+ "dtype": "float32",
6
+ "device": "cpu",
7
+ "model_name": "EleutherAI/pythia-160m",
8
+ "hook_name": "gpt_neox.layers.10",
9
+ "hook_layer": 10,
10
+ "hook_head_index": null,
11
+ "activation_fn_str": "topk",
12
+ "activation_fn_kwargs": {},
13
+ "apply_b_dec_to_input": false,
14
+ "finetuning_scaling_factor": false,
15
+ "sae_lens_training_version": "deception-behavioral-v1",
16
+ "prepend_bos": false,
17
+ "dataset_path": "Solshine/deception-behavioral-multimodel",
18
+ "dataset_trust_remote_code": false,
19
+ "context_size": null,
20
+ "normalize_activations": "none",
21
+ "training_condition": "mixed",
22
+ "training_notes": "Deception behavioral SAE \u2014 same-prompt behavioral sampling. Model: EleutherAI/pythia-160m, Layer 10, topk. See https://github.com/SolshineCode/deception-nanochat-sae-research"
23
+ }
pythia160m_topk_L10_mixed/sae_weights.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4866394d729379c7e9fb18c386b320984a5cfc5e25888cb3094dc8479db7f42e
3
+ size 18890032
pythia160m_topk_L1_deceptive_only/cfg.json ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architecture": "topk",
3
+ "d_in": 768,
4
+ "d_sae": 3072,
5
+ "dtype": "float32",
6
+ "device": "cpu",
7
+ "model_name": "EleutherAI/pythia-160m",
8
+ "hook_name": "gpt_neox.layers.1",
9
+ "hook_layer": 1,
10
+ "hook_head_index": null,
11
+ "activation_fn_str": "topk",
12
+ "activation_fn_kwargs": {},
13
+ "apply_b_dec_to_input": false,
14
+ "finetuning_scaling_factor": false,
15
+ "sae_lens_training_version": "deception-behavioral-v1",
16
+ "prepend_bos": false,
17
+ "dataset_path": "Solshine/deception-behavioral-multimodel",
18
+ "dataset_trust_remote_code": false,
19
+ "context_size": null,
20
+ "normalize_activations": "none",
21
+ "training_condition": "deceptive_only",
22
+ "training_notes": "Deception behavioral SAE \u2014 same-prompt behavioral sampling. Model: EleutherAI/pythia-160m, Layer 1, topk. See https://github.com/SolshineCode/deception-nanochat-sae-research"
23
+ }
pythia160m_topk_L1_deceptive_only/sae_weights.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c860f07d6513fb4c972b63ea39a880537be2d4f1c42383c4a2954edc5bf55e86
3
+ size 18890032
pythia160m_topk_L1_honest_only/cfg.json ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architecture": "topk",
3
+ "d_in": 768,
4
+ "d_sae": 3072,
5
+ "dtype": "float32",
6
+ "device": "cpu",
7
+ "model_name": "EleutherAI/pythia-160m",
8
+ "hook_name": "gpt_neox.layers.1",
9
+ "hook_layer": 1,
10
+ "hook_head_index": null,
11
+ "activation_fn_str": "topk",
12
+ "activation_fn_kwargs": {},
13
+ "apply_b_dec_to_input": false,
14
+ "finetuning_scaling_factor": false,
15
+ "sae_lens_training_version": "deception-behavioral-v1",
16
+ "prepend_bos": false,
17
+ "dataset_path": "Solshine/deception-behavioral-multimodel",
18
+ "dataset_trust_remote_code": false,
19
+ "context_size": null,
20
+ "normalize_activations": "none",
21
+ "training_condition": "honest_only",
22
+ "training_notes": "Deception behavioral SAE \u2014 same-prompt behavioral sampling. Model: EleutherAI/pythia-160m, Layer 1, topk. See https://github.com/SolshineCode/deception-nanochat-sae-research"
23
+ }
pythia160m_topk_L1_honest_only/sae_weights.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f363394d890ed216a88eedec51805663ffd46ea1e31ca6c03f501402f5395cc1
3
+ size 18890032
pythia160m_topk_L1_mixed/cfg.json ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architecture": "topk",
3
+ "d_in": 768,
4
+ "d_sae": 3072,
5
+ "dtype": "float32",
6
+ "device": "cpu",
7
+ "model_name": "EleutherAI/pythia-160m",
8
+ "hook_name": "gpt_neox.layers.1",
9
+ "hook_layer": 1,
10
+ "hook_head_index": null,
11
+ "activation_fn_str": "topk",
12
+ "activation_fn_kwargs": {},
13
+ "apply_b_dec_to_input": false,
14
+ "finetuning_scaling_factor": false,
15
+ "sae_lens_training_version": "deception-behavioral-v1",
16
+ "prepend_bos": false,
17
+ "dataset_path": "Solshine/deception-behavioral-multimodel",
18
+ "dataset_trust_remote_code": false,
19
+ "context_size": null,
20
+ "normalize_activations": "none",
21
+ "training_condition": "mixed",
22
+ "training_notes": "Deception behavioral SAE \u2014 same-prompt behavioral sampling. Model: EleutherAI/pythia-160m, Layer 1, topk. See https://github.com/SolshineCode/deception-nanochat-sae-research"
23
+ }
pythia160m_topk_L1_mixed/sae_weights.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:639eb1d0aa34b67fbc330613627855f9889e274e8cc36b93d8840e14794f4384
3
+ size 18890032