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

基于ACK使用vLLM部署Qwen模型推理服務

本文以Qwen1.5-4B-Chat模型、GPU類型為T4和A10卡為例,演示如何在ACK中使用vLLM(Versatile Large Language Model)框架部署通義千問(Qwen)模型推理服務。

背景信息

Qwen1.5-4B-Chat

Qwen1.5-4B-Chat是阿里云基于Transformer大語言模型研發的40億參數模型,模型在超大規模的預訓練數據(預訓練數據類型多樣且覆蓋廣泛,包括大量網絡文本、專業書籍、代碼等)上進行訓練得到。更多模型信息,請參見Qwen GitHub代碼庫

vLLM

vLLM是一個高效易用的大語言模型推理服務框架,vLLM支持包括通義千問在內的多種常見大語言模型。vLLM通過PagedAttention優化、動態批量推理(Continuous Batching)、模型量化等優化技術,可以取得較好的大語言模型推理效率。更多關于vLLM框架的信息,請參見vLLM GitHub代碼庫

前提條件

  • 已創建包含GPU節點的ACK集群Pro版,且集群版本為1.22及以上,GPU節點顯存需為16GB及以上。具體操作,請參見創建ACK托管集群

    建議GPU節點使用525版本驅動,您可以通過為GPU節點池添加標簽ack.aliyun.com/nvidia-driver-version:525.105.17指定驅動版本為525.105.17。具體操作,請參見通過指定版本號自定義節點GPU驅動版本

  • 已安裝最新版Arena客戶端。具體操作,請參見配置Arena客戶端

步驟一:準備模型數據

本文以Qwen1.5-4B-Chat模型為例,演示如何下載模型、上傳模型至OSS,以及在ACK集群中創建對應的存儲卷PV和存儲卷聲明PVC。

如需上傳模型至NAS,請參見使用NAS靜態存儲卷

  1. 下載模型文件。

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

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

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

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

      cd Qwen1.5-4B-Chat
      git lfs pull
  2. 將下載的Qwen1.5-4B-Chat文件上傳至OSS。

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

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

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

    3. 執行以下命令,在OSS創建名為Qwen1.5-4B-Chat的目錄。

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

      ossutil cp -r ./Qwen1.5-4B-Chat oss://<Your-Bucket-Name>/Qwen1.5-4B-Chat
  3. 為目標集群配置存儲卷PV和存儲聲明PVC。具體操作,請參見使用OSS靜態存儲卷

    • 以下為示例PV的配置信息:

      配置項

      說明

      存儲卷類型

      OSS

      名稱

      llm-model

      訪問證書

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

      Bucket ID

      選擇已創建的OSS Bucket。

      OSS Path

      選擇模型所在的路徑,如/models/Qwen1.5-4B-Chat。

    • 以下為示例PVC的配置信息:

      配置項

      說明

      存儲聲明類型

      OSS

      名稱

      llm-model

      分配模式

      選擇已有存儲卷

      已有存儲卷

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

步驟二:部署推理服務

大模型對顯存資源需求較高,因此在生產環境中,推薦您采用性能卓越的A10機型以確保最佳運行效果。若是出于測試目的,您可以選擇具備較高普及度和成本效益的T4機型,但T4的性能表現可能與A10存在較大差距。

  1. 執行以下命令,基于vLLM模型推理框架部署Qwen1.5-4B-Chat模型的推理服務。

    您可以將模型參數文件看作是一種特殊類型的數據集合,利用Arena提供的--data參數,將模型掛載到推理服務容器的指定位置。本文以掛載到/model/Qwen1.5-4B-Chat為例。--max_model_len設置了該模型最大可處理的Token長度,增大該配置項可獲得更好的模型對話效果,但是可能會占用更多GPU顯存資源。vLLM框架支持的完整參數列表,請參見vLLM Github代碼庫

    單卡A10環境

    arena serve custom \
        --name=vllm-qwen-4b-chat \
        --version=v1 \
        --gpus=1 \
        --replicas=1 \
        --restful-port=8000 \
        --readiness-probe-action="tcpSocket" \
        --readiness-probe-action-option="port: 8000" \
        --readiness-probe-option="initialDelaySeconds: 30" \
        --readiness-probe-option="periodSeconds: 30" \
        --image=ac2-registry.cn-hangzhou.cr.aliyuncs.com/ac2/vllm:0.4.1-ubuntu22.04 \
        --data=llm-model:/model/Qwen1.5-4B-Chat \
        "python3 -m vllm.entrypoints.openai.api_server --trust-remote-code --model /model/Qwen1.5-4B-Chat/ --gpu-memory-utilization 0.95 --max-model-len 16384"

    單卡T4環境

    arena serve custom \
        --name=vllm-qwen-4b-chat \
        --version=v1 \
        --gpus=1 \
        --replicas=1 \
        --restful-port=8000 \
        --readiness-probe-action="tcpSocket" \
        --readiness-probe-action-option="port: 8000" \
        --readiness-probe-option="initialDelaySeconds: 30" \
        --readiness-probe-option="periodSeconds: 30" \
        --image=ac2-registry.cn-hangzhou.cr.aliyuncs.com/ac2/vllm:0.4.1-ubuntu22.04 \
        --data=llm-model:/model/Qwen1.5-4B-Chat \
        "python3 -m vllm.entrypoints.openai.api_server --trust-remote-code --model /model/Qwen1.5-4B-Chat/ --gpu-memory-utilization 0.95 --max-model-len 8192 --dtype half"

    參數說明如下所示:

    參數

    說明

    --name

    指定推理服務名稱。

    --version

    指定推理服務版本。

    --gpus

    指定單個推理服務副本需要使用的GPU卡數。

    --replicas

    指定推理服務副本數。

    --restful-port

    指定推理服務對外暴露的端口。

    --readiness-probe-action

    指定就緒探針連接類型,支持HttpGet、Exec、gRPC、TCPSocket。

    --readiness-probe-action-option

    指定就緒探針連接方式。

    --readiness-probe-option

    指定就緒探針配置。

    --data

    掛載共享存儲卷PVC到運行環境中。它由兩部分組成,通過英文冒號(:)分割。冒號左側是您已經準備好的PVC名稱。您可以通過命令arena data list查看當前集群可用的PVC列表;冒號右側是您想將PVC的掛載到運行環境中的路徑,也是您訓練代碼要讀取數據或模型的本地路徑。這樣通過掛載的方式,您的代碼就可以訪問PVC中的數據或模型。

    --image

    指定推理服務的鏡像地址。

    預期輸出:

    service/vllm-qwen-4b-chat-v1 created
    deployment.apps/vllm-qwen-4b-chat-v1-custom-serving created
    INFO[0008] The Job vllm-qwen-4b-chat has been submitted successfully
    INFO[0008] You can run `arena serve get vllm-qwen-4b-chat --type custom-serving -n default` to check the job status

    輸出結果表明已經成功部署了一個與vLLM相關的服務及其配套的Deployment和Job。

  2. 執行以下命令,查看推理服務的詳細信息。

    arena serve get vllm-qwen-4b-chat

    預期輸出:

    Name:       vllm-qwen-4b-chat
    Namespace:  default
    Type:       Custom
    Version:    v1
    Desired:    1
    Available:  1
    Age:        36m
    Address:    172.16.XX.XX
    Port:       RESTFUL:8000
    GPU:        1
    
    Instances:
      NAME                                                  STATUS   AGE  READY  RESTARTS  GPU  NODE
      ----                                                  ------   ---  -----  --------  ---  ----
      vllm-qwen-4b-chat-v1-custom-serving-6d7c786b9f-z6nfk  Running  36m  1/1    0         1    cn-beijing.192.168.XX.XX

    輸出結果表明該推理服務正在穩定運行,且已準備好提供服務。

步驟三:驗證推理服務

  1. 執行以下命令,在推理服務與本地環境之間建立端口轉發。

    重要

    請注意kubectl port-forward建立的端口轉發不具備生產級別的可靠性、安全性和擴展性,因此僅適用于開發和調試目的,不適合在生產環境使用。更多關于Kubernetes集群內生產可用的網絡方案的信息,請參見Ingress概述

    kubectl port-forward svc/vllm-qwen-4b-chat-v1 8000:8000

    預期輸出:

    Forwarding from 127.0.0.1:8000 -> 8000
    Forwarding from [::1]:8000 -> 8000
  2. 執行以下命令,向Triton模型推理服務發送了一條示例的模型推理請求。

    curl http://localhost:8000/v1/chat/completions -H "Content-Type: application/json"  -d '{"model": "/model/Qwen1.5-4B-Chat/", "messages": [{"role": "user", "content": "測試一下"}], "max_tokens": 10, "temperature": 0.7, "top_p": 0.9, "seed": 10}'

    預期輸出:

    {"id":"cmpl-503270b21fa44db2b6b3c3e0abaa3c02","object":"chat.completion","created":1717141209,"model":"/model/Qwen1.5-4B-Chat/","choices":[{"index":0,"message":{"role":"assistant","content":"好的,請問您需要測試什么?"},"logprobs":null,"finish_reason":"stop","stop_reason":null}],"usage":{"prompt_tokens":21,"total_tokens":30,"completion_tokens":9}}

    輸出結果表明模型可以根據給定的輸入(在這個例子中是一條測試消息)生成相應的回復。

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

如果不再使用已創建的資源,請及時清理。

  • 執行以下命令,刪除清理已部署的模型推理服務。

    arena serve delete vllm-qwen-4b-chat
  • 執行以下命令,刪除已創建的PV和PVC。

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