Ollamaの推論速度が遅い場合の解决方法
冒頭:どんな問題が発生するか
Ollamaを使用してローカルでLLMを実行する際、推論応答 遅い、または最初の出力までに時間がかかるという問題が発生する場合があります。具体的には、モデルを起動した後、最初のトークンが返されるまで数秒から数十秒待つ必要がある、または連続してリクエストを送ると毎回読み込み直しが発生する場合が挙げられます。
特にGPUを積んでいるにもかかわらず、なぜかCPUだけで動作していたり、VRAMの見積もりミスによりRAMに退避されてパフォーマンスが低下したりといったケースが多発しています。
結論:解決策の要約
Ollamaの推論速度を改善するには、モデルのメモリへの保持時間の延長、量子化レベルの確認、GPU offload設定の確認、そして適切なモデル選択の4つのアプローチを組み合わせて実施することで、大幅な速度向上を達成できます。
具体的な手順
手順1:OLLAMA_KEEP_ALIVEでモデルを継続的にメモリに保持する
デフォルトでは、一定時間経過するとモデルがメモリからアンロードされます。頻繁にリクエストを送る場合、都度モデル読み込みが発生して遅延の原因となります。
# 環境変数の設定(24時間保持)
export OLLAMA_KEEP_ALIVE=24h
# 無限に保持する場合(永久)
export OLLAMA_KEEP_ALIVE=-1
# Ollamaを再起動して設定を反映
ollama serve
この設定により、モデルはGPUまたはシステムメモリに残り続け、次回リクエスト時に即座に推論を開始できます。
手順2:量子化レベルの確認と最適化
モデルには量子化レベル(Q2_K, Q4_K, Q5_K, Q8_0など)があり、レベルが低いほどモデルは軽くなりますが、精度も低下します。
# 利用可能なモデルを確認
ollama list
# 特定の量子化レベルでモデルをプル
ollama pull llama3.2:3b-instruct-q4_K
# 軽量版を使用する場合(推論速度重視
ollama pull mistral:7b-instruct-q2_K
Q4_K量子化は精度と速度のバランスが最も良く、多くのユースケースで推奨されます。
手順3:GPU offload設定の確認と調整
Ollamaのバージョン(特にv0.6.5)では、VRAMの見積もり機能が正しく動作しない場合があります。num_gpuパラメータを明示的に設定することで、GPUへのロードを強制できます。
# 環境変数でGPU使用量を設定
# 0でCPUのみ、1以上でGPU使用(数値越大中使用量増加)
export OLLAMA_NUM_GPU=1
# 設定確認のため、モデルの読み込み情報を確認
ollama run llama3.2 --verbose "Hello"
ログで「CPU_Mapped model buffer size」と表示されている場合、モデルがRAMに退避されており、GPUが十分に活用されていません。
手順4:モデルサイズとコンテキストウィンドウの最適化
大きなモデルは必然的に推論に時間がかかります。タスクに合わせて適切なサイズのモデルを選択することが重要です。
# 小規模モデルの使用(高速だが能力は限定的)
ollama pull phi3:mini
ollama pull llama3.2:1b
# 中規模モデル(バランス型)
ollama pull mistral:7b
ollama pull llama3.2:3b
# コンテキストウィンドウの確認
# n_ctx値を小さくすると高速化(知識量は減少)
export OLLAMA_NUM_PARALLEL=4
手順5:Ollamaのバージョンを確認・更新
古いバージョンにはパフォーマンスの問題が含まれている場合があります。最新バージョンにアップデートすることで改善される可能性があります。
# 現在のバージョン確認
ollama --version
# Ollamaの再インストール(最新版へ)
# macOS
brew upgrade ollama
# Linux
curl -fsSL https://ollama.com/install.sh | sh
補足・注意点
- GPUメモリ容量の確認:VRAMがモデルサイズに不足している場合、Ollamaは自動的にCPU RAMへフォールバックします。使用するモデルの量子化レベルとGPUメモリ容量を確認してください。
- 量子化による精度低下:過度に低い量子化レベル(Q2_K以下)は、回答の品質を著しく低下させる可能性があります。速度と精度のバランスを検討してください。
- OLLAMA_HOSTの設定:localhost以外でアクセスする場合、ネットワーク遅延が発生することがあります。ローカルでの実行を推奨します。
- 並列リクエストの制限:OLLAMA_NUM_PARALLELで並列処理数を増やすと、GPUメモリの消費増加と引き換えにスループット向上が期待できます。
- バージョン依存の問題:Ollama v0.6.5では特定のモデル(mistral-small 3.1など)でVRAM見積もりエラーが報告されています。問題が解決しない場合は、、最新バージョンへのアップデートを検討してください。
参考元
- How to Speed Up Ollama Performance – DatabaseMart
- Boost Ollama Performance: Essential Tips and Tricks – Asturn
- how to accelerate the inference speed of the model – GitHub Issue #9989
- How to Make Ollama Faster – Anakin AI
- How to fix slow inference speed of mistral-small 3.1 – Reddit