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

基于ECI的彈性推理

模型訓(xùn)練完成后,通常會被部署成推理服務(wù)。推理服務(wù)的調(diào)用量會隨著業(yè)務(wù)需求動態(tài)變化,這就需要服務(wù)器能彈性擴(kuò)縮容來節(jié)省成本。在大規(guī)模高并發(fā)的節(jié)點(diǎn)需求情況下,常規(guī)的部署方案無法滿足此類需求。阿里云提供了基于彈性容器實(shí)例ECI(Elastic Container Instance)的運(yùn)行工作負(fù)載能力,滿足推理服務(wù)的彈性伸縮的需求。本文介紹如何基于ECI運(yùn)行彈性推理服務(wù)。

前提條件

  • 已準(zhǔn)備好部署模型。本文使用TensorFlow 1.15訓(xùn)練的Bert模型。

  • 已安裝ack-virtual-node、ack-alibaba-cloud-metrics-adapter、arena組件。關(guān)于組件的相關(guān)操作,請參見管理組件;關(guān)于ack-virtual-node的相關(guān)信息,請參見對接ECI概述

操作步驟

  1. 將訓(xùn)練模型上傳到OSS上。具體操作,請參見控制臺上傳文件

  2. 創(chuàng)建PV和PVC。

    1. 使用以下模板創(chuàng)建pvc.yaml文件。

      apiVersion: v1
      kind: PersistentVolume
      metadata:
        name: model-csi-pv
      spec:
        capacity:
          storage: 5Gi
        accessModes:
          - ReadWriteMany
        persistentVolumeReclaimPolicy: Retain
        csi:
          driver: ossplugin.csi.alibabacloud.com
          volumeHandle: model-csi-pv # 需要和pv名稱一致。
          volumeAttributes:
            bucket: "Your Bucket"
            url: "Your oss url"
            akId: "Your Access Key Id"
            akSecret: "Your Access Key Secret"
            otherOpts: "-o max_stat_cache_size=0 -o allow_other"
      ---
      apiVersion: v1
      kind: PersistentVolumeClaim
      metadata:
        name: model-pvc
      spec:
        accessModes:
        - ReadWriteMany
        resources:
          requests:
            storage: 5Gi

      參數(shù)

      說明

      bucket

      OSS的Bucket名稱,在OSS范圍內(nèi)全局唯一。更多信息,請參見存儲空間命名

      url

      OSS文件的訪問URL。更多信息,請參見如何獲取單個(gè)或多個(gè)文件的URL

      akId

      訪問OSS的AccessKey ID和AccessKey Secret。建議使用RAM用戶訪問,更多信息,請參見創(chuàng)建AccessKey

      akSecret

      otherOpts

      掛載OSS時(shí)支持定制化參數(shù)輸入。

      • -o max_stat_cache_size=0代表禁用屬性緩存,每次訪問文件都會從 OSS 中獲取最新的屬性信息。

      • -o allow_other代表允許其他用戶訪問掛載的文件系統(tǒng)。

      參數(shù)設(shè)置的更多信息,請參見ossfs支持的設(shè)置參數(shù)選項(xiàng)

    2. 執(zhí)行以下命令,創(chuàng)建PV和PVC。

      kubectl apply -f pvc.yaml
  3. 部署推理服務(wù)。

    1. 執(zhí)行以下命令,部署推理服務(wù)。

      部署推理服務(wù)時(shí),您可以通過Annotation指定申請的資源類型,關(guān)鍵參數(shù)說明如下:

      參數(shù)

      說明

      alibabacloud.com/burst-resource

      取值如下:

      • 默認(rèn)不配置:只使用集群現(xiàn)有的ECS資源。

      • eci:當(dāng)前集群ECS資源不足時(shí),使用ECI彈性資源。

      • eci_only:只使用ECI彈性資源,不使用集群的ECS資源。

      k8s.aliyun.com/eci-use-specs

      如果需要使用ECI GPU資源,需要通過該Annotation指定GPU實(shí)例規(guī)格。

      arena serve tensorflow \
         --namespace=default \
         --name=bert-tfserving \
         --model-name=chnsenticorp  \
         --gpus=1  \
         --image=tensorflow/serving:1.15.0-gpu \
         --data=model-pvc:/data \
         --model-path=/data/models/tensorflow/chnsenticorp \
         --version-policy=specific:1623831335 \
         --annotation=alibabacloud.com/burst-resource=eci_only \
         --annotation=k8s.aliyun.com/eci-use-specs=ecs.gn6i-c4g1.xlarge
    2. 執(zhí)行以下命令,查看服務(wù)狀態(tài)。

      arena serve list

      預(yù)期輸出:

      NAME            TYPE        VERSION       DESIRED  AVAILABLE  ADDRESS        PORTS                   GPU
      bert-tfserving  Tensorflow  202207181536  1        1          172.16.52.170  GRPC:8500,RESTFUL:8501  1
    3. 執(zhí)行以下命令,查看Pod狀態(tài)。

      kubectl get pods -o wide

      預(yù)期輸出:

      NAME                                                              READY   STATUS    RESTARTS   AGE    IP              NODE                           NOMINATED NODE   READINESS GATES
      bert-tfserving-202207181536-tensorflow-serving-547797c546-djh58   1/1     Running   0          114s   192.168.0.246   virtual-kubelet-cn-beijing-h   <none>           <none>

      由預(yù)期輸出得到,Node類型為virtual-kubelet-cn-beijing-h,表示Pod被部署在ECI上。

  4. 創(chuàng)建HPA(Horizontal Pod Autoscaler)。HPA可以根據(jù)不同負(fù)載情況,自動調(diào)整Kubernetes中的Pod副本數(shù)量。

    1. 執(zhí)行以下命令,查看推理服務(wù)對應(yīng)的Deployment。

      kubectl get deployment

      預(yù)期輸出:

      NAME                                             READY   UP-TO-DATE   AVAILABLE   AGE
      bert-tfserving-202207181536-tensorflow-serving   1/1     1            1           2m18s
    2. 執(zhí)行以下命令,查看推理服務(wù)對應(yīng)的Service。

      kubectl get service

      預(yù)期輸出:

      NAME                                             TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)             AGE
      bert-tfserving-202207181536-tensorflow-serving   ClusterIP   172.16.52.170   <none>        8500/TCP,8501/TCP   2m45s
    3. 使用以下模板創(chuàng)建bert-tfserving-eci-hpa.yaml文件。

      apiVersion: autoscaling/v2beta2
      kind: HorizontalPodAutoscaler
      metadata:
        name: bert-tfserving-eci-hpa
        namespace: default
      spec:
        scaleTargetRef:
          apiVersion: apps/v1
          kind: Deployment
          name: bert-tfserving-202207181536-tensorflow-serving
        minReplicas: 1
        maxReplicas: 10
        metrics:
        - type: External
          external:
            metric:
              name: sls_ingress_qps
              selector:
                matchLabels:
                  sls.project: "k8s-log-{cluster id}"
                  sls.logstore: "nginx-ingress"
                  sls.ingress.route: "default-bert-tfserving-202207181536-tensorflow-serving-8501"
            target:
              type: AverageValue
              averageValue: 10
                                      

      關(guān)鍵參數(shù)說明如下:

      參數(shù)

      說明

      scaleTargetRef

      設(shè)置當(dāng)前HPA綁定的對象,本文配置為步驟a中,推理服務(wù)對應(yīng)的Deployment名稱。

      minReplicas

      最小副本數(shù)。

      maxReplicas

      最大副本數(shù)。

      sls.project

      集群的日志項(xiàng)目名稱,配置規(guī)則為k8s-log-{cluster id}

      sls.logstore

      日志庫的名稱,默認(rèn)值為nginx-ingress

      sls.ingress.route

      Ingress路由,配置規(guī)則為{namespace}-{service name}-{service port}

      metricname

      指標(biāo)名稱,本文配置為sls_ingress_qps

      targetaverageValue

      觸發(fā)彈性擴(kuò)容的QPS值。本文配置為10,表示當(dāng)QPS大于10時(shí),觸發(fā)彈性擴(kuò)容。

    4. 執(zhí)行以下命令,查看HPA狀態(tài)。

      kubectl get hpa

      預(yù)期輸出:

      NAME                     REFERENCE                                                   TARGETS      MINPODS   MAXPODS   REPLICAS   AGE
      bert-tfserving-eci-hpa   Deployment/bert-tfserving-202207181536-tensorflow-serving   0/10 (avg)   1         10        1          116s
  5. 配置公網(wǎng)Ingress。

    通過arena serve tensorflow命令部署的推理服務(wù)默認(rèn)提供的是ClusterIP,不能直接通過公網(wǎng)訪問。因此需要為推理服務(wù)創(chuàng)建一個(gè)公網(wǎng)Ingress,方便進(jìn)行訪問。

    1. 登錄容器服務(wù)管理控制臺,在左側(cè)導(dǎo)航欄選擇集群

    2. 集群列表頁面,單擊目標(biāo)集群名稱,然后在左側(cè)導(dǎo)航欄,選擇網(wǎng)絡(luò) > 路由

    3. 路由頁面上方,選擇推理服務(wù)所在的命名空間,然后單擊創(chuàng)建Ingress,配置如下參數(shù)。關(guān)于參數(shù)的更多信息,請參見創(chuàng)建Nginx Ingress

      • 名稱:本文配置為bert-tfserving

      • 規(guī)則

        • 域名:自定義域名,例如:test.example.com

        • 路徑映射

          • 路徑:不做配置,保留根路徑/

          • 匹配規(guī)則:默認(rèn)(ImplementationSpecific)。

          • 服務(wù)名稱:本文配置為步驟b中獲取的服務(wù)名稱bert-tfserving-202207181536-tensorflow-serving

          • 端口:本文配置為8501

    4. 路由頁面的規(guī)則列下,查看目標(biāo)Ingress的地址。

  6. 使用步驟5獲取的地址,對推理服務(wù)進(jìn)行壓測。當(dāng)QPS大于HPA中配置的averageValue時(shí),觸發(fā)擴(kuò)容,Pod數(shù)量不超過maxReplicas;當(dāng)QPS小于averageValue時(shí),觸發(fā)縮容。