All Products
Search
Document Center

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

Last Updated:Apr 24, 2026

Kluster Container Service for Kubernetes (ACK) Auto Mode dioptimalkan untuk elastisitas GPU dan secara otomatis menangani penskalaan serta operasi dasar node GPU. Topik ini menggunakan model Qwen3.5-2B sebagai contoh untuk menunjukkan cara men-deploy layanan inferensi model besar dengan komputasi GPU pada kluster ACK Auto Mode secara cepat.

Prasyarat

  • Anda telah membuat kluster ACK Auto Mode.

  • Anda telah membuat kelompok node GPU yang memenuhi syarat dalam mode hosting cerdas.

    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, lalu pada kotak dialog Create Node Pool, konfigurasikan kelompok node tersebut.

      Konfigurasikan pengaturan utama berikut. Untuk informasi selengkapnya, lihat Create a node pool.

      • Configure Managed Node Pool: Pilih mode managed cerdas.

      • Pengaturan terkait instans: Atur Instance Configuration Mode ke Specify Instance Type, lalu pilih tipe instans ECS GPU, seperti V100, A10, atau T4.

      • Node Labels: Tambahkan label ack.aliyun.com/nvidia-driver-version:550.144.03 untuk menentukan bahwa versi driver NVIDIA adalah 550.144.03.

      • Container Image Acceleration: Aktifkan fitur ini untuk menarik image model lebih cepat.

Langkah 1: Siapkan file model dan mount OSS

Pada langkah ini, Anda menggunakan instans ECS temporary untuk mengunduh file model Qwen3.5-2B dari ModelScope, mengunggahnya ke bucket OSS, lalu mengonfigurasi PersistentVolume (PV) dan PersistentVolumeClaim (PVC) untuk kluster. Memasang model ke kontainer inferensi sebagai volume mencegah pengunduhan berulang saat kontainer dimulai.

Pastikan prasyarat berikut terpenuhi:

1. Unduh model Qwen3.5-2B

Lakukan langkah-langkah berikut pada instans ECS temporary untuk mengunduh file model dari ModelScope.

  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. Perintah ini melewatkan file besar LFS untuk mencegah pengunduhan ganda.

    git lfs install
    GIT_LFS_SKIP_SMUDGE=1 git clone https://www.modelscope.cn/Qwen/Qwen3.5-2B.git
  4. Masuk ke direktori repositori dan tarik file model besar yang dikelola LFS.

    cd Qwen3.5-2B/
    git lfs pull

2. Unggah file model ke OSS

  1. Buat direktori di bucket OSS untuk menyimpan 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 lokal ke OSS.

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

3. Konfigurasikan volume OSS

Buat PV dan PVC agar Pod dapat memasang direktori model di OSS sebagai volume read-only. Untuk informasi selengkapnya, lihat Use a static volume with ossfs 2.0.

  1. Pilih metode autentikasi (RRSA atau AccessKey) dan siapkan kredensial akses untuk memastikan kluster dapat mengakses sumber daya bucket OSS secara aman.

    Contoh ini menggunakan autentikasi AccessKey. Kedua metode memiliki sedikit perbedaan. Untuk informasi selengkapnya, lihat Use a static volume with ossfs 2.0.
  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 memasang direktori model di OSS sebagai volume read-only. Contoh berikut menggunakan volume statis dengan ossfs 2.0.

    Contoh kode

    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 dipasang. Biarkan kosong 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 framework vLLM untuk men-deploy model Qwen3.5-2B sebagai Deployment dan ekspos sebagai Service LoadBalancer.

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

  2. Klik Create from YAML dan kirimkan konten YAML berikut.

    Setelah Anda mengirimkan YAML, jika kluster tidak memiliki cukup sumber daya GPU, Pod akan masuk ke status Pending. ACK Auto Mode secara otomatis memicu penskalaan node GPU, membuat node baru, dan menjadwalkan Pod ke node baru setelah diinisialisasi. Tidak diperlukan intervensi manual. Saat Pod memasuki status Running, layanan model telah dideploy.

    Contoh kode

    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 command.
            - 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

    Setelah deployment selesai, Anda dapat melihat status aplikasi pada halaman Deployments.

2. Verifikasi layanan inferensi

  1. Ambil alamat IP publik yang diekspos oleh 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 bahwa layanan tersedia.

    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}}

Topik terkait