1.2K Views
July 19, 26
スライド概要
cpu-moe で 34.6 tok/s に到達した RTX 4070 + Qwen3.5-35B を、さらに 41.2 tok/s まで伸ばす3フラグ (--flash-attn / KV量子化 q8_0 / --batch 512) の実測記録です。単独の効き、全部盛りの数字、同じコマンドで再現しない原因、フラグの副作用まで12枚で俯瞰します。
▼元記事 (Qiita)
https://qiita.com/kenimo49/items/17f2160d71f71c98bf44
▼計測作法と勝ち構成の全手順は Zenn Book で
https://zenn.dev/kenimo49/books/local-llm-qwen-4070
著者: ken imoto / kenimoto.dev
RTX 4070 / QWEN3.5-35B / LLAMA.CPP cpu-moeで 満足するな Qwen 35Bをさらに速くする3フラグ実測 34.6 → 41.2 tok/s (llama.cpp) ken imoto エンジニア / Propel-lab Qwen 35B 3フラグ実測 × RTX 4070 kenimoto.dev
| cpu-moe は「勝ち構成の入口」 エキスパートを全部CPUに逃がすとOllama 比 2.8倍。私はそこで 手を止めていた。 前回までの勝ち構成 -ngl 99 --cpu-moe の2フラグで 12.2 → 34.6 tok/s。12GB VRAMで35Bが実用になる構成 その先に残っていたもの llama.cpp にはまだ叩けるフラグが3本。リリース ノートを読み流していた数週間、伸びしろを取り こぼしていた Qwen 35B 3フラグ実測 × RTX 4070 02 kenimoto.dev
| 結論:フラグ3本で 41.2 tok/s モデルも量子化も変えない。フラグだけで生成1.2倍、プロンプト 評価は1.5倍。 生成(tg128) 34.6 → 41.2 tok/s • 1.19倍 プロンプト評価(pp512) 780 → 1,190 tok/s • 1.5倍 追加コスト フラグ 3本 ハード投資ゼロ Qwen 35B 3フラグ実測 × RTX 4070 03 kenimoto.dev
| 検証環境:フラグ以外は全部固定 一回だけ測って「速くなった」は禁物。毎回ベースラインの再現を 確認してからフラグを足す。 項目 固定した条件 マシン RTX 4070 (VRAM 12GB) / DDR5 64GB / WSL2 Ubuntu 24.04 / CUDA 12.9 モデル Qwen3.5-35B-A3B Q4_K_M (20.49 GiB) — 全比較で同一 計測 llama-bench -n 128 -r 3 — 3回反復・標準偏差付き VRAM 計測前に解放。同居プロセスなし ベースライン併走 毎回 -ngl 99 --cpu-moe で 34.6 ± 0.4 の再現を確認 Qwen 35B 3フラグ実測 × RTX 4070 04 kenimoto.dev
| フラグ1:--flash-attn アテンション計算をブロック単位でGPUに載せる。3本の中で単独 の伸びが最大。 34.6 → 38.9 tok/s +12% なぜ効くか 疎なMoEでもアテンションは密な演算。KVキャッショ のメモリアクセスが変わり、帯域律速の区間が速くな る 効かない環境もある CUDAバージョンとGPU世代(SM)依存。古いGPUで は回避が入り速度差ゼロも。まず自分の環境で1本測る Qwen 35B 3フラグ実測 × RTX 4070 05 kenimoto.dev
| フラグ2:KVキャッシュ量子化 q8_0 fp16で持っていたKVキャッシュをq8_0へ。VRAMの余裕がそのま ま帯域に効く。 34.6 → 37.2 tok/s +7.5% 品質の境界は q8_0 標準7問の比較でq8_0は全問正解を維持。q4_0 まで 落とすと明確に劣化する コンテキスト延長と相性◎ KVキャッシュはコンテキスト長に線形。-c 8192 へ 伸ばすときのVRAMあふれ対策にもなる Qwen 35B 3フラグ実測 × RTX 4070 06 kenimoto.dev
| フラグ3:--batch/--ubatch 512 生成は誤差の範囲。効くのは入力側で、first-tokenまでの体感が縮 む。 pp512 780 → 1,140 tok/s +46% チャット/agent用途に効く プロンプト評価のスループットが上がり、長い入力ほ ど「返り始めるまで」が短くなる VRAMの上限に注意 RTX 4070 では 512 まで。1024 は --cpu-moe 併用で も限界を超える。構成ごとに測って探す Qwen 35B 3フラグ実測 × RTX 4070 07 kenimoto.dev
| 全部盛りの実測 単独の効きは足し算にならないが、3本合わせて生成1.19倍・ pp512は1.5倍。 設定 pp512 tok/s tg128 tok/s ベースライン比 Ollama デフォルト - 12.2 ± 0.8 0.35倍 -ngl 99 --cpu-moe (base) 780 ± 20 34.6 ± 0.4 1.00倍 + --flash-attn 820 ± 15 38.9 ± 0.5 1.12倍 + --flash-attn + KV q8_0 840 ± 20 40.4 ± 0.4 1.17倍 + 3フラグ全部盛り 1,190 ± 25 41.2 ± 0.4 1.19倍 Qwen 35B 3フラグ実測 × RTX 4070 08 kenimoto.dev
| 同じコマンドで再現しない3つの原因 コピペで41.2 tok/sが出ないとき、疑う順番はこの3つ。 1 VRAMが空いていない Chrome拡張が200MB単位でVRAMを持っていく。「flash-attnが効かない」と半日疑った犯人はブラウザだっ た 2 CUDA × llama.cppのバージョン CUDA 12.9 + 2026-07時点で確認。古い組み合わせでは--flash-attnの分岐が違う 3 モデルと量子化タイプ Q4_K_M と Q4_0でも効き方は微妙に違う。比較は同じ量子化で揃える Qwen 35B 3フラグ実測 × RTX 4070 09 kenimoto.dev
| フラグを積むほど、副作用も増える 「速くなった」だけを見て採用しない。数字と標準偏差で裏を取 る。 KV量子化 → 精度 q8_0は7問で確認済み。実務のより 難しいタスクでは再確認したい flash-attn → 無言の fallback 環境依存でinvisibleに無効化され る。効いているかは数字でしか分から ない batch増 → VRAMあふれ 上げるほどcpu-moeの意味が薄れ る。上限は構成ごとに違う 対策はひとつ:llama-bench -r 3を同じ環境で回し、標準偏差ごと見る Qwen 35B 3フラグ実測 × RTX 4070 10 kenimoto.dev
| まとめ:速さは3フラグの積み上げで作る cpu-moe は入口。定期的に llama-bench を回して、勝ち構成の外 側を疑う。 1 --flash-attn で+12% — ただし環境依存、まず1本測る 2 KV量子化 q8_0 で+7.5% — 品質の境界は q8_0 3 --batch/--ubatch 512 でpp512 1.5倍 — 体感はここが最大 ✓ 全部盛りで生成 41.2 tok/s — llama-bench -r 3の標準偏差で裏取り Qwen 35B 3フラグ実測 × RTX 4070 11 kenimoto.dev
計測の作法は、本書で。 序章+第1章+第2章はZenn Book で無料公開中。 RTX 4070でQwen 35Bを 2.8倍速くする ✓ 勝ち構成 34.6 tok/s への全手順 ✓ 計測作法(第4章)と標準 7問 (第5章) ✓ 全 10章 +終章+付録 Zenn Book zenn.dev/kenimo49/books/local-llm-qwen-4070 Author ken imoto / kenimoto.dev / @kenimo49 Qwen 35B 3フラグ実測 × RTX 4070 12 kenimoto.dev