Repository navigation
Abyss v1.3.86 — Qwen3.8-Flash-Next が約 3 分の 1 速く(RTX 5090 で 87.6 → 116.1 tok/s)
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 pointsSTRATA_GLM_PRIORat the shipped profile for a Qwen3.8 pack (any quant) without anexpert_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/1switches 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.