Tutorial ini menunjukkan cara menyajikan model open source model bahasa besar (LLM) models, menggunakan Unit Pemrosesan Tensor (TPU) di Google Kubernetes Engine (GKE) dengan Optimum TPU framework penyajian dari Hugging Face. Dalam tutorial ini, Anda akan mendownload model open source dari Hugging Face dan men-deploy model di cluster GKE Standard menggunakan container yang menjalankan Optimum TPU.
Panduan ini memberikan titik awal jika Anda memerlukan kontrol terperinci, skalabilitas, ketahanan, portabilitas, dan efektivitas biaya Kubernetes terkelola saat men-deploy dan menyajikan workload AI/ML.
Tutorial ini ditujukan untuk pelanggan AI Generatif di ekosistem Hugging Face, pengguna baru atau yang sudah ada di GKE, ML Engineer, MLOps (DevOps) engineer, atau administrator platform yang tertarik menggunakan kemampuan orkestrasi container Kubernetes untuk menyajikan LLM.
Google Cloud Produk seperti GKE, Vertex AI, dan Compute Engine mendukung berbagai library penyajian, seperti JetStream, vLLM, dan penawaran partner lainnya. Misalnya, Anda dapat menggunakan JetStream untuk mendapatkan pengoptimalan terbaru dari project. Jika lebih memilih opsi Hugging Face, Anda dapat menggunakan Optimum TPU.
Optimum TPU mendukung fitur berikut:
- Batching berkelanjutan
- Streaming token
- Penelusuran greedy dan pengambilan sampel multinomial menggunakan transformer.
Tujuan
- Menyiapkan cluster GKE Standard dengan topologi TPU yang direkomendasikan berdasarkan karakteristik model.
- Men-deploy Optimum TPU di GKE.
- Menggunakan Optimum TPU untuk menyajikan model yang didukung melalui curl.
Sebelum memulai
- Login ke akun Anda. Google Cloud 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.
-
If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.
-
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.
-
If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.
-
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.
- Buat akun Hugging Face jika Anda belum memilikinya.
- Pastikan project Anda memiliki kuota yang cukup untuk Cloud TPU di GKE.
Peran yang diperlukan
Untuk mendapatkan izin yang diperlukan untuk mengonfigurasi cluster dan workload, minta administrator Anda untuk memberikan peran IAM berikut pada project:
- Admin Akun Layanan (
roles/iam.serviceAccountAdmin) -
Mengelola cluster GKE:
Admin Kubernetes Engine (
roles/container.admin) -
Membuat dan mengirim image ke Artifact Registry:
Administrator Artifact Registry (
roles/artifactregistry.admin)
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.
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
gcloud CLI.
Untuk menyiapkan lingkungan Anda dengan Cloud Shell, ikuti langkah-langkah berikut:
Di konsol, aktifkan Cloud Shell. Google Cloud
Di bagian bawah konsol Google Cloud , sesi Cloud Shell akan dimulai dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi pada sesi.
Tetapkan variabel lingkungan default:
gcloud config set project PROJECT_ID export PROJECT_ID=$(gcloud config get project) export CLUSTER_NAME=CLUSTER_NAME export REGION=REGION_NAME export ZONE=ZONE export HF_TOKEN=HF_TOKENGanti nilai berikut:
- PROJECT_ID: Project ID Anda Google Cloud .
- CLUSTER_NAME: nama cluster GKE Anda.
- REGION_NAME: region tempat cluster GKE, bucket Cloud Storage, dan node TPU Anda berada. Region ini berisi zona tempat jenis mesin TPU v5e tersedia (misalnya,
us-west1,us-west4,us-central1,us-east1,us-east5, ataueurope-west4). - (Hanya cluster Standard) ZONE: zona tempat resource TPU tersedia (misalnya,
us-west4-a). Untuk cluster Autopilot, Anda tidak perlu menentukan zona, hanya region. - HF_TOKEN: token HuggingFace Anda.
Buat clone repositori Optimum TPU:
git clone https://github.com/huggingface/optimum-tpu.git
Mendapatkan akses ke model
Anda dapat menggunakan model Gemma 2B atau Llama3 8B. Tutorial ini berfokus pada dua model ini, tetapi Optimum TPU mendukung lebih banyak model.
Gemma 2B
Untuk mendapatkan akses ke model Gemma untuk deployment ke GKE, Anda harus menandatangani perjanjian izin lisensi terlebih dahulu, lalu membuat token akses Hugging Face.
Menandatangani perjanjian izin lisensi
Anda harus menandatangani perjanjian izin untuk menggunakan Gemma. Ikuti petunjuk berikut:
- Akses halaman izin model.
- Verifikasi izin menggunakan akun Hugging Face Anda.
- Setujui persyaratan model.
Membuat token akses
Buat token Hugging Face baru jika Anda belum memilikinya:
- Klik Your Profile > Settings > Access Tokens.
- Klik New Token.
- Tentukan Nama sesuai pilihan Anda, dan berikan Peran minimal
Read. - Klik Generate a token.
- Salin token yang dihasilkan ke papan klip Anda.
Llama3 8B
Anda harus menandatangani perjanjian izin untuk menggunakan Llama3 8b di Hugging Face Repo
Membuat token akses
Buat token Hugging Face baru jika Anda belum memilikinya:
- Klik Your Profile > Settings > Access Tokens.
- Pilih New Token.
- Tentukan Nama sesuai pilihan Anda, dan berikan Peran minimal
Read. - Pilih Generate a token.
- Salin token yang dihasilkan ke papan klip Anda.
Membuat cluster GKE
Buat cluster GKE Standard dengan 1 node CPU:
gcloud container clusters create CLUSTER_NAME \
--project=PROJECT_ID \
--num-nodes=1 \
--location=REGION_NAME
Membuat node pool TPU
Buat node pool TPU v5e dengan 1 node dan 8 chip:
gcloud container node-pools create tpunodepool \
--location=REGION_NAME \
--num-nodes=1 \
--machine-type=ct5lp-hightpu-8t \
--node-locations=ZONE \
--cluster=CLUSTER_NAME
Jika resource TPU tersedia, GKE akan menyediakan node pool. Jika resource TPU tidak tersedia untuk sementara, output akan menampilkan pesan error GCE_STOCKOUT. Untuk memecahkan masalah error ketersediaan resource, lihat
Resource TPU tidak cukup untuk memenuhi permintaan TPU.
Membuat container
Jalankan perintah make untuk membangun image
cd optimum-tpu && make tpu-tgi
Mengirim image ke Artifact Registry
gcloud artifacts repositories create optimum-tpu --repository-format=docker --location=REGION_NAME && \
gcloud auth configure-docker REGION_NAME-docker.pkg.dev && \
docker image tag huggingface/optimum-tpu REGION_NAME-docker.pkg.dev/PROJECT_ID/optimum-tpu/tgi-tpu:latest && \
docker push REGION_NAME-docker.pkg.dev/PROJECT_ID/optimum-tpu/tgi-tpu:latest
Membuat Secret Kubernetes untuk kredensial Hugging Face
Buat Secret Kubernetes yang berisi token Hugging Face:
kubectl create secret generic hf-secret \
--from-literal=hf_api_token=${HF_TOKEN} \
--dry-run=client -o yaml | kubectl apply -f -
Men-deploy Optimum TPU
Untuk men-deploy Optimum TPU, tutorial ini menggunakan Deployment Kubernetes. Deployment adalah objek Kubernetes API yang memungkinkan Anda menjalankan beberapa replika Pod yang didistribusikan di antara node dalam cluster.
Gemma 2B
Simpan manifes Deployment berikut sebagai
optimum-tpu-gemma-2b-2x4.yaml:Manifes ini menjelaskan deployment Optimum TPU dengan load balancer internal di port TCP 8080.
Terapkan manifes
kubectl apply -f optimum-tpu-gemma-2b-2x4.yaml
Llama3 8B
Simpan manifes berikut sebagai
optimum-tpu-llama3-8b-2x4.yaml:Manifes ini menjelaskan deployment Optimum TPU dengan load balancer internal di port TCP 8080.
Terapkan manifes
kubectl apply -f optimum-tpu-llama3-8b-2x4.yaml
Lihat log dari Deployment yang sedang berjalan:
kubectl logs -f -l app=tgi-tpu
Outputnya akan mirip dengan berikut ini:
2024-07-09T22:39:34.365472Z WARN text_generation_router: router/src/main.rs:295: no pipeline tag found for model google/gemma-2b
2024-07-09T22:40:47.851405Z INFO text_generation_router: router/src/main.rs:314: Warming up model
2024-07-09T22:40:54.559269Z INFO text_generation_router: router/src/main.rs:351: Setting max batch total tokens to 64
2024-07-09T22:40:54.559291Z INFO text_generation_router: router/src/main.rs:352: Connected
2024-07-09T22:40:54.559295Z WARN text_generation_router: router/src/main.rs:366: Invalid hostname, defaulting to 0.0.0.0
Pastikan model didownload sepenuhnya sebelum melanjutkan ke bagian berikutnya.
Menyajikan model
Siapkan penerusan port ke model:
kubectl port-forward svc/service 8080:8080
Berinteraksi dengan server model menggunakan curl
Verifikasi model yang di-deploy:
Dalam sesi terminal baru, gunakan curl untuk melakukan chat dengan model:
curl 127.0.0.1:8080/generate -X POST -d '{"inputs":"What is Deep Learning?","parameters":{"max_new_tokens":40}}' -H 'Content-Type: application/json'
Outputnya akan mirip dengan berikut ini:
{"generated_text":"\n\nDeep learning is a subset of machine learning that uses artificial neural networks to learn from data.\n\nArtificial neural networks are inspired by the way the human brain works. They are made up of multiple layers"}
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 akun Anda tidak dikenai biaya untuk resource yang dibuat dalam panduan ini, jalankan perintah berikut: Google Cloud
gcloud container clusters delete CLUSTER_NAME \
--location=REGION_NAME
Langkah berikutnya
- Pelajari dokumentasi Optimum TPU dokumentasi.
- Temukan cara menjalankan model Gemma di GKE dan cara menjalankan workload AI/ML yang dioptimalkan dengan kemampuan orkestrasi platform GKE.
- Pelajari TPU lebih lanjut di GKE.