全部產品
Search
文件中心

Container Service for Kubernetes:在ACK Auto Mode中部署Qwen3.5-2B大模型推理服務

更新時間:Apr 21, 2026

AI 推理情境中,GPU 資源的擴容速度直接影響業務高峰期間的服務可用性。ACK Auto Mode叢集針對 GPU 彈性鏈路進行了專項最佳化,可自動完成 GPU 節點的擴容和基礎營運。本文以Qwen3.5-2B為例,介紹如何在 ACK Auto Mode 叢集中使用 GPU 算力快速部署大模型推理服務。

準備工作

  • 建立ACK Auto Mode 叢集

  • 已建立合格 GPU 智能託管節點池。

    展開查看

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

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

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

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

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

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

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

步驟一:準備模型檔案並掛載OSS

本步驟使用一台臨時 ECS 執行個體從 ModelScope 下載 Qwen3.5-2B 模型檔案,上傳到 OSS Bucket,然後為叢集配置 PV 和 PVC。模型以儲存卷方式掛載到推理容器,避免每次容器啟動時重複下載。

執行本步驟前,確認以下前提條件:

1. 下載Qwen3.5-2B模型

在臨時 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. 初始化Git LFS,從 ModelScope 複製 Qwen3.5-2B 倉庫到本地(跳過 LFS 大檔案,避免重複下載)。

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

    cd Qwen3.5-2B/
    git lfs pull

2. 上傳模型檔案到OSS

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

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

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

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

3. 配置OSS儲存卷

為叢集建立 PV 和 PVC,使 Pod 以唯讀方式掛載 OSS 中的模型目錄。詳情參見使用ossfs 2.0靜態儲存卷

  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   
        # 使用此前建立的Secret
        nodePublishSecretRef:
          # 儲存AK資訊的Secret名稱
          name: oss-secret  
          # 該Secret所在的命名空間
          namespace: default  
        volumeAttributes:
          fuseType: ossfs2
          # 替換為實際Bucket名稱
          bucket: knative-llm  
          # 待掛載的子目錄,留空則掛載根目錄
          path: /models/Qwen3.5-2B
          # OSS Bucket所在地區的Endpoint
          url: "http://oss-cn-hangzhou-internal.aliyuncs.com"  
          otherOpts: "-o close_to_open=false"
    ---
    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      # PVC名稱
      name: llm-model 
      namespace: default
    spec:
      # 以下配置需要與PV一致
      accessModes:
        - ReadOnlyMany
      resources:
        requests:
          storage: 30Gi
      storageClassName: ""
      # 待綁定的PV
      volumeName: llm-model

步驟二:部署推理服務並驗證

1. 建立Deployment和Service

使用 vLLM 架構將 Qwen3.5-2B 模型以 Deployment 形式部署到叢集,並通過 LoadBalancer 類型的 Service 對外暴露推理介面。

  1. ACK叢集列表頁面,單擊目的地組群名稱,在叢集詳情頁左側導覽列,選擇工作負載 > 無狀態

  2. 單擊使用YAML建立資源,提交以下 YAML 內容。

    提交後,若叢集中 GPU 資源不足,Pod 會先進入 Pending 狀態。ACK Auto Mode 會自動觸發 GPU 節點擴容、建立新節點,並在節點初始化完成後將 Pod 調度到新節點運行,無需手動幹預。當 Pod 進入 Running 狀態時,模型服務部署完成。

    展開查看範例程式碼

    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
                # GPU 數量上限
                nvidia.com/gpu: "1"
              requests:
                cpu: "8"
                memory: 32Gi
                # 每個 Pod 請求 1 塊 GPU,與 limits 保持一致
                nvidia.com/gpu: "1"
            volumeMounts:
            # 與 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:
        # 對外暴露的連接埠,需與 containerPort 一致
        - port: 8000
          protocol: TCP
          targetPort: 8000
      selector:
        app: qwen

    部署完成後,可在無狀態頁面查看應用狀態。

2. 驗證推理服務

  1. 擷取 Service 暴露的公網 IP。

    export EXTERNAL_IP=$(kubectl get svc qwen-2b -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
    echo ${EXTERNAL_IP}
  2. 發送推理請求,驗證模型服務是否可用。

    將 IP 8.XX.XX.89替換為實際擷取到的公網 IP。

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

    預期輸出:

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

相關文檔