license: other
license_name: swift-open-license-1.0
license_link: https://huggingface.co/ukisai/Swift-1.5-Qwen3.8-27b/blob/main/LICENSE
library_name: gguf
pipeline_tag: image-text-to-text
base_model:
- ajgazin/Swift-1.5-Qwen3.8-27B-Uncensored-MTP
base_model_relation: quantized
tags: - gguf
- llama.cpp
- qwen3_8
- abliterated
- uncensored
- unsloth
- imatrix
- dynamic-quant
- mtp
Swift-1.5-Qwen3.8-27B-Uncensored-Dynamic-MTP-GGUF
GGUF quants of ajgazin/Swift-1.5-Qwen3.8-27B-Uncensored-MTP,
an abliterated Swift 1.5 Qwen3.8-27B (UkisAI's
reasoning-efficient fine-tune of Qwen3.8-27B). For vLLM and
SGLang: NVFP4.
- Uncensored: 23/100 refusals against Swift 1.5's 98/100, KL divergence 0.0884.
- Unsloth Dynamic 3.0 layout: every tensor has the type Unsloth chose for its quant of the same
size, with Unsloth's importance matrix. - MTP head included in every main GGUF, for self-speculative decoding in llama.cpp.
- Vision: image and video input through the included projector.
Quants
| Quant | Size | Use |
|---|---|---|
| UD-Q2_K_XL | 9.2 GiB | Fits a 12 GB GPU. |
| UD-Q3_K_XL | 12.2 GiB | Fits a 16 GB GPU. |
| UD-Q4_K_XL | 16.4 GiB | Fits a 24 GB GPU with room for long context. |
| UD-Q5_K_M | 18.4 GiB | Fits a 24 GB GPU. |
| UD-Q6_K_XL | 23.6 GiB | Best fit for a 32 GB GPU. |
| UD-Q8_K_XL | 29.3 GiB | Near-lossless. Fits a 48 GB GPU; on a 32 GB GPU it needs partial CPU offload. |
| BF16 | 50.9 GiB | Unquantized. The source of the quants, and a reference for measuring them or making other sizes. |
Each quant is one file, Swift-1.5-Qwen3.8-27B-Uncensored-Dynamic-MTP-<quant>.gguf; the BF16 isSwift-1.5-Qwen3.8-27B-Uncensored-MTP-BF16.gguf.
Other files:
| File | Size | Use |
|---|---|---|
mmproj-BF16.gguf |
0.9 GiB | Vision projector, needed only for image and video input. |
tensor_types.tsv |
42 KB | Per-tensor quantization types for each size (see Quantization). |
Usage (llama.cpp)
# text only
llama-server -m Swift-1.5-Qwen3.8-27B-Uncensored-Dynamic-MTP-UD-Q6_K_XL.gguf -ngl 99 -c 32768
# with vision (image and video input)
llama-server -m Swift-1.5-Qwen3.8-27B-Uncensored-Dynamic-MTP-UD-Q6_K_XL.gguf -ngl 99 -c 32768 \
--mmproj mmproj-BF16.gguf
# self-speculative decoding with the built-in MTP head
llama-server -m Swift-1.5-Qwen3.8-27B-Uncensored-Dynamic-MTP-UD-Q6_K_XL.gguf -ngl 99 -c 32768 \
--spec-type draft-mtp
--spec-type draft-mtp needs a llama.cpp build with MTP support for qwen35. The MTP head loads from
the main GGUF; there is no separate draft file.
Sampling, as for Swift and Qwen: temperature 1.0, top_p 0.95, top_k 20, min_p 0. The model thinks
before answering by default.
The model
The source applies the refusal direction of
orcarouter/Qwen3.8-27B-Uncensored
(Arditi et al. 2024, one direction) to Swift 1.5's weights: 131 tensors edited (attention outputs,mlp.down_proj, embed_tokens, MTP layer included), everything else Swift 1.5's. Method, direction
and scripts are on the source model's card.
| Model | Refusals | KL divergence |
|---|---|---|
| BF16 source (against Swift 1.5) | 23/100 | 0.0884 |
| Swift 1.5 Qwen3.8-27B | 98/100 | 0 |
Measured with Heretic on the BF16 weights (100 prompts frommlabonne/harmful_behaviors, keyword refusal detector; first-token KL on mlabonne/harmless_alpaca;
thinking skipped). Not re-measured on the quants.
Quantization
- Conversion: the source model's BF16 safetensors (all 1199 tensors, MTP included) were converted
with llama.cpp'sconvert_hf_to_gguf.py, once for the language model and once with--mmprojfor
the vision projector. - Quantization:
llama-quantizewith Unsloth'simatrix_unsloth.gguffrom
unsloth/Qwen3.8-27B-GGUF, plus a--tensor-type-file
that sets every tensor's type to the one in Unsloth's GGUF of the same size.
| Size | Tensor types (F32 norms etc. excluded) |
|---|---|
| UD-Q2_K_XL | 112×IQ3_XXS, 98×Q8_0, 67×IQ2_S, 57×IQ3_S, 48×IQ2_XXS, 34×IQ2_XS, 21×Q4_K, 20×IQ1_S, 19×IQ4_XS, 16×Q2_K, 6×Q6_K, 5×Q3_K, 2×Q5_K, 1×IQ1_M |
| UD-Q3_K_XL | 156×IQ4_XS, 111×IQ3_S, 98×Q8_0, 36×Q4_K, 34×IQ3_XXS, 26×Q5_K, 15×IQ2_S, 12×Q3_K, 7×Q6_K, 4×IQ2_XS, 3×Q2_K, 2×IQ4_NL, 2×IQ2_XXS |
| UD-Q4_K_XL | 191×Q5_K, 110×Q8_0, 70×IQ4_XS, 69×Q4_K, 56×Q6_K, 6×IQ4_NL, 3×Q3_K, 1×IQ3_S |
| UD-Q5_K_M | 189×Q5_K, 160×Q6_K, 124×Q8_0, 19×IQ4_XS, 12×Q4_K, 2×IQ4_NL |
| UD-Q6_K_XL | 310×Q8_0, 168×Q6_K, 27×Q5_K, 1×Q4_K |
| UD-Q8_K_XL | 453×Q8_0, 53×BF16 |
The imatrix was calibrated on the original Qwen3.8-27B; Swift 1.5's fine-tune and the rank-one
abliteration keep the architecture and every tensor name, and change the weights only slightly.tensor_types.tsv also carries columns for sizes not published here.
Checks
- Layout: each quant's 866 tensors have exactly the types and shapes of Unsloth's file of the same
size. - MTP: every main GGUF has 65 blocks, with the MTP layer's 15 tensors in
blk.64
(nextn_predict_layers = 1). llama.cpp's--spec-type draft-mtploads it and drafts with it. - Tokenizer and chat template:
- The vocabulary, merges and special tokens are the same as in Unsloth's Qwen3.8-27B GGUF.
add_bos_token = falseand the padding token come from Swift 1.5's own tokenizer config.- The embedded chat template is byte-identical to Swift 1.5's, which is Qwen3.8-27B's.
- Vision projector: 334 tensors, converted from Swift 1.5's vision tower.
- Load test: every quant loads and runs on a 32 GB GPU: fully offloaded up to UD-Q6_K_XL,
with 56 of 65 layers offloaded for UD-Q8_K_XL. Each produced sane logits on a short perplexity
run before upload.
Reproduce
# 1. convert (Swift-1.5-Qwen3.8-27B-Uncensored-MTP/ is a download of the source repository)
python convert_hf_to_gguf.py Swift-1.5-Qwen3.8-27B-Uncensored-MTP --outtype bf16 \
--model-name Swift-1.5-Qwen3.8-27B-Uncensored-MTP --outfile Swift-1.5-Qwen3.8-27B-Uncensored-MTP-BF16.gguf
python convert_hf_to_gguf.py Swift-1.5-Qwen3.8-27B-Uncensored-MTP --outtype bf16 --mmproj \
--model-name Swift-1.5-Qwen3.8-27B-Uncensored-MTP --outfile mmproj-BF16.gguf
# 2. per-size --tensor-type-file from tensor_types.tsv (here UD-Q5_K_M), one anchored regex per tensor
awk -F'\t' 'NR==1 { for (i=2; i<=NF; i++) if ($i=="UD-Q5_K_M") c=i; next }
{ n=$1; gsub(/\./,"\\\\.",n); print "^" n "$=" $c }' \
tensor_types.tsv > tensor_types_UD-Q5_K_M.txt
# 3. quantize. The last argument is the fallback type for tensors the file doesn't list:
# UD-Q2_K_XL Q2_K, UD-Q3_K_XL Q3_K_L, UD-Q4_K_XL Q4_K_M, UD-Q5_K_M Q5_K_M,
# UD-Q6_K_XL Q6_K, UD-Q8_K_XL Q8_0
llama-quantize --imatrix imatrix_unsloth.gguf \
--tensor-type-file tensor_types_UD-Q5_K_M.txt \
Swift-1.5-Qwen3.8-27B-Uncensored-MTP-BF16.gguf \
Swift-1.5-Qwen3.8-27B-Uncensored-Dynamic-MTP-UD-Q5_K_M.gguf Q5_K_M
tensor_types.tsv holds the type of every non-F32 tensor in each of Unsloth's sizes, one row per
tensor and one column per size. The regexes must be anchored (^…$). llama-quantize matches them
unanchored, so a bare output\.weight line would also match every attn_output.weight.
Not evaluated
General benchmarks, KL divergence of the quants against the BF16, refusal behaviour in thinking
mode and on the quants, whether Swift 1.5's shorter reasoning traces survive, and MTP acceptance
against Swift 1.5.
License
Derivative of Swift 1.5 Qwen3.8-27B, under the Swift Open License v1.0
(license): free for
individuals and organizations with gross annual revenue up to US$1,000,000; above that, commercial
use needs a Swift Enterprise License from UkisAI. Qwen3.8-27B and orcarouter/Qwen3.8-27B-Uncensored
are Apache 2.0.
Intended use
The model answers requests the original declines. You are responsible for how you use it and for
complying with applicable law and the license.
Credits
- Qwen for Qwen3.8-27B.
- UkisAI for Swift 1.5 Qwen3.8-27B.
- OrcaRouter for Qwen3.8-27B-Uncensored and its refusal direction.
- Unsloth for the Dynamic 3.0 quantization layout and imatrix.
- Arditi et al., Refusal in Language Models Is Mediated by a Single Direction (2024).
- Heretic, used for evaluation.