全部產品
Search
文件中心

Container Service for Kubernetes:部署Serverless模式的KServe模型推理服務

更新時間:Sep 18, 2025

KServe(原KFServing)是雲原生環境的一個模型伺服器和推理引擎,支援自動擴縮容、縮容至零、金絲雀部署等能力。本文介紹如何基於阿里雲服務網格ASM和Arena部署Serverless模式的KServe模型推理服務。

前提條件

步驟一:準備模型資料

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

1、擷取NAS執行個體的掛載點

  1. 登入Apsara File Storage NAS控制台,在左側導覽列選擇檔案系統 > 檔案系統列表,在頁面頂部選擇NAS執行個體所在地區。

  2. 檔案系統列表頁面,單擊目標檔案系統ID進入檔案詳情頁面,單擊掛載使用,懸浮滑鼠至image,查看NAS執行個體的掛載地址,並記錄此處的掛載地址和掛載命令以備後續使用。

2、為目的地組群配置儲存卷PV和儲存聲明PVC

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

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇儲存 > 儲存卷

  3. 儲存卷頁面右上方,單擊建立

  4. 建立儲存卷對話方塊中進行參數配置,然後單擊建立,建立名為training-data的儲存卷。

    以下為主要參數說明,其他配置項可根據業務按需配置。詳細資料,請參見使用NAS靜態儲存卷

    配置項

    說明

    儲存卷類型

    NAS

    名稱

    training-data

    掛載點網域名稱

    選擇步驟1查詢到的掛載點地址。

  5. 然後在左側導覽列,選擇儲存 > 儲存聲明,在儲存聲明頁面右上方,單擊建立

  6. 建立儲存聲明對話方塊中進行參數配置,然後單擊建立,建立名為training-data的儲存聲明。

    以下為主要參數說明,其他配置項可根據業務按需配置。詳細資料,請參見使用NAS靜態儲存卷

    配置項

    說明

    儲存宣告類型

    NAS

    名稱

    training-data

    分配模式

    選擇已有儲存卷

    已有儲存卷

    單擊選擇已有儲存卷連結選擇已建立的儲存卷PV。

3、將資料下載到NAS中

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

  2. 叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇節點管理 > 節點

  3. 節點頁面,單擊目標節點名稱進入節點的執行個體詳情頁面,單擊更多->Workbench 遠端連線,然後單擊登入,進入遠端連線頁面。

  4. 執行步驟1擷取到的掛載命令,掛載NAS。

  5. 下載BLOOM模型和訓練資料。

    Hugging Face下載bloom-560m模型,將模型儲存到PVC中,對應路徑為pvc://training-data/bloom-560m

步驟二:部署推理服務

  1. 執行以下命令,檢查叢集中可用的GPU資源。

    arena top node

    預期輸出:

    NAME                       IPADDRESS      ROLE    STATUS  GPU(Total)  GPU(Allocated)
    cn-beijing.192.1xx.x.xx   192.1xx.x.xx   <none>  Ready   0           0
    cn-beijing.192.1xx.x.xx   192.1xx.x.xx   <none>  Ready   0           0
    cn-beijing.192.1xx.x.xx   192.1xx.x.xx   <none>  Ready   0           0
    cn-beijing.192.1xx.x.xx   192.1xx.x.xx   <none>  Ready   1           0
    cn-beijing.192.1xx.x.xx   192.1xx.x.xx   <none>  Ready   1           0
    ---------------------------------------------------------------------------------------------------
    Allocated/Total GPUs In Cluster:
    0/2 (0.0%)

    預期輸出表明,有2個包含GPU的節點可用於運行推理服務。

  2. 執行以下命令,啟動名稱為bloom-560m的推理服務。pvc training-data將會被掛載到容器內的/mnt/models目錄,即步驟一中下載好的模型路徑。

    arena serve kserve \
        --name=bloom-560m \
        --image=ghcr.io/huggingface/text-generation-inference:1.0.2 \
        --gpus=1 \
        --cpu=6 \
        --memory=20Gi \
        --port=8080 \
        --env=STORAGE_URI=pvc://training-data \
        "text-generation-launcher --disable-custom-kernels --model-id /mnt/models/bloom-560m --num-shard 1 -p 8080"

    預期輸出:

    inferenceservice.serving.kserve.io/bloom-560m created
    INFO[0013] The Job bloom-560m has been submitted successfully
    INFO[0013] You can run `arena serve get bloom-560m --type kserve -n default` to check the job status

    命令中的參數說明如下所示:

    參數

    是否必選

    說明

    --name

    指定提交的作業名稱,全域唯一,不能重複。

    --image

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

    --gpus

    指定推理服務需要使用的GPU卡數。預設值為0。

    --cpu

    指定推理服務需要使用的CPU數。

    --memory

    指定推理服務需要使用的記憶體數。

    --port

    推理服務對外暴露的連接埠。

    --env

    推理服務環境變數,這裡指定模型儲存的PVC為training-data。

步驟三:驗證推理服務

  1. 執行以下命令,查看KServe推理服務的部署情況。

    arena serve get bloom-560m

    預期輸出:

    Name:       bloom-560m
    Namespace:  default
    Type:       KServe
    Version:    00001
    Desired:    1
    Available:  1
    Age:        9m
    Address:    http://bloom-560m.default.example.com
    Port:       :80
    GPU:        1
    
    LatestRevision:     bloom-560m-predictor-00001
    LatestPrecent:      100
    
    Instances:
      NAME                                                   STATUS   AGE  READY  RESTARTS  GPU  NODE
      ----                                                   ------   ---  -----  --------  ---  ----
      bloom-560m-predictor-00001-deployment-ff4c49bf6-twrlp  Running  9m   2/2    0         1    cn-hongkong.192.1xx.x.xxx

    預期輸出表明,KServe推理服務部署成功,模型訪問地址為http://bloom-560m.default.example.com

  2. 擷取ASM網關地址。具體操作,請參見擷取ASM網關地址

  3. 執行下列命令,使用擷取到的ASM網關地址訪問推理服務。

     # 請將${ASM_GATEWAY}替換為ASM網關地址。
    curl -H "Host: bloom-560m.default.example.com" http://${ASM_GATEWAY}:80/generate \
        -X POST \
        -d '{"inputs":"What is Deep Learning?","parameters":{"max_new_tokens":17}}' \
        -H 'Content-Type: application/json'

    預期輸出:

    {"generated_text":" Deep Learning is a new type of machine learning that is used to solve complex problems."}

步驟四:更新推理服務

  1. 建立一個新的模型版本,可將PVC中的模型地址複製到新的路徑bloom-560m-v2

  2. 執行下列命令,灰階更新KServe推理服務,指定新版本模型路徑為bloom-560m-v2,新版本分配10%流量,老版本分配90%流量。

    arena serve update kserve \
        --name bloom-560m \
        --canary-traffic-percent=10 \
        "text-generation-launcher --disable-custom-kernels --model-id /mnt/models/bloom-560m-v2 --num-shard 1 -p 8080"
  3. 執行以下命令,查看推理服務運行情況。

    arena serve get bloom-560m

    預期輸出:

    Name:       bloom-560m
    Namespace:  default
    Type:       KServe
    Version:    00002
    Desired:    2
    Available:  2
    Age:        36m
    Address:    http://bloom-560m.default.example.com
    Port:       :80
    GPU:        2
    
    LatestRevision:     bloom-560m-predictor-00002
    LatestPrecent:      10
    PrevRevision:       bloom-560m-predictor-00001
    PrevPrecent:        90
    
    Instances:
      NAME                                                    STATUS   AGE  READY  RESTARTS  GPU  NODE
      ----                                                    ------   ---  -----  --------  ---  ----
      bloom-560m-predictor-00001-deployment-ff4c49bf6-twrlp   Running  36m  2/2    0         1    cn-hongkong.192.1xx.x.xxx
      bloom-560m-predictor-00002-deployment-5b7bb66cfb-nqprp  Running  6m   2/2    0         1    cn-hongkong.192.1xx.x.xxx
  4. 新版本測試通過後,可執行以下命令,將canary-traffic-percent的值設定為100,將流量全部轉寄到新版本。

    arena serve update kserve \
        --name bloom-560m \
        --canary-traffic-percent=100

(可選)步驟五:刪除推理服務

如果需要刪除推理服務,可執行以下命令。

arena serve delete bloom-560m