Tutorial ini menunjukkan cara mendapatkan insight dari set data besar menggunakan BigQuery, Cloud Run, dan Gemma LLM. Dalam tutorial ini, Anda akan men-deploy aplikasi contoh ke Google Kubernetes Engine (GKE). Aplikasi contoh memanfaatkan BigQuery untuk penyimpanan dan pemrosesan data, Cloud Run untuk penanganan permintaan, dan Gemma LLM untuk menganalisis data dan membuat prediksi berdasarkan perintah yang masuk.
Tutorial ini ditujukan untuk administrator dan arsitek platform cloud, Spesialis data dan AI, engineer ML, dan profesional MLOps (DevOps). Sebelum membaca halaman ini, pastikan Anda sudah memahami Kubernetes dan lingkungan notebook seperti Jupyter.
Sebagai prasyarat untuk tutorial ini, Anda harus menyelesaikan tutorial Menyajikan model terbuka Gemma menggunakan GPU di GKE dengan Hugging Face TGI. Framework TGI memfasilitasi proses penayangan model.
Alasan menggunakan GKE dan BigQuery
BigQuery adalah Platform as a Service (PaaS), data warehouse tanpa server yang terkelola sepenuhnya dan memungkinkan analisis yang skalabel pada data berukuran petabyte. BigQuery memungkinkan Anda berfokus pada analisis data untuk menemukan insight yang bermakna sekaligus menggunakan SQL yang sudah dikenal dan machine learning bawaan.
Dengan menggunakan GPU di GKE dengan TGI, Anda dapat men-deploy model bahasa Gemma untuk menganalisis dan merumuskan interaksi pengguna dalam bahasa alami. Selanjutnya, dengan mengintegrasikan BigQuery dengan GKE, Anda dapat menggunakan BigQuery untuk menangani set data besar secara efisien (seperti Google Analytics) dan kemampuan pemahaman bahasa alam model untuk menghasilkan insight yang bermakna.
Misalnya, sebagai ilmuwan data atau analis, atau pengambil keputusan bisnis di perusahaan e-commerce, Anda mungkin ingin memahami perilaku pengguna di situs atau aplikasi Anda. Insight ini dapat membantu Anda mengoptimalkan dan mempersonalisasi perjalanan pengguna serta membuat keputusan bisnis yang tepat untuk meningkatkan penjualan.
Dalam skenario ini, Anda dapat mengambil data Google Analytics mentah dari BigQuery, memasukkannya ke model Gemma, dan menerima ringkasan kunjungan halaman serta insight dalam bahasa alami. Model Gemma, yang berjalan di infrastruktur skalabel dengan akselerasi GPU dari GKE, memproses data perjalanan pengguna dengan cepat, mengidentifikasi pola dan tren. Anda dapat memperoleh insight untuk menentukan kombinasi produk populer, mengungkapkan titik penurunan umum dalam proses checkout, dan menyoroti kampanye pemasaran yang berhasil mendorong traffic ke halaman landing tertentu.
Manfaat
Solusi ini menawarkan alur kerja yang disederhanakan dengan keuntungan berikut:
- Integrasi BigQuery: gunakan BigQuery untuk menyimpan dan memproses set data besar (seperti data Google Analytics dalam tutorial ini). Tindakan ini memungkinkan Anda membuat kueri dan menggabungkan data yang diperlukan untuk analisis model.
- Akselerasi GPU: jalankan model Gemma di cluster GKE dengan dukungan GPU untuk mempercepat proses inferensi, sehingga menghasilkan prediksi jauh lebih cepat daripada dengan prosesor berbasis CPU.
- Mengurangi biaya dan waktu: menghemat waktu dan resource dengan menggunakan model bahasa Gemma terlatih dan open source, sehingga Anda tidak perlu membuat model kustom dari awal.
Tujuan
Dalam tutorial ini, Anda akan mempelajari cara:
- Men-deploy model dan mengeksposnya: buat file YAML layanan untuk menentukan load balancer internal guna mengakses model Gemma.
- Buat fungsi jarak jauh BigQuery: jalankan kode Python untuk menentukan fungsi jarak jauh yang mengambil data Google Analytics, membuat perintah untuk model, mengirim permintaan ke endpoint model menggunakan load balancer, dan menampilkan respons model.
- Mengonfigurasi jaringan Virtual Private Cloud (VPC): menyiapkan jaringan VPC dan konektor VPC untuk memungkinkan komunikasi yang aman antara BigQuery dan cluster GKE. Hal ini sangat penting agar fungsi jarak jauh dapat mengakses endpoint model.
- Menganalisis data: menganalisis data menggunakan BigQuery DataFrames, atau langsung di SQL menggunakan alat command line
bq
. Jalankan cuplikan kode yang disediakan di Notebook Colab Enterprise untuk:- Buat kueri data Google Analytics dari BigQuery menggunakan SQL.
- Terapkan fungsi jarak jauh ke data untuk menghasilkan insight dari model Gemini.
- Tampilkan hasilnya.
Arsitektur
Diagram arsitektur berikut menunjukkan komponen yang terlibat dan cara komponen tersebut berinteraksi:
- Gunakan notebook Colab Enterprise untuk mengeksekusi kode Python Anda. Dengan Python, Anda dapat menggunakan library bigframes untuk menyederhanakan interaksi SQL.
- BigQuery berfungsi sebagai mesin pemrosesan big data, yang mendukung penggunaan SQL untuk berinteraksi dengan data.
- Fungsi jarak jauh memanggil fungsi Cloud Run. Data secara otomatis dirutekan ke fungsi jarak jauh tempat data disiapkan dan dikirim ke GKE untuk inferensi.
- Hasilnya dikirim kembali ke BigQuery dan ditampilkan dalam tabel.
Biaya
Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:
- Compute Engine instances used by GKE
- GPU resources used by GKE
- BigQuery
- Cloud Load Balancing
- Cloud Run functions
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Setelah menyelesaikan tugas yang dijelaskan dalam dokumen ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk mengetahui informasi selengkapnya, lihat Pembersihan.
Sebelum memulai
Pastikan untuk menyelesaikan prasyarat berikut:
Pilih atau buat project
Anda dapat menggunakan project yang ada, atau membuat project baru untuk tutorial ini.
- 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.
-
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.
Mengaktifkan API
Aktifkan API Artifact Registry, Compute Engine, GKE, IAM Service Account Credentials, Cloud Functions, Cloud Build, Cloud Run Admin, Cloud Logging, Serverless VPC Access, BigQuery, Dataform, Vertex AI .
Menyiapkan Cloud Shell
Dalam tutorial ini, Anda akan menggunakan Cloud Shell untuk menjalankan perintah gcloud
dan kubectl
. Cloud Shell adalah lingkungan shell untuk mengelola resource yang dihosting di Google Cloud. Cloud Shell telah diinstal lebih dulu dengan alat command line
Google Cloud CLI dan kubectl.
Di konsol Google Cloud, aktifkan Cloud Shell.
Sesi Cloud Shell akan terbuka di dalam frame yang lebih rendah di konsol.
Sebelum menjalankan perintah dalam tutorial ini, pastikan project default Anda ditetapkan ke project ID tempat Anda ingin men-deploy aplikasi contoh. Jika belum ditetapkan, jalankan perintah berikut di Cloud Shell:
gcloud config set project PROJECT_ID
Ganti PROJECT_ID
dengan project ID Anda.
Memberikan peran IAM
Pastikan akun pengguna dan akun layanan default Compute Engine di project Anda memiliki peran Identity and Access Management (IAM) yang diperlukan untuk tutorial ini.
Grant roles to your user account. Run the following command once for each of the following
IAM roles:
roles/aiplatform.colabEnterpriseAdmin, roles/run.invoker, roles/container.admin, roles/iam.serviceAccountAdmin, roles/logging.logWriter
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
- Replace
PROJECT_ID
with your project ID. -
Replace
USER_IDENTIFIER
with the identifier for your user account. For example,user:myemail@example.com
. - Replace
ROLE
with each individual role.
Berikan peran ke akun layanan default Compute Engine Anda. Jalankan perintah berikut satu kali untuk setiap peran IAM berikut: roles/logging.logWriter, roles/artifactregistry.writer, roles/storage.objectViewer
gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" --role=ROLE
- Ganti
PROJECT_ID
dengan project ID Anda. - Ganti
PROJECT_NUMBER
dengan nomor project Anda untuk membuat domain akun layanan default Compute Engine untuk project Anda. Contoh,123456789012-compute@developer.gserviceaccount.com
. - Ganti
ROLE
dengan setiap peran individual.
Menayangkan model Gemma
Buka tutorial Menayangkan model terbuka Gemma menggunakan GPU di GKE dengan Hugging Face TGI dan ikuti petunjuk mulai dari Sebelum memulai hingga Berinteraksi dengan model menggunakan curl untuk memastikan model Gemma Anda berhasil di-deploy dan Anda dapat berinteraksi dengannya.
Untuk tujuan tutorial ini, deploy model Gemma 2B-it.
Menyiapkan jaringan VPC
Buat atau gunakan jaringan VPC di region us-central1
agar fungsi jarak jauh Anda dapat terhubung ke cluster GKE.
Dalam tutorial ini, gunakan VPC Default
.
Untuk memastikan set data BigQuery, fungsi jarak jauh, dan fungsi Cloud Run yang mendasarinya di-deploy di lokasi yang kompatibel, jaringan VPC harus berada di region yang sama dengan fungsi jarak jauh BigQuery Anda.
Dalam tutorial ini, saat menetapkan opsi BigQuery DataFrames saat membuat fungsi jarak jauh, Anda menentukan US
sebagai lokasi untuk set data, yang secara default ditetapkan ke region us-central1
untuk fungsi Cloud Run Anda. Oleh karena itu, buat atau gunakan VPC di region us-central1
.
Membuat load balancer
Ikuti petunjuk berikut untuk membuat load balancer internal di cluster GKE Anda:
Buat manifes
tgi-2b-lb-service.yaml
berikut:apiVersion: v1 kind: Service metadata: name: llm-lb-service annotations: networking.gke.io/load-balancer-type: "Internal" spec: selector: app: gemma-server type: LoadBalancer ports: - protocol: TCP port: 8000 targetPort: 8000
Buka terminal Cloud Shell baru dan jalankan perintah berikut untuk menerapkan manifes:
kubectl apply -f tgi-2b-lb-service.yaml
Dapatkan alamat IP load balancer. Anda mungkin perlu menunggu 1-2 menit sebelum alamat IP ini dapat diambil:
kubectl get service llm-lb-service --output yaml | grep ip:
Anda akan menggunakan alamat IP ini untuk berkomunikasi dengan aplikasi gemma-server
yang berjalan di balik load balancer.
Buat konektor
Anda menggunakan konektor Akses VPC Serverless untuk mengirim dan menerima permintaan melalui jaringan VPC tanpa menggunakan internet publik. Untuk mengetahui informasi selengkapnya, lihat Akses VPC Serverless.
Dalam tutorial ini, Anda akan membuat konektor dengan subnet khusus yang baru untuk menghindari
konflik alamat IP dengan resource yang ada di VPC. Untuk mengetahui petunjuknya,
lihat bagian Membuat konektor
dan ikuti petunjuk gcloud
untuk bagian Membuat konektor dan subnet baru.
Atau, jika Anda ingin menggunakan subnet yang ada, ikuti petunjuk untuk bagian Membuat konektor menggunakan subnet yang ada.
Untuk mengetahui informasi selengkapnya, lihat Persyaratan subnet konektor.
Membuat notebook
Dalam tutorial ini, Anda akan menggunakan notebook Colab Enterprise untuk menjalankan semua kode untuk menentukan fungsi jarak jauh BigQuery dan melakukan analisis.
Untuk membuat notebook Colab Enterprise menggunakan Konsol Google Cloud:
Di konsol Google Cloud, buka halaman Colab Enterprise Notebooks:
Di menu Region, pilih
us-central1
. Ini adalah region yang sama tempat Anda membuat semua layanan dalam tutorial ini.Di samping File, klik Buat notebook.
Notebook baru Anda akan muncul di tab Notebook saya.
Untuk menjalankan kode di notebook baru, masukkan sel kode baru di notebook untuk setiap perintah atau cuplikan kode yang ingin Anda jalankan.
Membuat fungsi jarak jauh BigQuery
Salah satu cara untuk menentukan fungsi jarak jauh BigQuery adalah dengan menggunakan
library bigframes
. Di bagian ini, gunakan bigframes
untuk membuat fungsi jarak jauh
yang disebut process_incoming
. Fungsi jarak jauh ini menggunakan data Google Analytics sebagai input, membuat perintah, dan mengirimkannya ke model Gemma Anda untuk analisis.
Di notebook Colab Enterprise yang Anda buat:
- Klik + Kode untuk menyisipkan sel kode baru.
Salin kode berikut di sel kode baru:
# Install the necessary packages on the notebook runtime %pip install --upgrade bigframes --quiet import bigframes.pandas as bpd import os import ast import requests # Replace the following variables # Use the format ip:port # For example, "10.128.05:8000" lb_url = "LOADBALANCER_IP_ADDRESS:8000" # Set BigQuery DataFrames options bpd.options.bigquery.project = "PROJECT_ID" bpd.options.bigquery.location = "US" # Update the VPC connector name with the one you created vpc_connector_name = "VPC_CONNECTOR_NAME" # Create a remote function using bigframes # https://cloud.google.com/bigquery/docs/remote-functions#bigquery-dataframes @bpd.remote_function( [str], str, dataset="ga_demo", name="ga_explain_example", bigquery_connection="bigframes-rf-conn", reuse=True, packages=["requests"], cloud_function_vpc_connector=VPC_CONNECTOR_NAME ) def process_incoming(data): ga_data = ast.literal_eval(data) USER_PROMPT = """ 'The following are the results from Google Analytics. They are reverse ranked. reverse_event_number 1 is the last page visited. reverse_event_number 2 is the second last page visited. You are given the following data. {} Can you summarize what was the most popular page people landed on and what page they came from? """.format(ga_data) url = 'http://{}/generate'.format(lb_url) myobj = { "inputs": USER_PROMPT, "temperature": 0.90, "top_p": 0.95, "max_tokens": 2048 } x = requests.post(url, json=myobj) result = x.text return (result) function_name = process_incoming.bigframes_remote_function print (f"The function name is: {function_name}")
Ganti kode berikut:
LOADBALANCER_IP_ADDRESS
: alamat IP dan port load balancer internal yang Anda buat sebelumnya--misalnya,10.128.05:8000
.PROJECT_ID
: project ID Anda.VPC_CONNECTOR_NAME
: nama konektor Akses VPC Serverless yang Anda buat sebelumnya.
Dalam tutorial ini, lokasi set data BigQuery Anda ditetapkan ke
US
, yang secara default ditetapkan ke regionus-central1
.Klik Run cell.
Output akan menampilkan nama fungsi yang mirip dengan berikut ini:
The function name is: PROJECT_ID.ga_demo.ga_explain_example
Menganalisis perilaku pengguna
Di bagian ini, Anda akan menganalisis perilaku pengguna di situs menggunakan fungsi jarak jauh process_incoming
dengan salah satu dari dua cara berikut:
- menggunakan BigQuery DataFrames
- menggunakan alat command line
bq
untuk menjalankan kueri langsung di SQL.
Menggunakan BigQuery DataFrames
Untuk menjalankan fungsi jarak jauh menggunakan BigQuery DataFrames di notebook Colab Enterprise yang Anda buat:
- Klik + Kode untuk menyisipkan sel kode baru.
- Salin kode berikut di sel kode baru, lalu klik Jalankan sel.
# Generate a list of all matchups and their histories as a JSON
grouping_sql = """
with
data_table as (
SELECT
distinct
user_pseudo_id,
events.value.string_value,
event_timestamp,
rank() over (partition by user_pseudo_id order by event_timestamp desc) as reverse_event_number
FROM
`bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_20210131` as events20210131,
unnest (events20210131.event_params) as events
where events.key = 'page_location'
qualify reverse_event_number < 3
)
select
*,TO_JSON_STRING (data_table) as ga_history
from data_table
limit 10;
"""
ga_df = bpd.read_gbq(grouping_sql)
post_processed = ga_df.assign(results=ga_df['ga_history'].apply(process_incoming),axis=1)
post_processed.head(10)
Output berikut menunjukkan contoh hasil kueri:
user_pseudo_id | string_value | event_timestamp | reverse_event_number | ga_history | results | sumbu |
---|---|---|---|---|---|---|
0 | 2342103247.0307162928 | https://shop.googlemerchandisestore.com/Google... | 1612096237169825 | 2 | {"user_pseudo_id":"2342103247.0307162928","str... | {"generated_text":"\n 'Berikut adalah... |
1 | 48976087,6959390698 | https://www.googlemerchandisestore.com/ | 1612056537823270 | 2 | {"user_pseudo_id":"48976087.6959390698","strin... | {"generated_text":"\n \n ```python\n imp... |
Menggunakan alat command line bq
Atau, Anda dapat menggunakan alat command line bq
untuk melakukan analisis langsung
menggunakan SQL.
Untuk menjalankan fungsi jarak jauh menggunakan alat command line bq
di notebook
Colab Enterprise yang Anda buat:
- Klik + Kode untuk menyisipkan sel kode baru.
Salin kode berikut di sel kode baru, dan ganti
PROJECT_ID
dengan project ID Anda.# Update with your PROJECT_ID function_name = 'PROJECT_ID.ga_demo.ga_explain_example' new_sql = """'with \ data_table as ( \ SELECT \ distinct \ user_pseudo_id, \ events.value.string_value, \ event_timestamp, \ rank() over (partition by user_pseudo_id order by event_timestamp desc) as reverse_event_number \ FROM \ `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_20210131` as events20210131, \ unnest (events20210131.event_params) as events \ where events.key = "page_location" \ qualify reverse_event_number < 3 \ ) \ select \ *, `{}`(TO_JSON_STRING (data_table)) as result \ from data_table \ limit 10;' \ """.format(function_name) # Run query using bq cli directly in a notebook cell !bq query --use_legacy_sql=false \ {new_sql}
Klik Run cell.
Output berikut menunjukkan contoh hasil kueri:
user_pseudo_id | string_value | event_timestamp | reverse_event_number | hasil |
---|---|---|---|---|
86037838.0267811614 | https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Dino+Game+Tee | 1612128627715585 | 1 | {"generated_text":"Answer:\n The most popular page was https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Dino+Game+Tee\n The next most popular page was the page they came from.\n\n Explanation:\n\nThe provided data shows that the current user visited Google's merchandise store specifically for the product "Google Dino Game Tee." \n \nPertimbangan Penting:\n\n* Interpretasi Data: Anda tidak dapat mengatakan dengan pasti bahwa"} |
4024190.3037653934 | https://shop.googlemerchandisestore.com/Google+Redesign/Apparel/Google+Black+Cloud+Zip+Hoodie | 1612085948486438 | 1 | {"generated_text":"\n ```python\n import pandas as pd\n\n data = {'user_pseudo_id': ['4024190.3037653934', '4024190.3037653934', '4024190.3037653934'],\n 'string_value': ['https://shop.googlemerchandisestore.com"} |
Pembersihan
Agar tidak perlu membayar biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.
Agar tidak menimbulkan biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus resource individual.
- Hapus notebook Colab Enterprise Anda.
- Hapus runtime Colab Enterprise Anda.
- Hapus fungsi BigQuery Anda.
Pastikan Akun Layanan Anda memiliki izin
bigquery.routines.delete
. Untuk informasi selengkapnya, lihat Izin BigQuery. - Hapus koneksi eksternal BigQuery Anda.
- Hapus fungsi Cloud Run Anda.
- Hapus cluster GKE Anda.
- Hapus konektor VPC Anda.
Langkah selanjutnya
- Coba codelab langsung untuk kasus penggunaan analisis data terstruktur dan tidak terstruktur.
- Lihat Praktik terbaik untuk menjalankan workload batch di GKE.
- Pelajari lebih lanjut kasus penggunaan AI/ML di BigQuery.
- Pelajari lebih lanjut kasus penggunaan AI/ML di GKE.