オンライン予測を使用するには、グローバル エンドポイント(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
フラグにエンドポイントのリージョンを指定します。サポート対象は次のとおりです。
gcloud ai-platform models
コマンド グループのすべてのコマンド。gcloud ai-platform versions
コマンド グループのすべてのコマンド。- モデルのバージョンに関連付けられた長時間実行オペレーションを操作する際の
gcloud ai-platform operations
コマンド グループのすべてのコマンド。 gcloud ai-platform predict
コマンドgcloud beta ai-platform explain
コマンド
また、特定のリージョンに 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 コンソール
Google Cloud コンソールで [モデルの作成] ページに移動し、Google Cloud プロジェクトを選択します。
モデルに名前を付け、[リージョン エンドポイントを使用する] チェックボックスをオンにし、[リージョン] プルダウン リストから、使用するエンドポイントのリージョンを選択します。
[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 コンソール
Google Cloud Console で、[モデル] ページに移動します。
[リージョン] プルダウン リストで、モデルで使用するエンドポイントのリージョンを選択します。前のセクションで作成したモデルの名前をクリックして、[モデルの詳細] ページに移動します。
前のセクションで作成したバージョンの名前をクリックして、[バージョンの詳細] ページに移動します。
[テストと使用] タブをクリックします。入力データのインスタンスを 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: 前のセクションで作成したバージョンの名前。
詳しくは、オンライン予測の取得をご覧ください。
次のステップ
- リージョン エンドポイントとグローバル エンドポイントの違いをご利用いただけるリージョンで確認します。これには、GPU の可用性の違いが含まれます。
- リージョン エンドポイントに必要な Compute Engine(N1)マシンタイプの詳細を確認します。
- モデルとバージョンを作成するときに構成できる、その他の追加オプションについて確認します。