在本教程中,将 TensorFlow 模型导入 BigQuery ML 数据集。然后,使用 SQL 查询通过导入的模型进行预测。
创建数据集
创建 BigQuery 数据集以存储机器学习模型。
控制台
在 Google Cloud 控制台中,前往 BigQuery 页面。
在探索器窗格中,点击您的项目名称。
点击
查看操作 > 创建数据集在 创建数据集 页面上,执行以下操作:
在数据集 ID 部分,输入
bqml_tutorial
。在位置类型部分,选择多区域,然后选择 US (multiple regions in United States)(美国[美国的多个区域])。
保持其余默认设置不变,然后点击创建数据集。
bq
如需创建新数据集,请使用带有 --location
标志的 bq mk
命令。 如需查看完整的潜在参数列表,请参阅 bq mk --dataset
命令参考文档。
创建一个名为
bqml_tutorial
的数据集,并将数据位置设置为US
,说明为BigQuery ML tutorial dataset
:bq --location=US mk -d \ --description "BigQuery ML tutorial dataset." \ bqml_tutorial
该命令使用的不是
--dataset
标志,而是-d
快捷方式。如果省略-d
和--dataset
,该命令会默认创建一个数据集。确认已创建数据集:
bq ls
API
使用已定义的数据集资源调用 datasets.insert
方法。
{ "datasetReference": { "datasetId": "bqml_tutorial" } }
BigQuery DataFrame
在尝试此示例之前,请按照《BigQuery 快速入门:使用 BigQuery DataFrames》中的 BigQuery DataFrames 设置说明进行操作。如需了解详情,请参阅 BigQuery DataFrames 参考文档。
如需向 BigQuery 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为本地开发环境设置 ADC。
导入 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
的消息。您的新模型会显示在资源面板中。模型由模型图标
表示。
如果您在资源面板中选择该新模型,则模型相关信息将显示在查询编辑器下方。
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 DataFrame
在尝试此示例之前,请按照《BigQuery 快速入门:使用 BigQuery DataFrames》中的 BigQuery DataFrames 设置说明进行操作。如需了解详情,请参阅 BigQuery DataFrames 参考文档。
如需向 BigQuery 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为本地开发环境设置 ADC。
使用 TensorFlowModel
对象导入模型。
如需详细了解如何将 TensorFlow 模型导入 BigQuery ML,包括格式和存储要求,请参阅用于导入 TensorFlow 模型的 CREATE MODEL
语句。
使用导入的 TensorFlow 模型进行预测
导入 TensorFlow 模型后,您可以使用 ML.PREDICT
函数通过该模型进行预测。
以下查询使用 imported_tf_model
根据 hacker_news
公共数据集的 full
表中的输入数据进行预测。在该查询中,TensorFlow 模型的 serving_input_fn
函数指定,模型需要单个名为 input
的输入字符串。子查询将别名 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 DataFrame
在尝试此示例之前,请按照《BigQuery 快速入门:使用 BigQuery DataFrames》中的 BigQuery DataFrames 设置说明进行操作。如需了解详情,请参阅 BigQuery DataFrames 参考文档。
如需向 BigQuery 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为本地开发环境设置 ADC。
使用 predict
函数运行 TensorFlow 模型:
结果应如下所示:
在查询结果中,dense_1
列包含概率值数组,input
列包含输入表中的相应字符串值。每个数组元素值代表相应输入字符串是某特定出版物中的文章标题的概率。