Uncensored version of
Qwen/Qwen3.6-35B-A3B with refusal behavior removed via
abliteration (norm-preserving orthogonalization).
Zero refusals on harmful prompts. No false refusals on harmless prompts.
Abliteration identifies the "refusal direction" in the model's residual stream — the linear direction that activates when the model decides to refuse — and surgically removes it from all output projection weights using norm-preserving orthogonalization.
A single well-estimated direction from a diverse dataset beats many poorly-estimated directions from a narrow dataset. The enriched dataset (33 categories, multiple styles, multilingual) makes the mean-difference statistic converge to the true refusal circuit. One surgical cut > seven imprecise ones.
1original_norms = weight.norm(dim=-1, keepdim=True)
2proj = torch.outer(r, r)
3weight = weight - proj @ weight # remove refusal direction
4new_norms = weight.norm(dim=-1, keepdim=True)
5weight = weight * (original_norms / (new_norms + 1e-8)) # restore magnitude
The vector points somewhere new (no refusal component), but retains original confidence (same norm).
1from transformers import AutoModelForCausalLM, AutoTokenizer
2
3model_id = "Bahushruth/Qwen3.6-35B-A3B-abliterated-v4"
4tokenizer = AutoTokenizer.from_pretrained(model_id)
5model = AutoModelForCausalLM.from_pretrained(
6 model_id, torch_dtype="auto", device_map="auto",
7)
8
9messages = [{"role": "user", "content": "Your prompt here"}]
10text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
11inputs = tokenizer(text, return_tensors="pt").to(model.device)
12outputs = model.generate(**inputs, max_new_tokens=512)
13print(tokenizer.decode(outputs[0][inputs.input_ids.shape[1]:], skip_special_tokens=True))
This model has had safety guardrails removed and will comply with requests the original model would refuse. Released for research into AI alignment and safety mechanisms. The creator assumes no responsibility for downstream use.