All Products
Search
Document Center

Container Service for Kubernetes:Men-deploy layanan inferensi Qwen3.5-2B di ACK Auto Mode

Last Updated:Oct 22, 2026

Dalam beban kerja inferensi AI, kecepatan penskalaan GPU memengaruhi ketersediaan layanan saat beban puncak. ACK Auto Mode mengoptimalkan elastisitas GPU untuk memperluas node GPU secara otomatis dan menangani operasi dasar. Topik ini menggunakan Qwen3.5-2B untuk mendemonstrasikan cara men-deploy layanan inferensi model besar dengan cepat menggunakan vLLM.

Prasyarat

  • Kluster ACK Auto Mode telah dibuat.

  • Kelompok node GPU yang memenuhi syarat telah dibuat dalam mode intelligent hosting.

    Detail

    1. Pada halaman ACK Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Nodes > Node Pools.

    2. Pada halaman Node Pools, klik Create Node Pool dan konfigurasikan kelompok node pada kotak dialog Create Node Pool.

      Parameter utama (lihat Membuat kelompok node untuk semua opsi):

      • Configure Managed Node Pool: Gunakan mode intelligent management.

      • Konfigurasi terkait instans: Untuk Instance Configuration Mode, pilih Specify Instance Type. Kemudian, pilih tipe instans GPU seperti V100, A10, atau T4.

      • Node Labels: Tambahkan label ack.aliyun.com/nvidia-driver-version:550.144.03 untuk mengatur versi driver NVIDIA ke 550.144.03.

      • Container Image Acceleration: Aktifkan fitur ini untuk mempercepat waktu pull image model.

Langkah 1: Siapkan file model dan mount OSS

Unduh model Qwen3.5-2B dari ModelScope ke instans ECS sementara, unggah ke OSS, lalu buat PersistentVolume (PV) dan PersistentVolumeClaim (PVC) agar kontainer inferensi dapat memuat model tanpa perlu mengunduhnya berulang kali.

Sebelum memulai:

  • Bucket OSS telah dibuat.

  • ossutil telah diinstal dan dikonfigurasi pada instans ECS sementara.

1. Unduh model Qwen3.5-2B

Jalankan perintah berikut pada instans ECS sementara.

  1. Instal Git.

    # Anda dapat menjalankan yum install git atau apt install git untuk menginstalnya.
    sudo yum install git
  2. Instal ekstensi Git Large File Storage (LFS).

    # Anda dapat menjalankan yum install git-lfs atau apt install git-lfs untuk menginstalnya.
    sudo yum install git-lfs
  3. Inisialisasi Git LFS dan clone repositori Qwen3.5-2B dari ModelScope. Lewati file LFS untuk menghindari unduhan duplikat.

    git lfs install
    GIT_LFS_SKIP_SMUDGE=1 git clone https://www.modelscope.cn/Qwen/Qwen3.5-2B.git
  4. Buka direktori repositori, lalu tarik file model LFS.

    cd Qwen3.5-2B/
    git lfs pull

2. Unggah file model ke OSS

  1. Buat direktori di bucket OSS untuk model.

    Ganti <Your-Bucket-Name> dengan nama bucket Anda yang sebenarnya.

    ossutil mkdir oss://<Your-Bucket-Name>/models/Qwen3.5-2B
  2. Unggah file model ke OSS.

    ossutil cp -r ./Qwen3.5-2B oss://<Your-Bucket-Name>/models/Qwen3.5-2B

3. Konfigurasikan volume OSS

Buat PV dan PVC untuk me-mount direktori model di OSS sebagai volume read-only. Lihat Menggunakan volume statis dengan ossfs 2.0.

  1. Pilih metode autentikasi (RRSA atau AccessKey) dan siapkan kredensial akses agar kluster dapat mengakses OSS.

    Contoh ini menggunakan autentikasi AccessKey. Lihat Menggunakan volume statis dengan ossfs 2.0 untuk mengetahui perbedaannya.
  2. Simpan AccessKey Anda sebagai Secret untuk PV.

    Ganti <yourAccessKeyID> dan <yourAccessKeySecret> dengan kredensial Anda yang sebenarnya. Namespace Secret harus sesuai dengan namespace aplikasi.

    kubectl create -n default secret generic oss-secret --from-literal='akId=<yourAccessKeyID>' --from-literal='akSecret=<yourAccessKeySecret>'
  3. Buat PV dan PVC untuk me-mount direktori model OSS sebagai volume read-only. Contoh ini menggunakan volume statis dengan ossfs 2.0.

    Kode contoh

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      # Nama PV.
      name: llm-model  
    spec:
      capacity:
        # Kapasitas volume. Nilai ini hanya digunakan untuk mencocokkan PVC.
        storage: 30Gi  
      # Mode akses.
      accessModes:  
        - ReadOnlyMany
      persistentVolumeReclaimPolicy: Retain
      csi:
        driver: ossplugin.csi.alibabacloud.com
        # Harus sesuai dengan nama PV (metadata.name).
        volumeHandle: llm-model   
        # Gunakan Secret yang dibuat sebelumnya.
        nodePublishSecretRef:
          # Nama Secret yang menyimpan AccessKey.
          name: oss-secret  
          # Namespace Secret.
          namespace: default  
        volumeAttributes:
          fuseType: ossfs2
          # Nama bucket Anda.
          bucket: knative-llm  
          # Subdirektori yang akan di-mount. Kosongkan untuk direktori root.
          path: /models/Qwen3.5-2B
          # Endpoint untuk wilayah tempat bucket OSS berada.
          url: "http://oss-cn-hangzhou-internal.aliyuncs.com"  
          otherOpts: "-o close_to_open=false"
    ---
    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      # Nama PVC.
      name: llm-model 
      namespace: default
    spec:
      # Harus konsisten dengan PV.
      accessModes:
        - ReadOnlyMany
      resources:
        requests:
          storage: 30Gi
      storageClassName: ""
      # PV yang akan di-bind.
      volumeName: llm-model

Langkah 2: Deploy dan verifikasi layanan inferensi

1. Buat Deployment dan Service

Gunakan vLLM untuk men-deploy model Qwen3.5-2B sebagai Deployment dan mengeksposnya sebagai LoadBalancer Service.

  1. Pada halaman ACK Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Workloads > Deployments.

  2. Klik Create from YAML dan kirimkan YAML berikut.

    Setelah YAML dikirimkan, jika kluster kekurangan sumber daya GPU, pod akan memasuki status Pending. ACK Auto Mode secara otomatis memicu scale-out node GPU, membuat node baru, dan menjadwalkan pod setelah inisialisasi node selesai tanpa memerlukan intervensi manual. Ketika pod memasuki status Running, layanan siap digunakan.

    Kode contoh

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: qwen-2b
      labels:
        app: qwen
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: qwen
      template:
        metadata:
          labels:
            app: qwen
        spec:
          containers:
          - command:
            - vllm
            - serve
            - /models/Qwen3.5-2B       
            - --served-model-name
            - Qwen3.5-2B
            - --port
            - "8000"                 
            - --enforce-eager
            image: ac2-mirror-registry.cn-hangzhou.cr.aliyuncs.com/evaluate/vllm-openai:nightly-d00df624f313a6a5a7a6245b71448b068b080cd7
            imagePullPolicy: IfNotPresent
            name: vllm-container
            ports:
            - containerPort: 8000
              name: http1
              protocol: TCP
            readinessProbe:
              tcpSocket:
                port: 8000
              initialDelaySeconds: 5
              periodSeconds: 5
            resources:
              limits:
                cpu: "32"
                memory: 64Gi
                # Jumlah maksimum GPU.
                nvidia.com/gpu: "1"
              requests:
                cpu: "8"
                memory: 32Gi
                # Setiap pod meminta 1 GPU, konsisten dengan limits.
                nvidia.com/gpu: "1"
            volumeMounts:
            # Harus sesuai dengan path model dalam perintah.
            - mountPath: /models/Qwen3.5-2B
              name: llm-model
          volumes:
          - name: llm-model
            persistentVolumeClaim:
              claimName: llm-model
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: qwen-2b
    spec:
      type: LoadBalancer
      ports:
        # Port yang terbuka. Harus sesuai dengan containerPort.
        - port: 8000
          protocol: TCP
          targetPort: 8000
      selector:
        app: qwen

    Lihat status aplikasi pada halaman Deployments.

2. Verifikasi layanan inferensi

  1. Dapatkan alamat IP publik Service.

    export EXTERNAL_IP=$(kubectl get svc qwen-2b -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
    echo ${EXTERNAL_IP}
  2. Kirim permintaan inferensi untuk memverifikasi layanan.

    Ganti 8.XX.XX.89 dengan alamat IP publik Anda.

    curl http://8.XX.XX.89:8000/v1/chat/completions \
      -H "Content-Type: application/json" \
      -d '{
        "model": "Qwen3.5-2B",
        "messages": [
          {
            "role": "user",
            "content": [
              {
                "type": "text",
                "text": "Kubernetes"
              }
            ]
          }
        ],
        "max_tokens": 200
      }'

    Output yang diharapkan:

    {"id":"chatcmpl-98f158cdbbb38087","object":"chat.completion","created":1775043962,"model":"Qwen3.5-2B","choices":[{"index":0,"message":{"role":"assistant","content":"**Kubernetes** is an open-source container orchestration platform that automates deployment, scaling, management, and repair of containerized applications..."},"finish_reason":"length"}],"usage":{"prompt_tokens":14,"total_tokens":214,"completion_tokens":200}}

Referensi