Tutorial ini menunjukkan cara menyesuaikan model bahasa besar (LLM) menggunakan Unit Pemrosesan Tensor (TPU) di Google Kubernetes Engine (GKE) dengan JAX. Dengan penyesuaian, Anda dapat mengadaptasi model dasar seperti Gemma 3 ke domain atau tugas tertentu. Proses ini meningkatkan presisi dan akurasi model dengan memperbarui parameternya menggunakan set data khusus Anda sendiri.
Panduan ini adalah titik awal yang baik jika Anda memerlukan kontrol terperinci, penyesuaian, skalabilitas, ketahanan, portabilitas, dan efektivitas biaya Kubernetes terkelola saat melakukan penyesuaian beban kerja AI/ML.
Latar belakang
Dengan menggunakan TPU di GKE dengan Jax untuk menyempurnakan LLM, Anda dapat membangun solusi penyempurnaan yang tangguh dan siap produksi dengan semua manfaat Kubernetes terkelola.
Gemma
Gemma adalah sekumpulan model multimodal AI/ML generatif yang ringan dan tersedia secara terbuka, yang dirilis dengan lisensi terbuka. Model AI ini tersedia untuk dijalankan di aplikasi, hardware, perangkat seluler, atau layanan yang dihosting. Gemma 3 memperkenalkan multimodality, dan mendukung input vision-language dan output teks. Model ini menangani jendela konteks hingga 128.000 token dan mendukung lebih dari 140 bahasa. Gemma 3 juga menawarkan peningkatan kemampuan matematika, penalaran, dan chat, termasuk output terstruktur dan panggilan fungsi.
Anda dapat menggunakan model Gemma untuk pembuatan teks, atau Anda juga dapat menyesuaikan model ini untuk tugas khusus.
Untuk mengetahui informasi selengkapnya, lihat dokumentasi Gemma.
TPU
TPU adalah sirkuit terintegrasi khusus aplikasi (ASIC) yang dikembangkan khusus oleh Google untuk mempercepat model machine learning dan AI yang dibangun menggunakan framework seperti TensorFlow, PyTorch, dan JAX.
Sebelum menggunakan TPU di GKE, sebaiknya selesaikan jalur pembelajaran berikut:
- Pelajari ketersediaan versi TPU saat ini dengan arsitektur sistem Cloud TPU.
- Pelajari TPU di GKE.
JAX
JAX adalah framework machine learning berperforma tinggi yang dirancang untuk digunakan dengan TPU dan GPU. JAX menyediakan API untuk membangun dan melatih model machine learning.
Untuk mempelajari lebih lanjut, lihat repositori JAX.
Tujuan
Tutorial ini membahas langkah-langkah berikut:
- Buat cluster GKE Autopilot atau Standard dengan topologi TPU yang direkomendasikan, berdasarkan karakteristik model. Selama tutorial ini, Anda akan melakukan penyesuaian pada node pool host tunggal.
- Tambahkan data ke bucket Cloud Storage dan pasang ke container melalui Cloud Storage FUSE.
- Deploy Tugas penyesuaian LLM di GKE.
- Pantau Tugas penyesuaian dan lihat log.
Sebelum memulai
- Login ke akun Google Cloud Anda. 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.
Enable the required API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
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.
Enable the required API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Pastikan Anda memiliki peran berikut di project: roles/container.admin,roles/iam.serviceAccountAdmin,roles/storage.admin
Memeriksa peran
-
Di konsol Google Cloud , buka halaman IAM.
Buka IAM - Pilih project.
-
Di kolom Akun utama, temukan semua baris yang mengidentifikasi Anda atau grup yang Anda ikuti. Untuk mengetahui grup mana saja yang Anda ikuti, hubungi administrator Anda.
- Untuk semua baris yang menentukan atau menyertakan Anda, periksa kolom Peran untuk melihat apakah daftar peran menyertakan peran yang diperlukan.
Memberikan peran
-
Di konsol Google Cloud , buka halaman IAM.
Buka IAM - Pilih project.
- Klik Grant access.
-
Di kolom New principals, masukkan ID pengguna Anda. Biasanya, ini adalah alamat email untuk Akun Google.
- Klik Pilih peran, lalu telusuri peran.
- Untuk memberikan peran tambahan, klik Add another role, lalu tambahkan tiap peran tambahan.
- Klik Simpan.
-
- Pastikan Anda memiliki kuota yang cukup untuk chip TPU Trillium (v6e) sebanyak 16 unit. Dalam tutorial ini, Anda menggunakan konfigurasi kumpulan node yang memerlukan 16 chip dan instance on-demand.
- Pastikan Anda memiliki repositori Docker. Jika Anda belum memilikinya, buat repositori standar di Artifact Registry.
Menyiapkan lingkungan
Dalam tutorial ini, Anda akan menggunakan Cloud Shell untuk mengelola resource yang dihosting di Google Cloud. Cloud Shell telah diinstal sebelumnya dengan software yang Anda perlukan untuk tutorial ini, termasuk kubectl dan Google Cloud CLI.
Untuk menyiapkan lingkungan Anda dengan Cloud Shell, ikuti langkah-langkah berikut:
Di konsol Google Cloud , luncurkan sesi Cloud Shell dan klik
Activate Cloud Shell. Tindakan ini akan meluncurkan sesi di panel bawah konsol Google Cloud .
Tetapkan variabel lingkungan default:
gcloud config set project PROJECT_ID gcloud config set billing/quota_project PROJECT_ID export PROJECT_ID=$(gcloud config get project) export CLUSTER_NAME=CLUSTER_NAME export REGION=CONTROL_PLANE_LOCATION export ZONE=ZONE export GCS_BUCKET_NAME=BUCKET_NAMEGanti nilai berikut:
PROJECT_ID: Google Cloud Project ID Anda.CLUSTER_NAME: nama cluster GKE Anda.CONTROL_PLANE_LOCATION: region Compute Engine tempat cluster GKE dan node TPU Anda berada. Region harus berisi zona tempat jenis mesin TPU Trillium (v6e) tersedia.ZONE: zona dalam regionCONTROL_PLANE_LOCATIONyang Anda pilih tempat jenis mesin TPU Trillium (v6e) tersedia. Untuk mencantumkan zona tempat TPU Trillium (v6e) tersedia, jalankan perintah berikut:gcloud compute accelerator-types list --filter="name~ct6e" --format="value(zone)"BUCKET_NAME: nama bucket Cloud Storage yang berisi data pelatihan Anda.
Clone repositori contoh:
git clone https://github.com/GoogleCloudPlatform/kubernetes-engine-samples.git cd kubernetes-engine-samplesBuka direktori kerja:
cd ai-ml/llm-training-jax-tpu-gemma3
Membuat dan mengonfigurasi resource Google Cloud
Di bagian ini, Anda akan membuat dan mengonfigurasi Google Cloud resource.
Membuat cluster GKE
Anda dapat menyetel LLM di TPU dalam cluster GKE Autopilot atau Standard. Sebaiknya gunakan cluster Autopilot untuk mendapatkan pengalaman Kubernetes yang terkelola sepenuhnya. Untuk memilih mode operasi GKE yang paling sesuai untuk workload Anda, lihat Memilih mode operasi GKE.
Autopilot
Buat cluster Autopilot GKE yang menggunakan Workload Identity Federation for GKE dan telah mengaktifkan Cloud Storage FUSE.
gcloud container clusters create-auto ${CLUSTER_NAME} \
--location=${REGION}
Pembuatan cluster mungkin memerlukan waktu beberapa menit.
Standar
Buat cluster Standar GKE regional yang menggunakan Workload Identity Federation for GKE dan telah mengaktifkan Cloud Storage FUSE.
gcloud container clusters create ${CLUSTER_NAME} \ --enable-ip-alias \ --addons GcsFuseCsiDriver \ --machine-type=n2-standard-4 \ --num-nodes=2 \ --workload-pool=${PROJECT_ID}.svc.id.goog \ --location=${REGION}Pembuatan cluster mungkin memerlukan waktu beberapa menit.
Buat node pool host tunggal:
gcloud container node-pools create jax-tpu-nodepool \ --cluster=${CLUSTER_NAME} \ --machine-type=ct6e-standard-1t \ --num-nodes=1 \ --location=${REGION} \ --node-locations=${ZONE} \ --workload-metadata=GKE_METADATA
GKE membuat node pool TPU Trillium dengan topologi 1x1 dan satu node. Flag --workload-metadata=GKE_METADATA mengonfigurasi node pool untuk menggunakan server metadata GKE.
Instal JobSet
Konfigurasi
kubectluntuk berkomunikasi dengan cluster Anda:gcloud container clusters get-credentials ${CLUSTER_NAME} --location=${REGION}Instal JobSet versi terbaru yang dirilis:
kubectl apply --server-side -f https://github.com/kubernetes-sigs/jobset/releases/download/JOBSET_VERSION/manifests.yamlGanti
JOBSET_VERSIONdengan versi JobSet yang dirilis terbaru. Misalnya,v0.11.0.Verifikasi penginstalan JobSet:
kubectl get pods -n jobset-systemOutputnya mirip dengan hal berikut ini:
NAME READY STATUS RESTARTS AGE jobset-controller-manager-6c56668494-l4dhc 1/1 Running 0 4m45sAnda mungkin perlu menambahkan lebih banyak node jika JobSet menunggu resource.
Mengonfigurasi Cloud Storage FUSE
Untuk menyesuaikan LLM, Anda perlu memberikan data pelatihan. Dalam tutorial ini, Anda akan menggunakan set data TinyStories dari Hugging Face. Set data ini berisi cerita pendek yang dibuat secara sintetis oleh GPT-3.5 dan GPT-4, yang menggunakan kosakata terbatas.
Bagian ini membahas langkah-langkah untuk mengonfigurasi Cloud Storage FUSE agar dapat membaca data dari bucket Cloud Storage.
Download set data:
wget https://huggingface.co/datasets/roneneldan/TinyStories/resolve/main/TinyStories-train.txt?download=true -O TinyStories-train.txtUpload data ke bucket Cloud Storage baru:
gcloud storage buckets create gs://${GCS_BUCKET_NAME} \ --location=${REGION} \ --enable-hierarchical-namespace \ --uniform-bucket-level-access gcloud storage cp TinyStories-train.txt gs://${GCS_BUCKET_NAME}Agar workload Anda dapat membaca data melalui Cloud Storage FUSE, buat akun layanan Kubernetes (KSA) dan tambahkan izin yang diperlukan. Jalankan skrip
permissionsetup.sh:Setelah Anda menjalankan skrip ini, resource berikut akan dikonfigurasi di projectGoogle Cloud dan cluster GKE Anda:
- Akun layanan IAM baru bernama
gcs-fuse-sadibuat di project Anda. - Google Cloud Akun Layanan (GSA) (
gcs-fuse-sa) yang dibuat diberi peranroles/storage.objectViewerdi bucket Cloud Storage yang ditentukan oleh${GCS_BUCKET_NAME}. Izin ini memungkinkan GSA membaca objek dari bucket. - KSA baru bernama
jaxserviceaccountdibuat di namespacedefaultdalam cluster GKE Anda. - Kebijakan IAM GSA diperbarui untuk memberikan peran
roles/iam.workloadIdentityUserkepada KSA. Izin ini memungkinkan KSA meniru identitas GSA. KSA diberi anotasi untuk menautkannya ke GSA. Anotasi ini memberi tahu GKE GSA mana yang harus di-impersonate oleh KSA menggunakan Workload Identity.
Setiap Pod yang berjalan di namespace
defaultcluster GKE Anda yang menggunakan akun layananjaxserviceaccountkini akan dapat melakukan autentikasi sebagai GSAgcs-fuse-sa. Pod ini akan memiliki akses baca ke objek yang disimpan di bucketgs://${GCS_BUCKET_NAME}, yang penting agar Tugas penyesuaian dapat mengakses set data menggunakan Cloud Storage FUSE.
- Akun layanan IAM baru bernama
Buat skrip penyesuaian
Di bagian ini, Anda akan mempelajari skrip pelatihan yang melakukan operasi penyesuaian pada model Gemma 3. Skrip ini menggunakan Gemma3Tokenizer.
Tinjau skrip penyesuaian Gemma3LLMTrain.py berikut:
Dalam skrip ini, hal berikut berlaku:
Gemma3Tokenizermengonversi data teks menjadi token yang dapat diproses oleh model.- Fungsi
load_and_preprocess_datamembaca data pelatihan dari file, membaginya menjadi cerita individual, dan menggunakan tokenizer untuk mengonversi teks menjadi urutan token yang diisi. - Fungsi
generate_textmenggunakan model, parameternya, dan perintah untuk membuat teks. - Fungsi
train_stepmenentukan satu iterasi pelatihan yang mencakup penerusan, penghitungan kerugian (menggunakan entropi silang), penghitungan gradien, dan pembaruan parameter. - Fungsi
train_modelmelakukan iterasi melalui set data untuk sejumlah epoch yang ditentukan, yang memanggil fungsitrain_stepuntuk setiap batch. - Fungsi
run_trainingmengatur seluruh proses untuk memuat data, menginisialisasi model Gemma 3 (Gemma3_270M) dan pengoptimal, memuat parameter yang telah dilatih sebelumnya, menyiapkan sharding data untuk pemrosesan paralel, menjalankan pembuatan pengujian, menjalankan loop pelatihan, dan melakukan pembuatan teks akhir untuk menunjukkan efek penyesuaian. - Skrip ini menggunakan library
argparseuntuk menerima argumen command line untuk parametermaxlen,batch_size, dandatacount.
Setelah mempelajari skrip penyesuaian, buat skrip tersebut dalam container untuk dijalankan di GKE.
Menyimpan skrip penyesuaian ke dalam container
Sebelum menjalankan skrip penyesuaian di cluster GKE, Anda harus membuatnya dalam container. Tutorial ini menggunakan gambar AI JAX sebagai gambar dasar.
Buka
Dockerfiledi direktori yang sama dengan fileGemma3LLMTrain.py:Dockerfile ini menginstal dependensi yang diperlukan dan menyalin file
Gemma3LLMTrain.pyke dalam container.Bangun image Docker dan kirimkan ke repositori image:
export REPOSITORY=REPOSITORY_NAME export IMAGE_NAME="jax-gemma3-training" export IMAGE_TAG="latest" export DOCKERFILE_PATH="./Dockerfile" export IMAGE_URI="${REGION}-docker.pkg.dev/${PROJECT_ID}/${REPOSITORY}/${IMAGE_NAME}:${IMAGE_TAG}" docker build -t "${IMAGE_URI}" -f "${DOCKERFILE_PATH}" . gcloud auth configure-docker "${REGION}-docker.pkg.dev" -q docker push "${IMAGE_URI}"Ganti
REPOSITORY_NAMEdengan nama repositori Artifact Registry Anda.Tambahkan binding peran ke akun layanan:
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format 'get(projectNumber)') gcloud artifacts repositories add-iam-policy-binding ${REPOSITORY} \ --project=${PROJECT_ID} \ --location=${REGION} \ --member="serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \ --role="roles/artifactregistry.reader"
Dengan gambar di repositori, Anda kini dapat men-deploy Tugas penyesuaian ke cluster GKE.
Men-deploy Tugas fine-tuning LLM
Bagian ini menunjukkan cara men-deploy Tugas penyesuaian LLM ke cluster GKE Anda.
Buka manifes
training_singlehost.yaml:Terapkan manifes:
envsubst < training_singlehost.yaml | kubectl apply -f -
GKE membuat Tugas yang meluncurkan Pod di node
TPU Trillium (v6e). Pod ini menjalankan skrip penyesuaian Python, yang
mengakses data penyesuaian dari bucket Cloud Storage yang ditentukan
yang dipasang di jalur /data menggunakan Cloud Storage FUSE. Kemudian, skrip akan melakukan penyesuaian pada model Gemma.
Memantau Tugas pelatihan
Di bagian ini, Anda akan memantau progres Tugas penyesuaian dan performanya.
Melihat progres penyesuaian
Mencantumkan Pod:
# Find the Pods kubectl get podsIkuti output log:
kubectl logs -f pods/POD_NAMEGanti
POD_NAMEdengan nama Pod Anda.Outputnya mirip dengan hal berikut ini:
Global device count: 1 Batch size: 128, Max length: 256, Data count: 96000 I1028 00:12:55.925999 1387 google_auth_provider.cc:181] Running on GCE, using service account ... Generating response for: Once upon a time, there was a girl named Amy. Response: Amy lived in a small house. The house was in a big field. Amy liked to play in the big field. She Start training model Loss after batch 0: 10.25 Loss after batch 10: 4.3125 . . . Loss after batch 740: 1.41406 Completed training model. Total time for training 294.6791355609894 seconds Generating response for: Once upon a time, there was a girl named Amy. Response: She loved to play with her toys. One day, Amy's mom told her that she had to go to the store toAnalisis output:
- Baris
Global device count: 1menunjukkan core TPU yang digunakan. - Model menghasilkan teks yang wajar sebelum menjalankan fine-tuning ini karena model dimuat dari checkpoint yang telah dilatih sebelumnya.
- Output yang dihasilkan setelah penyesuaian menunjukkan lebih banyak kemiripan dengan awal cerita pendek, yang menunjukkan bahwa model sedang belajar dari set data baru.
- Penyesuaian pada set data lengkap akan menghasilkan output yang lebih baik.
- Baris
Mengamati metrik
Lihat performa Tugas penyesuaian dengan memeriksa metrik TPU dan CPU. Untuk melihat metrik kemampuan observasi untuk cluster Anda, lakukan langkah-langkah di Melihat metrik kemampuan observasi cluster dan workload.
Konfigurasi penyesuaian alternatif
Bagian ini menguraikan konfigurasi alternatif untuk workload penyesuaian Anda.
Pemilihan model
Tutorial ini menggunakan model Gemma3_270M, yang merupakan model kecil yang cocok
ke dalam node pool TPU Trillium (v6e) host tunggal. Untuk model yang lebih besar yang memerlukan lebih banyak memori dan komputasi untuk penyesuaian, Anda dapat menggunakan konfigurasi node pool multi-host atau multislice.
Untuk mengetahui daftar lengkap model yang tersedia, lihat dokumentasi Gemma.
Konfigurasi kumpulan node
Tutorial ini menggunakan node pool host tunggal. Anda juga dapat membuat node pool slice TPU multi-host atau node pool multislice, bergantung pada kebutuhan Anda.
Tab berikut menunjukkan cara membuat kumpulan node multi-host dan multiris:
Multi-host
Jalankan perintah berikut di Cloud Shell:
gcloud container node-pools create jax-tpu-multihost1 \ --cluster=${CLUSTER_NAME} \ --machine-type=ct6e-standard-4t \ --num-nodes=2 \ --tpu-topology=2x4 \ --location=${REGION} \ --node-locations=${ZONE}GKE membuat node pool TPU Trillium dengan topologi
2x4dan dua node.Buka definisi Tugas
training_multihost_jobset.yaml:Deploy Tugas penyesuaian:
envsubst < training_multihost_jobset.yaml | kubectl apply -f -
Multislice
Jalankan perintah berikut di Cloud Shell:
gcloud container node-pools create jax-tpu-multihost1 \ --cluster=${CLUSTER_NAME} \ --machine-type=ct6e-standard-4t \ --num-nodes=2 \ --tpu-topology=2x4 \ --location=${REGION} \ --node-locations=${ZONE} gcloud container node-pools create jax-tpu-multihost2 \ --cluster=${CLUSTER_NAME} \ --machine-type=ct6e-standard-4t \ --num-nodes=2 \ --tpu-topology=2x4 \ --location=${REGION} \ --node-locations=${ZONE}GKE membuat dua node pool TPU Trillium. Setiap node pool memiliki topologi
2x4dan dua node.Buka definisi Tugas
training_multislice_jobset.yaml:Deploy Tugas penyesuaian:
envsubst < training_multislice_jobset.yaml | kubectl apply -f -
Analisis dan pengoptimalan performa
Untuk menganalisis dan mengoptimalkan performa penyesuaian model machine learning, Anda dapat menggunakan XProf. XProf adalah rangkaian alat yang memprofilkan dan memeriksa beban kerja ML yang dibuat dengan JAX, TensorFlow, atau PyTorch/XLA. Dengan menampilkan rekaman eksekusi, penggunaan memori, dan data lainnya, XProf memungkinkan Anda menyesuaikan model dan konfigurasi pelatihan untuk efisiensi yang lebih baik dan pelatihan yang lebih cepat.
Untuk menganalisis performa workload penyesuaian Anda menggunakan XProf, Anda harus menyelesaikan langkah-langkah berikut di bagian ini:
- Instal paket
xprof. Ubah skrip pelatihan untuk memulai server XProf. - Ubah manifes Job Kubernetes Anda untuk menyertakan pemasangan volume untuk log XProf.
- Beri akun layanan izin untuk menulis log XProf ke bucket Cloud Storage.
- Jalankan XProf dalam Pod Anda dan siapkan penerusan port untuk mengakses dasbor XProf.
Instal paket XProf
Buka direktori yang berisi sampel XProf:
cd ai-ml/llm-training-jax-tpu-gemma3/xprof-enabledBangun image Docker dan kirimkan ke repositori image:
export REPOSITORY=REPOSITORY_NAME export IMAGE_NAME="jax-gemma3-training-xp" export IMAGE_TAG="latest" export DOCKERFILE_PATH="./Dockerfile" export IMAGE_URI="${REGION}-docker.pkg.dev/${PROJECT_ID}/${REPOSITORY}/${IMAGE_NAME}:${IMAGE_TAG}" docker build -t "${IMAGE_URI}" -f "${DOCKERFILE_PATH}" . gcloud auth configure-docker "${REGION}-docker.pkg.dev" -q docker push "${IMAGE_URI}"Ganti
REPOSITORY_NAMEdengan nama repositori Artifact Registry Anda.Jalankan skrip
Dockerfile:Dockerfile ini menginstal dependensi XProf.
Salin skrip penyesuaian ke dalam container
Di bagian ini, buat dan terapkan manifes Job Kubernetes yang mencakup pemasangan volume yang diperlukan untuk log XProf.
Buka definisi Tugas
training_singlehost.yaml:Terapkan manifes:
envsubst < training_singlehost.yaml | kubectl apply -f -
Beri akun layanan izin untuk menulis log XProf
Untuk mengizinkan akun layanan menulis dan membaca, tambahkan peran
"roles/storage.objectUser":export GSA_NAME="GSA_NAME" # Same as used in initial setup # Automatically get the current project ID export PROJECT_ID=$(gcloud config get-value project) # Cloud Storage Bucket details export XPROF_GCS_BUCKET_NAME="XPROF_GCS_BUCKET_NAME" # Derived Variables export GSA_EMAIL="${GSA_NAME}@${PROJECT_ID}.iam.gserviceaccount.com" gcloud storage buckets add-iam-policy-binding "gs://${XPROF_GCS_BUCKET_NAME}" \ --member="serviceAccount:${GSA_EMAIL}" \ --role="roles/storage.objectUser" \ --project="${PROJECT_ID}"Ganti kode berikut:
GSA_NAME: nama Akun Layanan Google yang akan diberi peran.XPROF_GCS_BUCKET_NAME: nama bucket tempat memberikan peran.
Jalankan XProf di dalam Pod Anda:
kubectl exec POD_NAME -c training-container -it -- bash # exec into the container xprof --port 9001 --logdir /xprof # start xprofGanti
POD_NAMEdengan nama Pod Anda.
Mengakses dasbor XProf
Siapkan penerusan port ke server XProf di Pod:
kubectl port-forward POD_NAME 9001:9001Di kolom URL browser Anda, masukkan kode berikut:
http://localhost:9001/XProf Trace Viewer akan terbuka.
Di jendela TensorBoard, klik Rekam profil.
Di kolom URL Layanan Profil atau nama TPU, masukkan
localhost:9002.Untuk merekam lebih banyak detail, di Host Trace (TraceMe) Level, pilih verbose dan aktifkan logging trace Python.
Untuk melihat dasbor, klik Ambil.
TensorBoard mengambil profil dan memungkinkan Anda menganalisis performa skrip pelatihan. Grafik menunjukkan linimasa eksekusi untuk profil performa TPU dan CPU:
Untuk opsi pembuatan profil lainnya guna menganalisis performa workload pelatihan, lihat dokumentasi JAX tentang Pembuatan profil komputasi.
Penyesuaian di lingkungan produksi
Tutorial ini menunjukkan cara menguji pelatihan berbasis JAX dalam lingkungan terdistribusi. Untuk penyempurnaan LLM yang dioptimalkan dalam produksi, gunakan library Maxtext. Jika Anda tertarik dengan model difusi, gunakan penerapan Maxdiffusion.
Untuk workload pelatihan atau penyesuaian yang berjalan lama dalam produksi, siapkan checkpointing workload untuk meminimalkan hilangnya progres selama terjadi kegagalan. Untuk mempelajari lebih lanjut cara menyiapkan checkpoint multi-tingkat, lihat Melatih model machine learning berskala besar di GKE dengan Checkpointing Multi-Tingkat.
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.
Menghapus resource satu per satu
Agar akun Google Cloud Anda tidak dikenai biaya untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource dengan menjalankan perintah berikut:
Hapus resource yang Anda buat dalam tutorial ini:
gcloud container clusters delete ${CLUSTER_NAME} --location=${REGION} gcloud storage rm --recursive gs://${GCS_BUCKET_NAME} gcloud artifacts docker images delete ${IMAGE_URI} --delete-tagsJika Anda tidak memerlukan data yang dihasilkan oleh XProf, hapus bucket Cloud Storage yang digunakan oleh XProf:
gcloud storage rm --recursive gs://${XPROF_GCS_BUCKET_NAME}
Langkah berikutnya
- Pelajari lebih lanjut TPU di GKE.
- Jelajahi repositori JAX.