Skip to content

Abyss v1.3.86 — Qwen3.8-Flash-Next が約 3 分の 1 速く(RTX 5090 で 87.6 → 116.1 tok/s)

Choose a tag to compare

@zephel01 zephel01 released this 31 Oct 08:45
· 65 commits to main since this release

Qwen3.8-Flash-Next の答えが、約 3 分の 1 速くなりました。RTX 5090(PCIe Gen4 x4)、ISTA-DASLab GSQ-RCO IQ3_S、文脈 32K で測りました。

v1.3.85 v1.3.86
./abyss.sh --bench の答え(3 問、MTP ドラフター on) 87.6 tok/s 116.1 tok/s
文章 2 本、ドラフター on(256 トークン、greedy) 約 84 / 約 80 約 114 / 約 111
コード 2 本、ドラフター on 約 88 / 約 98 約 118 / 約 128
1 トークンずつ(GEN spec=0)、4 本の平均 約 79 約 106
使うエキスパートが VRAM にある割合 60〜77% 80〜94%
CPU レーンに回る数 1 トークン 217 個(6.0 ms) 109 個(3.1 ms)
品質の確認(bench/ref との KL) 0.0019 0.0022
  • Qwen3.8 のルーティングの統計を、Abyss に同梱しました(data/expert_counts/qwen38-flash-next.txt。文章・コード・数学・日本語の 36 本のプロンプト、820 万ルート)。
    • Qwen3.8 のパックには統計が入っていないため、これまではエキスパートが番号順に VRAM へ入っていました(各層の 0〜249 番)。
    • これからは、統計の無い Qwen3.8 のパック(量子化の種類は問いません)で、サーバーが同梱の統計を使います。よく使われる順に温め、層ごとの VRAM の枠も使われ方に合わせます(一律 250 個 → 205〜322 個)。パックに自分の統計があれば、そちらを使います。
  • Qwen3.8 では、RAM と VRAM のエキスパートの入れ替えを早めました。 1 回に最大 16 個、入れ替える条件は「今いるものの 2 倍 + 8 回」です。ほかのモデルは、DeepSeek V4 の 8 MB のエキスパートに合わせた今までの値(8 個、4 倍 + 16)のままです。Qwen3.8 のエキスパートは約 2 MB で、1 回の写しは約 0.3 ms です。
    • 入れ替えの規則だけで約 88 → 約 100 tok/s、統計だけで約 115、両方で約 118 tok/s です。
  • Qwen3.8 のハイパー接続の混ぜ合わせ(1 トークンに 97 回)を、5 回の起動から 2 回にまとめました。出力はビット単位で同じです(-DSTRATA_PARITY_HC4=ON の hc4_fused_parity で、全部の出力をバイト単位で比べています)。
    • 混ぜ合わせの時間は 1 トークン 2.98 → 2.21 ms、1 トークンずつのときで約 +8% です。検証窓は、まだ 5 回の起動のままです。
    • HIP(AMD)では既定でオフです(足し算の順番が違い、ビット一致にならないため)。STRATA_Q4X_HC_FUSE=0 / 1 で切り替えられます。
  • KL が 0.0019 から 0.0022 に動いたのは、CPU で計算するエキスパートが変わったためです(CPU と GPU で丸め方が違います)。測るたびの揺れと同じ程度です。
  • ほかのモデルは変わりません。RTX 5090 の GLM-5.3-Flash Maya-S-v2 で、答え 64.1 tok/s、8K のプロンプト 1090 tok/s です(v1.3.85 のビルドは 63.2 / 1100)。
  • AI PRO R9700 では確かめていません(今は PC に挿していないため)。統計と入れ替えの規則は CPU 側の処理なので、Radeon でも効くはずです。結果を issue で教えてもらえると助かります。

更新方法はいつもどおりで、git pull してから ./setup.sh を実行してください。


Qwen3.8-Flash-Next decodes about a third faster. RTX 5090 (PCIe Gen4 x4) with ISTA-DASLab GSQ-RCO IQ3_S, ctx 32K:

v1.3.85 v1.3.86
./abyss.sh --bench decode (3 questions, MTP drafter on) 87.6 tok/s 116.1 tok/s
2 prose answers, drafter on (256 tokens, greedy) ~84 / ~80 ~114 / ~111
2 code answers, drafter on ~88 / ~98 ~118 / ~128
token by token (GEN spec=0), the 4 answers' mean ~79 ~106
VRAM hits 60-77% 80-94%
CPU lane 217 experts a token (6.0 ms) 109 (3.1 ms)
quality check (KL against bench/ref) 0.0019 0.0022
  • A routing profile for Qwen3.8 ships with Abyss (data/expert_counts/qwen38-flash-next.txt: 36 prompts of prose, code, math and Japanese, 8.2M routes). Its packs have no profile of their own, so the experts went into VRAM in id order (experts 0-249 of every layer). The server now points STRATA_GLM_PRIOR at the shipped profile for a Qwen3.8 pack (any quant) without an expert_counts.txt: the experts warm in its order, and each layer gets a VRAM share by its routing (205-322 slots instead of 250 each). A pack's own profile still wins.
  • Qwen3.8 swaps experts between RAM and VRAM sooner: up to 16 moves a token boundary, a swap at 2 x the resident's count + 8 (others keep 8 and 4 x + 16, tuned for DeepSeek V4's 8 MB experts; Qwen3.8's are ~2 MB, ~0.3 ms a copy). The swap rule alone: ~88 -> ~100 tok/s; the profile alone ~115; both ~118.
  • Qwen3.8's hyper-connection mixes (97 a token) run in two launches instead of five, with the same bits (hc4_fused_parity, -DSTRATA_PARITY_HC4=ON, compares every output byte for byte). The mixes take 2.98 -> 2.21 ms a token; token by token ~+8%. The verify windows still use the five launches. Off by default on HIP (HIP sums in another order); STRATA_Q4X_HC_FUSE=0 / 1 switches it.
  • The KL moves from 0.0019 to 0.0022 because the CPU now computes other experts than before (CPU and GPU round differently), as between two runs.
  • Other models are unchanged: GLM-5.3-Flash Maya-S-v2 on the 5090, decode 64.1 tok/s, 8K prompt 1090, as the v1.3.85 build (63.2 / 1100).
  • Not checked on an AI PRO R9700 (not in the PC). The profile and the swap rule run on the CPU side, so they should help on Radeon too; a report in an issue is welcome.

Update as usual: git pull, then run ./setup.sh.