Membuat prediksi dengan model TensorFlow yang diimpor

Halaman ini menunjukkan cara mengimpor model TensorFlow ke set data BigQuery ML dan menggunakannya untuk membuat prediksi dari kueri SQL. Anda dapat mengimpor model TensorFlow menggunakan antarmuka ini:

  • Konsol Google Cloud
  • Perintah bq query di alat command line bq
  • BigQuery API

Untuk informasi lebih lanjut tentang cara mengimpor model TensorFlow ke BigQuery ML, termasuk persyaratan format dan penyimpanan, lihat Pernyataan CREATE MODEL untuk mengimpor model TensorFlow.

Mengimpor model TensorFlow

Untuk mengimpor model TensorFlow ke set data, ikuti langkah-langkah berikut:

Konsol

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka halaman BigQuery

  2. Di editor kueri, masukkan pernyataan CREATE MODEL seperti berikut.

     CREATE OR REPLACE MODEL `example_dataset.imported_tf_model`
      OPTIONS (MODEL_TYPE='TENSORFLOW',
       MODEL_PATH='gs://cloud-training-demos/txtclass/export/exporter/1549825580/*')

    Kueri sebelumnya mengimpor model yang terletak di gs://cloud-training-demos/txtclass/export/exporter/1549825580/* sebagai model BigQuery ML bernama imported_tf_model. URI Cloud Storage diakhiri dengan karakter pengganti (*) sehingga BigQuery ML juga mengimpor aset apa pun yang terkait dengan model tersebut. Model yang diimpor adalah model pengklasifikasi teks TensorFlow yang memprediksi situs yang memublikasikan judul artikel tertentu.

  3. Model baru Anda kini akan muncul di panel Resource. Seiring Anda memperluas setiap set data di sebuah project, model akan dicantumkan bersama dengan resource BigQuery lainnya di set data tersebut. Model ditunjukkan dengan ikon model: ikon model .

  4. Jika Anda memilih model baru di panel Resources, informasi tentang model akan muncul di bawah Query editor.

    Info model TensorFlow

bq

Untuk mengimpor model TensorFlow dari Cloud Storage, jalankan kueri batch dengan memasukkan perintah seperti berikut:

bq query \
--use_legacy_sql=false \
"CREATE MODEL
  `mydataset.mymodel`
OPTIONS
  (MODEL_TYPE='TENSORFLOW',
   MODEL_PATH='gs://bucket/path/to/saved_model/*')"

Contoh:

bq query --use_legacy_sql=false \
"CREATE OR REPLACE MODEL
  `example_dataset.imported_tf_model`
OPTIONS
  (MODEL_TYPE='TENSORFLOW',
    MODEL_PATH='gs://cloud-training-demos/txtclass/export/exporter/1549825580/*')"

Setelah diimpor, model akan muncul dalam output bq ls [dataset_name]:

$ bq ls example_dataset

       tableId        Type    Labels   Time Partitioning
 ------------------- ------- -------- -------------------
  imported_tf_model   MODEL

API

Masukkan tugas baru dan isi properti jobs#configuration.query sesuai isi permintaan berikut:

{
  "query": "CREATE MODEL `project_id:mydataset.mymodel` OPTIONS(MODEL_TYPE='TENSORFLOW' MODEL_PATH='gs://bucket/path/to/saved_model/*')"
}

DataFrame BigQuery

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan BigQuery DataFrames di panduan memulai BigQuery menggunakan BigQuery DataFrames. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi BigQuery DataFrames.

Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

Impor model menggunakan objek TensorFlowModel.

import bigframes
from bigframes.ml.imported import TensorFlowModel

bigframes.options.bigquery.project = PROJECT_ID
# You can change the location to one of the valid locations: https://cloud.google.com/bigquery/docs/locations#supported_locations
bigframes.options.bigquery.location = "US"

imported_tensorflow_model = TensorFlowModel(
    model_path="gs://cloud-training-demos/txtclass/export/exporter/1549825580/*"
)

Membuat prediksi dengan model TensorFlow yang diimpor

Untuk membuat prediksi dengan model TensorFlow yang diimpor, ikuti langkah-langkah berikut. Contoh berikut mengasumsikan bahwa Anda telah mengimpor model TensorFlow seperti yang Anda lakukan pada contoh sebelumnya.

Konsol

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka halaman BigQuery

  2. Di editor kueri, masukkan kueri menggunakan ML.PREDICT seperti berikut.

     SELECT *
       FROM ML.PREDICT(MODEL example_dataset.imported_tf_model,
         (
          SELECT title AS input
          FROM bigquery-public-data.hacker_news.full
         )
     )
     

    Kueri sebelumnya menggunakan model bernama imported_tf_model dalam set data example_dataset dalam project saat ini untuk membuat prediksi dari data input dalam tabel publik full dari set data hacker_news dalam project bigquery-public-data. Dalam hal ini, fungsi serving_input_fn model TensorFlow menentukan bahwa model mengharapkan string input tunggal bernama input, sehingga subkueri menetapkan alias input ke kolom di pernyataan SELECT sub kueri.

    Kueri ini memberikan output hasil seperti berikut. Dalam contoh ini, model menghasilkan kolom dense_1 yang berisi array nilai probabilitas, serta kolom input yang berisi nilai string yang sesuai dari tabel input. Setiap nilai elemen array mewakili probabilitas bahwa string input yang sesuai adalah judul artikel dari tayangan tertentu.

    Hasil kueri

bq

Untuk membuat prediksi dari data input dalam tabel input_data, masukkan perintah seperti berikut, menggunakan model TensorFlow yang diimpor my_model:

bq query \
--use_legacy_sql=false \
'SELECT *
 FROM ML.PREDICT(
   MODEL `my_project.my_dataset.my_model`,
   (SELECT * FROM input_data))'

Contoh:

bq query \
--use_legacy_sql=false \
'SELECT *
FROM ML.PREDICT(
  MODEL `tensorflow_sample.imported_tf_model`,
  (SELECT title AS input FROM `bigquery-public-data.hacker_news.full`))'

Contoh ini memberikan hasil seperti berikut:

    +------------------------------------------------------------------------+----------------------------------------------------------------------------------+
    |                               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

Masukkan tugas baru dan isi properti jobs#configuration.query sesuai isi permintaan berikut:

{
  "query": "SELECT * FROM ML.PREDICT(MODEL `my_project.my_dataset.my_model`, (SELECT * FROM input_data))"
}

DataFrame BigQuery

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan BigQuery DataFrames di panduan memulai BigQuery menggunakan BigQuery DataFrames. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi BigQuery DataFrames.

Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

Gunakan fungsi predict untuk menjalankan model jarak jauh:

import bigframes.pandas as bpd

df = bpd.read_gbq("bigquery-public-data.hacker_news.full")
df_pred = df.rename(columns={"title": "input"})
predictions = imported_tensorflow_model.predict(df_pred)
predictions.head(5)

Hasilnya mirip dengan berikut ini: Result_visualization

Langkah selanjutnya