Tutorial: Menjalankan inferensi pada tabel objek menggunakan model klasifikasi
Tutorial ini menunjukkan cara membuat tabel objek berdasarkan gambar dari set data publik, lalu menjalankan inferensi pada tabel objek tersebut menggunakan model ResNet 50.
Model ResNet 50
Model ResNet 50 menganalisis file gambar dan menampilkan sejumlah vektor yang mewakili kemungkinan bahwa suatu gambar termasuk dalam class yang sesuai (logits). Untuk informasi selengkapnya, lihat bagian Penggunaan di halaman TensorFlow Hub model.
Input model ResNet 50 mengambil tensor
DType
=
float32
dalam bentuk [-1, 224, 224, 3]
. Outputnya adalah array
tensor tf.float32
dalam bentuk [-1, 1024]
.
Izin yang diperlukan
- Untuk membuat set data, Anda memerlukan izin
bigquery.datasets.create
. Untuk membuat resource koneksi, Anda memerlukan izin berikut:
bigquery.connections.create
bigquery.connections.get
Untuk memberikan izin ke akun layanan koneksi, Anda memerlukan izin berikut:
resourcemanager.projects.setIamPolicy
Untuk membuat tabel objek, Anda memerlukan izin berikut:
bigquery.tables.create
bigquery.tables.update
bigquery.connections.delegate
Untuk membuat bucket, Anda memerlukan izin
storage.buckets.create
.Untuk mengupload model ke Cloud Storage, Anda memerlukan izin
storage.objects.create
danstorage.objects.get
.Untuk memuat model ke BigQuery ML, Anda memerlukan izin berikut:
bigquery.jobs.create
bigquery.models.create
bigquery.models.getData
bigquery.models.updateData
Untuk menjalankan inferensi, Anda memerlukan izin berikut:
bigquery.tables.getData
pada tabel objekbigquery.models.getData
pada modelbigquery.jobs.create
Biaya
Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:
- BigQuery: Anda akan dikenai biaya penyimpanan untuk tabel objek yang Anda buat di BigQuery.
- BigQuery ML: Anda akan dikenai biaya untuk model yang Anda buat dan inferensi yang dilakukan di BigQuery ML.
- Cloud Storage: Anda akan dikenai biaya untuk objek yang Anda simpan di Cloud Storage.
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Untuk informasi selengkapnya tentang harga penyimpanan BigQuery, lihat Harga penyimpanan dalam dokumentasi BigQuery.
Untuk informasi selengkapnya tentang harga BigQuery ML, baca Harga BigQuery ML dalam dokumentasi BigQuery.
Untuk informasi selengkapnya tentang harga Cloud Storage, lihat halaman harga Cloud Storage.
Sebelum memulai
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API BigQuery and BigQuery Connection API.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API BigQuery and BigQuery Connection API.
Membuat set data
Buat set data bernama resnet_inference_test
:
SQL
Buka halaman BigQuery.
Di panel Editor, jalankan pernyataan SQL berikut:
CREATE SCHEMA `PROJECT_ID.resnet_inference_test`;
Ganti
PROJECT_ID
dengan project ID Anda.
bq
Di konsol Google Cloud, aktifkan Cloud Shell.
Jalankan perintah
bq mk
untuk membuat set data:bq mk --dataset --location=us PROJECT_ID:resnet_inference_test
Ganti
PROJECT_ID
dengan project ID Anda.
Buat koneksi
Buat koneksi bernama lake-connection
:
Konsol
Buka halaman BigQuery.
Klik
Add data, lalu klik External data source.Dalam daftar Connection type, pilih BigLake and remote functions (Cloud Resource).
Di kolom Connection ID, ketik
lake-connection
.Klik Create connection.
Di panel Connection info, salin nilai dari kolom Service account id dan simpan di suatu tempat. Anda memerlukan informasi ini untuk memberikan izin ke akun layanan koneksi.
bq
Di Cloud Shell, jalankan perintah
bq mk
untuk membuat koneksi:bq mk --connection --location=us --connection_type=CLOUD_RESOURCE \ lake-connection
Jalankan perintah
bq show
untuk mengambil informasi tentang koneksi:bq show --connection us.lake-connection
Dari kolom
properties
, salin nilai propertiserviceAccountId
dan simpan di suatu tempat. Anda memerlukan informasi ini untuk memberikan izin ke akun layanan koneksi.
Membuat bucket Cloud Storage
Buat bucket Cloud Storage untuk menampung file model.
Memberikan izin ke akun layanan koneksi
Konsol
Buka halaman IAM & Admin.
Klik Grant Access.
Dialog Add principals akan terbuka.
Di kolom New principals, masukkan ID akun layanan yang Anda salin sebelumnya.
Di kolom Select a role, pilih Cloud Storage, lalu pilih Storage Object Viewer.
Klik Save.
gsutil
Jalankan
perintah gsutil iam ch
di Cloud Shell:
gsutil iam ch serviceAccount:MEMBER:objectViewer gs://BUCKET_NAME
Ganti MEMBER
dengan ID akun layanan yang Anda
salin sebelumnya. Ganti BUCKET_NAME
dengan nama
bucket yang Anda buat sebelumnya.
Untuk informasi selengkapnya, lihat Menambahkan akun utama ke kebijakan tingkat bucket.
Membuat tabel objek
Buat tabel objek bernama vision_images
berdasarkan file gambar di bucket gs://cloud-samples-data/vision
publik:
SQL
Buka halaman BigQuery.
Di panel Editor, jalankan pernyataan SQL berikut:
CREATE EXTERNAL TABLE resnet_inference_test.vision_images WITH CONNECTION `us.lake-connection` OPTIONS( object_metadata = 'SIMPLE', uris = ['gs://cloud-samples-data/vision/*.jpg'] );
bq
Di Cloud Shell, jalankan
perintah bq mk
untuk membuat koneksi:
bq mk --table \
--external_table_definition='gs://cloud-samples-data/vision/*.jpg@us.lake-connection' \
--object_metadata=SIMPLE \
resnet_inference_test.vision_images
Mengupload model ke Cloud Storage
Dapatkan file model dan sediakan di Cloud Storage:
- Download
model ResNet 50 ke mesin lokal Anda. Tindakan ini akan memberi Anda
file
saved_model.pb
dan foldervariables
untuk model. - Upload file
saved_model.pb
dan foldervariables
ke bucket yang Anda buat sebelumnya.
Memuat model ke BigQuery ML
Buka halaman BigQuery.
Di panel Editor, jalankan pernyataan SQL berikut:
CREATE MODEL `resnet_inference_test.resnet` OPTIONS( model_type = 'TENSORFLOW', model_path = 'gs://BUCKET_NAME/*');
Ganti
BUCKET_NAME
dengan nama bucket yang telah Anda buat sebelumnya.
Memeriksa model
Periksa model yang diupload untuk melihat kolom input dan output-nya:
Buka halaman BigQuery.
Di panel Explorer, luaskan project Anda, luaskan set data
resnet_inference_test
, lalu luaskan node Models.Klik model
resnet
.Di panel model yang terbuka, klik tab Schema.
Lihat bagian Label. Elemen ini mengidentifikasi kolom yang merupakan output menurut model. Dalam hal ini, nilai nama kolom adalah
activation_49
.Lihat bagian Features. Bagian ini mengidentifikasi kolom yang harus dimasukkan ke dalam model. Anda mereferensikannya dalam pernyataan
SELECT
untuk fungsiML.DECODE_IMAGE
. Dalam hal ini, nilai nama kolom adalahinput_1
.
Menjalankan inferensi
Jalankan inferensi pada tabel objek vision_images
menggunakan model resnet
:
Buka halaman BigQuery.
Di panel Editor, jalankan pernyataan SQL berikut:
SELECT * FROM ML.PREDICT( MODEL `resnet_inference_test.resnet`, (SELECT uri, ML.RESIZE_IMAGE(ML.DECODE_IMAGE(data), 224, 224, FALSE) AS input_1 FROM resnet_inference_test.vision_images) );
Hasilnya akan terlihat seperti berikut:
------------------------------------------------------------------------------------------------------------------------------------- | activation_49 | uri | input_1 | —------------------------------------------------------------------------------------------------------------------------------------ | 1.0254175464297077e-07 | gs://cloud-samples-data/vision/automl_classification/flowers/daisy/21652746_cc379e0eea_m.jpg | 0.0 | —------------------------------------------------------------------------------------------------------------------------------------ | 2.1671139620593749e-06 | | 0.0 | —-------------------------- ----------- | 8.346052027263795e-08 | | 0.0 | —-------------------------- ----------- | 1.159310958342985e-08 | | 0.0 | —------------------------------------------------------------------------------------------------------------------------------------
Pembersihan
- Di konsol Google Cloud, buka halaman Manage resource.
- Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.