リージョン エンドポイント

オンライン予測を使用するには、グローバル エンドポイント(ml.googleapis.com)またはそのリージョン エンドポイント(REGION-ml.googleapis.com)を介して、AI Platform Training と Prediction API を操作できます。オンライン予測にリージョン エンドポイントを使用すると、モデルとバージョンのリソースが他のリージョンから分離されるため、他のリージョンでのサービス停止に対してモデルを保護する機能が追加されます。

現在、AI Platform Prediction は次のリージョン エンドポイントをサポートしています。

  • us-central1
  • us-east1
  • us-east4
  • us-west1
  • northamerica-northeast1
  • europe-west1
  • europe-west2
  • europe-west3
  • europe-west4
  • asia-east1
  • asia-northeast1
  • asia-southeast1
  • australia-southeast1

このガイドでは、リージョン エンドポイントとグローバル エンドポイントを使用する利点と制限を比較します。また、オンライン予測にリージョン エンドポイントを使用する方法についても説明します。

リージョン エンドポイントについて理解する

リージョン エンドポイントには、グローバル エンドポイントとの重要な相違点がいくつかあります。

  • リージョン エンドポイントは Compute Engine(N1)マシンタイプのみをサポートします。リージョン エンドポイントでレガシー(MLS1)マシンタイプの使用はできません。つまり、すべての Compute Engine(N1)マシンタイプを使用する利点と制限が適用されます。たとえば、リージョン エンドポイントで GPU を使用できますが、現時点でストリーム(コンソール)ロギングを有効にすることはできません。

    Compute Engine(N1)マシンタイプを使用するには、リージョン エンドポイントを使用する必要があります。

  • リージョン エンドポイントは、オンライン予測と AI Explanations のみをサポートします。リージョン エンドポイントにデプロイされたモデルは、バッチ予測をサポートしていません。

    AI Platform Prediction は、AI Platform Training および Prediction API を AI Platform Training および AI Platform Vizier と共有します。なお、現在リージョン エンドポイントは AI Platform Training をサポートしていません。AI Platform Vizier は us-central1 エンドポイントでのみサポートされています。

    どの API メソッドがどのエンドポイントで使用可能かについて詳しくは、API リファレンスをご覧ください。

AI Platform Prediction リソース名は、特定のエンドポイントで Google Cloud プロジェクトに固有ですが、さまざまなエンドポイントで複製できます。たとえば、europe-west4 エンドポイントに「hello-world」という名前のモデルを作成し、us-central1 エンドポイントに「hello-world」という名前の別のモデルを作成できます。

リージョン エンドポイントにモデルを一覧表示すると、そのエンドポイントに作成されたモデルのみが表示されます。同様に、モデルをグローバル エンドポイントに一覧表示すると、グローバル エンドポイントで作成されたモデルのみが表示されます。

リージョン エンドポイントとグローバル エンドポイント リージョン

グローバル エンドポイントにモデルリソースを作成するときに、モデルのリージョンを指定できます。このモデル内でバージョンを作成し、予測を提供する場合、予測ノードは指定されたリージョンで実行されます。

リージョン エンドポイントを使用する場合、AI Platform Prediction によってエンドポイントのリージョンで予測ノードが実行されます。ただし、この場合はそのリージョン内のすべての AI Platform Prediction インフラストラクチャが実行されることで AI Platform Prediction によって、さらに分離されます。

たとえば、us-east1 リージョンをグローバル エンドポイントで使用した場合、予測ノードは us-east1 で実行されます。ただし、リソースを管理する AI Platform Prediction インフラストラクチャ(リクエストのルーティング、モデルの処理、バージョンの作成、更新、削除など)は、必ずしも us-east1 で実行されるわけではありません。一方、europe-west4 リージョン エンドポイントを使用する場合、予測ノードとすべての AI Platform Prediction インフラストラクチャは europe-west4 で実行されます。

リージョン エンドポイントの使用

リージョン エンドポイントを使用するには、まずリージョン エンドポイントでモデルを作成する必要があります。そのモデルに関連するすべての操作(モデル バージョンの作成や予測リクエストの送信など)を同じエンドポイントで実行します。

Google Cloud Console を使用している場合は、モデルの作成時に [リージョン エンドポイントを使用する] チェックボックスを必ずオンにします。グローバル エンドポイントの場合と同様に、その他の Google Cloud Console の操作をすべて実行します。

Google Cloud CLI を使用している場合は、モデルとその子リソースとやり取りする各コマンドで、--region フラグにエンドポイントのリージョンを指定します。サポート対象は次のとおりです。

また、特定のリージョンに ai_platform/region プロパティを設定すると、--region フラグを指定していない場合であっても、gcloud CLI で常に AI Platform Prediction コマンドに対応するリージョン エンドポイントが使用されるようになります(この構成は、gcloud ai-platform operations コマンド グループのコマンドには適用されません)。

AI Platform Training と Prediction API を直接操作する場合(Python 用 Google API クライアント ライブラリを使用する場合など)、グローバル エンドポイントにすべての API リクエストを送信するのと同じ手順ですが、ここではリージョン エンドポイントを代わりに使用します。どの API メソッドがリージョン エンドポイントで使用できるかについて詳しくは、API リファレンスをご覧ください。

次の例は、リージョン エンドポイントを使用してモデルとバージョンを作成する方法とオンライン予測リクエストを送信する方法を示しています。この例を使用するには、REGION をリージョン エンドポイントが使用可能なリージョンのいずれかに置き換えます。

  • us-central1
  • us-east1
  • us-east4
  • us-west1
  • northamerica-northeast1
  • europe-west1
  • europe-west2
  • europe-west3
  • europe-west4
  • asia-east1
  • asia-northeast1
  • asia-southeast1
  • australia-southeast1

モデルの作成

Google Cloud コンソール

  1. Google Cloud コンソールで [モデルの作成] ページに移動し、Google Cloud プロジェクトを選択します。

    [モデルの作成] ページに移動

  2. モデルに名前を付け、[リージョン エンドポイントを使用する] チェックボックスをオンにし、[リージョン] プルダウン リストから、使用するエンドポイントのリージョンを選択します。

  3. [Create] ボタンをクリックします。

gcloud

次のコマンドを実行します。

gcloud ai-platform models create MODEL_NAME \
  --region=REGION

コマンドで、次のプレースホルダを置き換えます。

  • MODEL_NAME: モデルに付ける名前。
  • REGION: 使用するエンドポイントのリージョン。

Python

このサンプルでは、Python 用の Google API クライアント ライブラリを使用します。使用するには開発環境に Python 用 Google API クライアント ライブラリをインストールして認証を設定する必要があります。

次の Python コードを実行します。

from google.api_core.client_options import ClientOptions
from googleapiclient import discovery

endpoint = 'https://REGION-ml.googleapis.com'
client_options = ClientOptions(api_endpoint=endpoint)
ml = discovery.build('ml', 'v1', client_options=client_options)

request_body = { 'name': 'MODEL_NAME' }
request = ml.projects().models().create(parent='projects/PROJECT_ID',
    body=request_body)

response = request.execute()
print(response)

コードで、次のプレースホルダを置き換えます。

  • REGION: 使用するエンドポイントのリージョン。
  • MODEL_NAME: モデルに付ける名前。
  • PROJECT_ID: Google Cloud プロジェクトの ID。

詳しくは、モデルの作成をご覧ください。

モデル バージョンの作成

この例では、すでに互換性のあるモデル アーティファクトが Cloud Storage にアップロードされていることを前提としています。

Google Cloud コンソール

前のセクションで作成したモデルを使用して、Google Cloud Console でガイドに従いモデル バージョンの作成を行います。

gcloud

この例では、すでに互換性のあるモデル アーティファクトが Cloud Storage にアップロードされていることを前提としています。次のコマンドを実行します。

gcloud ai-platform versions create VERSION_NAME \
  --region=REGION \
  --model=MODEL_NAME \
  --framework=FRAMEWORK \
  --machine-type=MACHINE_TYPE \
  --origin=MODEL_DIRECTORY \
  --python-version=3.7 \
  --runtime-version=2.11

コマンドで、次のプレースホルダを置き換えます。

  • REGION: 前のセクションで使用したエンドポイントのリージョン。
  • VERSION_NAME: バージョンに付ける名前。
  • MODEL_NAME: 前のセクションで作成したモデルの名前。
  • FRAMEWORK: モデル アーティファクトの作成に使用するフレームワーク。
  • MACHINE_TYPE: Compute Engine(N1)マシンタイプ
  • MODEL_DIRECTORY: モデル ディレクトリへの Cloud Storage URI(「gs://」で始まります)。

Python

次の Python コードを実行します。

from google.api_core.client_options import ClientOptions
from googleapiclient import discovery

endpoint = 'https://REGION-ml.googleapis.com'
client_options = ClientOptions(api_endpoint=endpoint)
ml = discovery.build('ml', 'v1', client_options=client_options)

request_body = { 'name': 'VERSION_NAME',
    'deploymentUri': 'MODEL_DIRECTORY',
    'runtimeVersion': '2.11',
    'machineType': 'MACHINE_TYPE',
    'framework': 'FRAMEWORK',
    'pythonVersion': '3.7'}
request = ml.projects().models().versions().create(
    parent='projects/PROJECT_ID/models/MODEL_NAME',
    body=request_body)

response = request.execute()
print(response)

コードで、次のプレースホルダを置き換えます。

  • REGION: 前のセクションで使用したエンドポイントのリージョン。
  • VERSION_NAME: バージョンに付ける名前。
  • MODEL_DIRECTORY: モデル ディレクトリへの Cloud Storage URI(「gs://」で始まります)。
  • MACHINE_TYPE: Compute Engine(N1)マシンタイプ
  • FRAMEWORK: モデル アーティファクトの作成に使用するフレームワーク。
  • PROJECT_ID: Google Cloud プロジェクトの ID。
  • MODEL_NAME: 前のセクションで作成したモデルの名前。

詳しくは、モデル バージョンの作成をご覧ください。

オンライン予測リクエストの送信

Google Cloud コンソール

  1. Google Cloud Console で、[モデル] ページに移動します。

    [モデル] ページに移動

  2. [リージョン] プルダウン リストで、モデルで使用するエンドポイントのリージョンを選択します。前のセクションで作成したモデルの名前をクリックして、[モデルの詳細] ページに移動します。

  3. 前のセクションで作成したバージョンの名前をクリックして、[バージョンの詳細] ページに移動します。

  4. [テストと使用] タブをクリックします。入力データのインスタンスを 1 つ以上入力し、[Test] ボタンをクリックしてオンライン予測リクエストを送信します。

gcloud

この例では、ローカル環境の JSON(改行区切り)ファイルに予測入力が保存されていることを前提としています。次のコマンドを実行します。

gcloud ai-platform predict \
  --region=REGION \
  --model=MODEL_NAME \
  --version=VERSION_NAME \
  --json-request=INPUT_PATH

コマンドで、次のプレースホルダを置き換えます。

  • REGION: 前のセクションで使用したエンドポイントのリージョン。
  • MODEL_NAME: 前のセクションで作成したモデルの名前。
  • VERSION_NAME: 前のセクションで作成したモデル バージョンの名前。
  • INPUT_PATH: 予測入力を含む、JSON ファイルへのローカル ファイル システム上のパス。

Python

次の Python コードを実行します。

from google.api_core.client_options import ClientOptions
from googleapiclient import discovery

endpoint = 'https://REGION-ml.googleapis.com'
client_options = ClientOptions(api_endpoint=endpoint)
ml = discovery.build('ml', 'v1', client_options=client_options)

request_body = { 'instances': INSTANCES }
request = ml.projects().predict(
    name='projects/PROJECT_ID/models/MODEL_NAME/VERSION_NAME',
    body=request_body)

response = request.execute()
print(response)

コードで、次のプレースホルダを置き換えます。

  • REGION: 前のセクションで使用したエンドポイントのリージョン。
  • INSTANCES: 予測入力インスタンスのリスト。
  • MODEL_NAME: 前のセクションで作成したモデルの名前。
  • VERSION_NAME: 前のセクションで作成したバージョンの名前。

詳しくは、オンライン予測の取得をご覧ください。

次のステップ