在本教學課程中,您會將 TensorFlow 模型匯入 BigQuery ML 資料集。接著,您可以使用 SQL 查詢,從匯入的模型進行預測。
目標
- 使用
CREATE MODEL陳述式將 TensorFlow 模型匯入 BigQuery ML。 - 使用
ML.PREDICT函式,透過匯入的 TensorFlow 模型進行預測。
費用
在本文件中,您會使用下列 Google Cloud的計費元件:
如要根據預測用量估算費用,請使用 Pricing Calculator。
完成本文所述工作後,您可以刪除建立的資源,避免繼續計費,詳情請參閱「清除所用資源」。
事前準備
- 登入 Google Cloud 帳戶。如果您是 Google Cloud新手,歡迎 建立帳戶,親自評估產品在實際工作環境中的成效。新客戶還能獲得價值 $300 美元的免費抵免額,可用於執行、測試及部署工作負載。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
確認已啟用 BigQuery API。
- 請確認您具備必要權限,可執行本文件中的工作。
必要的角色
如果您建立新專案,您就是專案擁有者,並已獲得完成本教學課程所需的所有 Identity and Access Management (IAM) 權限。
如果您使用現有專案,BigQuery Studio 管理員 (roles/bigquery.studioAdmin) 角色會授予完成本教學課程所需的所有權限。
請確認您在專案中擁有下列一或多個角色:
BigQuery Studio 管理員 (roles/bigquery.studioAdmin)。
檢查角色
-
前往 Google Cloud 控制台的「IAM」頁面。
前往 IAM - 選取專案。
-
在「主體」欄中,找出所有識別您或您所屬群組的資料列。如要瞭解自己所屬的群組,請與管理員聯絡。
- 針對指定或包含您的所有列,請檢查「角色」欄,確認角色清單是否包含必要角色。
授予角色
-
前往 Google Cloud 控制台的「IAM」頁面。
前往 IAM - 選取專案。
- 按一下「Grant access」(授予存取權)。
-
在「New principals」(新增主體) 欄位中,輸入您的使用者 ID。 這通常是指 Google 帳戶的電子郵件地址。
- 按一下「Select a role」(選取角色),然後搜尋角色。
- 如要授予其他角色,請按一下「Add another role」(新增其他角色),然後新增其他角色。
- 按一下「Save」(儲存)。
如要進一步瞭解 BigQuery 中的 IAM 權限,請參閱 BigQuery 權限。
建立資料集
如要建立 BigQuery 資料集,請選取下列任一選項:
控制台
前往 Google Cloud 控制台的「BigQuery」頁面。
點選左側窗格中的 「Explorer」。

如果沒有看到左側窗格,請按一下 「Expand left pane」(展開左側窗格),開啟窗格。
在「Explorer」中展開專案,然後按一下「Datasets」。
在「資料集」頁面,按一下 「建立資料集」。
在「建立資料集」窗格中,執行下列操作:
在「Dataset ID」(資料集 ID) 中輸入
bqml_tutorial。選取「資料位置」的「美國」。
其餘預設設定均保留原樣。
點選「建立資料集」。
bq
如要建立新的資料集,請使用 bq mk --dataset 指令。
建立名為
bqml_tutorial的資料集,並將資料位置設為US:bq mk --dataset \ --location=US \ --description "BigQuery ML tutorial dataset." \ bqml_tutorial
確認資料集已建立完成:
bq ls
API
使用已定義的資料集資源呼叫 datasets.insert 方法:
{ "datasetReference": { "datasetId": "bqml_tutorial" } }
匯入 TensorFlow 模型
下列步驟說明如何從 Cloud Storage 匯入模型。模型路徑為 gs://cloud-training-demos/txtclass/export/exporter/1549825580/*。匯入的模型名稱為 imported_tf_model。
請注意,Cloud Storage URI 的結尾是萬用字元 (*)。這個字元表示 BigQuery ML 應匯入與模型相關聯的所有資產。
匯入的模型為 TensorFlow 文字分類程式模型,可預測發布特定文章標題的網站。
如要將 TensorFlow 模型匯入資料集,請按照下列步驟操作。
控制台
前往 Google Cloud 控制台的「BigQuery」頁面。
如要建立新項目,請點選「SQL 查詢」。
在查詢編輯器中輸入這項
CREATE MODEL陳述式,然後按一下「執行」。CREATE OR REPLACE MODEL `bqml_tutorial.imported_tf_model` OPTIONS (MODEL_TYPE='TENSORFLOW', MODEL_PATH='gs://cloud-training-demos/txtclass/export/exporter/1549825580/*')
作業完成後,您應該會看到類似
Successfully created model named imported_tf_model的訊息。新模型會顯示在「資源」面板中。模型會以模型圖示
來表示。在「Resources」(資源) 面板中選取新模型,「Query editor」(查詢編輯器) 下方就會顯示該模型的相關資訊。
bq
輸入下列
CREATE MODEL陳述式,從 Cloud Storage 匯入 TensorFlow 模型。bq query --use_legacy_sql=false \ "CREATE OR REPLACE MODEL `bqml_tutorial.imported_tf_model` OPTIONS (MODEL_TYPE='TENSORFLOW', MODEL_PATH='gs://cloud-training-demos/txtclass/export/exporter/1549825580/*')"
匯入模型後,請確認模型是否顯示在資料集中。
bq ls -m bqml_tutorial
輸出結果會與下列內容相似:
tableId Type ------------------- ------- imported_tf_model MODEL
API
插入新工作,並在要求主體中填入 jobs#configuration.query 屬性。
{ "query": "CREATE MODEL `PROJECT_ID:bqml_tutorial.imported_tf_model` OPTIONS(MODEL_TYPE='TENSORFLOW' MODEL_PATH='gs://cloud-training-demos/txtclass/export/exporter/1549825580/*')" }
將 PROJECT_ID 替換為您的專案和資料集名稱。
BigQuery DataFrames
在嘗試這個範例之前,請按照使用 BigQuery DataFrames 的 BigQuery 快速入門導覽課程,完成 BigQuery DataFrames 設定。詳情請參閱 BigQuery DataFrames 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定 ADC」。
使用 bigframes.bigquery.ml.create_model 函式建立模型。
如要進一步瞭解如何將 TensorFlow 模型匯入 BigQuery ML,包括格式和儲存空間需求,請參閱CREATE MODEL 陳述式,瞭解如何匯入 TensorFlow 模型。
使用匯入的 TensorFlow 模型進行預測
匯入 TensorFlow 模型後,您可以使用 ML.PREDICT 函式,透過模型進行預測。
以下查詢會使用 imported_tf_model,根據公開資料集 hacker_news 中 full 資料表的輸入資料進行預測。在查詢中,
TensorFlow 模型的 serving_input_fn 函式會指定
模型預期一個名為「inputinput」的輸入字串,子查詢會將別名 input 指派給子查詢 SELECT 陳述式中的 title 資料欄。
如要使用匯入的 TensorFlow 模型進行預測,請按照下列步驟操作。
控制台
前往 Google Cloud 控制台的「BigQuery」頁面。
在「建立新項目」下方,按一下「SQL 查詢」。
在查詢編輯器中,輸入使用
ML.PREDICT函式的查詢。SELECT * FROM ML.PREDICT(MODEL `bqml_tutorial.imported_tf_model`, ( SELECT title AS input FROM bigquery-public-data.hacker_news.full ) )
查詢結果應如下所示:
bq
輸入下列指令,執行使用 ML.PREDICT 的查詢。
bq query \ --use_legacy_sql=false \ 'SELECT * FROM ML.PREDICT( MODEL `bqml_tutorial.imported_tf_model`, (SELECT title AS input FROM `bigquery-public-data.hacker_news.full`))'
結果應如下所示:
+------------------------------------------------------------------------+----------------------------------------------------------------------------------+ | dense_1 | input | +------------------------------------------------------------------------+----------------------------------------------------------------------------------+ | ["0.6251608729362488","0.2989124357700348","0.07592673599720001"] | How Red Hat Decides Which Open Source Companies t... | | ["0.014276246540248394","0.972910463809967","0.01281337533146143"] | Ask HN: Toronto/GTA mastermind around side income for big corp. dev? | | ["0.9821603298187256","1.8601855117594823E-5","0.01782100833952427"] | Ask HN: What are good resources on strategy and decision making for your career? | | ["0.8611106276512146","0.06648492068052292","0.07240450382232666"] | Forget about promises, use harvests | +------------------------------------------------------------------------+----------------------------------------------------------------------------------+
API
插入新工作並填入 jobs#configuration.query 屬性,如下列要求主體所示:將 project_id 替換成您的專案名稱。
{ "query": "SELECT * FROM ML.PREDICT(MODEL `project_id.bqml_tutorial.imported_tf_model`, (SELECT * FROM input_data))" }
BigQuery DataFrames
在嘗試這個範例之前,請按照使用 BigQuery DataFrames 的 BigQuery 快速入門導覽課程,完成 BigQuery DataFrames 設定。詳情請參閱 BigQuery DataFrames 參考文件。
如要向 BigQuery 進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定 ADC」。
使用 bigframes.bigquery.ml.predict 函式執行 TensorFlow 模型:
結果應如下所示:
在查詢結果中,dense_1 資料欄包含機率值陣列,input 資料欄則包含輸入資料表中對應的字串值。每個陣列元素值表示相應輸入字串是某出版內容中的文章標題的機率。
清除所用資源
為避免因為本教學課程所用資源,導致系統向 Google Cloud 收取費用,請刪除含有相關資源的專案,或者保留專案但刪除個別資源。
刪除專案
控制台
- 前往 Google Cloud 控制台的「Manage resources」(管理資源) 頁面。
- 在專案清單中選取要刪除的專案,然後點選「Delete」(刪除)。
- 在對話方塊中輸入專案 ID,然後按一下 [Shut down] (關閉) 以刪除專案。
gcloud
刪除 Google Cloud 專案:
gcloud projects delete PROJECT_ID
刪除個別資源
或者,移除本教學課程中使用的個別資源:
後續步驟
- 如需 BigQuery ML 的總覽,請參閱 BigQuery ML 簡介。
- 如要開始使用 BigQuery ML,請參閱在 BigQuery ML 中建立機器學習模型。
- 如要進一步瞭解如何匯入 TensorFlow 模型,請參閱匯入 TensorFlow 模型的
CREATE MODEL陳述式。 - 如要進一步瞭解如何使用模型,請參閱下列資源:
- 如要進一步瞭解如何在 BigQuery 筆記本中使用 BigQuery DataFrames API,請參閱: