All Products
Search
Document Center

Container Service for Kubernetes:Gunakan vLLM untuk menerapkan model Qwen sebagai layanan inferensi di ACK

Last Updated:Jul 02, 2025

Topik ini menjelaskan cara menggunakan Versatile Large Language Model (vLLM) untuk menerapkan model Qwen sebagai layanan inferensi dalam Container Service for Kubernetes (ACK). Model Qwen 1.5-4B-Chat digunakan sebagai contoh dengan GPU NVIDIA T4 dan NVIDIA A10.

Informasi latar belakang

Qwen1.5-4B-Chat

Qwen1.5-4B-Chat adalah model bahasa besar (LLM) dengan 4 miliar parameter yang dikembangkan oleh Alibaba Cloud berdasarkan Transformer. Model ini dilatih menggunakan jumlah data pelatihan ultra-besar, mencakup berbagai teks berbasis web, buku sektor spesialis, dan kode. Untuk informasi lebih lanjut, lihat Repositori GitHub Qwen.

vLLM

vLLM adalah kerangka layanan inferensi LLM yang berperforma tinggi dan mudah digunakan. vLLM mendukung sebagian besar LLM yang paling umum digunakan, termasuk model Qwen. vLLM didukung oleh teknologi seperti optimasi PagedAttention, pengelompokan kontinu, dan kuantifikasi model untuk meningkatkan efisiensi inferensi LLM secara signifikan. Untuk informasi lebih lanjut tentang kerangka vLLM, lihat Repositori GitHub vLLM.

Prasyarat

  • Sebuah ACK Pro cluster yang berisi node dengan akselerasi GPU telah dibuat. Versi Kubernetes dari cluster adalah 1.22 atau lebih baru. Setiap node dengan akselerasi GPU menyediakan 16 GB Memori GPU atau lebih. Untuk informasi lebih lanjut, lihat Buat Cluster ACK Terkelola.

    Kami merekomendasikan Anda menginstal versi Driver GPU 525. Anda dapat menambahkan label ack.aliyun.com/nvidia-driver-version:525.105.17 ke node dengan akselerasi GPU untuk menentukan versi Driver GPU sebagai 525.105.17. Untuk informasi lebih lanjut, lihat Tentukan Versi Driver NVIDIA untuk Node dengan Menambahkan Label.

  • Versi terbaru dari klien Arena telah diinstal. Untuk informasi lebih lanjut, lihat Konfigurasikan Klien Arena.

Langkah 1: Persiapkan data model

Dalam contoh ini, model Qwen1.5-4B-Chat digunakan untuk menjelaskan cara mengunduh model Qwen, mengunggah model ke Object Storage Service (OSS), serta membuat volume persisten (PV) dan klaim volume persisten (PVC) dalam cluster ACK.

Untuk informasi lebih lanjut tentang cara mengunggah model ke File Storage NAS (NAS), lihat Pasang Volume NAS yang Disediakan Secara Statis.

  1. Unduh file model.

    1. Jalankan perintah berikut untuk menginstal Git:

      # Jalankan yum install git atau apt install git.
      yum install git
    2. Jalankan perintah berikut untuk menginstal plug-in Git Large File Support (LFS):

      # Jalankan yum install git-lfs atau apt install git-lfs.
      yum install git-lfs
    3. Jalankan perintah berikut untuk mengkloning repositori Qwen1.5-4B-Chat di ModelScope ke lingkungan lokal:

      GIT_LFS_SKIP_SMUDGE=1 git clone https://www.modelscope.cn/qwen/Qwen1.5-4B-Chat.git
    4. Jalankan perintah berikut untuk masuk ke direktori Qwen1.5-4B-Chat dan tarik file besar yang dikelola oleh LFS:

      cd Qwen1.5-4B-Chat
      git lfs pull
  2. Unggah file model Qwen1.5-4B-Chat ke OSS.

    1. Masuk ke Konsol OSS, dan lihat serta catat nama Bucket OSS yang Anda buat.

      Untuk informasi lebih lanjut tentang cara membuat Bucket OSS, lihat Buat Bucket.

    2. Instal dan konfigurasikan ossutil untuk mengelola sumber daya OSS. Untuk informasi lebih lanjut, lihat Instal ossutil.

    3. Jalankan perintah berikut untuk membuat direktori bernama Qwen1.5-4B-Chat di OSS:

      ossutil mkdir oss://<Your-Bucket-Name>/Qwen1.5-4B-Chat
    4. Jalankan perintah berikut untuk mengunggah file model ke OSS:

      ossutil cp -r ./Qwen1.5-4B-Chat oss://<Your-Bucket-Name>/Qwen1.5-4B-Chat
  3. Konfigurasikan PV dan PVC di cluster tujuan. Untuk informasi lebih lanjut, lihat Pasang Volume ossfs 1.0 yang Disediakan Secara Statis.

    • Tabel berikut menjelaskan parameter PV.

      Parameter

      Deskripsi

      PV Type

      OSS

      Volume Name

      llm-model

      Access Certificate

      Tentukan ID AccessKey dan Rahasia AccessKey yang digunakan untuk mengakses Bucket OSS.

      Bucket ID

      Tentukan nama Bucket OSS yang Anda buat.

      OSS Path

      Pilih path model, seperti /models/Qwen1.5-4B-Chat.

    • Tabel berikut menjelaskan parameter PVC.

      Parameter

      Deskripsi

      PVC Type

      OSS

      Volume Name

      llm-model

      Allocation Mode

      Pilih Existing Volumes.

      Existing Volumes

      Klik hyperlink Existing Volumes dan pilih PV yang Anda buat.

Langkah 2: Terapkan layanan inferensi

Model besar memiliki permintaan signifikan pada sumber daya memori. Untuk memastikan performa optimal, kami merekomendasikan Anda menggunakan GPU NVIDIA A10 berperforma tinggi dalam lingkungan produksi. Untuk tujuan pengujian, Anda dapat memilih GPU NVIDIA T4 yang hemat biaya, tetapi performanya mungkin jauh lebih rendah daripada GPU NVIDIA A10.

  1. Jalankan perintah berikut untuk menerapkan model Qwen1.5-4B-Chat sebagai layanan inferensi menggunakan vLLM:

    Anda dapat mempertimbangkan file parameter model sebagai jenis dataset khusus. Anda dapat menggunakan parameter --data yang disediakan oleh Arena untuk memasang model ke jalur tertentu dalam container layanan inferensi. Dalam contoh ini, model Qwen1.5-4B-Chat dipasang ke /model/Qwen1.5-4B-Chat. Parameter --max_model_len digunakan untuk menetapkan panjang token maksimum yang dapat diproses oleh model Qwen1.5-4B-Chat. Meningkatkan nilai parameter ini dapat meningkatkan kualitas interaksi model, tetapi perubahan ini mungkin mengonsumsi lebih banyak sumber daya Memori GPU. Untuk informasi lebih lanjut tentang parameter yang didukung oleh vLLM, lihat Repositori Kode vLLM di GitHub.

    Lingkungan NVIDIA A10 tunggal

    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"

    Lingkungan NVIDIA T4 tunggal

    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"

    Tabel berikut menjelaskan parameter.

    Parameter

    Deskripsi

    --name

    Nama layanan inferensi.

    --version

    Versi layanan inferensi.

    --gpus

    Jumlah GPU untuk setiap replika layanan inferensi.

    --replicas

    Jumlah replika layanan inferensi.

    --restful-port

    Port layanan inferensi yang akan diekspos.

    --readiness-probe-action

    Jenis koneksi probe kesiapan. Nilai valid: HttpGet, Exec, gRPC, dan TCPSocket.

    --readiness-probe-action-option

    Metode koneksi probe kesiapan.

    --readiness-probe-option

    Konfigurasi probe kesiapan.

    --data

    Pasang PVC bersama ke lingkungan runtime. Nilainya terdiri dari dua bagian yang dipisahkan oleh titik dua (:). Tentukan nama PVC di sisi kiri titik dua. Anda dapat menjalankan perintah arena data list untuk menanyakan daftar PVC yang ada di cluster. Tentukan lingkungan runtime di sisi kanan titik dua. Anda juga dapat menentukan jalur lokal data pelatihan atau model. Dengan cara ini, skrip Anda dapat mengakses data atau model dalam PV yang ditentukan.

    --image

    Alamat gambar layanan inferensi.

    Output yang Diharapkan:

    service/vllm-qwen-4b-chat-v1 created
    deployment.apps/vllm-qwen-4b-chat-v1-custom-serving created
    INFO[0008] Job vllm-qwen-4b-chat telah diserahkan dengan sukses
    INFO[0008] Anda dapat menjalankan `arena serve get vllm-qwen-4b-chat --type custom-serving -n default` untuk memeriksa status job

    Output menunjukkan bahwa layanan inferensi terkait vLLM dan Deployment serta Job yang sesuai telah diterapkan.

  2. Jalankan perintah berikut untuk melihat detail 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

    Output menunjukkan bahwa layanan inferensi berjalan sesuai harapan dan siap untuk memberikan layanan.

Langkah 3: Verifikasi layanan inferensi

  1. Jalankan perintah berikut untuk membuat aturan pengalihan port antara layanan inferensi dan lingkungan lokal:

    Penting

    Pengaturan pengalihan port menggunakan kubectl port-forward tidak andal, aman, atau dapat diperluas dalam lingkungan produksi. Ini hanya untuk pengembangan dan debugging. Jangan gunakan perintah ini untuk mengatur pengalihan port dalam lingkungan produksi. Untuk informasi lebih lanjut tentang solusi jaringan yang digunakan untuk produksi dalam cluster ACK, lihat Manajemen Ingress.

    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
  2. Jalankan perintah berikut untuk mengirim permintaan inferensi ke Triton Inference Server:

    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.com pletion","created":1717141209,"model":"/model/Qwen1.5-4B-Chat/","options":[{"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}}

    Output menunjukkan bahwa model dapat menghasilkan respons yang sesuai berdasarkan permintaan yang diberikan. Contoh ini adalah pesan uji.

(Opsional) Langkah 4: Hapus lingkungan

Jika Anda tidak lagi membutuhkan sumber daya, hapus sumber daya sesegera mungkin.

  • Jalankan perintah berikut untuk menghapus layanan inferensi:

    arena serve delete vllm-qwen-4b-chat
  • Jalankan perintah berikut untuk menghapus PV dan PVC:

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