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

使用ECI運行TensorFlow任務

您可以將AI訓練任務所需的軟件環境容器化,然后在ECI上執行訓練任務,在解決環境搭建復雜問題的同時,可以只為運行時間付費,從而降低成本,提升效率。本文以一個Github上基于GPU的TensorFlow訓練任務為例,介紹如何基于ACK Serverless集群,使用ECI來運行訓練任務。

背景信息

近些年來,人工智能與機器學習已經被廣泛應用到各個領域,各種各樣的訓練模型被提出,更多的訓練任務運行到云上。然而上云之后,想要輕松、持久地運行訓練任務,仍有一些痛點,例如:

  • 環境搭建麻煩:需要購買GPU實例并安裝GPU驅動,即使已經把訓練任務容器化,仍需要安裝GPU Runtime Hook 。

  • 使用缺乏彈性:運行完任務后,為了節約成本一般需要釋放資源,但在下次啟動任務時需要重新創建實例并配置環境;或者在計算節點資源不足的情況下,需要手動擴容并重新創建實例并配置環境。

針對上述痛點,推薦您使用ACK Serverless集群+ECI的方案來運行訓練任務。該方案具備以下優勢:

  • 按需付費,免運維。

  • 一次配置,無限次復用。

  • 鏡像緩存功能加速實例創建,訓練任務啟動快速。

  • 數據與訓練模型解耦,數據可以持久化存儲。

準備工作

  1. 準備訓練數據和容器鏡像。

    • 訓練數據:本文以Github的一個TensorFlow訓練任務為例。更多信息,請參見TensorFlow訓練任務

    • 容器鏡像:ECI已準備好適用的示例鏡像,示例鏡像已上傳到阿里云容器鏡像倉庫ACR中,您可以直接使用或進行二次開發。

      • 鏡像私網地址:registry-vpc.cn-hangzhou.aliyuncs.com/eci_open/tensorflow:1.0

      • 鏡像公網地址:registry.cn-hangzhou.aliyuncs.com/eci_open/tensorflow:1.0

  2. 創建ACK Serverless集群

    容器服務管理控制臺上創建ACK Serverless集群。具體操作,請參見創建ACK Serverless集群

    重要

    如果您需要通過公網拉取鏡像,或者訓練任務需要訪問公網,請配置公網NAT網關。

    您可以通過kubectl管理和訪問ACK Serverless集群,相關操作如下:

  3. 創建NAS文件系統,并添加掛載點。

    NAS文件系統控制臺上創建文件系統,并添加掛載點。NAS文件系統需和ACK Serverless集群處于同一VPC。具體操作,請參見管理文件系統管理掛載點

操作步驟

創建鏡像緩存

鏡像緩存功能已經通過Kubernetes CRD的方式集成到ACK Serverless集群中,可以用于加速鏡像拉取。

  1. 創建鏡像緩存的YAML文件。

    示例imagecache.yaml的內容如下:

    說明

    如果您的集群屬于華東1(杭州)地域,建議通過鏡像私網地址拉取鏡像,如果您的集群屬于其他地域,可參考示例通過鏡像公網地址拉取鏡像,

    apiVersion: eci.alibabacloud.com/v1
    kind: ImageCache
    metadata:
      name: tensorflow
    spec:
      images:
      - registry.cn-hangzhou.aliyuncs.com/eci_open/tensorflow:1.0
  2. 創建鏡像緩存。

    kubectl create -f imagecache.yaml

    創建鏡像緩存時需要拉取鏡像,受鏡像大小和網絡的影響,需要一定的時間。您可以通過以下命令查詢鏡像緩存的創建進度。

    kubectl get imagecache tensorflow

    返回類似如下結果時,表示鏡像緩存已經創建成功。

    ECI-tensor.png

創建訓練任務

  1. 創建NAS文件系統對應的PV和PVC。

    1. 準備YAML文件。

      示例nas.yaml的內容如下:

      apiVersion: v1
      kind: PersistentVolume
      metadata:
        name: pv-nas
        labels:
          alicloud-pvname: pv-nas
      spec:
        capacity:
          storage: 100Gi
        accessModes:
          - ReadWriteMany
        csi:
          driver: nasplugin.csi.alibabacloud.com
          volumeHandle: pv-nas
          volumeAttributes:
            server: 15e1d4****-gt***.cn-beijing.nas.aliyuncs.com    # NAS文件系統掛載點
            path: /
        mountOptions:
          - nolock,tcp,noresvport
          - vers=3
      ---
      kind: PersistentVolumeClaim
      apiVersion: v1
      metadata:
        name: pvc-nas
      spec:
        accessModes:
          - ReadWriteMany
        resources:
          requests:
            storage: 100Gi
        selector:
          matchLabels:
            alicloud-pvname: pv-nas
    2. 創建PV和PVC。

      kubectl create -f nas.yaml
  2. 創建ECI Pod來運行訓練任務。

    1. 準備YAML文件。

      示例tensorflow.yaml的內容如下:

      apiVersion: v1
      kind: Pod
      metadata:
        name: tensorflow
        labels:
          app: tensorflow
          alibabacloud.com/eci: "true"
        annotations:
          k8s.aliyun.com/eci-use-specs: "ecs.gn6i-c4g1.xlarge"   # 指定GPU規格
          k8s.aliyun.com/eci-auto-imc: "true"                    # 開啟自動匹配鏡像緩存
      spec:
        restartPolicy: OnFailure
        containers:
          - name: tensorflow
            image: registry.cn-hangzhou.aliyuncs.com/eci_open/tensorflow:1.0  # 使用鏡像緩存對應的鏡像地址
            command:
              - python
            args:
              - /home/classify_image/classify_image.py      # 容器啟動后執行訓練腳本
            resources:
              limits:
                nvidia.com/gpu: "1"   # 容器所需的GPU個數
            volumeMounts:             # 掛載NAS,將訓練結果持久化存儲
              - name: pvc-nas
                mountPath: /tmp/classify_image_model
        volumes:
          - name: pvc-nas
            persistentVolumeClaim:
              claimName: pvc-nas
    2. 創建Pod。

      kubectl create -f tensorflow.yaml
  3. 查看訓練任務的執行情況。

    kubectl get pod

    當Pod狀態為Completed時,表示訓練任務已經執行完成。

    ECI-tensor1.png

    說明

    您也可以通過kubectl describe pod <pod name>查看Pod詳情,或者通過kubectl logs <pod name>命令查看日志。

查看結果

您可以在控制臺上查看訓練任務的運行結果。

  • NAS文件系統控制臺,您可以看到訓練結果已經存儲到NAS中(訓練完成的結果數據已占用存儲容量)。重新掛載NAS后,您可以在對應的路徑下查看結果數據。

    ECI-tensor2.png

  • 彈性容器實例控制臺,您可以看到Pod對應的ECI實例。

    運行成功表示實例中的容器已經運行終止,此時系統會回收底層計算資源,不再對Pod進行計費。

    ECI-tensor3.png

相關文檔

本實踐教程使用了鏡像緩存功能來加速鏡像拉取,并且使用了NAS文件系統作為持久化存儲。如果想要了解更多相關信息,請參見: