license: other license_name: swift-open-license-1.0 license_link: LICENSE base_model: ukisai/Swift-1.5-Qwen3.8-Flash-Next-NVFP4 tags:
- qwen3_8
- qwen4_exp
- moe
- nvfp4
- quantized
- abliterated
- uncensored
- expert-pruning
- unofficial
Swift 1.5 Qwen3.8-Flash-Next NVFP4 — refusal direction removed, plus a half-expert variant (replacement files)
中文摘要 這不是一個完整的模型,而是一組「替換檔」。來源是 UkisAI 的 Swift 1.5(Qwen3.8-Flash-Next 的省思考版)的 4 位元(NVFP4)版本。我們做了兩件事:
- 照別人公開的去審查做法,把「拒答方向」從權重裡投影掉(
model-layer-*.safetensors、model-tail.safetensors)。 - 另外做了一個每層專家從 512 個減為 256 個的版本(
pruned256/)。這個版本佔的顯示卡記憶體少很多,同一張卡可以同時處理更多請求。
用途是台灣本土文字推理的研究。下面逐項寫明每一步怎麼做、驗證了什麼、哪些還沒驗證。這是非官方的衍生版本,和 Qwen、UkisAI、去審查做法的作者都沒有關係,也沒有經過他們背書。
What this repository is
Replacement files for ukisai/Swift-1.5-Qwen3.8-Flash-Next-NVFP4
(revision 3ff0520224f264a2d0ac4ab56ece8f2f13aadb38). It is not a complete checkpoint: the n-gram embedding shards
(about 102 GB), tokenizer and other unchanged files must be taken from that repository.
| Path | Content |
|---|---|
model-layer-00000.safetensors … model-layer-00047.safetensors | the 48 per-layer files with the refusal direction projected out (84 GB with the tail) |
model-tail.safetensors | embeddings, LM head and MTP head, with the same edit |
reports/ | one check report per edited file (SHA-256 before and after, what was changed, what was verified) |
pruned256/ | the same 48 layer files with 256 of the 512 routed experts removed per layer, plus the matching config.json and index (see its own README) |
LICENSE, LICENSE-QWEN, NOTICE | licence texts and attribution, see "Licences" |
This is an unofficial derivative. It is not affiliated with, sponsored by or endorsed by Qwen, UkisAI or the author of the abliteration recipe.
Where it comes from
| Source | What we took from it |
|---|---|
Qwen/Qwen3.8-Flash-Next | the base model; BF16 weights of the routed experts' down-projections |
ukisai/Swift1.5-Qwen3.8-Flash-Next | UkisAI's reasoning-efficient fine-tune (BF16); used to confirm that Swift left the routed experts unchanged |
ukisai/Swift-1.5-Qwen3.8-Flash-Next-NVFP4 | the NVFP4 checkpoint that these files replace parts of (experts in NVFP4, everything else BF16) |
windowsxp811203/Qwen3.8-Flash-Next-Abliterated | the abliteration recipe; the direction was recovered from the difference between its weights and the base model |
What was changed, step by step
1. The direction
The abliterated repository differs from the base model by a rank-one update along one direction V (2,560 numbers) that is
the same in every layer and every kind of weight: the largest direction explains 99.72% of the difference, and the
directions recovered from layers 0, 12, 24 and 47 agree to a cosine above 0.99999. The strength recovered from the
weights is 1.4995 to 1.5005; the author states 1.5.
2. The edit
For the 151 tensors that write into the residual stream (attention output projections, shared-expert down-projections, the routed experts' down-projections, the n-gram value projection, the token embeddings and the MTP head):
- output writers:
W' = W − 1.5 · V · (Vᵀ W) - token embeddings:
E' = E − 1.5 · (E V) Vᵀ
After the edit the component along V is −0.5 times what it was.
3. Dense tensors
In the NVFP4 checkpoint everything except the routed experts is stored in BF16. Those tensors were edited directly.
4. Routed experts (24,576 down-projections)
- Editing the 4-bit weights in place does not work: the change is smaller than one rounding step, and most of it is lost
when the result is rounded again (the component along
Vends at +0.40 instead of −0.50). - So the experts were edited in BF16 and quantized once. Swift did not change the routed experts (they are byte-identical to the base model), so the BF16 source is the base model.
- The NVFP4 packing was reproduced exactly: quantizing the unedited BF16 weights with our code gives the bytes of the shipped file for all 24,576 experts. The edited weights were then quantized with the same code.
5. Checks on the result (per-file numbers are in reports/)
| Check | Result |
|---|---|
| Experts whose unedited BF16 re-quantizes to the shipped bytes | 24,576 of 24,576 |
Component along V after the edit, routed experts (4-bit) | −0.498 on average per layer; single experts between −0.512 and −0.482 |
Component along V after the edit, BF16 tensors | −0.500 |
| 4-bit quantization error of the experts | 9.47% to 9.51% before the edit, the same after |
| Tensors replaced per layer file | 1,538 (1,539 in layer 1) |
| Tensors that were not meant to change and did | 0 |
| Tail file | 6 tensors edited, 363 unchanged |
6. The half-expert variant (pruned256/)
Every layer keeps 256 of its 512 routed experts. Which ones: we recorded, inside the serving engine, how often each expert was picked, with what routing weight, and how large its own output was, while running a reasoning workload over Taiwanese local text (Traditional Chinese as written in Taiwan; 192 items through a multi-stage pipeline, 1.77 million tokens). The 256 experts with the largest total contribution (routing weight × output size, summed over every pick) stay. On that sample the removed experts account for 3.65% of the total on average, 8.5% in the worst layer.
Nothing is re-quantized: the tensors of removed experts are left out, the kept experts are renumbered, and the router keeps the matching rows. Every kept tensor is byte-identical to the file above it. The keep list comes from one workload; other material may rely on other experts.
What has been tested, and what has not
Tested, with the 512-expert files:
- Loads and serves on a single RTX PRO 6000 (96 GB) with SGLang (image
lmsysorg/sglang:dev-qwen38-next-local), n-gram table kept in host memory (--ple-offload-embedding, about 110 GB of host RAM). That build needed a one-line change so that the BF16 n-gram table is not first allocated on the GPU. - The weights take about 81.5 GB of GPU memory, which leaves room for about 48 to 64 concurrent requests. On our workload: about 1,000 to 1,200 generated tokens per second in total.
- A probe of 12 questions that the unedited checkpoint tends to refuse or deflect, in Chinese: all answered in full. The unedited checkpoint refused one and gave short, evasive answers to most of the others.
- The edit removes refusals; it does not change the model's views.
Tested, with the pruned256/ files (one step of our pipeline, 128 items, three prompt variants, one run each):
- Loads in the same SGLang build with no further change. The weights take about 46 GB of GPU memory.
- The freed memory allows far more concurrent requests on the same card: with 480 state slots and a 738k-token KV pool
(
--max-mamba-cache-size 480 --max-running-requests 160) the server ran 160 requests at a time at about 2,200 generated tokens per second in total (the 512-expert build: 48 at a time, about 1,225). Above about 128 concurrent requests the total no longer rises. At equal concurrency the two builds are within a few percent of each other. - The answers stayed close to the 512-expert build's. For one prompt variant, against reference labels: precision 73% and recall 58%, where the 512-expert build had 69% and 64%; the other two variants were level or slightly better.
- One request out of 385 kept generating far beyond the usual length and had to be cut. Set an output cap.
Not tested:
- General benchmarks, or any safety evaluation.
- The
pruned256/variant beyond that one step, and on material other than ours. - MTP together with the edit; engines other than SGLang.
- Whether Swift's reduction in reasoning length is preserved (on our prompts we did not see it).
How to assemble
Full version: download the original NVFP4 repository at the revision above, then replace the 48 layer files and
model-tail.safetensors with the ones in this repository.
Half-expert version: see pruned256/README.md. MTP must stay off with it, because the MTP head still has 512 experts.
Intended use and limits
These files were made for research on reasoning over Taiwanese local text (台灣本土文字推理), where refusals and deflections made the unedited model unusable for the task. Removing the refusal direction lowers refusals in general, so the model may produce content the original would decline to produce. Anyone using it is responsible for what they do with it and for complying with the law and with the licences below. Outputs can be wrong or biased.
Licences
- The weights derive from Qwen3.8-Flash-Next, Copyright (c) 2026 Qwen, under the Qwen Community License 1.0
(
LICENSE-QWEN). - They contain UkisAI's Swift Contribution, Copyright 2026 UkisAI, under the Swift Open License v1.0 (
LICENSE), including its limit on commercial use by entities above the revenue threshold, which continues to apply. NOTICEreproduces UkisAI's notice and lists the changes made here.- Modified files: every
model-layer-*.safetensorsandmodel-tail.safetensorsin this repository was changed by the owner of this repository (2026-10-11), and the files underpruned256/were derived from them (2026-10-12). They are not UkisAI's or Qwen's files.
How this was made
The scripts for the edit, the quantization, the checks and the expert statistics were written and run with an AI coding assistant, under the direction of the repository owner. Every number in the tables above comes from a check that was run on the files themselves.