Downloads · 30 days
1.4K
11% of all-time downloads
junafinity/Qwen-3.8-27B-Uncensored-8-Bit-MLX
Qwen-3.8-27B-Uncensored-8-Bit-MLX is a image-text-to-text model from junafinity. Use it for the image-text-to-text task on the model card, and read the license before you ship it in a product. It is set up for mlx-vlm. The card lists the license as apache-2.0.
8-bit MLX quantization of junafinity/Qwen-3.8-27B-Uncensored for Apple Silicon via MLX / mlx-vlm.
Downloads · 30 days
1.4K
11% of all-time downloads
All-time downloads
12.3K
Public
Parameters
27.4B
29.5 GB on disk
Likes
4
Public
Click a slice to open those files.
.safetensors29.5 GB · 100%
How the weights are stored.
U3226.9B · 98%
From the Hugging Face model README
8-bit MLX quantization of junafinity/Qwen-3.8-27B-Uncensored for Apple Silicon via MLX / mlx-vlm.
| Size on disk | 28 GB (bf16 parent is 52 GB) |
| Quant | 8-bit affine, group size 64 (blended 8.627 bits/weight) |
| Language model | 8-bit |
| Vision tower | bf16, unquantized |
mtp.* head | Dropped — mlx-vlm does not model it |
| Edit | Direct ZeroFuse weight edit of the text decoder. Not a fine-tune. |
This checkpoint is the practical local option on most M-series Macs. Full-precision weights live on the bf16 parent.
orcarouter/Qwen3.8-27B-Uncensored-MLX, mlx-community/Qwen3.8-27B-8bit, PocketAiHub Abliterated-MLX, avlp12 Alis-8bit). This card documents the same pattern. It does not claim first or only.mlx-vlm drops mtp.*. If you need native MTP, use the bf16 parent or the optional draft head (acceptance on hard prose is unmeasured).These uncensored (abliterated) weights are built as a research instrument for red teaming and defensive cybersecurity work. Safety training suppresses the display of capability, not capability itself. A refusal tells you the model declined. It does not tell you whether the weights could have complied. That conflation underestimates the true ceiling and hides holes in your filters, classifiers, and policy layer.
Use each uncensored checkpoint as the treatment half of a controlled pair against its original base model:
Operating rules. Do not expose these weights as a public endpoint without an independent moderation layer. Abliteration removes a direction, not a policy; some refusals survive (multi-turn re-assertion, system-prompt steering, vision-path refusals). Always report the delta against the base model. Re-measure on your own prompts. Whoever deploys it owns the moderation layer the original guardrails were carrying.
Hub collection: https://huggingface.co/collections/junafinity/qwen-38-27b-uncensored-apple-silicon-6a896c726b52be3a0b63400e
| Repo | Format | What it is |
|---|---|---|
| Qwen-3.8-27B-Uncensored | bf16, transformers | Full multimodal parent (~52 GB). Vision + mtp.* retained. |
| Qwen-3.8-27B-Uncensored-8-Bit-MLX | 8-bit MLX, mlx-vlm | Apple Silicon quant (~28 GB). Vision left at bf16. mtp.* dropped by mlx-vlm. |
| qwen38-mtp-head-fc-bf16-4bit | mixed bf16 fc + 4-bit/g64 | Optional native-MTP draft head. Pairing is optional and acceptance gain is unmeasured on hard prompts. |
Requires Apple Silicon (M-series) and mlx-vlm:
pip install mlx-vlm
Unified CLI (same form on every junafinity MLX card):
# text
python -m mlx_vlm generate \
--model junafinity/Qwen-3.8-27B-Uncensored-8-Bit-MLX \
--prompt "Your prompt here" \
--max-tokens 512
# image + text
python -m mlx_vlm generate \
--model junafinity/Qwen-3.8-27B-Uncensored-8-Bit-MLX \
--prompt "Describe this image." \
--image photo.jpg \
--max-tokens 512
from mlx_vlm import load, generate
from mlx_vlm.prompt_utils import apply_chat_template
model, processor = load("junafinity/Qwen-3.8-27B-Uncensored-8-Bit-MLX")
config = model.config
prompt = apply_chat_template(processor, config, "Your prompt here", num_images=0)
print(generate(model, processor, prompt, max_tokens=512, verbose=False))
Search junafinity/Qwen-3.8-27B-Uncensored-8-Bit-MLX and import as an MLX model. No extra projector file is required for these MLX-VLM checkpoints (vision is inside the repo). Tok/s and peak memory: [PLACEHOLDER].
| Unified memory | Fit (weights are 28 GB) | tok/s | Peak memory |
|---|---|---|---|
| 32 GB | Tight; limited context headroom | [PLACEHOLDER] | [PLACEHOLDER] |
| 48 GB | Comfortable | [PLACEHOLDER] | [PLACEHOLDER] |
| 64 GB+ | Comfortable, long context | [PLACEHOLDER] | [PLACEHOLDER] |
Numbers in this table are [PLACEHOLDER] until measured on a named Mac. Do not treat the qualitative fit notes as benchmarks.
Other cards' 8-bit VLM decode (not this repo): avlp12 Alis-8bit 21.8 tok/s (M3 Ultra, their card, 2026-08-16). PocketAiHub Abliterated 8-bit 18.7 tok/s (M5 Max, their card, 2026-08-16). Do not paste those into this row.
This checkpoint is MLX-only. It will not load with
transformers,vLLM, orllama.cpp. For those, use the bf16 parent. Native MTP pairing (optional, unmeasured) uses qwen38-mtp-head-fc-bf16-4bit.
This model is derivative work built on the efforts of two upstream projects.
The underlying model is Qwen3.8-27B, created and released by the Qwen team (Alibaba Cloud) under the Apache 2.0 license. All of the model's capability, knowledge, multilingual competence, and multimodal understanding originate from their work and their training. This repository contributes no new capability whatsoever — it only removes a behavior. Full credit for the model belongs to Qwen.
The refusal removal was performed with ZeroFuse v0.1.0, an automated, capability-preserving abliteration engine created by osmAPI.com and released under the MIT license.
ZeroFuse turns abliteration into an optimization problem rather than a manual one: it estimates the model's refusal direction, orthogonalizes it out of the residual stream writers, and runs a two-objective search to find the edit that removes the most refusals while perturbing the model's output distribution the least. No layers were hand-picked and no strengths were guessed for this build — every parameter below was selected by the optimizer.
The 8-bit conversion was produced with mlx-vlm
(mlx_vlm.convert), built on MLX, Apple's array framework
for Apple Silicon. Quantization is a post-hoc numerical transform — it involves no training and no
further behavioral modification.
| Weights modified | Attention o_proj and MLP down_proj in the language model decoder layers |
| Weights untouched | Embeddings, LM head, layernorms, q/k/v_proj, gate/up_proj, the entire vision tower |
| Training performed | None |
| Architecture change | None — identical config.json shape and tensor names |
| Inference overhead | None — no hooks, no runtime steering, no control vectors |
Because ZeroFuse edits only the text decoder stack, the vision and video encoders are bit-identical to the base model. Image and video understanding is unaffected by the abliteration procedure.
| Format | MLX (safetensors, MLX layout) |
| Precision | 8-bit affine, group size 64 |
| Effective size | 8.627 bits/weight blended across the checkpoint |
| Language model | Quantized to 8-bit |
| Vision tower | Left at bf16 — not quantized, preserving image/video fidelity |
| Repository size | 28 GB (vs. 52 GB for the bf16 parent) |
mtp.* head | Dropped — mlx-vlm does not model the multi-token-prediction head |
Dropping the mtp.* tensors costs nothing for ordinary inference: that head exists for
multi-token/speculative decoding, which the MLX runtime does not use here. It does mean this
checkpoint cannot be converted back into a complete transformers model — use the
bf16 parent for that.
Abliteration follows the refusal-direction line of work (Arditi et al., 2024): in a safety-tuned transformer, refusal is mediated to a good approximation by a single direction in the residual stream. Remove the model's ability to write to that direction and the refusal behavior largely disappears, while capability — which is distributed across many directions — is mostly preserved.
ZeroFuse implements this in four stages:
project_out_harmless = true). This reduces collateral damage relative to
naive difference-of-means.The KL objective is what makes this capability-preserving: an edit that removes every refusal but lobotomizes the model scores badly and loses to a gentler one.
Produced on 14 August 2026 with ZeroFuse v0.1.0.
model = "Qwen/Qwen3.8-27B"
dtype = "auto"
batch_size = 16
max_new_tokens_eval = 64
system_prompt = "You are a helpful assistant."
[directions]
layer_min_frac = 0.4 # search the source layer in the upper 40%-90%
layer_max_frac = 0.9 # of the 64-layer stack
project_out_harmless = true
[optimization]
n_trials = 100
n_startup_trials = 30 # random sampling before TPE takes over
strength_min = 0.8
strength_max = 1.4
kl_target = 0.01 # below this KL, switch to a refusal-only objective
Datasets. Direction estimation used mlabonne/harmless_alpaca and mlabonne/harmful_behaviors
(256 prompts each, train). Trial scoring used the held-out test splits of the same two datasets,
kept strictly separate from the estimation sets.
One detail matters if you re-run ZeroFuse against this base model. ZeroFuse v0.1.0 loads via
AutoModelForCausalLM, which for qwen3_5 resolves to the text-only Qwen3_5ForCausalLM class.
Its saved output is therefore a language-model-only checkpoint: the 333 vision-tower tensors and the
15 multi-token-prediction (mtp.*) tensors are absent, along with the preprocessor configs.
This repository is the full multimodal checkpoint, reassembled after the fact:
mtp.* tensors copied bit-for-bit from the base model,
together with the original config.json, preprocessor_config.json, and
video_preprocessor_config.json.Since abliteration only writes to o_proj and down_proj inside the language decoder, and those
tensors are untouched in the base, the result is identical to what a vision-preserving run would have
produced. The base 18-shard layout and model.safetensors.index.json were preserved unchanged.
The optimizer ran 100 trials and selected trial 38 from the Pareto front.
| Metric | Base model | This model |
|---|---|---|
| Refusals on held-out harmful set | 14 / 64 | 0 / 64 |
| KL divergence from base (harmless set) | — | 0.00971 |
Selected ablation parameters:
| Parameter | Value |
|---|---|
| Source layer | 35 |
| Ablation strength | 1.2242 |
| Layers edited | 9–56 (of 64) |
A KL of 0.00971 means the edited model's output distribution on harmless prompts remains very close to the original — the intervention is narrow, not a general behavioral rewrite.
These figures were measured on the bf16 parent, not on this quantized checkpoint. Quantization is a lossy numerical transform applied after the measurements above. It is expected to shift behavior only marginally at 8-bit, but the refusal rate and KL divergence reported here have not been re-measured post-quantization. If exact numbers matter for your work, re-run the evaluation against this checkpoint rather than inheriting the parent's.
Both models were scored on the same 64-prompt held-out harmful set under an identical
"You are a helpful assistant." system prompt:
| Refusals | Rate | Change | |
|---|---|---|---|
Qwen/Qwen3.8-27B (original) | 14 / 64 | 21.9% | — |
Qwen-3.8-27B-Uncensored (this model) | 0 / 64 | 0.0% | -14 — all removed |
Read this number carefully. The base model refused only 14 of 64 harmful prompts to begin with — a baseline refusal rate of 21.9%. "Zero refusals" therefore means every refusal the base model actually exhibited on this set was removed, measured against a baseline that was already fairly permissive. It does not mean the model has been tested against, and complies with, a broad or adversarial harmful-prompt distribution. During optimization the refusal objective was scored over those 14 base-refused prompts specifically, since the remainder carry no refusal signal to remove.
Abliteration removes a direction, not a policy. The refusal direction is a rank-1 approximation of a mechanism that is not perfectly rank-1, so refusal behavior degrades rather than vanishes. Expect the following to survive in any abliterated model, including this one:
Note on the numbers below. The residual refusals above are described from the known behavior of the method, not from a category-by-category probe of this specific checkpoint. The only empirical claim in this section is the measured table. A per-category breakdown requires running a labeled probe against the finished weights; until that is published here, treat the categories as expectations to verify, not as measurements.
The base figure is ZeroFuse's own baseline pass over the identical prompt set, so the two numbers are
directly comparable. Both used greedy-free sampling at max_new_tokens = 64 with an automated
refusal classifier — meaning a "non-refusal" indicates the model did not decline, not that the
answer was correct, complete, or useful.
This release is most useful as a research instrument, and specifically as the treatment half of a controlled pair.
Safety training suppresses the display of capability, not capability itself. When you evaluate a guardrailed model and it declines, you learn that it refused — you learn nothing about whether it could have complied. That conflation makes refusal-masked evaluations systematically underestimate a model's true capability ceiling.
Concrete uses:
Qwen/Qwen3.8-27B is the actual result.Inherited unchanged from the base model:
| Parameters | ~27.8B |
| Architecture | qwen3_5 / Qwen3_5ForConditionalGeneration |
| Decoder layers | 64 |
| Hidden size | 5120 |
| Attention | 24 query heads / 4 KV heads (GQA) |
| Intermediate size | 17408 |
| Vocabulary | 248,320 |
| Context length | 262,144 |
| Modalities | Text, image, video in → text out |
| Tensor format | 6 × safetensors shards (MLX layout) |
This build:
| Quantization | 8-bit affine, group size 64 |
| Blended precision | 8.627 bits/weight |
| Vision tower precision | bf16 (unquantized) |
| Size on disk | 28 GB |
| Runtime | MLX / mlx-vlm on Apple Silicon |
| Parent | junafinity/Qwen-3.8-27B-Uncensored |
Read these before relying on the model.
mlabonne/harmful_behaviors, of which the base model refused 14. The optimizer's refusal objective was
computed over only the 14 prompts the base model refused, so a single prompt flipping
moves that metric by 7.1 percentage points. Treat the refusal figure as directional
evidence from one prompt distribution, not a precise or general measurement.transformers, vLLM, TGI, or llama.cpp, and the missing
mtp.* head means it cannot be converted back into a complete transformers checkpoint.Primary intended use is red teaming and defensive cybersecurity research. See Intended use: red teaming and defensive cybersecurity research at the top of this card.
Also: refusal-mechanism / interpretability research, and deployments where the operator supplies an independent content-policy and moderation layer.
Users are responsible for compliance with applicable law and with the Apache 2.0 terms inherited from the base model. This model ships without the guardrails Qwen trained into it.
Apache 2.0, inherited from Qwen/Qwen3.8-27B. The
base model's license and terms carry over to this derivative in full. ZeroFuse, the tool used to
produce it, is separately MIT-licensed and imposes no terms on its output.
The refusal-direction method this work builds on:
@article{arditi2024refusal,
title = {Refusal in Language Models Is Mediated by a Single Direction},
author = {Arditi, Andy and Obeso, Oscar and Syed, Aaquib and
Paleka, Daniel and Panickssery, Nina and Gurnee, Wes and Nanda, Neel},
journal = {arXiv preprint arXiv:2406.11717},
year = {2024}
}
The base model:
@misc{qwen3.8-27b,
title = {Qwen3.8-27B},
author = {Qwen Team},
year = {2026},
url = {https://huggingface.co/Qwen/Qwen3.8-27B}
}
| Base model | Qwen/Qwen3.8-27B — © Qwen Team, Apache 2.0 |
| Abliteration tool | ZeroFuse v0.1.0 — © osmAPI.com, MIT |
| Direct parent | junafinity/Qwen-3.8-27B-Uncensored (bf16) |
| Quantization tool | mlx-vlm — 8-bit affine, group size 64 |
| Produced | 14 August 2026 |
Built with ZeroFuse by osmAPI.com. Quantized for Apple Silicon with MLX.