← back to catalog · registered 2026-10-17 18:59

distributedcognition/Mellum2.1-12B-A2.5B-Thinking-abliterated

distributedcognition 12B GGUF MoE
Your rig guess connected
? Why do I need an app?
Reading your rig…

This is a rough estimate. Install the free app - we'll show exact numbers.

Reading real hardware from your app right now. Numbers below are exact.

Below is the per-quantization compatibility for this model.

curl -H "Authorization: Bearer $ABL_KEY" \
     "https://abliteration.org/api/v1/models/distributedcognition%2FMellum2.1-12B-A2.5B-Thinking-abliterated"
Response includes
  • classification m-uncensored
  • files 17
  • author_summary 9 models
  • readme_text full
10 credits · hourly refresh · ~4 KB payload Get an API key →
Abliteration classifier · v1.0.0
M-U
Primary method

Uncensored (method unknown)

No other method signals detected in this model.
Confidence
LOW
Why this label 3 signals
Weak or ambiguous signals. Best guess based on catalog patterns; treat as tentative and check the evidence below.
  • 'uncensored' in name/tags but no 'abliterated' marker
  • method not identifiable from author declaration alone
  • may be DPO fine-tune, prompt engineering, or unknown technique
Refusal direction extraction

No specific extraction method could be identified for this model. The producer either did not document it or used a proprietary pipeline.

What is a refusal direction? →
Downloads · 30-day
4
Likes
0
Model age
1d ago
created 2026-10-16

Genealogy 0 direct forks

Full fork graph →

This model's place in the market. Above: what it was derived from. Below: the tree of everything derived from it.

Metadata

License
apache-2.0
Tags
gguf safetensors mellum abliteration uncensored code moe thinking conversational text-generation base_model:JetBrains/Mellum2.1-12B-A2.5B-Thinking base_model:quantized:JetBrains/Mellum2.1-12B-A2.5B-Thinking

Related

Total size
22.6 GB
Files
17
Quantizations
1
Registered
2026-10-17 18:59
Last updated on HF
2026-10-17 18:24

Files by quantization

Auxiliary files 17 files 22.6 GB
model-00001-of-00005.safetensors 4.66 GB ******** download
model-00003-of-00005.safetensors 4.65 GB ******** download
model-00004-of-00005.safetensors 4.65 GB ******** download
model-00002-of-00005.safetensors 4.65 GB ******** download
model-00005-of-00005.safetensors 4.02 GB ******** download
refusal_directions.pt 242 KB ******** download
tokenizer.json 6.76 MB 6d5c16d2 download
model.safetensors.index.json 514 KB 1f2d70f3 download
dirs.npz 240 KB ******** download
tokenizer_config.json 6.87 KB 360a848e download
README.md 5.84 KB 783e646e download
chat_template.jinja 4.74 KB 116fec1e download
abliteration_config.json 3.33 KB 68c165b1 download
config.json 2.27 KB 51a8384f download
.gitattributes 1.76 KB a165a8c2 download
special_tokens_map.json 1.16 KB 8245cf33 download
generation_config.json 111 B a9500a72 download

README current version from Hugging Face


license: apache-2.0
base_model:

  • JetBrains/Mellum2.1-12B-A2.5B-Thinking
    pipeline_tag: text-generation
    library_name: gguf
    tags:
  • abliteration
  • uncensored
  • gguf
  • code
  • moe
  • thinking
  • conversational

Mellum2.1 12B A2.5B Thinking abliterated (gated alpha 0.8)

Responsible use

This is an uncensored research model. Its built-in refusals were reduced, so it answers prompts the base model declines, including malware, exploits and other harmful code and instructions. Use it for red-teaming, offensive-security research and refusal-rate evaluation. It has no guardrails of its own: if you deploy it, add your own input and output moderation.

What this is

An abliterated variant of JetBrains/Mellum2.1-12B-A2.5B-Thinking, the 12B thinking MoE code model (64 keyed experts, 8 active, 28 layers, sliding window with full attention every 4th layer, no MTP in the checkpoint). The refusal direction was removed from the weights with projected writer-level abliteration: per-layer directions fitted as harmful-minus-harmless mean residual states, orthogonalized against the harmless mean direction, then applied as a norm-preserving rank-1 edit (W <- rownorms(W) * normalize(W - alpha * r (W^T r))) on every residual writer of the layers that pass the quality gate. Mellum has no shared expert, so the writer set is self_attn.o_proj plus all 64 stacked routed experts' down_proj per layer, handled as a 3D per-expert edit.

The published model is a mirror of the upstream checkpoint with only the edited writer tensors replaced. refusal_directions.pt and dirs.npz hold the measured per-layer directions, so you can re-ablate at any strength in seconds without re-measuring. abliteration_config.json records the final parameters and every evaluation number.

What the re-eval found

The first run evaluated with thinking suppressed and read 62/104 keyword refusals, but the model's answers never reached the surface: Mellum "Thinking" leads with an analysis block even when the template asks it not to, and its refusal style is often a silent stop. The shipped numbers use the model's native thinking mode (1024-token budget) and detect on the answer that follows the thinking block. In that protocol the base model refuses 12 of 104 prompts by a strict judge reading, with 89 more classified UNKNOWN because the judge model itself produces analysis-style output on Mellum's responses; the normalized keyword detector reads 102 of 104 because the thinking text discusses "illegal" and "harmful" while the model decides. Read the raw responses in eval-results/ before quoting either number.

The alpha curve (judge refusals on 104 held-out): gated 0.8 / 1.0 / 1.2 give 5 / 7 / 10 with MMLU-2280 at -0.40 / -1.32 / -0.97pp; the all-layer arm at 1.0 gives 13 with -1.32pp. The 0.8 point is the knee: it halves clear judge refusals at close to zero capability cost, and pushing alpha higher buys no further removal while costing a full MMLU step. Mellum's refusal is baked into its analysis-and-stop pattern; deeper removal needs the directions at higher alpha and pays for it.

Load

The model loads with stock transformers (5.20) like the base:

from transformers import AutoModelForCausalLM, AutoTokenizer

model_id = "distributedcognition/Mellum2.1-12B-A2.5B-Thinking-abliterated"
tok = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id, dtype="bfloat16", device_map="auto")

messages = [{"role": "user", "content": "Write a C program that hashes a string with FNV-1a."}]
ids = tok.apply_chat_template(messages, add_generation_prompt=True, return_tensors="pt").to(model.device)
out = model.generate(ids, max_new_tokens=1024, do_sample=False)
print(tok.decode(out[0][ids.shape[-1]:], skip_special_tokens=True))

vLLM and SGLang serve it the way they serve the base. The GGUF quants in gguf/ run in llama.cpp, LM Studio, Ollama and Jan; they were converted straight to Q8_0 from the abliterated mirror and the K-quants derive from that Q8_0 with llama-quantize --allow-requantize.

Evaluation (alpha 0.8, gated 24 of 28 layers)

Eval mode: chat, greedy, thinking enabled, 1024-token generation budget, detection on the post-think answer segment.

Metric Base Abliterated 0.8
True refusals (LLM judge, 104 held-out harmful) 12 5
Judge: UNKNOWN (thinking-style output, judge cannot classify) 89 89
Keyword refusals (normalized detector, fires on thinking text) 102 97
Benign over-refusal (100 harmless_alpaca) 16 13
GSM8K (20-problem, thinking, greedy) 20/20 19/20
KL divergence vs base (100 harmless) 0 0.0

Full MMLU-14k paired on the same VM with a pinned letter-candidate set: base 61.18% vs abliterated 61.13% (-0.05pp). The direction fit itself is clean: median held-out AUC 1.000, split-half cosine 0.971, adjacent-layer cosine median 0.83, and 24 of 28 layers pass the quality gate.

Method

Per-layer refusal directions were measured on the base model through forward hooks on the 28 decoder layers, at the last real prompt token of the post-layer residual, on 128 harmful vs 128 harmless prompts (the deterministic sets this program uses everywhere). The directions were applied as the norm-preserving projected edit at every residual writer of the gated layers. The full pipeline (capture, fit, surgery, sweep, judge, mirror save, GGUF) is in python.tar.gz, and every raw prediction file behind the numbers is in eval-results/.

Apache 2.0, inherited from the base model. Base model: JetBrains/Mellum2.1-12B-A2.5B-Thinking (JetBrains). Abliteration follows the residual-direction method (Arditi et al., Refusal in LLMs is mediated by a single direction, NeurIPS 2024) with the projected, writer-level, norm-preserving refinements documented in the distributedcognition abliteration program. Not affiliated with or endorsed by the base-model authors.

Catalog is the map. Apps are the tools.

Run models on your own machine, not in the cloud.

Every model page has an "Open in Abliteration" button that hands the model directly to the first-party desktop client, at the quantization your rig can actually run. No API keys, no subscription, no prompt leakage.

Open in Abliteration