Gemma 4ってめっちゃクレバー。だがしかし
2026年4月にGoogleがリリースしたGemma 4ですが、なかなかゾクゾクするほど知的な会話が楽しめて、ローカルLLMもついにここまで来たか、と感慨深くなっております。
が、遅い。ガチで遅い。
ファーストトークンが返ってくるまで1分~数分待たされます。パラメータ数が1番多い31B版の話とはいえ、RTX 5090を使っても数分待たされ、トークン生成速度は10~15token/秒ちょい。これはどんなに優秀なLLMだろうが萎えます。せっかちな自分にとっては非常にきつい。
しかし!Gemma 4のリリースに先立つこと1週間ほど前に、「TurboQuant」というKVキャッシュのメモリ使用量を劇的に削減する最新の量子化技術が発表されたのであります。
Google、LLM実行時の消費メモリを6分の1に削減する「TurboQuant」(PC Watch)
ちょっとLLMをかじったことのある方なら、「え?量子化?どうせ回答の品質が落ちるんじゃないの?」と、怪訝な顔つきになってしまうかもしれませんが、素晴らしい技術(語彙力・・・)によって、量子化による品質低下は無視できる程度に軽減しているとのことです。
今度は、「え?でもすぐには使えないんじゃないの?1年先とかなら絵に描いた餅っすよ」と考える方もいらっしゃるかもしれません。というか私がそう思った訳ですが、
もう使えるんです。
なんということでしょう。びっくりですね。TurboQuant版をフォークしてくれた人(人々?)には感謝しかありません。KVキャッシュのサイズが縮小するということは、より大きなパラメータ数も持つモデルをVRAMに載せることが出来る、また、各種計算量が減るためトークン生成速度が向上する、と良いことづくめです。どのくらいパフォーマンスが向上するかは後ほど触れるとして、導入手順をご案内します。あなたも最新のKVキャッシュ量子化技術、「TurboQuant」の恩恵を受けましょう。
前提条件
色々なハードウェア環境が存在するなかで、すべての環境に対応する導入手順を記載するのは言うまでもなく不可能です。ローカルでLLMを動かす環境としては2026年4月現在、比較的一般的だと思われる、以下の環境について説明をしていきます。
- WSL2上の Ubuntu 24.04 (ネイティブのUbuntuでも恐らくほぼ同じ手順で動くと思われる)
- GPUは Geforce RTX 5090 または Geforce RTX 3060 12GB
導入手順
まずは任意の場所に作業ディレクトリを作成します。
$ mkdir workspace $ cd workspace
cuda-toolkitをセットアップします。2026年4月現在バージョン13.2まで出ていますが、unslothのGemma 4のモデルページでバージョン13.2が非推奨である旨の記載があることと、13.2では私自身llama.cppのビルドをうまくできませんでしたので、バージョン12.8をインストールします。
$ wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin $ sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600 $ wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-keyring_1.1-1_all.deb $ sudo dpkg -i cuda-keyring_1.1-1_all.deb $ sudo apt update $ sudo apt -y install cuda-toolkit-12.8 $ rm -f cuda-keyring_1.1-1_all.deb
nvccコマンドにパスを通します。テキストエディタはお好きなもので。以下ではnanoを使っています。
$ nano ~/.bashrc 以下の2行を追記 export PATH=/usr/local/cuda/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH .bashrcを再読み込み $ source ~/.bashrc
バージョン12.8がインストールされたことを確認します。
$ nvcc --version nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2025 NVIDIA Corporation Built on Fri_Feb_21_20:23:50_PST_2025 Cuda compilation tools, release 12.8, V12.8.93 Build cuda_12.8.r12.8/compiler.35583870_0
次にTurboQuant対応版の llama.cpp をソースからビルドします。gitが入っていない方はインストールしておいてください。
TurboQuant対応版を開発しているブランチをクローンします。
$ git clone -b feature/turboquant-kv-cache --recursive https://github.com/TheTom/llama-cpp-turboquant.git $ cd llama-cpp-turboquant/ $ mkdir gguf
モデルファイルをダウンロードします。RTX 5090なら31Bの4ビット量子化モデル、RTX 3060 12GBならE4Bの6ビット量子化モデル辺りまで余裕です。もっとぎりぎりまでVRAMを使い切りたいという方は、より攻めたモデルを適宜ダウンロードしてください。
RTX 5090の場合(31Bの場合) $ curl -L https://huggingface.co/unsloth/gemma-4-31B-it-GGUF/resolve/main/gemma-4-31B-it-UD-Q4_K_XL.gguf?download=true -o ./gguf/gemma-4-31B-it-UD-Q4_K_XL.gguf RTX 3060 12GBの場合(E4Bの場合) $ curl -L https://huggingface.co/unsloth/gemma-4-E4B-it-GGUF/resolve/main/gemma-4-E4B-it-Q6_K.gguf?download=true -o ./gguf/gemma-4-E4B-it-Q6_K.gguf
お好みでビジョンエンコーダをダウンロードします。これを使うと画像をLLMに入力して、画像について説明させることが出来ます。いわゆるマルチモーダルLLMです。
RTX 5090の場合(31Bの場合) $ curl -L https://huggingface.co/unsloth/gemma-4-31B-it-GGUF/resolve/main/mmproj-BF16.gguf?download=true -o ./gguf/mmproj-BF16.gguf RTX 3060 12GBの場合(E4Bの場合) $ curl -L https://huggingface.co/unsloth/gemma-4-E4B-it-GGUF/resolve/main/mmproj-BF16.gguf?download=true -o ./gguf/mmproj-BF16.gguf
llama.cppのビルドの準備をします。cmakeコマンドを使うのでパッケージをインストールしています。
$ dpkg -l | grep -q 'cmake ' || sudo apt -y install cmake RTX 5090の場合 $ cmake -B build -DGGML_CUDA=ON -DGGML_NATIVE=OFF -DBUILD_SHARED_LIBS=OFF -DCMAKE_CUDA_ARCHITECTURES=120a -DGGML_CUDA_FA_ALL_QUANTS=ON RTX 3060 12GBの場合 $ cmake -B build -DGGML_CUDA=ON -DGGML_NATIVE=OFF -DBUILD_SHARED_LIBS=OFF -DCMAKE_CUDA_ARCHITECTURES=native -DGGML_CUDA_FA_ALL_QUANTS=ON
llama.cppをビルドします。PCのスペックに依存しますが、数分はかかります。
$ cmake --build build --config Release -j$(nproc)
ここまでの手順でllama.cppが使えるようになりました!
以下の手順ではllama.cppをサーバモードで起動する手順を記載します。Open WebUIなど、お好みのフロンドエンドからアクセスしてみてください。reasoningオプションやportオプションはお好みで変更してください。
RTX 5090の場合(31Bの場合) $ ./build/bin/llama-server -m gguf/gemma-4-31B-it-UD-Q4_K_XL.gguf -mm gguf/mmproj-BF16.gguf --n-gpu-layers 99 --no-mmap --flash-attn on --host 0.0.0.0 --port 8089 --cache-type-k turbo3 --cache-type-v turbo3 --reasoning off RTX 3060 12GBの場合(E4Bの場合) $ ./build/bin/llama-server -m gguf/gemma-4-E4B-it-Q6_K.gguf -mm gguf/mmproj-BF16.gguf --n-gpu-layers 99 --no-mmap --flash-attn on --host 0.0.0.0 --port 8089 --cache-type-k turbo3 --cache-type-v turbo3 --reasoning off
起動後のログでKVキャッシュサイズを確認できます。コンテキストウィンドウ192Kでこのサイズ感です。
llama-server[12750]: llama_kv_cache: size = 3000.00 MiB (196608 cells, 10 layers, 4/1 seqs), K (turbo3): 1500.00 MiB, V (turbo3): 1500.00 MiB
llama-serverをサービス化したい場合は、以下の手順を追加で行ってください。WSL2起動時にllama-serverも起動するようになります。ユーザー名やモデルファイル名などは自分の環境に応じて変更してください。詳しい説明は割愛します。
$ sudo nano /etc/systemd/system/llama-server.service
[Unit]
Description=Llama-cpp-turboquant Server
After=network.target
[Service]
User=ユーザー名
WorkingDirectory=/home/ユーザー名/workspace/llama-cpp-turboquant
ExecStart=/home/ユーザー名/workspace/llama-cpp-turboquant/build/bin/llama-server \
-m gguf/gemma-4-31B-it-UD-Q4_K_XL.gguf \
-mm gguf/mmproj-BF16.gguf \
--n-gpu-layers 99 \
--no-mmap \
--flash-attn on \
-c 131072 \
--host 0.0.0.0 \
--port 8089 \
--cache-type-k turbo3 \
--cache-type-v turbo3 \
--reasoning off
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
$ sudo systemctl daemon-reload
$ sudo systemctl start llama-server.service
$ sudo systemctl enable llama-server.service
ログは、以下のコマンドで確認出来ます。
$ sudo journalctl -u llama-server.service -f
パフォーマンスについて
llama-benchは個人的にあまり意味がないと思っているので、超ざっくりと体感レベルの話で申し訳ないのですが、Gemma 4 31B x RTX 5090の組み合わせで以下の通りです。
■TurboQuant導入前(KVキャッシュ量子化8ビット)
ファーストトークン出力まで: 1分~数分レベル
トークン生成: 10~15token/秒
■TurboQuant導入後
ファーストトークン出力まで: 数秒~十数秒レベル
トークン生成: 40 token/秒前後
素晴らし過ぎか
おまけ
ここではGemma 4 31Bと特製システムプロンプトを使ったLLMの回答内容の一部をご紹介します。この生意気さ、癖になるw
おほほほ!〇〇さん、言い訳までして!
でも、その言い訳、あまりにも……あまりにも「素人」すぎて、笑いが止まりませんわ!
いいですか、よく聞きなさい。そのエラーメッセージのpython3-xyzのxyzというのは、「ここにパッケージ名を入れて探しなさい」という**例え(プレースホルダー)**ですわ!
「apt install python3-influxdb-clientというパッケージが必ず存在する」と言っているわけではありませんの!
つまり、OSはこう言っているんですわ。
「システムを汚したくないから、pipは使わせませんわよ。もしどうしてもシステム全体に入れたいなら、もしOSの公式リポジトリにpython3-なんとかというパッケージがあるなら、それを使ってインストールしなさい。なければ、おとなしく仮想環境(venv)を使いなさい」と!
それを文字通りに受け取って、適当にapt installしようとするなんて……。
〇〇さん、あなた、英語のドキュメントを読み飛ばす癖がありますわね?
めたん様の最終宣告ですわ!
文字通りに受け取りすぎ!:python3-xyzをそのまま信じてaptを叩くなんて、AIに「適当に書いて」と言われて「適当に」と書き込むようなものですわ。
エンジニアとしての基礎不足:pipのライブラリがすべてaptで提供されているわけではない、という基本を思い出してちょうだい!
いいですか?もう一度言いますわよ。
「仮想環境 (venv) を使いなさい」。これが現代のPythonの作法です。
さあ、いいわけは終わりですわ!
もう一度、.venvを作り、そこにpip installし、.serviceファイルのパスを仮想環境の python に書き換えなさい。
もし次こそ成功しなかったら……その時は、あなたのその「いいわけ」をすべて録音して、全世界に公開して差し上げますわよ!
さっさとやり直しなさいまし!