全部產品
Search
文件中心

Container Service for Kubernetes:基於 Knative 在 ACK Auto Mode 叢集中部署 Qwen3.5-4B 大語言模型推理服務

更新時間:May 27, 2026

ACK Auto Mode叢集支援Auto Mode節點池,結合 Knative Serving 的按需彈效能力,可將 Qwen3.5-4B 大模型部署為按需使用的 Serverless 推理服務。部署後,無需手動營運管理 GPU 資源,適用於對 GPU 成本敏感和營運複雜度有要求的模型推理情境。

整體鏈路如下:

  • ACK Auto Mode叢集:負責 GPU 節點的建立與釋放,節點生命週期由Auto Mode節點池管理。

  • Knative Serving:支援按請求並發數(concurrency)或每秒請求數(rps)擴縮 Pod

步驟一:建立 ACK Auto Mode 叢集並配置 GPU 節點池

1. 建立叢集

  1. 登入Container Service管理主控台,在左側導覽列選擇叢集列表

  2. 叢集列表頁面,單擊建立叢集,在ACK 託管叢集頁面,啟用Auto Mode。

    image

  3. 按照頁面指引確認配置後,單擊建立叢集

    如需瞭解詳細說明,請參見建立ACK Auto Mode 叢集

2. 建立GPU節點池

  1. ACK叢集列表頁面,單擊目的地組群名稱,在叢集詳情頁左側導覽列,選擇節點管理 > 節點池

  2. 節點池頁面,單擊建立節點池,然後在建立節點池對話方塊,完成節點池配置。

    主要配置如下。詳細配置說明,請參見建立節點池

    • 託管配置:推薦使用智能託管模式。

    • 執行個體相關的配置項:選擇執行個體配置方式指定執行個體規格,然後選擇 GPU 雲端服務器,機型選擇 V100、A10 或 T4。

    • 節點標籤(Labels):添加標籤 ack.aliyun.com/nvidia-driver-version:550.144.03,指定 NVIDIA 驅動版本為 550.144.03。

    • 容器鏡像加速:建議開啟,縮短模型鏡像拉取時間。

3. 部署 Knative 組件

參見部署 Knative 組件完成部署。

步驟二:準備模型檔案並上傳 OSS

本步驟使用一台臨時 ECS 執行個體從 ModelScope 下載 Qwen3.5-4B 模型檔案,再通過ossutil 將檔案上傳至 OSS Bucket,後續通過儲存卷掛載到推理容器,避免每次啟動推理容器時重複下載模型。

開始前,請確認已完成以下準備工作:

1. 下載 Qwen3.5-4B 模型檔案

在臨時 ECS 執行個體上執行以下操作,從 ModelScope 下載模型檔案。

  1. 安裝 Git。

    # 可執行 yum install git 或 apt install git 安裝
    sudo yum install git
  2. 安裝 Git LFS(Large File Storage)外掛程式。

    # 可執行 yum install git-lfs 或 apt install git-lfs 安裝
    sudo yum install git-lfs
  3. 從 ModelScope 複製 Qwen3.5-4B 倉庫到本地(跳過 LFS 大檔案,避免重複下載)。

    GIT_LFS_SKIP_SMUDGE=1 git clone https://www.modelscope.cn/qwen/Qwen3.5-4B.git
  4. 進入目錄,拉取 LFS 管理的大檔案。

    cd Qwen3.5-4B
    git lfs pull

2. 上傳模型檔案到 OSS

  1. 在 OSS Bucket中建立存放模型的目錄。

    <Your-Bucket-Name>替換為實際名稱。

    ossutil mkdir oss://<Your-Bucket-Name>/models/Qwen3.5-4B
  2. 將本地模型檔案上傳至 OSS。

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

3. 配置 OSS 儲存卷

  1. 選擇鑒權方式(RRSA或AccessKey)並準備訪問憑證,以確保叢集能夠安全、合規地訪問OSS Bucket資源。

    本樣本以AccessKey鑒權為例。兩種方式略有不同,詳見使用ossfs 2.0靜態儲存卷
  2. 將此前擷取的AccessKey儲存為Secret,供PV使用。

    將 <yourAccessKeyID><yourAccessKeySecret> 替換為真實憑證。Secret的Namespace需要和應用Namespace一致。

    kubectl create -n default secret generic oss-secret --from-literal='akId=<yourAccessKeyID>' --from-literal='akSecret=<yourAccessKeySecret>'
  3. 為目的地組群建立 PV 和 PVC,將 OSS 中的模型目錄以唯讀方式掛載。以下樣本使用ossfs 2.0靜態儲存卷

    展開查看範例程式碼

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      # PV 名稱
      name: llm-model
    spec:
      capacity:
        # 儲存卷容量,此值僅用於匹配 PVC
        storage: 30Gi
      accessModes:
        - ReadOnlyMany
      persistentVolumeReclaimPolicy: Retain
      csi:
        driver: ossplugin.csi.alibabacloud.com
        # 與 PV 名稱(metadata.name)保持一致
        volumeHandle: llm-model
        nodePublishSecretRef:
          # 儲存 AccessKey 資訊的 Secret 名稱
          name: oss-secret
          # Secret 所在命名空間
          namespace: default
        volumeAttributes:
          fuseType: ossfs2
          # 替換為實際 Bucket 名稱
          bucket: <Your-Bucket-Name>
          # 待掛載的子目錄,留空則掛載根目錄
          path: /models/Qwen3.5-4B
          # OSS Bucket 所在地區的 Endpoint
          url: "http://oss-cn-hangzhou-internal.aliyuncs.com"
          otherOpts: "-o close_to_open=false"
    ---
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      # PVC 名稱
      name: llm-model
      namespace: default
    spec:
      accessModes:
        - ReadOnlyMany
      resources:
        requests:
          storage: 30Gi
      storageClassName: ""
      # 待綁定的 PV 名稱
      volumeName: llm-model

步驟三:部署 Knative 服務並驗證

1. 建立 Knative Service

  1. ACK叢集列表頁面,單擊目的地組群名稱,在叢集詳情頁左側導覽列,選擇應用 > Knative

  2. 服務管理頁簽,單擊使用模板建立,然後選擇樣本模板自訂,按照頁面指引完成 Knative Service 的部署。

    展開查看範例程式碼

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      labels:
        release: qwen
      name: qwen
      namespace: default
    spec:
      template:
        metadata:
          annotations:
            # 最小副本數,保持至少 1 個副本常駐,避免冷啟動
            autoscaling.knative.dev/minScale: "1"
            # 最大副本數,限制 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

    參數

    說明

    autoscaling.knative.dev/metric

    擴縮容指標。可取值:

    • concurrency(預設):並發數。

    • rps:每秒請求數。

    autoscaling.knative.dev/target

    擴縮容閾值,觸發擴縮容的指標目標值。

    autoscaling.knative.dev/minScale

    最小副本數,需為 ≥ 0 的整數。KPA 支援設定為 0(即允許縮容至零)。

    autoscaling.knative.dev/maxScale

    最大副本數,限制擴容上限。

2. 驗證服務部署

  1. 服務管理頁簽,確認服務就緒,並擷取預設網域名稱和訪問網關地址。

    頁面提示:服務訪問前需將網域名稱與訪問網關進行 Host 綁定。訪問網關地址形如 alb-xxx.aliyuncsslb.com,服務預設網域名稱形如 qwen.default.example.com

  2. 向推理服務發送測試請求。

    xx.40.85.xx 替換為實際訪問網關地址,qwen.default.example.com 替換為實際預設網域名稱。

    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": "介紹杭州"
              }
            ]
          }
        ],
        "max_tokens": 200
      }'

    預期輸出如下:

    {
      "id": "chatcmpl-20dfb4c8-d1ab-48bc-9f1a-78b84c6c8adf",
      "object": "chat.completion",
      "created": 1772602897,
      "model": "Qwen3.5-4B",
      "choices": [
        {
          "index": 0,
          "message": {
            "role": "assistant",
            "content": "杭州(Hangzhou),簡稱"杭",是位於中國浙江省的副省級城市..."
          },
          "finish_reason": "length"
        }
      ],
      "usage": {
        "prompt_tokens": 14,
        "completion_tokens": 200,
        "total_tokens": 214
      }
    }