Tutorial ini menunjukkan cara men-deploy dan menyajikan
Qwen3-Coder-30B-A3B (Qwen/Qwen3-Coder-30B-A3B-Instruct-FP8),
model coding mixture of experts, di Google Kubernetes Engine (GKE). Deployment ini
menggunakan akselerator TPU v6e (Trillium) multi-host dan
framework penyajian SGLang 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 menggunakan Kubernetes LeaderWorkerSet API untuk melakukan hal berikut:
- Jalankan server pra-pengisian dan dekode multi-host yang dipisahkan pada slice TPU v6e terpisah dengan paralelisme tensor dan paralelisme pakar diaktifkan.
- Merutekan permintaan melalui router disagregasi SGLang.
Untuk menjalankan alur kerja penyajian TorchTPU SGLang multi-host serupa di akselerator TPU7x (Ironwood) dengan model Qwen3-Coder-480B yang lebih besar, lihat Menyajikan Qwen3-Coder-480B di GKE dengan TorchTPU SGLang multi-host dan disagregasi PD di akselerator TPU7x.
Tujuan
- Siapkan cluster GKE dan node pool TPU v6e multi-host.
- Konfigurasikan kredensial dan instal 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.
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:
Instal dan lakukan inisialisasi Google Cloud CLI, dan instal
kubectl. Jika Anda menggunakan Cloud Shell, kedua alat tersebut sudah diinstal sebelumnya.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 400 GiB kuota Google Cloud Hyperdisk Balanced yang tersedia di empat volume efemeral 100 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.
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) - 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 TPU v6e, sepertius-central1-b.YOUR_RESERVATION_NAME: jika Anda menggunakan pemesanan, nama pemesanan TPU v6e Anda.YOUR_HF_TOKEN: token akses Hugging Face Anda.
Jika Anda menggunakan image container TorchTPU SGLang kustom, ganti
lmsysorg/sglang:v0.1.0-tpu dalam variabel SGLANG_IMAGE dengan URI image
Anda.
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 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 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):Selain menggunakan pemesanan tertentu, Anda juga dapat membuat node pool menggunakan kapasitas Spot atau VM Flex-start:
Spot VM
Sediakan node pool menggunakan kapasitas Spot dengan mengganti flag
--reservation-affinity=specificdan--reservation="${RESERVATION}"dengan flag--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
Sediakan node pool menggunakan opsi konsumsi Flex-start:
Untuk mengetahui informasi selengkapnya, lihat Menjalankan workload batch kecil dengan TPU dan Flex-start VM.
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-30b-multihost-disagg-v6e-2x4.yaml) menentukan
resource berikut untuk mengoordinasikan prefill dan inferensi decode yang dipisahkan
di dua node pool TPU v6e 2x4:
StorageClass (
hyperdisk-balanced-tpu): menyediakan volume ReadWriteOnce 100 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-30B-A3B-Instruct-FP8yang didownload secara lokal.Prefill pool (
sglang-prefill-servicedansglang-tpu-prefill): menjalankan LeaderWorkerSet, yang berisi satu Pod leader dan satu Pod worker, yang disematkan secara eksklusif ke satu node pool TPU v6e2x4. Node pool ini memiliki delapan chip TPU, yang menyediakan delapan TensorCore. LeaderWorkerSet menggunakan anotasileaderworkerset.sigs.k8s.io/exclusive-topologyyang ditetapkan ke"cloud.google.com/gke-nodepool". Pod meluncurkansglang.launch_serverdengan flag berikut, yang mengekspos port8000dan port bootstrap8998:--disaggregation-mode=prefill--tensor-parallel-size=8--ep-size=8
Decode pool (
sglang-decode-servicedansglang-tpu-decode): menjalankan LeaderWorkerSetsize: 2yang disematkan ke node pool TPU v6e2x4kedua (delapan chip TPU, yang menyediakan delapan TensorCore). LeaderWorkerSet meluncurkansglang.launch_serverdengan flag berikut:--disaggregation-mode=decode--tensor-parallel-size=8--ep-size=8
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-30b-multihost-disagg-v6e-2x4.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 tujuh hingga sepuluh 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 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 leader prefill dan decode menampilkan 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 menjalankan benchmark model Qwen3-Coder-30B-A3B yang di-deploy menggunakan workload input 1.024 token dan output 1.024 token (1k/1k) dari Pod sglang-router, jalankan perintah berikut:
Setelah benchmark selesai, cari output yang berisi metrik seperti
berikut:
Output token throughput
Total token throughput
TTFT
TPOT
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 TPU v6e dan cluster GKE:
Langkah berikutnya
- Pelajari SGLang lebih lanjut.
- Pelajari lebih lanjut TPU v6e (Trillium).
- Pelajari Cloud TPU lebih lanjut.
Kecuali dinyatakan lain, konten di halaman ini dilisensikan berdasarkan Lisensi Creative Commons Attribution 4.0, sedangkan contoh kode dilisensikan berdasarkan Lisensi Apache 2.0. Untuk mengetahui informasi selengkapnya, lihat Kebijakan Situs Google Developers. Java adalah merek dagang terdaftar dari Oracle dan/atau afiliasinya.
Terakhir diperbarui pada 2026-11-03 UTC.