AI Navigate

ik_llama.cpp を用いた RTX 3070 Mobile (8GB) 上の Qwen3.5-9B.Q4_K_M — 最適化の発見と約50 t/s の生成速度、ヒント募集

Reddit r/LocalLLaMA / 2026/3/22

💬 オピニオンTools & Practical UsageModels & Research

要点

  • 本投稿は、ik_llama.cpp を用いてノートパソコン(Acer Predator Helios 315-53)上でローカルAI推論をチューニングし、Qwen3.5-9B Q4_K_M を動作させた記録である。初期の素の設定で、生成約47.8 t/s、プロンプト評価約82 t/s、VRAM は約97% 使用の状態だった。
  • 非 MoE モデルに対して誤って適用された MoE フラグ、--mlock のサイレントな失敗(システムリミットが必要)、および約 2 GB の VRAM を消費するバッチサイズを特定し、これらはより良いパフォーマンスのために修正された。
  • 最適化された設定は顕著な効果を示す。b2048/ub512 の固定フラグと q8_0K/q4_0V では生成約48.4 t/s、プロンプト評価約189.9 t/s(VRAM 約80%)を得られ、一方で q8_0K / q8_0V では生成約50.0 t/s、プロンプト評価約213.0 t/s(VRAM 約84%)を達成。
  • 限られたGPUでのローカルモデル推論に役立つ実用的なヒントを提供しており(バッチサイズの調整、メモリ制限の有効化、必要ない場合の MoE フラグの回避)、同様のハードウェアでの結果を共有することを促している。

免責事項: 本投稿は 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のモバイルハードウェアで、他の人はどのくらいの成果を出していますか?

投稿者 /u/Expensive_Demand1069
[リンク] [コメント]