【Ollama】CPU推論の速度改善!実践的な最適化テクニック

OllamaのCPU推論が遅い!原因と改善方法

発生している問題

OllamaをGPUなしでCPUのみで運用している際に、推論速度が極端に遅く感じられることはありませんか?甚至は完全に動作しなくなり、長時間待ってもトークンが1つずつしか出力されないという報告が多々あります。特に大規模なモデル(13B以上)を実行している場合にこの問題は顕著になります。

結論

OpenBLASの有効化、モデルの量子化、OLLAMA_KEEP_ALIVEの設定変更により、CPU推論的速度を最大700%向上させることが可能です。以下、具体的な設定方法をステップバイステップで解説します。

具体的な手順

ステップ1:OpenBLASをを有効化する

OpenBLASはCPU推論に最適化された数値計算ライブラリです。以下の環境変数形で設定します:

# Linux/Macの場合
export OLLAMA_FLASH_ATTENTION=0
export OLLAMA_HOST=0.0.0.0

# Windowsの場合(PowerShell)
$env:OLLAMA_FLASH_ATTENTION="0"
$env:OLLAMA_HOST="0.0.0.0"

ステップ2:適切なスレッド数を設定する

CPUスレッド数の設定は重要です。多すぎるとオーバーヘッドが発生し、逆効果になります。的建议値はCPUコア数の4〜6割程度です:

# 8コアCPUの場合、4〜5スレッド程度に設定
export OLLAMA_NUM_PARALLEL=4

export OLLAMA_THREADS=4

ステップ3:モデルの量子化レベルを調整する

RAM容量に応じて、より軽量な量子化モデルを選択することが推奨されます。例えば、13Bモデルを使用する場合はQ5量子化が最適です:

# モデル一覧から適切な量子化モデルを選択
ollama list

# Q5量子化モデルの例(7B-13B推奨)
ollama run llama3:8b-instruct-q5_K_M
ollama run mistral:7b-instruct-q5_K_M

ステップ4:OLLAMA_KEEP_ALIVEを設定する

モデルをメモリに常駐させることで、連続リクエスト時の応答速度を大幅に改善できます:

# 24時間メモリに保持(推奨)
export OLLAMA_KEEP_ALIVE=24h

# 無限に保持する場合
export OLLAMA_KEEP_ALIVE=-1

# 起動時に設定を反映
ollama serve

ステップ5:システムリソースの確認

実際にどの程度のリソースを使用しているか確認しましょう:

# LinuxでCPU使用率とメモリ確認
htop
free -h

# macOSの場合
top -l 1 | grep -E "CPU|PhysMem"

補足・注意点

  • バージョン依存:Ollamaのバージョンによって動作が異なる場合があります。最新の安定版を使用することを推奨します(ollama --versionで確認可能)
  • RAM容量の考慮:16GB以上のRAMがある場合は7B〜13Bモデル、8GB以下の場合は7B以下のモデルが推奨されます
  • Threadripperユーザー:高端デスクトップCPUを使用している場合、300tok/sから2400tok/sへの改善が報告されています
  • フラッシュアテンションの無効化:CPU推論ではフラッシュアテンション効果が期待できないため、無効化して問題ありません
  • モデルの選択:Q5量子化モデルは精度と速度のバランスが最も優れています

参考元

おすすめ環境

💡 この問題を根本的に解決するには

ローカル環境でGPUトラブルが頻発する場合、クラウドGPUサービスの利用も検討してみてください。環境構築の手間なく、すぐにAI開発を始められます。

  • RunPod — RTX 4090が$0.44/h〜、ワンクリックでJupyter環境が起動
  • Vast.ai — コミュニティGPUマーケットプレイス、最安値でGPUレンタル
この記事は役に立ちましたか?