GPU Cloud

マネージドGPUインスタンスをデプロイし、モデルやDockerワークロードを実行し、EmpirioLabs APIを通じて接続できます。

GPU Cloudは、モデルサービング、ノートブック、ComfyUI、Web Terminal、Ollama、または自社のCUDAイメージのためにマネージドGPUインスタンスをプロビジョニングします。請求は単位ごとにクレジット残高と計測されます。認証済みのEmpirioLabsのAPIパスを通じて実行中のワークロードに接続します。

ダッシュボードのGPU Cloudページや、ここでドキュメントに記載されているAPIからインスタンスを管理できます。

仕組み

  1. **カタログからGPUを選んでください。各行はVRAM、時間別価格、そして正確な利用可能な数を示しています。
  2. **ワークロードを選択してください:キュレーションされたモデル、Hugging FaceのモデルID、テンプレート、またはカスタムCUDAのDockerイメージ。
  3. インスタンスを展開してください。ダッシュボードの設定にはアカウントの現在のGPU制限が表示されています。
  4. 準備を待て。新しいインスタンスはprovisioning、次にloadingrunningを経て進みます。
  5. **EmpirioLabsのAPIキーを使ってAPI経由で接続してください。
  6. 終わったら止めるか破壊しろ。停止されたインスタンスはGPUとランタイムディスクを解放しつつ、デプロイ仕様は保持して新たなスタートを可能にします。破壊されたインスタンスは永久に削除されます。

価格設定と制限

  • 価格はGPU1時間あたりで記載され、秒単位で請求されます。
  • マルチGPU展開はlisted hourly price x GPU countとして請求されます。
  • 請求はインスタンスがrunningに達した時点で始まります。
  • インスタンスが停止または破棄されると請求が停止します。
  • インスタンスの展開と開始には、最初の実行期間に十分なクレジット残高が必要です。
  • 残高閾値がもはや十分でなくなった場合、実行中のインスタンスは自動的に停止されます。
  • GPU Cloudの上限はアカウントごとに異なります。ダッシュボードの設定には実効制限が表示されます。
  • ディスクサイズは100GBから300GBまでリクエスト可能です。

カタログを閲覧してください

このカタログは顧客に安全なGPUメタデータ、価格、現在の在庫状況を返します。

GET
/v1/gpu/catalog
1curl https://api.empiriolabs.ai/v1/gpu/catalog
$curl https://api.empiriolabs.ai/v1/gpu/catalog
1{
2 "object": "list",
3 "data": [
4 {
5 "slug": "rtx-4090",
6 "name": "RTX 4090",
7 "vram_gb": 24,
8 "price_hourly": 0.65,
9 "available": true,
10 "available_count": 21,
11 "max_gpus": 8,
12 "regions": ["US", "EU"]
13 }
14 ]
15}
GET
/v1/gpu/catalog/:slug
1curl https://api.empiriolabs.ai/v1/gpu/catalog/rtx-4090

インスタンスをデプロイする

デプロイはプロビジョニングを開始し、provisioning状態のインスタンスを返します。statusrunningされるまで投票GET /v1/gpu/instances/\{id\}。割り当てやセットアップが時間内に準備できない場合、インスタンスはerrorに移動し、割り当ては自動的にキャンセルされます。

POST
/v1/gpu/instances
1curl -X POST https://api.empiriolabs.ai/v1/gpu/instances \
2 -H "Authorization: Bearer <token>" \
3 -H "Content-Type: application/json" \
4 -d '{
5 "gpu_slug": "rtx-4090"
6}'

モデルを展開する

キュレーションされたtemplate_slugを渡すか、Hugging FaceのリポジトリIDを貼り付けてください。モデル展開はインスタンス上のOpenAI互換/v1エンドポイントから提供されます。

$curl https://api.empiriolabs.ai/v1/gpu/instances \
> -H "Authorization: Bearer $EMPIRIOLABS_API_KEY" \
> -H "Content-Type: application/json" \
> -d '{
> "gpu_slug": "rtx-4090",
> "mode": "model",
> "hf_id": "Qwen/Qwen2.5-7B-Instruct"
> }'

ゲート付きリポジトリの場合は、トークンをenvで渡します:

1{
2 "gpu_slug": "a100-80gb",
3 "mode": "model",
4 "hf_id": "meta-llama/Llama-3.1-8B-Instruct",
5 "env": { "HF_TOKEN": "hf_..." }
6}

テンプレートをデプロイする

テンプレートはready-to-run環境です。利用可能なテンプレートにはPyTorch + JupyterLab、ComfyUI、Web Terminal、Ollamaなどがあります。

$curl https://api.empiriolabs.ai/v1/gpu/instances \
> -H "Authorization: Bearer $EMPIRIOLABS_API_KEY" \
> -H "Content-Type: application/json" \
> -d '{
> "gpu_slug": "rtx-4090",
> "mode": "template",
> "template_slug": "pytorch-jupyter",
> "disk_gb": 150
> }'

カスタムDockerイメージをデプロイしてください

自分でCUDA画像を動かしてください。CPU専用イメージは、ランタイムがGPU互換コンテナを期待しているため失敗することがあります。

$curl https://api.empiriolabs.ai/v1/gpu/instances \
> -H "Authorization: Bearer $EMPIRIOLABS_API_KEY" \
> -H "Content-Type: application/json" \
> -d '{
> "gpu_slug": "rtx-4090",
> "mode": "custom",
> "image": "pytorch/pytorch:2.4.0-cuda12.1-cudnn9-runtime",
> "ports": [8000],
> "disk_gb": 150,
> "env": { "MY_VAR": "value" }
> }'

ライフサイクル管理

GET
/v1/gpu/instances
1curl https://api.empiriolabs.ai/v1/gpu/instances \
2 -H "Authorization: Bearer <token>" \
3 -H "Content-Type: application/json"
GET
/v1/gpu/instances/:instance_id
1curl https://api.empiriolabs.ai/v1/gpu/instances/instance_id \
2 -H "Authorization: Bearer <token>" \
3 -H "Content-Type: application/json"
POST
/v1/gpu/instances/:instance_id/:action
1curl -X POST https://api.empiriolabs.ai/v1/gpu/instances/instance_id/stop \
2 -H "Authorization: Bearer <token>" \
3 -H "Content-Type: application/json" \
4 -d '{}'

refreshでステータスを再同期し、stopで実行中の割り当てを解放し、請求を一時停止し、startで保存したインスタンス仕様を再デプロイします。

$curl -X POST https://api.empiriolabs.ai/v1/gpu/instances/$ID/stop \
> -H "Authorization: Bearer $EMPIRIOLABS_API_KEY"
DELETE
/v1/gpu/instances/:instance_id
1curl -X DELETE https://api.empiriolabs.ai/v1/gpu/instances/instance_id \
2 -H "Authorization: Bearer <token>" \
3 -H "Content-Type: application/json" \
4 -d '{}'

インスタンスを破棄すると請求が永久に停止し、元に戻すことはできません。

現状

現状意味
provisioning容量は割り当てられています。
loading仕事量は始まるか、ウォームアップするかです。
running作業負荷は接続パスを通じてアクセス可能で、請求も有効です。
stopping停止または破壊の操作が適用されています。
stoppedGPUの請求は一時停止されています。Startは保存したインスタンス仕様を新しいランタイムディスクとともに再デプロイします。
errorプロビジョニングやランタイム設定が失敗したり、割り当てが間に合わなかったりしました。インスタンスは更新または破壊可能です。
destroyedインスタンスは永久に削除されました。

実行中のインスタンスに接続する

EmpirioLabsのAPIキーでConnectエンドポイントを使いましょう。GET、POST、PUT、パッチ、削除、そしてレスポンス配信に対応しています。

GET
/v1/gpu/connect/:instance_id/:path
1curl https://api.empiriolabs.ai/v1/gpu/connect/instance_id/v1%2Fchat%2Fcompletions \
2 -H "Authorization: Bearer <token>" \
3 -H "Content-Type: application/json"

モデル展開の場合、インスタンス上のOpenAI互換エンドポイントを呼び出します:

$curl https://api.empiriolabs.ai/v1/gpu/connect/$ID/v1/chat/completions \
> -H "Authorization: Bearer $EMPIRIOLABS_API_KEY" \
> -H "Content-Type: application/json" \
> -d '{
> "model": "Qwen/Qwen2.5-7B-Instruct",
> "messages": [{ "role": "user", "content": "Hello!" }]
> }'
1from openai import OpenAI
2
3client = OpenAI(
4 base_url="https://api.empiriolabs.ai/v1/gpu/connect/INSTANCE_ID/v1",
5 api_key="EMPIRIOLABS_API_KEY",
6)
7
8resp = client.chat.completions.create(
9 model="Qwen/Qwen2.5-7B-Instruct",
10 messages=[{"role": "user", "content": "Hello!"}],
11)
12print(resp.choices[0].message.content)

JupyterLab、ComfyUI、Web Terminal、またはOllamaの場合は、ダッシュボードからインスタンス接続URLを開くか、該当する接続パスにリクエストを送信してください。

ダッシュボードでモデルとチャットしてください

モデル(またはOpenAI互換APIを提供するインスタンス)をデプロイすると、ダッシュボードには組み込みのチャットページが表示され、コードを書かずにすぐにモデルを試すことができます。GPU Cloudページからインスタンスを開き、このモデルでチャットを選択してください。チャットページは応答をストリーミングし、システムプロンプトや通常のサンプリングコントロール(温度、トップp、最大トークン)をサポートし、マルチモーダルモデル用の画像や音声を添付できます。APIと同じ認証済みコネクトパスで動作するため、追加の設定や個別の請求は不要です。インスタンスはすでに秒単位でメーター化されています。

SSHとシェルアクセス

ワークロード内にシェルが必要な場合はWebターミナルテンプレートを使うか、カスタムコンテナからHTTPサービスを公開して/v1/gpu/connect/\{instance_id\}/\{path\}経由でアクセスしてください。

使用および請求記録

GPU Cloudダッシュボードにはランニング消費とライフタイムGPU消費が表示されます。APIライフサイクルの応答には、インスタンス価格、GPU数、請求状況、請求金額が含まれ、自社システムの使用量を照合できます。