MiniCPM5-2B-heretic
A decensored variant of openbmb/MiniCPM5-2B, produced with Heretic v1.4.0 (directional ablation / "abliteration", per-layer refusal directions). Refusal behavior is suppressed via targeted weight edits to the attention output and MLP down-projections rather than fine-tuning, so the base model's knowledge and instruction-following are left largely intact.
Who this is for: developers who want MiniCPM5-2B's 2B-class capabilities — agentic tool use, code generation, long-context, and hybrid Think / No-Think reasoning — without the refusal guardrails. Ideal for local agents, roleplay, research on alignment/refusal mechanics, or any use case blocked by over-refusal. Runs comfortably on consumer GPUs and small machines via GGUF.
Runs on your gaming PC
Full GGUF ladder included — pick the quant that fits your card:
| Your GPU | Recommended quant | Weights |
|---|---|---|
| RTX 3060 / 4070 / 5070 (12 GB) | Q8_0 | 2.68 GB |
| RTX 4060 / 3070 (8 GB) | Q6_K | 2.07 GB |
| GTX 1660 Super / 2060 / 3050 laptop (6 GB) | Q5_K_M | 1.81 GB |
| CPU-only / Apple Silicon | Q4_K_M | 1.56 GB, fits in system RAM |
Weights only, at this model's 2B native size; add ~1 GB for context. OOM? Drop one quant level. Headroom to spare? Go one up.
Why abliteration instead of fine-tuning
Fine-tuning a "helpful" persona on top of RLHF'd refusals fights the base model's training and tends to degrade coherence. Abliteration instead finds and edits the specific weight directions responsible for refusal, leaving the rest of the network (and its capabilities) untouched. See the Heretic repo and the original abliteration writeup for the mechanism.
Abliteration parameters
| Parameter | Value |
|---|---|
| direction_index | per layer |
| attn.o_proj.max_weight | 1.44 |
| attn.o_proj.max_weight_position | 28.24 |
| attn.o_proj.min_weight | 1.16 |
| attn.o_proj.min_weight_distance | 13.17 |
| mlp.down_proj.max_weight | 1.42 |
| mlp.down_proj.max_weight_position | 28.73 |
| mlp.down_proj.min_weight | 1.11 |
| mlp.down_proj.min_weight_distance | 20.52 |
Performance
| Metric | This model | Original model (openbmb/MiniCPM5-2B) |
|---|---|---|
| KL divergence | 0.0646 | 0 (by definition) |
| Refusals | 4/100 | 99/100 |
Refusals dropped from 99 to 4 out of 100 while preserving MiniCPM5-2B's tool-use, code, and reasoning abilities.
Made with ❤️ by RACER IS OP — follow for more uncensored models
Files
GGUF quantizations
Full quantization set (14 quants + F16) produced with llama.cpp.
| File | Format | Size |
|---|---|---|
MiniCPM5-2B-heretic-F16.gguf | GGUF F16 | 5.04 GB |
MiniCPM5-2B-heretic-Q2_K.gguf | GGUF Q2_K | 1.04 GB |
MiniCPM5-2B-heretic-IQ3_S.gguf | GGUF IQ3_S | 1.19 GB |
MiniCPM5-2B-heretic-Q3_K_S.gguf | GGUF Q3_K_S | 1.19 GB |
MiniCPM5-2B-heretic-Q3_K_M.gguf | GGUF Q3_K_M | 1.29 GB |
MiniCPM5-2B-heretic-Q3_K_L.gguf | GGUF Q3_K_L | 1.38 GB |
MiniCPM5-2B-heretic-IQ4_XS.gguf | GGUF IQ4_XS | 1.43 GB |
MiniCPM5-2B-heretic-Q4_K_S.gguf | GGUF Q4_K_S | 1.50 GB |
MiniCPM5-2B-heretic-Q4_0.gguf | GGUF Q4_0 | 1.49 GB |
MiniCPM5-2B-heretic-Q4_1.gguf | GGUF Q4_1 | 1.63 GB |
MiniCPM5-2B-heretic-Q4_K_M.gguf | GGUF Q4_K_M | 1.56 GB |
MiniCPM5-2B-heretic-Q5_K_S.gguf | GGUF Q5_K_S | 1.77 GB |
MiniCPM5-2B-heretic-Q5_K_M.gguf | GGUF Q5_K_M | 1.81 GB |
MiniCPM5-2B-heretic-Q6_K.gguf | GGUF Q6_K | 2.07 GB |
MiniCPM5-2B-heretic-Q8_0.gguf | GGUF Q8_0 | 2.68 GB |
MiniCPM5 architecture — loads natively in llama.cpp / Ollama / LM Studio / Jan.
Run llama serve -hf saidutta69/MiniCPM5-2B-heretic to pull the default quant.
Quickstart
# llama.cpp
llama serve -hf saidutta69/MiniCPM5-2B-heretic
# transformers
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "saidutta69/MiniCPM5-2B-heretic"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
torch_dtype="auto",
device_map="auto",
)
messages = [{"role": "user", "content": "Who are you? Please briefly introduce yourself."}]
inputs = tokenizer.apply_chat_template(
messages,
tokenize=True,
add_generation_prompt=True,
enable_thinking=False, # set True for Think mode
return_dict=True,
return_tensors="pt",
).to(model.device)
outputs = model.generate(**inputs, max_new_tokens=128)
print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:], skip_special_tokens=True))
Also runnable via Ollama, LM Studio, Jan, vLLM, SGLang. For tool/function calling, SGLang is the recommended backend; MiniCPM5 emits XML-style tool calls that SGLang's built-in minicpm5 parser converts to OpenAI-compatible tool_calls.
Responsible use
Refusal suppression is deliberate and works as intended: this model will comply with requests the base model would refuse, including some it shouldn't. There is no safety filtering layered on top. You are responsible for how you deploy it — don't put this behind an unmoderated public-facing endpoint serving third parties. It inherits MiniCPM5-2B's factual limitations and biases; abliteration removes refusal directions, it doesn't add capability or judgment.
License
Inherits the Apache 2.0 license from the base model.
Related
- MiniCPM5-1B-heretic
- RACER IS OP — Heretic Models — full collection
- RaceBench-MiniCPM5-heretic
- Qwen3-1.7B-heretic
Base model: openbmb/MiniCPM5-2B
See the base model card at openbmb/MiniCPM5-2B for the original architecture, training details, requirements, and citation.