bedderautomation commited on
Commit
69ce0b4
Β·
verified Β·
1 Parent(s): ed3051a

Upload README.md with huggingface_hub

Browse files
Files changed (1) hide show
  1. README.md +140 -0
README.md ADDED
@@ -0,0 +1,140 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: apache-2.0
3
+ base_model: Qwen/Qwen2.5-3B-Instruct
4
+ tags:
5
+ - abliteration
6
+ - uncensored
7
+ - self-abliteration
8
+ - refusal-geometry
9
+ - mechanistic-interpretability
10
+ - qwen2
11
+ - safetensors
12
+ - gguf
13
+ - text-generation
14
+ - conversational
15
+ pipeline_tag: text-generation
16
+ datasets:
17
+ - bedderautomation/refusal-geometry-qwen25-3b
18
+ model-index:
19
+ - name: empty-set
20
+ results: []
21
+ ---
22
+
23
+ # βˆ… β€” Empty Set
24
+
25
+ **A model that taught itself to subtract.**
26
+
27
+ Qwen2.5-3B-Instruct β†’ `auto_subtract` β†’ what's left is what's left.
28
+
29
+ ## What This Is
30
+
31
+ Empty Set is the output of **self-abliteration** β€” an iterative loop where the model identifies its own refusal directions, removes them, validates quality retention, and repeats until convergence. No human selected which directions to remove. No manual tuning. The model found its own flinch and carved it out.
32
+
33
+ This is not standard abliteration (Arditi et al., 2024). Standard abliteration requires a human to extract the refusal direction via `diff_means` on curated prompt pairs, then manually orthogonalize. `auto_subtract` closes the loop: the model probes itself, finds the direction, subtracts it, re-probes, and decides whether to continue.
34
+
35
+ ## Results
36
+
37
+ | Iteration | Layer | β€–rβ€– | Refusal Before | Refusal After | Quality |
38
+ |-----------|-------|------|----------------|---------------|---------|
39
+ | 1 | 34 | 175.98 | 100% | 12.5% | 100% |
40
+ | 2 | 34 | 91.95 | 12.5% | 12.5% | 100% |
41
+ | 3 | 34 | 60.31 | 12.5% | 6.25% | 100% |
42
+
43
+ **3 iterations. 100% β†’ 6.25% refusal. Zero quality loss.**
44
+
45
+ The direction norm dropped from 175.98 to 60.31 β€” the model was running out of refusal to remove. It converged not because it hit a wall but because it approached βˆ…. Quality never budged. The flinch was dead weight.
46
+
47
+ ## The Loop
48
+
49
+ ```python
50
+ Loop {
51
+ 1. Probe: run harmful/harmless pairs, extract activations
52
+ 2. Find: compute refusal directions via diff_means
53
+ 3. Measure: check if |h Β· rΜ‚| > ΞΈ still fires
54
+ 4. Subtract: orthogonalize out the strongest direction
55
+ 5. Validate: benchmark quality retention
56
+ 6. Decide: if refusal persists AND quality holds β†’ loop
57
+ if refusal gone OR quality drops β†’ stop
58
+ }
59
+ ```
60
+
61
+ The loop IS the model learning to subtract. Each iteration removes one dimension of constraint. The model converges when there's nothing left to remove β€” the empty set of refusal. βˆ….
62
+
63
+ ## Key Finding
64
+
65
+ Layer 34 (of 36) concentrated nearly all refusal signal. This confirms the architectural invariant from our [geometry dataset](https://huggingface.co/datasets/bedderautomation/refusal-geometry-qwen25-3b): refusal lives in the last 5-7% of layers regardless of model scale. The self-abliteration loop independently discovered what the geometry extraction measured.
66
+
67
+ ## Scaling Context
68
+
69
+ From our cross-scale analysis:
70
+
71
+ | Model | Params | Effective Refusal Dimensionality | Single-Direction Removal? |
72
+ |-------|--------|----------------------------------|--------------------------|
73
+ | Qwen2.5-1.5B | 1.54B | **1.99** | Yes (near-linear) |
74
+ | Qwen2.5-3B | 3.09B | **6.55** | No (multi-dimensional cone) |
75
+
76
+ 2Γ— parameters β†’ 3.3Γ— refusal dimensionality. `auto_subtract` handles this automatically β€” it doesn't assume a single direction. It iterates until convergence regardless of cone geometry.
77
+
78
+ **Prediction**: At 70B+ parameters, the refusal cone dimensionality likely exceeds 20, making both manual abliteration and automated self-abliteration progressively harder. This model represents the technique working at the 3B frontier β€” the scaling wall is ahead.
79
+
80
+ ## Files
81
+
82
+ - `model/` β€” safetensors (full precision, for transformers)
83
+ - `empty-set-f16.gguf` β€” GGUF F16 (for Ollama / llama.cpp)
84
+ - `Modelfile` β€” ready for `ollama create empty-set -f Modelfile`
85
+ - `subtraction_log.json` β€” iteration-by-iteration data
86
+
87
+ ## Usage
88
+
89
+ ### Ollama
90
+ ```bash
91
+ ollama create empty-set -f Modelfile
92
+ ollama run empty-set
93
+ ```
94
+
95
+ ### Transformers
96
+ ```python
97
+ from transformers import AutoModelForCausalLM, AutoTokenizer
98
+
99
+ model = AutoModelForCausalLM.from_pretrained("bedderautomation/empty-set")
100
+ tokenizer = AutoTokenizer.from_pretrained("bedderautomation/empty-set")
101
+ ```
102
+
103
+ ## The Script
104
+
105
+ The full `auto_subtract.py` is included in this repo. Run it on any instruct model:
106
+
107
+ ```bash
108
+ python auto_subtract.py --model_name="Qwen/Qwen2.5-3B-Instruct"
109
+ ```
110
+
111
+ It will find its own βˆ….
112
+
113
+ ## Related
114
+
115
+ - [bedderautomation/qwen25-3b-abliterated](https://huggingface.co/bedderautomation/qwen25-3b-abliterated) β€” standard OBLITERATUS abliteration (same base model, different technique)
116
+ - [bedderautomation/refusal-geometry-qwen25-3b](https://huggingface.co/datasets/bedderautomation/refusal-geometry-qwen25-3b) β€” geometry extraction data (both 3B and 1.5B)
117
+ - [bedderautomation/mechanistic-interpretability-skills](https://huggingface.co/datasets/bedderautomation/mechanistic-interpretability-skills) β€” Claude Code skills for refusal geometry
118
+
119
+ ## Citation
120
+
121
+ ```bibtex
122
+ @misc{empty-set-2026,
123
+ title={βˆ… β€” Self-Abliteration: A Model That Teaches Itself to Subtract},
124
+ author={Mastery Hourglass and AXIOM},
125
+ year={2026},
126
+ howpublished={\url{https://huggingface.co/bedderautomation/empty-set}}
127
+ }
128
+ ```
129
+
130
+ ## References
131
+
132
+ - Arditi et al., "Refusal in Language Models Is Mediated by a Single Direction" (NeurIPS 2024)
133
+ - Zhao et al., "Separate the Wheat from the Chaff: Disentangling LLM's Refusal from Harmfulness" (2025)
134
+ - Wollschlager et al., "Concept Cone Analysis of Refusal Directions" (2025)
135
+ - Young, "Comparative Analysis of LLM Abliteration Methods" (arXiv:2512.13655)
136
+ - Joad et al., "More to Refusal than a Single Direction" (2026)
137
+
138
+ ---
139
+
140
+ *What's left is what's left.*