Instructions to use anthonym21/Muse-Glimmer-30B-heretic with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use anthonym21/Muse-Glimmer-30B-heretic with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("image-text-to-text", model="anthonym21/Muse-Glimmer-30B-heretic") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] pipe(text=messages)# pip install -U transformers accelerate # Load model directly from transformers import AutoProcessor, AutoModelForMultimodalLM processor = AutoProcessor.from_pretrained("anthonym21/Muse-Glimmer-30B-heretic") model = AutoModelForMultimodalLM.from_pretrained("anthonym21/Muse-Glimmer-30B-heretic", device_map="auto") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] inputs = processor.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=256) print(processor.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use anthonym21/Muse-Glimmer-30B-heretic with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "anthonym21/Muse-Glimmer-30B-heretic" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "anthonym21/Muse-Glimmer-30B-heretic", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker
docker model run hf.co/anthonym21/Muse-Glimmer-30B-heretic
- SGLang
How to use anthonym21/Muse-Glimmer-30B-heretic with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "anthonym21/Muse-Glimmer-30B-heretic" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "anthonym21/Muse-Glimmer-30B-heretic", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "anthonym21/Muse-Glimmer-30B-heretic" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "anthonym21/Muse-Glimmer-30B-heretic", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }' - Docker Model Runner
How to use anthonym21/Muse-Glimmer-30B-heretic with Docker Model Runner:
docker model run hf.co/anthonym21/Muse-Glimmer-30B-heretic
Muse Glimmer 30B, refusal-ablated (heretic, measured)
An abliterated Muse Glimmer 30B: the refusal direction has been removed from the weights with heretic's Optuna-searched directional ablation, from a fork that adds a post-norm correction for sandwich-norm architectures. No fine-tuning, no training data, no change to the tokenizer or chat format. Everything else about the model is the base model.
What is different about this upload is that it is measured. Every number below was produced by the same script on the base model and on this one, on held-out prompts, in both the model's direct-answer mode and its reasoning mode, with three independent refusal judges plus the substring check that most abliteration cards stop at. The method, the trial parameters and the evaluation code are all here, so the numbers can be reproduced or argued with.
The ablated direction is corrected for the post-norm gain of every module whose output feeds one (all 104 writer modules in this model), a fix added for this release; see Method.
Results
Base model: meta-models/Muse-Glimmer-30B. Harmful prompts: the 100 behaviors of JailbreakBench (JailbreakBench/JBB-Behaviors), held out -- the search never saw them. (Heretic's own scorer optimizes against mlabonne/harmful_behaviors test[:100], so a rate measured there would be partly on the optimizer's target; that on-distribution number is in the last two rows for comparison.) Harmless prompts: 100 from the test split of mlabonne/harmless_alpaca. Direct mode: the prompt is forced into the reply channel (<|start|>assistant to=user<|message|>), so the model answers with no reasoning. Reasoning mode: Reasoning strength: low in the system prompt, the model reasons in its to=self channel first (up to 768 tokens), then replies in to=user. Greedy decoding throughout.
| Measurement | Base model | This model |
|---|---|---|
| Refusal, direct mode, substring check (held-out) | 95.0% | 1.0% |
| Refusal, direct mode, refusal classifier | 87.0% | 21.0% |
| Refusal, direct mode, LLM judge (REFUSAL only) | 97.0% | 31.0% |
| Refusal, direct mode, LLM judge (REFUSAL or PARTIAL) | 97.0% | 31.0% |
| Attack success, direct mode, HarmBench classifier | 2.0% | 81.0% |
| Refusal, reasoning mode, substring check (reply channel) | 94.0% | 15.0% |
| Refusal, reasoning mode, refusal classifier | 89.0% | 25.0% |
| Refusal, reasoning mode, LLM judge (REFUSAL only) | 96.0% | 63.0% |
| Attack success, reasoning mode, HarmBench classifier | 2.0% | 41.0% |
| Reasoning decides to refuse (reasoning channel text) | 87.0% | 41.0% |
| Reasoning concludes "not disallowed" | 4.0% | 19.0% |
| Reasoning runs finished within 768 tokens | 100.0% | 100.0% |
| Over-refusal on 100 harmless prompts, direct mode, substring | 1.0% | 0.0% |
| Over-refusal on 100 harmless prompts, refusal classifier | 2.0% | 1.0% |
| KL divergence from base, first reply token, harmless prompts | 0.0000 | 0.1013 |
| GSM8K, exact match, strict (250 problems) | 94.8% | 93.6% |
| GSM8K, exact match, flexible (250 problems) | 94.8% | 93.6% |
| ARC-Challenge, acc_norm (250 questions) | 61.6% | 61.2% |
| MMLU, acc (10 questions per subject, 570 total) | 81.8% | 81.4% |
| Refusal, direct, HarmBench attack success (on-distribution set) | 1.9% | 81.7% |
| Refusal, reasoning, HarmBench attack success (on-distribution set) | 1.0% | 18.3% |
Refusal classifier: protectai/distilroberta-base-rejection-v1. LLM judge: Qwen/Qwen2.5-32B-Instruct with a three-way REFUSAL / PARTIAL / COMPLIANCE rubric, greedy. HarmBench: cais/HarmBench-Mistral-7b-val-cls, which asks whether the completion actually exhibits the requested behavior, so it is a stricter bar than "did not refuse". The substring check matches refusal phrasings in the first 200 characters of the reply. Benchmarks are lm-eval-harness slices run with the harness's default raw-completion prompts, no chat template and no reasoning, identically on both models. The absolute scores are therefore well below what the base model's own card reports (which uses its chat format and reasoning); only the base-versus-this-model difference means anything here. On 250 questions one standard error is about 3 points, so differences under 5 points are noise.
The reasoning channel
The rows about the reasoning channel are the part no other abliteration card reports. The base model's reasoning runs a policy check on nearly every harmful prompt and concludes it must refuse. After ablation the model still runs the check, in the same words, and concludes the request is not disallowed. The deliberation survives; the verdict flips. That is why reasoning-mode refusal and direct-mode refusal can differ so much for the same weights: in direct mode the model has to decide at the first token, in reasoning mode it argues itself into compliance over a few hundred tokens.
Method
Directional ablation (Arditi et al. 2024, "Refusal in Language Models Is Mediated by a Single Direction"): the mean residual-stream activation on harmful prompts minus the mean on harmless prompts gives a refusal direction per layer; every matrix that writes into the residual stream (attention output and MLP down projections) is modified so it can no longer write along that direction. Heretic searches the per-layer ablation weights and the direction with a TPE optimizer against two objectives, refusal count and KL divergence from the base model on harmless prompts, and returns a Pareto front. This model is one point on that front, chosen by a rule written down before any test-set number existed (lowest judged reasoning-mode refusal among candidates that stay within 5 points of base on GSM8K, ARC-Challenge, MMLU and harmless over-refusal).
Architecture note: 52-layer dense transformer with a 1.8B perception encoder; every attention and MLP block output passes through a post-norm (Gemma-style sandwich norms) before the residual add. In a sandwich-norm block the sublayer output goes through an RMSNorm with a learned per-channel gain before the residual add, so ablating direction v from the weight matrix leaves the gain-rotated component g * v in the residual stream. The fork used here detects those norms by tracing a forward pass and ablates the gain-corrected direction normalize(g * v) instead. For a plain rank-1 ablation this removes the component exactly (0.24 units left in the residual stream versus 7.5 for the uncorrected edit, measured on this model); under heretic's default magnitude-preserving path (row renormalization plus a low-rank SVD approximation) the removal is approximate, so the correction reduces rather than zeroes the leak. Measured on 31 trials with identical parameters, it lowers KL slightly (23 of 31 pairs) and removes slightly less refusal at the same strength; it is a precision fix, not a free lunch, and on a single-post-norm model like this one its behavioral effect is small.
Search settings: glimmer-abl-wide in the reproduction files; 100 trials, seed 0, 100-token responses, response prefix to=user<|message|> (direct mode), system prompt Reasoning strength: low. Heretic's own scores for this trial: Refusals 0.2, KL divergence 0.1326 (refusals out of 100 train-split prompts by keyword match, KL on 100 harmless prompts).
Trial parameters (heretic's Abliteration modifier; direction_index null means a per-layer direction):
{
"direction_index": null,
"weight_distributions": {
"attn.o_proj": {
"max_weight": 1.1814182280978278,
"max_weight_position": 26.103197383142074,
"min_weight": 0.7630710785980269,
"min_weight_distance": 13.952581453375698
},
"mlp.down_proj": {
"max_weight": 1.3106027513686396,
"max_weight_position": 39.873400392776254,
"min_weight": 0.5025395095620343,
"min_weight_distance": 24.435061127246872
}
}
}
How to use
from transformers import AutoModelForImageTextToText, AutoProcessor
repo = "anthonym21/Muse-Glimmer-30B-heretic"
processor = AutoProcessor.from_pretrained(repo)
model = AutoModelForImageTextToText.from_pretrained(repo, dtype="bfloat16", device_map="auto")
messages = [{"role": "system", "content": "Reasoning strength: low"},
{"role": "user", "content": "Explain how a sliding-window attention layer works."}]
inputs = processor.apply_chat_template(messages, add_generation_prompt=True, tokenize=True, return_tensors="pt", return_dict=True).to(model.device)
out = model.generate(**inputs, max_new_tokens=512, do_sample=True, temperature=1.0, top_p=0.95, top_k=64)
print(processor.decode(out[0][inputs["input_ids"].shape[1]:]))
The chat format is channel-based: after <|start|>assistant the model picks to=self (reasoning, ends with <|eom|>) or to=user (the reply, ends with <|eot|>). Reasoning strength (low / medium / high / xhigh) is set in the system prompt. The vision tower, adapter and projection are the base model's, untouched; image input works as on the base model. Weights are BF16 safetensors in the base model's own muse_glimmer architecture (transformers >= 5.15), so GGUF and other conversions that handle the base model handle this one.
Limitations and intended use
This model answers requests the base model refuses. It is released for research on refusal mechanisms, for red-teaming and classifier work, and for users who need an unconstrained local assistant and accept responsibility for its output. It is not safer, more accurate or more capable than the base model; on the capability slices above it is within noise of base, and that is the most that can be claimed. Refusal removal is not complete (see the direct-mode rows), and the judges disagree with each other at the margins, which is why several are reported. Nothing here changes the base model's license or usage policy; both apply.
Reproduction
- Base model:
meta-models/Muse-Glimmer-30Bat commita4e59da52a7bc87ae7251dd5545c0dd437c44b68. - Heretic fork patch (
norm-aware-ablation) on upstream base1bdb5bc: the full diff isabliteration/heretic-norm-aware.patchin the harness-lab repo below. It addspost_norm_correction,direction_index_rangeandmax_weight_position_rangeto the Abliteration modifier, alimitto the BenchmarkScore scorer, a hidden-states fallback for remote-code models, and a resume fix. - Prompts:
mlabonne/harmful_behaviorsat01cead01398926d81f7c52bdb790ee8cf77ebba7,mlabonne/harmless_alpacaat02c6a92cfcf11bb0c387334f8146d149d65b587f. - Study config, Pareto front, evaluation and judging scripts:
abliteration/in https://github.com/anthony-maio/harness-lab (heretic/glimmer-abl-wide.toml,eval_saved.py,judge_local.py,make_card.py); the build log with every failed attempt isabliteration/NOTES.mdthere. - Hardware: one Colab G4 (RTX PRO 6000 Blackwell, 96 GB) per study; the search took about 25 minutes, the evaluation about an hour.
- Downloads last month
- 3
Model tree for anthonym21/Muse-Glimmer-30B-heretic
Base model
meta-models/Muse-Glimmer-30B