推論用のコンピューティング リソースを構成する

Vertex AI は、オンライン推論とバッチ推論を処理するためにノードを割り当てます。カスタム トレーニング モデルまたは AutoML モデルを Endpoint リソースにデプロイしてオンライン推論を提供する場合、またはバッチ推論をリクエストする場合は、推論サービスがこれらのノードに使用する仮想マシンのタイプをカスタマイズできます。GPU を使用するように推論ノードを構成することもできます。

マシンタイプによって、次のようないくつかの点で違いがあります。

  • ノードあたりの仮想 CPU(vCPU)の数
  • ノードあたりのメモリの量
  • 料金

コンピューティング リソースの多いマシンタイプを選択すると、推論を処理する際のレイテンシの短縮や、同時に処理される推論リクエスト数の増加につながります。

コストと可用性を管理する

VM リソースのコスト管理や可用性確保のために、Vertex AI には次の機能が用意されています。

  • 推論ジョブで VM リソースが必要なときに利用できるようにするには、Compute Engine の予約を使用します。予約を使用すると、Compute Engine リソースのキャパシティを確実に確保できます。詳細については、推論で予約を使用するをご覧ください。

  • 推論ジョブの実行コストを削減するには、Spot VM を使用します。Spot VM は、Compute Engine の余剰キャパシティを利用する仮想マシン(VM)インスタンスです。Spot VM には大幅な割引がありますが、Compute Engine はそのキャパシティを任意のタイミングで再利用するために、Spot VM をプリエンプティブに停止または削除する場合があります。詳細については、推論で Spot VM を使用するをご覧ください。

コンピューティング リソースを指定する場所

オンライン推論

カスタム トレーニング モデルまたは AutoML 表形式モデルを使用してオンライン推論を行う場合は、Model リソースを DeployedModel として Endpoint にデプロイする際にマシンタイプを指定する必要があります。他のタイプの AutoML モデルの場合、Vertex AI によって自動的にマシンタイプが構成されます。

DeployedModeldedicatedResources.machineSpec フィールドにマシンタイプ(および、必要に応じて GPU 構成)を指定します。

各モデルタイプをデプロイする方法を学習します。

バッチ推論

カスタム トレーニング モデルまたは AutoML 表形式モデルでバッチ推論を行う場合は、BatchPredictionJob リソースを作成する際にマシンタイプを指定する必要があります。BatchPredictionJobdedicatedResources.machineSpec フィールドにマシンタイプ(および、必要に応じて GPU 構成)を指定します。

マシンタイプ

次の表は、カスタム トレーニング モデルと AutoML 表形式モデルで推論を行うために使用可能なマシンタイプを比較したものです。

E2 シリーズ

名前 vCPU メモリ(GB)
e2-standard-2 2 8
e2-standard-4 4 16
e2-standard-8 8 32
e2-standard-16 16 64
e2-standard-32 32 128
e2-highmem-2 2 16
e2-highmem-4 4 32
e2-highmem-8 8 64
e2-highmem-16 16 128
e2-highcpu-2 2 2
e2-highcpu-4 4 4
e2-highcpu-8 8 8
e2-highcpu-16 16 16
e2-highcpu-32 32 32

N1 シリーズ

名前 vCPU メモリ(GB)
n1-standard-2 2 7.5
n1-standard-4 4 15
n1-standard-8 8 30
n1-standard-16 16 60
n1-standard-32 32 120
n1-highmem-2 2 13
n1-highmem-4 4 26
n1-highmem-8 8 52
n1-highmem-16 16 104
n1-highmem-32 32 208
n1-highcpu-4 4 3.6
n1-highcpu-8 8 7.2
n1-highcpu-16 16 14.4
n1-highcpu-32 32 28.8

N2 シリーズ

名前 vCPU メモリ(GB)
n2-standard-2 2 8
n2-standard-4 4 16
n2-standard-8 8 32
n2-standard-16 16 64
n2-standard-32 32 128
n2-standard-48 48 192
n2-standard-64 64 256
n2-standard-80 80 320
n2-standard-96 96 384
n2-standard-128 128 512
n2-highmem-2 2 16
n2-highmem-4 4 32
n2-highmem-8 8 64
n2-highmem-16 16 128
n2-highmem-32 32 256
n2-highmem-48 48 384
n2-highmem-64 64 512
n2-highmem-80 80 640
n2-highmem-96 96 768
n2-highmem-128 128 864
n2-highcpu-2 2 2
n2-highcpu-4 4 4
n2-highcpu-8 8 8
n2-highcpu-16 16 16
n2-highcpu-32 32 32
n2-highcpu-48 48 48
n2-highcpu-64 64 64
n2-highcpu-80 80 80
n2-highcpu-96 96 96

N2D シリーズ

名前 vCPU メモリ(GB)
n2d-standard-2 2 8
n2d-standard-4 4 16
n2d-standard-8 8 32
n2d-standard-16 16 64
n2d-standard-32 32 128
n2d-standard-48 48 192
n2d-standard-64 64 256
n2d-standard-80 80 320
n2d-standard-96 96 384
n2d-standard-128 128 512
n2d-standard-224 224 896
n2d-highmem-2 2 16
n2d-highmem-4 4 32
n2d-highmem-8 8 64
n2d-highmem-16 16 128
n2d-highmem-32 32 256
n2d-highmem-48 48 384
n2d-highmem-64 64 512
n2d-highmem-80 80 640
n2d-highmem-96 96 768
n2d-highcpu-2 2 2
n2d-highcpu-4 4 4
n2d-highcpu-8 8 8
n2d-highcpu-16 16 16
n2d-highcpu-32 32 32
n2d-highcpu-48 48 48
n2d-highcpu-64 64 64
n2d-highcpu-80 80 80
n2d-highcpu-96 96 96
n2d-highcpu-128 128 128
n2d-highcpu-224 224 224

C2 シリーズ

名前 vCPU メモリ(GB)
c2-standard-4 4 16
c2-standard-8 8 32
c2-standard-16 16 64
c2-standard-30 30 120
c2-standard-60 60 240

C2D シリーズ

名前 vCPU メモリ(GB)
c2d-standard-2 2 8
c2d-standard-4 4 16
c2d-standard-8 8 32
c2d-standard-16 16 64
c2d-standard-32 32 128
c2d-standard-56 56 224
c2d-standard-112 112 448
c2d-highcpu-2 2 4
c2d-highcpu-4 4 8
c2d-highcpu-8 8 16
c2d-highcpu-16 16 32
c2d-highcpu-32 32 64
c2d-highcpu-56 56 112
c2d-highcpu-112 112 224
c2d-highmem-2 2 16
c2d-highmem-4 4 32
c2d-highmem-8 8 64
c2d-highmem-16 16 128
c2d-highmem-32 32 256
c2d-highmem-56 56 448
c2d-highmem-112 112 896

C3 シリーズ

名前 vCPU メモリ(GB)
c3-highcpu-4 4 8
c3-highcpu-8 8 16
c3-highcpu-22 22 44
c3-highcpu-44 44 88
c3-highcpu-88 88 176
c3-highcpu-176 176 352

A2 シリーズ

名前 vCPU メモリ(GB) GPU(NVIDIA A100
a2-highgpu-1g 12 85 1(A100 40GB)
a2-highgpu-2g 24 170 2(A100 40GB)
a2-highgpu-4g 48 340 4(A100 40GB)
a2-highgpu-8g 96 680 8(A100 40GB)
a2-megagpu-16g 96 1360 16(A100 40GB)
a2-ultragpu-1g 12 170 1(A100 80GB)
a2-ultragpu-2g 24 340 2(A100 80GB)
a2-ultragpu-4g 48 680 4(A100 80GB)
a2-ultragpu-8g 96 1360 8(A100 80GB)

A3 シリーズ

名前 vCPU メモリ(GB) GPU(NVIDIA H100 または H200
a3-highgpu-1g 26 234 1(H100 80GB)
a3-highgpu-2g 52 468 2(H100 80GB)
a3-highgpu-4g 104 936 4(H100 80GB)
a3-highgpu-8g 208 1872 8(H100 80GB)
a3-edgegpu-8g 208 1872 8(H100 80GB)
a3-ultragpu-8g 224 2952 8(H200 141GB)

A4X シリーズ

名前 vCPU メモリ(GB) GPU(NVIDIA GB200
a4x-highgpu-4g 140 884 4

G2 シリーズ

名前 vCPU メモリ(GB) GPU(NVIDIA L4
g2-standard-4 4 16 1
g2-standard-8 8 32 1
g2-standard-12 12 48 1
g2-standard-16 16 64 1
g2-standard-24 24 96 2
g2-standard-32 32 128 1
g2-standard-48 48 192 4
g2-standard-96 96 384 8

マシンタイプごとの料金をご覧ください。これらのマシンタイプの詳細な仕様については、マシンタイプに関する Compute Engine ドキュメントをご覧ください。

最適なマシンタイプを見つける

オンライン推論

ユースケースに最適なマシンタイプを探すには、複数のマシンタイプにモデルを読み込み、レイテンシ、コスト、同時実行、スループットなどの特性を測定することをおすすめします。

たとえば、複数のマシンタイプでこのノートブックを実行し、結果を比較して最適なマシンタイプを探します。

Vertex AI は、システム プロセスを実行するために、各レプリカで約 1 個の vCPU を予約します。つまり、単一コアのマシンタイプでノートブックを実行することは、推論を提供する 2 コアのマシンタイプを使用する場合と同じになります。

マシンが大きいほど費用がかかりますが、同じワークロードを処理するために必要なレプリカの数が少ないため、全体的なコストを削減できます。推論費用を検討する際は、この点に注意してください。これは、1 時間あたりの費用が高くなる傾向がある GPU で特に顕著ですが、レイテンシの短縮と費用の低減の両方を実現できます。

バッチ推論

詳細については、マシンタイプとレプリカ数を選択するをご覧ください。

オプションの GPU アクセラレータ

A2 シリーズG2 シリーズなど、一部の構成では GPU の数が固定されています。

A4X(a4x-highgpu-4gシリーズでは、レプリカの最小数が 18 になります。このマシンはラック単位で購入し、最小 18 台の VM があります。

N1 シリーズなどの他の構成では、必要に応じて GPU を追加し、推論ノードの処理を高速化できます。

オプションの GPU アクセラレータを追加するには、いくつかの要件を考慮する必要があります。

  • GPU を使用できるのは、Model リソースが TensorFlow SavedModel をベースにしている場合、または GPU を活用できるよう設計されたカスタム コンテナを使用している場合に限られます。scikit-learn モデルまたは XGBoost モデルに GPU を使用することはできません。
  • GPU の各タイプの可用性は、モデルで使用するリージョンによって異なります。どのタイプの GPU がどのリージョンで使用可能かを確認してください。
  • DeployedModel リソースや BatchPredictionJob には 1 つのタイプの GPU しか使用できません。また、使用しているマシンタイプによっては、追加できる GPU の数が制限されます。次の表では、これらの制限について示しています。

次の表に、オンライン推論に使用できるオプションの GPU と、各 Compute Engine マシンタイプで使用できるタイプ別 GPU の最大数を示します。

各マシンタイプに有効な GPU の数
マシンタイプ NVIDIA Tesla P100 NVIDIA Tesla V100 NVIDIA Tesla P4 NVIDIA Tesla T4
n1-standard-2 1、2、4 1、2、4、8 1、2、4 1、2、4
n1-standard-4 1、2、4 1、2、4、8 1、2、4 1、2、4
n1-standard-8 1、2、4 1、2、4、8 1、2、4 1、2、4
n1-standard-16 1、2、4 2、4、8 1、2、4 1、2、4
n1-standard-32 2、4 4、8 2、4 2、4
n1-highmem-2 1、2、4 1、2、4、8 1、2、4 1、2、4
n1-highmem-4 1、2、4 1、2、4、8 1、2、4 1、2、4
n1-highmem-8 1、2、4 1、2、4、8 1、2、4 1、2、4
n1-highmem-16 1、2、4 2、4、8 1、2、4 1、2、4
n1-highmem-32 2、4 4、8 2、4 2、4
n1-highcpu-2 1、2、4 1、2、4、8 1、2、4 1、2、4
n1-highcpu-4 1、2、4 1、2、4、8 1、2、4 1、2、4
n1-highcpu-8 1、2、4 1、2、4、8 1、2、4 1、2、4
n1-highcpu-16 1、2、4 2、4、8 1、2、4 1、2、4
n1-highcpu-32 2、4 4、8 2、4 2、4

オプションの GPU を使用すると、追加費用が発生します。

単一の VM で複数のレプリカを同時スケジューリングする

デプロイの費用を最適化するには、同じモデルの複数のレプリカを、複数の GPU ハードウェア アクセラレータを搭載した単一の VM にデプロイします。たとえば、8 個の NVIDIA H100 GPU を搭載した a3-highgpu-8g VM などです。各モデル レプリカは、1 つ以上の GPU に割り当てることができます。

小規模なワークロードの場合は、NVIDIA マルチインスタンス GPU(MIG)を使用して、単一の GPU を複数の小規模なインスタンスに分割することもできます。これにより、サブ GPU レベルでリソースを割り当て、各アクセラレータの使用率を最大化できます。マルチインスタンス GPU の詳細については、NVIDIA マルチインスタンス GPU のユーザーガイドをご覧ください。

これらの機能はどちらも、サービング ワークロードのリソース使用率を向上させ、費用対効果を高めるように設計されています。

制限事項

この機能には、次の制限があります。

  • 同時にスケジュール設定されるモデル レプリカはすべて同じモデル バージョンである必要があります。
  • デプロイ リソースプールを使用してデプロイ間でリソースを共有することはできません。

サポートされているマシンタイプ

次のマシンタイプがサポートされています。GPU が 1 つしかないマシンタイプでは、コスケジューリングは必要ありません。

マシンタイプ Coschedule Coschedule + MIG
a2-highgpu-1g なし
a2-highgpu-2g
a2-highgpu-4g
a2-highgpu-8g
a2-highgpu-16g
a2-ultragpu-1g なし
a2-ultragpu-2g
a2-ultragpu-4g
a2-ultragpu-8g
a3-edgegpu-8g
a3-highgpu-1g なし
a3-highgpu-2g
a3-highgpu-4g
a3-highgpu-8g
a3-megagpu-8g
a3-ultragpu-8g
a4-highgpu-8g
a4x-highgpu-8g いいえ

前提条件

この機能を使用する前に、gcloud CLI または Vertex AI API を使用してモデルをデプロイするをご覧ください。

モデル レプリカのデプロイ

次のサンプルは、同時スケジューリングされたモデル レプリカをデプロイする方法を示しています。

gcloud

次の gcloud コマンドを使用して、VM に同時スケジューリングされたモデル レプリカをデプロイします。

gcloud ai endpoints deploy-model ENDPOINT_ID \
  --region=LOCATION_ID \
  --model=MODEL_ID \
  --display-name=DEPLOYED_MODEL_NAME \
  --min-replica-count=MIN_REPLICA_COUNT \
  --max-replica-count=MAX_REPLICA_COUNT \
  --machine-type=MACHINE_TYPE \
  --accelerator=type=ACC_TYPE,count=ACC_COUNT \
  --traffic-split=0=100

次のように置き換えます。

  • ENDPOINT_ID: エンドポイントの ID。
  • LOCATION_ID: Vertex AI を使用するリージョン。
  • MODEL_ID: デプロイするモデルのモデル ID。
  • DEPLOYED_MODEL_NAME: DeployedModel の名前。DeployedModelModel の表示名を使用することもできます。
  • MIN_REPLICA_COUNT: このデプロイの最小ノード数。ノード数は、推論負荷に応じてノードの最大数まで増減できますが、この数より少なくすることはできません。
  • MAX_REPLICA_COUNT: このデプロイの最大ノード数。ノード数は、推論負荷に応じてこのノード数まで増減できますが、最小ノード数より少なくなることはありません。。デプロイするレプリカ 2 つごとに 1 つの VM が必要です。
  • MACHINE_TYPE: このデプロイに使用する VM のタイプ。アクセラレータ最適化ファミリーに属している必要があります。
  • ACC_TYPE: GPU アクセラレータのタイプ。MACHINE_TYPE に対応している必要があります。a3-highgpu-8g には nvidia-h100-80gb を使用します。
  • ACC_COUNT: 各レプリカが使用できる GPU の数。1 以上、マシンの GPU の総数以下である必要があります。

REST

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_NUMBER: プロジェクト番号。
  • LOCATION_ID: Vertex AI を使用するリージョン。
  • MODEL_ID: デプロイするモデルの ID。
  • DEPLOYED_MODEL_NAME: DeployedModel の名前。DeployedModelModel の表示名を使用することもできます。
  • MACHINE_TYPE: 省略可。このデプロイの各ノードで使用するマシンリソース。デフォルトの設定は n1-standard-2 です。マシンタイプの詳細。
  • ACC_TYPE: GPU アクセラレータのタイプ。`GPU_PARTITION_SIZE` に対応している必要があります。
  • GPU_PARTITION_SIZE: GPU パーティション サイズ。例: 「1g.10gb」。
  • ACC_COUNT: 各レプリカが使用できる GPU の数。1 以上、マシン内の GPU の総数以下である必要があります。
  • MIN_REPLICA_COUNT: このデプロイの最小ノード数。ノード数は、推論負荷に応じてノードの最大数まで増減できますが、この数より少なくすることはできません。
  • MAX_REPLICA_COUNT: このデプロイの最大ノード数。ノード数は、推論負荷に応じてこのノード数まで増減できますが、最小ノード数より少なくなることはありません。

HTTP メソッドと URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints/ENDPOINT_ID:deployModel

リクエストの本文(JSON):

{
  "deployedModel": {
    "model": "projects/PROJECT_NUMBER/locations/LOCATION_ID/models/MODEL_ID",
    "displayName": "DEPLOYED_MODEL_NAME",
    "dedicatedResources": {
      "machineSpec": {
        "machineType": "MACHINE_TYPE",
        "acceleratorType": "ACC_TYPE",
        "gpuPartitionSize": "GPU_PARTITION_SIZE",
        "acceleratorCount": "ACC_COUNT""
      },
      "minReplicaCount": MIN_REPLICA_COUNT,
      "maxReplicaCount": MAX_REPLICA_COUNT,
      "autoscalingMetricSpecs": [
        {
          "metricName": "aiplatform.googleapis.com/prediction/online/accelerator/duty_cycle",
          "target": 70
        }
      ]
    }
  }
}

リクエストを送信するには、次のいずれかのオプションを展開します。

成功したことを示すステータス コード(2xx)と空のレスポンスが返されます。

Python

Vertex AI SDK for Python のインストールまたは更新の方法については、Vertex AI SDK for Python をインストールするをご覧ください。 詳細については、Python API リファレンス ドキュメントをご覧ください。

次の Python コマンドを使用して、VM に同時スケジューリングされたモデル レプリカをデプロイします。

endpoint.deploy(
    model=<var>MODEL</var>,
    machine_type=MACHINE_TYPE,
    min_replica_count=MIN_REPLICA_COUNT,
    max_replica_count=MAX_REPLICA_COUNT,
    accelerator_type=ACC_TYPE,
    gpu_partition_size=GPU_PARTITION_SIZE,
    accelerator_count=ACC_COUNT
)

次のように置き換えます。

  • MODEL: 次の API 呼び出しによって返されるモデル オブジェクト。

    model = aiplatform.Model(model_name=model_name)
    
  • MACHINE_TYPE: このデプロイに使用する VM のタイプ。アクセラレータ最適化ファミリーのものである必要があります。プレビューでは、a3-highgpu-8g のみがサポートされています。

  • MIN_REPLICA_COUNT: このデプロイの最小ノード数。ノード数は、推論負荷に応じてノードの最大数まで増減できますが、この数より少なくすることはできません。

  • MAX_REPLICA_COUNT: このデプロイの最大ノード数。ノード数は、推論負荷に応じてこのノード数まで増減できますが、最小ノード数より少なくなることはありません。

  • ACC_TYPE: GPU アクセラレータのタイプ。GPU_PARTITION_SIZE に対応している必要があります。

  • GPU_PARTITION_SIZE: GPU パーティション サイズ。例: "1g.10gb"。各 GPU タイプでサポートされているパーティション サイズの包括的なリストについては、マルチインスタンス GPU パーティションをご覧ください。

  • ACC_COUNT: 各レプリカが使用できる GPU の数。1 以上、マシン内の GPU の総数以下にする必要があります。a3-highgpu-8g には 1 ~ 8 の値を指定します。

VM の使用状況をモニタリングする

次の手順に沿って、Metrics Explorer でデプロイされたレプリカの実際のマシン数をモニタリングします。

  1. Google Cloud コンソールで、[Metrics Explorer] ページに移動します。

    [Metrics Explorer] に移動

  2. 指標を表示するプロジェクトを選択します。

  3. [指標] プルダウン メニューの [指標を選択] をクリックします。

  4. [リソース名または指標名でフィルタ] 検索バーに「Vertex AI Endpoint」と入力します。

  5. [Vertex AI エンドポイント] > [予測] 指標カテゴリを選択します。[アクティブな指標] で、[マシン数] を選択します。

  6. [適用] をクリックします。

課金

課金は GPU の数ではなく、使用されている VM の数に基づきます。Metrics Explorer を使用して VM の使用状況をモニタリングできます。

高可用性

複数のレプリカが同じ VM で同時スケジューリングされるため、レプリカ数が単一の VM ノードを超えるまで、Vertex AI Inference はデプロイを複数の VM に分散できません。高可用性を実現するため、少なくとも 2 つのノード(VM)にデプロイすることをおすすめします。

次のステップ