「q4_0とq8_0の違いが分からず、デフォルトのまま使い続けている」
そんな悩みを持つインフラエンジニアやサーバー管理者は多い。量子化の仕組みを知らないままモデルを選ぶと、VRAMをオーバーして起動失敗になるか、逆に精度が低すぎて業務に使えない回答が返ってくる。Ollamaを使いこなすうえで、量子化レベルの選定は避けて通れないポイントだ。
この記事では、Ollamaで使える量子化フォーマット(fp16・q8_0・q4_0・q4_K_M)の仕組みと、VRAM容量別の最適な選び方を手順付きで解説する。
この記事のポイント
・ollama pullのタグにサフィックスを付けるだけで量子化レベルを選択できる
・fp16→q8_0→q4_0の順にVRAMは半減するが回答精度も段階的に低下する
・q4_K_Mはq4_0より精度が高くq8_0より軽量な、VRAM節約と品質のバランス型
・nvidia-smiとollama psでVRAM使用量を実測してから量子化レベルを決める
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
なぜ量子化モデルを正しく選ぶ必要があるのか
量子化(Quantization)とは、LLMの重みパラメータを低ビット数で表現することでファイルサイズとVRAM使用量を削減する技術だ。Mistralの7Bモデルをfp16で保存すると約14GB必要だが、q4_0に量子化すると約4GBに圧縮できる。量子化レベルを考慮せずにモデルを起動しようとすると、「model requires 14GiB but only 8GiB available」といったOOMエラーが発生する。OllamaはVRAMの空き容量を確認し、不足していれば起動を拒否する。
なお、Ollamaのセットアップ自体がまだの場合は、Ubuntu ServerでローカルLLMを構築する方法|Ollamaで機密データを外に出さず業務AIを動かす完全ガイドを参照してほしい。
量子化フォーマットの仕組みを理解する:fp16・q8_0・q4_0・q4_K_Mの違い
Ollamaのモデルタグ末尾(例: `llama3.3:70b-instruct-q4_0` の `-q4_0` 部分)で量子化レベルを指定する。主要なフォーマットの特徴を整理する。・fp16(16ビット浮動小数点): 1パラメータあたり2バイト。元の精度に最も近く、VRAMを最も消費する。実験・研究用途向き。
・q8_0(8ビット量子化): 1パラメータあたり約1バイト。fp16比でVRAMが約半分。精度低下はほぼ体感できない水準で、VRAMに余裕があればこれを選ぶ。
・q4_0(4ビット量子化): 1パラメータあたり約0.5バイト。fp16比でVRAMが約1/4。速度は最速だが、複雑な論理推論や日本語の細かいニュアンスで精度低下が出やすい。
・q4_K_M(4ビット混合精度K量子化): 重要なレイヤーを5~6ビット相当の精度で保ちつつ、全体平均を4ビット相当に収める。q4_0より高精度でq8_0より軽量な、バランス型の定番フォーマット。
VRAMの目安計算式は「パラメータ数(B)× ビット数(バイト)× 1.2(オーバーヘッド係数)」だ。
タグなしで `ollama pull llama3.3` を実行するとq4_K_M相当が取得される。量子化レベルを明示したい場合は `-q4_0` や `-q8_0` をサフィックスとして付与する。
Ollamaで量子化タグを指定してモデルを取得する手順
量子化レベルを指定してモデルを取得するには、pullコマンドにタグを付与するだけだ。手順を順に確認する。1. 取得済みモデルと量子化タグを確認する
`ollama list` で取得済みモデルの一覧と各モデルのサイズを確認できる。# 取得済みモデルの一覧を確認する $ ollama list NAME ID SIZE MODIFIED llama3.3:70b-instruct-q4_K_M a6eb4748fd29 43 GB 2 days ago mistral:7b-instruct-q4_0 f974a74358d6 4.1 GB 5 days ago phi4:14b-instruct-q4_0 3b63a0024fb1 8.9 GB 1 week ago
2. 量子化タグを指定してpullする
量子化レベルをタグで明示して取得する。# q4_0で取得(VRAM最小・速度最優先) $ ollama pull llama3.3:70b-instruct-q4_0 pulling manifest ... pulling 966de95ca8a6... 100% ▕████████████████████████▏ 38 GB success # q8_0で取得(精度優先) $ ollama pull mistral:7b-instruct-q8_0 pulling manifest ... pulling 5b7c4fb0dfe2... 100% ▕████████████████████████▏ 7.7 GB success
3. 取得後に動作確認する
モデルを取得したらワンラインプロンプトで動作とGPU推論の状態を確認する。# 動作確認(1行プロンプトで即時レスポンスを確認) $ ollama run mistral:7b-instruct-q4_0 "Linuxのファイルシステムを一言で説明してください" Linuxのファイルシステムとは、ディスク上のデータを階層的なディレクトリ構造で管理する仕組みです。 # 起動後にGPU推論できているか確認する $ ollama ps NAME ID SIZE PROCESSOR UNTIL mistral:7b-instruct-q4_0 f974a74358d6 4.3 GB 100% GPU 4 minutes from now
VRAM使用量をコマンドで確認する方法
計算値よりも実測値で確認することが重要だ。モデルのアーキテクチャによって実際のVRAM使用量は異なる。1. nvidia-smiでリアルタイム監視する
# 1秒ごとに更新表示(Ctrl+Cで終了) $ watch -n 1 nvidia-smi # GPU名・VRAM使用量・合計VRAM・使用率のみ絞り込んで表示 $ nvidia-smi \ --query-gpu=name,memory.used,memory.total,utilization.gpu \ --format=csv,noheader,nounits NVIDIA GeForce RTX 3090, 4352, 24576, 23 # 解読: 使用中 4,352MB / 合計 24,576MB(24GB) / GPU使用率 23%
2. ollama psで現在ロード中のモデルを確認する
# ロード中モデルのVRAM使用量を確認する $ ollama ps NAME ID SIZE PROCESSOR UNTIL llama3.3:70b-instruct-q4_0 a6eb4748fd29 41 GB 100% GPU 4 minutes from now mistral:7b-instruct-q4_0 f974a74358d6 4.3 GB 100% GPU 2 minutes from now
VRAM容量別モデル選定の目安一覧
GPUのVRAM容量ごとの目安を整理した。モデルのアーキテクチャによって前後するため `ollama ps` で実測値を必ず確認すること。VRAM 6~8GB(RTX 3060・RTX 4060 Ti等)
・Mistral:7b-instruct-q4_0(約4GB)~ 動作可
・Mistral:7b-instruct-q8_0(約8GB)~ 8GB環境でギリギリ動作可
・Gemma 3:9b-instruct-q4_0(約6GB)~ 動作可
VRAM 16GB(RTX 3080・RTX 4080・A10等)
・Phi-4:14b-instruct-q4_0(約9GB)~ 動作可
・Phi-4:14b-instruct-q8_0(約15GB)~ ギリギリ動作可、精度は良好
VRAM 24GB(RTX 3090・RTX 4090・RTX A5000等)
・Phi-4:14b-instruct-q8_0(約15GB)~ 動作可
・Gemma 3:27b-instruct-q4_0(約17GB)~ 動作可
・Gemma 3:27b-instruct-q8_0(約29GB)~ 超過のためNG
VRAM 48GB以上(A40・RTX 6000 Ada・A100 40GB等)
・Llama3.3:70b-instruct-q4_0(約40GB)~ 動作可
・Llama3.3:70b-instruct-q8_0(約70GB)~ 48GBでは超過のためNG
モデルの選定自体についてはローカルLLMのモデルを比較する方法|Llama3.3・Mistral・Gemma・Phi-4をUbuntuで使い分けるポイントを参照してほしい。
量子化レベルを切り替えて速度・精度を実測する手順
同一プロンプトで量子化レベルごとの速度を比較して最終判断する。1. 推論速度(tokens/s)をAPIで測定する
OllamaのREST APIはレスポンスに `eval_count`(生成トークン数)と `eval_duration`(推論時間・ナノ秒)を含む(`jq` は `sudo apt install jq` で追加)。# q4_0モデルの推論速度を測定する $ RESOBJ=$(curl -s http://localhost:11434/api/generate \ -d '{"model":"phi4:14b-instruct-q4_0","prompt":"Linuxのプロセス管理について200文字で説明してください","stream":false}') $ echo "$RESOBJ" | jq '{tokens_per_s:(.eval_count/(.eval_duration/1e9))}' {"tokens_per_s": 24.7}
量子化に関するよくあるトラブルと対処法
1. 「model requires Xib, only Xib VRAM available」が出る
VRAMが不足している。対処法は2つだ。・より低い量子化レベル(例: q8_0→q4_0)のタグを指定してpullし直す
・パラメータ数の小さいモデル(例: 70B→14B)に変更する
CPUオフロードは速度が1~3 tokens/s程度まで落ちるため本番環境では非実用的だ。この点に注意が必要で、量子化レベルかモデルサイズでの対処が正しい手順だ。
2. pullが途中で止まってモデルが起動できない
ダウンロードが中断されるとモデルファイルが不完全な状態になり、次回起動時に「error loading model: unexpected EOF」などのエラーが出る。モデルを削除して取得し直す。# 不完全なモデルを削除する $ ollama rm phi4:14b-instruct-q4_0 deleted 'phi4:14b-instruct-q4_0' # 取得し直す $ ollama pull phi4:14b-instruct-q4_0 pulling manifest ... pulling c0669888d58e... 100% ▕████████████████████████▏ 8.9 GB success
3. 回答精度が低く業務に使えないと感じた
現在q4_0を使っている場合は、まずq4_K_Mに切り替える。VRAMの増加は数GB程度で精度は大幅に改善することが多い。それでも不十分な場合はq8_0を試す。量子化を上げる前に、社内でChatGPTが使えないときの代替手段|機密データを守るローカルLLMという選択肢で用途の適性を確認してからでも遅くない。本記事のまとめ
| 確認・操作したいこと | コマンド |
|---|---|
| 量子化タグを指定してモデル取得 | ollama pull llama3.3:70b-instruct-q4_0 |
| 取得済みモデルの一覧確認 | ollama list |
| VRAMリアルタイム監視 | watch -n 1 nvidia-smi |
| 起動中モデルのVRAM使用量確認 | ollama ps |
| 推論速度(tokens/s)の測定 | curl http://localhost:11434/api/generate -d '{...}' | jq '.eval_count/(.eval_duration/1e9)' |
量子化設定とVRAM管理を実機GPUで体験する
Ollamaの量子化レベル比較とVRAMチューニングを実機GPU環境で手を動かしながら習得したい方向けに、「ローカルAIマスターセミナー」を開催しています。
少人数(最大8名)ZOOMハンズオン形式で実施しています。
・Ubuntu ServerでローカルLLMを構築する方法|Ollamaで機密データを外に出さず業務AIを動かす完全ガイド
・社内でChatGPTが使えないときの代替手段|機密データを守るローカルLLMという選択肢
・ローカルLLMのモデルを比較する方法|Llama3.3・Mistral・Gemma・Phi-4をUbuntuで使い分けるポイント
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 前のページへ:OllamaをLangChainと連携させる方法|PythonフレームワークでローカルLLMに会話履歴・チェーン処理・ツール統合を組み込む手順
- この記事の属するカテゴリ:ローカルLLMへ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます