详情页标题前

阿里云容器服务ACK搭建TensorFlow应用-云淘科技

详情页1

本文介绍如何使用阿里云容器服务Serverless版和弹性容器实例(ECI),快速完成基于GPU的TensorFlow训练任务

背景信息

人工智能与机器学习已经被广泛应用到各个领域,近些年来各种各样的训练模型被提出,更多的训练任务运行到云上。然而上云之后,想要轻松、持久地运行训练任务,仍有一些痛点,例如:

  • 环境搭建麻烦:您需要购买GPU实例并安装GPU驱动,即使您已经把训练任务容器化,还需要安装GPU runtime hook 。

  • 使用缺乏弹性:运行完任务后,为了节约成本,您可能需要释放闲置资源,但在下次启动任务时您需要重新创建实例并配置环境;或者在计算节点资源不够的情况下,扩容需要您再次创建实例并配置环境。

针对上述痛点,推荐您使用ACK Serverless+ECI的方案来运行训练任务,可以帮助您轻松地创建和启动训练任务。该方案还具备以下优势:

  • 按需付费,免运维。

  • 一次配置,无限次复用。

  • 镜像缓存功能加速Pod创建,训练任务启动快速。

  • 数据与训练模型解耦,数据可以持久化存储。

准备工作

  1. 准备好训练模型的容器镜像和训练数据。

    本文以Github的一个TensorFlow训练任务为例,相关示例镜像(eci/tensorflow)您可以从阿里云容器镜像仓库中获取。更多信息,请参见TensorFlow训练任务。

  2. 创建ACK Serverless集群

    在容器服务管理控制台上创建ACK Serverless集群。更多信息,请参见创建ACK Serverless集群。

    说明

    如果您需要从公网拉取镜像,或者训练任务需要访问公网,请配置NAT网关。

    您可以通过kubectl管理和访问ACK Serverless集群,相关操作如下:

    • 如果您需要从本地算机管理集群,请安装并配置kubectl客户端。具体操作,请参见通过kubectl连接Kubernetes集群。

    • 您也可以在CloudShell上通过kubect管理集群。具体操作,请参见在CloudShell上通过kubectl管理Kubernetes集群。

  3. 创建NAS文件系统,并添加挂载点。

    在NAS文件系统控制台上创建文件系统,并添加挂载点。更多信息,请参见管理文件系统和管理挂载点。

    说明

    NAS文件系统需和ACK Serverless集群处于同一VPC。

创建镜像缓存

镜像缓存功能已经集成到Kubernetes CRD中,可以加速镜像的拉取。更多信息,请参见使用镜像缓存CRD加速创建Pod。

操作如下:

  1. 准备YAML文件。

    示例imagecache.yaml的内容如下:

    apiVersion: eci.alibabacloud.com/v1
    kind: ImageCache
    metadata:
      name: tensorflow
    spec:
      images:
      - registry-vpc.cn-beijing.aliyuncs.com/eci/tensorflow:1.0 # 训练任务的镜像,建议您上传到阿里云容器镜像仓库中。此处使用VPC私网地址,请确保对应VPC为集群所属的VPC。
  2. 创建镜像缓存。

    kubectl create -f imagecache.yaml

    创建镜像缓存时需要拉取镜像,受镜像大小影响,需要一定的时间。您可以通过以下命令查询镜像缓存的创建进度。

    Kubectl get imagecache tensorflow

    返回如下结果时,表示镜像缓存已经创建成功。

    NAME         AGE   CACHEID                    PHASE   PROGRESS
    tensorflow   11m   imc-2ze1xczztv7tgesg****   Ready   100%

创建训练任务

您可以使用镜像缓存来创建训练任务。

  1. 准备YAML文件。

    示例gpu_pod.yaml的内容如下:

    apiVersion: v1
    kind: Pod
    metadata:
      name: tensorflow
      annotations:
        k8s.aliyun.com/eci-use-specs: "ecs.gn6i-c4g1.xlarge"  # 指定GPU规格创建ECI实例
        k8s.aliyun.com/eci-image-cache: "true"             # 开启镜像缓存自动匹配
    spec:
      containers:
      - name: tensorflow
        image: registry-vpc.cn-beijing.aliyuncs.com/eci/tensorflow:1.0 # 训练任务的镜像
        command:
          - "sh"
          - "-c"
          - "python models/tutorials/image/imagenet/classify_image.py" # 触发训练任务的脚本
        resources:
          limits:
            nvidia.com/gpu: "1"   # 容器所需的GPU个数
        volumeMounts:
        - name: nfs-pv
          mountPath: /tmp/imagenet
      volumes:   
      - name: nfs-pv   #训练结果持久化,保存到NAS
        flexVolume:
            driver:  alicloud/nas
            fsType: nfs
            options:
              server: 16cde4****-ijv**.cn-beijing.nas.aliyuncs.com     #NAS文件系统挂载点
              path: /         #挂载目录
      restartPolicy: OnFailure
  2. 执行命令创建Pod。

    kubectl create -f gpu_pod.yaml
  3. 查看执行情况。

    您可以根据需要查看事件或日志。

    • 查看事件

      kubectl describe pod tensorflow
    • 查看日志

      kubectl logs tensorflow

查看结果

您可以在控制台上查看训练任务的运行结果。

  • 在NAS文件系统控制台,您可以看到训练完成的数据已占用存储容量。阿里云容器服务ACK搭建TensorFlow应用-云淘科技

    说明

    训练结果存储在配置的NAS文件系统中,挂载NAS后,您可以在对应的路径下获取结果数据。

  • 在弹性容器实例控制台,您可以看到运行成功的ECI实例。阿里云容器服务ACK搭建TensorFlow应用-云淘科技

    说明

    运行成功表示实例中的容器已经运行终止,此时系统会回收底层计算资源,不再对Pod进行计费。

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/157200.html

(0)
上一篇 2023年12月10日 上午12:51
下一篇 2023年12月10日 上午12:52
详情页2

相关推荐

  • 机器学习PAI报错是TensorFlow 有什么办法能enable呀?-云小二-阿里云

    机器学习PAI报错是TensorFlow job failed immediately after re-launching, since failover is disabled by configuration,有什么办法能enable呀? 以下为热心网友提供的参考意见 -DautoEnablePsTaskFailover=true -DuseSpars…

    阿里云 2023年12月24日
  • 阿里云日志服务SLS数据加工-云淘科技

    本文介绍日志服务数据加工的使用限制。 任务配置 限制项 说明 任务数 1个Project中最多可创建100个数据加工任务。重要 数据加工任务处于停止或者运行完成状态时,依然会占用配额,建议及时清理停止或者运行完成状态、并且确认不再使用的数据加工任务,减少配额占用。更多信息,请参见管理数据加工任务。 如您有更大的使用需求,请提工单申请。 源数据Logstore…

    阿里云日志服务SLS 2023年12月10日
  • 阿里云日志服务SLS使用Java SDK管理日志库Logstore-云淘科技

    日志库(Logstore)是日志服务中数据的采集、存储和查询单元。每个Logstore隶属于一个Project,每个Project中可创建多个Logstore。本文通过代码示例介绍如何创建、修改、查询、删除Logstore等。 前提条件 已创建RAM用户并完成授权。具体操作,请参见创建RAM用户并完成授权。 已配置环境变量ALIBABA_CLOUD_ACCE…

    阿里云日志服务SLS 2023年12月10日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云容器服务ACK使用Kubernetes API-云淘科技

    本文将基于cURL命令简单演示如何以REST的方式使用Kubernetes API,方便您使用开发语言原生的HTTPS方式操作Kubernetes集群。演示包括创建和删除Pod,创建和修改Deployment。 获取集群访问凭证KubeConfig 登录容器服务管理控制台。 单击前往RAM进行授权进入云资源访问授权页面,然后单击同意授权。 完成以上授权后,刷…

    阿里云容器服务 2023年12月10日
  • 阿里云容器服务ACKAPI概览-云淘科技

    本产品(分布式云容器平台/2022-01-01)的OpenAPI采用RPC签名风格,签名细节参见签名机制说明。我们已经为开发者封装了常见编程语言的SDK,开发者可通过下载SDK直接调用本产品OpenAPI而无需关心技术细节。如果现有SDK不能满足使用需求,可通过签名机制进行自签名对接。由于自签名细节非常复杂,需花费 5个工作日左右。因此建议加入我们的服务钉钉…

    阿里云容器服务 2023年12月10日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。