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 ini 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, serta profesional MLOps (DevOps). Sebelum membaca halaman ini, pastikan Anda 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 penyajian model.
Alasan menggunakan GKE dan BigQuery
BigQuery adalah data warehouse serverless yang terkelola sepenuhnya dan merupakan Platform as a Service (PaaS) yang memungkinkan analisis yang dapat diskalakan pada data berukuran petabyte. BigQuery memungkinkan Anda berfokus pada analisis data untuk menemukan insight yang bermakna sambil menggunakan SQL yang familier dan machine learning bawaan.
Dengan menggunakan GPU di GKE dengan TGI, Anda dapat men-deploy model bahasa Gemma untuk menganalisis dan meringkas 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 alami model untuk menghasilkan insight yang bermakna.
Misalnya, sebagai data scientist 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 yang dapat diskalakan dengan akselerasi GPU dari GKE, memproses data perjalanan pengguna dengan cepat, mengidentifikasi pola dan tren. Anda bisa mendapatkan insight untuk menentukan kombinasi produk populer, mengungkapkan titik keluar umum dalam proses checkout, dan menyoroti kampanye pemasaran yang berhasil mendorong traffic ke halaman landing tertentu.
Manfaat
Solusi ini menawarkan alur kerja yang efisien dengan keunggulan berikut:
- Integrasi BigQuery: gunakan BigQuery untuk menyimpan dan memproses set data besar (seperti data Google Analytics dalam tutorial ini). Hal 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.
- Pengurangan biaya dan waktu: hemat waktu dan resource dengan menggunakan model bahasa Gemma open source, yang telah dilatih sebelumnya, sehingga tidak perlu membuat model kustom dari awal.
Tujuan
Dalam tutorial ini, Anda akan mempelajari cara:
- Men-deploy model dan mengeksposnya: membuat file YAML layanan untuk menentukan load balancer internal guna mengakses model Gemma.
- Membuat fungsi jarak jauh BigQuery: menjalankan 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 mengaktifkan 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 .
bqJalankan cuplikan kode yang disediakan di Notebook Colab Enterprise untuk:- Membuat kueri data Google Analytics dari BigQuery menggunakan SQL.
- Menerapkan fungsi jarak jauh ke data untuk menghasilkan insight dari model Gemma.
- Menampilkan hasilnya.
Arsitektur
Diagram arsitektur berikut menunjukkan komponen yang terlibat dan cara interaksinya:
- Gunakan notebook Colab Enterprise untuk menjalankan kode Python Anda. Dengan Python, Anda dapat menggunakan library bigframes untuk menyederhanakan interaksi SQL.
- BigQuery berfungsi sebagai mesin pemrosesan big data Anda, yang memungkinkan 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 akan menggunakan komponen yang dapat ditagih sebagai berikut Google Cloud:
- 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, baca bagian Pembersihan.
Sebelum memulai
Pastikan Anda menyelesaikan prasyarat berikut:
Pilih atau buat project
Anda dapat menggunakan project yang ada, atau membuat project baru untuk tutorial ini.
- Login keakun Anda. Google Cloud 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Mengaktifkan API
Aktifkan Artifact Registry, Compute Engine, GKE, Kredensial Akun Layanan IAM, Cloud Functions, Cloud Build, Cloud Run Admin, Cloud Logging, Akses VPC Serverless, BigQuery, Dataform, Vertex AI API.
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan peran IAM Service Usage Admin
(roles/serviceusage.serviceUsageAdmin),
yang berisi izin serviceusage.services.enable. Pelajari cara memberikan
peran.
Menyiapkan Cloud Shell
Dalam tutorial ini, Anda menggunakan Cloud Shell untuk
menjalankan gcloud dan kubectl perintah. 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, aktifkan Cloud Shell. Google Cloud
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.
Berikan peran ke akun pengguna Anda. Jalankan perintah berikut satu kali untuk setiap peran IAM berikut:
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
Ganti kode berikut:
PROJECT_ID: Project ID Anda.USER_IDENTIFIER: ID untuk akun pengguna Anda. Misalnya,myemail@example.com.ROLE: Peran IAM yang Anda berikan ke akun pengguna Anda.
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_IDdengan project ID Anda. - Ganti
PROJECT_NUMBERdengan nomor project Anda untuk membuat domain akun layanan default Compute Engine untuk project Anda. Misalnya,123456789012-compute@developer.gserviceaccount.com. - Ganti
ROLEdengan setiap peran individual.
Menyajikan model Gemma
Buka tutorial Menyajikan model terbuka Gemma menggunakan GPU di GKE dengan Hugging Face TGI dan ikuti petunjuk yang dimulai 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 Default VPC.
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 Anda menetapkan opsi BigQuery DataFrames
saat membuat fungsi jarak jauh, Anda menentukan US sebagai
lokasi untuk set data Anda, 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 ini untuk membuat load balancer internal di cluster GKE Anda:
Buat manifes
tgi-2b-lb-service.yamlberikut: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: 8000Buka terminal Cloud Shell baru dan jalankan perintah berikut untuk menerapkan manifes:
kubectl apply -f tgi-2b-lb-service.yamlDapatkan 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 belakang load balancer.
Membuat 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 membuat konektor dengan subnet baru dan khusus 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 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 menggunakan notebook Colab Enterprise untuk menjalankan semua kode Anda dalam menentukan fungsi jarak jauh BigQuery dan melakukan analisis.
Untuk membuat notebook Colab Enterprise menggunakan Google Cloud konsol:
Di Google Cloud konsol, buka halaman Notebooks Colab Enterprise:
Di menu Region, pilih
us-central1. Ini adalah region yang sama tempat Anda membuat semua layanan Anda dalam tutorial ini.Di samping Files, klik Create a notebook.
Notebook baru Anda akan muncul di tab My notebooks.
Untuk menjalankan kode di notebook baru, sisipkan sel kode baru di notebook Anda untuk setiap perintah atau cuplikan kode yang ingin Anda jalankan.
Membuat fungsi jarak jauh BigQuery
Salah satu cara Anda dapat 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 mengambil data Google Analytics sebagai input, membuat perintah, dan mengirimkannya ke model Gemma Anda untuk dianalisis.
Di notebook Colab Enterprise yang Anda buat:
- Klik + Code 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( dataset="ga_demo", name="ga_explain_example", bigquery_connection="bigframes-rf-conn", reuse=True, packages=["requests"], cloud_function_vpc_connector=VPC_CONNECTOR_NAME, cloud_function_service_account="default", ) def process_incoming(data: str) -> str: 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 Anda menggunakan fungsi jarak jauh process_incoming dengan salah satu dari dua cara berikut:
- menggunakan BigQuery DataFrames
- menggunakan alat command line
bquntuk menjalankan kueri langsung di SQL.
Menggunakan BigQuery DataFrames
Untuk menjalankan fungsi jarak jauh menggunakan BigQuery DataFrames di notebook Colab Enterprise yang Anda buat:
- Klik + Code untuk menyisipkan sel kode baru.
- Salin kode berikut di sel kode baru, lalu klik Run cell.
# 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 hasil contoh kueri:
| user_pseudo_id | string_value | event_timestamp | reverse_event_number | ga_history | results | axis |
|---|---|---|---|---|---|---|
| 0 | 2342103247.0307162928 | https://shop.googlemerchandisestore.com/Google... | 1612096237169825 | 2 | {"user_pseudo_id":"2342103247.0307162928","str... | {"generated_text":"\n 'The following are... |
| 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 + Code untuk menyisipkan sel kode baru.
Salin kode berikut di sel kode baru, dan ganti
PROJECT_IDdengan 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 hasil contoh kueri:
| user_pseudo_id | string_value | event_timestamp | reverse_event_number | result |
|---|---|---|---|---|
| 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 \nImportant Considerations:\n\n* Data Interpretation: You can't definitively say the"} |
| 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 dikenakan biaya pada Google Cloud akun Anda untuk resource yang digunakan dalam tutorial ini, hapus setiap resource.
- Hapus notebook Colab Enterprise Anda.
- Hapus runtime Colab Enterprise Anda.
- Hapus fungsi BigQuery Anda.
Pastikan Akun Layanan Anda memiliki izin
bigquery.routines.delete. Untuk mengetahui informasi selengkapnya, lihat Izin BigQuery. - Hapus koneksi eksternal BigQuery Anda.
- Hapus fungsi Cloud Run Anda.
- Hapus cluster GKE Anda.
- Hapus konektor VPC Anda.
Langkah berikutnya
- Coba codelab praktik 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.