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 is
Swift-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 from
mlabonne/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's
convert_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-filethat 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.