LLM推論エンジンの解説:llama.cpp、vLLM、SGLang、mistral.rs、PyTorch、LiteRT-LM

LLM推論エンジンの解説:llama.cpp、vLLM、SGLang、mistral.rs、PyTorch、LiteRT-LM

このツール群の名称、重要性、そしてノートPC、サーバー、スマートフォンそれぞれにおける選び方

モデルファイル単体では何も機能しません。それは巨大な数値の塊に過ぎず、別のプログラムがそれらの数値を読み込み、テキストを入力して回答を取り出す必要があります。そのプログラムは 推論エンジンと呼ばれ、適切なものを選択することは、モデル自体の選択と同じくらい重要です。

本日は2026年11月12日です。オープンモデルの性能は有料AIサービスに迫りつつあり、プライバシーの保護、コスト削減、あるいはオフライン利用のために、自前のハードウェアでモデルを動かしたいと考えるチームが増えています。しかし、そこで直面するのが、llama.cpp、vLLM、SGLang、mistral.rs、PyTorch、LiteRT-LMといった聞き慣れない名前の数々です。本記事では、これらの一連のツールが何と呼ばれているのか、なぜそれぞれが存在するのか、そして架空のエンジニアであるロヒトがそれぞれをどのような場面で選択するのかを解説します。

これらのツールの総称

一般的な総称は LLM推論エンジンです。モデルランタイム、サービングエンジン、あるいはサービングフレームワークと呼ばれることもあります。まずは簡単な用語の定義を挙げます:

  • 推論 とは、学習済みモデルを使用して回答を生成することを指します。トレーニング(学習)がモデルを育てるプロセスであるのに対し、推論はモデルに問いかけて答えを得るプロセスです。
  • サービング とは、多数のユーザーやアプリケーションが同時に呼び出せるよう、通常はHTTP APIなどのサービスとしてモデルを稼働させることを指します。
  • ランタイム とは、CPU、GPU、スマートフォンのチップ上で数学的計算を実行する低レイヤーのコードです。

一覧にある6つのツールはすべて、同じモデルの重み(weights)を受け取り、それを回答へと変換します。異なるのは、どの環境(ノートPC、大型GPUサーバー、スマートフォン)で最も快適に動作するか、同時に何人のユーザーを処理できるか、そしてどれだけのメモリを必要とするかという点です。

エンジン選びが極めて重要である理由

同じモデルであっても、使用するエンジンによって高速に感じられることもあれば、耐え難いほど遅く感じることもあります。それを左右する要素は主に3つあります:

  1. メモリ。 モデルはRAMまたはGPUメモリに収まる必要があります。一部のエンジンは 量子化に対応しており、数値をより少ないビット数(例えば16ビットではなく4ビットなど)で保持します。これによりモデルのサイズはおよそ3分の1から4分の1に小さくなり、わずかな品質低下と引き換えに、より安価なハードウェアで動かせるようになります。
  2. スループット。 これは、エンジンが多数のユーザーに対して1秒あたりに生成できる回答の合計数です。サーバー向けエンジンでは、GPUをフル稼働させるために 継続的バッチ処理 (新規リクエストを待機させず、実行中のバッチに順次合流させる仕組み)などの技術を活用しています。
  3. レイテンシ。 これは、1人のユーザーが最初の単語を目にするまでの速さです。チャット用途では、単純なスループットよりもこのレイテンシが重要になります。

選択を誤ると大きなコストがかかります。高価なGPUを借りたにもかかわらず少数のユーザーしか処理できなかったり、ノートPCには到底収まらないモデルを無理に読み込もうとしたりすることになりかねません。

6つのエンジンを順に解説

llama.cpp:ほぼあらゆる環境で動作

llama.cppは、一般的なハードウェアでモデルを実行するために構築されたCおよびC++製のエンジンです。独自のファイル形式である GGUFを採用しており、量子化されたモデルを1つのファイルにパッケージ化します。一般的なCPU、Apple Silicon、NVIDIAやAMDのGPUなど幅広く動作します。OllamaやLM Studioといった一般的なデスクトップツールの多くも、このllama.cppをベースに構築されています。

実践例。 ロヒトはクライアントの契約書をレビューするコンサルタントであり、契約書の内容を公開チャットボットに貼り付けることはできません。llama.cppを使えば、自身のノートPC上で小型の量子化モデルを完全にオフラインで実行し、外部にテキストを送信することなくドキュメントを要約できます。

# Start a local OpenAI-compatible server on port 8080
llama-server -m ./models/example-model-Q4_K_M.gguf --port 8080

vLLM:GPUサーバーの大本命

vLLMは、GPU上で多数のユーザーにモデルを同時にサービングするためのPython製エンジンです。その中核となるアイデアは PagedAttentionです。モデルは回答生成中、それ以前のトークンを記録するスクラッチパッドとして KVキャッシュを保持します。vLLMはOSのメモリ管理と同じように、このスクラッチパッドを小さなページ単位で格納するため、GPUメモリの浪費が極めて少なく抑えられ、はるかに多くのリクエストを同時に処理できます。継続的バッチ処理と組み合わせることで、1台のGPUで多数のユーザーへのサービングが可能になります。

実践例。 ロヒトが所属するAcme社は、300人の従業員向けに社内アシスタントを導入したいと考えています。あらゆる質問に対して有料APIを呼び出していてはコストがかさみ、一部の機密データは社外に出せません。そこでロヒトは1台のGPUサーバーにvLLMを導入しました。vLLMはOpenAI互換のAPIを提供しているため、既存のチャットアプリのベースURLを変更するだけで対応できました。

vllm serve example-org/example-model --port 8000

SGLang:エージェントや重複プロンプトの処理に最適

SGLangは、もう1つの高性能サービングエンジンです。長いシステムプロンプト、共有ドキュメント、チャットの過去の履歴など、多くのリクエストが同じ冒頭部分を共有している場合に威力を発揮します。独自の RadixAttention により、これら共通部分をキャッシュして再計算することなく再利用します。また、 構造化出力(回答を有効なJSONや固定フォーマットに強制する機能)にも強力に対応しています。

実践例。 ロヒトはサポートチケットをトリアージするエージェントを構築しています。すべてのチケットは3,000語に及ぶ同一の規約ドキュメントと共に入力され、モデルはカテゴリや優先度といったJSONフィールドで応答する必要があります。SGLangは複数のチケット間でキャッシュされた規約部分を再利用し、プログラムで解析可能な形式で確実に出力します。

python -m sglang.launch_server --model-path example-org/example-model --port 30000

mistral.rs:Rust開発環境向けのRust製エンジン

mistral.rsは、Rustで記述されたコミュニティ主導の推論エンジンです。名称に反してMistral AI社の公式製品ではありませんが、多種多様なモデルファミリーを動かせます。量子化やOpenAI互換サーバーに対応し、Rustプログラム内のライブラリとしても利用可能です。Rustの恩恵によりメモリ安全性が確保され、Python環境を管理することなく単一のコンパイル済みバイナリとして扱えます。

実践例。 ロヒトのチームには、Pythonのインストールが禁止されている厳格なサーバー上で動作する、Rust製のログ解析ツールがあります。mistral.rsを活用することで、同一のバイナリ内に「このインシデントを要約する」機能を直接組み込み、追加のサービスをデプロイしたりパッチを当てたりすることなく実現しました。

プレーンなPyTorch:リファレンス用であり、レーシングカーではない

PyTorchは、大半のモデルが構築・トレーニングされる基盤フレームワークです。プレーンなPyTorchを使用し、多くはHugging FaceのTransformersライブラリとその generate() 関数を介してモデルを実行するのが、最も直接的な利用方法です。変更やデバッグが容易で、新しいモデルは通常まずここで動作します。ただし、多数のユーザーへのサービングには最適化されていないため、前述のエンジンと比較して低速でメモリ消費も多くなります。

実践例。 ロヒトは、ファインチューニングしたモデルの出来栄えを検証しています。プレーンなPyTorchを使ってノートブック上でモデルを読み込み、さまざまなプロンプトを試し、コードを修正して結果を比較します。満足のいく結果が得られた段階で、本番環境向けにモデルをvLLMやSGLangへと移行します。

GoogleのLiteRT-LM:スマートフォン上で動くモデル

LiteRTは、TensorFlow Liteの新たな名称であるGoogleのオンデバイス向けランタイムです。LiteRT-LMは、スマートフォン、ブラウザ、小型エッジデバイス上でGemmaなどの言語モデルを実行するためのレイヤーです。限られたメモリ、バッテリー持続時間、モバイル向けチップに最適化して設計されており、ネットワーク接続なし、サーバー費用ゼロでアプリ内にAI機能を組み込むことができます。

実践例。 ロヒトは、電波の届かない現場で作業することが多い技術者向けに、点検用のAndroidアプリを開発しています。LiteRT-LMとスマートフォン上の小型Gemmaモデルを活用することで、アプリは音声メモをオフラインで整ったレポートへと変換し、データが端末外に出ることは一切ありません。

ロヒトの選び方:シンプルな意思決定ガイド

ステップ1:モデルをどこで動かすかを決める

スマートフォンや小型デバイスなら、まずはLiteRT-LMを検討してください。ノートPCやCPUのみのサーバーなら、llama.cppから始めましょう。GPUサーバーなら、vLLMまたはSGLangが有力候補です。Rustプログラム内部に組み込むなら、mistral.rsを検討します。

ステップ2:ユーザー数を見積もる

1人または数人程度:シンプルで十分なllama.cppが適しています。同時に数十人〜数百人:回答あたりのコストを低く抑えるバッチ処理が不可欠なため、vLLMまたはSGLangを選択します。

ステップ3:ワークロードの特性を見極める

共有プロンプトが多い場合、AIエージェント用途、厳格なJSON出力が必要な場合はSGLangが向いています。一般的なチャットやAPIトラフィックにはvLLMが適しています。実験や研究開発段階なら、プレーンなPyTorchが最適です。

ステップ4:自前のハードウェアで検証する

公開されているベンチマーク数値は、GPU、モデル、設定項目に大きく依存します。決定を下す前に、候補となる2つのエンジンを使い、自前のマシンで実際のプロンプトを実行し、最初の単語までの時間、1秒あたりの単語数、メモリ使用量を計測してください。

まとめ

llama.cpp、vLLM、SGLang、mistral.rs、PyTorch、LiteRT-LMはすべて、学習済みモデルを実行して入力を回答へと変換するという基本的な役割を共通して担っています。このツールの総称がLLM推論エンジンです。それぞれの違いは、動作する環境と対象とするユーザー規模にあります。ノートPCや小型サーバーにはllama.cpp、高負荷なGPUサーバーにはvLLMとSGLang、Rustネイティブなアプリにはmistral.rs、実験用途にはPyTorch、そしてスマートフォンやエッジデバイスにはLiteRT-LMが適しています。モデルそのものと同じくらい、エンジンも慎重に選定してください。

メリット

  • オープンモデルを自前で運用することで、機密データを社内に留め、完全にオフラインで動作させることができます。
  • llama.cppやmistral.rsの量子化技術により、高性能なモデルを一般的なノートPC上でも実行できます。
  • vLLMやSGLangは1台のGPUで多数のユーザーを処理できるため、回答あたりのコストを削減できます。
  • OpenAI互換APIが提供されているため、有料サービスからの移行もわずかなコード修正で済みます。
  • LiteRT-LMにより、サーバー費用もネットワーク接続も不要で、スマートフォンにAI機能を導入できます。

デメリット

  • エンジンごとに固有のセットアップ手順、起動フラグ、モデルフォーマットを把握する必要があります。
  • サーバー向けエンジンには高性能なGPUが必要であり、購入やレンタルに相応のコストがかかります。
  • 量子化モデルでは一定の品質低下が生じ、その度合いはモデルやタスクによって異なります。
  • すべてのエンジンが、公開初日から最新モデルに対応しているわけではありません。
  • セルフホスティングを行う場合、アップデート、セキュリティパッチの適用、監視などを自前で管理する責任が生じます。

注意事項

本記事は教育目的で作成されています。例示されているモデル名、ポート番号、パスはプレースホルダーであり、実際の環境に合わせて変更する必要があります。これらのプロジェクトは急速に進化しているため、インストールするバージョンによって機能、フラグ、対応ハードウェアが異なる場合があります。本番環境の選定にあたっては、公式ドキュメントを確認し、自前のハードウェアで実際にテストした上で判断してください。

よくある質問

  • LLM推論エンジンとは何ですか? — 学習済みの言語モデルを読み込み、CPU、GPU、スマートフォンのチップ上で実行して回答を生成するソフトウェアのことです。
  • llama.cppとvLLMはどちらが優れていますか? — 一概にどちらが優れているとは言えません。llama.cppはノートPCや小型サーバーに最適であり、vLLMはGPUサーバーで多数のユーザーを処理するサービングに最も適しています。
  • vLLMとSGLangの違いは何ですか? — どちらも高速なGPUサービングエンジンですが、SGLangはリクエスト間で長い共通プロンプトを共有する場合や、JSONなどの構造化出力が必要な場合に特に強みを発揮します。
  • GPUがなくてもLLMを実行できますか? — はい。GPUに比べると速度は落ちますが、llama.cppを使用すれば一般的なCPU上で量子化モデルを実行できます。
  • mistral.rsはMistral AI社が開発したものですか? — いいえ。Rustで記述された独立したコミュニティプロジェクトであり、幅広いモデルファミリーを実行できます。
  • 本番環境でPyTorchをそのまま使ってはいけない理由は何ですか? — プレーンなPyTorchは柔軟性がありますが、多数のユーザーの同時処理には最適化されていません。専用のエンジンを採用することで、通常は同じハードウェアから大幅に高いパフォーマンスを引き出すことができます。
  • LiteRT-LMは何に使われますか? — スマートフォンやエッジデバイス上で、Gemmaなどの言語モデルを直接オフラインで動かすためのGoogle製ランタイムです。
  • 量子化は何を行う処理ですか? — モデルの数値をより少ないビット数で保持することで、わずかな品質低下と引き換えにメモリ使用量を大幅に削減し、より安価なハードウェアでの動作を可能にします。

タグ

#llm #inferenceengine #llamacpp #vllm #sglang #mistralrs #pytorch #litertlm #selfhostedai #aiengineering

Free field guide

Linux Server Hardening Checklist

30 practical steps to take a fresh Linux box from default to defensible. Enter your email — you'll get the PDF instantly, plus new posts on Linux, security & AI.