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 のデータ型を使用できます。
フィールド名の形式
INPUT
と OUTPUT
のフィールド名は、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 ステートメントと関数の詳細については、各モデル向けのエンドツーエンドのユーザー ジャーニーをご覧ください。