All Products
Search
Document Center

Container Service for Kubernetes:Deploy a Qwen inference service with vLLM

Last Updated:Jun 16, 2026

Terapkan Qwen1.5-4B-Chat sebagai layanan inferensi pada satu node GPU A10 atau T4 di ACK dengan vLLM dan Arena.

Prasyarat

Pastikan Anda telah memiliki:

Catatan

Gunakan driver GPU versi 525. Tambahkan label ack.aliyun.com/nvidia-driver-version:525.105.17 ke node berakselerasi GPU Anda. Lihat Specify an NVIDIA driver version for nodes by adding a label.

Latar Belakang

Qwen1.5-4B-Chat

Qwen1.5-4B-Chat adalah LLM berbasis Transformer dengan 4 miliar parameter yang dikembangkan oleh Alibaba Cloud, dilatih menggunakan teks web, buku khusus domain, dan kode. Lihat Qwen GitHub repository.

vLLM

vLLM adalah framework inferensi LLM open-source yang dioptimalkan untuk throughput tinggi dan latensi rendah. Framework ini mendukung sebagian besar LLM populer, termasuk Qwen, serta menggunakan PagedAttention, continuous batching, dan quantization untuk meningkatkan efisiensi. Lihat vLLM GitHub repository.

Langkah 1: Siapkan data model

Unduh Qwen1.5-4B-Chat, unggah ke Object Storage Service (OSS), lalu buat persistent volume (PV) dan persistent volume claim (PVC) di kluster ACK Anda.

Catatan

Anda juga dapat menyimpan model di File Storage NAS alih-alih OSS. Lihat Mount a statically provisioned NAS volume.

Unduh model

  1. Instal Git:

       # Jalankan yum install git atau apt install git.
       yum install git
  2. Instal Git Large File Storage (Git LFS):

       # Jalankan yum install git-lfs atau apt install git-lfs.
       yum install git-lfs
  3. Klon Qwen1.5-4B-Chat dari ModelScope:

       GIT_LFS_SKIP_SMUDGE=1 git clone https://www.modelscope.cn/qwen/Qwen1.5-4B-Chat.git
  4. Masuk ke direktori Qwen1.5-4B-Chat dan tarik file Git LFS:

       cd Qwen1.5-4B-Chat
       git lfs pull

Unggah model ke OSS

  1. Masuk ke Konsol OSS dan catat nama bucket Anda. Untuk membuat bucket, lihat Create a bucket.

  2. Instal dan konfigurasi ossutil. Lihat Install ossutil.

  3. Buat direktori Qwen1.5-4B-Chat di bucket OSS Anda:

       ossutil mkdir oss://<Your-Bucket-Name>/Qwen1.5-4B-Chat
  4. Unggah file model ke OSS:

       ossutil cp -r ./Qwen1.5-4B-Chat oss://<Your-Bucket-Name>/Qwen1.5-4B-Chat

Buat PV dan PVC

Buat PV dan PVC di kluster ACK Anda untuk memasang model dari OSS. Lihat Mount a statically provisioned OSS volume.

Parameter PV:

Parameter Deskripsi
PV Type OSS
Volume Name llm-model
Access Certificate ID AccessKey dan Rahasia AccessKey untuk bucket OSS
Bucket ID Nama bucket OSS Anda
OSS Path Path menuju model, misalnya /models/Qwen1.5-4B-Chat

Parameter PVC:

Parameter Deskripsi
PVC Type OSS
Volume Name llm-model
Allocation Mode Pilih Existing Volumes
Existing Volumes Klik Existing Volumes dan pilih PV Anda

Langkah 2: Terapkan layanan inferensi

Arena memperlakukan file model sebagai dataset. Gunakan --data untuk memasang model ke dalam kontainer. Dalam contoh ini, path mount-nya adalah /model/Qwen1.5-4B-Chat.

Parameter --max-model-len menetapkan panjang token maksimum yang dapat diproses oleh model. Nilai yang lebih tinggi meningkatkan kualitas interaksi tetapi mengonsumsi lebih banyak memori GPU. Lihat vLLM code repository on GitHub untuk semua parameter yang tersedia.

Pilih jenis GPU

GPU Kasus Penggunaan max-model-len Parameter Tambahan
NVIDIA A10 Produksi (kinerja tinggi) 16384 Tidak ada
NVIDIA T4 Pengujian (biaya lebih rendah) 8192 --dtype half

Terapkan layanan

Pilih perintah berdasarkan jenis GPU Anda.

NVIDIA A10 (direkomendasikan untuk produksi)

arena serve custom \
    --name=vllm-qwen-4b-chat \
    --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=ac2-registry.cn-hangzhou.cr.aliyuncs.com/ac2/vllm:0.4.1-ubuntu22.04 \
    --data=llm-model:/model/Qwen1.5-4B-Chat \
    "python3 -m vllm.entrypoints.openai.api_server --trust-remote-code --model /model/Qwen1.5-4B-Chat/ --gpu-memory-utilization 0.95 --max-model-len 16384"

NVIDIA T4 (untuk pengujian)

arena serve custom \
    --name=vllm-qwen-4b-chat \
    --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=ac2-registry.cn-hangzhou.cr.aliyuncs.com/ac2/vllm:0.4.1-ubuntu22.04 \
    --data=llm-model:/model/Qwen1.5-4B-Chat \
    "python3 -m vllm.entrypoints.openai.api_server --trust-remote-code --model /model/Qwen1.5-4B-Chat/ --gpu-memory-utilization 0.95 --max-model-len 8192 --dtype half"
Catatan

T4 menggunakan --max-model-len 8192 (berbeda dengan 16384 untuk A10) dan menambahkan --dtype half agar sesuai dengan batasan memori T4.

Parameter Arena:

Parameter Deskripsi
--name Nama layanan inferensi
--version Versi layanan inferensi
--gpus Jumlah GPU per replika
--replicas Jumlah replika
--restful-port Port untuk layanan inferensi
--readiness-probe-action Jenis readiness probe. Nilai yang valid: HttpGet, Exec, gRPC, dan TCPSocket
--readiness-probe-action-option Metode koneksi readiness probe
--readiness-probe-option Konfigurasi readiness probe
--data Mount PVC bersama dengan format: PVCName:MountPath. Gunakan arena data list untuk membuat kueri terhadap PVC yang tersedia.
--image Image kontainer untuk layanan inferensi

Output yang diharapkan:

service/vllm-qwen-4b-chat-v1 created
deployment.apps/vllm-qwen-4b-chat-v1-custom-serving created
INFO[0008] The Job vllm-qwen-4b-chat has been submitted successfully
INFO[0008] You can run `arena serve get vllm-qwen-4b-chat --type custom-serving -n default` to check the job status

Verifikasi penerapan

Periksa status layanan inferensi:

arena serve get vllm-qwen-4b-chat

Output yang diharapkan:

Name:       vllm-qwen-4b-chat
Namespace:  default
Type:       Custom
Version:    v1
Desired:    1
Available:  1
Age:        36m
Address:    172.16.XX.XX
Port:       RESTFUL:8000
GPU:        1

Instances:
  NAME                                                  STATUS   AGE  READY  RESTARTS  GPU  NODE
  ----                                                  ------   ---  -----  --------  ---  ----
  vllm-qwen-4b-chat-v1-custom-serving-6d7c786b9f-z6nfk  Running  36m  1/1    0         1    cn-beijing.192.168.XX.XX

Saat nilai Available sama dengan Desired dan status instans adalah Running, layanan siap digunakan.

Langkah 3: Uji layanan inferensi

Siapkan port forwarding

Penting

Port forwarding dengan kubectl port-forward hanya untuk pengembangan dan debugging. Untuk produksi, gunakan Ingress.

Teruskan port 8000 ke mesin lokal Anda:

kubectl port-forward svc/vllm-qwen-4b-chat-v1 8000:8000

Output yang diharapkan:

Forwarding from 127.0.0.1:8000 -> 8000
Forwarding from [::1]:8000 -> 8000

Kirim permintaan uji

Buka terminal baru dan kirim permintaan inferensi:

curl http://localhost:8000/v1/chat/completions -H "Content-Type: application/json"  -d '{"model": "/model/Qwen1.5-4B-Chat/", "messages": [{"role": "user", "content": "Test"}], "max_tokens": 10, "temperature": 0.7, "top_p": 0.9, "seed": 10}'

Output yang diharapkan:

{"id":"cmpl-503270b21fa44db2b6b3c3e0abaa3c02","object":"chat.completion","created":1717141209,"model":"/model/Qwen1.5-4B-Chat/","choices":[{"index":0,"message":{"role":"assistant","content":"OK. What do you want to test?"},"logprobs":null,"finish_reason":"stop","stop_reason":null}],"usage":{"prompt_tokens":21,"total_tokens":30,"completion_tokens":9}}

vLLM menyediakan API kompatibel OpenAI pada titik akhir /v1/chat/completions.

(Opsional) Bersihkan sumber daya

Hapus sumber daya yang tidak digunakan untuk menghindari biaya yang tidak perlu.

Hapus layanan inferensi:

arena serve delete vllm-qwen-4b-chat

Hapus PVC dan PV:

kubectl delete pvc llm-model
kubectl delete pv llm-model

Langkah selanjutnya

  • Konfigurasikan Ingress untuk mengekspos layanan inferensi di lingkungan produksi.

  • Untuk menerapkan model Qwen lainnya, sesuaikan --max-model-len dan --gpu-memory-utilization berdasarkan ukuran model dan memori GPU.

  • Lihat vLLM GitHub repository untuk opsi konfigurasi.