日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

基于Knative部署vLLM推理應用

傳統的基于GPU利用率的彈性伸縮策略無法準確反映大模型推理服務的實際負載情況,即使GPU利用率達到了100%,也不一定表明系統正處在高負荷運行狀態。Knative提供的自動擴縮容機制KPA(Knative Pod Autoscaler)能夠根據QPS或RPS來調整資源分配,更直接地反映推理服務的性能表現。本文以Qwen-7B-Chat-Int8模型、GPU類型為V100卡為例,介紹如何在Knative中部署一個vLLM推理服務。

vLLM(Vectorized Large Language Model)是一個高性能的大語言模型推理庫,支持多種模型格式和后端加速,適用于大規模語言模型的推理服務部署。vLLM通過PagedAttention優化、動態批量推理(Continuous Batching)、模型量化等優化技術,可以取得較好的大語言模型推理效率。更多關于vLLM框架的信息,請參見vLLM GitHub代碼庫

前提條件

步驟一:準備模型數據并上傳OSS Bucket

您可以使用OSS或NAS準備模型數據,具體操作,請參見使用OSS靜態存儲卷使用NAS靜態存儲卷。本文以OSS為例說明如何準備模型數據。

  1. 下載模型文件。本文以Qwen-7B-Chat-Int8模型為例。

    1. 執行以下命令,安裝Git。

      # 可執行yum install git或apt install git安裝。
      sudo yum install git
    2. 執行以下命令,安裝Git LFS(Large File Support)插件。

      # 可執行yum install git-lfs或apt install git-lfs安裝。
      sudo yum install git-lfs
    3. 執行以下命令,將ModelScope上的Qwen-7B-Chat-Int8倉庫克隆到本地。

      GIT_LFS_SKIP_SMUDGE=1 git clone https://www.modelscope.cn/qwen/Qwen-7B-Chat-Int8.git
    4. 執行以下命令,進入Qwen-7B-Chat-Int8目錄,下載LFS管理的大文件。

      cd Qwen-7B-Chat-Int8
      git lfs pull
  2. 將下載的Qwen-7B-Chat-Int8文件上傳至OSS。

    1. 登錄OSS控制臺,查看并記錄已創建的Bucket名稱。

      如何創建Bucket,請參見創建存儲空間

    2. 安裝和配置ossutil,用于管理OSS資源。具體操作,請參見安裝ossutil

    3. 執行以下命令,在OSS創建名為Qwen-7B-Chat-Int8的目錄。

      ossutil mkdir oss://<Your-Bucket-Name>/Qwen-7B-Chat-Int8
    4. 執行以下命令,上傳模型文件至OSS。

      ossutil cp -r ./Qwen-7B-Chat-Int8 oss://<Your-Bucket-Name>/Qwen-7B-Chat-Int8
  3. 為目標集群配置存儲卷PV和存儲聲明PVC。

    下表僅介紹示例配置項,具體操作,請參見使用OSS靜態存儲卷

    • 示例PV的配置信息

      配置項

      說明

      存儲卷類型

      OSS

      名稱

      llm-model

      訪問證書

      配置用于訪問OSS的AccessKey ID和AccessKey Secret。

      Bucket ID

      選擇已創建的OSS Bucket。

      OSS Path

      選擇模型所在的路徑,如/Qwen-7B-Chat-Int8。

    • 示例PVC的配置信息

      配置項

      說明

      存儲聲明類型

      OSS

      名稱

      llm-model

      分配模式

      選擇已有存儲卷

      已有存儲卷

      單擊選擇已有存儲卷鏈接,選擇已創建的存儲卷PV。

步驟二:部署Knative推理服務

  1. 登錄容器服務管理控制臺,在左側導航欄選擇集群

  2. 集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇應用 > Knative

  3. 單擊服務管理頁簽,選擇命名空間default,然后單擊使用模板創建,將以下YAML示例粘貼至模板,最后單擊創建,部署Knative推理服務。

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      labels:
        release: qwen
      name: qwen
      namespace: default
    spec:
      template:
        metadata:
          annotations:
            autoscaling.knative.dev/metric: "concurrency" # 配置并發數為彈性伸縮指標
            autoscaling.knative.dev/target: "2" # 設置當前最大并發請求數為2
            autoscaling.knative.dev/max-scale: "3" 
          labels:
            release: qwen
        spec:
          containers:
          - command:
            - sh
            - -c
            - python3 -m vllm.entrypoints.openai.api_server --port 8080 --trust-remote-code
              --served-model-name qwen --model /Qwen-7B-Chat-Int8 --gpu-memory-utilization
              0.95 --quantization gptq --max-model-len=6144 # /Qwen-7B-Chat-Int8為模型所在的路徑
            image: kube-ai-registry.cn-shanghai.cr.aliyuncs.com/kube-ai/vllm:0.4.1
            imagePullPolicy: IfNotPresent
            name: vllm-container
            readinessProbe:
              tcpSocket:
                port: 8080
              initialDelaySeconds: 5
              periodSeconds: 5
            resources:
              limits:
                cpu: "32"
                memory: 64Gi
                nvidia.com/gpu: "1"
              requests:
                cpu: "8"
                memory: 16Gi
                nvidia.com/gpu: "1"
            volumeMounts:
            - mountPath: /Qwen-7B-Chat-Int8 # 模型所在的路徑
              name: llm-model
          volumes:
          - name: llm-model
            persistentVolumeClaim:
              claimName: llm-model

    參數

    說明

    autoscaling.knative.dev/metric

    擴縮容指標,支持concurrencyrps兩種指標。默認為concurrency指標。

    target

    擴縮容閾值。

    autoscaling.knative.dev/target

    擴縮容的最小副本數,需要為≥0的整數。KPA支持設置最小值為0。

    max-scale

    擴縮容的最大副本數。

  4. 服務管理頁簽,查看服務是否已部署成功,并獲取默認域名和訪問網關IP,以備后續使用。

    image

步驟三:驗證推理服務

執行以下命令,向模型推理服務發送一條模型推理請求。

# 命令中的1XX.XX.XX.XXX為已獲取的訪問網關IP
curl -H "Host: qwen.default.example.com" -H "Content-Type: application/json" http://1XX.XX.XX.XXX:80/v1/chat/completions -d '{"model": "qwen", "messages": [{"role": "user", "content": "杭州西湖"}], "max_tokens": 10, "temperature": 0.7, "top_p": 0.9, "seed": 10}'

預期輸出:

{"id":"cmpl-e914ef54331e4a5f9b858425321a82ed","object":"chat.completion","created":1733191642,"model":"qwen","choices":[{"index":0,"message":{"role":"assistant","content":"西湖位于中國浙江省杭州市,是中國著名的風景名"},"logprobs":null,"finish_reason":"length","stop_reason":null}],"usage":{"prompt_tokens":10,"total_tokens":20,"completion_tokens":10}}

輸出結果表明,模型可以根據給定的輸入生成相應的回復。

(可選)步驟四:清理環境

如果不再使用已創建的資源,請及時清理。執行以下命令,刪除已創建的PV和PVC。

kubectl delete pvc llm-model
kubectl delete pv llm-model