Menyematkan teks dengan model TensorFlow yang telah dilatih sebelumnya
Tutorial ini menunjukkan cara membuat embedding teks NNLM, SWIVEL, dan BERT di BigQuery menggunakan model TensorFlow yang telah dilatih sebelumnya. Embedding teks adalah representasi vektor padat dari sebuah teks sedemikian rupa, sehingga jika dua potongan teks serupa secara semantik, maka embedding masing-masing akan berdekatan dalam ruang vektor embedding.
Model NNLM, SWIVEL, dan BERT
Model NNLM, SWIVEL, dan BERT bervariasi dalam ukuran, akurasi, skalabilitas, dan biaya. Gunakan tabel berikut untuk membantu Anda menentukan model mana yang akan digunakan:
Model | Ukuran model | Dimensi embedding | Kasus penggunaan | Deskripsi |
---|---|---|---|---|
NNLM | <150MB | 50 | Frasa singkat, berita, tweet, ulasan | Neural Network Language Model |
SWIVEL | <150MB | 20 | Frasa singkat, berita, tweet, ulasan | Submatrix-wise Vector Embedding Learner |
BERT | ~200MB | 768 | Frasa pendek, berita, tweet, ulasan, paragraf pendek | Bidirectional Encoder Representations from Transformers |
Dalam tutorial ini, model NNLM dan SWIVEL adalah model TensorFlow yang diimpor, dan model BERT adalah model jarak jauh di Vertex AI.
Izin yang diperlukan
Untuk membuat set data, Anda memerlukan izin Identity and Access Management (IAM)
bigquery.datasets.create
.Untuk membuat bucket, Anda memerlukan izin IAM
storage.buckets.create
.Untuk mengupload model ke Cloud Storage, Anda memerlukan izin IAM
storage.objects.create
danstorage.objects.get
.Untuk membuat resource koneksi, Anda memerlukan izin IAM berikut:
bigquery.connections.create
bigquery.connections.get
Untuk memuat model ke BigQuery ML, Anda memerlukan izin IAM berikut:
bigquery.jobs.create
bigquery.models.create
bigquery.models.getData
bigquery.models.updateData
Untuk menjalankan inferensi, Anda memerlukan izin IAM 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 untuk kueri yang dijalankan 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.
- Vertex AI: Jika mengikuti petunjuk pembuatan model BERT, Anda akan dikenai biaya untuk men-deploy model ke endpoint.
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Untuk informasi selengkapnya, lihat referensi berikut:
Sebelum memulai
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Make sure that billing is enabled for your Google Cloud project.
-
Aktifkan API BigQuery, BigQuery Connection, and Vertex AI.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Make sure that billing is enabled for your Google Cloud project.
-
Aktifkan API BigQuery, BigQuery Connection, and Vertex AI.
Membuat set data
Untuk membuat set data bernama tf_models_tutorial
guna menyimpan model yang
Anda buat, pilih salah satu opsi berikut:
SQL
Gunakan
pernyataan CREATE SCHEMA
:
Di konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, masukkan pernyataan berikut:
CREATE SCHEMA `PROJECT_ID.tf_models_tutorial`;
Ganti
PROJECT_ID
dengan project ID Anda.Klik
Run.
Untuk informasi selengkapnya tentang cara menjalankan kueri, lihat Menjalankan kueri interaktif.
bq
Di konsol Google Cloud, aktifkan Cloud Shell.
Untuk membuat set data, jalankan perintah
bq mk
:bq mk --dataset --location=us PROJECT_ID:tf_models_tutorial
Ganti
PROJECT_ID
dengan project ID Anda.
Membuat dan mengupload model ke Cloud Storage
Untuk petunjuk yang lebih detail tentang cara membuat embedding teks menggunakan model TensorFlow yang telah dilatih sebelumnya, lihat notebook Colab. Jika tidak, pilih salah satu model berikut:
NNLM
Instal library
bigquery-ml-utils
menggunakan pip:pip install bigquery-ml-utils
Buat model NNLM. Kode Python berikut memuat model NNLM dari TensorFlow Hub dan menyiapkannya untuk BigQuery:
from bigquery_ml_utils import model_generator # Establish an instance of TextEmbeddingModelGenerator. text_embedding_model_generator = model_generator.TextEmbeddingModelGenerator() # Generate an NNLM model. text_embedding_model_generator.generate_text_embedding_model('nnlm', OUTPUT_MODEL_PATH)
Ganti
OUTPUT_MODEL_PATH
dengan jalur ke folder lokal tempat Anda dapat menyimpan model untuk sementara.Opsional: Mencetak tanda tangan model yang dibuat:
import tensorflow as tf reload_embedding_model = tf.saved_model.load(OUTPUT_MODEL_PATH) print(reload_embedding_model.signatures["serving_default"])
Untuk menyalin model yang dihasilkan dari folder lokal Anda ke bucket Cloud Storage, gunakan alat gsutil:
gsutil cp -r OUTPUT_MODEL_PATH gs://BUCKET_PATH/nnlm_model
Ganti
BUCKET_PATH
dengan nama bucket Cloud Storage tempat Anda menyalin model.
SWIVEL
Instal library
bigquery-ml-utils
menggunakan pip:pip install bigquery-ml-utils
Buat model SWIVEL. Kode Python berikut memuat model SWIVEL dari TensorFlow Hub dan menyiapkannya untuk BigQuery:
from bigquery_ml_utils import model_generator # Establish an instance of TextEmbeddingModelGenerator. text_embedding_model_generator = model_generator.TextEmbeddingModelGenerator() # Generate a SWIVEL model. text_embedding_model_generator.generate_text_embedding_model('swivel', OUTPUT_MODEL_PATH)
Ganti
OUTPUT_MODEL_PATH
dengan jalur ke folder lokal tempat Anda dapat menyimpan model untuk sementara.Opsional: Mencetak tanda tangan model yang dibuat:
import tensorflow as tf reload_embedding_model = tf.saved_model.load(OUTPUT_MODEL_PATH) print(reload_embedding_model.signatures["serving_default"])
Untuk menyalin model yang dihasilkan dari folder lokal Anda ke bucket Cloud Storage, gunakan alat gsutil:
gsutil cp -r OUTPUT_MODEL_PATH gs://BUCKET_PATH/swivel_model
Ganti
BUCKET_PATH
dengan nama bucket Cloud Storage tempat Anda menyalin model.
BERT
Instal library
bigquery-ml-utils
menggunakan pip:pip install bigquery-ml-utils
Buat model BERT. Kode Python berikut memuat model BERT dari TensorFlow Hub dan menyiapkannya untuk BigQuery:
from bigquery_ml_utils import model_generator # Establish an instance of TextEmbeddingModelGenerator. text_embedding_model_generator = model_generator.TextEmbeddingModelGenerator() # Generate a BERT model. text_embedding_model_generator.generate_text_embedding_model('bert', OUTPUT_MODEL_PATH)
Ganti
OUTPUT_MODEL_PATH
dengan jalur ke folder lokal tempat Anda dapat menyimpan model untuk sementara.Opsional: Mencetak tanda tangan model yang dibuat:
import tensorflow as tf reload_embedding_model = tf.saved_model.load(OUTPUT_MODEL_PATH) print(reload_embedding_model.signatures["serving_default"])
Untuk menyalin model yang dihasilkan dari folder lokal Anda ke bucket Cloud Storage, gunakan alat gsutil:
gsutil cp -r OUTPUT_MODEL_PATH gs://BUCKET_PATH/bert_model
Ganti
BUCKET_PATH
dengan nama bucket Cloud Storage tempat Anda menyalin model.
Memuat model ke BigQuery
Pilih salah satu model berikut:
NNLM
Gunakan
pernyataan CREATE MODEL
:
Di konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, masukkan pernyataan berikut:
CREATE OR REPLACE MODEL
tf_models_tutorial.nnlm_model
OPTIONS ( model_type = 'TENSORFLOW', model_path = 'gs://BUCKET_NAME/nnlm_model/*');Ganti
BUCKET_NAME
dengan nama bucket yang Anda buat sebelumnya.Klik
Run.
Untuk informasi selengkapnya tentang cara menjalankan kueri, lihat Menjalankan kueri interaktif.
SWIVEL
Gunakan
pernyataan CREATE MODEL
:
Di konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, masukkan pernyataan berikut:
CREATE OR REPLACE MODEL
tf_models_tutorial.swivel_model
OPTIONS ( model_type = 'TENSORFLOW', model_path = 'gs://BUCKET_NAME/swivel_model/*');Ganti
BUCKET_NAME
dengan nama bucket yang Anda buat sebelumnya.Klik
Run.
Untuk informasi selengkapnya tentang cara menjalankan kueri, lihat Menjalankan kueri interaktif.
BERT
Untuk memuat model BERT ke BigQuery, impor model BERT ke Vertex AI, deploy model ke endpoint Vertex AI, buat koneksi, lalu buat model jarak jauh di BigQuery.
Untuk mengimpor model BERT ke Vertex AI, ikuti langkah-langkah berikut:
Di konsol Google Cloud, buka halaman Model registry Vertex AI.
Klik Impor, lalu lakukan hal berikut:
- Untuk Nama, masukkan
BERT
. - Untuk Region, pilih region yang cocok dengan region bucket Cloud Storage.
- Untuk Nama, masukkan
Klik Lanjutkan, lalu lakukan tindakan berikut:
- Untuk Versi framework model, pilih
2.8
. - Untuk Lokasi artefak model, masukkan jalur ke
bucket Cloud Storage tempat Anda menyimpan file model. Misalnya,
gs://BUCKET_PATH/bert_model
.
- Untuk Versi framework model, pilih
Klik Import. Setelah impor selesai, model Anda akan muncul di halaman Model registry.
Untuk men-deploy model BERT ke endpoint Vertex AI dan menghubungkannya ke BigQuery, ikuti langkah-langkah berikut:
Di konsol Google Cloud, buka halaman Model registry Vertex AI.
Klik nama model Anda.
Klik Deploy & uji.
Klik Deploy ke endpoint.
Untuk Nama endpoint, masukkan
bert_model_endpoint
.Klik Lanjutkan.
Pilih resource komputasi Anda.
Klik Deploy.
Membuat koneksi resource Cloud BigQuery dan memberikan akses ke akun layanan koneksi tersebut.
Untuk membuat model jarak jauh berdasarkan endpoint Vertex AI,
gunakan
pernyataan CREATE MODEL
:
Di konsol Google Cloud, buka halaman BigQuery.
Di editor kueri, masukkan pernyataan berikut:
CREATE OR REPLACE MODEL
tf_models_tutorial.bert_model
INPUT(content
STRING) OUTPUT(embedding
ARRAY<FLOAT64>
) REMOTE WITH CONNECTION `PROJECT_ID.CONNECTION_LOCATION.CONNECTION_ID` OPTIONS ( ENDPOINT = "https://ENDPOINT_LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/ENDPOINT_LOCATION/endpoints/ENDPOINT_ID");Ganti kode berikut:
PROJECT_ID
: project IDCONNECTION_LOCATION
: lokasi koneksi BigQuery AndaCONNECTION_ID
: ID koneksi BigQuery AndaSaat Anda melihat detail koneksi di Konsol Google Cloud, ini adalah nilai di bagian terakhir dari ID koneksi yang sepenuhnya memenuhi syarat yang ditampilkan dalam Connection ID, misalnya
projects/myproject/locations/connection_location/connections/myconnection
ENDPOINT_LOCATION
: lokasi endpoint Vertex AI Anda. Misalnya: "us-central1".ENDPOINT_ID
: ID endpoint model Anda
Klik
Run.
Untuk informasi selengkapnya tentang cara menjalankan kueri, lihat Menjalankan kueri interaktif.
Membuat embedding teks
Di bagian ini, Anda menggunakan
fungsi inferensi ML.PREDICT()
untuk menghasilkan embedding teks kolom review
dari set data publik
bigquery-public-data.imdb.reviews
. Kueri
membatasi jumlah baris pada tabel hingga 500 baris untuk mengurangi jumlah data yang diproses.
NNLM
SELECT * FROM ML.PREDICT( MODEL `tf_models_tutorial.nnlm_model`, ( SELECT review AS content FROM `bigquery-public-data.imdb.reviews` LIMIT 500) );
Hasilnya serupa dengan berikut ini:
+-----------------------+----------------------------------------+ | embedding | content | +-----------------------+----------------------------------------+ | 0.08599445223808289 | Isabelle Huppert must be one of the... | | -0.04862852394580841 | | | -0.017750458791851997 | | | 0.8658871650695801 | | | ... | | +-----------------------+----------------------------------------+
SWIVEL
SELECT * FROM ML.PREDICT( MODEL `tf_models_tutorial.swivel_model`, ( SELECT review AS content FROM `bigquery-public-data.imdb.reviews` LIMIT 500) );
Hasilnya serupa dengan berikut ini:
+----------------------+----------------------------------------+ | embedding | content | +----------------------+----------------------------------------+ | 2.5952553749084473 | Isabelle Huppert must be one of the... | | -4.015787601470947 | | | 3.6275434494018555 | | | -6.045154333114624 | | | ... | | +----------------------+----------------------------------------+
BERT
SELECT * FROM ML.PREDICT( MODEL `tf_models_tutorial.bert_model`, ( SELECT review AS content FROM `bigquery-public-data.imdb.reviews` LIMIT 500) );
Hasilnya serupa dengan berikut ini:
+--------------+---------------------+----------------------------------------+ | embedding | remote_model_status | content | +--------------+---------------------+----------------------------------------+ | -0.694072425 | null | Isabelle Huppert must be one of the... | | 0.439208865 | | | | 0.99988997 | | | | -0.993487895 | | | | ... | | | +--------------+---------------------+----------------------------------------+
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.