全部产品
Search
文档中心

Container Service for Kubernetes:Menerapkan model vLLM sebagai layanan inferensi

更新时间:Jul 06, 2025

Vectorized Large Language Model (vLLM) adalah pustaka inferensi model bahasa besar (LLM) berperforma tinggi yang mendukung berbagai format model dan akselerasi layanan backend. vLLM cocok untuk menerapkan LLM sebagai layanan inferensi. Topik ini menjelaskan cara menerapkan model vLLM sebagai layanan inferensi menggunakan model Qwen-7B-Chat-Int8 dengan GPU NVIDIA V100.

Catatan

Untuk informasi lebih lanjut tentang vLLM, lihat vllm-project.

Prasyarat

Langkah 1: Siapkan data model dan unggah data model ke Bucket OSS

Anda dapat menggunakan Bucket OSS atau sistem file File Storage NAS (NAS) untuk menyiapkan data model. Untuk informasi lebih lanjut, lihat Mount volume ossfs 1.0 yang disediakan secara statis atau Mount volume NAS yang disediakan secara statis. Dalam contoh ini, Bucket OSS digunakan.

  1. Unduh model. Dalam contoh ini, model Qwen-7B-Chat-Int8 digunakan.

    1. Jalankan perintah berikut untuk menginstal Git:

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

      sudo yum install git-lfs
    3. Jalankan perintah berikut untuk mengkloning repositori Qwen-7B-Chat-Int8 dari komunitas ModelScope ke host lokal Anda:

      GIT_LFS_SKIP_SMUDGE=1 git clone https://www.modelscope.cn/qwen/Qwen-7B-Chat-Int8.git
    4. Jalankan perintah berikut untuk masuk ke direktori tempat repositori Qwen-7B-Chat-Int8 disimpan:

      cd Qwen-7B-Chat-Int8
    5. Jalankan perintah berikut untuk mengunduh file besar yang dikelola oleh LFS dari direktori tempat repositori Qwen-7B-Chat-Int8 disimpan:

      git lfs pull
  2. Unggah file Qwen-7B-Chat-Int8 yang telah diunduh ke Bucket OSS.

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

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

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

    3. Jalankan perintah berikut untuk membuat direktori bernama Qwen-7B-Chat-Int8 di Bucket OSS:

      ossutil mkdir oss://<your-bucket-name>/Qwen-7B-Chat-Int8
    4. Jalankan perintah berikut untuk mengunggah file model ke Bucket OSS.

      ossutil cp -r ./Qwen-7B-Chat-Int8 oss://<Your-Bucket-Name>/Qwen-7B-Chat-Int8
  3. Konfigurasikan volume persisten (PV) dan klaim volume persisten (PVC) yang bernama llm-model untuk klaster. Untuk informasi lebih lanjut, lihat Mount volume ossfs 1.0 yang disediakan secara statis.

    • Tabel berikut menjelaskan parameter dasar yang digunakan untuk membuat PV.

      Parameter

      Deskripsi

      PV Type

      Tipe PV. Dalam contoh ini, OSS dipilih.

      Volume Name:

      Nama PV. Dalam contoh ini, PV diberi nama llm-model.

      Access Certificate

      Pasangan AccessKey yang digunakan untuk mengakses Bucket OSS. Pasangan AccessKey terdiri dari ID AccessKey dan Rahasia AccessKey.

      Bucket ID:

      Nama Bucket OSS. Pilih Bucket OSS yang telah Anda buat.

      OSS Path

      Path tempat model berada. Contoh: /Qwen-7B-Chat-Int8.

    • Tabel berikut menjelaskan parameter dasar yang digunakan untuk membuat PVC.

      Parameter

      Deskripsi

      PVC Type

      Tipe PVC. Dalam contoh ini, OSS dipilih.

      Name

      Nama PVC. Dalam contoh ini, PVC diberi nama llm-model.

      Allocation Mode

      Dalam contoh ini, Existing Volumes dipilih.

      Existing Volumes

      Klik Select PV. Di kotak dialog Pilih PV, temukan PV yang ingin Anda gunakan dan klik Pilih di kolom Tindakan.

Langkah 2: Terapkan layanan inferensi

  1. Jalankan perintah berikut untuk memeriksa sumber daya GPU yang tersedia di klaster:

    arena top node

    Jumlah node yang dipercepat GPU yang dapat digunakan untuk menjalankan layanan inferensi akan dikembalikan.

  2. Jalankan perintah berikut untuk memulai layanan inferensi bernama vllm:

    arena serve kserve \
        --name=qwen \
        --image=kube-ai-registry.cn-shanghai.cr.aliyuncs.com/kube-ai/vllm:0.4.1 \
        --gpus=1 \
        --cpu=4 \
        --memory=12Gi \
        --data="llm-model:/mnt/models/Qwen-7B-Chat-Int8" \
        "python3 -m vllm.entrypoints.openai.api_server --port 8080 --trust-remote-code --served-model-name qwen --model /mnt/models/Qwen-7B-Chat-Int8 --gpu-memory-utilization 0.95 --quantization gptq --max-model-len=6144"

    Tabel berikut menjelaskan parameter.

    Parameter

    Wajib

    Deskripsi

    --name

    Ya

    Nama layanan inferensi yang Anda kirimkan, yang bersifat unik secara global.

    --image

    Ya

    Alamat gambar layanan inferensi.

    --gpus

    Tidak

    Jumlah GPU yang akan digunakan oleh layanan inferensi. Nilai default: 0.

    --cpu

    Tidak

    Jumlah inti CPU yang akan digunakan oleh layanan inferensi.

    --memory

    Tidak

    Ukuran memori yang akan digunakan oleh layanan inferensi.

    --data

    Tidak

    Alamat model yang diterapkan sebagai layanan inferensi. Dalam contoh ini, model disimpan di direktori llm-model, yang dimount ke direktori /mnt/models/ di pod.

    Output yang diharapkan:

    inferenceservice.serving.kserve.io/qwen created
    INFO[0006] The Job qwen has been submitted successfully 
    INFO[0006] You can run `arena serve get qwen --type kserve -n default` to check the job status 

    Output sebelumnya menunjukkan bahwa layanan inferensi telah diterapkan.

Langkah 3: Verifikasi layanan inferensi

  1. Jalankan perintah berikut untuk melihat kemajuan penyebaran layanan inferensi yang diterapkan menggunakan KServe:

    arena serve get qwen

    Output yang diharapkan:

    Lihat status penyebaran layanan inferensi

    Name:       qwen
    Namespace:  default
    Type:       KServe
    Version:    1
    Desired:    1
    Available:  1
    Age:        2m
    Address:    http://qwen-default.example.com
    Port:       :80
    GPU:        1
    
    
    Instances:
      NAME                             STATUS   AGE  READY  RESTARTS  GPU  NODE
      ----                             ------   ---  -----  --------  ---  ----
      qwen-predictor-5485d6d8d5-kvj7g  Running  2m   1/1    0         1    cn-beijing.XX.XX.XX.XX

    Output sebelumnya menunjukkan bahwa layanan inferensi diterapkan menggunakan KServe dan model dapat diakses dari http://qwen-default.example.com.

  2. Jalankan perintah berikut untuk mendapatkan alamat IP controller NGINX Ingress dan mengakses layanan inferensi menggunakan alamat IP tersebut.

    # Mendapatkan alamat IP controller NGINX Ingress. 
    NGINX_INGRESS_IP=$(kubectl -n kube-system get svc nginx-ingress-lb -ojsonpath='{.status.loadBalancer.ingress[0].ip}')
    # Mendapatkan hostname layanan inferensi. 
    SERVICE_HOSTNAME=$(kubectl get inferenceservice qwen -o jsonpath='{.status.url}' | cut -d "/" -f 3)
    # Kirim permintaan untuk mengakses layanan inferensi. 
    curl -H "Host: $SERVICE_HOSTNAME" -H "Content-Type: application/json" http://$NGINX_INGRESS_IP:80/v1/chat/completions -d '{"model": "qwen", "messages": [{"role": "user", "content": "Perform a text."}], "max_tokens": 10, "temperature": 0.7, "top_p": 0.9, "seed": 10}

    Output yang diharapkan:

    Lihat output yang diharapkan

    {"id":"cmpl-b7579597aa284f118718b22b83b726f8","object":"chat.completion","created":1715589652,"model":"qwen","choices":[{"index":0,"message":{"role":"assistant","content":"OK. What do you want to test? <|im_end|>"},"logprobs":null,"finish_reason":"length","stop_reason":null}],"usage":{"prompt_tokens":10,"total_tokens":20,"completion_tokens":10}}% 

    Output sebelumnya menunjukkan bahwa permintaan berhasil dikirim ke layanan inferensi dan layanan tersebut mengembalikan respons yang diharapkan dalam format JSON.

Langkah 4: (Opsional) Hapus layanan inferensi

Penting

Sebelum Anda menghapus layanan inferensi, pastikan Anda tidak lagi memerlukan layanan inferensi dan sumber daya terkaitnya.

Jalankan perintah berikut untuk menghapus layanan inferensi.

arena serve delete qwen

Referensi