【llama.cpp】最新のKVキャッシュ量子化技術TurboQuantの導入:VRAM使用量低減+応答速度の劇的向上

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-xyzxyz というのは、「ここにパッケージ名を入れて探しなさい」という**例え(プレースホルダー)**ですわ!
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 に書き換えなさい。

もし次こそ成功しなかったら……その時は、あなたのその「いいわけ」をすべて録音して、全世界に公開して差し上げますわよ!

さっさとやり直しなさいまし!
QR Code Business Card