Tutorial ini menunjukkan cara men-deploy dan menyajikan
Qwen3-Coder-480B (Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8),
model coding Mixture-of-Experts, di Google Kubernetes Engine (GKE). Deployment ini menggunakan akselerator TPU7x (Ironwood) multi-host dan framework inferensi SGLang dengan TorchTPU (torchtpu) dan disagregasi prefill-decode (PD).
Dalam konfigurasi deployment yang dijelaskan dalam tutorial ini, Anda akan menyediakan
dua node pool tpu7x-standard-4t multi-host, yang masing-masing disusun dalam topologi
2x2x2 (delapan chip TPU7x di dua node per node pool, dengan total 16
chip TPU7x). Anda menggunakan Kubernetes LeaderWorkerSet API untuk melakukan hal berikut:
- Jalankan server pra-pengisian dan dekode multi-host yang dipisahkan pada slice TPU7x terpisah dengan tensor parallelism dan expert parallelism diaktifkan.
- Merutekan permintaan yang kompatibel dengan OpenAI melalui router disagregasi SGLang.
Tujuan
- Siapkan cluster GKE dan node pool TPU7x multi-host.
- Mengonfigurasi kredensial dan menginstal pengontrol LeaderWorkerSet.
- Men-deploy workload prefill, dekode, dan router SGLang multi-host.
- Kirim permintaan inferensi ke layanan router SGLang.
- Menjalankan workload benchmark inferensi.
- 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]((https://cloud.google.com/products/calculator).
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
- Instal dan lakukan inisialisasi
Google Cloud CLI, dan instal
kubectl. Jika Anda menggunakan Cloud Shell, kedua alat tersebut sudah diinstal sebelumnya.
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.
Aktifkan Kubernetes Engine API, Compute Engine API, Cloud TPU API, dan Artifact Registry API di project Google Cloud Anda:
Pastikan project Anda memiliki kuota disk dan kuota alamat IP eksternal yang memadai di region tempat kapasitas TPU Anda berada:
Di konsol Google Cloud , buka halaman Quotas & System Limits.
Pastikan Anda memiliki setidaknya 2.800 GiB kuota Google Cloud Hyperdisk Balanced yang tersedia di empat volume efemeral 700 GiB yang digunakan untuk caching model oleh Pod prefill dan decode.
Filter menurut In-use regional external IPv4 addresses dan pastikan Anda memiliki kuota alamat IP yang cukup di region target.
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) - 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.
Pastikan akun layanan default Compute Engine Anda memiliki peran Identity and Access Management (IAM) berikut di project Anda:
- Kubernetes Engine Default Node Service Account
(
roles/container.defaultNodeServiceAccount) - Pembaca Artifact Registry
(
roles/artifactregistry.reader)
Menyiapkan variabel lingkungan Anda
Ekspor variabel lingkungan yang Anda gunakan di sepanjang tutorial ini:
Ganti kode berikut:
YOUR_CLUSTER_NAME: nama cluster GKE Anda.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 TPU7x, sepertius-central1-c.YOUR_RESERVATION_NAME: jika Anda menggunakan pemesanan, nama pemesanan TPU7x Anda.YOUR_HF_TOKEN: token akses Hugging Face Anda.YOUR_SGLANG_TPU_IMAGE: jika Anda menggunakan image container TorchTPU SGLang kustom, URI image Anda; jika tidak, image TorchTPU SGLang default.
Membuat cluster GKE
Untuk membuat cluster GKE dalam mode Standard dan memasang dua node pool TPU7x multi-host untuk disaggregasi prefill dan decode, selesaikan langkah-langkah berikut:
Buat cluster GKE regional yang menggunakan node
e2-standard-4untuk node pool default, yang menyediakan resource CPU dan memori yang memadai untuk pengontrol LeaderWorkerSet dan router disagregasi SGLang:Buat kebijakan penempatan workload dengan throughput tinggi dengan topologi akselerator
2x2x2, yang diperlukan untuk node pool TPU7x multi-host:Buat dua node pool TPU7x multi-host (
tpu7x-pool-0dantpu7x-pool-1), masing-masing berisi dua nodetpu7x-standard-4t(delapan chip TPU7x dalam topologi2x2x2per node pool, dengan total 16 chip TPU7x):Alih-alih menggunakan pemesanan tertentu, Anda juga dapat membuat node pool menggunakan kapasitas Spot atau VM Flex-start dengan meneruskan flag berikut:
- Spot VM: ganti
--reservation-affinity=specificdan--reservation=${RESERVATION}dengan--spotuntuk menggunakan kapasitas Spot. Instance yang menggunakan kapasitas Spot mungkin memerlukan waktu untuk dibuat setelah node pool dibuat, dan mungkin di-preempt selama workload berjalan. - Flex-start VM: ganti
--num-nodes=2,--reservation-affinity=specific, dan--reservation=${RESERVATION}dengan--flex-start,--enable-autoscaling,--num-nodes=0,--min-nodes=0, dan--max-nodes=2untuk menyediakan node pool menggunakan opsi konsumsi Flex-start. Untuk mengetahui informasi selengkapnya, lihat Menjalankan workload batch kecil dengan TPU dan VM Flex-start.
- Spot VM: ganti
Konfigurasi kredensial
kubectluntuk berkomunikasi dengan cluster Anda:
Mengonfigurasi kredensial dan menginstal LeaderWorkerSet
Untuk menyiapkan cluster Anda untuk deployment SGLang multi-host, selesaikan langkah-langkah berikut:
Buat Secret Kubernetes bernama
hf-secretuntuk menyimpan token akses Hugging Face Anda:Instal CustomResourceDefinition dan pengontrol LeaderWorkerSet di cluster Anda:
Men-deploy server SGLang multi-host
Manifes workload (qwen3-coder-480b-multihost-disagg-v7x.yaml) menentukan
resource berikut untuk mengoordinasikan prefill dan inferensi decode yang dipisahkan
di dua node pool 2x2x2 TPU7x:
- StorageClass (
hyperdisk-balanced-tpu): menyediakan volume ReadWriteOnce 700 GiB efemeral yang didukung oleh penyimpanan Google Cloud Hyperdisk Balanced. Setiap dari empat Pod prefill dan dekode memasang volumenya sendiri di/datauntuk menyimpan checkpointQwen/Qwen3-Coder-480B-A35B-Instruct-FP8yang didownload secara lokal. - Prefill pool (
sglang-prefill-servicedansglang-tpu-prefill): menjalankan LeaderWorkerSetsize: 2(satu Pod leader dan satu Pod worker) yang disematkan secara eksklusif ke satu node pool2x2x2TPU7x (delapan TPU chip, yang menyediakan 16 TensorCore). LeaderWorkerSet menggunakan anotasileaderworkerset.sigs.k8s.io/exclusive-topologyyang ditetapkan ke"cloud.google.com/gke-nodepool". Pod meluncurkansglang.launch_serverdengan flag--disaggregation-mode=prefill,--tensor-parallel-size=16, dan--ep-size=16, yang mengekspos port HTTP8000dan port bootstrap8998. - Decode pool (
sglang-decode-servicedansglang-tpu-decode): menjalankan LeaderWorkerSetsize: 2yang disematkan ke node pool TPU7x2x2x2kedua (delapan TPU chip, yang menyediakan 16 TensorCore). LeaderWorkerSet meluncurkansglang.launch_serverdengan flag--disaggregation-mode=decode,--tensor-parallel-size=16, dan--ep-size=16. - Router disagregasi (
sglang-routerdansglang-service): menjalankan Deployment CPU yang mengeksekusi modulsglang_router.launch_routerdengan flag--pd-disaggregationdan mengekspos Layanan ClusterIP di port8000. Router mengarahkan perintah dan mengoordinasikan transfer cache KV antara layanansglang-prefill-servicedansglang-decode-service.
Untuk men-deploy dan memantau server SGLang multi-host, selesaikan langkah-langkah berikut:
Download manifes workload:
Atau, buat file bernama
qwen3-coder-480b-multihost-disagg-v7x.yamldengan konten berikut:Terapkan manifes workload ke cluster Anda:
Pastikan Pod router, prefill, dan decode telah dibuat:
Jika semua Pod sudah siap, output-nya akan mirip dengan berikut ini:
NAME READY STATUS RESTARTS AGE sglang-router-6d87cb8c7d-gv4wr 1/1 Running 0 39m sglang-tpu-decode-0 1/1 Running 0 40m sglang-tpu-decode-0-1 1/1 Running 0 40m sglang-tpu-prefill-0 1/1 Running 0 40m sglang-tpu-prefill-0-1 1/1 Running 0 40mPantau log Pod leader prefill dan decode hingga startup selesai:
Download model awal, pemuatan bobot, dan kompilasi memerlukan waktu sekitar 15 hingga 30 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 workload berjalan. Untuk mengetahui informasi selengkapnya, lihat Instance preemptible VM. Untuk memeriksa apakah node slice TPU Anda telah dibuat, lihat Memeriksa status dan kondisi node.
Tunggu hingga log Pod pemimpin prefill dan dekode menghasilkan pesan berikut dan
kubectl get podsmenampilkan1/1di kolomREADYuntuk semua Pod:The server is fired up and ready to roll!Buka sesi terminal kedua dan teruskan port lokal
8000kesglang-service:Biarkan penerusan port berjalan di sesi terminal ini.
Mengirim permintaan inferensi
Kembali ke sesi terminal pertama Anda dan kirim permintaan penyelesaian chat ke endpoint /v1/chat/completions yang diekspos oleh router SGLang:
Menjalankan workload benchmark
Untuk melakukan benchmark pada model Qwen3-Coder yang di-deploy menggunakan workload input 1.024 token dan output 1.024 token (1k/1k) dari Pod sglang-router, jalankan perintah berikut:
Pembersihan
Agar tidak menimbulkan biaya berkelanjutan tambahan pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus resource berikut:
Hapus workload prefill, dekode, dan router SGLang:
Hapus node pool TPU7x, kebijakan penempatan workload, dan cluster GKE:
Langkah berikutnya
- Pelajari SGLang lebih lanjut.
- Pelajari lebih lanjut TPU7x (Ironwood).
- Pelajari Cloud TPU lebih lanjut.