結論

Blackwell 96GB と EPYC 9175F の 12ch メモリ帯域を持つワークステーションで、GPU と CPU を分業させるローカル LLM 構成を計画した。

計画: CPU 側を Dagster パイプラインで冪等・非同期処理に使い、パラメータの大きい MoE モデルで品質の高い成果物を目指す。GPU 側をユーザーの対話窓口として、少し低めのパラメータで fine-tuning した専門性の高いモデルを置き、毎日の Dagster asset から LoRA で品質を上げていく。

現実: ik_llama.cpp を使って GPU に少し重みを載せて、メモリ帯域を食い合わないようにモデルの組み合わせを日々試行錯誤しているところだ。計画の Dagster + LoRA パイプラインはまだ動いていない。


計画: CPU/GPU 分業アーキテクチャ

CPU レーン — Dagster 冪等パイプライン

CPU 側の 12ch メモリ帯域を活かし、パラメータの大きい MoE モデル(100B〜400B 級)を非同期で回す。

  • Dagster でパイプラインを冪等に構成する。asset ベースでジョブを管理し、失敗しても再実行で同じ結果が得られる
  • 用途はリポジトリ全体の解析、ドキュメント生成、テストコード生成、大規模リファクタリングの思考など、時間をかけて品質を出す仕事
  • 即応性は求めない。Fire & Forget で投げて、結果を待つ

MoE モデルは GPU 1 枚では active parameter が少なくても total parameter が大きいため VRAM に載りきらないことが多い。12ch の CPU メモリ帯域なら、非同期レーンとして十分実用的な速度が出る。

GPU レーン — 対話窓口 + 日次 LoRA 更新

GPU 側はユーザーの対話窓口として使う。

  • パラメータ 30B 前後の、応答性の高いモデルを置く
  • fine-tuning で専門性を上げる。自分のコードベース、設計パターン、使う言語に特化させる
  • 毎日の Dagster asset から LoRA アダプタを生成し、ベースモデルに日次で適用する。CPU 側の重い処理結果が、GPU 側の対話品質に反映される循環

この循環が計画の核心だ。CPU 側で時間をかけて得た知見を、GPU 側の対話モデルに LoRA として還元する。ユーザーから見れば「使うほど賢くなるローカル LLM」になる。

計画時のパイプライン図

  CPU (EPYC 12ch):
  Dagster Pipeline → MoE 100B-400B (ik_llama.cpp / vLLM)
    → asset: コード解析結果、テスト生成、リファクタ提案
    → asset: LoRA 学習データ
    → 日次 LoRA アダプタ生成

GPU (Blackwell 96GB):
  対話サーバー → Dense 30B 級 (vLLM) + LoRA アダプタ
    → Zed MCP / Aider / CLI
    → 即時レスポンス
    → 日次で LoRA 更新(CPU 側の asset から)
  

現実: ik_llama.cpp でのモデル組み合わせ試行

計画の Dagster + LoRA パイプラインはまだ構築できていない。現状は ik_llama.cpp を使って GPU に少し重みを載せ(部分オフロード)、CPU と GPU でメモリ帯域を食い合わないモデルの組み合わせを探っている段階だ。

試行の焦点

  • GPU に載せる重みの量を調整して、対話の応答性と CPU 側の帯域確保のバランスを取る
  • 同時に複数モデルを立てるとき、メモリ帯域の競合で両方遅くなるパターンを避ける
  • 量子化の選択(GGUF IQ, NVFP4, FP8)がモデルごとに品質と速度にどう影響するかを実測する

ツール構成(現状)

ツール役割
ik_llama.cppメインの推論サーバー。GPU 部分オフロード対応
Zed + MCP対話フロント。OpenAI 互換 API 経由
AiderCLI コード編集。DIFF ベースで既存リポジトリ修正
ctree + pathfinderMCP ツールとしてコンテキスト効率を改善

vLLM は計画にはあるが、現状は ik_llama.cpp の部分オフロードのほうが柔軟に組み合わせを試せるため、こちらを主力にしている。


モデル試行履歴

2026 年 1 月〜3 月にかけて試したモデルの時系列記録。cold storage のアーカイブから取得。

2026年1月

日付モデル備考
01/04Qwen3-VL-32B-InstructGUI Agent、Tool Use 検証
01/04IQuest-Coder-V1-40B-Instruct (GGUF)SWE-Bench 高スコア、Dense コーディングモデル
01/04Hermes-4.3-36B指示忠実度、Function Call 安定性検証
01/05gpt-oss-120b (GGUF)CPU レーン候補、120B Dense
01/05Hermes-4-70B-FP870B FP8、GPU 単体で載るか検証
01/05Llama-4-Scout-17B-16E-Instruct (GGUF)MoE、17B active
01/09Llama-3.3-70B-Instruct-NVFP4NVFP4 量子化の品質検証
01/09Llama-4-Scout-17B-16E-Instruct-NVFP4NVFP4 版比較
01/09Command-A-Reasoning-NVFP4推論特化モデル
01/09IQuest-Coder-V1-40B-Loop-Instruct-NVFP4Loop 版 NVFP4
01/09MiroThinker-v1.5-30B30B 思考モデル
01/09IQuest-Coder-V1-40B-Loop-InstructLoop 版オリジナル
01/09IQuest-Coder-V1-40B-InstructDense オリジナル
01/11Llama-4-Maverick-17B-128E-Instruct (GGUF)128 expert MoE
01/11plamo-2-translate翻訳特化モデル
01/11functiongemma-270m-it軽量 Function Call テスト
01/11gemma-3-270m-it-NVFP4超軽量 NVFP4
01/11gemma-3-27b-it-NVFP4A1627B NVFP4
01/11gpt-oss-20b20B Dense
01/11gemma-3-27b-it27B オリジナル
01/11Qwen3-Coder-30B-A3B-Instruct-NVFP4MoE コーダー、3B active
01/11gpt-oss-120b120B オリジナル重み
01/11Monstral-123B-v2-NVFP4123B MoE NVFP4
01/11LTX-2動画生成モデル
01/12Mixtral-8x22B (imatrix GGUF)8x22B MoE
01/20Nemotron-3-Nano-30B-A3B-NVFP4NVIDIA MoE 30B
01/20Qwen3-Coder-30B-A3B-Instruct-FP8FP8 版比較
01/22GLM-4.7-Flash7B Flash モデル

2026年2月

日付モデル備考
02/05Nemotron-3-Nano-30B-A3B-NVFP4 (nvidia公式)公式 NVFP4 再検証
02/13Qwen3-Next-80B-A3B-Thinking (GGUF)80B MoE Thinking
02/14Step-3.5-Flash (GGUF)Flash 系
02/15Kimi-K2.5 (GGUF)1T MoE 量子化
02/15GLM-5 (GGUF)GLM 次世代
02/15GLM-4.7-Flash (GGUF)GGUF 版 Flash
02/15GLM-4.7-Flash-Uncensored (imatrix GGUF)検閲なし版
02/15Qwen3-Coder-Next (GGUF)Next 世代コーダー
02/16DeepSeek-V3.2-Speciale (GGUF)V3.2 特化版
02/16gpt-oss-120b-NEO (imatrix GGUF)NEO imatrix 版
02/17MiniMax-M2.5 (GGUF)230B MoE
02/17Qwen3-Coder-Next-NVFP4NVFP4 版
02/18Step-3.5-Flash (GGUF, ubergarm)別量子化
02/18Ace-Step1.5音楽生成モデル
02/18Voxtral-Mini-4B-Realtime音声リアルタイム
02/18FLUX.2-klein-9B画像生成
02/18GLM-5 (GGUF, ubergarm)別量子化
02/18LFM2-8B-A1BLiquid Foundation Model
02/19LFM2-8B-A1B (GGUF)GGUF 版
02/19LFM2.5-1.2B-Thinking超軽量 Thinking
02/19LFM2.5-VL-1.6B超軽量 Vision-Language
02/19LFM2.5-1.2B-Instruct超軽量 Instruct
02/19Devstral-2-123B-Instruct (GGUF)123B コーディング
02/19Qwen3.5-397B-A17B (GGUF)397B MoE
02/20MiroThinker-v1.5-235B (GGUF)235B 思考モデル
02/21Qwen3.5-397B-A17B (GGUF, ubergarm)別量子化
02/23MiniMax-M2.5 (GGUF, AesSedai)別量子化
02/24Kimi-K2.5 (GGUF, ubergarm)別量子化
02/24Qwen3-Next-80B-A3B-Instruct-NVFP4NVFP4 版
02/24Qwen3-Next-80B-A3B-Thinking-NVFP4Thinking NVFP4
02/25Qwen3.5-35B-A3B (GGUF)35B MoE
02/25Qwen3.5-122B-A10B (GGUF)122B MoE
02/25Qwen3.5-122B-A10B-NVFP4NVFP4 版
02/25Qwen3.5-27B27B Dense
02/25Qwen3.5-122B-A10B (GGUF, ubergarm)別量子化

2026年3月

日付モデル備考
03/02Nemotron-Nano-9B-v2-Japanese (GGUF)日本語特化
03/02Nemotron-Nano-9B-v2-Japaneseオリジナル
03/03Qwen3.5-27B (GGUF, bartowski)GGUF 版
03/03Qwen3.5-27B (GGUF, ubergarm)別量子化
03/06pplx-embed-context-v1-0.6bPerplexity 埋め込み
03/06pplx-embed-v1-0.6bPerplexity 埋め込み
03/06pplx-embed-context-v1-4b4B 埋め込み
03/06pplx-embed-v1-4b4B 埋め込み

傾向

3 ヶ月の試行を振り返ると、いくつかの傾向が見える。

  • 1月: 基本的なモデル選定。Dense コーディングモデル(IQuest-Coder 40B)と MoE(Scout, Maverick)の比較、NVFP4 量子化の品質検証が中心
  • 2月前半: GLM, Kimi, DeepSeek など中国系モデルの評価が増える。Flash 系の軽量モデルも試行
  • 2月後半: Qwen3.5 世代の MoE(397B, 122B, 35B)が中心に。量子化手法ごとの比較(同一モデルの GGUF/NVFP4/FP8 を複数試す)が増える
  • 3月: 日本語特化モデル(Nemotron-Nano-9B-v2-Japanese)と埋め込みモデル(Perplexity)の検証に移行

全体を通して、同一モデルの異なる量子化を複数ダウンロードしているケースが多い。これは ik_llama.cpp での部分オフロード時に、量子化レベルが GPU/CPU 分業の効率に直結するためだ。


今後

計画の Dagster パイプライン + 日次 LoRA 更新はまだ実装していない。現状の試行錯誤から得られた知見をもとに、次のステップとして進めたい。

  • ik_llama.cpp の部分オフロードで安定したモデル組み合わせを確定させる
  • Dagster で冪等パイプラインを構築し、CPU レーンを非同期処理専用にする
  • GPU レーンのベースモデルに対して、Dagster asset からの日次 LoRA 適用を開始する
  • ctree + pathfinder の MCP ツールを Dagster asset の入力として組み込む