免責事項: 本投稿は Claude Opus 4.6 の協力を得て情報を収集し、まず自分自身にとって理解しやすくするために部分的に作成されました.... そしてこの投稿等!
こんにちは!
ノートパソコンでローカル推論をチューニングしてきました。いくつか驚く情報があったので、共有したいです。同じようなハードウェアを使っている人が他にどんな結果を出しているかも知りたいです。
私の設定:
- ノートパソコン: Acer Predator Helios 315-53
- CPU: Intel i7-10750H(6P コア / 12 スレッド)
- GPU: RTX 3070 Mobile、8GB VRAM(実質利用可能量は約7.7GB)
- RAM: 32GB
- OS: CachyOS(Archベース、Linux 6.19)
- エンジン: ik_llama.cpp — ikawrakow の llama.cpp のフォークで、追加の最適化を多数含む
- モデル: Qwen3.5-9B Q4_K_M (Jackrong/Qwen3.5-9B-Claude-4.6-Opus-Reasoning-Distilled-v2-GGUF)
開始設定(ナイーブ):
bash
./build/bin/llama-server \\ -m ./models/Qwen3.5-9B.Q4_K_M.gguf \\ -ngl 999 \\ --n-cpu-moe 36 \\ -fa on \\ -c 65536 \\ -b 4096 \\ -ub 2048 \\ -ctk q4_0 \\ -ctv q4_0 \\ --threads 6 \\ --threads-batch 12 \\ --mlock \\ -ger \\ -ser 0,1 結果: 約47.8 t/s の生成、約82 t/s のプロンプト評価。VRAM は約97%。
問題点:
1. MoE フラグを非 MoE モデルに対して使用。 --n-cpu-moe、-ger、および -ser はすべて MoE 専用です。モデルのメタデータには明確に n_expert = 0 と表示されています。これらのフラグは何もしない、あるいは悪化させます。3つとも削除しました....正直、なぜ試したのか分かりません。
2. --mlock が黙って失敗していました。ログには failed to mlock 1417465856-byte buffer: Cannot allocate memory と表示されていました。何もしていませんでした。これを動かすには ulimit -l unlimited(root として)または limits.conf のエントリが必要です。
3. バッチサイズが VRAM を食う。 -b 4096 は 2004 MiB の計算バッファを発生させていました — これは 8GB カードで、バッチ処理だけでほぼ 2GB です。単一ユーザーのローカルサーバーではそれは必要ありません。 -b 2048 -ub 512 に下げると 501 MiB まで削減されました。
最適化された設定と結果:
| 設定 | 生成 (t/s) | プロンプト評価 (t/s) | VRAM 使用量 |
|---|---|---|---|
| Original (q4_0/q4_0, b4096) | 47.8 | 82.6 | ~97% |
| Fixed flags + b2048/ub512, q8_0K/q4_0V | 48.4 | 189.9 | ~80% |
| q8_0K / q8_0V | 50.0 | 213.0 | ~84% |
プロンプト評価の速度向上は ~82 t/s から ~213 t/s へと巨大です — 主にバッチサイズの修正と GPU が実際に呼吸できるようにしたことによります。
生成速度は KV コンフィグ間でほとんど変わらず(q4_0 と q8_0 の値で約2%の差)、しかし品質は向上しました。長い出力では特に、q8_0/q8_0 の組み合わせでより一貫性があり完全な応答を生成しました。追加の約256 MiB の価値があります。
プロンプト:
エラトステネスの篩を用いて N までのすべての素数を見つける動作する Rust プログラムを作成してください。次に、アルゴリズムがどのように機能するかをステップバイステップで説明し、時間計算量と空間計算量を分析し、N=50 の例出力を示してください。コードには十分なコメントを付けてください。
最終コマンド:
bash
./build/bin/llama-server \ -m ./models/Qwen3.5-9B.Q4_K_M.gguf \ -ngl 999 \ -fa on \ -c 65536 \ -b 2048 \ -ub 512 \ -ctk q8_0 \ -ctv q8_0 \ --threads 6 \ --threads-batch 12 まだ試していないこと / 質問:
- GPUパワーリミットのチューニング — ノートPCのモバイルGPUでは、推論は計算ではなくメモリ帯域幅に束縛されているため、生成速度の低下を最小限にしつつTGPを大幅に低くできることが多いです。これをまだベンチマークしていません。
- このサイズで、8GBのモバイルでうまく動作する他のモデルはありますか?特に、コーディングや推論性能が優れているもの。
- ik_llama.cppをメインラインの代わりに使用している人は他にもいますか? 追加の ik 専用最適化(融合演算、グラフの再利用など)は本当に価値があるように思えます。
- ハイブリッドSSMアーキテクチャについて、特に何かアドバイスはありますか? ctx_shift の警告は少し厄介です — コンテキストを埋めるとハードストップします、スライディングウィンドウはありません。
もし役立つなら、より多くのログを共有してもいいです。似たような8GBのモバイルハードウェアで、他の人はどのくらいの成果を出していますか?
[リンク] [コメント]