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

使用KServe實現(xiàn)推理服務(wù)的金絲雀發(fā)布

使用KServe實現(xiàn)推理服務(wù)的金絲雀發(fā)布,可以更好地管理和控制推理服務(wù)的部署過程,減少潛在錯誤和故障對用戶的影響,并確保推理服務(wù)的高可用性和穩(wěn)定性。

功能介紹

KServe支持推理服務(wù)的金絲雀發(fā)布,它允許一個推理服務(wù)的新版本接收一部分流量。如果一個發(fā)布步驟失敗,金絲雀發(fā)布策略還可以回滾到先前的修訂版。

在KServe中,最后一次成功發(fā)布的修訂版會接收100%的流量。canaryTrafficPercent字段用于指定應(yīng)該路由到新修訂版的流量百分比。根據(jù)canaryTrafficPercent的值,KServe會自動將流量分配給最后一次成功發(fā)布的修訂版和當(dāng)前正在發(fā)布的修訂版。

當(dāng)部署第一個修訂版的推理服務(wù)時,它將接收100%的流量。當(dāng)部署多個修訂版時,例如步驟二,金絲雀發(fā)布策略配置為將10%的流量路由到新修訂版(LatestReadyRevision),90%的流量繼續(xù)流向之前的修訂版(LatestRolledoutRevision)。如果某個修訂版不健康或出現(xiàn)問題,流量將不會被路由到該修訂版,以確保穩(wěn)定性和可靠性。

前提條件

已部署推理服務(wù),且可以正常運(yùn)行。具體操作,請參見ASM集成云原生推理服務(wù)框架KServe

步驟一:查看推理服務(wù)的流量分配

前提條件的推理服務(wù)部署成功后,可以看到100%流量指向服務(wù)修訂版1的模型服務(wù)。

執(zhí)行以下命令,查看sklearn-iris推理服務(wù)的相關(guān)信息。

kubectl get isvc -n kserve-test sklearn-iris

預(yù)期輸出:

NAME           URL                                           READY   PREV   LATEST   PREVROLLEDOUTREVISION   LATESTREADYREVISION            AGE
sklearn-iris   http://sklearn-iris.kserve-test.example.com   True           100                              sklearn-iris-predictor-00001   79s

可以看到路由到LATEST列下的InferenceService的流量比例為100。

步驟二:使用金絲雀部署策略更新InferenceService

  1. 執(zhí)行以下命令,將canaryTrafficPercent字段添加到predictor組件,并更新storageUri來使用新的模型。

    kubectl apply -n kserve-test -f - <<EOF
    apiVersion: "serving.kserve.io/v1beta1"
    kind: "InferenceService"
    metadata:
      name: "sklearn-iris"
    spec:
      predictor:
        canaryTrafficPercent: 10
        model:
          modelFormat:
            name: sklearn
          storageUri: "gs://kfserving-examples/models/sklearn/1.0/model-2"
    EOF
    

    命令執(zhí)行后,將更新sklearn-iris推理服務(wù)的配置。添加的canaryTrafficPercent字段設(shè)置為10,表示將10%的流量分配給金絲雀模型(修訂版2),而其余90%的流量將繼續(xù)指向之前的模型(修訂版1)。根據(jù)金絲雀發(fā)布的定義,流量將在最新就緒的修訂版2和之前推出的修訂版1之間進(jìn)行分配。

  2. 執(zhí)行以下命令,查看sklearn-iris推理服務(wù)的相關(guān)信息。

    kubectl get isvc -n kserve-test sklearn-iris

    預(yù)期輸出:

    NAME           URL                                           READY   PREV   LATEST   PREVROLLEDOUTREVISION          LATESTREADYREVISION            AGE
    sklearn-iris   http://sklearn-iris.kserve-test.example.com   True    90     10       sklearn-iris-predictor-00001   sklearn-iris-predictor-00002   11m

    可以看到90%的流量指向了先前的模型服務(wù)(修訂版1),而10%的流量指向了當(dāng)前的模型服務(wù)(修訂版2)。

  3. 執(zhí)行以下命令,查看正在運(yùn)行的Pod信息。

    kubectl get pod -n kserve-test

    預(yù)期輸出:

    NAME                                                       READY   STATUS    RESTARTS   AGE
    sklearn-iris-predictor-00001-deployment-7965bcc66-grdbq    2/2     Running   0          12m
    sklearn-iris-predictor-00002-deployment-6744dbbd8c-wfghv   2/2     Running   0          86s

    可以看到有兩個Pod分別為舊模型和新模型運(yùn)行,并且有10%的流量路由到新模型。

    說明

    在Pod的名稱中,修訂版1的名稱中包含predictor-0001,修訂版2的名稱中包含predictor-0002

步驟三:切換到新版本

如果金絲雀模型運(yùn)行良好并通過了驗證測試,您可以通過刪除canaryTrafficPercent字段并重新應(yīng)用InferenceService自定義資源來切換到新版本。

  1. 執(zhí)行命令,刪除canaryTrafficPercent字段并重新應(yīng)用InferenceService自定義資源來切換到新版本。

    kubectl apply -n kserve-test -f - <<EOF
    apiVersion: "serving.kserve.io/v1beta1"
    kind: "InferenceService"
    metadata:
      name: "sklearn-iris"
    spec:
      predictor:
        model:
          modelFormat:
            name: sklearn
          storageUri: "gs://kfserving-examples/models/sklearn/1.0/model-2"
    EOF
    
  2. 執(zhí)行以下命令,查看sklearn-iris推理服務(wù)的相關(guān)信息。

    kubectl get isvc -n kserve-test sklearn-iris

    預(yù)期輸出:

    NAME           URL                                           READY   PREV   LATEST   PREVROLLEDOUTREVISION   LATESTREADYREVISION            AGE
    sklearn-iris   http://sklearn-iris.kserve-test.example.com   True           100                              sklearn-iris-predictor-00002   18m

    可以看到所有流量都路由新模型的修訂版2。

相關(guān)操作

回滾到舊版本

您可以通過將當(dāng)前模型服務(wù)(修訂版2)的canaryTrafficPercent設(shè)為0來回滾到之前的模型服務(wù)(修訂版1)。設(shè)置后,將從修訂版2回滾到修訂版1,并將修訂版2的流量減少到零。

  1. 執(zhí)行以下命令,將模型服務(wù)(修訂版2)的流量設(shè)置為0%。

    kubectl apply -n kserve-test -f - <<EOF
    apiVersion: "serving.kserve.io/v1beta1"
    kind: "InferenceService"
    metadata:
      name: "sklearn-iris"
    spec:
      predictor:
        canaryTrafficPercent: 0
        model:
          modelFormat:
            name: sklearn
          storageUri: "gs://kfserving-examples/models/sklearn/1.0/model-2"
    EOF
    
  2. 執(zhí)行以下命令,查看sklearn-iris推理服務(wù)的相關(guān)信息。

    kubectl get isvc -n kserve-test sklearn-iris

    預(yù)期輸出:

    NAME           URL                                           READY   PREV   LATEST   PREVROLLEDOUTREVISION          LATESTREADYREVISION            AGE
    sklearn-iris   http://sklearn-iris.kserve-test.example.com   True    100    0        sklearn-iris-predictor-00001   sklearn-iris-predictor-00002   22m

    可以看到100%流量流向之前的模型服務(wù)(修訂版1)。

使用注解路由流量

您可以通過添加注解serving.kserve.io/enable-tag-routing來啟用基于標(biāo)簽的路由,通過請求URL中的標(biāo)簽明確地將流量路由到金絲雀模型(修訂版2)或舊模型(修訂版1)。

  1. 執(zhí)行以下命令,應(yīng)用金絲雀模型(修訂版2),并設(shè)置canaryTrafficPercent: 10serving.kserve.io/enable-tag-routing: "true"

    kubectl apply -n kserve-test -f - <<EOF
    apiVersion: "serving.kserve.io/v1beta1"
    kind: "InferenceService"
    metadata:
      name: "sklearn-iris"
      annotations:
        serving.kserve.io/enable-tag-routing: "true"
    spec:
      predictor:
        canaryTrafficPercent: 10
        model:
          modelFormat:
            name: sklearn
          storageUri: "gs://kfserving-examples/models/sklearn/1.0/model-2"
    EOF
    
  2. 執(zhí)行以下命令,查看InferenceService的狀態(tài)。

    kubectl get isvc -n kserve-test sklearn-iris -oyaml
     ....
     status:
      address:
        url: http://sklearn-iris.kserve-test.svc.cluster.local
      components:
        predictor:
          address:
            url: http://sklearn-iris-predictor.kserve-test.svc.cluster.local
          latestCreatedRevision: sklearn-iris-predictor-00003
          latestReadyRevision: sklearn-iris-predictor-00003
          latestRolledoutRevision: sklearn-iris-predictor-00001
          previousRolledoutRevision: sklearn-iris-predictor-00001
          traffic:
          - latestRevision: true
            percent: 10
            revisionName: sklearn-iris-predictor-00003
            tag: latest
            url: http://latest-sklearn-iris-predictor.kserve-test.example.com
          - latestRevision: false
            percent: 90
            revisionName: sklearn-iris-predictor-00001
            tag: prev
            url: http://prev-sklearn-iris-predictor.kserve-test.example.com
          url: http://sklearn-iris-predictor.kserve-test.example.com
     
     ....

    可以看到有兩個URL,分別是金絲雀版本和之前舊版本的模型服務(wù)URL。通過在URL中添加latest-prev-來區(qū)分。

    金絲雀版本的URL是http://latest-sklearn-iris-predictor.kserve-test.example.com

    ,舊版本的URL是http://prev-sklearn-iris-predictor.kserve-test.example.com

  3. 執(zhí)行以下命令,根據(jù)您想要訪問的特定版本,將相應(yīng)的URL添加到請求中,調(diào)用InferenceService的服務(wù)并獲取預(yù)測結(jié)果。

    命令中,${INGRESS_HOST}${INGRESS_PORT}表示入口網(wǎng)關(guān)的主機(jī)和端口,latest-sklearn-iris-predictor.kserve-test.example.com表示訪問的模型服務(wù)的URL。您可以根據(jù)實際情況進(jìn)行相應(yīng)的替換和調(diào)整。

    curl -v -H "Host: latest-sklearn-iris-predictor.kserve-test.example.com" http://${INGRESS_HOST}:${INGRESS_PORT}/v1/models/sklearn-iris:predict -d @./iris-input.json