家庭用のハードウェアでQwen3.6-35B-A3Bをチューニングするのに、一晩中使いました。面白い余談:Claude Opus 4.7($20のサブだけ)に、設定を組ませて、サーバーをバックグラウンドで起動させて、ベンチマークを回し、llama.cppログからVRAMの分割を読み取らせ、さらにチューニングを反復しました。要するに全部をほぼ自律的にやってくれました。私がやったのは、持っているハードウェアと実行したい内容を伝えるだけです。
共有したいのは、よくある --cpu-moe のアドバイスが、16GBのGPUでは速度のうち54%を“取りこぼす”ままになっていることです。
発見したこと — --cpu-moe vs --n-cpu-moe N
みんな --cpu-moe を使っていて、MoEのエキスパートをすべてCPUに押し出しています。16GB GPUで22GBのMoEモデルを使うと、使われるのはVRAMのたった~1.9GBだけになり、残りの~12GBはアイドルになります。
--n-cpu-moe N は、最初のN層のエキスパートをCPUに置き、残りをGPUに配置します。40層モデルで N=20 にすると、VRAMの分割が適切に行われます。
ベンチマーク(300トークン生成、Q4_K_M)
| Config | Gen t/s | Prompt t/s | VRAM used |
|---|---|---|---|
--cpu-moe(baseline) | 51.2 | 87.9 | 3.5 GB |
--n-cpu-moe 20 | 78.7 | 100.6 | 12.7 GB |
--n-cpu-moe 20 + -np 1 + 128K ctx | 79.3 | 135.8 | 13.2 GB |
生成速度 +54%、プロンプト速度 +54% を素朴な --cpu-moe に対して達成しました。128Kのコンテキストに飛ぶのは、基本的に -np 1 によって再カレンント状態のメモリが落ちるため“ほぼ無料”です。
動く起動コマンド
llama-server.exe ^ -m "Qwen3.6-35B-A3B-UD-Q4_K_M.gguf" ^ --n-cpu-moe 20 ^ -ngl 99 ^ -np 1 ^ -fa on ^ -ctk q8_0 -ctv q8_0 ^ -c 131072 ^ --temp 0.6 --top-p 0.95 --top-k 20 --min-p 0.0 ^ --presence-penalty 0.0 --repeat-penalty 1.0 ^ --reasoning-budget -1 ^ --host 0.0.0.0 --port 8080 これがUnslothの「Precise Coding」サンプリングプリセットです。一般用途なら:--temp 1.0 --presence-penalty 1.5。
ぶつかった“落とし穴”(まあOpusが当てて直してくれたけど)
-npはデフォルトでauto=4スロット。 再カレンント状態にメモリを浪費します(約190MB)。シングルユーザー構成(OpenCodeなど)では-np 1を設定してください。--fit-targetここでは役に立ちません —-ngl 99+--n-cpu-moe Nですでに決定的な制御が得られます。-ctk q8_0 -ctv q8_0はほぼロスレスで、fp16よりKVキャッシュを半分にします。128K ctxのコストは追加でVRAM 1.36GBだけです。- Qwen3.6はハイブリッドアーキテクチャです — 通常の注意機構の層が標準で10層、残り40層はGated Delta Net(再カレンント)です。そのためKVメモリが非常に小さくなります。
GPUに合わせてNを調整する方法
GPU上の各MoE層は約530MBのVRAMを消費します。MoEではない重みは約1.9GBで固定です。40層モデルの場合:
| GPU VRAM | 推奨 N |
|---|---|
| 8 GB | --cpu-moe のまま |
| 12 GB | N=26 |
| 16 GB | N=20(おすすめ) |
| 24 GB | N=8(ほぼ全部収まる) |
最初は控えめに始め、長いコンテキストの生成中にVRAMを監視し、その後、VRAMの余裕が約2GBになるまで N を2〜3ずつ下げていきます。
TL;DR
--cpu-moe を --n-cpu-moe 20 に置き換え、-np 1 を追加すると、5070 Tiで79 t/s + 128K contextが出ます。9800X3DのV-CacheがCPU側を難なく支えます。
そして、$20 ProサブのClaude Opus 4.7は、こうした“ハードウェアチューニングループ”をエンドツーエンドで回すのに、今では本当に十分な出来です。手取り足取りなしで、サーバーをバックグラウンド起動→ログを解析→反復、ができます。ちょっとワイルド。
他の構成でも比較テストしたいので、必要なら試します。
[link] [comments]




