Vertex AI でホストされているモデルに対するリモートモデルの CREATE MODEL ステートメント

このドキュメントでは、Vertex AI にデプロイされたモデルに対して、BigQuery でリモートモデルを作成するための CREATE MODEL ステートメントについて説明します。

CREATE MODEL の構文

{CREATE MODEL | CREATE MODEL IF NOT EXISTS | CREATE OR REPLACE MODEL}
`project_id.dataset.model_name`
INPUT (field_name field_type)
OUTPUT (field_name field_type)
REMOTE WITH CONNECTION `project_id.region.connection_id`
OPTIONS(ENDPOINT = vertex_ai_https_endpoint);

CREATE MODEL

指定したデータセットに新しいモデルを作成し、トレーニングします。モデル名が存在する場合、CREATE MODEL はエラーを返します。

CREATE MODEL IF NOT EXISTS

指定したデータセットにモデルが存在しない場合にのみ、新しいモデルを作成してトレーニングします。

CREATE OR REPLACE MODEL

モデルを作成してトレーニングし、指定したデータセット内の同じ名前を持つ既存のモデルを置き換えます。

model_name

作成または置換するモデルの名前。モデル名は、データセット内で一意である必要があります。他のモデルやテーブルに同じ名前を付けることはできません。モデル名は、BigQuery テーブルと同じ命名規則に従う必要があります。モデル名の条件は次のとおりです。

  • 1,024 文字以内
  • 英字(大文字または小文字)、数字、アンダースコアだけが含まれている

model_name では、大文字と小文字は区別されません。

デフォルト プロジェクトを構成していない場合は、次の形式でプロジェクト ID をモデル名の前に追加する必要があります(バッククォートを含みます)。

`[PROJECT_ID].[DATASET].[MODEL]`

たとえば `myproject.mydataset.mymodel` です。

INPUT 句と OUTPUT

HTTPS エンドポイントでリモートモデルを作成する場合は、INPUT 句と OUTPUT 句を指定する必要があります。INPUT 句には Vertex AI エンドポイントのリクエストに必要なフィールドが含まれ、OUTPUT 句には Vertex AI エンドポイントのレスポンスに必要なフィールドが含まれている必要があります。

サポートされるデータタイプ

INPUT 句と OUTPUT 句では、次の BigQuery のデータ型を使用できます。

フィールド名の形式

INPUTOUTPUT のフィールド名は、Vertex AI エンドポイントのリクエストおよびレスポンスのフィールド名のように一致する必要があります。1 つの OUTPUT を使用した Vertex AI エンドポイントの場合、レスポンスにフィールド名がないため、OUTPUT ステートメントで任意のフィールド名を指定できます。

Vertex AI リクエストが次の例のような場合:

{
  "instances": [
    { "f1": 10, "f2": 12.3, "f3": "abc", "f4": [1, 2, 3, 4] },
    { "f1": 40, "f2": 32.5, "f3": "def", "f4": [11, 12, 13, 14] },
  ]
}

INPUT ステートメントは次の条件を満たす必要があります。

INPUT(f1 INT64, f2 FLOAT64, f3 STRING, f4 ARRAY<INT64>)

Vertex AI のレスポンスが次の例のような場合:

{
  "predictions": [
    {
      "out1": 300,
      "out2": 40
    },
    {
      "out1": 200,
      "out2": 30
    }
  ]
}

OUTPUT ステートメントは次の条件を満たす必要があります。

OUTPUT(out1 INT64, out2 INT64)

REMOTE WITH CONNECTION

構文

`[PROJECT_ID].[LOCATION].[CONNECTION_ID]`

BigQuery は、クラウド リソース接続を使用して Vertex AI エンドポイントとやり取りします。

接続要素は次のとおりです。

  • PROJECT_ID: 接続を含むプロジェクトのプロジェクト ID。
  • LOCATION: 接続で使用されるロケーション。接続は、モデルを含むデータセットと同じロケーションに存在する必要があります。
  • CONNECTION_ID: 接続 ID(例: myconnection)。

    接続 ID を確認するには、Google Cloud コンソールで接続の詳細を表示します。接続 ID は、接続 ID に表示される完全修飾された接続 ID の最後のセクションの値です(例: projects/myproject/locations/connection_location/connections/myconnection)。

モデルを作成するプロジェクトの接続のサービス アカウントに Vertex AI ユーザーロールを付与する必要があります。

`myproject.us.my_connection`

ENDPOINT

構文

ENDPOINT = vertex_ai_https_endpoint

説明

vertex_ai_https_endpoint には、Vertex AI にデプロイされたモデルを表す HTTPS エンドポイントを指定します。

Vertex AI にデプロイされたモデルに基づいてリモートモデルを作成したら、ML.PREDICT でそのモデルを使用して推論を実行できます。

次の例は、HTTPS エンドポイントを使用するリモートモデルを作成する方法を示しています。

ENDPOINT = 'https://us-central1-aiplatform.googleapis.com/v1/projects/myproject/locations/us-central1/endpoints/1234'

次の例では、Vertex AI エンドポイントにデプロイされたモデルに対して BigQuery ML リモートモデルを作成します。

CREATE MODEL `project_id.mydataset.mymodel`
 INPUT(f1 INT64, f2 FLOAT64, f3 STRING, f4 ARRAY)
 OUTPUT(out1 INT64, out2 INT64)
 REMOTE WITH CONNECTION `myproject.us.test_connection`
 OPTIONS(ENDPOINT = 'https://us-central1-aiplatform.googleapis.com/v1/projects/myproject/locations/us-central1/endpoints/1234')

次のステップ

HTTPS エンドポイントを使用するリモートモデルでサポートされている SQL ステートメントと関数の詳細については、各モデル向けのエンドツーエンドのユーザー ジャーニーをご覧ください。