GPU・AI
プライベートGPUサーバーでLLMをセルフホストする方法
レンタルしたハードウェア上で言語モデルを動かすことは、プロンプトが記録も保持もされず、自分以外の誰にも読まれないと確信できる唯一の方法です。ホスト型APIはどれだけプライバシーポリシーが優れていても、送信したすべてのトークンを受け取っており、そのポリシーはあなたの関与なしに変わり得ます。セルフホスティングは境界線そのものを動かします — 重みは自分が管理するディスクに置かれ、推論は時間単位でレンタルしたVRAM上で行われ、自分でどこかへ送らない限り何もマシンの外へ出ていきません。ソフトウェア側はすでに本当に簡単になりました。今なお人がつまずくのは、注文前にカードのサイズを見積もることと、開いた推論ポートはどこまでいっても開いた推論ポートだと忘れないことです。
セルフホスティングが実際にもたらすもの — そしてもたらさないもの
「プライベートAI」という言葉は緩く使われがちなので、その利点は正確に見ておく価値があります。自分のGPU上で動くモデルは、あるものは完全に変えますが、あるものはまったく変えません。
- プロンプトも出力もそのマシンにとどまります — プロバイダー側のログもなく、保持期間もなく、あなたが尋ねた内容からデータセットが作られることもありません。
- アカウントも、キーごとのレート制限も、あなたと重みの間に立つポリシー層もありません。デプロイしたモデルが、そのまま手にするモデルです。
- 大量利用時のコストが予測可能です。1日に数百万トークンを超えると、レンタルしたカードの方がトークン単価課金より安くなり、プロバイダーが料金表を改定しても価格は動きません。
- 弱いモデルを強くするわけではありません。自分のハードウェア上で動くオープンウェイトのモデルは、あくまでそのモデルのままです — セルフホスティングが買うのはコントロールであって、最先端の性能ではありません。
- ホストから何かを隠せるわけでもありません。稼働中のマシンに物理的にアクセスできる者は、原理上そのメモリを読み取ることができます。これはモデルの問題ではなく、ホストについての問題です。
すべてを決めるのはVRAM: モデルをカードに合わせてサイジングする
最初の試みがうまくいかない場合、そのほぼすべてがVRAMの計算違いです。重み、KVキャッシュ、作業用の余白がすべて同時にカードに収まらなければならず、緩やかな劣化というものはありません — ロード開始から数秒でメモリ不足エラーが出るだけです。目安になる経験則はこうです — 16-bit精度ではモデル1つにつき10億パラメータあたりおよそ2 GBのVRAMが必要で、8-bitではおよそ1 GB、4-bitではおよそ0.6 GBです。そこにKVキャッシュを加えます。これはコンテキスト長と同時リクエスト数に応じて増加し、テスト中よりもむしろ本番運用で実際に牙を剥いてくるものです。
- 7Bから8Bのモデル: FP16でおよそ16 GB、4-bitなら余裕を持って8 GB未満に収まります。RTX A4000 16 GBに余裕を持って収まるクラスです。
- 13Bから14Bのモデル: FP16でおよそ28 GB、4-bitでおよそ9 GBです。RTX 4090 24 GBであれば量子化して動かしても、コンテキスト用の余裕がたっぷり残ります。
- 30Bから34Bのモデル: FP16でおよそ68 GB、4-bitで20 GB近くです — RTX 5090 32 GBにとって自然な居場所です。
- 70Bのモデル: FP16でおよそ140 GB、4-bitでおよそ40 GBです。つまりA100かH100 80 GBが必要になり、フル精度で動かすなら複数枚のカードが必要になります。
- 長いコンテキストが増やすのは重みではなくKVキャッシュです。大規模モデルで128kトークンのウィンドウを使うと、それだけで数十ギガバイトを要求することがあります — 注文した後ではなく、注文する前に予算に組み込んでおきましょう。
GPUを選ぶ: A4000からH100まで、そして時間単位課金が月額課金に勝るとき
GPUサーバーシリーズのどのプランも、VRAMをすべて含む物理カード丸ごとです — MIG分割も時分割共有もありません — つまりスペック表に書かれた数字が、そのまま実際に使い切れる数字です。カードは、いつか試すかもしれないモデルではなく、実際に提供するつもりのモデルに合わせて選びましょう。
- RTX A4000 16 GB($89/mo) — 8 vCPUと64 GB RAM。量子化した7Bから13Bのアシスタント、エンベディングサービス、あるいは一日中稼働する分類パイプラインには十分です。
- RTX 4090 24 GB($189/mo) — 16 vCPU、128 GB、2 TB NVMe。13Bから34Bのモデルを4-bitで動かす場合、トークン単価あたりの費用対効果が最も高く、小規模な本番エンドポイントとしての定番の選択肢です。
- RTX 5090 32 GB($279/mo) — 24 vCPUと192 GB。この追加の8 GBが、実用的なコンテキストを持った34Bモデルが収まるかどうかを分けることがよくあります。
- A100 80 GB($690/mo) — 32 vCPU、256 GB、4 TB NVMe。HBM2e帯域幅と、70Bモデルを4-bitで長いウィンドウとともに動かす、あるいは大規模にバッチ処理したサービングを行うのに十分なメモリを備えています。
- H100 80 GB($1190/mo) — 48 vCPU、384 GB、8 TB NVMe、10 Gbpsポート。FP8対応とHBM3帯域幅により、本格的なスループットや学習にとって唯一理にかなった選択肢になります。
課金は同じプリペイド残高から時間単位でも月単位でも選べ、これが人が思う以上に費用計算を左右します。H100で2回分の午後だけ済む評価作業なら、稼働した時間分の費用で済み、1か月分はかかりません。深夜3時にも応答しなければならないチャットエンドポイントには、月額契約のマシンが向いています。1台に複数枚のカードが必要な場合や、大容量のローカルストレージのそばにGPUを置きたい場合は、専用サーバーの方が向いた形です — 暗号資産で支払う場合の一般的な考え方は暗号資産でGPUサーバーをレンタルするで扱っています。
ステップバイステップ: 暗号資産のチャージから稼働中のエンドポイントまで
- 01使い捨てメールでアカウントを作成するメールアドレスとパスワードだけ。氏名も電話番号もIDも不要なので、当社側には稼働させているモデルとあなたを結びつける情報は何も残りません。
- 02暗号資産で残高をチャージするBitcoin、Monero、その他8種のコインのいずれかでプリペイド残高にチャージできます。有効期限も凍結もありません。
- 03CUDAイメージでGPUインスタンスをデプロイするカード、リージョン、そして最新のドライバとPyTorchが入ったCUDA対応イメージを選びます。マシンは数分で準備が整います。
- 04何かを取得する前にカードが見えているか確認するnvidia-smiを一度実行するだけで、GPU、ドライババージョン、空きVRAMがわかります。10秒の確認が1時間分の混乱を防ぎます。
- 05重みをローカルのNVMeに取得するネットワークマウントではなく、インスタンス自身のディスクにモデルを取得しましょう。重みは数十ギガバイトに及び、一度きりでなく何度も読み込むことになります。
- 06localhostにバインドしてサーバーを起動するvLLMまたはOllamaを127.0.0.1上で起動し、ローカルで一度補完を確認してから、外部からどう到達させるかを決めましょう。
vLLM、Ollama、llama.cpp: 推論スタックを選ぶ
ほぼすべてのケースは3つのスタックでカバーできます。どれが正解かは、技術的にどれが最も印象的かではなく、そのエンドポイントがどれだけのリクエスト数を受けるかで決まります。
- Ollama — 何もない状態から動くエンドポイントまでの最短ルートです。1つのコマンドで量子化されたモデルを取得し、OpenAI互換のAPIの背後でサービングします。一人での利用、プロトタイプ、プライベートなアシスタントに最適です。
- vLLM — 本番環境向けの答えです。continuous batchingとpaged attentionにより、1枚のカードで多数の同時リクエストを、素朴なループの何倍ものスループットでさばけます。これが、あなた一人のためのエンドポイントとアプリケーションのためのエンドポイントの違いです。
- llama.cpp — 現実主義者向けです。4-bit以下まで対応するGGUF量子化、収まりきらない層のCPUオフロード、そして3つの中で最も低いメモリの下限を備えています。オーバーサイズのモデルを、力不足なカードでもとにかく動かせるようにしてくれるものです。
- TGI、SGLang、TensorRT-LLMは、特定の条件下ではさらに高速です。ボトルネックを実際に測定してから手を伸ばすべきで、その前ではありません。
3つとも、OpenAI互換のchat-completionsルートを公開しています。そのため、商用APIに向けて書かれたアプリケーションコードは、たいていベースURLを1か所変えるだけで済みます。この互換性こそが、セルフホスティングがもはやプロジェクトではなく設定ひとつの選択になった実務上の理由です。
エンドポイントを非公開に保つ: 推論ポートを絶対に公開しない
認証のない推論サーバーは、現代版の「開けっぱなしのデータベース」です。スキャナーは新しいIPを数時間以内に見つけ出し、公開されたエンドポイントは、他の誰かがあなたのGPU稼働時間を勝手に消費している、あるいはあなたのアプリケーションがそこを通じて送るものを読み取っている、ということを意味します。
エンドポイントが本当に公開である必要がある場合 — プライベートなアシスタントではなく製品として提供する場合 — は、リバースプロキシでTLSを終端し、定期的にローテーションするベアラートークンを必須にし、キーごとにレート制限をかけましょう。そのプロキシを別の小さなVPSに置き、GPUマシンにはトンネル経由でしか到達できないようにするのがよりきれいな構成です。これはKYCなしでウェブサイトをホストするのと同じ考え方です — インターネットに面するマシンは、抱え込むものをできる限り少なくしておくべきです。
ファインチューニング: レンタルしたカードの半日が月額請求に勝るとき
ファインチューニングは、サブスクリプションよりもレンタルの方が優れているという最も強力な論拠です。7Bから13Bのモデルに対するLoRAやQLoRAの実行 — 数千件のサンプル、数回程度のエポック — は4090上で数時間で終わり、費用はかかった時間分だけです。出来上がるアダプターは数百メガバイト程度なので、チェックポイントだけ残してインスタンスは破棄し、後でそのアダプターをもっと小さなカードに載せてサービングすることもできます。70Bモデルのフルファインチューニングは予算の規模が違い、オプティマイザの状態を保持できるだけの余裕を持つA100かH100が必要になりますが、それでも契約期間ではなく日数単位で測れるものです。
時間単位課金が可能にするワークフローはシンプルです — デプロイし、学習させ、アダプターをマシンから取り出し、破棄する。使った分の計算資源にだけ料金を払い、その間アイドル状態のカードを抱えることもありません。作業中はデータセットをインスタンスのNVMe上に置いておき、終わったら取り出しておきましょう — レンタルしたマシンに残しておくものが、唯一のコピーになってはいけません。
自分で所有しないGPUの、正直なプライバシー面のトレードオフ
セルフホスティングは、最大かつ最も具体的な漏洩源を取り除きます — すべてのプロンプトを受け取り、一定期間保持し、それをどう扱うかを自分の裁量で決める第三者です。レンタルしたカード上では、モデルもあなたのデータも、あなたの鍵にしか応答しないマシンの中に置かれます。レンタルで取り除けないのはホストの存在そのものです。稼働中のサーバーに物理的にアクセスできる者は、原理上そのメモリを読み取ることができ、リモートマシンのフルディスク暗号化が守ってくれるのは盗まれたドライブに対してであって、稼働中のドライブに対してではありません。
したがって本当に問うべきなのは「ホストに見えるか」ではなく「ホストが自分が誰かを知っているか」です。No-KYCホスティングはその問いに答えます — メールアドレスとパスワードだけ、本人確認なし、漏洩したり召喚状で開示されたりする記録も一切ありません。暗号資産の残高から支払うことで、銀行という存在を排除できます。支払い面でどこまで対策するかは脅威モデル次第の選択です — Bitcoinは仮名性であって匿名ではありません。本人確認済みの取引所まで辿れるコインは結局どこかへ行き着きますが、Moneroでチャージすることはそのギャップをプロトコルレベルで埋めます。
気づかぬうちにGPU時間を無駄にするミス
- 重みだけでサイジングしてKVキャッシュを忘れ、モデルは問題なくロードされるのに、最初の長いリクエストで落ちてしまう。
- 誰も実際に測ったことのない品質面の不安から、同じモデルを4-bitなら3倍のコンテキストで動かせるカードで、わざわざFP16のままサービングしてしまう。
- 40ギガバイトの重みをネットワークマウントにダウンロードしてしまい、再起動のたびになぜ20分もかかるのかと首をかしげる。
- 「ノートPCからテストするためだけ」のつもりでサーバーを0.0.0.0にバインドしたままにしてしまう — パブリックIP上ではその日のうちに見つかります。
- 実際にはずっとバッチジョブだったにもかかわらず、1日20時間アイドル状態のカードに月額料金を払い続けてしまう。
- 一度に1リクエストずつしかベンチマークせず、vLLMは手間に見合わないと結論づけてしまう — その本領がまるごと同時実行下で発揮されることを見逃したまま。
どれも特殊な失敗ではありません。モデルより先にカードを選んでしまったときに起きることです。まずモデルと量子化を決め、VRAMの計算を正直に行い、ポートは閉じたままにしておけば、セルフホストしたLLMは、動かしっぱなしにしておけるものの中でも最も手のかからない部類に入ります。