Tutorial ini menunjukkan cara men-deploy dan menyajikan
Qwen3-30B-A3B (Qwen/Qwen3-30B-A3B-FP8),
model mixture of experts, di Google Kubernetes Engine (GKE). Deployment ini menggunakan akselerator TPU v6e (Trillium) multi-host dan framework penyajian TPU vLLM dengan TorchTPU (torchtpu) dan disagregasi prefill-decode (PD).
Dalam konfigurasi deployment yang dijelaskan dalam tutorial ini, Anda menyediakan
dua node pool ct6e-standard-4t multi-host, masing-masing disusun dalam topologi 2x4
(delapan chip TPU v6e di dua node per node pool, dengan total 16
chip TPU v6e). Anda akan menggunakan Kubernetes JobSet API dan Ray untuk melakukan hal berikut:
- Jalankan server pra-pengisian dan dekode multi-host yang dipisahkan pada slice TPU v6e terpisah dengan paralelisasi data dan paralelisasi pakar diaktifkan.
- Mengarahkan permintaan melalui proxy disagregasi.
Untuk menjalankan alur kerja penyajian TorchTPU vLLM multi-host serupa di akselerator TPU7x (Ironwood) dengan model Qwen3.5-397B yang lebih besar, lihat Menyajikan Qwen3.5-397B di GKE dengan TorchTPU vLLM multi-host di akselerator TPU7x.
Tujuan
- Siapkan cluster GKE dan node pool TPU v6e multi-host.
- Tempatkan bobot model di bucket Cloud Storage.
- Deploy server prefill, decode, dan proxy TorchTPU vLLM multi-host dengan JobSet.
- Menjalankan workload benchmark inferensi dan menganalisis hasilnya.
- Jalankan pembersihan.
Biaya
Dalam dokumen ini, Anda akan menggunakan komponenGoogle Cloudyang dapat ditagih berikut:
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga.
Setelah menyelesaikan tugas yang dijelaskan dalam dokumen ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk mengetahui informasi selengkapnya, lihat Pembersihan.
Sebelum memulai
Siapkan lingkungan Anda untuk tutorial:
Aktifkan Kubernetes Engine API di project Google Cloud Anda:
Instal dan lakukan inisialisasi Google Cloud CLI, dan instal
kubectl. Jika Anda menggunakan Cloud Shell, kedua alat tersebut sudah diinstal sebelumnya.Pastikan project Anda memiliki kuota SSD dan kuota alamat IP eksternal yang memadai di region tempat kapasitas TPU Anda berada:
Di konsol Google Cloud , buka halaman Quotas & System Limits.
Filter menurut Persistent Disk SSD (GB) dan pastikan Anda memiliki kuota SSD yang cukup di region target.
Filter menurut In-use regional external IPv4 addresses dan pastikan Anda memiliki kuota alamat IP yang cukup di region target.
Mendapatkan token akses Hugging Face
Anda memerlukan token akses Hugging Face untuk menggunakan tutorial ini. Anda dapat mendaftar untuk mendapatkan akun gratis di Hugging Face. Setelah Anda memiliki akun, buat token akses:
- Di halaman Welcome to Hugging Face, klik avatar akun Anda, lalu pilih Token akses.
- Di halaman Token akses, klik Create new token.
- Pilih jenis token Read dan masukkan nama untuk token Anda.
- Token akses Anda akan ditampilkan. Simpan token di tempat yang aman.
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk menyelesaikan tutorial ini, minta administrator untuk memberi Anda peran IAM berikut di project Anda:
- Kubernetes Engine Admin (
roles/container.admin) - Compute Admin (
roles/compute.admin) - Storage Admin (
roles/storage.admin) - Service Account User (
roles/iam.serviceAccountUser)
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 variabel lingkungan Anda
Untuk menyiapkan variabel lingkungan, selesaikan langkah-langkah berikut:
Siapkan autentikasi Anda:
Ekspor variabel lingkungan yang Anda gunakan di sepanjang tutorial ini:
Ganti kode berikut:
YOUR_PROJECT_ID: ID project Google Cloud Anda.YOUR_REGION: region tempat Anda ingin men-deploy cluster, sepertius-central1.YOUR_ZONE: zona tempat Anda ingin men-deploy node pool TPU v6e, sepertius-central1-c.YOUR_CLUSTER_NAME: nama cluster GKE Anda.YOUR_RESERVATION_NAME: jika Anda menggunakan pemesanan, nama pemesanan TPU v6e Anda.YOUR_GCS_BUCKET: nama bucket Cloud Storage yang Anda gunakan untuk melakukan staging bobot model.YOUR_HF_TOKEN: token akses Hugging Face Anda.
Jika Anda menggunakan image container TorchTPU vLLM kustom, ganti URI image
vllm/vllm-torchtpudefault dalam variabelVLLM_IMAGEdengan URI image Anda. Untuk image publik, lihat repositori vLLM TorchTPU.
Membuat cluster GKE
Untuk membuat cluster GKE dalam mode Standard dan memasang dua node pool TPU v6e multi-host untuk disaggregasi prefill dan decode, selesaikan langkah-langkah berikut:
Buat cluster GKE regional dengan Workload Identity Federation untuk GKE diaktifkan:
Outputnya mirip dengan hal berikut ini:
NAME LOCATION MASTER_VERSION MASTER_IP MACHINE_TYPE NODE_VERSION NUM_NODES STATUS STACK_TYPE asq-v6e us-central1 1.35.7-gke.1027000 35.226.172.84 e2-standard-4 1.35.7-gke.1027000 3 RUNNING IPV4Buat dua node pool TPU v6e multi-host, masing-masing berisi dua node
ct6e-standard-4t(delapan chip TPU v6e dalam topologi2x4per node pool, dengan total 16 chip TPU v6e):Tutorial ini menggunakan kapasitas Spot (
--spot). Instance yang menggunakan kapasitas Spot mungkin memerlukan waktu untuk dibuat setelah node pool dibuat, dan mungkin di-preempt selama workload berjalan. Anda juga dapat membuat node pool menggunakan pemesanan atau Flex-start VM dengan meneruskan flag berikut:Specific reservation: buat node pool menggunakan pemesanan tertentu:
Untuk mempelajari lebih lanjut tentang pemesanan TPU, lihat Tentang pemesanan Cloud TPU.
Flex-start VM: sediakan node pool menggunakan opsi konsumsi Flex-start:
Untuk mengetahui informasi selengkapnya, lihat Menjalankan workload batch kecil dengan TPU dan Flex-start VM.
Output untuk setiap node pool mirip dengan yang berikut ini:
NAME MACHINE_TYPE DISK_SIZE_GB NODE_VERSION np-0 ct6e-standard-4t 100 1.35.7-gke.1027000Konfigurasi kredensial
kubectluntuk berkomunikasi dengan cluster Anda:
Menyiapkan bobot model di Cloud Storage
Tahapkan bobot model di bucket Cloud Storage untuk menjalankan workload Anda:
Buat bucket Cloud Storage dengan akses level bucket yang seragam:
Berikan izin Identity and Access Management (IAM) pada bucket ke akun layanan Compute Engine default dan akun layanan Kubernetes default:
Buat Secret Kubernetes bernama
hf-secretuntuk menyimpan token akses Hugging Face Anda:Ambil manifes
download_qwen3_30b.yaml:Atau, buat file bernama
download_qwen3_30b.yamldengan konten berikut:Download bobot model
Qwen/Qwen3-30B-A3B-FP8ke volume staging dan transfer ke bucket Cloud Storage Anda:Langkah ini memerlukan waktu sekitar 5 hingga 10 menit.
Tunggu hingga Pod dimulai dan pantau log Tugas download:
Setelah Tugas selesai, pastikan semua 16 shard
.safetensorsberada di bucket Cloud Storage Anda:Hapus Tugas staging yang telah selesai:
Men-deploy server TorchTPU vLLM multi-host
Manifes workload (v6e_qwen3_server_multihost_slice.yaml) menentukan
resource JobSet Kubernetes (vllm-qwen3-30b-pd-disagg-v6e) dengan tiga
tugas yang direplikasi yang mengoordinasikan prefill dan decode yang dipisahkan di
dua node pool TPU v6e 2x4:
Server prefill (
prefill): menjalankan dua replika di satu node pool TPU v6e2x4(dua nodect6e-standard-4tdengan empat chip per host, sehingga totalnya delapan core TPU). Pod membentuk cluster Ray dua node dan meluncurkan TorchTPU vLLM di port8000untukQwen/Qwen3-30B-A3B-FP8. Server menggunakanTPURaidenConnectoryang dikonfigurasi sebagaikv_producerdengan flag berikut:--data-parallel-size=8--tensor-parallel-size=1--enable-expert-parallel--load-format=runai_streamer
Server dekode (
decode): menjalankan dua replika di node pool TPU v6e2x4kedua (total delapan TPU core). JobSet menggunakan aturan afinitas dan anti-afinitas Pod pada labelcloud.google.com/gke-nodepooluntuk mengisolasi prefill dan dekode ke node pool terpisah. Pod membentuk cluster Ray dua node dan meluncurkan vLLM TorchTPU di port7200denganTPURaidenConnectoryang dikonfigurasi sebagaikv_consumer.Proxy disagregasi (
proxy): menjalankan skriptoy_proxy_server.pydi port10000untuk mengoordinasikan pemilihan rute permintaan dan transfer cache KV antara server prefill (port8000) dan server dekode (port7200).
Untuk men-deploy dan memantau server vLLM yang dipisahkan, selesaikan langkah-langkah berikut:
Instal CustomResourceDefinition dan pengontrol JobSet Kubernetes di cluster Anda:
Ambil manifes server:
Atau, buat file bernama
v6e_qwen3_server_multihost_slice.yamldengan konten berikut:Ganti nama bucket Cloud Storage dan image container Anda ke dalam file
v6e_qwen3_server_multihost_slice.yamldan terapkan manifes:Konfigurasi ini menggunakan satu slice TPU v6e
2x4(dua node) untuk prefill dan satu slice TPU v6e2x4(dua node) untuk dekode. Untuk menskalakan jumlah node di salah satu pool, perbarui kolomreplicas(replicas: NUM_NODES). GantiNUM_NODESdengan jumlah node yang ingin Anda gunakan.Pantau log Pod prefill dan decode hingga startup aplikasi selesai:
Pemuatan dan kompilasi model awal memerlukan waktu sekitar 15 hingga 25 menit pada operasi pertama.
Jika Anda menggunakan kapasitas preemptible seperti kapasitas Spot atau VM Flex-start, mungkin perlu waktu lebih lama setelah pembuatan node pool untuk membuat node slice TPU, dan node tersebut mungkin di-preempt selama eksekusi workload. Untuk mengetahui detail selengkapnya, lihat Instance preemptible VM. Untuk memeriksa apakah node slice TPU Anda telah dibuat, lihat Memeriksa status dan kondisi node.
Tunggu hingga log server prefill dan dekode melaporkan
Application startup completesebelum Anda menjalankan workload benchmark:(APIServer pid=1) INFO: Started server process [1] (APIServer pid=1) INFO: Waiting for application startup. (APIServer pid=1) INFO: Application startup complete.
Menjalankan workload benchmark
Untuk melakukan benchmark pada model Qwen3-30B-A3B yang di-deploy menggunakan workload input 8.192 token dan output 1.024 token (8k/1k) terhadap proxy disagregasi, selesaikan langkah-langkah berikut:
Ambil manifes benchmark:
Atau, buat file bernama
v6e_qwen3_benchmark_multihost_slice.yamldengan konten berikut:Terapkan manifes Job benchmark:
Tunggu hingga Pod tolok ukur siap, dan pantau log Tugas tolok ukur:
Setelah benchmark selesai, cari output yang berisi metrik seperti berikut:
Output token throughputTotal token throughputTTFTTPOT
Pembersihan
Agar tidak menimbulkan biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus workload Kubernetes, TPU v6e node pool, cluster GKE, dan bucket Cloud Storage Anda:
Hapus workload Kubernetes:
Hapus node pool TPU v6e dan cluster GKE:
Hapus bucket Cloud Storage yang menyimpan bobot model yang di-stage. Jika Anda ingin mempertahankan bobot model, lewati langkah ini atau salin ke lokasi yang Anda inginkan:
Langkah berikutnya
- Pelajari lebih lanjut vLLM di Cloud TPU.
- Pelajari lebih lanjut TPU v6e (Trillium).
- Pelajari Cloud TPU lebih lanjut.