重要なポイント
- 階層1(シンプル): `ollama run llama3.2` + OpenWebUI。コード不要。
- 階層2(標準): vLLM + FastAPIラッパー。Python 3.10+、pip install 2パッケージ、30分セットアップ。
- 階層3(本番): vLLM + nginxロードバランサー + モニタリング(Prometheus)。マルチGPU、マルチユーザー、フォールトトレラント。
- IDE統合: VS Code CopilotまたはCursorをvLLM OpenAI APIエンドポイントに接続。
- バッチ処理: 10プロンプトを一度に送信し、10レスポンスを並列受信(順次処理ではない)。
- コスト: ゼロ(オープンソース)対 20ドル/月(Claude Pro)または200ドル/月(大規模チームクラウド)。
- 速度: 階層2はコーディングで30〜50 tok/sを達成。階層3はユーザー間で200+ tok/sを達成。
- 複雑さ: 階層1(1/10)、階層2(4/10)、階層3(8/10)。
3つの階層
ユースケースに基づいて選択してください:
- 階層1: 個人開発、カジュアルなチャット、APIサーバー不要。Ollama + チャットUI。
- 階層2: 単独開発者、IDE統合、カスタムスクリプト。vLLM + FastAPI。
- 階層3: チームデプロイ、5人以上の開発者、常時稼働サービス。vLLM + nginx + モニタリング。
階層1:CLIクイックスタート(5分)
コーディング向け:VS Code拡張機能「Continue」(`continue.dev`)をインストールし、Ollama APIに向けてリアルタイム補完を取得します。
- 1`brew install ollama`(macOS)またはWindowsインストーラーをダウンロード。
- 2`ollama run llama3.2`(8Bモデルをダウンロードして実行)。
- 3ブラウザを開く:`http://localhost:11434`(Ollama Web UI)。
- 4チャットを開始。完了。
階層2:FastAPIによるAPIサーバー(30分)
FastAPIを使う理由:OpenAI互換エンドポイント。コード内で実際のOpenAI APIのドロップイン代替として使用可能。
- 1Python 3.10+をインストール:`python --version`。
- 2vLLMをインストール:`pip install vllm torch`。
- 3vLLMサーバーを起動:`python -m vllm.entrypoints.openai.api_server --model meta-llama/Llama-3.3-8B-Instruct --port 8000`。
- 4エンドポイントをテスト:`curl http://localhost:8000/v1/chat/completions -d '{"model": "Llama-3.1-8B-Instruct", "messages": [{"role": "user", "content": "Write Python code for Fibonacci"}]}' -H "Content-Type: application/json"`。
- 5IDEに統合:Copilot拡張機能を`http://localhost:8000`に向ける。
- 6バッチリクエスト:複数のプロンプトを並列送信し、vLLMが一度にすべて処理。
階層3:マルチユーザー本番環境(2時間)
デュアルGPUリグで50人以上の同時開発者(各5 tok/s)に対応。コスト:電気代のみ(24/7稼働で月約100ドル)。
- 1別々のGPUに2つのvLLMインスタンスをデプロイ(GPU 0、GPU 1)。
- 2両インスタンス間でリクエストを負荷分散するようnginxを設定。
- 3メトリクス収集のためPrometheusを設定(リクエストレイテンシ、tok/s、エラー)。
- 4ユーザーごとのレート制限を追加(トークンバケットアルゴリズム)。
- 510GbpsネットワークのクラウドVMまたはオンプレサーバーにデプロイ。
- 6Grafanaダッシュボードで監視(オプション)。
IDE統合(VS Code、Cursor)
リアルタイムコード補完のセットアップ:
代替案(ネイティブIDEサポート):Cursor EditorはローカルLLMサポートを内蔵(拡張機能不要)。
- 1「Continue」拡張機能をインストール(`continue.dev`)。
- 2拡張機能設定を開き、カスタムAPIを設定:`http://localhost:8000/v1`(vLLMエンドポイント)。
- 3モデル名をvLLMサーバーに合わせて設定(`meta-llama/Llama-3.3-8B-Instruct`)。
- 4Ctrl+Shift+Space(またはcmd+shift+space)を押して補完をトリガー。
- 5補完がリアルタイムでストリーミング(10〜20 tok/s)。
デバッグ&モニタリング
- vLLMログ: stdoutでエラーを確認(モデルロード、OOM、CUDAエラー)。
- Prometheusメトリクス: vLLMは`/metrics`エンドポイントをエクスポート(リクエスト数、レイテンシヒストグラム、生成トークン数)。
- トークンカウント: `tiktoken`ライブラリを使って送信前にトークンをカウント(OOMサプライズを防ぐ)。
- レイテンシプロファイリング: vLLM呼び出しの前後にタイムスタンプログを追加してボトルネックを特定。
地域別コンテキスト&コンプライアンス
- 日本 / METI: 経済産業省(METI)のAIガバナンスガイドライン2024は、機密性の高い企業データに対してオンプレミス推論を推奨しています。vLLM + 階層3のセットアップはMETIの監査証跡要件を満たします。日本企業では個人情報保護法(APPI)への対応としてローカル推論が主流になりつつあります。
- 東アジア / アジア太平洋: 韓国の個人情報保護法(PIPA)、台湾のPDPA、シンガポールのPDPAなど、アジア太平洋地域では各国のデータ保護法がローカル処理を推奨しています。階層2/3はこれらすべての要件を満たします。
- グローバル: GDPR(欧州)、PIPL(中国)、HIPAA(米国)はすべて、制御されたインフラ外へのデータ移転を制限しています。ローカルLLMスタックはこれらすべての規制に対してデフォルトで準拠しています。
よくある設定ミス
- 別のプロセス(Discord、ゲーム)と同じGPUでvLLMを実行する。GPU out-of-memoryエラーが発生します。
- タイムアウトなしでリクエストを送信する。vLLMが停止するとクライアントが永遠に待機します。リクエストには常に`timeout=60`を設定してください。
- vLLMが複数GPUに自動スケールすると思い込む。明示的な`--tensor-parallel-size`フラグが必要です。
- マルチGPU時にCUDA_VISIBLE_DEVICESを忘れる。vLLMはデフォルトですべてのGPUを使用します。
- 2026年にLlama 2モデルを使用する。MetaはLlama 2の商用利用を2026年1月に廃止しました。Apache 2.0ライセンス(制限なし)のLlama 3.1 8B Instructを使用してください。
FAQ
どの階層を使うべきですか?
個人利用(カジュアル)なら階層1。IDE統合が必要な単独開発者なら階層2。チームや24/7サービスなら階層3。
OllamaのかわりにvLLMを使えますか?
可能ですが、セットアップが増えます。vLLMはバッチ処理で高速で、Python APIによる柔軟性も優れています。
複数GPUでモデルを提供するには?
vLLM:`--tensor-parallel-size 2`。モデルを2つのGPUに分散し、スループットを2倍にします。
vLLM推論の上でfine-tuneできますか?
いいえ。HuggingFace Transformersで別途fine-tuneし、fine-tunedモデルをvLLMにロードしてください。
vLLMがOOMになった場合は?
小さい量子化(Q8よりQ4)を使用し、バッチサイズを下げるか、モデルあたりのVRAM割り当てを減らします。`nvidia-smi`で確認してください。
階層3は本番環境に対応していますか?
はい、モニタリングがあれば対応しています。Prometheus、Grafana、アラート(Alertmanager)を追加してください。標準的なインフラパターンです。
参考文献
- vLLM OpenAI-Compatible Server Documentation -- 公式vLLM APIサーバー設定ガイド
- Continue.dev Configuration Documentation -- カスタムOpenAIエンドポイント向けIDE拡張機能設定
- Meta Llama 3.1 Model Card -- Llama 3.1の公式ライセンスと仕様