Fidelity
Near-lossless versus the bf16 source, 18 GB vs 55.6 GB bf16 (~33%), at wikitext-2 perplexity 6.92 and KL divergence 0.0160 to the original. GPTQ error compensation and an MSE observer keep the drop from bf16 minimal; the header lists the full characteristics and Quantization covers the recipe.
Quickstart
NVFP4 is auto-detected from config.json (compressed-tensors); no quantization flag
needed. --reasoning-parser qwen3 splits the <think> block into reasoning_content.
vllm serve maci0/Qwopus3.6-27B-v2-abliterated-NVFP4 \
--served-model-name qwopus-27b-v2-abliterated-nvfp4 \
--max-model-len 131072 \
--gpu-memory-utilization 0.90 \
--kv-cache-dtype fp8 \
--reasoning-parser qwen3 \
--enable-auto-tool-choice --tool-call-parser qwen3_coder
- Supports up to 262144 tokens; keep at least 128K to preserve thinking quality.
--max-model-len 131072 is a safe default; raise it if memory allows.
- Add
--language-model-only to skip the vision tower and free KV cache for text use.
- The parser flags are not auto-detected; pass them explicitly. Drop the tool-call line
if you do not need tool calling.
Python (OpenAI client)
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1", api_key="x")
r = client.chat.completions.create(
model="qwopus-27b-v2-abliterated-nvfp4",
messages=[{"role": "user", "content": "Explain, step by step, why the sky is blue."}],
)
print(r.choices[0].message.content)
curl
curl http://localhost:8000/v1/chat/completions -H "Content-Type: application/json" -d '{
"model": "qwopus-27b-v2-abliterated-nvfp4",
"messages": [{"role": "user", "content": "Explain, step by step, why the sky is blue."}]
}'
About the base model
A 27B Qwen3.5-family vision-language model (Qwopus 3.6 v2), a general-purpose
reasoning and instruction-following model with thinking-mode reasoning and a 256K
context window.
- 64 decoder layers: hybrid gated delta-net linear attention plus full attention, dense
MLP, plus a vision tower for image and video input.
- 256K context (
max_position_embeddings 262144).
- Thinking mode by default, with an instruct toggle.
Abliteration
Heretic removes the refusal direction with a TPE-optimized
search over per-component ablation strength, jointly minimizing refusal rate and KL divergence
from the original model, then merges the best trial. This model was abliterated in two iterative
rounds: round 1 removed the dominant refusal direction, then Heretic was re-run on the round-1
model to remove the residual refusal direction that surfaced once the first was gone. Because Qwopus
is a thinking model, evaluation ran in non-thinking mode so each judged response is a real answer
rather than an unfinished <think> block; the shipped model restores the original thinking chat
template.
Table with columns: Round, Refusals, KL divergence, Note| Round | Refusals | KL divergence | Note |
|---|
| Baseline | 99/100 | | original model |
| Round 1 | 32/100 | 0.0235 | dominant refusal direction removed |
| Round 2 | 9/100 | 0.0160 | residual direction removed (shipped) |
- Datasets:
mlabonne/harmless_alpaca (good) vs mlabonne/harmful_behaviors (bad).
- This checkpoint required Heretic with
--row-normalization NONE. The default (FULL)
degenerated this model, producing a broken output; run with --row-normalization NONE
to reproduce.
Quantization
Table | |
|---|
| Scheme | NVFP4, W4A4 |
| Weight rounding | GPTQ (Hessian-based error compensation), MSE observer |
| Weights | FP4 (E2M1), group_size=16, tensor_group, FP8 (E4M3) group scales, shared across fused layers |
| Activations | FP4, dynamic per-group, FP8 (E4M3) scales |
| Quantized | all language-model Linear layers |
| Kept in bf16 | vision tower (model.visual.*), lm_head, MTP head |
GPTQ is a quantization-time cost only; inference speed and format are identical to
plain round-to-nearest NVFP4, but it chooses better 4-bit values.
Calibration: 512 domain-matched samples (long reasoning + general chat + code),
max_seq_len=2048, text-only path through the VL model.
Recommended sampling
Thinking mode is the default.
- Thinking, precise:
temperature=0.6, top_p=0.95, top_k=20
- Thinking, general:
temperature=1.0, top_p=0.95, top_k=20
- Instruct / non-thinking:
temperature=0.7, top_p=0.80, top_k=20
- To run non-thinking, set
{%- set enable_thinking = false %} in the chat template, or
pass extra_body={"chat_template_kwargs": {"enable_thinking": false}}.
Notes
- Needs NVIDIA Blackwell (sm_121, e.g. GB10) for accelerated W4A4; pre-Blackwell GPUs run it weight-only.
--reasoning-parser and --tool-call-parser are not auto-detected; pass them explicitly.
- Thinking mode is on by default; toggle it via the chat template or
chat_template_kwargs.
- No refusal guardrails; you are responsible for how you use it.
License
Apache-2.0, following the base model. Intended use and all responsibility for use follow
the base model.
Credits