All Products
Search
Document Center

Container Service for Kubernetes:Men-deploy layanan inferensi model bahasa besar Qwen3.5-4B di kluster ACK Auto Mode menggunakan Knative

Last Updated:Jun 19, 2026

Kluster ACK Auto Mode mendukung kelompok node Auto Mode. Dengan menggabungkan fitur ini dengan kemampuan autoscaling berbasis permintaan dari Knative Serving, Anda dapat menerapkan model bahasa besar Qwen3.5-4B sebagai layanan inferensi arsitektur tanpa server. Setelah diterapkan, Anda tidak perlu mengelola resource GPU secara manual. Pendekatan ini ideal untuk skenario inferensi model yang sensitif terhadap biaya GPU dan memerlukan kompleksitas operasional yang rendah.

Alur kerja keseluruhan adalah sebagai berikut:

  • Kluster ACK Auto Mode membuat dan melepas node GPU, dengan siklus hidupnya dikelola oleh kelompok node Auto Mode.

  • Knative Serving melakukan scaling terhadap Pod berdasarkan konkurensi permintaan (concurrency) atau jumlah permintaan per detik (rps).

Step 1: Create an ACK Auto Mode cluster and GPU node pool

1. Create a cluster

  1. Masuk ke ACK console. Di panel navigasi kiri, klik Clusters.

  2. Pada halaman Clusters, klik Create Kubernetes Cluster. Pada halaman ACK Managed Cluster, aktifkan Auto Mode.

    Setelah mode ini diaktifkan, halaman akan menampilkan tiga kemampuan inti Auto Mode: fully managed operations (lapisan kontrol yang sepenuhnya dikelola, peningkatan versi otomatis, dan node bebas maintenance dengan pemulihan otomatis), automatic node scaling (skalabilitas elastis sesuai permintaan, pencocokan tipe instans otomatis, dan optimalisasi biaya resource), serta highly optimized node operating system (OS yang dioptimalkan untuk kontainer guna startup cepat, sistem file immutable, dan praktik keamanan terbaik secara default).

  3. Ikuti petunjuk di layar untuk mengonfigurasi pengaturan, lalu klik Create Kubernetes Cluster.

    Untuk informasi lebih lanjut, lihat Create an ACK Auto Mode cluster.

2. Create a GPU node pool

  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 tersebut di dialog Create Node Pool.

    Parameter utama dijelaskan di bawah ini. Untuk informasi lebih lanjut, lihat Create a node pool.

    • Configure Managed Node Pool: Kami merekomendasikan menggunakan mode manajemen cerdas.

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

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

    • Container Image Acceleration: Kami merekomendasikan mengaktifkan fitur ini untuk mengurangi waktu pull image model.

3. Deploy Knative components

Ikuti petunjuk dalam Deploy Knative components.

Step 2: Prepare model files and upload to OSS

Pada langkah ini, Anda menggunakan instans ECS temporary untuk mengunduh file model Qwen3.5-4B dari ModelScope. Kemudian, Anda menggunakan ossutil untuk mengunggah file tersebut ke bucket OSS. File-file tersebut kemudian dipasang ke kontainer inferensi melalui volume penyimpanan, sehingga model tidak perlu diunduh setiap kali kontainer inferensi dimulai.

Sebelum memulai, pastikan Anda telah menyelesaikan tugas-tugas berikut:

1. Download Qwen3.5-4B model files

Lakukan operasi 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 plugin Git LFS (Large File Storage).

    # Anda dapat menjalankan 'yum install git-lfs' atau 'apt install git-lfs' untuk menginstalnya.
    sudo yum install git-lfs
  3. Clone repositori Qwen3.5-4B dari ModelScope ke mesin lokal Anda, lewati file LFS agar tidak diunduh berulang.

    GIT_LFS_SKIP_SMUDGE=1 git clone https://www.modelscope.cn/qwen/Qwen3.5-4B.git
  4. Buka direktori tersebut dan tarik file besar yang dikelola oleh Git LFS.

    cd Qwen3.5-4B
    git lfs pull

2. Upload model files to OSS

  1. Buat direktori di bucket OSS Anda untuk menyimpan model.

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

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

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

3. Configure an OSS storage volume

  1. Pilih metode autentikasi (RRSA atau AccessKey) dan siapkan kredensial akses. Hal ini memastikan kluster dapat mengakses resource bucket OSS secara aman dan sesuai kebijakan.

    Dokumen ini menggunakan autentikasi AccessKey sebagai contoh. Proses untuk tiap metode sedikit berbeda. Untuk informasi lebih lanjut, lihat Use an ossfs 2.0 static persistent volume.
  2. Simpan AccessKey yang diperoleh sebagai rahasia untuk digunakan oleh PV.

    Ganti <yourAccessKeyID> dan <yourAccessKeySecret> dengan kredensial Anda yang sebenarnya. Namespace rahasia 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 agar kluster dapat memasang direktori model di OSS dalam mode read-only. Contoh berikut menggunakan volume penyimpanan statis ossfs 2.0.

    Sample code

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      # Nama PV.
      name: llm-model
    spec:
      capacity:
        # Kapasitas volume penyimpanan. Nilai ini hanya digunakan untuk mencocokkan PVC.
        storage: 30Gi
      accessModes:
        - ReadOnlyMany
      persistentVolumeReclaimPolicy: Retain
      csi:
        driver: ossplugin.csi.alibabacloud.com
        # Harus sama dengan nama PV (metadata.name).
        volumeHandle: llm-model
        nodePublishSecretRef:
          # Nama rahasia yang menyimpan Informasi AccessKey.
          name: oss-secret
          # Namespace tempat rahasia berada.
          namespace: default
        volumeAttributes:
          fuseType: ossfs2
          # Ganti dengan nama bucket Anda yang sebenarnya.
          bucket: <Your-Bucket-Name>
          # Subdirektori yang akan dipasang. Biarkan kosong untuk memasang Direktori root.
          path: /models/Qwen3.5-4B
          # Titik akhir wilayah tempat bucket OSS berada.
          url: "http://oss-cn-hangzhou-internal.aliyuncs.com"
          otherOpts: "-o close_to_open=false"
    ---
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      # Nama PVC.
      name: llm-model
      namespace: default
    spec:
      accessModes:
        - ReadOnlyMany
      resources:
        requests:
          storage: 30Gi
      storageClassName: ""
      # Nama PV yang akan di-bind.
      volumeName: llm-model

Step 3: Deploy and verify Knative service

1. Create a Knative Service

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

  2. Pada tab Service Management, klik Create from Template. Atur Sample Template menjadi Custom dan ikuti petunjuk di layar untuk menerapkan Knative Service.

    Sample code

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      labels:
        release: qwen
      name: qwen
      namespace: default
    spec:
      template:
        metadata:
          annotations:
            # Jumlah replika minimum. Pertahankan setidaknya satu replika berjalan untuk menghindari cold start.
            autoscaling.knative.dev/minScale: "1"
            # Jumlah replika maksimum. Ini membatasi batas atas konsumsi resource GPU.
            autoscaling.knative.dev/maxScale: "2"
          labels:
            release: qwen
        spec:
          containers:
          - command:
            - vllm
            - serve
            - /models/Qwen3.5-4B
            - --served-model-name
            - Qwen3.5-4B
            - --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
                nvidia.com/gpu: "1"
              requests:
                cpu: "16"
                memory: 32Gi
                nvidia.com/gpu: "1"
            volumeMounts:
            - mountPath: /models/Qwen3.5-4B
              name: llm-model
          volumes:
          - name: llm-model
            persistentVolumeClaim:
              claimName: llm-model

    Parameter

    Description

    autoscaling.knative.dev/metric

    Metrik autoscaling. Nilai yang valid:

    • concurrency (default): Melakukan scaling berdasarkan konkurensi.

    • rps: Melakukan scaling berdasarkan jumlah permintaan per detik.

    autoscaling.knative.dev/target

    Ambang batas autoscaling. Ini adalah nilai target metrik yang memicu autoscaling.

    autoscaling.knative.dev/minScale

    Jumlah replika minimum. Nilainya harus bilangan bulat yang lebih besar dari atau sama dengan 0. Knative Pod Autoscaler (KPA) memungkinkan nilai ini diatur ke 0, sehingga memungkinkan scale-to-zero.

    autoscaling.knative.dev/maxScale

    Jumlah replika maksimum. Ini menetapkan batas atas untuk skala keluar.

2. Verify service deployment

  1. Pada tab Service Management, pastikan layanan sudah siap. Lalu, peroleh nama domain default dan alamat gerbang akses.

    Catatan: Untuk mengakses layanan, kirim permintaan Anda ke alamat gerbang akses dan gunakan header Host untuk menentukan nama domain layanan. Alamat gerbang akses memiliki format alb-xxx.aliyuncsslb.com, sedangkan nama domain default layanan memiliki format qwen.default.example.com.

  2. Kirim permintaan uji ke layanan inferensi.

    Ganti xx.40.85.xx dengan alamat gerbang akses yang sebenarnya dan qwen.default.example.com dengan nama domain default yang sebenarnya.

    curl http://xx.40.85.xx:80/v1/chat/completions \
      -H "Host: qwen.default.example.com" \
      -H "Content-Type: application/json" \
      -d '{
        "model": "Qwen3.5-4B",
        "messages": [
          {
            "role": "user",
            "content": [
              {
                "type": "text",
                "text": "Tell me about Hangzhou"
              }
            ]
          }
        ],
        "max_tokens": 200
      }'

    Output yang diharapkan:

    {
      "id": "chatcmpl-20dfb4c8-d1ab-48bc-9f1a-78b84c6c8adf",
      "object": "chat.completion",
      "created": 1772602897,
      "model": "Qwen3.5-4B",
      "choices": [
        {
          "index": 0,
          "message": {
            "role": "assistant",
            "content": "Hangzhou, disingkat 'Hang', adalah kota setingkat provinsi yang berlokasi di Provinsi Zhejiang, Tiongkok..."
          },
          "finish_reason": "length"
        }
      ],
      "usage": {
        "prompt_tokens": 14,
        "completion_tokens": 200,
        "total_tokens": 214
      }
    }