Menskalakan Pemrosesan Data Terdistribusi dengan GKE untuk membangun Grafik Pengetahuan di BigQuery

1. Pengantar

Dalam codelab ini, Anda akan membangun pipeline akuisisi pengetahuan terdistribusi untuk "Petverse". Anda akan memproses aset multimedia tidak terstruktur (Audio, Video, Gambar, Teks/CSV) dari bucket Cloud Storage, mengekstrak informasi penting tentang hewan peliharaan (makanan favorit, hobi), dan membuat grafik pengetahuan. Anda akan menskalakan pemrosesan file multimedia menggunakan pemrosesan multi-modalitas Gemini di Google Kubernetes Engine (GKE). Terakhir, Anda akan menyimpan data ini di BigQuery dan menggunakan fitur Grafik Properti BigQuery yang baru untuk menganalisis hubungan.

Kita akan menggunakan kecanggihan Google Kubernetes Engine untuk mendemonstrasikan pemrosesan data bervolume tinggi secara paralel.

Mengapa pustaka pengetahuan?

Pustaka pengetahuan lebih cocok daripada database relasional tradisional untuk merepresentasikan dan menganalisis hubungan yang kompleks antar-entitas.

Kita akan menggunakan Gemini 2.5 Flash untuk menganalisis file gambar, audio, dan video serta menetapkan fakta tentang berbagai hewan peliharaan.

Arsitektur GKE + BigQuery

Yang akan Anda lakukan

  • Bangun dan deploy tugas pemrosesan data terdistribusi di GKE.
  • Gunakan Gemini untuk mengekstrak entity dan hubungan dari file multimedia.
  • Simpan data grafik pengetahuan di BigQuery.
  • Buat dan kueri Grafik Properti di BigQuery menggunakan Graph Query Language (GQL).

Yang Anda butuhkan

  • Browser web seperti Chrome
  • Project Google Cloud yang mengaktifkan penagihan
  • Izin dalam project untuk membuat resource dan mengubah kebijakan IAM

Codelab ini ditujukan bagi developer dari semua level, termasuk para pemula.

Perkiraan Durasi: 45 menit

Biaya: Resource yang dibuat dalam codelab ini seharusnya berbiaya kurang dari $5.

2. Sebelum memulai

Membuat Project Google Cloud

  1. Buka Konsol Google Cloud: https://console.cloud.google.com, lalu pilih atau buat project Google Cloud.
  2. ⚠️ Catat Project ID. Anda akan menggunakannya untuk beberapa perintah dalam lab ini.

Pilih project dan catat ID-nya

Mulai Cloud Shell

  1. Buka Cloud Shell di tab baru: https://shell.cloud.google.com/.
  2. Jika diminta, klik Authorize
  3. Ganti PROJECT_ID dan tempel perintah berikut ke terminal:
export PROJECT_ID="YOUR_PROJECT_ID"
gcloud config set project $PROJECT_ID

Konfigurasi project

📝 Catatan Project Anda akan ditampilkan dengan warna kuning di command line. Jika sesi Anda dimulai ulang, pastikan Anda menjalankan kembali perintah di atas untuk menyetel project ID.

Mengaktifkan API

Jalankan perintah ini untuk mengaktifkan semua API yang diperlukan:

gcloud services enable \
  aiplatform.googleapis.com \
  bigquery.googleapis.com \
  artifactregistry.googleapis.com \
  container.googleapis.com \
  cloudbuild.googleapis.com \
  pubsub.googleapis.com

Meng-clone repositori

Jalankan perintah berikut untuk meng-clone repositori.

cd ~/
git clone --filter=blob:none --no-checkout https://github.com/GoogleCloudPlatform/devrel-demos.git
cd ~/devrel-demos
git sparse-checkout init --cone
git sparse-checkout set codelabs/gke-knowledge-graph
git checkout main
cd codelabs/gke-knowledge-graph/

Jalankan skrip penyiapan

Skrip ini mengotomatiskan konfigurasi backend dengan:

  • Membuat image container dan repositori Artifact Registry
  • Membuat set data BigQuery
  • Membuat Koneksi BigQuery untuk menjalankan fungsi AI Gemini dari SQL

Jalankan perintah berikut di terminal.

./scripts/setup.sh

Jika skrip meminta detail konfigurasi, gunakan nilai berikut:

  • Project ID: Gunakan ID yang Anda buat di langkah sebelumnya.
  • Region: us-central1

⚠️ Penting Skrip akan memerlukan waktu beberapa menit untuk diselesaikan. Biarkan jendela terminal ini tetap terbuka untuk menyelesaikan di latar belakang. Untuk melanjutkan ke langkah berikutnya, buka tab atau jendela terminal baru untuk menjalankan perintah berikutnya.

siapkan

3. Menyiapkan Data Agent Kit

  1. Aktifkan Editor Cloud Shell dengan ikon pensil di pojok kanan atas.
  2. Di Cloud Shell Editor, klik ikon Extensions di sidebar kiri.
  3. Telusuri Google Cloud Data Agent Kit, lalu klik Install jika belum diinstal.

Menginstal Data Agent Kit

  1. Login ke Akun Google Anda dengan ekstensi.
  2. Di Ringkasan Konfigurasi, masukkan project ID Anda dan us-central1 sebagai region.

configure_dak

  1. Klik Configure MCP Servers. Anda tidak perlu melakukan perubahan apa pun pada jendela ini, cukup klik Mulai.
  2. Muat ulang jendela jika diminta. Anda dapat menutup tab Panduan Memulai Cepat untuk saat ini.

Menyiapkan tabel di BigQuery

  1. Di sidebar, kembali ke explorer. Jika folder beranda Anda (misalnya, /home/your_user_name/) belum terbuka, klik Open Folder, lalu pilih.

Buka Home

  1. Di jendela explorer, temukan folder yang Anda clone dari repositori (devrel-demos). Di bagian codelabs/gke-knowledge-graph/scripts, Anda akan menemukan create_tables.sql. Buka file tersebut.
  2. Di kanan atas, klik Buka Setelan Kueri.
  3. Pilih BigQuery. Simpan dan Tutup.
  4. Klik Run.

Anda akan melihat dua pernyataan berhasil dieksekusi. Sekarang Anda telah membuat tabel untuk menyimpan node dan tepi untuk grafik pengetahuan Anda.

Anda dapat menutup tab create_tables.sql dan konsol hasil.

Jalankan

4. Menginisialisasi Cluster GKE

Kita akan menggunakan GKE Autopilot untuk menjalankan tugas pemrosesan data. Autopilot adalah praktik terbaik yang direkomendasikan karena mengelola infrastruktur cluster untuk Anda.

Saat ini, skrip penyiapan seharusnya sudah selesai. Anda akan melihat pesan berhasil: 🎉🦄 Setup successfully finished! 🎉🦄.

Tempel perintah ini di terminal untuk membuat cluster:

source scripts/setenv.sh
gcloud container clusters create-auto petverse-cluster \
    --region=$REGION

🕓 Proses ini akan memakan waktu sekitar 5 menit.

Dapatkan kredensial untuk berinteraksi dengan cluster:

source scripts/setenv.sh
gcloud container clusters get-credentials petverse-cluster --region $REGION

Anda akan melihat output ini:

Fetching cluster endpoint and auth data.
kubeconfig entry generated for petverse-cluster.

5. Mengonfigurasi Workload Identity

Workload Identity Federation untuk GKE (menggunakan Akses Langsung ke Resource) memungkinkan workload GKE Anda mengakses layanan Google Cloud dengan aman tanpa perlu mengelola kunci akun layanan.

Jalankan deploy.sh untuk:

  • Membuat akun layanan Kubernetes
  • Memberikan peran IAM yang diperlukan langsung kepada akun utama Akun Layanan Kubernetes
  • Ikat akun layanan IAM ke akun layanan Kubernetes
  • Anotasikan akun layanan Kubernetes untuk menyelesaikan penautan
source scripts/setenv.sh
./scripts/deploy.sh

6. Men-deploy Tugas Pemrosesan yang Tidak Terikat

Pada langkah ini, Anda akan men-deploy enqueuer (Produser) dan mesin pemrosesan (Pekerja) ke GKE.

Arsitektur baru kami yang tidak terikat menggunakan Google Cloud Pub/Sub untuk memproses aset secara asinkron:

  • Producer memindai GCS dan mengantrekan semua jalur file ke antrean Pub/Sub.
  • Kumpulan Pekerja akan di-scale up di GKE, menarik tugas secara paralel secara dinamis, memprosesnya melalui Gemini, dan menulis ke BigQuery.

Skrip setup.sh telah membangun dan mengirim image container Producer dan Worker, mengantrekan topik Pub/Sub, serta membuat manifes deployment GKE Anda secara dinamis: job-producer.yaml dan job-worker.yaml.

  1. Terapkan Tugas Produser untuk memindai bucket penyimpanan dan mengantrekan semua aset:
kubectl apply -f job-producer.yaml

Tugas ini berjalan dan selesai dengan cepat karena hanya mengantrekan metadata.

  1. Deploy Tugas Pekerja yang dikonfigurasi untuk menjalankan 6 pekerja paralel untuk menguras antrean:
kubectl apply -f job-worker.yaml

GKE Autopilot akan otomatis mendeteksi pod yang tertunda, menskalakan node komputasi secara dinamis, dan menjalankan pekerja secara paralel untuk memproses audio, video, gambar, dan CSV yang diantrekan.

7. Verifikasi Hasil

  1. Periksa status tugas Anda:
kubectl get jobs

Tunggu hingga petverse-producer-job dan petverse-worker-job menunjukkan penyelesaian yang berhasil.

🕓 Proses ini akan memakan waktu sekitar 10 menit. Anda dapat melihat progresnya dengan perintah di bawah.

  1. Periksa log Produser untuk memverifikasi bahwa Produser berhasil mengantrekan file:
cd ~/devrel-demos/codelabs/gke-knowledge-graph
source scripts/setenv.sh
kubectl logs -l app=petverse-producer --tail=50
  1. Tonton worker paralel Anda memproses file dari antrean:
kubectl logs -l app=petverse-worker --tail=50

(Worker memiliki waktu tunggu tidak aktif 60 detik dan akan otomatis dimatikan serta dibersihkan saat antrean Pub/Sub kosong).

Verifikasi data di BigQuery.

  1. Buka BigQuery Studio. Anda akan melihat dua tabel yang dibuat: petverse_kg.Nodes dan petverse_kg.Edges.

Menjelajahi tabel

  1. Untuk melihat isi tabel, klik dua kali nama tabel, lalu klik Pratinjau.

Melihat konten

Anda akan melihat tabel Nodes berisi informasi tentang entitas yang diambil oleh Gemini dalam audio, video, dan gambar. Tabel Edges berisi hubungan di antara keduanya. Misalnya, jika Anda mendengarkan audio kucing bernama SQL, dia suka bermain dengan tali sepatu dan menikmati ikan kering beku.

  1. Gunakan tombol + untuk membuat kueri baru. Tempelkan pernyataan berikut, lalu klik Run:
SELECT n.name, n.entity_id, e.relationship, e.target_id
FROM 
  `petverse_kg.Nodes` n
JOIN 
  `petverse_kg.Edges` e
  ON n.entity_id = e.source_id
WHERE n.name = 'SQL'
  1. Gunakan tombol + untuk membuat kueri baru. Tempelkan pernyataan berikut, lalu klik Run:
SELECT name, entity_type, pet_bio,
AI.SIMILARITY('Pets who like to relax', pet_bio, endpoint => 'text-embedding-005') as similarity_score
FROM `petverse_kg.Nodes`
WHERE name IS NOT NULL
ORDER BY similarity_score DESC
LIMIT 5

Anda akan melihat node untuk hewan peliharaan yang suka bersantai. Kueri ini melakukan penelusuran semantik menggunakan fungsi AI AI.SIMILARITY untuk menemukan hewan peliharaan yang bionya paling mirip dengan teks kueri.

Jalankan Kueri

Membangun Grafik Properti

Setelah memiliki node dan tepi di BigQuery, kita dapat membuat Grafik Properti untuk mengkueri hubungan dengan mudah.

Buat Grafik

  1. Timpa kueri sebelumnya dan jalankan DDL berikut untuk membuat grafik properti:
CREATE OR REPLACE PROPERTY GRAPH `petverse_kg.knowledge_graph`
  NODE TABLES (
    `petverse_kg.Nodes` AS `Nodes`
      KEY (`entity_id`)
        LABEL `Nodes` PROPERTIES (entity_id AS `entity_id`, entity_type AS `entity_type`, name AS `name`, pet_bio AS `pet_bio`, properties AS `properties`, bio_embedding AS `bio_embedding`))

  EDGE TABLES (
    `petverse_kg.Edges` AS `Edges`
      KEY (`source_id`,`target_id`,`relationship`)
        SOURCE KEY (`source_id`)
          REFERENCES `Nodes` (`entity_id`)
        DESTINATION KEY (`target_id`)
          REFERENCES `Nodes` (`entity_id`)
        LABEL `Edges` PROPERTIES (properties AS `properties`));
  1. Klik Buka Grafik. Anda akan melihat visualisasi grafik dengan node yang memiliki tepi ke dirinya sendiri. Hal ini sudah diperkirakan.

Buat Grafik

Membuat Kueri Grafik

  1. Anda dapat menutup semua kueri sebelumnya dan membuka kueri baru yang kosong dengan tombol +.
  2. Gunakan GQL untuk menemukan hewan peliharaan yang terkait dengan hewan peliharaan lain melalui minat yang sama (seperti hobi, makanan favorit, atau mainan). Kueri multi-hop ini mencocokkan dua hewan peliharaan berbeda yang terhubung ke node yang sama:
GRAPH `petverse_kg.knowledge_graph`
MATCH p = (pet1:Nodes)-[e1]->(interest:Nodes)<-[e2]-(pet2:Nodes)
WHERE pet1.entity_id != pet2.entity_id
  AND (LOWER(pet1.entity_type) = 'pet' AND LOWER(pet2.entity_type) = 'pet')
  AND LOWER(interest.entity_type) IN ('hobby', 'action', 'activity', 'food', 'toy')
RETURN TO_JSON(p) as res
LIMIT 100
  1. Anda akan melihat visualisasi grafik. Anda dapat mengklik node untuk melihat properti node dan tepi.

Grafik kueri

🕵️ Petunjuk: Anda dapat menyesuaikan nilai yang ditampilkan oleh node dengan mengklik Beralih ke tampilan skema:

Grafik kueri

  1. Anda dapat menutup semua tab kueri yang terbuka.

8. Memulai percakapan dengan grafik

  1. Di samping tanda +, Anda akan menemukan menu drop-down. Pilih Percakapan.

Percakapan baru

  1. Anda akan diminta untuk mengaktifkan Data Analytics API dengan Gemini. Aktifkan kedua API. Setelah proses ini selesai, muat ulang jendela atau buat percakapan baru untuk melihat agen.
  2. Klik New Agent.
  3. Beri nama agen, misalnya, petverse.
  4. Klik Tambahkan sumber, lalu Grafik.
  5. Pilih knowledge_graph yang Anda buat, lalu klik Tambahkan.

Percakapan baru

Sekarang Anda dapat mengajukan pertanyaan kepada agen dan melihat jawaban serta alasan di baliknya. Berikut beberapa contoh pertanyaan jika Anda memerlukan inspirasi. Model pemikiran mungkin memerlukan waktu lebih lama, tetapi cenderung membuat kueri GQL yang lebih baik. Anda dapat melihat apa yang dibangunnya dengan meluaskan Show Thinking.

  • Temukan hewan peliharaan yang menyukai makanan yang sama, yang berteman dengan hewan peliharaan yang suka tidur siang.
  • Apakah ada hewan peliharaan yang memiliki hobi, makanan favorit, atau mainan yang sama persis? Buat daftar pasangan dan minat bersama mereka.
  • Temukan hewan peliharaan yang memiliki spesies atau ras yang sama, tetapi hobi yang sangat berbeda.

9. Pembersihan

Untuk menghindari biaya berkelanjutan pada akun Google Cloud Anda, hapus resource yang dibuat selama codelab ini.

  1. Hapus cluster GKE:
gcloud container clusters delete petverse-cluster --region $REGION --quiet
  1. Hapus set data BigQuery (tindakan ini akan menghapus semua tabel):
bq rm -r -f -d $PROJECT_ID:petverse_kg
  1. Hapus resource antrean Pub/Sub:
gcloud pubsub subscriptions delete petverse-sub --quiet
gcloud pubsub topics delete petverse-topic --quiet
  1. Hapus repositori Artifact Registry:
gcloud artifacts repositories delete gke-cats-repo --location=$REGION --quiet
  1. Hapus bucket GCS khusus project:
gcloud storage buckets delete gs://$PROJECT_ID-petverse --quiet

10. Selamat

Selamat! Anda telah berhasil membangun pipeline grafik pengetahuan terdistribusi menggunakan GKE dan Gemini, serta membuat kueri menggunakan Grafik Properti BigQuery.

Yang telah Anda pelajari

  • Cara men-deploy tugas terdistribusi di GKE Autopilot.
  • Cara menggunakan Gemini untuk ekstraksi data multimodal.
  • Cara menggunakan sematan otomatis BigQuery.
  • Cara membuat dan membuat kueri Grafik Properti di BigQuery.

Dokumen referensi