主要ポイント
- モデルの重みは16ビットでパラメータあたり約2バイト、8ビットで1バイト、4ビットで0.5バイト必要で、さらにコンテキストキャッシュ用の領域が必要です。
- レンタルGPUは稼働している時間に対して課金しますが、APIは送信および受信したトークンのみに対して課金します。
- 入力トークン100万あたり$0.15、出力トークン100万あたり$0.50の場合、1日20,000チャット(1,500入力、500出力)は月$285かかります。
- ファインチューニング、異なるモデル、オフライン使用、または安定した非常に高い利用量が必要な場合、セルフホスティングが優れています。
短い答え:それはあなたの利用量次第です
LLMの重みファイルを自分でホストする方法をお探しの場合、正直なまとめは次の通りです。自分のマシンでモデルを動作させるのは簡単ですが、他のユーザー向けに低コストで運用するのは難しいです。ラップトップやデスクトップのGPUは個人利用には十分です。多くのユーザーに同時に、かついつでも応答するサービスを提供するには、より多くのメモリ、より多くのチューニング、そしてそれを稼働させ続ける人が必要です。
代替案は、OpenAI互換のエンドポイントを呼び出し、トークン単位で課金することです。小規模および中規模のワークロードでは、アイドル状態のGPU時間に対して課金されないため、ほぼ常に安価になります。非常に大規模で安定したワークロードや、独自のファインチューニング済みモデルを必要とするジョブの場合、ハードウェアを所有することが意味を持ち始めます。以下のセクションでは両側の数字を比較し、あなた自身が損益分岐点を見つけることができます。
ここでは無料プランはありません。サインアップ後、APIキーページで1回限りの$0.50の無料トライアルクレジットを受け取ることができ、その後$20から前払いクレジットを追加します。この無料トライアルクレジットは、何らかの決断をする前に独自のプロンプトの実際のテストを実行するのに十分です。
モデルのホスティングに必要なもの
言語モデルは重みと呼ばれる数の大きなファイルで、モデルが実行されている間、高速なメモリに配置する必要があります。そのファイルのサイズが最初の制約であり、自分で計算できます:パラメータ数にパラメータあたりのバイト数を掛けます。
| モデルサイズ | 16ビット重み | 8ビットの重み | 4ビット重み |
|---|---|---|---|
| 8Bパラメータ | 16 GB | 8 GB | 4 GB |
| 32Bパラメータ | 64 GB | 32 GB | 16 GB |
| 70Bパラメータ | 140 GB | 70 GB | 35 GB |
これらは重みファイルのみです。これに加えて、アクティブな会話の長さに応じて増大するキーバリューキャッシュ用のメモリと、ランタイム用の余裕が必要です。24 GBに収まるはずのモデルでも、長いコンテキストや複数の同時ユーザーを要求した瞬間にメモリ不足になることがあります。量子化によりファイルサイズは縮小しますが、出力品質も少し変化し、その影響はモデルによって異なります。
次にソフトウェア側があります。llama.cpp、Ollama、vLLMなどの推論サーバー、アプリがそれを呼び出せるようにするためのHTTPレイヤー、クラッシュ時に再起動する方法、およびクラッシュ時に通知するためのモニタリングが必要です。これらを単独で考えると難しくはありません。すべてに時間がかかり、その時間がコストの一部となります。
オプション1:自分のコンピュータで実行する
始める最も安い方法は、すでに所有しているマシンです。Ollamaやllama.cppなどのツールはモデルをダウンロードし、ローカルサーバーを公開し、それらの多くはOpenAIスタイルのエンドポイントも提供するため、それらに対して記述するコードは、2つの設定を変更するだけでホストされたAPIを指すことができます。
ローカルホスティングが適している場合:
- あなたが実験している個人であり、回答ごとに数秒かかっても問題ない場合;
- データがマシンから外部に出ない必要がある場合;
- 多くの異なるオープンモデルを素早く試すことができる場合;
- 十分なメモリを持つGPUがあり、1日の大部分がアイドル状態です。
他のユーザーにサービスを提供する必要がある場合、必要なモデルがメモリよりも大きい場合、または長いコンテキストを必要とする場合は、あまり適していません。当社のローカル無検閲モデルとホスト済みAPIの比較では、小規模なローカルモデルと大規模なホスト済みモデルの間の回答品質の変化を含め、トレードオフをより詳しく解説しています。
電気料金は確かに存在しますが、小さな項目です。より大きなコストは、使用するかどうかにかかわらず支払う必要があるハードウェアです。すでに所有している場合、限界コストは低く、プライベートな実験にはローカルホスティングに勝るものはありません。
オプション2:GPUサーバーをレンタルする
自分のマシンでは不十分な場合、次のステップはGPUをレンタルすることです。プロバイダーは特定のGPUメモリ量を持つマシンを時間単位で課金します。プロバイダー間で価格差が大きく、頻繁に変更されるため、記事や当ページに記載されている数字を信用するのではなく、各プロバイダーの現在の価格設定を確認してください。
重要なのは請求書の形です。レンタルサーバーは、1つのリクエストに応答しているか応答していないかに関係なく、起動しているすべての時間に対して課金します。1ヶ月中稼働させた場合、計算は単純です。1ヶ月は約730時間(1年8,760時間を12で割ったもの)です。仮に適切なサーバーが時間あたり$1でレンタルできるとすると、24時間稼働させる場合、ストレージ、帯域幅、あなたの時間を加える前に月$730かかります。
使用していないときはサーバーをオフにできますが、その代償として遅延が発生します。大きなモデルをメモリに読み込むには時間がかかり、一時停止後の最初のユーザーはそれまで待たなければなりません。オートスケーリング設定はこの問題を軽減しますが、独自の複雑さを追加します。
APIとの損益分岐点は価格から導き出されます。100万入力トークンと100万出力トークンは、このAPIで$0.15 + $0.50 = $0.65かかります。あなたの仮定の$730サーバーは、730 ÷ 0.65 ≈ 1,123のそのような組み合わせに相当し、月間で約11億入力トークンと11億出力トークンになります。このボリュームを下回る場合、APIの方が安価です。これを超える場合、モデル、GPU、サーバーのチューニングの質によっては、適切に活用されたサーバーが有利になる可能性があります。
オプション3:ホストされたAPIを使用する
APIの利用により、ハードウェア、サーバー、アイドル時間が不要になります。リクエストを送信し、回答を受け取り、使用されたトークンに対して課金されます。価格は入力トークン100万あたり$0.15、出力トークン100万あたり$0.50で、前払いクレジットから従量課金、サブスクリプションはありません。クレジットは期限切れにならず、失敗または拒否されたリクエストには課金されません。
これが3つの現実的なボリュームでどのように見えるかを示します。典型的なチャットターンは、1,500入力トークン(システムプロンプトと履歴)と500出力トークンを使用すると仮定されます。
- 1つのリクエスト: 1,500入力トークンは0.0015 × $0.15 = $0.000225かかり、500出力トークンは0.0005 × $0.50 = $0.00025かかります。合計で$0.000475です。
- 1日1,000チャット、30日間: 1,000 × $0.000475 = 1日$0.475、または月$14.25です。
- 1日20,000チャット、30日間: 20,000 × $0.000475 = 1日$9.50、または月$285です。
- 100,000リクエストのバッチジョブ 各2,000入力と400出力トークン:入力は2億トークンなので、200 × $0.15 = $30;出力は4千万トークンなので、40 × $0.50 = $20。合計は$50です。
中間の数字では、APIは月$285かかり、これは常に稼働しているサーバーの仮定された$730を下回ります。最大の数字では、レンタルサーバーが追いつくにははるかに多くのトラフィックが必要です。あなたのプロンプトが実際の数字を決定するので、推測するのではなくサンプルを測定してください。すべての応答と一緒に返される使用量ブロックは、正確なトークン数を表示します。
$0.50の無料トライアルクレジットは、1,500入力、500出力のサイズのリクエスト約1,052回をカバーします(0.50 ÷ 0.000475 ≈ 1,052)。これはテストには十分です。その後、$20から$500までの任意の整数金額でチャージできます。大口チャージにはボーナスがあります:$50から+5%、$100から+10%、$200から+15%。例えば、$100のチャージで$110のクレジットが得られます。詳細は価格表ページをご覧ください。カード(Visa、Mastercard、Apple Pay、Google Pay)または暗号資産(TRC20上のUSDT、Base上のUSDC)でお支払いいただけます。
ホスティングしないことで手放すもの
APIにもトレードオフは存在し、それらを知った上でAPIの上に構築することが重要です。
- 1つのモデル。 単一のオープンウェイトモデルが得られ、
uncensoredとしてアドレス指定されます。異なるモデルに切り替えることも、独自の重みを読み込むこともできません。 - ファインチューニングなし、テキストのみ。 トレーニングエンドポイント、埋め込み、画像、音声、またはビデオ生成はありません。
- 制限事項。 通常キーは8つの同時リクエストと1分あたり300リクエストを許可します。試用キーは2および60を許可します。これはほとんどのアプリに対応できますが、非常に大規模なバッチではクライアント側でキューイングが必要です。
- コンテキスト。 ウィンドウは、プロンプトと補完を合わせて100,000トークンです。
- データがネットワークを離れます。 プロンプトはトレーニングには使用されませんが、第三者に送信されます。特定のデータセットにとってこれが許容できない場合は、ローカルでホストしてください。
以下のいずれかが必須条件の場合、セルフホスティングがより良い選択です:独自のデータでのファインチューニング、APIが提供していない特定のモデル、完全なオフライン運用、または所有するハードウェアが24時間稼働する十分な安定したボリューム。
ハードウェアを購入する前にAPIを試す
1時間のテスト料金は、ほとんどのレンタルサーバーの1時間分よりも安価で、モデルがあなたのプロンプトに適切に応答できるかどうかを確認できます。エンドポイントはOpenAI互換なので、ローカルサーバーと通信するコードをお持ちの場合は、ベースURL、API キー、モデル IDを変更するだけで済みます。このスクリプトは、レスポンス内の使用量データを使用して、各呼び出しの費用も報告します。
from openai import OpenAI
client = OpenAI(
base_url="https://api.uncensoredllmhub.com/v1",
api_key="YOUR_API_KEY",
)
resp = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Summarise the pros and cons of self-hosting an LLM."}],
)
u = resp.usage
cost = u.prompt_tokens / 1_000_000 * 0.15 + u.completion_tokens / 1_000_000 * 0.50
print(resp.choices[0].message.content)
print(f"in={u.prompt_tokens} out={u.completion_tokens} cost=${cost:.6f}")
実際のプロンプト数十個で実行し、費用の合計を計算し、予想される1日のボリュームを掛けます。これでハードウェアの見積もりと比較できる数値が得られます。セットアップの詳細が必要な場合は、ストリーミング、関数呼び出し、JSON モードを含むサポートされているパラメータをドキュメントで確認できます。
