Kluster Pro terkelola ACK menyediakan lingkungan siap pakai untuk menjalankan layanan inferensi model bahasa besar (LLM) tanpa memerlukan perangkat keras GPU lokal maupun pengaturan dependensi yang rumit. Panduan ini mencakup dua jalur penerapan: opsi cepat untuk memvalidasi model dalam waktu sekitar 15 menit, dan opsi produksi yang memuat file model ke penyimpanan persisten terlebih dahulu guna mengurangi waktu cold-start dan biaya bandwidth.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
-
Kluster Pro terkelola ACK yang menjalankan Kubernetes 1.22 atau lebih baru
-
Setidaknya satu node berakselerasi GPU dengan memori GPU 16 GB atau lebih
-
Driver NVIDIA versi 535 atau lebih baru yang diinstal pada kelompok node GPU (panduan ini menggunakan
550.144.03, diatur melalui labelack.aliyun.com/nvidia-driver-version) -
Klien Arena yang telah diinstal
Pilih jalur penerapan
| Opsi 1: Uji cepat | Opsi 2: Produksi | |
|---|---|---|
| Waktu penyiapan | ~15 menit | Lebih lama (perlu unggah model terlebih dahulu) |
| Penyimpanan model | Diunduh ke dalam kontainer saat startup | Dimuat sebelumnya di Object Storage Service (OSS) |
| Cold-start | Lambat — model diunduh ulang setiap kali pod restart | Cepat — model sudah ada di volume yang dimount |
| Paling cocok untuk | Memvalidasi kemampuan inferensi | Beban kerja produksi yang stabil dan dapat diulang |
Opsi 1: Penerapan cepat untuk pengujian
Gunakan Arena untuk menerapkan qwen/Qwen1.5-4B-Chat dari ModelScope. Kontainer mengunduh model saat startup, sehingga node GPU memerlukan setidaknya 30 GB ruang disk kosong.
-
Jalankan perintah Arena untuk menerapkan layanan inferensi:
arena serve custom \ --name=modelscope \ --version=v1 \ --gpus=1 \ --replicas=1 \ --restful-port=8000 \ --readiness-probe-action="tcpSocket" \ --readiness-probe-action-option="port: 8000" \ --readiness-probe-option="initialDelaySeconds: 30" \ --readiness-probe-option="periodSeconds: 30" \ --image=kube-ai-registry.cn-shanghai.cr.aliyuncs.com/kube-ai/quick-deploy-llm:v1 \ "MODEL_ID=qwen/Qwen1.5-4B-Chat python3 server.py"Untuk menarik file model dari repositori Hugging Face, lihat Tarik model dari Hugging Face.
Output berikut mengonfirmasi bahwa sumber daya Kubernetes untuk
modelscope-v1telah dibuat:service/modelscope-v1 created deployment.apps/modelscope-v1-custom-serving created INFO[0002] The Job modelscope has been submitted successfully INFO[0002] You can run `arena serve get modelscope --type custom-serving -n default` to check the job status -
Periksa status layanan. Pod tetap dalam status
ContainerCreatingselama proses pengunduhan model. Bergantung pada kondisi jaringan, proses ini dapat memakan waktu 5–15 menit:arena serve get modelscopeSaat status pod menunjukkan
Running, layanan inferensi siap digunakan.
Opsi 2: Penerapan siap produksi dengan penyimpanan persisten
Memuat file model terlebih dahulu di OSS menghindari pengunduhan ulang file berukuran lebih dari 10 GB setiap kali pod restart. Hal ini mengurangi waktu cold-start, menekan biaya bandwidth, dan meningkatkan stabilitas layanan.
Langkah 1: Unduh file model
-
Instal Git dan Git Large File Storage (LFS). macOS
brew install git brew install git-lfsWindows Unduh dan instal Git dari situs resmi Git. Git Large File Storage sudah termasuk dalam Git for Windows — unduh versi terbaru. Linux (berbasis Red Hat)
yum install git yum install git-lfsUntuk distribusi Linux lainnya, lihat situs resmi Git.
-
Klon repositori model Qwen1.5-4B-Chat dan tarik file besar:
GIT_LFS_SKIP_SMUDGE=1 git clone https://www.modelscope.cn/qwen/Qwen1.5-4B-Chat.git cd Qwen1.5-4B-Chat git lfs pull
Langkah 2: Unggah file model ke OSS
-
Buat bucket. Untuk mengurangi latensi saat menarik model, buat bucket di wilayah yang sama dengan kluster Anda:
ossutil mb oss://<your-bucket-name> -
Buat folder di dalam bucket untuk file model:
ossutil mkdir oss://<your-bucket-name>/Qwen1.5-4B-Chat -
Unggah file model:
ossutil cp -r ./Qwen1.5-4B-Chat oss://<your-bucket-name>/Qwen1.5-4B-Chat
Langkah 3: Konfigurasikan volume persisten (PV)
-
Masuk ke Konsol ACK dan klik kluster target. Di panel navigasi kiri, pilih Volumes > Persistent Volumes.
-
Klik Create. Di kotak dialog Create PV, atur parameter berikut lalu klik Create:
Parameter Nilai PV type OSSVolume name llm-modelCapacity 20GiAccess mode ReadOnlyManyAccess certificate Pilih Create Secret Optional parameters -o umask=022 -o max_stat_cache_size=0 -o allow_otherBucket ID Klik Select Bucket dan pilih bucket Anda OSS path /Qwen1.5-4B-ChatEndpoint Pilih Public Endpoint
Langkah 4: Konfigurasikan klaim volume persisten (PVC)
-
Di panel navigasi kiri, pilih Volumes > Persistent Volume Claims.
-
Di halaman Persistent Volume Claims, atur parameter berikut lalu klik Create:
Parameter Nilai PVC type OSSName llm-modelAllocation mode Pilih Existing Volumes Existing volumes Pilih PV llm-modelyang dibuat pada langkah sebelumnyaCapacity 20Gi
Langkah 5: Terapkan layanan inferensi
Jalankan perintah Arena untuk menerapkan layanan. Bendera --data memount PVC yang berisi file model yang telah dimuat sebelumnya. Karena model sudah ada di volume yang dimount, pod langsung mulai tanpa perlu mengunduh apa pun:
arena serve custom \
--name=modelscope \
--version=v1 \
--gpus=1 \
--replicas=1 \
--restful-port=8000 \
--readiness-probe-action="tcpSocket" \
--readiness-probe-action-option="port: 8000" \
--readiness-probe-option="initialDelaySeconds: 30" \
--readiness-probe-option="periodSeconds: 30" \
--data=llm-model:/Qwen1.5-4B-Chat \
--image=kube-ai-registry.cn-shanghai.cr.aliyuncs.com/kube-ai/quick-deploy-llm:v1 \
"MODEL_ID=/Qwen1.5-4B-Chat python3 server.py"
Output berikut mengonfirmasi bahwa layanan inferensi telah diajukan:
service/modelscope-v1 created
deployment.apps/modelscope-v1-custom-serving created
INFO[0001] The Job modelscope has been submitted successfully
INFO[0001] You can run `arena serve get modelscope --type custom-serving -n default` to check the job status
Periksa status layanan:
arena serve get modelscope
Saat status pod menunjukkan Running, layanan inferensi siap digunakan.
Validasi layanan inferensi
-
Siapkan penerusan port ke layanan inferensi:
Pentingkubectl port-forwardhanya untuk pengembangan dan debugging. Tidak andal, aman, atau skalabel di lingkungan produksi. Untuk jaringan produksi, lihat Manajemen Ingress.kubectl port-forward svc/modelscope-v1 8000:8000Output yang diharapkan:
Forwarding from 127.0.0.1:8000 -> 8000 Forwarding from [::1]:8000 -> 8000 -
Di terminal baru, kirim permintaan inferensi uji:
curl -X POST http://localhost:8000/generate \ -H "Content-Type: application/json" \ -d '{ "text_input": "What is artificial intelligence? Artificial intelligence is", "parameters": { "stream": false, "temperature": 0.9, "seed": 10 } }'Tanggapan sukses berisi teks yang dihasilkan oleh model:
{"model_name":"/Qwen1.5-4B-Chat","text_output":"What is artificial intelligence? Artificial intelligence is a branch of computer science that studies how to make computers have intelligent behavior."}
(Opsional) Bersihkan
Hapus layanan inferensi dan sumber daya penyimpanan setelah selesai:
# Delete the inference service
arena serve del modelscope
# Delete the PVC and PV (Option 2 only)
kubectl delete pvc llm-model
kubectl delete pv llm-model
FAQ
Bagaimana cara menarik file model dari Hugging Face alih-alih ModelScope?
Pastikan runtime kontainer dapat mengakses repositori Hugging Face, lalu atur MODEL_SOURCE=Huggingface dalam perintah Arena. Node GPU memerlukan setidaknya 30 GB ruang disk kosong untuk menampung file yang diunduh:
arena serve custom \
--name=huggingface \
--version=v1 \
--gpus=1 \
--replicas=1 \
--restful-port=8000 \
--readiness-probe-action="tcpSocket" \
--readiness-probe-action-option="port: 8000" \
--readiness-probe-option="initialDelaySeconds: 30" \
--readiness-probe-option="periodSeconds: 30" \
--image=kube-ai-registry.cn-shanghai.cr.aliyuncs.com/kube-ai/quick-deploy-llm:v1 \
"MODEL_ID=Qwen/Qwen1.5-4B-Chat MODEL_SOURCE=Huggingface python3 server.py"
Output berikut mengonfirmasi bahwa sumber daya telah dibuat:
service/huggingface-v1 created
deployment.apps/huggingface-v1-custom-serving created
INFO[0003] The Job huggingface has been submitted successfully
INFO[0003] You can run `arena serve get huggingface --type custom-serving -n default` to check the job status
Lampiran: referensi parameter perintah
| Parameter | Deskripsi | Contoh |
|---|---|---|
serve custom |
Subperintah Arena. Menerapkan layanan model kustom alih-alih tipe preset seperti tfserving atau triton. |
— |
--name |
Nama layanan. Pengenal unik yang digunakan untuk operasi selanjutnya seperti memeriksa log dan menghapus layanan. | modelscope |
--version |
Versi layanan. Label versi untuk layanan, berguna untuk manajemen versi dan rilis bertahap. | v1 |
--gpus |
Jumlah GPU. Jumlah GPU yang dialokasikan untuk setiap pod. Diperlukan ketika model membutuhkan GPU untuk inferensi. | 1 |
--replicas |
Jumlah replika. Jumlah pod yang dijalankan. Lebih banyak replika meningkatkan throughput konkuren dan ketersediaan. | 1 |
--restful-port |
Port API RESTful. Port tempat layanan mengekspos API RESTful-nya untuk menerima permintaan inferensi. | 8000 |
--readiness-probe-action |
Jenis pemeriksaan kesiapan. Metode pemeriksaan yang digunakan oleh readiness probe Kubernetes untuk menentukan apakah kontainer siap menerima traffic. | tcpSocket |
--readiness-probe-action-option |
Opsi jenis probe. Parameter untuk jenis probe yang dipilih. Untuk tcpSocket, menentukan port yang akan diperiksa. |
port: 8000 |
--readiness-probe-option |
Pengaturan probe tambahan. Parameter tambahan untuk readiness probe. Bendera ini dapat diulang. Mengatur delay awal dan interval pemeriksaan. | initialDelaySeconds: 30, periodSeconds: 30 |
--data |
Mount volume. Memount PVC pada path tertentu di dalam kontainer, dalam format <pvc-name>:<mount-path>. Digunakan untuk memount file model yang telah dimuat sebelumnya. |
llm-model:/Qwen1.5-4B-Chat |
--image |
Gambar kontainer. URL lengkap gambar kontainer yang mendefinisikan lingkungan runtime untuk layanan. | kube-ai-registry.cn-shanghai.cr.aliyuncs.com/kube-ai/quick-deploy-llm:v1 |
[COMMAND] |
Perintah startup. Perintah yang dijalankan setelah kontainer dimulai. Mengatur variabel lingkungan MODEL_ID dan menjalankan server.py. |
"MODEL_ID=/Qwen1.5-4B-Chat python3 server.py" |
FAQ
Tarik model dari Hugging Face
-
Pastikan lingkungan runtime kontainer dapat mengakses repositori Hugging Face.
-
Gunakan klien Arena untuk menerapkan layanan kustom dan tentukan gambar kontainer untuk penerapan menggunakan parameter
--image. Untuk informasi lebih lanjut tentang parameter, lihat Referensi parameter perintah.Metode ini mengunduh file model Hugging Face ke dalam kontainer. Pastikan node GPU Anda memiliki setidaknya 30 GB ruang disk yang tersedia.
arena serve custom \ --name=huggingface \ --version=v1 \ --gpus=1 \ --replicas=1 \ --restful-port=8000 \ --readiness-probe-action="tcpSocket" \ --readiness-probe-action-option="port: 8000" \ --readiness-probe-option="initialDelaySeconds: 30" \ --readiness-probe-option="periodSeconds: 30" \ --image=kube-ai-registry.cn-shanghai.cr.aliyuncs.com/kube-ai/quick-deploy-llm:v1 \ "MODEL_ID=Qwen/Qwen1.5-4B-Chat MODEL_SOURCE=Huggingface python3 server.py"Output berikut menunjukkan bahwa sumber daya Kubernetes untuk layanan inferensi
huggingface-v1telah dibuat:service/huggingface-v1 created deployment.apps/huggingface-v1-custom-serving created INFO[0003] The Job huggingface has been submitted successfully INFO[0003] You can run `arena serve get huggingface --type custom-serving -n default` to check the job status
Langkah selanjutnya
-
Untuk menentukan versi driver NVIDIA untuk node GPU, lihat Tentukan versi driver NVIDIA untuk node dengan menambahkan label.
-
Untuk menggunakan framework inferensi tingkat produksi seperti vLLM atau Triton, lihat Terapkan layanan inferensi model Qwen menggunakan vLLM dan Terapkan layanan inferensi model Qwen menggunakan Triton.