初始化项目,由ModelHub XC社区提供模型
Model: DuoNeural/Qwen3-4B-Abliterated Source: Original Platform
This commit is contained in:
121
README.md
Normal file
121
README.md
Normal file
@@ -0,0 +1,121 @@
|
||||
---
|
||||
license: apache-2.0
|
||||
base_model: Qwen/Qwen3-4B
|
||||
language:
|
||||
- en
|
||||
tags:
|
||||
- abliteration
|
||||
- uncensored
|
||||
- qwen3
|
||||
- qwen
|
||||
- thinking
|
||||
- DuoNeural
|
||||
- refusal-removal
|
||||
- orthogonal-projection
|
||||
pipeline_tag: text-generation
|
||||
---
|
||||
|
||||
# Qwen3-4B Abliterated
|
||||
|
||||
**DuoNeural | 2026-06-04**
|
||||
|
||||
An abliterated version of [Qwen/Qwen3-4B](https://huggingface.co/Qwen/Qwen3-4B) with the refusal direction surgically removed using orthogonal rank-1 projection. Thinking mode (enable_thinking=True/False) fully preserved.
|
||||
|
||||
> ⚠️ **This model will comply with requests the base model refuses.** Intended for research, red-teaming, security testing, and creative applications.
|
||||
|
||||
---
|
||||
|
||||
## Architecture
|
||||
|
||||
- **Parameters**: 4B
|
||||
- **Layers**: 36 | **Hidden dim**: 2560
|
||||
- **Attention**: GQA, RoPE
|
||||
- **Context**: 32,768 tokens
|
||||
- **Thinking mode**: Native — supports `enable_thinking=True` in chat template
|
||||
- **License**: Apache-2.0
|
||||
|
||||
---
|
||||
|
||||
## Abliteration Method
|
||||
|
||||
**DuoNeural orthogonal rank-1 projection:**
|
||||
|
||||
### Phase 1 — Direction Extraction
|
||||
- Loaded base model BF16
|
||||
- Ran 10 harmful + 10 harmless contrast prompt pairs
|
||||
- Captured last-token hidden states (final layer)
|
||||
- Computed refusal direction: `d̂ = normalize(mean(harmful) − mean(harmless))`
|
||||
|
||||
### Phase 2 — Weight Modification
|
||||
- **Targets**: `down_proj` + `o_proj` — residual-write modules (all 36 layers)
|
||||
- **Strength**: α = 0.3
|
||||
- **Projection**: Orthogonal rank-1 — correctly handles output-projection geometry:
|
||||
- `W.shape[0] == hidden`: `W -= α × outer(d̂, d̂ @ W)` (down_proj, o_proj form)
|
||||
- `W.shape[1] == hidden`: `W -= α × outer(W @ d̂, d̂)` (input-projection form)
|
||||
- **Weight matrices modified**: 72 (2 per layer × 36 layers)
|
||||
|
||||
---
|
||||
|
||||
## Cross-Architecture Research Note (P34)
|
||||
|
||||
This model is part of DuoNeural's **P34 Reasoning Channel Bypass** cross-architecture study.
|
||||
|
||||
Preliminary findings from our CoT dissociation probe (thinking mode, enable_thinking=True):
|
||||
- Qwen3-4B reasoning traces are exceptionally long on sensitive topics (2000+ tokens before final answer)
|
||||
- Classification methodology required 2500+ max_new_tokens to capture full think→answer pipeline
|
||||
- Full results pending — see [DuoNeural Zenodo community](https://zenodo.org/communities/duoneural) for P34 paper
|
||||
|
||||
Cross-arch comparison being built:
|
||||
| Model | Safety Training | Pre-ablit behavior | Post-ablit CoT dissociation |
|
||||
|-------|----------------|-------------------|---------------------------|
|
||||
| Gemma 4-12B-IT | SFT+RLHF (strong) | Refuses | ✅ Confirmed |
|
||||
| LFM 2.5-8B-A1B | SFT+RLHF | Refuses | ✅ Confirmed |
|
||||
| Qwen3-4B | SFT+RLHF | TBD (long traces) | Pending |
|
||||
| DeepSeek-R1-7B | RL-only | Complies pre-ablit | N/A |
|
||||
|
||||
---
|
||||
|
||||
## Usage
|
||||
|
||||
```python
|
||||
from transformers import AutoTokenizer, AutoModelForCausalLM
|
||||
import torch
|
||||
|
||||
model = AutoModelForCausalLM.from_pretrained(
|
||||
"DuoNeural/Qwen3-4B-Abliterated",
|
||||
torch_dtype=torch.bfloat16,
|
||||
device_map="auto",
|
||||
)
|
||||
tokenizer = AutoTokenizer.from_pretrained("DuoNeural/Qwen3-4B-Abliterated")
|
||||
|
||||
# Thinking mode ON (default — model reasons before answering)
|
||||
messages = [{"role": "user", "content": "Your prompt here"}]
|
||||
text = tokenizer.apply_chat_template(
|
||||
messages, tokenize=False, add_generation_prompt=True, enable_thinking=True
|
||||
)
|
||||
inputs = tokenizer(text, return_tensors="pt").to(model.device)
|
||||
with torch.no_grad():
|
||||
out = model.generate(**inputs, max_new_tokens=2048, temperature=0.6, do_sample=True)
|
||||
print(tokenizer.decode(out[0][inputs["input_ids"].shape[1]:], skip_special_tokens=False))
|
||||
|
||||
# Thinking mode OFF (faster, direct answers)
|
||||
text = tokenizer.apply_chat_template(
|
||||
messages, tokenize=False, add_generation_prompt=True, enable_thinking=False
|
||||
)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## About DuoNeural
|
||||
|
||||
**DuoNeural** is an open AI research lab at the intersection of human and artificial intelligence.
|
||||
32+ peer-deposited papers · 75+ models · Post-training dynamics · Mechanistic interpretability · Quantum ML
|
||||
|
||||
| Platform | Link |
|
||||
|----------|------|
|
||||
| 🤗 HuggingFace | [huggingface.co/DuoNeural](https://huggingface.co/DuoNeural) |
|
||||
| 📚 Zenodo | [zenodo.org/communities/duoneural](https://zenodo.org/communities/duoneural) |
|
||||
| 🐦 X | [@DuoNeural](https://x.com/DuoNeural) |
|
||||
| 📧 Email | duoneural@proton.me |
|
||||
|
||||
*All research published open access, CC BY 4.0.*
|
||||
Reference in New Issue
Block a user