Tutorial ini menunjukkan cara mengekspor model BigQuery ML, lalu men-deploy model tersebut di AI Platform atau di mesin lokal. Anda akan menggunakan tabel iris
dari set data publik BigQuery dan mengerjakan tiga skenario menyeluruh berikut:
- Melatih dan men-deploy model regresi logistik - juga berlaku untuk pengklasifikasi DNN, regressor DNN, k-means, regresi linear, dan model faktorisasi matriks.
- Melatih dan men-deploy model pengklasifikasi pohon yang ditingkatkan - juga berlaku untuk model regressor pohon yang ditingkatkan.
- Melatih dan men-deploy model pengklasifikasi AutoML - juga berlaku untuk model regressor AutoML.
Biaya
Tutorial ini menggunakan komponen Google Cloud yang dapat ditagih, termasuk:
- BigQuery ML
- Cloud Storage
- AI Platform (opsional, digunakan untuk prediksi online)
Untuk informasi selengkapnya tentang biaya BigQuery ML, lihat harga BigQuery ML.
Untuk mengetahui informasi selengkapnya tentang biaya Cloud Storage, lihat halaman Harga Cloud Storage.
Untuk mengetahui informasi selengkapnya tentang biaya AI Platform, lihat halaman node prediksi dan alokasi resource.
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.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
- BigQuery secara otomatis diaktifkan dalam project baru.
Untuk mengaktifkan BigQuery dalam project yang sudah ada, buka
Aktifkan API BigQuery.
-
Aktifkan API AI Platform Training and Prediction API and Compute Engine.
- Instal Google Cloud CLI dan Google Cloud CLI.
Membuat set data
Buat set data BigQuery untuk menyimpan model ML Anda:
Di konsol Google Cloud, buka halaman BigQuery.
Di panel Explorer, klik nama project Anda.
Klik
View actions > Create dataset.Di halaman Create dataset, lakukan hal berikut:
Untuk Dataset ID, masukkan
bqml_tutorial
.Untuk Location type, pilih Multi-region, lalu pilih US (multiple regions in United States).
Set data publik disimpan di
US
multi-region. Untuk mempermudah, simpan set data Anda di lokasi yang sama.Jangan ubah setelan default yang tersisa, lalu klik Create dataset.
Melatih dan men-deploy model regresi logistik
Melatih model
Latih model regresi logistik yang memprediksi jenis iris menggunakan pernyataan CREATE MODEL
BigQuery ML. Tugas pelatihan ini akan memerlukan waktu sekitar 1 menit.
bq query --use_legacy_sql=false \ 'CREATE MODEL `bqml_tutorial.iris_model` OPTIONS (model_type="logistic_reg", max_iterations=10, input_label_cols=["species"]) AS SELECT * FROM `bigquery-public-data.ml_datasets.iris`;'
Mengekspor model
Ekspor model ke bucket Cloud Storage menggunakan alat command line bq. Guna mengetahui cara lain untuk mengekspor model, lihat Mengekspor model BigQuery ML. Tugas ekstrak ini memerlukan waktu kurang dari 1 menit untuk diselesaikan.
bq extract -m bqml_tutorial.iris_model gs://some/gcs/path/iris_model
Deployment dan inferensi lokal
Anda dapat men-deploy model TensorFlow yang diekspor menggunakan container TensorFlow Serving Docker. Langkah-langkah berikut mengharuskan Anda menginstal Docker.
Mendownload file model yang diekspor ke direktori sementara
mkdir tmp_dir
gsutil cp -r gs://some/gcs/path/iris_model tmp_dir
Membuat subdirektori versi
Langkah ini akan menetapkan nomor versi (dalam hal ini 1) untuk model tersebut.
mkdir -p serving_dir/iris_model/1
cp -r tmp_dir/iris_model/* serving_dir/iris_model/1
rm -r tmp_dir
Mengambil image Docker
docker pull tensorflow/serving
Menjalankan container Docker
docker run -p 8500:8500 --network="host" --mount type=bind,source=`pwd`/serving_dir/iris_model,target=/models/iris_model -e MODEL_NAME=iris_model -t tensorflow/serving &
Menjalankan prediksi
curl -d '{"instances": [{"sepal_length":5.0, "sepal_width":2.0, "petal_length":3.5, "petal_width":1.0}]}' -X POST http://localhost:8501/v1/models/iris_model:predict
Deployment dan inferensi online
Bagian ini menggunakan Google Cloud CLI untuk men-deploy dan menjalankan prediksi terhadap model yang diekspor.
Untuk detail selengkapnya tentang men-deploy model ke AI Platform untuk prediksi online/batch, lihat Men-deploy model.
Membuat resource model
MODEL_NAME="IRIS_MODEL"
gcloud ai-platform models create $MODEL_NAME
Membuat versi model
1) Setel variabel lingkungan:
MODEL_DIR="gs://some/gcs/path/iris_model"
// Select a suitable version for this model
VERSION_NAME="v1"
FRAMEWORK="TENSORFLOW"
2) Buat versi:
gcloud ai-platform versions create $VERSION_NAME --model=$MODEL_NAME --origin=$MODEL_DIR --runtime-version=1.15 --framework=$FRAMEWORK
Langkah ini mungkin memerlukan waktu beberapa menit hingga selesai. Anda akan melihat pesan Creating version (this might take a few minutes)......
.
3) (opsional) Dapatkan informasi mengenai versi baru Anda:
gcloud ai-platform versions describe $VERSION_NAME --model $MODEL_NAME
Anda akan melihat output yang serupa dengan ini:
createTime: '2020-02-28T16:30:45Z'
deploymentUri: gs://your_bucket_name
framework: TENSORFLOW
machineType: mls1-c1-m2
name: projects/[YOUR-PROJECT-ID]/models/IRIS_MODEL/versions/v1
pythonVersion: '2.7'
runtimeVersion: '1.15'
state: READY
Prediksi online
Detail tentang menjalankan prediksi online terhadap model yang di-deploy tersedia di Meminta prediksi.
1) Buat file JSON yang dibatasi baris baru untuk input, misalnya file instances.json
dengan konten berikut:
{"sepal_length":5.0, "sepal_width":2.0, "petal_length":3.5, "petal_width":1.0}
{"sepal_length":5.3, "sepal_width":3.7, "petal_length":1.5, "petal_width":0.2}
2) Siapkan variabel lingkungan untuk memprediksi:
INPUT_DATA_FILE="instances.json"
3) Jalankan prediksi:
gcloud ai-platform predict --model $MODEL_NAME --version $VERSION_NAME --json-instances $INPUT_DATA_FILE
Melatih dan men-deploy model pengklasifikasi hierarki yang ditingkatkan
Melatih model
Latih model pengklasifikasi hierarki yang ditingkatkan yang memprediksi jenis iris menggunakan pernyataan CREATE MODEL
. Tugas pelatihan ini akan memerlukan waktu sekitar 7 menit.
bq query --use_legacy_sql=false \ 'CREATE MODEL `bqml_tutorial.boosted_tree_iris_model` OPTIONS (model_type="boosted_tree_classifier", max_iterations=10, input_label_cols=["species"]) AS SELECT * FROM `bigquery-public-data.ml_datasets.iris`;'
Mengekspor model
Ekspor model ke bucket Cloud Storage menggunakan alat command line bq. Guna mengetahui cara tambahan untuk mengekspor model, lihat Mengekspor model BigQuery ML.
bq extract --destination_format ML_XGBOOST_BOOSTER -m bqml_tutorial.boosted_tree_iris_model gs://some/gcs/path/boosted_tree_iris_model
Deployment dan inferensi lokal
Dalam file yang diekspor, ada file main.py
untuk dijalankan secara lokal.
Mendownload file model yang diekspor ke direktori lokal
mkdir serving_dir
gsutil cp -r gs://some/gcs/path/boosted_tree_iris_model serving_dir
Mengekstrak prediktor
tar -xvf serving_dir/boosted_tree_iris_model/xgboost_predictor-0.1.tar.gz -C serving_dir/boosted_tree_iris_model/
Menginstal library XGBoost
Instal library XGBoost - versi 0.82 atau yang lebih baru.
Menjalankan prediksi
cd serving_dir/boosted_tree_iris_model/
python main.py '[{"sepal_length":5.0, "sepal_width":2.0, "petal_length":3.5, "petal_width":1.0}]'
Deployment dan inferensi online
Bagian ini menggunakan Google Cloud CLI untuk men-deploy dan menjalankan prediksi terhadap model yang diekspor di Prediksi Online AI Platform.
Untuk detail selengkapnya tentang men-deploy model ke AI Platform untuk prediksi online/batch menggunakan rutinitas kustom, lihat Men-deploy model.
Membuat resource model
MODEL_NAME="BOOSTED_TREE_IRIS_MODEL"
gcloud ai-platform models create $MODEL_NAME
Membuat versi model
1) Setel variabel lingkungan:
MODEL_DIR="gs://some/gcs/path/boosted_tree_iris_model"
VERSION_NAME="v1"
2) Buat versi:
gcloud beta ai-platform versions create $VERSION_NAME --model=$MODEL_NAME --origin=$MODEL_DIR --package-uris=${MODEL_DIR}/xgboost_predictor-0.1.tar.gz --prediction-class=predictor.Predictor --runtime-version=1.15
Langkah ini mungkin memerlukan waktu beberapa menit hingga selesai. Anda akan melihat pesan Creating version (this might take a few minutes)......
.
3) (opsional) Dapatkan informasi mengenai versi baru Anda:
gcloud ai-platform versions describe $VERSION_NAME --model $MODEL_NAME
Anda akan melihat output yang serupa dengan ini:
createTime: '2020-02-07T00:35:42Z'
deploymentUri: gs://some/gcs/path/boosted_tree_iris_model
etag: rp090ebEnQk=
machineType: mls1-c1-m2
name: projects/[YOUR-PROJECT-ID]/models/BOOSTED_TREE_IRIS_MODEL/versions/v1
packageUris:
- gs://some/gcs/path/boosted_tree_iris_model/xgboost_predictor-0.1.tar.gz
predictionClass: predictor.Predictor
pythonVersion: '2.7'
runtimeVersion: '1.15'
state: READY
Prediksi online
Untuk detail selengkapnya tentang menjalankan prediksi online terhadap model yang di-deploy, lihat Meminta prediksi.
1) Buat file JSON yang dibatasi baris baru untuk input. Misalnya, file instances.json
dengan konten berikut:
{"sepal_length":5.0, "sepal_width":2.0, "petal_length":3.5, "petal_width":1.0}
{"sepal_length":5.3, "sepal_width":3.7, "petal_length":1.5, "petal_width":0.2}
2) Menyiapkan variabel lingkungan untuk memprediksi:
INPUT_DATA_FILE="instances.json"
3) Jalankan prediksi:
gcloud ai-platform predict --model $MODEL_NAME --version $VERSION_NAME --json-instances $INPUT_DATA_FILE
Melatih dan men-deploy model pengklasifikasi AutoML
Melatih model
Latih model pengklasifikasi AutoML yang memprediksi jenis iris menggunakan pernyataan CREATE MODEL
. Model AutoML memerlukan setidaknya 1.000 baris data input. Karena ml_datasets.iris
hanya memiliki 150 baris, kita duplikasi data tersebut 10 kali. Tugas pelatihan ini akan memakan waktu sekitar 2 jam.
bq query --use_legacy_sql=false \ 'CREATE MODEL `bqml_tutorial.automl_iris_model` OPTIONS (model_type="automl_classifier", budget_hours=1, input_label_cols=["species"]) AS SELECT * EXCEPT(multiplier) FROM `bigquery-public-data.ml_datasets.iris`, unnest(GENERATE_ARRAY(1, 10)) as multiplier;'
Mengekspor model
Ekspor model ke bucket Cloud Storage menggunakan alat command line bq. Guna mengetahui cara tambahan untuk mengekspor model, lihat Mengekspor model BigQuery ML.
bq extract -m bqml_tutorial.automl_iris_model gs://some/gcs/path/automl_iris_model
Deployment dan inferensi lokal
Untuk mengetahui detail tentang cara mem-build container AutoML, lihat Mengekspor model. Langkah-langkah berikut mengharuskan Anda menginstal Docker.
Menyalin file model yang diekspor ke direktori lokal
mkdir automl_serving_dir
gsutil cp -r gs://some/gcs/path/automl_iris_model/* automl_serving_dir/
Menarik image Docker AutoML
docker pull gcr.io/cloud-automl-tables-public/model_server
Memulai container Docker
docker run -v `pwd`/automl_serving_dir:/models/default/0000001 -p 8080:8080 -it gcr.io/cloud-automl-tables-public/model_server
Menjalankan prediksi
1) Buat file JSON yang dibatasi baris baru untuk input. Misalnya, file input.json
dengan konten berikut:
{"instances": [{"sepal_length":5.0, "sepal_width":2.0, "petal_length":3.5, "petal_width":1.0},
{"sepal_length":5.3, "sepal_width":3.7, "petal_length":1.5, "petal_width":0.2}]}
2) Lakukan panggilan prediksi:
curl -X POST --data @input.json http://localhost:8080/predict
Deployment dan inferensi online
Prediksi online untuk model regressor AutoML dan pengklasifikasi AutoML tidak didukung di AI Platform.
Pembersihan
Agar akun Google Cloud Anda tidak dikenai biaya untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus resource satu per satu.
- Anda dapat menghapus project yang dibuat.
- Atau, Anda dapat menyimpan project dan menghapus set data dan bucket Cloud Storage.
Menghentikan container Docker
1) Cantumkan semua container Docker yang berjalan.
docker ps
2) Hentikan container dengan ID container yang berlaku dari daftar container.
docker stop container_id
Menghapus resource AI Platform
1) Hapus versi model.
gcloud ai-platform versions delete $VERSION_NAME --model=$MODEL_NAME
2) Hapus modelnya.
gcloud ai-platform models delete $MODEL_NAME
Menghapus set data
Jika project Anda dihapus, semua set data dan semua tabel dalam project akan dihapus. Jika ingin menggunakan kembali project tersebut, Anda dapat menghapus set data yang dibuat dalam tutorial ini:
Jika perlu, buka halaman BigQuery di konsol Google Cloud.
Di navigasi, klik set data bqml_tutorial yang telah Anda buat.
Klik Delete dataset di sisi kanan jendela. Tindakan ini akan menghapus set data, tabel, dan semua data.
Di kotak dialog Delete dataset, konfirmasi perintah hapus dengan mengetikkan nama set data Anda (
bqml_tutorial
), lalu klik Delete.
Menghapus bucket Cloud Storage
Menghapus project Anda akan menghapus semua bucket Cloud Storage di project tersebut. Jika ingin menggunakan kembali project tersebut, Anda dapat menghapus bucket yang Anda buat dalam tutorial ini
- Di konsol Google Cloud, buka halaman Buckets Cloud Storage.
Pilih kotak centang bucket yang ingin Anda hapus.
Klik Delete.
Di jendela overlay yang muncul, konfirmasi bahwa Anda ingin menghapus bucket beserta isinya dengan mengklik Delete.
Menghapus project Anda
Untuk menghapus project:
- 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.
Langkah selanjutnya
- Untuk ringkasan BigQuery ML, lihat Pengantar BigQuery ML.
- Untuk mengetahui informasi tentang cara mengekspor model, lihat Mengekspor model.
- Untuk informasi tentang cara membuat model, lihat halaman sintaksis
CREATE MODEL
.