Panduan ini menunjukkan cara mengoptimalkan biaya untuk workload penayangan LLM di GKE. Tutorial ini menggunakan kombinasi flex-start, Spot VM, dan profil class komputasi kustom untuk inferensi yang hemat biaya.
Panduan ini menggunakan Mixtral 8x7b sebagai contoh LLM yang dapat Anda deploy.
Panduan ini ditujukan untuk engineer Machine Learning (ML), admin dan operator Platform, serta spesialis Data dan AI yang tertarik untuk menggunakan kemampuan orkestrasi container Kubernetes untuk menayangkan LLM. Untuk mengetahui informasi selengkapnya tentang peran umum dan contoh tugas yang kami referensikan dalam konten, lihat Peran dan tugas pengguna umum GKE Enterprise. Trusted Cloud by S3NS
Harga mulai fleksibel
Mulai fleksibel direkomendasikan jika workload Anda memerlukan penyediaan dinamis sumber daya sesuai kebutuhan, hingga tujuh hari dengan reservasi jangka pendek, tanpa pengelolaan kuota yang rumit, dan akses yang hemat biaya. Mulai fleksibel didukung oleh Dynamic Workload Scheduler dan ditagih menggunakan harga Dynamic Workload Scheduler:
- Diskon (hingga 53%) untuk vCPU, GPU, dan TPU.
- Anda membayar sesuai penggunaan.
Latar belakang
Bagian ini menjelaskan teknik yang tersedia yang dapat Anda gunakan untuk mendapatkan resource komputasi, termasuk akselerator GPU, berdasarkan persyaratan workload AI/ML Anda. Teknik ini disebut strategi ketersediaan akselerator di GKE.
GPU
Unit pemrosesan grafis (GPU) memungkinkan Anda mempercepat workload tertentu seperti machine learning dan pemrosesan data. GKE menawarkan node yang dilengkapi dengan GPU berperforma tinggi ini untuk mengoptimalkan performa tugas machine learning dan pemrosesan data. GKE menyediakan berbagai opsi jenis mesin untuk konfigurasi node, termasuk jenis mesin dengan GPU NVIDIA H100, A100, dan L4.
Untuk mengetahui informasi selengkapnya, lihat Tentang GPU di GKE.
Mode penyediaan mulai fleksibel
Mode penyediaan mulai fleksibel, yang didukung oleh Dynamic Workload Scheduler, adalah jenis konsumsi GPU di mana GKE mempertahankan permintaan GPU Anda dan otomatis menyediakan resource saat kapasitas tersedia. Pertimbangkan untuk menggunakan mulai fleksibel untuk workload yang memerlukan kapasitas GPU dalam waktu terbatas, hingga tujuh hari, dan tidak memiliki tanggal mulai tetap. Untuk mengetahui informasi selengkapnya, lihat flex-start.
Spot VM
Anda dapat menggunakan GPU dengan Spot VM jika workload Anda dapat menoleransi seringnya gangguan node. Penggunaan Spot VM atau flex-start mengurangi harga GPU yang berjalan. Penggunaan Spot VM yang dipadukan dengan flex-start memberikan opsi penggantian jika kapasitas Spot VM tidak tersedia.
Untuk mengetahui informasi selengkapnya, lihat Menggunakan Spot VM dengan node pool GPU.
Class compute kustom
Anda dapat meminta GPU menggunakan class komputasi kustom. Dengan class komputasi kustom, Anda dapat menentukan hierarki konfigurasi node agar GKE memprioritaskannya selama keputusan penskalaan node, sehingga workload berjalan di hardware yang Anda pilih. Untuk mengetahui informasi selengkapnya, lihat Tentang class komputasi kustom.
Sebelum memulai
-
In the Trusted Cloud console, on the project selector page, select or create a Trusted Cloud project.
-
Make sure that billing is enabled for your Trusted Cloud project.
-
Make sure that you have the following role or roles on the project:
Check for the roles
-
In the Trusted 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 Trusted Cloud console, go to the IAM page.
Buka IAM - Pilih project.
- Klik Berikan akses.
-
Di kolom Akun utama baru, masukkan ID pengguna Anda. Biasanya, ini adalah ID untuk pengguna dalam workforce identity pool. Untuk mengetahui detailnya, lihat Merepresentasikan pengguna kumpulan tenaga kerja dalam kebijakan IAM, atau hubungi administrator Anda.
- Di daftar Pilih peran, pilih peran.
- Untuk memberikan peran tambahan, klik Tambahkan peran lain, lalu tambahkan setiap peran tambahan.
- Klik Simpan.
-
- Pastikan Anda memiliki cluster GKE Autopilot atau Standard yang menjalankan versi 1.32.2-gke.1652000 atau yang lebih baru. Cluster Anda harus mengaktifkan penyediaan otomatis node dan mengonfigurasi batas GPU.
- Buat akun Hugging Face, jika Anda belum memilikinya.
- Pastikan project Anda memiliki kuota yang cukup untuk GPU NVIDIA L4. Untuk mengetahui informasi selengkapnya, lihat Tentang GPU dan Kuota alokasi.
Mendapatkan akses ke model
Jika Anda belum memilikinya, buat token Hugging Face baru:
- Klik Profil Anda > Setelan > Token Akses.
- Pilih New Token.
- Tentukan nama pilihan Anda dan peran minimal
Read
. - Pilih Generate a token.
Membuat profil class komputasi kustom
Di bagian ini, Anda akan membuat profil class komputasi kustom. Profil kelas komputasi kustom menentukan jenis dan hubungan antara beberapa resource komputasi yang digunakan oleh beban kerja Anda.
- Di konsol Trusted Cloud , luncurkan sesi Cloud Shell dengan mengklik
Activate Cloud Shell di konsolTrusted Cloud . Sesi akan terbuka di panel bawah konsol Trusted Cloud .
Buat file manifes
dws-flex-start.yaml
:apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: dws-model-inference-class spec: priorities: - machineType: g2-standard-24 spot: true - machineType: g2-standard-24 flexStart: enabled: true nodeRecycling: leadTimeSeconds: 3600 nodePoolAutoCreation: enabled: true
Terapkan manifes
dws-flex-start.yaml
:kubectl apply -f dws-flex-start.yaml
GKE men-deploy mesin g2-standard-24
dengan akselerator L4.
GKE menggunakan
kelas komputasi untuk
memrioritaskan Spot VM terlebih dahulu, dan flex-start
kedua.
Men-deploy workload LLM
Buat Secret Kubernetes yang berisi token Hugging Face menggunakan perintah berikut:
kubectl create secret generic model-inference-secret \ --from-literal=HUGGING_FACE_TOKEN=HUGGING_FACE_TOKEN \ --dry-run=client -o yaml | kubectl apply -f -
Ganti
HUGGING_FACE_TOKEN
dengan token akses Hugging Face Anda.Buat file bernama
mixtral-deployment.yaml
:apiVersion: apps/v1 kind: Deployment metadata: name: inference-mixtral-ccc spec: nodeSelector: cloud.google.com/compute-class: dws-model-inference-class replicas: 1 selector: matchLabels: app: llm template: metadata: labels: app: llm spec: containers: - name: llm image: us-docker.pkg.dev/deeplearning-platform-release/gcr.io/huggingface-text-generation-inference-cu124.2-3.ubuntu2204.py311 resources: requests: cpu: "5" memory: "40Gi" nvidia.com/gpu: "2" limits: cpu: "5" memory: "40Gi" nvidia.com/gpu: "2" env: - name: MODEL_ID value: mistralai/Mixtral-8x7B-Instruct-v0.1 - name: NUM_SHARD value: "2" - name: PORT value: "8080" - name: QUANTIZE value: bitsandbytes-nf4 - name: HUGGING_FACE_HUB_TOKEN valueFrom: secretKeyRef: name: model-inference-secret key: HUGGING_FACE_TOKEN volumeMounts: - mountPath: /dev/shm name: dshm - mountPath: /tmp name: ephemeral-volume volumes: - name: dshm emptyDir: medium: Memory - name: ephemeral-volume ephemeral: volumeClaimTemplate: metadata: labels: type: ephemeral spec: accessModes: ["ReadWriteOnce"] storageClassName: "premium-rwo" resources: requests: storage: 100Gi
Dalam manifes ini, kolom
mountPath
disetel ke/tmp
, karena merupakan jalur tempat variabel lingkunganHF_HOME
di Deep Learning Container (DLC) untuk Text Generation Inference (TGI) disetel, bukan jalur/data
default yang disetel dalam image default TGI. Model yang didownload akan disimpan di direktori ini.Deploy model:
kubectl apply -f mixtral-deployment.yaml
GKE menjadwalkan Pod baru untuk di-deploy, yang memicu penskalaan otomatis node pool untuk menambahkan node kedua sebelum men-deploy replika kedua model.
Verifikasi status model:
watch kubectl get deploy inference-mixtral-ccc
Jika model berhasil di-deploy, output-nya akan mirip dengan berikut ini:
NAME READY UP-TO-DATE AVAILABLE AGE inference-mixtral-ccc 1/1 1 1 10m
Untuk keluar dari smartwatch, tekan
CTRL + C
.Lihat kumpulan node yang disediakan GKE:
kubectl get nodes -L cloud.google.com/gke-nodepool
Outputnya mirip dengan hal berikut ini:
NAME STATUS ROLES AGE VERSION GKE-NODEPOOL gke-flex-na-nap-g2-standard--0723b782-fg7v Ready <none> 10m v1.32.3-gke.1152000 nap-g2-standard-24-spot-gpu2-1gbdlbxz gke-flex-nap-zo-default-pool-09f6fe53-fzm8 Ready <none> 32m v1.32.3-gke.1152000 default-pool gke-flex-nap-zo-default-pool-09f6fe53-lv2v Ready <none> 32m v1.32.3-gke.1152000 default-pool gke-flex-nap-zo-default-pool-09f6fe53-pq6m Ready <none> 32m v1.32.3-gke.1152000 default-pool
Nama node pool yang dibuat menunjukkan jenis mesin. Dalam kasus ini, GKE menyediakan Spot VM.
Berinteraksi dengan model menggunakan curl
Bagian ini menunjukkan cara melakukan pengujian inferensi dasar untuk memverifikasi model yang di-deploy.
Siapkan penerusan port ke model:
kubectl port-forward service/llm-service 8080:8080
Outputnya mirip dengan hal berikut ini:
Forwarding from 127.0.0.1:8080 -> 8080
Dalam sesi terminal baru, mulai percakapan dengan model Anda menggunakan
curl
:curl http://localhost:8080/v1/completions \ -X POST \ -H "Content-Type: application/json" \ -d '{ "model": "mixtral-8x7b-instruct-gptq", "prompt": "<s>[INST]Who was the first president of the United States?[/INST]", "max_tokens": 40}'
Outputnya terlihat mirip dengan yang berikut ini:
George Washington was a Founding Father and the first president of the United States, serving from 1789 to 1797.
Pembersihan
Agar tidak dikenai biaya pada akun Trusted Cloud by S3NS Anda untuk resource yang digunakan di halaman ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.
Menghapus project
- In the Trusted Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Menghapus resource satu per satu
Hapus resource Kubernetes yang Anda buat dari panduan ini:
kubectl delete deployment inference-mixtral-ccc kubectl delete service llm-service kubectl delete computeclass dws-model-inference-class kubectl delete secret model-inference-secret
Hapus cluster:
gcloud container clusters delete CLUSTER_NAME
Langkah berikutnya
- Pelajari lebih lanjut cara Melatih beban kerja kecil dengan mulai fleksibel.
- Pelajari lebih lanjut GPU di GKE.