KServe(原KFServing)是雲原生環境的一個模型伺服器和推理引擎,支援自動擴縮容、縮容至零、金絲雀部署等能力。本文介紹如何基於阿里雲服務網格ASM和Arena部署Serverless模式的KServe模型推理服務。
前提條件
已安裝KServe組件。具體操作,請參見ASM整合KServe實現雲原生AI模型推理服務。
已安裝Arena用戶端,且版本不低於0.9.11。具體操作,請參見配置Arena用戶端。
步驟一:準備模型資料
可以使用NAS或OSS準備模型資料,具體操作,請參見使用NAS靜態儲存卷、使用ossfs 1.0靜態儲存卷。本文以NAS為例說明如何準備模型資料。
1、擷取NAS執行個體的掛載點
登入Apsara File Storage NAS控制台,在左側導覽列選擇檔案系統 > 檔案系統列表,在頁面頂部選擇NAS執行個體所在地區。
在檔案系統列表頁面,單擊目標檔案系統ID進入檔案詳情頁面,單擊掛載使用,懸浮滑鼠至
,查看NAS執行個體的掛載地址,並記錄此處的掛載地址和掛載命令以備後續使用。
2、為目的地組群配置儲存卷PV和儲存聲明PVC
登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇。
在儲存卷頁面右上方,單擊建立。
在建立儲存卷對話方塊中進行參數配置,然後單擊建立,建立名為training-data的儲存卷。
以下為主要參數說明,其他配置項可根據業務按需配置。詳細資料,請參見使用NAS靜態儲存卷。
配置項
說明
儲存卷類型
NAS
名稱
training-data
掛載點網域名稱
選擇步驟1查詢到的掛載點地址。
然後在左側導覽列,選擇,在儲存聲明頁面右上方,單擊建立。
在建立儲存聲明對話方塊中進行參數配置,然後單擊建立,建立名為training-data的儲存聲明。
以下為主要參數說明,其他配置項可根據業務按需配置。詳細資料,請參見使用NAS靜態儲存卷。
配置項
說明
儲存宣告類型
NAS
名稱
training-data
分配模式
選擇已有儲存卷。
已有儲存卷
單擊選擇已有儲存卷連結選擇已建立的儲存卷PV。
3、將資料下載到NAS中
登入Container Service管理主控台,在左側導覽列選擇叢集列表。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇。
在節點頁面,單擊目標節點名稱進入節點的執行個體詳情頁面,單擊更多->Workbench 遠端連線,然後單擊登入,進入遠端連線頁面。
執行步驟1擷取到的掛載命令,掛載NAS。
下載BLOOM模型和訓練資料。
從Hugging Face下載
bloom-560m模型,將模型儲存到PVC中,對應路徑為pvc://training-data/bloom-560m。
步驟二:部署推理服務
執行以下命令,檢查叢集中可用的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的節點可用於運行推理服務。
執行以下命令,啟動名稱為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。
步驟三:驗證推理服務
執行以下命令,查看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。擷取ASM網關地址。具體操作,請參見擷取ASM網關地址。
執行下列命令,使用擷取到的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."}
步驟四:更新推理服務
建立一個新的模型版本,可將PVC中的模型地址複製到新的路徑
bloom-560m-v2。執行下列命令,灰階更新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"執行以下命令,查看推理服務運行情況。
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新版本測試通過後,可執行以下命令,將
canary-traffic-percent的值設定為100,將流量全部轉寄到新版本。arena serve update kserve \ --name bloom-560m \ --canary-traffic-percent=100
(可選)步驟五:刪除推理服務
如果需要刪除推理服務,可執行以下命令。
arena serve delete bloom-560m