RTX 4060 8GBでローカルAIコーディングエージェントを動かす — Ollama + オープンソースLLM実践ベンチマーク

Ollama + オープンソースLLM実践ベンチマーク — セキュリティ分析、ブログ作成、ツール呼び出しまで


緒論

クラウドAIサービスの費用が負担になるとき、ローカルGPUでコーディングエージェントを動かせたらどうだろうか?RTX 4060 8GBという最も一般的なミドルレンジGPUで、オープンソースLLM 3種類を実戦タスクでテストしました。Ollama v0.30.6を使用し、Qwen 3.5 4B、Qwen 3.6 35B、Gemma4 12Bを同一条件で比較しました。

結論から言うと — コーディング補助は可能。文章作成は不可能。 そして、その境界線は思ったよりも明確です。


1. テスト環境

項目 スペック
GPU NVIDIA RTX 4060 8GB GDDR6
CPU Intel i7-14700K (20C/28T)
RAM 32 GB
OS Windows 11
ランタイム Ollama v0.30.6

テストモデル3種類:

モデル パラメータ 量子化 VRAM
Qwen 3.5 4B 4.2B Q4_K_M (4-bit) 3,173 MB
Qwen 3.6-35B-A3B 34.7B (アクティブ3B) IQ2_M (2-bit) 6,091 MB
Gemma4 12B 11.9B Q4_K_M (4-bit) 5,743 MB

Qwen 3.6は35Bモデルですが、MoE構造のためアクティブパラメータは3Bレベルです。8GB VRAMに合わせるには、2-bitの極限量子化が必要でした。


2. セキュリティ脆弱性分析 — コーディングは可能

Express.jsのコードに5つのセキュリティ脆弱性を意図的に挿入し、各モデルに「すべて見つけて修正コードを提示せよ」と要求しました。

モデル 発見数 時間 tok/s 特徴
Qwen 3.5 3.5/5 22秒 69.5 最速。トークン偽造は備考欄にのみ言及
Qwen 3.6 4/5 33秒 55 品質最高。JSON構造が完璧
Gemma4 4/5 154秒 17.3 最も遅いが、全体を統合した修正コードを提供

SQLインジェクション2件、パス・トラバーサル、トークン偽造は、3モデルすべてが正確に検出しました。攻撃シナリオ(' OR '1'='1../../etc/passwd)も具体的で、修正コード(パラメータバインディング、JWT変換、path.resolve検証)も実戦投入可能なレベルでした。

ただし、「トークンなしでもnext()が呼び出され、認証なしで通過する」という5番目の脆弱性は、3モデルすべてが見落としました。 これはコードの流れ全体を追跡して初めて見える微妙なバグであり、12B以下のモデルの限界を示しています。


3. Thinkingモード — スマートだが欲張りすぎる

Qwen 3.5と3.6は推論モデルであるため、すべての応答で「thinking」プロセスを最初に生成します。これが問題です。

コンテキスト4096トークンでは、モデルはthinkingばかりで実際の回答を出力できずに停止してしまいました。8192に増やすと解消され、16384では短いコーディング問題(O(n²)→O(n)最適化)を1.4秒で77トークンで正確に解きました。

核心となる公式はこうです:

  • Thinkingに十分な紙(コンテキスト)を与えれば、正確で速い
  • 紙が不足すると、考えるばかりで時間が過ぎてしまう

/no_thinkタグでthinkingをオフにしようとしましたが、GGUF環境では機能しませんでした。Ollama CLIの--nothinkフラグも空の応答を返すだけでした。


4. ブログ作成 — ここが壁

同じモデルたちに今日のベンチマークデータを与え、韓国語のブログ記事を書いてもらうよう依頼しました。結果は悲惨なものでした。

  • Gemma4: 韓国語のプロンプトに対し中国語で応答。内容もテストデータではなく一般的なOllamaガイド
  • Qwen 3.6: 韓国語で書いたもののExpress.jsコードチュートリアルに話題が逸脱
  • Qwen 3.5: やはり中国語。しかも同じ内容を繰り返し出力するループに陥る

プロンプトを強化してみました。「必ず韓国語のみで」、「以下のデータをそのまま使用せよ」、「存在しない情報の追加禁止」。結果は多少改善されましたが、本質的には同じでした。Qwen 3.6が392トークンのメモを書き出したのが最善でした。

コーディングで4/5の正答率だったモデルが、なぜブログ作成で全滅するのか? 2つの原因が考えられます:

  1. 2-bit量子化により言語識別能力が低下した。 韓国語と中国語のトークン確率が似てしまい、混同する。
  2. 「正解のある問題」と「創作」は異なる能力である。 コード分析はパターンマッチングに近いが、与えられたデータを読み込み、構造化された文章にまとめることは、はるかに高い指示遵守能力を要求する。

5. ツール呼び出し — Gemma4のみ可能

Ollamaモデルのcapabilitiesフィールドを確認すると:

  • Gemma4 12B: completion, tools, thinking, vision
  • Qwen 3.5/3.6: completionのみ

Gemma4に「YAML検証Pythonスクリプトを作成して実行せよ」と要求すると、96秒で58行のスクリプトを生成し、run_pythonのtool_callまで成功しました。テストフィクスチャ4つを自動生成し、yaml.safe_loadでパース検証まで行う完成度でした。

ただし、これはシングルターンでの成功です。実行 → エラー → 修正 → 再実行のマルチターンエージェントループは、コンテキストの蓄積により8192トークンを圧迫することになり、安定した運用は困難です。


6. 結論 — インターンは可能、シニアは不可能

領域 可否 備考
単一関数のバグ修正 1.4~22秒
コードレビュー (単一ファイル) 4/5の精度
YAML/JSON検証 15~25秒
ツール呼び出し (Gemma4) シングルターン限定
韓国語ブログ作成 言語混同 + 話題逸脱
マルチファイルデバッグ コンテキスト不足
複雑なルール遵守 指示遵守能力の限界

「ファイル一つ、関数一つ、明確な指示」 — この範囲内であれば、ローカルLLMはコストゼロのコーディングインターンとして利用できます。上位エージェント(Opus, Sonnet)がタスクを細かく分割して投げ、結果を検証する構造であれば、実戦投入も可能です。

ただし、現在の限界はGPUではなく量子化です。8GB VRAMに35Bを詰め込むには2-bitまで削る必要があり、その瞬間に繰り返し崩壊、言語混同、創作不能が伴います。同じモデルが24GB GPUで4-bitで動作するなら、今日失敗したブログ作成も可能になるかもしれません。

RTX 4060はPoCを検証するのに十分でした。頭脳は機能するが体がついてこない — それを定量的に証明した一日でした。