Tutorial ini menunjukkan cara berbagi resource akselerator secara efisien antara workload pelatihan dan inferensi dalam satu cluster Google Kubernetes Engine (GKE). Dengan mendistribusikan beban kerja campuran di satu cluster, Anda akan meningkatkan penggunaan resource, menyederhanakan pengelolaan cluster, mengurangi masalah dari batasan jumlah akselerator, dan meningkatkan efisiensi biaya secara keseluruhan.
Dalam tutorial ini, Anda akan membuat Deployment penayangan dengan prioritas tinggi menggunakan model bahasa besar (LLM) Gemma 2 untuk inferensi dan framework penayangan Hugging Face TGI (Text Generation Interface), bersama dengan Tugas penyesuaian LLM prioritas rendah. Kedua workload tersebut berjalan di satu cluster yang menggunakan GPU NVIDIA L4. Anda menggunakan Kueue, sistem antrean Tugas native Kubernetes open source, untuk mengelola dan menjadwalkan beban kerja. Kueue memungkinkan Anda memprioritaskan tugas penayangan dan menggantikan Tugas pelatihan prioritas rendah untuk mengoptimalkan penggunaan resource. Saat permintaan penayangan menurun, Anda mengalokasikan ulang akselerator yang dibebaskan untuk melanjutkan Tugas pelatihan. Anda menggunakan Kueue dan class prioritas untuk mengelola kuota resource selama proses.
Tutorial ini ditujukan untuk engineer Machine Learning (ML), admin dan operator Platform, serta spesialis Data dan AI yang ingin melatih dan menghosting model machine learning (ML) di cluster GKE, dan yang juga ingin mengurangi biaya dan overhead pengelolaan, terutama saat menangani akselerator dalam jumlah terbatas. Untuk mempelajari lebih lanjut peran umum dan contoh tugas yang kami referensikan dalam konten Google Cloud , lihat Peran dan tugas pengguna GKE Enterprise umum.
Sebelum membaca halaman ini, pastikan Anda memahami hal-hal berikut:
Tujuan
Di akhir panduan ini, Anda akan dapat melakukan langkah-langkah berikut:
- Konfigurasikan Deployment penayangan prioritas tinggi.
- Menyiapkan Tugas pelatihan dengan prioritas lebih rendah.
- Terapkan strategi preemptif untuk mengatasi berbagai permintaan.
- Mengelola alokasi resource antara tugas pelatihan dan penayangan menggunakan Kueue.
Sebelum memulai
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the required APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the required APIs.
-
Make sure that you have the following role or roles on the project:
roles/container.admin
,roles/iam.serviceAccountAdmin
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
Buka IAM - Pilih project.
- Klik Berikan akses.
-
Di kolom New principals, masukkan ID pengguna Anda. Ini biasanya adalah alamat email untuk Akun Google.
- Di daftar Pilih peran, pilih peran.
- Untuk memberikan peran tambahan, klik Tambahkan peran lain, lalu tambahkan setiap peran tambahan.
- Klik Simpan.
-
- Buat akun Hugging Face, jika Anda belum memilikinya.
- Pastikan project Anda memiliki kuota yang memadai untuk GPU L4. Untuk mempelajari lebih lanjut, lihat Tentang GPU dan Kuota alokasi.
Menyiapkan lingkungan
Di bagian ini, Anda akan menyediakan resource yang diperlukan untuk men-deploy TGI dan model untuk workload inferensi dan pelatihan.
Mendapatkan akses ke model
Untuk mendapatkan akses ke model Gemma untuk di-deploy ke GKE, Anda harus menandatangani perjanjian izin lisensi terlebih dahulu, lalu membuat token akses Hugging Face.
- Tanda tangani perjanjian izin lisensi. Akses halaman izin model, verifikasi izin menggunakan akun Hugging Face Anda, dan setujui persyaratan model.
Buat token akses. Untuk mengakses model melalui Hugging Face, Anda memerlukan token Hugging Face. Ikuti langkah-langkah berikut untuk membuat token baru jika Anda belum memilikinya:
- Klik Profil Anda > Setelan > Token Akses.
- Pilih New Token.
- Tentukan Nama pilihan Anda dan Peran minimal
Read
. - Pilih Buat token.
- Salin token yang dihasilkan ke papan klip Anda.
Meluncurkan Cloud Shell
Dalam tutorial ini, Anda akan menggunakan Cloud Shell untuk mengelola resource yang dihosting diGoogle Cloud. Cloud Shell telah diinstal dengan software yang Anda perlukan untuk tutorial ini, termasuk kubectl
,
gcloud CLI, dan Terraform.
Untuk menyiapkan lingkungan Anda dengan Cloud Shell, ikuti langkah-langkah berikut:
Di konsol Google Cloud, luncurkan sesi Cloud Shell dengan mengklik
Aktifkan Cloud Shell di konsol Google Cloud. Tindakan ini akan meluncurkan sesi di panel bawah Konsol Google Cloud.
Tetapkan variabel lingkungan default:
gcloud config set project PROJECT_ID export PROJECT_ID=$(gcloud config get project)
Ganti PROJECT_ID dengan Google Cloud project ID Anda.
Clone kode contoh dari GitHub. Di Cloud Shell jalankan perintah berikut:
git clone https://github.com/GoogleCloudPlatform/kubernetes-engine-samples/ cd kubernetes-engine-samples/ai-ml/mix-train-and-inference export EXAMPLE_HOME=$(pwd)
Membuat cluster GKE
Anda dapat menggunakan cluster Autopilot atau Standard untuk workload campuran. Sebaiknya gunakan cluster Autopilot untuk pengalaman Kubernetes yang dikelola sepenuhnya. Untuk memilih mode operasi GKE yang paling sesuai untuk workload Anda, lihat Memilih mode operasi GKE.
Autopilot
Tetapkan variabel lingkungan default di Cloud Shell:
export HF_TOKEN=HF_TOKEN export REGION=REGION export CLUSTER_NAME="llm-cluster" export PROJECT_NUMBER=$(gcloud projects list \ --filter="$(gcloud config get-value project)" \ --format="value(PROJECT_NUMBER)") export MODEL_BUCKET="model-bucket-$PROJECT_ID"
Ganti nilai berikut:
- HF_TOKEN: token Hugging Face yang Anda buat sebelumnya.
- REGION: region yang mendukung jenis
akselerator yang ingin Anda gunakan, misalnya,
us-central1
untuk GPU L4.
Anda dapat menyesuaikan variabel MODEL_BUCKET—variabel ini mewakili bucket Cloud Storage tempat Anda menyimpan bobot model terlatih.
Buat cluster Autopilot:
gcloud container clusters create-auto ${CLUSTER_NAME} \ --project=${PROJECT_ID} \ --region=${REGION} \ --release-channel=rapid
Buat bucket Cloud Storage untuk tugas penyesuaian:
gcloud storage buckets create gs://${MODEL_BUCKET} \ --location ${REGION} \ --uniform-bucket-level-access
Untuk memberikan akses ke bucket Cloud Storage, jalankan perintah ini:
gcloud storage buckets add-iam-policy-binding "gs://$MODEL_BUCKET" \ --role=roles/storage.objectAdmin \ --member=principal://iam.googleapis.com/projects/$PROJECT_NUMBER/locations/global/workloadIdentityPools/$PROJECT_ID.svc.id.goog/subject/ns/llm/sa/default \ --condition=None
Untuk mendapatkan kredensial autentikasi untuk cluster, jalankan perintah ini:
gcloud container clusters get-credentials llm-cluster \ --region=$REGION \ --project=$PROJECT_ID
Buat namespace untuk Deployment Anda. Di Cloud Shell, jalankan perintah berikut:
kubectl create ns llm
Standar
Tetapkan variabel lingkungan default di Cloud Shell:
export HF_TOKEN=HF_TOKEN export REGION=REGION export CLUSTER_NAME="llm-cluster" export GPU_POOL_MACHINE_TYPE="g2-standard-24" export GPU_POOL_ACCELERATOR_TYPE="nvidia-l4" export PROJECT_NUMBER=$(gcloud projects list \ --filter="$(gcloud config get-value project)" \ --format="value(PROJECT_NUMBER)") export MODEL_BUCKET="model-bucket-$PROJECT_ID"
Ganti nilai berikut:
- HF_TOKEN: token Hugging Face yang Anda buat sebelumnya.
- REGION: region yang mendukung jenis
akselerator yang ingin Anda gunakan, misalnya,
us-central1
untuk GPU L4.
Anda dapat menyesuaikan variabel berikut:
- GPU_POOL_MACHINE_TYPE: seri mesin node pool yang ingin Anda gunakan di region yang dipilih. Nilai ini bergantung pada jenis akselerator
yang Anda pilih. Untuk mempelajari lebih lanjut, lihat Batasan penggunaan GPU di GKE. Misalnya, tutorial
ini menggunakan
g2-standard-24
dengan dua GPU yang terpasang per node. Untuk mengetahui daftar terbaru GPU yang tersedia, lihat GPU untuk Beban Kerja Compute. - GPU_POOL_ACCELERATOR_TYPE: jenis akselerator
yang didukung di region yang Anda pilih. Misalnya, tutorial ini menggunakan
nvidia-l4
. Untuk mengetahui daftar terbaru GPU yang tersedia, lihat GPU untuk Workload Komputasi. - MODEL_BUCKET: bucket Cloud Storage tempat Anda menyimpan bobot model terlatih.
Membuat cluster Standard:
gcloud container clusters create ${CLUSTER_NAME} \ --project=${PROJECT_ID} \ --region=${REGION} \ --workload-pool=${PROJECT_ID}.svc.id.goog \ --release-channel=rapid \ --machine-type=e2-standard-4 \ --addons GcsFuseCsiDriver \ --num-nodes=1
Buat node pool GPU untuk inferensi dan workload penyesuaian:
gcloud container node-pools create gpupool \ --accelerator type=${GPU_POOL_ACCELERATOR_TYPE},count=2,gpu-driver-version=latest \ --project=${PROJECT_ID} \ --location=${REGION} \ --node-locations=${REGION}-a \ --cluster=${CLUSTER_NAME} \ --machine-type=${GPU_POOL_MACHINE_TYPE} \ --num-nodes=3
Buat bucket Cloud Storage untuk tugas penyesuaian:
gcloud storage buckets create gs://${MODEL_BUCKET} \ --location ${REGION} \ --uniform-bucket-level-access
Untuk memberikan akses ke bucket Cloud Storage, jalankan perintah ini:
gcloud storage buckets add-iam-policy-binding "gs://$MODEL_BUCKET" \ --role=roles/storage.objectAdmin \ --member=principal://iam.googleapis.com/projects/$PROJECT_NUMBER/locations/global/workloadIdentityPools/$PROJECT_ID.svc.id.goog/subject/ns/llm/sa/default \ --condition=None
Untuk mendapatkan kredensial autentikasi untuk cluster, jalankan perintah ini:
gcloud container clusters get-credentials llm-cluster \ --region=$REGION \ --project=$PROJECT_ID
Buat namespace untuk Deployment Anda. Di Cloud Shell, jalankan perintah berikut:
kubectl create ns llm
Membuat Secret Kubernetes untuk kredensial Hugging Face
Untuk membuat Secret Kubernetes yang berisi token Hugging Face, jalankan perintah berikut:
kubectl create secret generic hf-secret \
--from-literal=hf_api_token=$HF_TOKEN \
--dry-run=client -o yaml | kubectl apply --namespace=llm --filename=-
Mengonfigurasi Kueue
Dalam tutorial ini, Kueue adalah pengelola resource pusat, yang memungkinkan pembagian GPU secara efisien antara workload pelatihan dan penayangan Anda. Kueue mencapai hal ini dengan menentukan persyaratan resource ("ragam"), memprioritaskan beban kerja melalui antrean (dengan tugas penayangan diprioritaskan daripada pelatihan), dan mengalokasikan resource secara dinamis berdasarkan permintaan dan prioritas. Tutorial ini menggunakan jenis resource Workload untuk mengelompokkan beban kerja inferensi dan penyesuaian.
Fitur preemptif Kueue memastikan bahwa beban kerja penayangan berprioritas tinggi selalu memiliki resource yang diperlukan dengan menjeda atau mengeluarkan Tugas pelatihan berprioritas lebih rendah saat resource langka.
Untuk mengontrol Deployment server inferensi dengan Kueue, Anda mengaktifkan integrasi v1/pod
dengan menerapkan konfigurasi kustom menggunakan
Kustomize, untuk memastikan Pod server diberi label dengan
"kueue-job: true"
.
Di direktori
/kueue
, lihat kode dikustomization.yaml
. Manifes ini menginstal pengelola resource Kueue dengan konfigurasi kustom.Di direktori
/kueue
, lihat kode dipatch.yaml
. ConfigMap ini menyesuaikan Kueue untuk mengelola Pod dengan label"kueue-job: true"
.Di Cloud Shell, jalankan perintah berikut untuk menginstal Kueue:
cd ${EXAMPLE_HOME} kubectl kustomize kueue |kubectl apply --server-side --filename=-
Tunggu hingga Pod Kueue siap:
watch kubectl --namespace=kueue-system get pods
Output-nya akan terlihat seperti berikut:
NAME READY STATUS RESTARTS AGE kueue-controller-manager-bdc956fc4-vhcmx 2/2 Running 0 3m15s
Di direktori
/workloads
, lihat fileflavors.yaml
,cluster-queue.yaml
, danlocal-queue.yaml
. Manifes ini menentukan cara Kueue mengelola kuota resource:ResourceFlavor
Manifes ini menentukan ResourceFlavor default di Kueue untuk pengelolaan resource.
ClusterQueue
Manifes ini menyiapkan ClusterQueue Kueue dengan batas resource untuk CPU, memori, dan GPU.
Tutorial ini menggunakan node dengan dua GPU Nvidia L4 yang terpasang, dengan jenis node yang sesuai, yaitu
g2-standard-24
, yang menawarkan 24 vCPU dan RAM 96 GB. Kode contoh menunjukkan cara membatasi penggunaan resource workload Anda hingga maksimum enam GPU.Kolom
preemption
dalam konfigurasi ClusterQueue mereferensikan PriorityClass untuk menentukan Pod mana yang dapat didahului saat resource langka.LocalQueue
Manifes ini membuat Kueue LocalQueue bernama
lq
di namespacellm
.Lihat file
default-priorityclass.yaml
,low-priorityclass.yaml
, danhigh-priorityclass.yaml
. Manifes ini menentukan objek PriorityClass untuk penjadwalan Kubernetes.Prioritas default
Prioritas rendah
Prioritas tinggi
Buat objek Kueue dan Kubernetes dengan menjalankan perintah ini untuk menerapkan manifes yang sesuai.
cd ${EXAMPLE_HOME}/workloads kubectl apply --filename=flavors.yaml kubectl apply --filename=default-priorityclass.yaml kubectl apply --filename=high-priorityclass.yaml kubectl apply --filename=low-priorityclass.yaml kubectl apply --filename=cluster-queue.yaml kubectl apply --filename=local-queue.yaml --namespace=llm
Men-deploy server inferensi TGI
Di bagian ini, Anda akan men-deploy penampung TGI untuk menayangkan model Gemma 2.
Di direktori
/workloads
, lihat filetgi-gemma-2-9b-it-hp.yaml
. Manifes ini menentukan Deployment Kubernetes untuk men-deploy runtime dan modelgemma-2-9B-it
penayangan TGI. Deployment adalah objek Kubernetes API yang memungkinkan Anda menjalankan beberapa replika Pod yang didistribusikan di antara node dalam cluster.Deployment memprioritaskan tugas inferensi dan menggunakan dua GPU untuk model. Model ini menggunakan paralelisme tensor, dengan menetapkan variabel lingkungan
NUM_SHARD
, untuk menyesuaikan model ke dalam memori GPU.Terapkan manifes dengan menjalankan perintah berikut:
kubectl apply --filename=tgi-gemma-2-9b-it-hp.yaml --namespace=llm
Operasi deployment akan memerlukan waktu beberapa menit hingga selesai.
Untuk memeriksa apakah GKE berhasil membuat Deployment, jalankan perintah berikut:
kubectl --namespace=llm get deployment
Output-nya akan terlihat seperti berikut:
NAME READY UP-TO-DATE AVAILABLE AGE tgi-gemma-deployment 1/1 1 1 5m13s
Memverifikasi pengelolaan kuota Kueue
Di bagian ini, Anda akan mengonfirmasi bahwa Kueue menerapkan kuota GPU dengan benar untuk Deployment Anda.
Untuk memeriksa apakah Kueue mengetahui Deployment Anda, jalankan perintah ini untuk mengambil status objek Workload:
kubectl --namespace=llm get workloads
Output-nya akan terlihat seperti berikut:
NAME QUEUE RESERVED IN ADMITTED FINISHED AGE pod-tgi-gemma-deployment-6bf9ffdc9b-zcfrh-84f19 lq cluster-queue True 8m23s
Untuk menguji penggantian batas kuota, skalakan Deployment ke empat replika:
kubectl scale --replicas=4 deployment/tgi-gemma-deployment --namespace=llm
Jalankan perintah berikut untuk melihat jumlah replika yang di-deploy GKE:
kubectl get workloads --namespace=llm
Output-nya akan terlihat seperti berikut:
NAME QUEUE RESERVED IN ADMITTED FINISHED AGE pod-tgi-gemma-deployment-6cb95cc7f5-5thgr-3f7d4 lq cluster-queue True 14s pod-tgi-gemma-deployment-6cb95cc7f5-cbxg2-d9fe7 lq cluster-queue True 5m41s pod-tgi-gemma-deployment-6cb95cc7f5-tznkl-80f6b lq 13s pod-tgi-gemma-deployment-6cb95cc7f5-wd4q9-e4302 lq cluster-queue True 13s
Output menunjukkan bahwa hanya tiga Pod yang diizinkan karena kuota resource yang diterapkan Kueue.
Jalankan perintah berikut untuk menampilkan Pod di namespace
llm
:kubectl get pod --namespace=llm
Output-nya akan terlihat seperti berikut:
NAME READY STATUS RESTARTS AGE tgi-gemma-deployment-7649884d64-6j256 1/1 Running 0 4m45s tgi-gemma-deployment-7649884d64-drpvc 0/1 SchedulingGated 0 7s tgi-gemma-deployment-7649884d64-thdkq 0/1 Pending 0 7s tgi-gemma-deployment-7649884d64-znvpb 0/1 Pending 0 7s
Sekarang, turunkan skala Deployment kembali ke 1. Langkah ini diperlukan sebelum men-deploy tugas penyesuaian. Jika tidak, tugas tersebut tidak akan diterima karena tugas inferensi memiliki prioritas.
kubectl scale --replicas=1 deployment/tgi-gemma-deployment --namespace=llm
Penjelasan perilaku
Contoh penskalaan hanya menghasilkan tiga replika (meskipun diskalakan menjadi empat)
karena batas kuota GPU yang Anda tetapkan dalam konfigurasi ClusterQueue. Bagian
spec.resourceGroups
ClusterQueue menentukan nominalQuota "6" untuk
nvidia.com/gpu
. Deployment menentukan bahwa setiap Pod memerlukan "2" GPU.
Oleh karena itu, ClusterQueue hanya dapat mengakomodasi maksimal tiga replika Deployment dalam satu waktu (karena 3 replika * 2 GPU per replika = 6 GPU, yang merupakan total kuota).
Saat Anda mencoba menskalakan ke empat replika, Kueue akan mengenali bahwa tindakan ini akan
melebihi kuota GPU dan mencegah replika keempat dijadwalkan. Hal ini
ditunjukkan oleh status SchedulingGated
Pod keempat. Perilaku ini
menunjukkan penerapan kuota resource Kueue.
Men-deploy Tugas pelatihan
Di bagian ini, Anda akan men-deploy Tugas penyesuaian prioritas lebih rendah untuk model Gemma 2 yang memerlukan empat GPU di dua Pod. Pengontrol Tugas di Kubernetes membuat satu atau beberapa Pod dan memastikan bahwa Pod tersebut berhasil menjalankan tugas tertentu.
Tugas ini akan menggunakan kuota GPU yang tersisa di ClusterQueue. Tugas menggunakan image bawaan dan menyimpan titik pemeriksaan untuk memungkinkan mulai ulang dari hasil perantara.
Tugas penyesuaian menggunakan set data b-mc2/sql-create-context
. Sumber untuk tugas penyesuaian dapat ditemukan di repositori.
Lihat file
fine-tune-l4.yaml
. Manifes ini menentukan Tugas penyesuaian.Terapkan manifes untuk membuat Tugas penyesuaian:
cd ${EXAMPLE_HOME}/workloads sed -e "s/<MODEL_BUCKET>/$MODEL_BUCKET/g" \ -e "s/<PROJECT_ID>/$PROJECT_ID/g" \ -e "s/<REGION>/$REGION/g" \ fine-tune-l4.yaml |kubectl apply --filename=- --namespace=llm
Pastikan Deployment Anda berjalan. Untuk memeriksa status objek Workload, jalankan perintah berikut:
kubectl get workloads --namespace=llm
Output-nya akan terlihat seperti berikut:
NAME QUEUE RESERVED IN ADMITTED FINISHED AGE job-finetune-gemma-l4-3316f lq cluster-queue True 29m pod-tgi-gemma-deployment-6cb95cc7f5-cbxg2-d9fe7 lq cluster-queue True 68m
Selanjutnya, lihat Pod di namespace
llm
dengan menjalankan perintah ini:kubectl get pod --namespace=llm
Output-nya akan terlihat seperti berikut:
NAME READY STATUS RESTARTS AGE finetune-gemma-l4-0-vcxpz 2/2 Running 0 31m finetune-gemma-l4-1-9ppt9 2/2 Running 0 31m tgi-gemma-deployment-6cb95cc7f5-cbxg2 1/1 Running 0 70m
Output menunjukkan bahwa Kueue mengizinkan Pod server inferensi dan Tugas penyesuaian Anda untuk berjalan, dengan mencadangkan resource yang benar berdasarkan batas kuota yang Anda tentukan.
Lihat log output untuk memverifikasi bahwa Tugas penyesuaian Anda menyimpan titik pemeriksaan ke bucket Cloud Storage. Tugas penyesuaian memerlukan waktu sekitar 10 menit sebelum mulai menyimpan titik pemeriksaan pertama.
kubectl logs --namespace=llm --follow --selector=app=finetune-job
Output untuk checkpoint pertama yang disimpan terlihat mirip dengan berikut ini:
{"name": "finetune", "thread": 133763559483200, "threadName": "MainThread", "processName": "MainProcess", "process": 33, "message": "Fine tuning started", "timestamp": 1731002351.0016131, "level": "INFO", "runtime": 451579.89835739136} … {"name": "accelerate.utils.fsdp_utils", "thread": 136658669348672, "threadName": "MainThread", "processName": "MainProcess", "process": 32, "message": "Saving model to /model-data/model-gemma2/experiment/checkpoint-10/pytorch_model_fsdp_0", "timestamp": 1731002386.1763802, "level": "INFO", "runtime": 486753.8924217224}
Menguji preemption Kueue dan alokasi dinamis pada workload campuran Anda
Di bagian ini, Anda akan menyimulasikan skenario saat beban server inferensi meningkat, sehingga mengharuskannya untuk diskalakan. Skenario ini menunjukkan cara Kueue memprioritaskan server inferensi prioritas tinggi dengan menangguhkan dan menggantikan Tugas penyesuaian prioritas yang lebih rendah saat resource dibatasi.
Jalankan perintah berikut untuk menskalakan replika server inferensi menjadi dua:
kubectl scale --replicas=2 deployment/tgi-gemma-deployment --namespace=llm
Periksa status objek Workload:
kubectl get workloads --namespace=llm
Outputnya terlihat mirip dengan yang berikut ini:
NAME QUEUE RESERVED IN ADMITTED FINISHED AGE job-finetune-gemma-l4-3316f lq False 32m pod-tgi-gemma-deployment-6cb95cc7f5-cbxg2-d9fe7 lq cluster-queue True 70m pod-tgi-gemma-deployment-6cb95cc7f5-p49sh-167de lq cluster-queue True 14s
Output menunjukkan bahwa Tugas penyesuaian tidak lagi diizinkan karena replika server inferensi yang meningkat menggunakan kuota GPU yang tersedia.
Periksa status Tugas penyesuaian:
kubectl get job --namespace=llm
Output-nya terlihat mirip dengan berikut ini, yang menunjukkan bahwa status Tugas penyesuaian kini ditangguhkan:
NAME STATUS COMPLETIONS DURATION AGE finetune-gemma-l4 Suspended 0/2 33m
Jalankan perintah berikut untuk memeriksa Pod Anda:
kubectl get pod --namespace=llm
Outputnya terlihat mirip dengan berikut ini, yang menunjukkan bahwa Kueue menghentikan Pod Tugas penyesuaian untuk mengosongkan resource untuk Deployment server inferensi prioritas yang lebih tinggi.
NAME READY STATUS RESTARTS AGE tgi-gemma-deployment-6cb95cc7f5-cbxg2 1/1 Running 0 72m tgi-gemma-deployment-6cb95cc7f5-p49sh 0/1 ContainerCreating 0 91s
Selanjutnya, uji skenario saat beban server inferensi berkurang dan Pod-nya diskalakan ke bawah. Jalankan perintah berikut:
kubectl scale --replicas=1 deployment/tgi-gemma-deployment --namespace=llm
Jalankan perintah berikut untuk menampilkan objek Workload:
kubectl get workloads --namespace=llm
Outputnya terlihat mirip dengan berikut ini, yang menunjukkan bahwa salah satu Deployment server inferensi dihentikan, dan Tugas penyesuaian diterima kembali.
NAME QUEUE RESERVED IN ADMITTED FINISHED AGE job-finetune-gemma-l4-3316f lq cluster-queue True 37m pod-tgi-gemma-deployment-6cb95cc7f5-cbxg2-d9fe7 lq cluster-queue True 75m
Jalankan perintah ini untuk menampilkan Tugas:
kubectl get job --namespace=llm
Outputnya terlihat mirip dengan berikut ini, yang menunjukkan bahwa Tugas penyesuaian sedang berjalan lagi, melanjutkan dari titik pemeriksaan terbaru yang tersedia.
NAME STATUS COMPLETIONS DURATION AGE finetune-gemma-l4 Running 0/2 2m11s 38m
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 yang di-deploy
Agar tidak menimbulkan biaya pada akun Google Cloud Anda untuk resource yang dibuat dalam panduan ini, jalankan perintah berikut:
gcloud storage rm --recursive gs://${MODEL_BUCKET}
gcloud container clusters delete ${CLUSTER_NAME} --location ${REGION}