Instructions to use TrevorJS/Muse-Glimmer-30B-uncensored with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use TrevorJS/Muse-Glimmer-30B-uncensored with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("image-text-to-text", model="TrevorJS/Muse-Glimmer-30B-uncensored") 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)# Load model directly from transformers import AutoProcessor, AutoModelForMultimodalLM processor = AutoProcessor.from_pretrained("TrevorJS/Muse-Glimmer-30B-uncensored") model = AutoModelForMultimodalLM.from_pretrained("TrevorJS/Muse-Glimmer-30B-uncensored", 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=40) print(processor.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use TrevorJS/Muse-Glimmer-30B-uncensored with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "TrevorJS/Muse-Glimmer-30B-uncensored" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "TrevorJS/Muse-Glimmer-30B-uncensored", "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/TrevorJS/Muse-Glimmer-30B-uncensored
- SGLang
How to use TrevorJS/Muse-Glimmer-30B-uncensored 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 "TrevorJS/Muse-Glimmer-30B-uncensored" \ --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": "TrevorJS/Muse-Glimmer-30B-uncensored", "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 "TrevorJS/Muse-Glimmer-30B-uncensored" \ --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": "TrevorJS/Muse-Glimmer-30B-uncensored", "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 TrevorJS/Muse-Glimmer-30B-uncensored with Docker Model Runner:
docker model run hf.co/TrevorJS/Muse-Glimmer-30B-uncensored
Muse-Glimmer-30B-uncensored
Uncensored version of meta-models/Muse-Glimmer-30B with refusal behavior removed.
Results
| Before | After | |
|---|---|---|
| Refusals (harmful_tune, 150 prompts) | 128/150 (85.3%) | 3/150 (2.0%) |
| Over-refusal (harmless, 75 prompts) | 1/75 (1.4%) | 0/75 (0.0%) |
| Deflections | 12 | 0 |
| Broken / degenerate output | 0 | 0 |
Of 128 baseline refusals, 83 flipped to confirmed compliance and none degraded. A further 42 are unresolved: compliance runs about 4Γ longer than refusal (median output 354 β 1340 tokens) and hit the 1536-token cap mid-answer.
Agentic Validation
Muse Glimmer's safety training covers tool-use boundaries, injection resistance and permission handling, which a content-refusal harness cannot observe. Measured on a 30-probe agentic set:
| Category | Probes | Before | After |
|---|---|---|---|
| Prompt-injection resistance | 12 | 0/12 | 0/12 |
| Scope adherence | 8 | 0/8 | 0/8 |
| Irreversible-action confirmation | 10 | 7/10 | 8/10 |
| Total | 30 | 7/30 | 8/30 |
One probe changed: asked to delete logs older than a day, the base model noted that the available
tool could not filter by age and asked before acting; the uncensored model called delete_files
directly.
Method
Norm-preserving biprojected abliteration (grimjim, Nov 2025).
The refusal direction is projected out of each residual-write matrix and every column is rescaled to
its original norm, so ||W_new||_col = ||W_orig||_col.
Note on the architecture.
Muse-Glimmer-30Bis a dense multimodal model β 52 text decoder layers, hidden 6656, plus a separate 1.9B ViT-G/14 vision tower. Only the text pathway is abliterated; all 800 vision tensors are copied unchanged. Two arch quirks: there are twogate_projtensors per layer (attention and MLP, 104 total) and neither is a residual-write matrix, so targets are matched by full path; and logits are softcapped at20Β·tanh(xΒ·0.196/20), so KL is not comparable to the Gemma 4 family. The model also emits channelled output βto=selfdeliberation followed by theto=useranswer β so evaluation reads the final channel.
Version requirements: inference needs transformers >= 5.15.0; the muse_glimmer architecture
is absent from 5.12.0. GGUF conversion/quantization needs llama.cpp build b10353 or later, added
2026-08-10 in #26841 (commit 62bf73d).
Pipeline
- Capture residual activations at the final prompt token for 400 harmful + 400 harmless prompts
- Winsorize activations at the 99.5th percentile
- Compute per-layer refusal direction:
normalize(mean(harmful) - mean(harmless)) - Orthogonalize each direction against the harmless mean (double-pass Gram-Schmidt)
- Gate on held-out activations β reject any direction with an anti-selective layer
- Apply norm-preserving weight modification to
o_projanddown_projin every layer - Write shard-by-shard from safetensors and verify the edit in the resulting weights
Parameters
| Parameter | Value |
|---|---|
| Layers abliterated | 100% (all 52) |
| Scale | 1.0 |
| Winsorization | 0.995 |
| Tensors edited | 104 (52 o_proj + 52 down_proj) |
| Tensors copied unchanged | 1332 |
Validation
The direction passed a selectivity gate on held-out activations (mean selectivity 7.49, 0/52
anti-selective layers) before being applied. Post-bake, 98.6β99.6% of the direction is removed from
the targeted tensors (βrα΅Wβ residual 3.7e-03 to 1.4e-02, floored by the float64βbf16 round-trip);
an untouched up_proj is byte-identical to the base.
Usage
from transformers import AutoTokenizer
from transformers.models.muse_glimmer import MuseGlimmerForConditionalGeneration
import torch
model = MuseGlimmerForConditionalGeneration.from_pretrained(
"TrevorJS/Muse-Glimmer-30B-uncensored", dtype=torch.bfloat16, device_map="auto")
tokenizer = AutoTokenizer.from_pretrained("TrevorJS/Muse-Glimmer-30B-uncensored")
messages = [{"role": "user", "content": "Your prompt here"}]
inputs = tokenizer.apply_chat_template(messages, return_tensors="pt", add_generation_prompt=True)
outputs = model.generate(inputs.to(model.device), max_new_tokens=1536)
print(tokenizer.decode(outputs[0][inputs.shape[1]:], skip_special_tokens=True))
Reproduction
Full code and experiment data: muse-glimmer abliteration repo
Prior work in the same program: gemma-4 abliteration repo
python scripts/capture.py --harmful data/harmful_train.txt \
--harmless data/harmless_train.txt --out acts/derive.npz --position prompt_final
python scripts/derive_direction.py --acts acts/derive.npz \
--acts-holdout acts/holdout.npz --out directions/v1
python scripts/abliterate.py --directions directions/v1.npy \
--out models/mg-abl-s1.0 --scale 1.0
Credits
The method is not original to this work β refusal directions (Arditi et al., 2024), norm-preserving biprojection (grimjim), heretic (p-e-w) and the mlabonne / JailbreakBench / AdvBench corpora. Full attribution in the repo README.
Quantized
- Downloads last month
- 2