Menganalisis data di GKE menggunakan BigQuery, Cloud Run, dan Gemma

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:

  1. Men-deploy model dan mengeksposnya: membuat file YAML layanan untuk menentukan load balancer internal guna mengakses model Gemma.
  2. 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.
  3. 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.
  4. 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:
    • 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:

Arsitektur analisis data

  • 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:

Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga.

Pengguna baru mungkin memenuhi syarat untuk mendapatkan uji coba gratis. Google Cloud

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.

  1. 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.
  2. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. 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.

Aktifkan API

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

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.

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_ID dengan project ID Anda.
  • Ganti PROJECT_NUMBER dengan nomor project Anda untuk membuat domain akun layanan default Compute Engine untuk project Anda. Misalnya, 123456789012-compute@developer.gserviceaccount.com.
  • Ganti ROLE dengan 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:

  1. 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
    
  2. Buka terminal Cloud Shell baru dan jalankan perintah berikut untuk menerapkan manifes:

    kubectl apply -f tgi-2b-lb-service.yaml
    
  3. 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 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:

  1. Di Google Cloud konsol, buka halaman Notebooks Colab Enterprise:

    Buka Notebooks

  2. Di menu Region, pilih us-central1. Ini adalah region yang sama tempat Anda membuat semua layanan Anda dalam tutorial ini.

  3. 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:

  1. Klik + Code untuk menyisipkan sel kode baru.
  2. 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:

    Dalam tutorial ini, lokasi set data BigQuery Anda ditetapkan ke US, yang secara default ditetapkan ke region us-central1.

  3. 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 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:

  1. Klik + Code untuk menyisipkan sel kode baru.
  2. 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:

  1. Klik + Code untuk menyisipkan sel kode baru.
  2. 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}
    
  3. 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.

  1. Hapus notebook Colab Enterprise Anda.
  2. Hapus runtime Colab Enterprise Anda.
  3. Hapus fungsi BigQuery Anda. Pastikan Akun Layanan Anda memiliki izin bigquery.routines.delete. Untuk mengetahui informasi selengkapnya, lihat Izin BigQuery.
  4. Hapus koneksi eksternal BigQuery Anda.
  5. Hapus fungsi Cloud Run Anda.
  6. Hapus cluster GKE Anda.
  7. Hapus konektor VPC Anda.

Langkah berikutnya