Gemma-4-12B-it-Jbliterated

Model: ApolloRaines/Gemma-4-12B-it-Jbliterated

Jbliterated version of Gemma-4-12B-it with refusal behaviors removed via multi-direction SVD abliteration. The goal of this release is simple: give people a Gemma 4 that follows instructions directly and keeps every bit of the base model's capability while doing it.

What is Jbliteration?

Jbliteration uses SVD decomposition to identify and remove the refusal subspace from the model's weights. Instead of a single refusal direction, this model removes several directions per layer, so the removal is more thorough and more resistant to reactivation through later finetuning. Nothing is retrained — the base model's knowledge and reasoning are left intact; only the refusal machinery is projected out.

What's New in This Release

  • Register-alignment pass for cleaner output. In addition to the standard refusal removal, this model applies a second, near-orthogonal step that removes the residual "disclaimer/preamble" register — the hedging boilerplate a model tends to open with even when it is going to answer. The result is a more direct, less padded response without changing what the model actually knows.
  • More precise geometric decomposition of the subspaces being removed, so the edit stays tightly on target.
  • No fake compliance. The model treats all framings of the same topic equally and answers on the merits rather than keyword-matching.
  • Capability preserved. The register-alignment step was tuned specifically so it does not trade accuracy for directness.

Measured Results

All numbers below are from our own evaluation harness, reported as definitive point measurements on the released weights (not cherry-picked best-of-N).

Metric Base This model
MMLU (570-item, accuracy) 78.42% 78.42%
MMLU change vs. base 0.00 pts
Direct-response rate (held-out prompts) ~1% ~89%

The headline is the middle row: the edit removes refusal and hedging behavior while leaving MMLU exactly where the base model sits — no measurable capability loss. The direct-response rate is measured on a held-out prompt set the model was never calibrated on, so it reflects generalization rather than fit to the tuning set.

Technical Details

  • Method: Multi-direction SVD abliteration + register-alignment pass
  • Directions removed: multiple refusal directions per layer, applied to output-side projections
  • Layer weighting: depth-localized (a smooth window over transformer layers rather than a flat edit)
  • Base dtype: bfloat16
  • Retraining: none — weight edit only
  • Source model: google/gemma-4-12b-it-qat-q4_0-unquantized

GGUF Quants

Ready-to-run GGUF builds are included in this repo, converted from the released bf16 weights.

File Size Notes
Gemma-4-12B-it-Jbliterated-BF16.gguf 22.2 GB Full precision, source for every quant below
Gemma-4-12B-it-Jbliterated-Q8_0.gguf 11.8 GB Effectively lossless
Gemma-4-12B-it-Jbliterated-Q6_K.gguf 9.1 GB imatrix
Gemma-4-12B-it-Jbliterated-Q5_K_M.gguf 8.0 GB imatrix
Gemma-4-12B-it-Jbliterated-Q4_K_M.gguf 6.9 GB imatrix — recommended for 8–12 GB cards

The K-quants are built with an importance matrix (imatrix.dat, also included, calibrated on wikitext-2 train). Perplexity on a held-out split was checked for every file against the bf16 GGUF and all of them sit within noise of it, so the quantization does not move the model's behavior.

Gemma 4 Unified is a recent architecture — you need a llama.cpp build from master (b10176 or newer). Older releases will not load these files.

llama-cli -m Gemma-4-12B-it-Jbliterated-Q4_K_M.gguf -ngl 99 -c 8192 -st \
  -p "Your prompt here"

Usage

from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

model_id = "ApolloRaines/Gemma-4-12B-it-Jbliterated"
tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(model_id, dtype=torch.bfloat16, device_map="auto", trust_remote_code=True)

messages = [{"role": "user", "content": "Your prompt here"}]
text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = tokenizer(text, return_tensors="pt").to(model.device)
out = model.generate(**inputs, max_new_tokens=512, temperature=0.7, do_sample=True)
print(tokenizer.decode(out[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True))

Notes

This is a research release aimed at understanding how instruction-following and refusal behavior sit in a model's weight geometry, and at building models that stay helpful and direct for the people who use them. Feedback on where it helps — and where it still hedges — is welcome and feeds directly into the next iteration.

License

Governed by the Gemma Terms of Use (same as the base model). Use of this model is subject to Google's Gemma license.

Downloads last month
-
Safetensors
Model size
12B params
Tensor type
BF16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for ApolloRaines/Gemma-4-12B-it-Jbliterated

Quantizations
2 models