目次 / モデルの入手と設置

モデルの入手と設置

llama.cpp に読ませる「頭の中身」= Gemma4 のモデルを用意します。画像を扱うために、2 つのファイルが要ります — 本体の GGUF と、画像を見る目にあたる mmproj です。

用意するファイルは 2 つ。
  • モデル本体(例 gemma-4-12b-it-Q4_K_M.gguf)— 文章と推論の頭脳。
  • mmproj(例 mmproj-F16.gguf)— 画像を読むための部品。これが無いと画像を渡せません。

どのサイズ・どの量子化を選ぶ?

Gemma4 にはいくつかのサイズがあります。まずは 12B が扱いやすくおすすめ。VRAM が少ない人は E4B、最高精度を狙うなら 31B です。

サイズ向き目安のディスク/メモリ(4bit)
12B(推奨)精度と速度のバランス。最初の一本。約 7 GB
E4B(軽量)VRAM が少ない / とにかく軽く動かしたい。数 GB 程度
31B(最高精度)細部の読み取り重視。遅くても良い人向け。約 18 GB

量子化(ファイル末尾の Q4_K_M 等)は 圧縮の強さです。数字が大きいほど高品質で重くなります。迷ったら Q4_K_M(標準的なバランス)か、Unsloth の UD-Q4_K_XL(低ビットでも品質を保つ "Dynamic" 量子化)。

量子化ねらい
UD-Q4_K_XLUnsloth 推奨。4bit でも品質を保つ。迷ったらこれ。
Q4_K_M定番のバランス型。
Q8_0 / Q6_K高品質・大きめ。VRAM/メモリに余裕がある人。
UD-Q3_K_XL / UD-Q2_K_XLさらに小さく。メモリが厳しいとき。
VRAM の目安。 12B(4bit ≈ 7GB)は 8GB 級の GPU でも載ります。31B(≈18GB)は 16GB の GPU には載りきらず、共有メモリにあふれてかなり遅くなります(本 PoC で 1 枚あたり 2 分超)。31B は「速度を問わない」前提で。詳しくは 速度の目安

入手その1:Hugging Face から直接(おすすめ)

Ollama を使っていない人はこちらが素直です。Unsloth が配布している GGUF を使います。リポジトリは次の通り(本体 GGUF と mmproj が同じリポジトリに入っています)。

サイズHugging Face リポジトリ
12Bunsloth/gemma-4-12b-it-GGUF
E4Bunsloth/gemma-4-E4B-it-GGUF
31Bunsloth/gemma-4-31B-it-GGUF

※ ファイル名・配布状況は更新されることがあります。各リポジトリの 「Files」タブで実際の名前を確認してください(以下は 12B リポジトリで確認した実例)。

方法A:ブラウザでダウンロード(一番かんたん)

12B リポジトリの「Files」を開き、次の 2 ファイルの「↓」ボタンで落とします。

ファイルこれは何サイズ
gemma-4-12b-it-Q4_K_M.ggufモデル本体(または …-UD-Q4_K_XL.gguf)約 7 GB
mmproj-F16.gguf画像を読む部品(mmproj)約 175 MB

方法B:huggingface-cli でまとめて(速い・確実)

Python があれば pip install -U "huggingface_hub[cli]" のあと、欲しいファイルだけ指定して落とせます。

# 12B(Q4_K_M)+ mmproj を models/ に保存
huggingface-cli download unsloth/gemma-4-12b-it-GGUF \
  gemma-4-12b-it-Q4_K_M.gguf mmproj-F16.gguf \
  --local-dir ./models

方法C:llama-server に任せる(connect モード向け)

自分で llama-server を起動する(connect モード)なら、-hf でモデルと mmproj を自動ダウンロードさせられます(初回だけ時間がかかります)。

llama-server -hf unsloth/gemma-4-12b-it-GGUF:Q4_K_M \
  --jinja --reasoning-format deepseek --image-max-tokens 1120
-hf はファイルをキャッシュに置きます。アプリの managed モードはファイルのフルパスを指定する方式なので、その場合は方法A/Bでわかりやすい場所に保存するのが楽です。

どこに置く?

置き場所はどこでも構いません(アプリにフルパスで教えるだけ)。迷ったら、わかりやすく 1 フォルダにまとめておきます。

例) C:\models\gemma4\
      ├─ gemma-4-12b-it-Q4_K_M.gguf     ← モデル本体
      └─ mmproj-F16.gguf                ← 画像を読む部品

本体 GGUF と mmproj は対(ペア)です。サイズが違うと噛み合いません(12B の本体には 12B 用の mmproj を)。同じリポジトリのものを使えば確実です。

アプリに登録する

あとは 設定(LLM 接続) でモードに応じて指定するだけです。

# connect で自分で起動する例(ローカルのファイルを指定)
llama-server -m C:\models\gemma4\gemma-4-12b-it-Q4_K_M.gguf \
  --mmproj C:\models\gemma4\mmproj-F16.gguf \
  --jinja --reasoning-format deepseek --image-max-tokens 1120

入手その2:すでに Ollama を使っている人向け(補足)

Ollama で Gemma4 を入れているなら、そのダウンロード済みファイルを llama.cpp から流用できます(再ダウンロード不要)。Ollama は GGUF を「blob」として保存しています。

ollama pull gemma4:12b-it-qat        # まだなら取得(QAT = 低ビットでも高品質)

取得後、~/.ollama/models/blobs/(Windows は C:\Users\<あなた>\.ollama\models\blobs\)に sha256-… という名前で保存されます。このうち大きいファイルがモデル本体小さいほうが mmproj(projector)です。それを上の managed / connect でそのまま指定します。

QAT 版の projector(mmproj)は llama.cpp でそのまま読めます。本 PoC の検証環境での例(あくまで一例。ollama show 等で実際の対応を確認してください):
  • 12B QAT 本体 sha256-faff1a63… / mmproj は手持ちの mmproj-F16.gguf か内蔵 sha256-e70b0e5c…
  • 31B QAT 本体 sha256-0374ce7b… / 内蔵 projector sha256-8e239c9c…(1.2GB)
注意: Ollama の 非 QAT 版(gemma4:12b 等)の projector は llama.cpp で読めないことがあります。その場合は Hugging Face の mmproj-F16.gguf を使ってください。なお Pixubus EX はあえて Ollama を経由しません(Ollama 自体は画像を ~800px に縮めてしまうため)。ここで使うのは Ollama が落としたファイルだけです。理由は 仕組み へ。

モデルが置けたら、いよいよ接続です。