license: apache-2.0
language:
- en
- zh
base_model: orcarouter/Qwen3.8-Flash-Next-Uncensored
library_name: gguf
tags: - gguf
- qwen
- qwen3.8
- moe
- ds4
- dwarfstar
- uncensored
- quantized
- apple-silicon
- metal
pipeline_tag: text-generation
Qwen3.8-Flash-Next-Uncensored-Q8-UDQ4K
面向 Apple Silicon(Metal)本地推理的去审查(Uncensored) Qwen3.8-Flash-Next 量化版本。
这个仓库提供了适用于 DwarfStar(ds4)的独立的 Qwen3.8-Flash GGUF 版本。该版本显著提升了原 Q4 版本的精度,使得 128GB 系统的性能能够与 Unsloth 的版本相媲美,同时兼容 DS4 的加载格式。我已将 ffn_down_exps 路由专家升级到 Q8_0 版本,同时针对第 0、1、2 层以及第 45 层中的 ffn_gate_exps 和 ffn_up_exps 张量进行了优化。其余 44 层的门控/上升专家对则采用了 Unsloth 的 imatrix 校准后的 Q4_K 版本,而非原始文件中的版本。其他所有内容,包括原始的 BF16 n-gram 表,都与原始版本完全一致。这种方法能够带来与 Unsloth 的 Q5_K_XL 版本相当的性能提升。其解码速度甚至比原始 Q4 版本快了 10 倍。
在 UD-Q4K 混合量化底座上,把 57 个 routed expert 张量升级为 Q8_0。
- 底座权重:
orcarouter/Qwen3.8-Flash-Next-Uncensored(本地 BF16 源权重) - 目标运行时:
ds4(DwarfStar),Metal 后端 - 数据实测于 Apple M5 Max / 128 GiB
1. 这不是「全 Q8 量化」
整个 GGUF 共 1256 个张量,只有 57 个被改成 Q8_0(4.5%):
| 类型 | Q4 底座 | Q8-UDQ4K | 变化 |
|---|---|---|---|
| F32 | 472 | 472 | — |
| Q8_0 | 337 | 394 | +57 |
| F16 | 298 | 298 | — |
| Q4_K | 98 | 90 | −8 |
| MXFP4 | 49 | 0 | −49 |
| BF16(n-gram) | 2 | 2 | — |
147 个 routed expert 中:Q8_0 57 个(38.8%)、Q4_K 90 个(61.2%)。
非 expert 张量(dense、attention、GDN、embedding、output、PLE、MTP 共用部分)全部保持底座原样。
准确表述:在 UD-Q4K 基础上把 57 个 routed expert 升到 Q8_0,不是全模型 Q8。
2. 升级了哪些张量,以及为什么
| 张量 | 层 | 数量 | 底座 → 目标 |
|---|---|---|---|
ffn_down_exps.weight |
blk.0 ~ blk.48 |
49 | MXFP4 → Q8_0 |
ffn_gate_exps.weight |
blk.0、blk.1、blk.2、blk.45 |
4 | Q4_K → Q8_0 |
ffn_up_exps.weight |
同上 4 层 | 4 | Q4_K → Q8_0 |
blk.48 是模型内嵌的 MTP block,不是普通 transformer 层。
为什么 down 全部升级、gate/up 只升 4 层
格式约束决定 down 只能用 32-block 格式。 GGUF 要求行宽(ne0)能被块大小整除,实测尺寸:
ffn_down_exps dims=(640, 2560, 512) -> ne0 = 640 → 640 % 256 = 128 ✗ 不能用 256-block
ffn_gate_exps dims=(2560, 640, 512) -> ne0 = 2560 → 2560 % 256 = 0 ✓ 可用 256-block
640 / 256 = 2.5 不是整数,所以 down 无法使用 Q4_K / Q2_K / IQ2_XXS 这类 256-block 格式——
底座用 MXFP4 是格式约束,不是选择偏好。
ds4 支持的 expert 类型中,块大小为 32 的只有三档:
| 格式 | 每权重字节 | 位宽 |
|---|---|---|
| MXFP4 | 0.53125 | ~4.25 |
| Q4_0 | 0.5625 | ~4.5 |
| Q8_0 | 1.0625 | ~8.5 |
Q8_0 是 32-block 家族里精度最高的,所以 down 升到 Q8_0 是在约束下能取的最高精度,方向单调。
gate/up 行宽 2560 允许 256-block,底座已是 imatrix 校准的 Q4_K;Q8_0 精度更高但体积翻倍,
全升 98 个会超过 128 GiB 上限,所以只挑 4 层:blk.0、blk.1(误差向下游传播)、blk.2(早期 n-gram / PLE 注入附近)、blk.45(最后一层,直连输出)。
Q8_0 是按块对称量化,不需要 imatrix,因此本次升级不引入新的校准依赖。
体积增量
57 个目标张量元素数相同(640 × 2560 × 512 = 838,860,800):
down × 49:(0.8301 − 0.4150) × 49 = 20.34 GiB
gate/up × 8:(0.8301 − 0.4395) × 8 = 3.12 GiB
合计 = 23.46 GiB
实测吻合:165.11 + 23.46 = 188.57 GiB。作为对照,全升 98 个 gate/up 增量达 58.62 GiB,
常驻约 131.5 GiB —— 超过 128 GiB 上限。
与其它 DS4 Qwen3.8 量化版本的关系
同生态版本(如 ivanfioravanti/Qwen3.8-Flash-Next-DS4-Q4)使用同一套底座配方:gate/up = imatrix Q4_K、
down = MXFP4、dense GDN/QSA/shared/output = Q8_0、embedding/control = BF16/F32、PLE 走外部 sidecar。
本版本的差别只有一点:down 提到 Q8_0,并在 4 层提升 gate/up。
3. 文件与运行
| 项目 | 值 |
|---|---|
| 文件大小 | 188.57 GiB |
| 常驻权重 | 93.19 GiB |
| SHA-256 | f8f73355ccac3e654e80e0c7935f05a3bffde291440c8f5a9f5f2a325d144c62 |
| 原生上下文 | 262,144 tokens(提示 + 生成的总和) |
建议 --prefill-chunk |
4096 |
./ds4-server -m Qwen3.8-Flash-Next-Uncensored-Q8-UDQ4K.gguf \
--host 127.0.0.1 --port 8114 \
--ctx 262144 --prefill-chunk 4096 \
--mtp --mtp-draft 1 \
--kv-disk-dir /tmp/ds4-kv-qwen-q8 --kv-disk-space-mb 65536 \
--power 100
内存(ctx=262144、prefill-chunk=4096):
ds4: memory: KV 8.33 GiB (raw 6.50 + compressed 1.83) + buffers 5.79 GiB
+ resident model 93.19 GiB = 107.31 GiB planned
ds4-server: context buffers 14456.69 MiB (ctx=262144, prefill_chunk=4096)
规划 107.31 GiB,实测运行约 121 GiB。建议 128 GiB 统一内存,关闭其它大型应用。
内存紧张时优先降 --ctx,比降 --prefill-chunk 更有效。
4. 文件分片与合并
权重文件按 Hugging Face 的单文件建议(<200 GB)拆成 2 片:
| 分片 | 大小(bytes) |
|---|---|
Qwen3.8-Flash-Next-Uncensored-Q8-UDQ4K.gguf.part-001 |
100,000,000,000 |
Qwen3.8-Flash-Next-Uncensored-Q8-UDQ4K.gguf.part-002 |
102,472,325,120 |
下载后合并(按序号顺序,不能颠倒):
cat Qwen3.8-Flash-Next-Uncensored-Q8-UDQ4K.gguf.part-* \
> Qwen3.8-Flash-Next-Uncensored-Q8-UDQ4K.gguf
校验:
shasum -a 256 Qwen3.8-Flash-Next-Uncensored-Q8-UDQ4K.gguf
# 应为 f8f73355ccac3e654e80e0c7935f05a3bffde291440c8f5a9f5f2a325d144c62
合并后必须是 202,472,325,120 bytes。大小不符说明分片缺失或顺序错误。
5. 速度
实际使用中观测的解码吞吐:
| 上下文 | 解码速度 |
|---|---|
| 64K | 66.46 t/s |
| 128K | 52.56 t/s |
| 256K | 47.05 t/s |
首次加载 23.8K tokens 工具提示约 20~28 秒。
6. 已知限制
--prefill-chunk 8192在 256K 上下文下 OOM:Metal command batch failed: Insufficient Memory。请用4096或更低。- 原生上下文 262,144 是提示与生成的总和。提示占满后无法再生成。
更长上下文需DS4_QWEN4_YARN_FACTOR=2或=4启用静态 YaRN。 - 磁盘 KV cache 只保存检查点,不把运行中的 KV 换出到磁盘;当前上下文仍占内存。
- MTP 加速比浮动较大,长输出时解码速度可能明显低于上表。
7. 权重来源与许可
- 底座:
orcarouter/Qwen3.8-Flash-Next-Uncensored - 上游架构:Qwen3.8-Flash-Next(Alibaba Qwen)
- 本版本仅重新量化 57 个 routed expert 张量,其余权重与底座完全一致
请同时遵守底座与上游模型的许可条款。