Tutorial ini menunjukkan cara men-deploy dan menayangkan model bahasa besar (LLM) menggunakan GPU di Google Kubernetes Engine (GKE) dengan NVIDIA Triton Inference Server dan TensorFlow Serving Hal ini memberikan dasar untuk memahami dan mempelajari deployment LLM praktis untuk inferensi di lingkungan Kubernetes terkelola. Anda men-deploy penampung yang telah dibuat sebelumnya ke cluster GKE dengan satu GPU Tensor Core L4 dan Anda menyiapkan infrastruktur GKE untuk melakukan inferensi online.
Tutorial ini ditujukan untuk engineer Machine learning (ML), Admin dan operator platform, serta spesialis Data dan AI yang ingin menghosting model machine learning (ML) terlatih di cluster GKE. Untuk mempelajari lebih lanjut peran umum dan contoh tugas yang dirujuk dalam konten, lihat Peran dan tugas pengguna GKE umum. Google Cloud
Sebelum membaca halaman ini, pastikan Anda memahami hal-hal berikut:
Membuat bucket Cloud Storage
Buat bucket Cloud Storage untuk menyimpan model terlatih yang akan ditayangkan.
Di Cloud Shell, jalankan perintah berikut:
gcloud storage buckets create gs://$GSBUCKET
Konfigurasi cluster Anda untuk mengakses bucket menggunakan Workload Identity Federation for GKE
Agar cluster Anda dapat mengakses bucket Cloud Storage, lakukan langkah berikut:
- Buat akun layanan Google Cloud .
- Buat Akun Layanan Kubernetes di cluster Anda.
- Ikat Akun Layanan Kubernetes ke akun layanan Google Cloud .
Buat akun layanan Google Cloud
Di konsol Google Cloud , buka halaman Create service account:
Di kolom Service account ID, masukkan
gke-ai-sa
.Klik Buat dan lanjutkan.
Di daftar Role, pilih peran Cloud Storage > Storage Insights Collector Service.
Klik
Add another role.Dalam daftar Select a role, pilih peran Cloud Storage > Storage Object Admin.
Klik Lanjutkan lalu klik Selesai.
Membuat Akun Layanan Kubernetes di cluster Anda
Di Cloud Shell, lakukan hal berikut:
Membuat namespace Kubernetes:
kubectl create namespace gke-ai-namespace
Buat Akun Layanan Kubernetes dalam namespace:
kubectl create serviceaccount gpu-k8s-sa --namespace=gke-ai-namespace
Ikat Akun Layanan Kubernetes ke akun layanan Google Cloud
Di Cloud Shell jalankan perintah berikut:
Tambahkan binding IAM ke akun layanan Google Cloud :
gcloud iam service-accounts add-iam-policy-binding gke-ai-sa@PROJECT_ID.iam.gserviceaccount.com \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:PROJECT_ID.svc.id.goog[gke-ai-namespace/gpu-k8s-sa]"
Flag
--member
memberikan identitas lengkap Akun Layanan Kubernetes di Google Cloud.Anotasikan Akun Layanan Kubernetes:
kubectl annotate serviceaccount gpu-k8s-sa \ --namespace gke-ai-namespace \ iam.gke.io/gcp-service-account=gke-ai-sa@PROJECT_ID.iam.gserviceaccount.com
Men-deploy server inferensi online
Setiap framework inferensi online mengharapkan untuk menemukan model ML terlatih dalam format tertentu. Bagian berikut menunjukkan cara men-deploy server inferensi, bergantung pada framework yang ingin Anda gunakan:
Triton
Di Cloud Shell, salin model ML terlatih ke dalam bucket Cloud Storage:
gcloud storage cp src/triton-model-repository gs://$GSBUCKET --recursive
Deploy framework menggunakan Deployment. Deployment adalah objek Kubernetes API yang memungkinkan Anda menjalankan beberapa replika Pod yang didistribusikan di antara node dalam cluster.:
envsubst < src/gke-config/deployment-triton.yaml | kubectl --namespace=gke-ai-namespace apply -f -
Pastikan GKE men-deploy framework:
kubectl get deployments --namespace=gke-ai-namespace
Jika framework sudah siap, output-nya akan mirip dengan berikut ini:
NAME READY UP-TO-DATE AVAILABLE AGE triton-deployment 1/1 1 1 5m29s
Deploy Layanan untuk mengakses Deployment:
kubectl apply --namespace=gke-ai-namespace -f src/gke-config/service-triton.yaml
Periksa apakah IP eksternal ditetapkan:
kubectl get services --namespace=gke-ai-namespace
Outputnya mirip dengan hal berikut ini:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 34.118.224.1 <none> 443/TCP 60m triton-server LoadBalancer 34.118.227.176 35.239.54.228 8000:30866/TCP,8001:31035/TCP,8002:30516/TCP 5m14s
Catat alamat IP untuk
triton-server
di kolom EXTERNAL-IPPastikan layanan dan deployment berfungsi dengan benar:
curl -v EXTERNAL_IP:8000/v2/health/ready
Outputnya mirip dengan hal berikut ini:
... < HTTP/1.1 200 OK < Content-Length: 0 < Content-Type: text/plain ...
Penayangan TF
Di Cloud Shell, salin model ML terlatih ke dalam bucket Cloud Storage:
gcloud storage cp src/tfserve-model-repository gs://$GSBUCKET --recursive
Deploy framework menggunakan Deployment. Deployment adalah objek Kubernetes API yang memungkinkan Anda menjalankan beberapa replika Pod yang didistribusikan di antara node dalam cluster.:
envsubst < src/gke-config/deployment-tfserve.yaml | kubectl --namespace=gke-ai-namespace apply -f -
Pastikan GKE men-deploy framework:
kubectl get deployments --namespace=gke-ai-namespace
Jika framework sudah siap, output-nya akan mirip dengan berikut ini:
NAME READY UP-TO-DATE AVAILABLE AGE tfserve-deployment 1/1 1 1 5m29s
Deploy Layanan untuk mengakses Deployment:
kubectl apply --namespace=gke-ai-namespace -f src/gke-config/service-tfserve.yaml
Periksa apakah IP eksternal ditetapkan:
kubectl get services --namespace=gke-ai-namespace
Outputnya mirip dengan hal berikut ini:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 34.118.224.1 <none> 443/TCP 60m tfserve-server LoadBalancer 34.118.227.176 35.239.54.228 8500:30003/TCP,8000:32194/TCP 5m14s
Catat alamat IP untuk
tfserve-server
di kolom EXTERNAL-IP.Periksa apakah Layanan dan Deployment berfungsi dengan benar:
curl -v EXTERNAL_IP:8000/v1/models/mnist
Ganti
EXTERNAL_IP
dengan alamat IP eksternal Anda.Outputnya mirip dengan hal berikut ini:
... < HTTP/1.1 200 OK < Content-Type: application/json < Date: Thu, 12 Oct 2023 19:01:19 GMT < Content-Length: 154 < { "model_version_status": [ { "version": "1", "state": "AVAILABLE", "status": { "error_code": "OK", "error_message": "" } } ] }
Menyajikan model
Triton
Buat lingkungan virtual Python di Cloud Shell.
python -m venv ./mnist_client source ./mnist_client/bin/activate
Instal paket Python yang diperlukan.
pip install -r src/client/triton-requirements.txt
Uji server inferensi Triton dengan memuat gambar:
cd src/client python triton_mnist_client.py -i EXTERNAL_IP -m mnist -p ./images/TEST_IMAGE.png
Ganti kode berikut:
EXTERNAL_IP
: Alamat IP eksternal Anda.TEST_IMAGE
: Nama file yang sesuai dengan gambar yang ingin Anda uji. Anda dapat menggunakan gambar yang disimpan disrc/client/images
.
Bergantung pada gambar yang Anda gunakan, outputnya akan mirip dengan berikut ini:
Calling Triton HTTP Service -> Prediction result: 7
Penayangan TF
Buat lingkungan virtual Python di Cloud Shell.
python -m venv ./mnist_client source ./mnist_client/bin/activate
Instal paket Python yang diperlukan.
pip install -r src/client/tfserve-requirements.txt
Uji TensorFlow Serving dengan beberapa gambar.
cd src/client python tfserve_mnist_client.py -i EXTERNAL_IP -m mnist -p ./images/TEST_IMAGE.png
Ganti kode berikut:
EXTERNAL_IP
: Alamat IP eksternal Anda.TEST_IMAGE
: Nilai dari0
hingga9
. Anda dapat menggunakan gambar yang disimpan disrc/client/images
.
Bergantung pada gambar yang Anda gunakan, Anda akan mendapatkan output yang mirip dengan ini:
Calling TensorFlow Serve HTTP Service -> Prediction result: 5
Mengamati performa model
Triton
Untuk mengamati performa model, Anda dapat menggunakan integrasi dasbor Triton di Cloud Monitoring. Dengan dasbor ini, Anda dapat melihat metrik performa penting seperti throughput token, latensi permintaan, dan tingkat error.
Untuk menggunakan dasbor Triton, Anda harus mengaktifkan Google Cloud Managed Service for Prometheus, yang mengumpulkan metrik dari Triton, di cluster GKE Anda. Triton mengekspos metrik dalam format Prometheus secara default; Anda tidak perlu menginstal exporter tambahan.
Kemudian, Anda dapat melihat metrik menggunakan dasbor Triton. Untuk mengetahui informasi tentang cara menggunakan Google Cloud Managed Service for Prometheus untuk mengumpulkan metrik dari model Anda, lihat panduan kejelasan Triton dalam dokumentasi Cloud Monitoring.Penayangan TF
Untuk mengamati performa model, Anda dapat menggunakan integrasi dasbor TF Serving di Cloud Monitoring. Dengan dasbor ini, Anda dapat melihat metrik performa penting seperti throughput token, latensi permintaan, dan tingkat error.
Untuk menggunakan dasbor TF Serving, Anda harus mengaktifkan Google Cloud Managed Service for Prometheus, yang mengumpulkan metrik dari TF Serving, di cluster GKE Anda.
Kemudian, Anda dapat melihat metrik menggunakan dasbor TF Serving. Untuk mengetahui informasi tentang cara menggunakan Google Cloud Managed Service for Prometheus untuk mengumpulkan metrik dari model Anda, lihat panduan kemampuan pengamatan TF Serving dalam dokumentasi Cloud Monitoring.