All Products
Search
Document Center

Container Service for Kubernetes:Gunakan Triton untuk menerapkan layanan inferensi Qwen di ACK

Last Updated:Mar 01, 2026

Model bahasa skala besar (Large Language Models/LLMs) memerlukan infrastruktur berbasis GPU dan stack serving yang dioptimalkan untuk menangani inferensi dalam skala besar. Dokumen ini menjelaskan cara menerapkan model Qwen1.5-4B-Chat sebagai layanan inferensi di Container Service for Kubernetes (ACK) menggunakan NVIDIA Triton Inference Server dengan backend vLLM pada GPU T4 atau A10.

Latar Belakang

Qwen1.5-4B-Chat

Qwen1.5-4B-Chat adalah LLM dengan 4 miliar parameter yang dikembangkan oleh Alibaba Cloud berdasarkan arsitektur Transformer. Model ini dilatih pada set data berskala besar yang mencakup teks web, buku khusus domain, dan kode. Untuk informasi lebih lanjut, lihat repositori GitHub Qwen.

Triton Inference Server

Triton Inference Server adalah framework open-source untuk serving inferensi yang dikembangkan oleh NVIDIA. Framework ini mendukung berbagai backend framework pembelajaran mesin, termasuk TensorRT, TensorFlow, PyTorch, ONNX, dan vLLM.

Fitur utama:

  • Dukungan terhadap berbagai framework ML dan pembelajaran mendalam

  • Eksekusi model secara konkuren

  • Pemrosesan batch kontinu

  • Metrik inferensi bawaan: pemanfaatan GPU, latensi permintaan, dan throughput

Untuk informasi lebih lanjut, lihat repositori GitHub Triton Inference Server.

vLLM

vLLM adalah framework inferensi LLM berkinerja tinggi yang mendukung sebagian besar LLM populer, termasuk model Qwen. vLLM menggunakan optimisasi PagedAttention, pemrosesan batch kontinu, dan kuantisasi model untuk meningkatkan throughput inferensi LLM secara signifikan. Untuk informasi lebih lanjut, lihat repositori GitHub vLLM.

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

Langkah 1: Siapkan data model

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

Untuk menerapkan model lain yang didukung vLLM, lihat Model yang Didukung. Untuk menggunakan File Storage NAS alih-alih OSS, lihat Pasang volume NAS yang disediakan secara statis.

Unduh model

  1. Instal Git:

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

       # Gunakan yum install git-lfs atau apt install git-lfs
       yum install git-lfs
  3. Klon repositori 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 dan tarik file besar:

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

Unggah model ke OSS

  1. Login ke Konsol OSS dan catat nama bucket OSS Anda. Untuk membuat bucket, lihat Buat bucket.

  2. Instal dan konfigurasikan ossutil. Untuk informasi lebih lanjut, lihat Instal ossutil.

  3. Buat direktori di OSS dan unggah model:

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

Buat PV dan PVC

Buat PV dan PVC untuk memasang data model OSS di kluster. Untuk informasi lebih lanjut, lihat Pasang volume OSS yang disediakan secara statis.

Parameter PV

ParameterNilai
PV TypeOSS
Volume Namellm-model
Access CertificateID AccessKey dan Rahasia AccessKey yang digunakan untuk mengakses bucket OSS
Bucket IDNama bucket OSS Anda
OSS PathPath model, misalnya /models/Qwen1.5-4B-Chat

Parameter PVC

ParameterNilai
PVC TypeOSS
Volume Namellm-model
Allocation ModeExisting Volumes
Existing VolumesPilih PV yang telah Anda buat

Langkah 2: Konfigurasikan Triton dengan vLLM

Buat dua file konfigurasi: config.pbtxt untuk backend Triton dan model.json untuk parameter engine vLLM.

Buat konfigurasi backend

Buat direktori kerja dan file config.pbtxt:

mkdir triton-vllm

cat << EOF > triton-vllm/config.pbtxt
backend: "vllm"

# Penggunaan perangkat ditunda ke engine vLLM
instance_group [
  {
    count: 1
    kind: KIND_MODEL
  }
]

version_policy: { all { }}
EOF

Buat konfigurasi model

File model.json meneruskan parameter ke engine vLLM. Pilih konfigurasi yang sesuai dengan jenis GPU Anda.

Penting

vLLM mengalokasikan memori GPU secara agresif saat startup. Parameter gpu_memory_utilization mengontrol perilaku ini. Menyetelnya ke 0,95 akan menyisihkan 95% memori GPU untuk model. Jika beban kerja lain berbagi GPU yang sama, turunkan nilai ini untuk menghindari error kehabisan memori.

GPU A10 (produksi)

GPU A10 memberikan throughput lebih tinggi dan mendukung presisi bfloat16. Gunakan A10 untuk beban kerja produksi.

cat << EOF > triton-vllm/model.json
{
    "model":"/model/Qwen1.5-4B-Chat",
    "disable_log_requests": "true",
    "gpu_memory_utilization": 0.95,
    "trust_remote_code": "true",
    "dtype": "half",
    "max_model_len": 8192
}
EOF

GPU T4 (pengujian)

GPU T4 tersedia luas dan hemat biaya tetapi tidak mendukung presisi bfloat16 (bf16). Setel dtype ke half (FP16) dan gunakan max_model_len yang lebih rendah agar sesuai dalam batas memori 16 GB.

cat << EOF > triton-vllm/model.json
{
    "model":"/model/Qwen1.5-4B-Chat",
    "disable_log_requests": "true",
    "gpu_memory_utilization": 0.95,
    "trust_remote_code": "true",
    "dtype": "half",
    "max_model_len": 8192
}
EOF

Parameter Utama

ParameterDeskripsi
max_model_lenPanjang maksimum urutan token yang dapat diproses model. Nilai yang lebih tinggi meningkatkan kualitas percakapan tetapi mengonsumsi lebih banyak memori GPU.
dtypePresisi floating-point untuk pemuatan model. Setel ke half (FP16) untuk GPU yang tidak mendukung bf16, seperti T4.
gpu_memory_utilizationBagian memori GPU yang dialokasikan untuk model. Nilai default adalah 0.9.

Untuk daftar lengkap parameter yang dapat dikonfigurasi, lihat dokumentasi vLLM tentang Argumen Engine. Untuk contoh konfigurasi lainnya, lihat Menerapkan model vLLM di Triton.

Langkah 3: Terapkan layanan inferensi

Gunakan Arena untuk menerapkan layanan inferensi Qwen1.5-4B-Chat dengan Triton dan vLLM.

  1. Ekspor path file konfigurasi sebagai variabel lingkungan:

       export triton_config_file="triton-vllm/config.pbtxt"
       export model_config_file="triton-vllm/model.json"
  2. Terapkan layanan inferensi: Output yang diharapkan:

    Parameter

    ParameterDeskripsi
    --nameNama layanan inferensi.
    --versionVersi layanan inferensi.
    --imageImage kontainer untuk server Triton.
    --gpusJumlah GPU per replika.
    --cpuJumlah core CPU per replika.
    --memoryAlokasi memori per replika.
    --dataMount PVC dalam format <pvc-name>:<mount-path>. Jalankan arena data list untuk melihat daftar PVC yang tersedia.
    --config-fileMount file lokal dalam format <local-path>:<container-path>.
    --model-repositoryDirektori repositori model Triton. Setiap subdirektori merepresentasikan satu model dan harus berisi file konfigurasinya. Untuk informasi lebih lanjut, lihat Repositori model Triton.
    --http-portPort HTTP untuk layanan Triton.
    --grpc-portPort gRPC untuk layanan Triton.
    --allow-metricsEkspos metrik inferensi (pemanfaatan GPU, latensi, throughput).
       arena serve triton \
           --name=triton-vllm \
           --version=v1 \
           --image=ac2-registry.cn-hangzhou.cr.aliyuncs.com/ac2/tritonserver:24.04-vllm-python-py3-ubuntu22.04 \
           --gpus=1 \
           --cpu=6 \
           --memory=30Gi \
           --data="llm-model:/model/Qwen1.5-4B-Chat" \
           --model-repository /triton-config \
           --config-file="$model_config_file:/triton-config/qwen-4b/1/model.json" \
           --config-file="$triton_config_file:/triton-config/qwen-4b/config.pbtxt" \
           --http-port=8000 \
           --grpc-port=9000 \
           --allow-metrics=true
       configmap/triton-vllm-v1-4bd5884e6b5b6a3 created
       configmap/triton-vllm-v1-7815124a8204002 created
       service/triton-vllm-v1-tritoninferenceserver created
       deployment.apps/triton-vllm-v1-tritoninferenceserver created
       INFO[0007] The Job triton-vllm has been submitted successfully
       INFO[0007] You can run `arena serve get triton-vllm --type triton-serving -n default` to check the job status
  3. Verifikasi bahwa layanan sedang berjalan: Tunggu hingga Available menunjukkan 1. Output yang diharapkan:

       arena serve get triton-vllm
       Name:       triton-vllm
       Namespace:  default
       Type:       Triton
       Version:    v1
       Desired:    1
       Available:  1
       Age:        3m
       Address:    172.16.XX.XX
       Port:       RESTFUL:8000,GRPC:9000
       GPU:        1
    
       Instances:
         NAME                                                  STATUS   AGE  READY  RESTARTS  GPU  NODE
         ----                                                  ------   ---  -----  --------  ---  ----
         triton-vllm-v1-tritoninferenceserver-b69cb7759-gkwz6  Running  3m   1/1    0         1    cn-beijing.172.16.XX.XX

Langkah 4: Verifikasi layanan inferensi

Penerusan port (hanya untuk pengembangan)

Penting

Penerusan port melalui kubectl port-forward hanya dimaksudkan untuk pengembangan dan debugging. Metode ini tidak andal, aman, atau dapat diskalakan untuk penggunaan produksi. Untuk jaringan produksi, lihat Ikhtisar Ingress.

  1. Siapkan penerusan port: Output yang diharapkan:

       kubectl port-forward svc/triton-vllm-v1-tritoninferenceserver 8000:8000
       Forwarding from 127.0.0.1:8000 -> 8000
       Forwarding from [::1]:8000 -> 8000
  2. Kirim permintaan uji ke endpoint generate Triton: Ganti qwen-4b dengan nama model aktual Anda jika berbeda. Output yang diharapkan:

       curl -X POST localhost:8000/v2/models/qwen-4b/generate \
         -d '{"text_input": "What is AI? AI is", "parameters": {"stream": false, "temperature": 0}}'
       {"model_name":"qwen-4b","model_version":"1","text_output":"What is AI? AI is a branch of computer science that studies how to make computers intelligent. Purpose of AI"}

(Opsional) Bersihkan

Hapus layanan inferensi dan sumber daya penyimpanan jika tidak lagi diperlukan:

# Hapus layanan inferensi
arena serve del triton-vllm

# Hapus PVC dan PV
kubectl delete pvc llm-model
kubectl delete pv llm-model