云服务器内容精选

  • 准备工作 准备一套可以连接外部网络,装有Linux系统并安装18.09.7及以上版本docker的虚拟机或物理机用作镜像构建节点,以下称“构建节点”。 可以通过执行docker pull、apt-get update/upgrade和pip install命令判断是否可正常访问外部可用的开源软件仓库,若可以正常访问表示环境已连接外部网络。 上述的虚拟机或物理机需要为arm64架构。 建议构建节点安装的Linux系统版本为Ubuntu 18.04。 本指导使用/opt目录作为构建任务承载目录,请确保该目录下可用存储空间大于30GB。 Docker的安装可以参考官方文档:Install Docker Engine on Ubuntu。MiniConda与tflite安装包为第三方安装包,ModelArts不对其安全相关问题进行负责,如用户有安全方面的需求,可以对该安装包进行加固后发布成同样名称的文件上传到构建节点。
  • 上传镜像至SWR服务 登录 容器镜像服务 控制台,选择区域,要和ModelArts区域保持一致,否则无法选择到镜像。 单击右上角“创建组织”,输入组织名称完成组织创建。请自定义组织名称,本示例使用“deep-learning”,下面的命令中涉及到组织名称“deep-learning”也请替换为自定义的值。 单击右上角“登录指令”,获取登录访问指令,本文选择复制临时登录指令。 以root用户登录本地环境,输入复制的SWR临时登录指令。 上传镜像至容器 镜像服务 镜像仓库。 使用docker tag命令给上传镜像打标签。 #region和domain信息请替换为实际值,组织名称deep-learning也请替换为自定义的值。 sudo docker tag pytorch:2.1.0-cann7.0.0 swr.{region-id}.{domain}/deep-learning/pytorch:2.1.0-cann7.0.0 #此处以华为云cn-north-4为例 sudo docker tagpytorch:2.1.0-cann7.0.0 swr.cn-north-4.myhuaweicloud.com/deep-learning/pytorch:2.1.0-cann7.0.0 使用docker push命令上传镜像。 #region和domain信息请替换为实际值,组织名称deep-learning也请替换为自定义的值。 sudo docker push swr.{region-id}.{domain}/deep-learning/pytorch:2.1.0-cann7.0.0 #此处以华为云cn-north-4为例 sudo docker push swr.cn-north-4.myhuaweicloud.com/deep-learning/pytorch:2.1.0-cann7.0.0 完成镜像上传后,在容器镜像服务控制台的“我的镜像”页面可查看已上传的 自定义镜像 。 “swr.cn-north-4.myhuaweicloud.com/deep-learning/pytorch:2.1.0-cann7.0.0”即为此自定义镜像的“SWR_URL”。
  • Step1 创建OBS桶和文件夹 在OBS服务中创建桶和文件夹,用于存放样例数据集以及训练代码。如下示例中,请创建命名为“test-modelarts”的桶,并创建如表1所示的文件夹。 创建OBS桶和文件夹的操作指导请参见创建桶和新建文件夹。 请确保您使用的OBS与ModelArts在同一区域。 表1 OBS桶文件夹列表 文件夹名称 用途 obs://test-modelarts/ascend/demo-code/ 用于存储Ascend训练脚本文件。 obs://test-modelarts/ascend/demo-code/run_ascend/ 用于存储Ascend训练脚本的启动脚本。 obs://test-modelarts/ascend/log/ 用于存储训练日志文件。
  • 训练mindspore-verification.py文件 mindspore-verification.py文件内容如下: import os import numpy as np from mindspore import Tensor import mindspore.ops as ops import mindspore.context as context print('Ascend Envs') print('------') print('JOB_ID: ', os.environ['JOB_ID']) print('RANK_TABLE_FILE: ', os.environ['RANK_TABLE_FILE']) print('RANK_SIZE: ', os.environ['RANK_SIZE']) print('ASCEND_DEVICE_ID: ', os.environ['ASCEND_DEVICE_ID']) print('DEVICE_ID: ', os.environ['DEVICE_ID']) print('RANK_ID: ', os.environ['RANK_ID']) print('------') context.set_context(device_target="Ascend") x = Tensor(np.ones([1,3,3,4]).astype(np.float32)) y = Tensor(np.ones([1,3,3,4]).astype(np.float32)) print(ops.add(x, y))
  • 场景描述 目标:构建安装如下软件的容器镜像,并在ModelArts平台上使用Ascend规格资源运行训练作业。 ubuntu-18.04 cann-6.3.RC2 (商用版本) python-3.7.13 mindspore-2.1.1 本教程以cann-6.3.RC2.、mindspore-2.1.1为例介绍。 本示例仅用于示意Ascend容器镜像制作流程,且在匹配正确的Ascend驱动/固件版本的专属资源池上运行通过。
  • Step2 准备脚本文件并上传至OBS中 准备本案例所需训练脚本mindspore-verification.py文件和Ascend的启动脚本文件(共5个)。 训练脚本文件具体内容请参见训练mindspore-verification.py文件。 Ascend的启动脚本文件包括以下5个,具体脚本内容请参见Ascend的启动脚本文件。 run_ascend.py common.py rank_table.py manager.py fmk.py mindspore-verification.py和run_ascend.py脚本文件在创建训练作业时的“启动命令”参数中调用,具体请参见启动命令。 run_ascend.py脚本运行时会调用common.py、rank_table.py、manager.py、fmk.py脚本。 上传训练脚本mindspore-verification.py文件至OBS桶的“obs://test-modelarts/ascend/demo-code/”文件夹下。 上传Ascend的启动脚本文件(共5个)至OBS桶的“obs://test-modelarts/ascend/demo-code/run_ascend/”文件夹下。
  • Step5 在ModelArts上创建Notebook并调试 将上传到SWR上的镜像注册到ModelArts的镜像管理中。 登录ModelArts管理控制台,在左侧导航栏中选择“镜像管理 ”,单击“注册镜像”,根据界面提示注册镜像。注册后的镜像可以用于创建Notebook。 在Notebook中使用自定义镜像创建Notebook并调试,调试成功后,保存镜像。 在Notebook中使用自定义镜像创建Notebook操作请参见基于自定义镜像创建Notebook实例。 保存Notebook镜像操作请参见保存Notebook镜像环境。 已有的镜像调试成功后,再使用ModelArts训练模块训练作业。
  • Step1 创建OBS桶和文件夹 在OBS服务中创建桶和文件夹,用于存放样例数据集以及训练代码。需要创建的文件夹列表如表1所示,示例中的桶名称“test-modelarts”和文件夹名称均为举例,请替换为用户自定义的名称。 创建OBS桶和文件夹的操作指导请参见创建桶和新建文件夹。 请确保您使用的OBS与ModelArts在同一区域。 表1 OBS桶文件夹列表 文件夹名称 用途 “obs://test-modelarts/pytorch/demo-code/” 用于存储训练脚本文件。 “obs://test-modelarts/pytorch/log/” 用于存储训练日志文件。
  • Step5 上传镜像至SWR服务 登录容器镜像服务控制台,选择区域,要和ModelArts区域保持一致,否则无法选择到镜像。 单击右上角“创建组织”,输入组织名称完成组织创建。请自定义组织名称,本示例使用“deep-learning”,下面的命令中涉及到组织名称“deep-learning”也请替换为自定义的值。 单击右上角“登录指令”,获取登录访问指令,本文选择复制临时登录指令。 以root用户登录本地环境,输入复制的SWR临时登录指令。 上传镜像至容器镜像服务镜像仓库。 使用docker tag命令给上传镜像打标签。 #region和domain信息请替换为实际值,组织名称deep-learning也请替换为自定义的值。 sudo docker tag pytorch:1.8.1-cuda11.1 swr.{region-id}.{domain}/deep-learning/pytorch:1.8.1-cuda11.1 #此处以华为云cn-north-4为例 sudo docker tag pytorch:1.8.1-cuda11.1 swr.cn-north-4.myhuaweicloud.com/deep-learning/pytorch:1.8.1-cuda11.1 使用docker push命令上传镜像。 #region和domain信息请替换为实际值,组织名称deep-learning也请替换为自定义的值。 sudo docker push swr.{region-id}.{domain}/deep-learning/pytorch:1.8.1-cuda11.1 #此处以华为云cn-north-4为例 sudo docker push swr.cn-north-4.myhuaweicloud.com/deep-learning/pytorch:1.8.1-cuda11.1 完成镜像上传后,在容器镜像服务控制台的“我的镜像”页面可查看已上传的自定义镜像。 “swr.cn-north-4.myhuaweicloud.com/deep-learning/pytorch:1.8.1-cuda11.1”即为此自定义镜像的“SWR_URL”。
  • Step2 准备训练脚本并上传至OBS 准备本案例所需的训练脚本“pytorch-verification.py”文件,并上传至OBS桶的“obs://test-modelarts/pytorch/demo-code/”文件夹下。 “pytorch-verification.py”文件内容如下: import torch import torch.nn as nn x = torch.randn(5, 3) print(x) available_dev = torch.device("cuda") if torch.cuda.is_available() else torch.device("cpu") y = torch.randn(5, 3).to(available_dev) print(y)
  • 训练框架的自定义镜像约束 推荐自定义镜像使用ubuntu-18.04的操作系统,避免出现版本不兼容的问题。 自定义镜像的大小推荐15GB以内,最大不要超过资源池的容器引擎空间大小的一半。镜像过大会直接影响训练作业的启动时间。 ModelArts公共资源池的容器引擎空间为50G,专属资源池的容器引擎空间的默认为50G,支持在创建专属资源池时自定义容器引擎空间。 自定义镜像的默认用户必须为“uid”为“1000”的用户。 自定义镜像中不能安装GPU或Ascend驱动程序。当用户选择GPU资源运行训练作业时,ModelArts后台自动将GPU驱动程序放置在训练环境中的 /usr/local/nvidia目录;当用户选择Ascend资源运行训练作业时,ModelArts后台自动将Ascend驱动程序放置在/usr/local/Ascend/driver目录。 X86 CPU架构和ARM CPU架构的自定义镜像分别只能运行于对应CPU架构的规格中。 执行如下命令,查看自定义镜像的CPU架构。 docker inspect {自定义镜像地址} | grep Architecture ARM CPU架构的自定义镜像,上述命令回显如下。 "Architecture": "arm64" 规格中带有ARM字样的显示,为ARM CPU架构。 规格中未带有ARM字样的显示,为X86 CPU架构。 ModelArts后台暂不支持下载开源安装包,建议用户在自定义镜像中安装训练所需的依赖包。 自定义镜像需上传至容器镜像服务(SWR)才能在ModelArts上用于训练。
  • 制作流程 图1 训练作业的自定义镜像制作流程 场景一:预置镜像满足ModelArts训练平台约束,但不满足代码依赖的要求,需要额外安装软件包。 具体案例参考使用预置镜像制作自定义镜像用于训练模型。 场景二:已有本地镜像满足代码依赖的要求,但是不满足ModelArts训练平台约束,需要适配。 具体案例参考已有镜像迁移至ModelArts用于训练模型。 场景三: 当前无可使用的镜像,需要从0制作镜像(既需要安装代码依赖,又需要制作出的镜像满足MAModelArts平台约束)。具体案例参考: 从0制作自定义镜像用于创建训练作业(PyTorch+CPU/GPU) 从0制作自定义镜像用于创建训练作业(MPI+CPU/GPU) 从0制作自定义镜像用于创建训练作业(Tensorflow+GPU) 从0制作自定义镜像用于创建训练作业(MindSpore+Ascend)