文档首页 > > 最佳实践> 自定义镜像>

使用自定义镜像创建训练作业(GPU)

使用自定义镜像创建训练作业(GPU)

分享
更新时间:2021/07/19 GMT+08:00

本章节提供了在ModelArts平台使用自定义镜像创建训练作业的样例,帮助您快速熟悉平台的使用方法。

使用自定义镜像创建训练作业时,需要您熟悉该软件的使用,并具备一定的开发经验。详细步骤如下所示:

  1. 准备工作
  2. 制作自定义镜像
  3. 上传镜像至SWR服务
  4. 创建训练作业

准备工作

  • 已注册华为云帐号,且在使用ModelArts前检查帐号状态,帐号不能处于欠费或冻结状态。
  • 当前帐号已完成访问授权的配置。如未完成,请参考使用委托授权针对之前使用访问密钥授权的用户,建议清空授权,然后使用委托进行授权。
  • 已在OBS服务中创建桶和文件夹,用于存放样例数据集以及训练代码。如下示例中,请创建命名为“test-modelarts”的桶,并创建如表1所示的文件夹。

    创建OBS桶和文件夹的操作指导请参见创建桶新建文件夹。请确保您使用的OBS与ModelArts在同一区域。

    表1 文件夹列表

    文件夹名称

    用途

    “obs://test-modelarts/deep-learning/mnist/”

    用于存储训练脚本。

    “obs://test-modelarts/deep-learning/mnist/dataset-mnist”

    用于存储数据集。

    “obs://test-modelarts/deep-learning/mnist/output”

    用于存储训练输出文件。

    “obs://test-modelarts/deep-learning/mnist/log”

    用于存储日志文件。

  • 本示例使用MNIST数据集,请上传至对应文件夹下。
  • 训练代码请参考Github仓库中的“mnist_softmax.py”文件,请上传至对应文件夹下。

制作自定义镜像

本示例使用Dockerfile文件定制自定义镜像。

以linux x86_x64架构的主机为例,您可以购买相同规格的ECS或者应用本地已有的主机进行自定义镜像的制作。

  1. 安装Docker,可参考Docker官方文档

    以linux x86_64架构的操作系统为例,获取Docker安装包。您可以使用以下指令安装Docker:

    curl -fsSL get.docker.com -o get-docker.sh
    sh get-docker.sh

    如果docker images命令可以执行成功,表示Docker已安装,该步骤可跳过。

  2. 获取自定义镜像的基础镜像。

    为了方便用户实现代码下载、训练日志输出、上传日志文件至OBS等功能,ModelArts提供基础镜像包用于自定义镜像的制作。基础镜像列表参见基础镜像包。本示例获取以下基础镜像:

    docker pull swr.cn-north-4.myhuaweicloud.com/modelarts-job-dev-image/custom-base-cuda10.0-cp36-ubuntu18.04-x86:1.1

    另外,您还可以使用docker images命令可查看本地的镜像列表。

  3. 编写构建Tensorflow 1.13.2自定义镜像的Dockerfile文件。

    文件命名为“tf-1.13.2.dockerfile”。执行vi tf-1.13.2.dockerfile命令,进入文件中。

    Dockerfile文件编写的更多指导内容参见官方指导说明
    FROM swr.cn-north-4.myhuaweicloud.com/modelarts-job-dev-image/custom-base-cuda10.0-cp36-ubuntu18.04-x86:1.1
    # 配置华为云的源,安装tensorflow
    RUN cp -a /etc/apt/sources.list /etc/apt/sources.list.bak && \
    sed -i "s@http://.*archive.ubuntu.com@http://repo.myhuaweicloud.com@g"  /etc/apt/sources.list && \
    sed -i "s@http://.*security.ubuntu.com@http://repo.myhuaweicloud.com@g"  /etc/apt/sources.list && \
    pip install  --trusted-host https://repo.huaweicloud.com -i https://repo.huaweicloud.com/repository/pypi/simple  tensorflow==1.13.2
    # 配置环境变量
    ENV PATH=/root/miniconda3/bin/:$PATH
  4. 按Esc键退出编辑模式,执行:wq保存并退出tf-1.13.2.dockerfile文件。
  5. “tf-1.13.2.dockerfile”文件所在的目录执行以下命令构建自定义镜像“tf-1.13.2:latest”
    1
    docker build -f tf-1.13.2.dockerfile . -t tf-1.13.2:latest 
    
    图1 构建自定义镜像

上传镜像至SWR服务

  1. 登录容器镜像服务控制台,选择区域为“华北-北京四”
    图2 容器镜像服务控制台
  2. 单击右上角“创建组织”,输入组织名称完成组织创建。您可以自定义组织名称,本示例使用“deep-learning”
    图3 创建组织
  3. 单击右上角“登录指令”,获取登录访问指令。
    图4 登录指令
  4. 以root用户登录本地环境,输入登录访问指令。
  5. 上传镜像至容器镜像服务镜像仓库。
    1. 使用docker tag命令给上传镜像打标签。
      sudo docker tag tf-1.13.2:latest swr.cn-north-4.myhuaweicloud.com/deep-learning/tf-1.13.2:latest
    2. 使用docker push命令上传镜像。
      sudo docker push swr.cn-north-4.myhuaweicloud.com/deep-learning/tf-1.13.2:latest
      图5 上传镜像
  6. 完成镜像上传后,在“容器镜像服务控制台>我的镜像”页面可查看已上传的自定义镜像。
    图6 已上传的自定义镜像

    “swr.cn-north-4.myhuaweicloud.com/deep-learning/tf-1.13.2:latest”即为此自定义镜像的“SWR_URL”

创建训练作业

  1. 登录ModelArts管理控制台,在左侧导航栏中选择“训练管理 > 训练作业”,默认进入“训练作业”列表。
  2. “创建训练作业”页面,参考填写相关信息,然后单击“下一步”
    图7 名称与描述
    图8 作业参数配置
    • 镜像地址:“swr.cn-north-4.myhuaweicloud.com/deep-learning/tf-1.13.2:latest”
    • 代码目录:“obs://test-modelarts/deep-learning/mnist/”
    • 运行命令:“bash /home/work/run_train.sh python /home/work/user-job-dir/mnist/mnist_softmax.py --data_url /home/work/user-job-dir/mnist/dataset-mnist”
    图9 设置资源
  3. “规格确认”页面,确认训练作业的参数信息,确认无误后单击“提交”
  4. 训练作业创建完成后,后台完成代码目录下载、自定义镜像审核以及自定义镜像的训练作业。训练作业一般需要运行一段时间,根据您选择的数据量和资源不同,训练时间将耗时几分钟到几十分钟不等。程序执行成功后,日志信息如下所示。
    图10 运行日志信息
分享:

    相关文档

    相关产品