Vertex AI Endpoints

Vertex AI Endpointsとは?

Vertex AI Endpoints は、Google Cloud の Vertex AI が提供する機能の一つで、機械学習モデルをデプロイし、エンドポイントとして公開するためのサービスです。これにより、トレーニング済みのモデルをオンラインで利用可能にし、リアルタイムで予測を行うことができます。

以前の記事でBigQueryで作成したモデルをModel Registryに登録しました。
今回はModel Registoryからモデルのデプロイを行ってみます。

モデルのデプロイ

登録したモデルを選択し、「デプロイとテスト」タブを開きます。

「エンドポイントにデプロイ」をクリックします。

今回は新しいエンドポイントとして作成します。
エンドポイント名を入力し、マシンタイプ等を設定し、デプロイをクリックします。

作成されたエンドポイントの確認

デプロイが完了すると、Vertex AIのオンライン予測メニューにエンドポイントとして登録されます。

予測をしてみる

作成したエンドポイントに対してサンプルリクエストを行い予測を行ってみます。赤枠のリンクをクリックするとcurlコマンドでリクエストするサンプルとPythonのサンプルを確認することができます。

今回はcurlコマンドでリクエストを行います。

まずはGoogleアカウントで認証します。

gcloud auth application-default login

次に予測対象のJSONオブジェクトを作成して適当なファイル名で保存しておきます。以下のようなJSONファイルを作成しました。ファイル名はtest.jsonとしました。ここで指定している特徴量はBigQueryのMLモデルを作成時に指定しているものです。予測用にテスト用のデータから適当に1サンプルを取り出し設定しています。

{
  "instances": [
    {
      "LotArea": 11622,
      "YearBuilt": 1961,
      "_1stFlrSF": 896,
      "_2ndFlrSF": 0,
      "FullBath": 1,
      "BedroomAbvGr": 2,
      "TotRmsAbvGrd": 5
    }
  ]
}

次に環境変数を設定します。
先程のリクエストの例を開くと自動で設定されているので、INPUT_DATA_FILEだけファイル名を変更し、設定します。

ENDPOINT_ID="エンドポイントのIDを設定"
PROJECT_ID="プロジェクトのIDを設定"
INPUT_DATA_FILE="test.json"

リクエストを実行し、予測を行ってみます。

curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://us-central1-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/us-central1/endpoints/${ENDPOINT_ID}:predict \
-d "@${INPUT_DATA_FILE}"

下記の予測が出力されました。

{
	"predictions": [
		[
			120771.2537668252
		]
	],
	"deployedModelId": "6444648867743924224",
	"model": "projects/722265987960/locations/us-central1/models/house_price_model",
	"modelDisplayName": "house_price_model",
	"modelVersionId": "1"
}