在本教學課程中,您會在 BigQuery 中將 Vertex AI 端點註冊為遠端模型。接著,您可以使用 ML.PREDICT
函式,透過遠端模型進行預測。
當模型過大而無法匯入 BigQuery 時,您可以使用遠端模型。如要針對線上、批次和微批次用途使用單一推論點,這項功能也能派上用場。
目標
- 將預先訓練的 TensorFlow 模型匯入 Vertex AI Model Registry。
- 將模型部署至 Vertex AI 端點。
- 建立 Cloud 資源連線。
- 使用
CREATE MODEL
陳述式在 BigQuery 中建立遠端模型。 - 使用
ML.PREDICT
函式,透過遠端模型進行預測。
費用
在本文件中,您會使用 Google Cloud的下列計費元件:
如要根據預測用量估算費用,請使用 Pricing Calculator。
完成本文所述工作後,您可以刪除已建立的資源,避免繼續計費。詳情請參閱清除所用資源一節。
事前準備
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery, Vertex AI, Cloud Storage, and BigQuery Connection APIs.
- 請確認您具備必要權限,可以執行本文中的工作。
-
Make sure that you have the following role or roles on the project:
- BigQuery Studio Admin (
roles/bigquery.studioAdmin
) - Vertex AI User (
roles/aiplatform.user
) - BigQuery Connection Admin (
roles/bigquery.connectionAdmin
)
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
前往 IAM - 選取專案。
- 按一下「授予存取權」 。
-
在「New principals」(新增主體) 欄位中,輸入您的使用者 ID。 這通常是 Google 帳戶的電子郵件地址。
- 在「Select a role」(選取角色) 清單中,選取角色。
- 如要授予其他角色,請按一下 「新增其他角色」,然後新增每個其他角色。
- 按一下 [Save]。
前往 Google Cloud 控制台的 Vertex AI「Model Registry」頁面。
按一下「匯入」。
在「步驟一:名稱和區域」中,執行下列操作:
選取「匯入為新模型」。
在「Name」(名稱) 中輸入
bert_sentiment
。在「Description」(說明) 中輸入
BQML tutorial model
。在「Region」(區域) 中選取
us-central1
。您必須選擇美國境內的區域,因為 Cloud Storage bucket 位於US
多區域US
位置。按一下「繼續」。
如要完成步驟二:模型設定,請執行下列操作:
選取「將模型構件匯入新的預建容器」。
在「預先建構的容器設定」部分,執行下列操作:
在「Model framework」(模型架構) 中選擇「TensorFlow」。
在「Model framework version」(模型架構版本) 中選擇「2.15」。
在「Accelerator type」(加速器類型) 部分,選擇「GPU」。
在「模型構件位置」中輸入
gs://cloud-samples-data/bigquery/ml/remote_model_tutorial/
。其餘選項均保留預設值,然後按一下「匯入」。
前往 Google Cloud 控制台的 Vertex AI「Model Registry」頁面。
在「Name」(名稱) 欄中,按一下
bert_sentiment
。按一下「Deploy & Test」(部署及測試) 分頁標籤。
按一下「Deploy to endpoint」(部署至端點)。
如要完成步驟一「定義端點」,請執行下列操作:
按一下「建立新端點」。
在「端點名稱」部分,輸入
bert sentiment endpoint
。保留其餘預設值,然後按一下「繼續」。
在第二個步驟「模型設定」中,請執行下列操作:
在「Compute settings」(運算設定) 區段中,為「Minimum number of compute nodes」(運算節點數量下限) 輸入
讓端點在 BigQuery 資料表有大量資料列時,可以處理更多要求。1
。這是模型隨時可用的節點數量。在「Advanced scaling options」(進階縮放選項) 區段中,針對「Machine type」(機型),選擇「Standard (n1-standard-2)」(標準 (n1-standard-2))。由於您在匯入模型時選擇 GPU 做為加速器類型,因此選擇機器類型後,系統會自動設定加速器類型和加速器數量。
保留其餘預設值,然後按一下「部署」。
模型部署到端點後,狀態會變更為
Active
。複製「ID」欄中的數字端點 ID,以及「Region」欄中的值。稍後會用到。
前往 Google Cloud 控制台的「BigQuery」頁面。
在「Explorer」窗格中,按一下專案名稱。
依序點按
「View actions」(查看動作) >「Create dataset」(建立資料集)。在「建立資料集」頁面中,執行下列操作:
在「Dataset ID」(資料集 ID) 中輸入
bqml_tutorial
。針對「Location type」(位置類型) 選取「Multi-region」(多區域),然後選取「US (multiple regions in United States)」(us (多個美國區域))。
其餘設定請保留預設狀態,然後按一下「Create dataset」(建立資料集)。
建立名為「
bqml_tutorial
」的資料集,並將資料位置設為「US
」,以及說明設為「BigQuery ML tutorial dataset
」:bq --location=US mk -d \ --description "BigQuery ML tutorial dataset." \ bqml_tutorial
這個指令採用
-d
捷徑,而不是使用--dataset
旗標。如果您省略-d
和--dataset
,該指令預設會建立資料集。確認資料集已建立完成:
bq ls
前往「BigQuery」頁面
在「Explorer」窗格中,按一下
「新增資料」。「新增資料」對話方塊隨即開啟。
在「Filter By」(依條件篩選) 窗格的「Data Source Type」(資料來源類型) 區段中,選取「Databases」(資料庫)。
或者,您也可以在「Search for data sources」(搜尋資料來源) 欄位中輸入
Vertex AI
。在「精選資料來源」部分,按一下「Vertex AI」。
按一下「Vertex AI Models: BigQuery Federation」解決方案資訊卡。
在「連線類型」清單中,選取「Vertex AI 遠端模型、遠端函式和 BigLake (Cloud 資源)」。
在「連線 ID」欄位中輸入
bqml_tutorial
。確認已選取「Multi-region—US」(多區域 - 美國)。
點選「建立連線」。
按一下視窗底部的「前往連線」。或者,在「Explorer」窗格中,展開「外部連線」,然後點選
us.bqml_tutorial
。在「連線資訊」窗格,複製服務帳戶 ID。設定連線的權限時,您需要這個 ID。建立連線資源時,BigQuery 會建立專屬的系統服務帳戶,並將其與連線建立關聯。
建立連線:
bq mk --connection --location=US --project_id=PROJECT_ID \ --connection_type=CLOUD_RESOURCE bqml_tutorial
將
PROJECT_ID
替換為您的專案 ID。Google Cloud--project_id
參數會覆寫預設專案。建立連線資源時,BigQuery 會建立專屬的系統服務帳戶,並將其與連線建立關聯。
疑難排解:如果收到下列連線錯誤訊息,請更新 Google Cloud SDK:
Flags parsing error: flag --connection_type=CLOUD_RESOURCE: value should be one of...
擷取並複製服務帳戶 ID,以供後續步驟使用:
bq show --connection PROJECT_ID.us.bqml_tutorial
輸出結果會與下列內容相似:
name properties 1234.REGION.CONNECTION_ID {"serviceAccountId": "connection-1234-9u56h9@gcp-sa-bigquery-condel.iam.gserviceaccount.com"}
前往「IAM & Admin」(IAM 與管理) 頁面。
按一下
「授予存取權」。在「新增主體」欄位,輸入先前複製的 Cloud 資源連結服務帳戶 ID。
在「請選擇角色」欄位中,依序選取「Vertex AI」和「Vertex AI 使用者」。
按一下 [儲存]。
前往 Google Cloud 控制台的「BigQuery」頁面。
如要建立新查詢,請按一下「SQL 查詢」。
在查詢編輯器中輸入這項
CREATE MODEL
陳述式,然後按一下「執行」:CREATE OR REPLACE MODEL `PROJECT_ID.bqml_tutorial.bert_sentiment` INPUT (text STRING) OUTPUT(scores ARRAY<FLOAT64>) REMOTE WITH CONNECTION `PROJECT_ID.us.bqml_tutorial` OPTIONS(ENDPOINT = 'https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/endpoints/ENDPOINT_ID')
更改下列內容:
- PROJECT_ID:您的專案名稱。
- ENDPOINT_ID:您先前複製的端點 ID。
作業完成後,您會看到類似
Successfully created model named bert_sentiment
的訊息。新模型會顯示在「資源」面板中。模型會以模型圖示
來表示。
在「Resources」(資源) 面板中選取新模型,「Query editor」(查詢編輯器) 下方就會顯示該模型的相關資訊。
輸入下列
CREATE MODEL
陳述式,建立遠端模型:bq query --use_legacy_sql=false \ "CREATE OR REPLACE MODEL `PROJECT_ID.bqml_tutorial.bert_sentiment` INPUT (text STRING) OUTPUT(scores ARRAY<FLOAT64>) REMOTE WITH CONNECTION `PROJECT_ID.us.bqml_tutorial` OPTIONS(ENDPOINT = 'https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/endpoints/ENDPOINT_ID')"
更改下列內容:
- PROJECT_ID:您的專案名稱。
- ENDPOINT_ID:您先前複製的端點 ID。
建立模型後,請確認模型是否顯示在資料集中:
bq ls -m bqml_tutorial
輸出結果會與下列內容相似:
Id Model Type Labels Creation Time ---------------- ------------ -------- ----------------- bert_sentiment 28 Jan 17:39:43
前往 Google Cloud 控制台的「BigQuery」頁面。
在「建立新項目」部分,按一下「SQL 查詢」。
在查詢編輯器中,輸入使用
ML.PREDICT
函式的查詢,然後按一下「執行」。SELECT * FROM ML.PREDICT ( MODEL `PROJECT_ID.bqml_tutorial.bert_sentiment`, ( SELECT review as text FROM `bigquery-public-data.imdb.reviews` LIMIT 10000 ) )
查詢結果應與下列內容類似:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
- 如需 BigQuery ML 的總覽,請參閱 BigQuery ML 中的 AI 和 ML 簡介。
- 如要進一步瞭解如何使用
CREATE MODEL
陳述式建立遠端模型,請參閱透過自訂模型建立遠端模型的 CREATE MODEL 陳述式。 - 如要進一步瞭解如何使用 BigQuery 筆記本,請參閱筆記本簡介。
- 如要進一步瞭解 BigQuery 地區和多重地區,請參閱「支援的地區」頁面。
- 如要進一步瞭解如何在 Vertex AI Model Registry 中匯入模型,請參閱「將模型匯入 Vertex AI」。
- 如要進一步瞭解 Vertex AI Model Registry 中的模型版本控管,請參閱「使用 Model Registry 進行模型版本控管」。
- 如要瞭解如何使用 Vertex AI VPC Service Controls,請參閱「搭配使用 VPC Service Controls 與 Vertex AI」。
如要進一步瞭解 BigQuery 中的 IAM 權限,請參閱「BigQuery 權限」。
將模型匯入 Vertex AI Model Registry
在本教學課程中,您將使用 Cloud Storage 中
gs://cloud-samples-data/bigquery/ml/remote_model_tutorial/
提供的預先訓練 TensorFlow 模型。Cloud Storage 值區位於US
多區域位置。模型是名為
saved_model.pb
的 TensorFlow 模型。這是自訂情緒分析模型,以純文字 IMDB 電影評論資料微調 BERT 模型而建立。模型會使用電影評論的文字輸入內容,並傳回介於 0 到 1 之間的情緒分數。將模型匯入 Model Registry 時,您會使用預先建構的 TensorFlow 容器。請按照下列步驟匯入模型。
匯入完成後,模型會顯示在「模型登錄」頁面。
將模型部署至 Vertex AI 端點
請按照下列步驟將模型部署至端點。
建立資料集
建立 BigQuery 資料集來儲存機器學習模型。
控制台
bq
如要建立新的資料集,請使用
bq mk
指令搭配--location
旗標。如需可能的完整參數清單,請參閱bq mk --dataset
指令參考資料。API
請呼叫
datasets.insert
方法,搭配已定義的資料集資源。{ "datasetReference": { "datasetId": "bqml_tutorial" } }
BigQuery DataFrames
在嘗試這個範例之前,請按照使用 BigQuery DataFrames 的 BigQuery 快速入門導覽課程中的 BigQuery DataFrames 設定說明操作。 詳情請參閱 BigQuery DataFrames 參考說明文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定 ADC」。
建立 BigQuery Cloud 資源連線
您必須建立 Cloud 資源連線,才能連至 Vertex AI 端點。
主控台
bq
設定連線存取權
為 Cloud 資源連線的服務帳戶授予 Vertex AI 使用者角色。您必須在建立遠端模型端點的專案中授予這個角色。
如要授予角色,請按照下列步驟操作:
建立 BigQuery ML 遠端模型
您可以使用
REMOTE WITH CONNECTION
子句搭配CREATE MODEL
陳述式,建立 BigQuery ML 遠端模型。如要進一步瞭解CREATE MODEL
陳述式,請參閱「透過自訂模型建立遠端模型的 CREATE MODEL 陳述式」。您在
US
多地區位置建立模型。在 BigQuery 多區域 (US
、EU
) 資料集中,您只能建立連結至端點的遠端模型,該端點部署在相同多區域位置 (US
、EU
) 內的區域。建立遠端模型時,需要將模型部署至 Vertex AI 時產生的端點 ID。此外,輸入和輸出欄位名稱與類型必須與 Vertex AI 模型的輸入和輸出完全相同。在這個範例中,輸入內容為文字
STRING
,輸出內容則為FLOAT64
類型的ARRAY
。控制台
bq
使用
ML.PREDICT
取得預測結果您可以使用
ML.PREDICT
函式,從遠端模型取得情緒預測結果。輸入內容是文字資料欄 (review
),內含bigquery-public-data.imdb.reviews
資料表的電影評論。在本例中,我們選取了 10,000 筆記錄,並傳送這些記錄進行預測。遠端模型預設會為要求提供 128 個執行個體的批次大小。
控制台
bq
輸入下列指令,執行使用
ML.PREDICT
的查詢。bq query --use_legacy_sql=false \ 'SELECT * FROM ML.PREDICT ( MODEL `PROJECT_ID.bqml_tutorial.bert_sentiment`, ( SELECT review as text FROM `bigquery-public-data.imdb.reviews` LIMIT 10000 ) )'
清除所用資源
如要避免系統向您的 Google Cloud 帳戶收取本教學課程中所用資源的相關費用,請刪除含有該項資源的專案,或者保留專案但刪除個別資源。
刪除專案
控制台
gcloud
刪除個別資源
或者,如要移除本教學課程中使用的個別資源,請按照下列步驟操作:
後續步驟
- BigQuery Studio Admin (
必要的角色
如果您建立新專案,您就是專案擁有者,並會獲得完成本教學課程所需的所有 IAM 權限。
如果您使用現有專案,請執行下列操作。