Tutorial ini menunjukkan cara menyesuaikan model bahasa besar (google/gemma-4-31b-it) Gemma 4 31B pada cluster Autopilot Google Kubernetes Engine (GKE) multi-host dan multi-GPU di Google Cloud. Cluster
ini menggunakan dua instance virtual machine (VM) A4 (a4-highgpu-8g) dengan total 16 GPU NVIDIA B200.
Tiga proses utama yang dijelaskan dalam tutorial ini adalah sebagai berikut:
- Deploy cluster GKE multi-host dalam mode Autopilot.
- Bangun image container kustom dengan dependensi penyesuaian yang diperlukan menggunakan Cloud Build.
- Mengorkestrasi workload penyesuaian multi-host terdistribusi di semua 16 GPU dengan menggunakan JobSet Kubernetes dan library Hugging Face Accelerate dengan Fully Sharded Data Parallel v2 (FSDP v2), yang mendorong titik pemeriksaan ke Hugging Face Hub.
Tutorial ini ditujukan untuk engineer, peneliti, administrator, dan operator platform machine learning (ML), serta spesialis data dan AI yang men-deploy cluster GKE di Google Cloud untuk menyesuaikan LLM di beberapa host.
Tujuan
Akses model Gemma 4 menggunakan Hugging Face.
Siapkan lingkungan Anda.
Buat dan deploy cluster GKE A4 multi-host.
Lakukan penyesuaian model Gemma 4 31B di 16 GPU menggunakan Kubernetes
JobSetdan Hugging Face Accelerate dengan FSDP v2.Pantau tugas Anda.
Lihat bobot adaptor yang di-fine-tune di Hugging Face Hub.
Jalankan pembersihan.
Biaya
Dalam dokumen ini, Anda akan menggunakan komponen Google Cloudyang dapat ditagih berikut:
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Sebelum memulai
Untuk mendapatkan izin yang Anda perlukan untuk menyelesaikan tutorial ini, minta administrator Anda untuk memberi Anda peran IAM berikut di project Anda:
- Kubernetes Engine Admin (
roles/container.admin) - Compute Admin (
roles/compute.admin) - Storage Admin (
roles/storage.admin) - Administrator Artifact Registry (
roles/artifactregistry.admin) - Editor Cloud Build (
roles/cloudbuild.builds.editor) - Service Account User (
roles/iam.serviceAccountUser) - Service Account Admin (
roles/iam.serviceAccountAdmin) - Project IAM Admin (
roles/resourcemanager.projectIamAdmin) - Service Usage Admin (
roles/serviceusage.serviceUsageAdmin)
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Aktifkan API yang diperlukan, jika ada yang belum diaktifkan:
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan izin
serviceusage.services.enable. Jika Anda membuat project, kemungkinan Anda sudah memiliki izin ini melalui peran Pemilik (roles/owner). Jika tidak, Anda bisa mendapatkan izin ini melalui peran Admin Penggunaan Layanan (roles/serviceusage.serviceUsageAdmin). Pelajari cara memberikan peran.gcloud services enable compute.googleapis.com
container.googleapis.com artifactregistry.googleapis.com cloudbuild.googleapis.com logging.googleapis.com cloudresourcemanager.googleapis.com servicenetworking.googleapis.com Aktifkan akun layanan Compute Engine default untuk projectGoogle Cloud Anda:
export PROJECT_NUMBER="$(gcloud projects describe "YOUR_PROJECT_ID" --format "value(project_number)")" gcloud iam service-accounts enable "${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \ --project=YOUR_PROJECT_IDBerikan peran IAM dengan hak istimewa terendah yang diperlukan akun layanan Compute Engine default untuk membuat image container dan menjalankan workload penyesuaian:
ROLES=( "roles/artifactregistry.writer" "roles/cloudbuild.builds.builder" "roles/logging.logWriter" "roles/monitoring.metricWriter" "roles/monitoring.viewer" "roles/stackdriver.resourceMetadata.writer" "roles/storage.objectViewer" ) for role in "${ROLES[@]}"; do gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \ --member="serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \ --role="${role}" 1>/dev/null done unset ROLESPastikan peran diberikan ke akun layanan default Compute Engine:
echo "Displaying roles for ${PROJECT_NUMBER}-compute@developer.gserviceaccount.com:" gcloud projects get-iam-policy YOUR_PROJECT_ID \ --flatten="bindings[].members" \ --filter="bindings.members:serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \ --format="table(bindings.role)"Buat kredensial autentikasi lokal untuk akun pengguna Anda:
gcloud auth application-default login
Aktifkan Login OS untuk project Anda:
gcloud compute project-info add-metadata \ --metadata=enable-oslogin=TRUE \ --project=YOUR_PROJECT_ID
Mengakses Gemma 4 menggunakan Hugging Face
Untuk menggunakan Hugging Face guna mengakses Gemma 4, selesaikan langkah-langkah berikut:
- Login ke Hugging Face dan setujui perjanjian lisensi Gemma 4.
- Buat token akses
writeHugging Face.
Klik Profil Anda > Setelan > Token akses > +Buat token baru. - Salin dan simpan nilai token akses
write. Anda menggunakan token ini untuk mendownload model dasar dan mengirimkan checkpoint adapter yang telah disesuaikan ke Hugging Face Hub sebelum GKE memperkecil skala node GPU.
Menyiapkan lingkungan Anda
Untuk menyiapkan lingkungan Anda, tetapkan variabel lingkungan berikut:
Ganti kode berikut:
YOUR_PROJECT_ID: ID Google Cloud project tempat Anda ingin membuat cluster GKE.
YOUR_CLUSTER_NAME: nama cluster GKE yang akan dibuat.
YOUR_REGION: region tempat Anda ingin membuat cluster GKE. Anda hanya dapat membuat cluster di region tempat reservasi Anda berada.
YOUR_RESERVATION_NAME: ID untuk kapasitas yang dipesan.
YOUR_HF_TOKEN: token akses Hugging Face
writeyang Anda buat di bagian sebelumnya.YOUR_ARTIFACT_REGISTRY_LOCATION: Google Cloud region (misalnya,
us-central1) tempat Anda ingin membuat repositori Artifact Registry. Untuk meminimalkan latensi penarikan gambar, gunakan region yang sama dengan yang Anda tentukan untuk YOUR_REGION.YOUR_NUMBER_OF_NODES: jumlah node VM A4 dalam tugas penyesuaian Anda. Untuk tutorial multi-host ini dengan 16 GPU NVIDIA B200 di dua instance
a4-highgpu-8g, tetapkan nilai ini ke2.
Membuat cluster GKE multi-host dalam mode Autopilot
Buat cluster GKE multi-host dalam mode Autopilot:
Mungkin perlu waktu beberapa menit untuk menyelesaikan pembuatan cluster GKE. Untuk memverifikasi bahwa Google Cloud telah selesai membuat cluster Anda, buka Kubernetes clusters di konsol Google Cloud .
Mengonfigurasi kubectl untuk berkomunikasi dengan cluster GKE Anda
Konfigurasi kubectl untuk berkomunikasi dengan cluster GKE Anda:
Buat secret Kubernetes untuk kredensial Hugging Face
Buat secret Kubernetes untuk menyimpan token Hugging Face Anda:
Menyiapkan workload Anda
Untuk menyiapkan workload, Anda perlu melakukan hal berikut:
Membuat skrip beban kerja
Untuk membuat file dan skrip konfigurasi yang digunakan workload penyesuaian, selesaikan langkah-langkah berikut:
Buat direktori untuk skrip beban kerja. Gunakan direktori ini sebagai direktori kerja Anda.
Buat file
cloudbuild.yamluntuk membangun image container beban kerja Anda dengan Cloud Build dan kirimkan ke Artifact Registry:Buat file
Dockerfileuntuk menentukan lingkungan dan menginstal dependensi yang diperlukan untuk menyelesaikan tugas penyesuaian:Buat file
accel_fsdp_gemma4_config.yaml. Konfigurasi ini mengarahkan Hugging Face Accelerate untuk membagiGemma4TextDecoderLayerdi 16 GPU pada dua host dengan menggunakan FSDP v2:Buat manifes
finetune.yamlKubernetesJobSet:Buat skrip supervised fine-tuning
finetune.py:
Menggunakan Docker dan Cloud Build untuk membuat container penyesuaian
Buat repositori Docker Artifact Registry:
Instal definisi resource kustom (CRD)
JobSetyang diperlukan untuk mengatur workload multi-host:Di direktori
llm-finetuning-gemmayang Anda buat pada langkah sebelumnya, kirim build container ke Cloud Build:Ekspor URL image container multi-host. Anda akan menggunakannya di langkah selanjutnya dalam tutorial ini, saat men-deploy manifes
JobSet:
Mulai workload penyesuaian Anda
Untuk men-deploy dan memantau workload penyesuaian terdistribusi, selesaikan langkah-langkah berikut:
Ganti variabel lingkungan ke dalam manifes penyesuaian untuk membuat tugas penyesuaian:
Karena cluster Anda berjalan dalam mode GKE Autopilot, mungkin perlu waktu beberapa menit untuk menyediakan dua node A4 yang mendukung GPU dan menarik image container.
Pantau pod pekerja hingga kedua pod bertransisi ke status
Running:Setelah pod pekerja bertransisi ke
Running, streaming log pelatihan:
Memantau workload Anda
Anda dapat memantau pemakaian GPU di seluruh cluster GKE untuk memverifikasi bahwa semua 16 GPU di kedua host A4 secara aktif memproses langkah-langkah pelatihan. Buat dan buka link kemampuan pengamatan di browser Anda:
Saat Anda memantau workload, perhatikan perilaku berikut:
- Pemanfaatan GPU: Untuk tugas penyesuaian terdistribusi yang berjalan lancar, Anda dapat melihat pemanfaatan GPU di semua 16 GPU NVIDIA B200 meningkat dan stabil di sekitar 95%–100% selama langkah-langkah pelatihan.
- Durasi tugas: Di dua node
a4-highgpu-8g(16 GPU B200), tugas penyesuaian 3-epoch memerlukan waktu sekitar 2 setengah jam untuk diselesaikan.
Melihat bobot adaptor yang di-fine-tune
Setelah pelatihan selesai, lihat bobot dan titik pemeriksaan adaptor LoRA yang di-fine-tune di Hugging Face Hub di https://huggingface.co/YOUR_HF_USERNAME/gemma-31b-text-to-sql.
Pembersihan
Agar tidak menimbulkan biaya tambahan, hapus resource yang dibuat selama tutorial ini.
Menghapus resource
Hapus penyesuaian
JobSet:Hapus cluster GKE Anda:
Hapus repositori Artifact Registry Anda: