ローカルLLMの高速化テクニック|推論速度を最大限に引き出す最適化ガイド

kento_morota 11分で読めます
社内のAI・IT活用、技術がわかる相手に無料相談。 相談 →
目次

ローカルLLMを導入したものの、「回答が返ってくるまでに時間がかかりすぎる」「実用的な速度が出ない」と感じている方は少なくありません。クラウドAPIと比較して応答速度に不満を感じ、結局クラウドに戻ってしまうケースもあるでしょう。

しかし、適切な最適化を施せば、ローカルLLMの推論速度は数倍から十倍以上改善できることがあります。本記事では、中小企業のIT担当者でも実践できる高速化テクニックを、基礎から応用まで体系的に解説します。

ローカルLLMの推論速度を決める要因

最適化に取り組む前に、推論速度に影響する主な要因を理解しておきましょう。LLMの推論は大きく分けてプリフィル(入力処理)とデコード(トークン生成)の2段階で構成されます。

推論パフォーマンスの主要指標

指標 意味 目安(実用レベル)
tokens/s(生成速度) 1秒あたりの生成トークン数 20 tokens/s以上
TTFT(Time to First Token) 最初のトークンが出力されるまでの時間 1秒以内
スループット 一定時間内に処理できるリクエスト総数 用途による

一般的なチャット用途では、20 tokens/s以上あれば人間がストレスなく読める速度で文章が生成されます。これを下回ると「遅い」と感じるラインです。

ボトルネックの特定方法

最適化の第一歩は、何がボトルネックになっているかを特定することです。

  • GPU使用率が低い:CPUやメモリがボトルネックの可能性。モデルの一部がCPUにオフロードされている場合に発生
  • GPU使用率が100%に張り付いている:GPU性能の限界。より大きなGPU、または軽量モデルへの変更を検討
  • VRAM使用率が上限に近い:メモリのスワップが発生している可能性。量子化やモデルの縮小が有効

WindowsであればTask Manager、Linuxであればnvidia-smiコマンドでGPUの状態を確認できます。

# GPU使用状況をリアルタイムで監視
nvidia-smi -l 1

量子化による高速化と省メモリ化

最も効果が大きく、かつ手軽に実施できるのが量子化(Quantization)です。量子化の基礎知識を踏まえた上で、速度面でのメリットを解説します。

量子化レベルと速度・精度の関係

量子化レベル モデルサイズ削減率 速度向上 精度への影響
FP16(非量子化) 基準 基準 なし
Q8_0 約50%削減 約1.5〜2倍 ほぼなし
Q6_K 約60%削減 約2倍 わずかに低下
Q5_K_M 約65%削減 約2〜2.5倍 軽微な低下
Q4_K_M 約75%削減 約2.5〜3倍 多少の低下
Q3_K_M 約80%削減 約3倍以上 明確な低下
Q2_K 約85%削減 約3.5倍以上 大幅な低下

中小企業の一般的な業務用途であれば、Q4_K_Mが速度と精度のバランスに最も優れています。社内FAQチャットボットや文書要約であれば十分な品質を維持できます。

Ollamaでの量子化モデル利用

Ollamaでは、モデル名の後にタグを指定するだけで量子化モデルを利用できます。

# Q4_K_Mの量子化モデルをダウンロード
ollama pull llama3:8b-q4_K_M

# 量子化レベル別の速度比較テスト
time ollama run llama3:8b-q4_K_M "日本の四季について300文字で説明してください" --verbose

--verboseオプションをつけると、推論速度(tokens/s)が表示されるので、量子化レベルごとの速度を比較できます。

Flash Attentionの有効化

Flash Attentionは、Transformerモデルの自己注意機構(Self-Attention)を最適化する技術です。メモリアクセスパターンを効率化することで、推論速度を20〜40%向上させつつ、メモリ使用量も削減します。

llama.cppでの有効化

llama.cppではFlash Attentionがビルドオプションとして利用可能です。

# Flash Attentionを有効にしてビルド
cmake -B build -DGGML_CUDA=ON -DGGML_CUDA_FA_ALL_QUANTS=ON
cmake --build build --config Release

# 実行時にFlash Attentionを有効化
./build/bin/llama-server -m model.gguf -ngl 99 -fa

-faフラグでFlash Attentionが有効になります。特に長文の入力を処理する場合に効果が顕著です。

Ollamaでの設定

Ollamaの最新版では、環境変数でFlash Attentionを有効にできます。

# Linux/macOS
export OLLAMA_FLASH_ATTENTION=1
ollama serve

# Windows(PowerShell)
$env:OLLAMA_FLASH_ATTENTION="1"
ollama serve

コンテキスト長の最適化

コンテキスト長(context length)は、モデルが一度に処理できるトークン数の上限です。コンテキスト長が長いほど多くの情報を扱えますが、メモリ消費量と処理時間が増大します。

用途別の推奨コンテキスト長

用途 推奨コンテキスト長 メモリへの影響
簡単なQ&A・チャット 2048〜4096 低
文書要約・翻訳 4096〜8192 中
RAG(検索拡張生成) 8192〜16384 高
長文書の全文解析 32768〜131072 非常に高

必要以上にコンテキスト長を大きくすると、それだけでVRAMを圧迫し速度が低下します。用途に応じて適切に設定しましょう。

# Ollamaでコンテキスト長を指定して実行
ollama run llama3:8b --num-ctx 4096

# llama.cppの場合
./llama-server -m model.gguf -ngl 99 -c 4096

RAGで利用する場合は、検索結果のチャンク数を調整することで、コンテキスト長を抑えつつ精度を維持するアプローチが有効です。

GPUオフロードとレイヤー配分の調整

モデルの全レイヤーをGPUに載せきれない場合、一部のレイヤーがCPUで処理されます。このCPUオフロードが発生すると推論速度が大幅に低下します。

最適なレイヤー配分の見つけ方

llama.cppの-nglパラメータで、GPUに載せるレイヤー数を指定できます。

# 全レイヤーをGPUに載せる(VRAMが十分な場合)
./llama-server -m model.gguf -ngl 99

# レイヤー数を指定してVRAMに収める
./llama-server -m model.gguf -ngl 28

段階的に-nglの値を増やしながらnvidia-smiでVRAM使用量を確認し、OOM(Out of Memory)エラーが出ない最大値を見つけるのがポイントです。

CPU+GPU混合環境での最適化

GPU VRAMが限られている場合、以下の戦略で速度を最大化できます。

  • 注意機構のレイヤーを優先的にGPUに配置する(計算量が最も多いため)
  • システムRAMを十分に確保する(CPUオフロード部分の処理に必要)
  • 高速なRAM(DDR5推奨)を搭載し、CPU処理部分のボトルネックを軽減する

GPUの選定や詳しいスペック情報はローカルLLMのPC・GPUスペックガイドを参照してください。

バッチ処理とパラレル推論の活用

複数のリクエストを同時に処理する場合、バッチ処理やパラレル推論が有効です。特に社内で複数人が同時にアクセスする環境や、大量のドキュメントを一括処理する場合に効果を発揮します。

llama.cppでのパラレル推論

# 同時接続数を4に設定
./llama-server -m model.gguf -ngl 99 --parallel 4 -c 16384

# コンテキスト長はparallelの値で分割されるため、
# 4並列の場合は各リクエストに4096トークンが割り当てられる

--parallelオプションで同時処理数を指定できます。ただし、並列数を増やすほどリクエストあたりの使用可能なコンテキスト長が減少するため、バランスを考慮する必要があります。

継続バッチング(Continuous Batching)

従来のバッチ処理では、全リクエストの処理が完了するまで次のバッチを開始できませんでした。継続バッチングは、完了したリクエストのスロットに新しいリクエストを即座に割り当てる手法です。これにより、スループットが最大2〜3倍向上します。

llama.cppのサーバーモードでは継続バッチングがデフォルトで有効になっています。APIサーバーの構築時にはこの機能を活用しましょう。

OS・ドライバレベルの最適化

ソフトウェア側の設定に加えて、OS環境やドライバの最適化も速度向上に寄与します。

NVIDIAドライバとCUDAの最新化

ドライバのバージョンが古いと、新しいGPUの性能を十分に引き出せません。定期的に最新のドライバに更新しましょう。

# 現在のCUDAバージョン確認
nvcc --version

# ドライババージョン確認
nvidia-smi

GPU動作モードの設定

NVIDIAのGPUには省電力モードと最大パフォーマンスモードがあります。推論速度を最優先するなら、パフォーマンスモードに設定しましょう。

# パフォーマンスモードに設定(Linux)
sudo nvidia-smi -pm 1
sudo nvidia-smi -pl 300  # 電力上限をTDPの最大に設定

Linuxでの追加最適化

Linux環境であれば、以下の設定も検討に値します。

  • CPU Governor設定:performanceモードに変更してCPUクロックを最大化
  • Hugepages有効化:大量のメモリを効率よく管理し、メモリアクセスを高速化
  • NUMA設定:マルチソケット環境ではメモリのローカリティを最適化
# CPU Governorをperformanceに設定
echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

ただし、常時パフォーマンスモードで運用するとその分電力消費が増加します。業務時間帯のみ有効にするといった運用がおすすめです。

最適化の効果測定とベンチマーク

最適化を行ったら、効果を数値で確認することが重要です。以下のツールと方法でベンチマークを取りましょう。

llama.cppのベンチマーク機能

# ベンチマーク実行(プリフィル512トークン、生成128トークン)
./llama-bench -m model.gguf -p 512 -n 128 -ngl 99

出力されるpp(prompt processing)とtg(text generation)の速度を確認します。最適化前後で比較して、どの対策がどれだけ効果があったかを記録しておきましょう。

最適化チェックリスト

以下のチェックリストを上から順に確認し、最適化を進めてください。

  1. GPUドライバ・CUDAが最新版か確認する
  2. モデルの量子化レベルを適切に選択する(推奨:Q4_K_M)
  3. Flash Attentionを有効にする
  4. コンテキスト長を用途に合わせて設定する
  5. GPUオフロードレイヤー数を最大化する
  6. 並列処理の設定を環境に合わせて調整する
  7. OS・GPUの電力管理モードを確認する

まとめ:段階的な最適化で実用的な速度を実現しよう

ローカルLLMの高速化は、一つの魔法のような解決策があるわけではなく、複数の最適化を積み重ねることで実現します。最も効果が大きいのは量子化とFlash Attentionの有効化で、この2つだけで2〜3倍の速度向上が期待できます。

優先順位としては、以下の順で取り組むのが効率的です。

  1. 量子化:最も手軽で効果が大きい
  2. Flash Attention:設定変更だけで20〜40%向上
  3. コンテキスト長の調整:不要に長い設定を見直す
  4. GPUレイヤー配分:VRAMを最大限に活用する
  5. OS・ドライバの最適化:地味だが確実に効く

これらの最適化を施したうえで、なお速度に不満がある場合は、SLM(小規模言語モデル)の活用や、用途に特化した軽量モデルへの切り替えも検討してみてください。ローカルLLMのおすすめモデル比較も参考になるでしょう。

クラウドAPIとのコスト比較も踏まえて、自社にとって最適な環境を構築していきましょう。

#高速化#最適化#ローカルLLM
ManageAI 先行モニター企業 募集中|先着5社・2026年11月末まで

生成AIの利用費、「誰が・何のために・いくら」まで見えていますか?

株式会社カイダンと共同開発したAI利用ガバナンスSaaS「ManageAI」は、OpenAI・Azure OpenAI・Claude・AWS Bedrock・Google Vertex AIの費用と利用状況を、部署・利用者・プロジェクト別に可視化します。導入は読み取り専用キーの登録だけ。初期費用0円・月額5万円(税別)で先行モニター企業を募集しています。

ニュースリリースを読む
共有:
無料メルマガ

週1回、最新の技術記事をお届け

AI・クラウド・開発の最新記事を毎週月曜にメールでお届けします。登録は無料、いつでも解除できます。

※ プライバシーポリシーに基づき管理します

関連記事

Related / 9 articles

  1. AI・機械学習

    Stable Diffusionの使い方とビジネス利用の注意点|ローカル画像生成入門

    自社PCで動かせる画像生成AI「Stable Diffusion」の始め方をビジネス目線で解説します。実行ツールの選び方とVRAMを軸にした必要スペック、商用利用で最重要となるモデルのライセンス確認、中小企業での現実的な活用シーン、クラウド型とローカル型の選び方をまとめました。

  2. AI・機械学習

    Claude CodeのSkills(エージェントスキル)とは?作り方と活用例を解説

    Claude Codeに定型ワークフローを覚えさせる「Agent Skills」を解説。SKILL.mdの書き方、スラッシュコマンドやサブエージェントとの使い分け、チームで再利用できるスキル設計のコツを実例つきでまとめました。

  3. AI・機械学習

    ベクトルデータベース比較|Chroma・Qdrant・FAISS・pgvectorの選び方を解説

    RAG構築に欠かせないベクトルデータベースを比較解説。Chroma・Qdrant・FAISS・pgvector・Milvus/Weaviateの特徴と使いどころ、状況別の選び方の早見表、検索品質を左右する前工程の重要性まで、中小企業の社内文書検索を想定して実務目線でまとめました。

  4. AI・機械学習

    Whisperで無料の文字起こし環境を作る|ローカル実行なら会議音声が社外に出ない

    OpenAIの音声認識モデルWhisperを自社PCで動かし、無料かつセキュアな文字起こし環境を作る手順を解説。日本語向けのモデルサイズの選び方、インストールから実行までの3ステップ、精度を上げる録音のコツ、ローカルLLMと組み合わせた議事録自動化まで紹介します。

  5. AI・機械学習

    vLLMとは?Ollamaとの違いと使い方|社内LLMサーバーを高速化する本命ツール

    複数人で使う社内LLMサーバーの本命「vLLM」を解説。PagedAttentionと連続バッチングで速くなる仕組み、Ollamaとの使い分け、インストールからOpenAI互換サーバーの起動、動作確認と調整までの導入手順、導入前に知っておきたい注意点をまとめました。

  6. AI・機械学習

    AIエンジニアとは?仕事内容・必要スキル・なり方・年収まで完全ガイド

    AIエンジニアとは何かを解説。主な仕事内容とデータサイエンティストや機械学習エンジニアとの違い、必要なスキルと役立つ資格、学習ロードマップ、年収と将来性、企業が採用・育成・外注で確保する方法まで、目指す個人にも採用したい企業にも役立つ内容です。

  7. AI・機械学習

    中小企業のAIエンジニア確保術|採用・育成・外注どれを選ぶべきか比較

    中小企業のAIエンジニア確保の方法として、正社員採用・既存社員の育成・外部委託の3つの選択肢を比較します。それぞれが向いているケースや外部委託のメリットと注意点、目的から逆算した現実的な使い分けと進め方まで、自社に合ったAI人材確保の考え方を解説します。

  8. AI・機械学習

    AIエンジニアの年収と将来性|需要が伸び続ける理由とキャリアの広げ方

    AIエンジニアの年収水準と将来性を解説します。AI活用の中小企業への広がりやIT人材不足など需要が伸び続ける3つの背景、技術×ドメイン知識・ビジネス設計力・MLOpsといった年収を高めるスキルの掛け合わせ方、今後のキャリアパスの選択肢まで紹介します。

  9. AI・機械学習

    未経験からAIエンジニアになるには?学習ロードマップ6ステップと転職のコツ

    未経験からAIエンジニアになるための学習ロードマップを6ステップで解説します。Pythonの基礎、データ処理と統計、機械学習、深層学習・生成AIの学び方からポートフォリオ作り、資格の活用、前職の業務知識で差別化する転職活動のコツまで紹介します。

ManageAI

先行モニター企業 募集中

生成AIのコストを「部署別」に、請求書より先に。

先着5社限定・2026年11月末まで。初期費用0円・月額5万円(税別)で、正式版と同等の機能に加え、開発者と伴走者による導入支援を追加費用なしで提供します。プロンプト原文は一切取得しません。

株式会社カイダン × Harmonic Society株式会社の共同事業|読み取り専用キーの登録だけで導入できます