云服务器内容精选

  • 创建专属资源池 ModelArts提供独享的计算资源,可用于Notebook、训练作业、部署模型。专属资源池不与其他用户共享,更加高效。在使用专属资源池之前,您需要先创建一个专属资源池,操作指导请参考创建Standard专属资源池。 配置“网络”时需要选择已打通VPC的网络。如果需要新建网络和打通VPC可以参考配置Standard专属资源池可访问公网。 “规格类型”和“节点数量”根据训练计划使用的资源选择。
  • 在E CS 服务器挂载SFS Turbo存储 在ECS服务器挂载SFS Turbo存储后,支持将训练所需的数据通过ECS上传至SFS Turbo。 检查云服务环境。 ECS服务器和SFS的共享硬盘在相同的VPC或者对应VPC能够互联。 ECS服务器基础镜像用的是Ubuntu 18.04。 ECS服务器和SFS Turbo在同一子网中。 在ECS服务器中设置华为云镜像源。 sudo sed -i "s@http://.*archive.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list sudo sed -i "s@http://.*security.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list 安装NFS客户端,挂载对应盘。 sudo apt-get update sudo apt-get install nfs-common 获取SFS Turbo的挂载命令。 进入弹性文件服务SFS管理控制台。 选择“SFS Turbo”进入文件系统列表,单击文件系统名称,进入详情页面。 在“基本信息”页签获取并记录“Linux挂载命令”。 在ECS服务器中挂载NFS存储。 确认对应目录存在后,输入对应指令,命令如下。 mkdir -p /mnt/sfs_turbo mount -t nfs -o vers=3,nolock 192.168.0.169:/ /mnt/sfs_turbo
  • 在ECS中设置ModelArts用户可读权限 在ModelArts训练平台使用自定义镜像时,默认用户为ma-user、默认用户组为ma-group。如果在训练时调用ECS中的文件,需要修改文件权限改为ma-user可读,否则会出现Permission denied错误。 在Terminal中执行以下命令,在ECS中提前创建好ma-user和ma-group。 default_user=$(getent passwd 1000 | awk -F ':' '{print $1}') || echo "uid: 1000 does not exist" && \ default_group=$(getent group 100 | awk -F ':' '{print $1}') || echo "gid: 100 does not exist" && \ if [ ! -z ${default_group} ] && [ ${default_group} != "ma-group" ]; then \ groupdel -f ${default_group}; \ groupadd -g 100 ma-group; \ fi && \ if [ -z ${default_group} ]; then \ groupadd -g 100 ma-group; \ fi && \ if [ ! -z ${default_user} ] && [ ${default_user} != "ma-user" ]; then \ userdel -r ${default_user}; \ useradd -d /home/ma-user -m -u 1000 -g 100 -s /bin/bash ma-user; \ chmod -R 750 /home/ma-user; \ fi && \ if [ -z ${default_user} ]; then \ useradd -d /home/ma-user -m -u 1000 -g 100 -s /bin/bash ma-user; \ chmod -R 750 /home/ma-user; \ fi && \ # set bash as default rm /bin/sh && ln -s /bin/bash /bin/sh 执行以下命令,查看创建的用户信息。 id ma-user 如果出现以下信息则表示创建成功。 uid=1000(ma-user) gid=100(ma-group) groups=100(ma-group)
  • 购买服务资源 表1 购买服务资源 服务 使用说明 参考文档 弹性文件服务SFS 弹性文件服务默认为按需计费,即按购买的存储容量和时长收费。您也可以购买包年包月套餐,提前规划资源的使用额度和时长。在欠费时,您需要及时(15天之内)续费以避免您的文件系统资源被清空。 购买的SFS可以用于存储数据和代码。 如何购买弹性文件服务? 容器镜像服务 SWR 容器 镜像服务 分为企业版和共享版。共享版计费项包括存储空间和流量费用,目前均免费提供给您。企业版支持按需计费模式。 购买的SWR可以用于上传自定义镜像。 上传镜像 对象存储服务 OBS 对象存储服务提供按需计费和包年包月两种计费模式,用户可以根据实际需求购买OBS服务。 OBS服务支持以下两种存储方式,单机单卡场景使用文件系统,多机多卡场景使用普通OBS桶。 创建普通OBS桶 创建并行文件系统 虚拟私有云VPC 虚拟私有云可以为您构建隔离的、用户自主配置和管理的虚拟网络环境。 通过打通专属资源池的VPC,可以方便用户跨VPC使用资源,提升资源利用率。 创建虚拟私有云和子网 弹性 云服务器ECS 如果您需要在服务器上部署相关业务,较之物理服务器,弹性云服务器的创建成本较低,并且可以在几分钟之内快速获得基于云服务平台的弹性云服务器设施,并且这些基础设施是弹性的,可以根据需求伸缩。 购买的ECS服务可以用于挂载SFS Turbo存储。 说明: 购买时需注意,ECS需要和SFS买到同一个VPC才能挂载SFS存储。 自定义购买ECS 数据加密 服务DEW 在使用Notebook进行代码调试时,如果要开启“SSH远程开发”功能,需要选择密钥对,便于用户登录弹性云服务器时使用密钥对方式进行身份认证,提升通信安全。密钥对可免费创建。 如何创建密钥对?
  • (可选)工作空间配置 ModelArts支持设置子账号的细粒度权限、不同工作空间之间资源隔离。ModelArts工作空间帮您实现项目资源隔离、多项目分开结算等功能。 如果您开通了企业项目管理服务的权限,可以在创建工作空间的时候绑定企业项目ID,并在企业项目下添加用户组,为不同的用户组设置细粒度权限供组里的用户使用。 如果您未开通企业项目管理服务的权限,也可以在ModelArts创建自己独立的工作空间,但是无法使用跟企业项目相关的功能。 工作空间为白名单功能,使用该功能需要提工单申请开通。
  • 在ModelArts Standard上运行GPU训练作业的场景介绍 不同AI模型训练所需要的数据量和算力不同,在训练时选择合适的存储及训练方案可提升模型训练效率与资源性价比。ModelArts Standard支持单机单卡、单机多卡和多机多卡的训练场景,满足不同AI模型训练的要求。 ModelArts Standard提供了公共资源池和专属资源池,专属资源池不与其他用户共享资源,更加高效。针对企业多用户场景,推荐使用专属资源池开展AI模型训练。 本文提供了端到端案例指导,帮助您快速了解如何在ModelArts Standard上选择合适的训练方案并进行模型训练。 针对不同的数据量和算法情况,推荐以下训练方案: 单机单卡:小数据量(1G训练数据)、低算力场景(1卡Vnt1),存储方案推荐使用“OBS的并行文件系统(存放数据和代码)”。 单机多卡:中等数据量(50G左右训练数据)、中等算力场景(8卡Vnt1),存储方案推荐使用“SFS(存放数据和代码)”。 多机多卡:大数据量(1T训练数据)、高算力场景(4台8卡Vnt1),存储方案推荐使用“SFS(存放数据)+普通OBS桶(存放代码)”,采用分布式训练。 当使用SFS+OBS的存储方案可以实现存储加速,该方案的端到端实践案例请参见面向AI场景使用OBS+SFS Turbo的存储加速实践。 表1 不同场景所需服务及购买推荐 场景 OBS SFS SWR DEW ModelArts VPC ECS EVS 单机单卡 按需购买(并行文件系统) × 免费 免费 包月购买 免费 × 按需购买 单机多卡 × 包月购买 (HPC型500G) 免费 免费 包月购买 免费 包月购买 (Ubuntu 18.04,建议不小于2U8G,本地存储空间100G,带EIP全动态BGP,按流量10M带宽) × 多机多卡 按需购买 (普通OBS桶) 包月购买 (HPC型500G) 免费 免费 包月购买 免费 包月购买 (Ubuntu 18.04,建议不小于2U8G,本地存储空间100G,带EIP全动态BGP,按流量10M带宽) × 表2 开源数据集训练效率参考 算法及数据 资源规格 Epoch数 预计运行时长(hh:mm:ss) 算法:PyTorch官方针对ImageNet的样例 数据:ImageNet分类数据子集 1机1卡Vnt1 10 0:05:03 算法:YOLOX 数据:COCO2017 1机1卡Vnt1 10 03:33:13 1机8卡Vnt1 10 01:11:48 4机8卡Vnt1 10 0:36:17 算法:Swin-Transformer 数据:ImageNet21K 1机1卡Vnt1 10 197:25:03 1机8卡Vnt1 10 26:10:25 4机8卡Vnt1 10 07:08:44 表3 训练各步骤性能参考 步骤 说明 预计时长 镜像下载 首次下载镜像的时间(25G)。 8分钟 资源调度 点创建训练作业开始到变成运行中的时间(资源充足、镜像已缓存)。 20秒 训练列表页打开 已有50条训练作业,单击训练模块后的时间。 6秒 日志加载 作业运行中,已经输出1兆的日志文本,单击训练详情页面需要多久加载出日志。 2.5秒 训练详情页 作业运行中,没有用户日志情况下,在ModelArts控制台主页面单击训练详情页面后加载页面内容。 2.5秒 JupyterLab页面 进入JupyterLab页面后加载页面内容。 0.5秒 Notebook列表页 已有50个Notebook实例,在ModelArts控制台主页面单击开发环境后的时间。 4.5秒 镜像下载时间受节点规格、节点硬盘类型(高IO/普通IO)、是否SSD等因素影响,以上数据仅供参考。 父主题: 基于ModelArts Standard运行GPU训练作业
  • 上传镜像 客户端上传镜像,是指在安装了容器引擎客户端的机器上使用docker命令将镜像上传到容器镜像服务的镜像仓库。 如果容器引擎客户端机器为云上的ECS或CCE节点,根据机器所在区域有两种网络链路可以选择: 如果机器与容器镜像仓库在同一区域,则上传镜像走内网链路。 如果机器与容器镜像仓库不在同一区域,则上传镜像走公网链路,机器需要绑定弹性公网IP。 使用客户端上传镜像,镜像的每个layer大小不能大于10G。 上传镜像的容器引擎客户端版本必须为1.11.2及以上。 连接容器镜像服务。 登录容器镜像服务控制台。 单击右上角“创建组织”,输入组织名称完成组织创建。请自定义组织名称,本示例使用“deep-learning”,下面的命令中涉及到组织名称“deep-learning”也请替换为自定义的值。 选择左侧导航栏的“总览”,单击页面右上角的“登录指令”,在弹出的页面中单击复制登录指令。 此处生成的登录指令有效期为24小时,如果需要长期有效的登录指令,请参见获取长期有效登录指令。获取了长期有效的登录指令后,在有效期内的临时登录指令仍然可以使用。 登录指令末尾的 域名 为镜像仓库地址,请记录该地址,后面会使用到。 在安装容器引擎的机器中执行上一步复制的登录指令。 登录成功会显示“Login Succeeded”。 在安装容器引擎的机器上执行如下命令,为镜像打标签。 docker tag [镜像名称1:版本名称1] [镜像仓库地址]/[组织名称]/[镜像名称2:版本名称2] [镜像名称1:版本名称1]:${image_name}:${image_version}请替换为您所要上传的实际镜像的名称和版本名称。 [镜像仓库地址]:可在SWR控制台上查询,即1.c中登录指令末尾的域名。 [组织名称]:/${organization_name}请替换为您创建的组织。 [镜像名称2:版本名称2]:${image_name}:${image_version}请替换为您期待的镜像名称和镜像版本。 示例: docker tag ${image_name}:${image_version} swr.cn-north-4.myhuaweicloud.com/${organization_name}/${image_name}:${image_version} 上传镜像至镜像仓库。 docker push [镜像仓库地址]/[组织名称]/[镜像名称2:版本名称2] 示例: docker push swr.cn-north-4.myhuaweicloud.com/${organization_name}/${image_name}:${image_version} 上传镜像完成后,返回容器镜像服务控制台,在“我的镜像”页面,执行刷新操作后可查看到对应的镜像信息。
  • 上传数据至OBS 前提条件 已经在OBS上创建好普通OBS桶,请参见创建普通OBS桶。 已经安装obsutil,请参考安装和配置OBS命令行工具。 OBS和训练容器间的数据传输原理可以参考基于ModelArts Standard运行GPU训练作业。 操作步骤 登录Imagenet数据集下载官网地址,下载Imagenet21k数据集:http://image-net.org/ 下载格式转换后的annotation文件:ILSVRC2021winner21k_whole_map_train.txt和ILSVRC2021winner21k_whole_map_val.txt。 下载完成后将上述3个文件数据上传至OBS桶中的imagenet21k_whole文件夹中。上传方法请参考上传数据和算法到OBS。
  • 上传算法到SFS 下载Swin-Transformer代码。 git clone --recursive https://github.com/microsoft/Swin-Transformer.git 修改lr_scheduler.py文件,把第27行:t_mul=1. 注释掉。 修改data文件夹下imagenet22k_dataset.py,把第28行:print("ERROR IMG LOADED: ", path) 注释掉。 修改data文件夹下的build.py文件,把第112行:prefix = 'ILSVRC2011fall_whole',改为prefix = 'ILSVRC2021winner21k_whole'。 在Swin-Transformer目录下创建requirements.txt指定python依赖库: # requirements.txt内容如下 timm==0.4.12 termcolor==1.1.0 yacs==0.1.8 准备run.sh文件中所需要的obs文件路径。 准备imagenet数据集的分享链接。 勾选要分享的imagenet21k_whole数据集文件夹,单击分享按钮,选择分享链接有效期,自定义提取码,例如123456,单击“复制链接”,记录该链接。 准备“obsutil_linux_amd64.tar.gz”的分享链接。 参考下载和安装obsutil下载“obsutil_linux_amd64.tar.gz”,将其上传至OBS桶中,设置为公共读。单击属性,单击复制链接。 链接样例如下: https://${bucketname_name}.obs.cn-north-4.myhuaweicloud.com/${folders_name}/pytorch.tar.gz 在Swin-Transformer目录下,创建运行脚本run.sh。 脚本中的"SRC_DATA_PATH=${imagenet数据集在obs中分享链接}",需要替换为上一步中的imagenet21k_whole文件夹分享链接。 脚本中的"https://${bucket_name}.obs.cn-north-4.myhuaweicloud.com/${folder_name}/obsutil_linux_amd64.tar.gz",需要替换为上一步中obsutil_linux_amd64.tar.gz在OBS上的路径(需将文件设置为公共读)。 单机单卡运行脚本: # 在代码主目录下创建一个run.sh,内容如下 #!/bin/bash # 从obs中下载数据到本地SSD盘 DIS_DATA_PATH=/cache SRC_DATA_PATH=${imagenet数据集在obs中分享链接} OBSUTIL_PATH=https://${bucket_name}.obs.cn-north-4.myhuaweicloud.com/${folder_name}/obsutil_linux_amd64.tar.gz mkdir -p $DIS_DATA_PATH && cd $DIS_DATA_PATH && wget $OBSUTIL_PATH && tar -xzvf obsutil_linux_amd64.tar.gz && $DIS_DATA_PATH/obsutil_linux_amd64*/obsutil share-cp $SRC_DATA_PATH $DIS_DATA_PATH/ -ac=123456 -r -f -j 256 && cd - IMAGE_DATA_PATH=$DIS_DATA_PATH/imagenet21k_whole MASTER_PORT="6061" /home/ma-user/anaconda3/envs/pytorch/bin/python -m torch.distributed.launch --nproc_per_node=1 --master_addr localhost --master_port=$MASTER_PORT main.py --data-path $IMAGE_DATA_PATH --cfg ./configs/swin/swin_base_patch4_window7_224_22k.yaml --local_rank 0 多机多卡运行脚本: # 创建run.sh #!/bin/bash # 从obs中下载数据到本地SSD盘 DIS_DATA_PATH=/cache SRC_DATA_PATH=${imagenet数据集在obs中分享链接} OBSUTIL_PATH=https://${bucket_name}.obs.cn-north-4.myhuaweicloud.com/${folder_name}/obsutil_linux_amd64.tar.gz mkdir -p $DIS_DATA_PATH && cd $DIS_DATA_PATH && wget $OBSUTIL_PATH && tar -xzvf obsutil_linux_amd64.tar.gz && $DIS_DATA_PATH/obsutil_linux_amd64*/obsutil share-cp $SRC_DATA_PATH $DIS_DATA_PATH/ -ac=123456 -r -f -j 256 && cd - IMAGE_DATA_PATH=$DIS_DATA_PATH/imagenet21k_whole MASTER_ADDR=$(echo ${VC_WORKER_HOSTS} | cut -d "," -f 1) MASTER_PORT="6060" NNODES="$VC_WORKER_NUM" NODE_RANK="$VC_TASK_INDEX" NGPUS_PER_NODE="$MA_NUM_GPUS" /home/ma-user/anaconda3/envs/pytorch/bin/python -m torch.distributed.launch --nnodes=$NNODES --node_rank=$NODE_RANK --nproc_per_node=$NGPUS_PER_NODE --master_addr $MASTER_ADDR --master_port=$MASTER_PORT main.py --data-path $IMAGE_DATA_PATH --cfg ./configs/swin/swin_base_patch4_window7_224_22k.yaml 推荐先使用单机单卡运行脚本,待正常运行后再改用多机多卡运行脚本。 多机多卡run.sh中的“VC_WORKER_HOSTS”、“VC_WORKER_NUM”、“VC_TASK_INDEX”、“MA_NUM_GPUS”为ModelArts训练容器中预置的环境变量。训练容器环境变量详细介绍可参考查看训练容器环境变量。 通过obsutils,将代码文件夹放到OBS上,然后通过OBS将代码传至SFS相应目录中。 在SFS中将代码文件Swin-Transformer-main设置归属为ma-user。 chown -R ma-user:ma-group Swin-Transformer 执行以下命令,去除Shell脚本的\r字符。 cd Swin-Transformer sed -i 's/\r//' run.sh Shell脚本在Windows系统编写时,每行结尾是\r\n,而在Linux系统中行每行结尾是\n,所以在Linux系统中运行脚本时,会认为\r是一个字符,导致运行报错“$'\r': command not found”,因此需要去除Shell脚本的\r字符。
  • 操作流程 准备工作: 购买服务资源(VPC/SFS/OBS/SWR/ECS) 配置权限 创建专属资源池(打通VPC) ECS服务器挂载SFS Turbo存储 在ECS中设置ModelArts用户可读权限 安装和配置OBS命令行工具 (可选)工作空间配置 模型训练: 本地构建镜像及调试 上传镜像 上传数据至OBS(首次使用时需要) 上传算法至SFS 使用Notebook进行代码调试 创建多机多卡训练作业
  • 上传镜像 客户端上传镜像,是指在安装了容器引擎客户端的机器上使用docker命令将镜像上传到容器镜像服务的镜像仓库。 如果容器引擎客户端机器为云上的ECS或CCE节点,根据机器所在区域有两种网络链路可以选择: 如果机器与容器镜像仓库在同一区域,则上传镜像走内网链路。 如果机器与容器镜像仓库不在同一区域,则上传镜像走公网链路,机器需要绑定弹性公网IP。 使用客户端上传镜像,镜像的每个layer大小不能大于10G。 上传镜像的容器引擎客户端版本必须为1.11.2及以上。 连接容器镜像服务。 登录容器镜像服务控制台。 单击右上角“创建组织”,输入组织名称完成组织创建。请自定义组织名称,本示例使用“deep-learning”,下面的命令中涉及到组织名称“deep-learning”也请替换为自定义的值。 选择左侧导航栏的“总览”,单击页面右上角的“登录指令”,在弹出的页面中单击复制登录指令。 此处生成的登录指令有效期为24小时,如果需要长期有效的登录指令,请参见获取长期有效登录指令。获取了长期有效的登录指令后,在有效期内的临时登录指令仍然可以使用。 登录指令末尾的域名为镜像仓库地址,请记录该地址,后面会使用到。 在安装容器引擎的机器中执行上一步复制的登录指令。 登录成功会显示“Login Succeeded”。 在安装容器引擎的机器上执行如下命令,为镜像打标签。 docker tag [镜像名称1:版本名称1] [镜像仓库地址]/[组织名称]/[镜像名称2:版本名称2] [镜像名称1:版本名称1]:${image_name}:${image_version}请替换为您所要上传的实际镜像的名称和版本名称。 [镜像仓库地址]:可在SWR控制台上查询,即1.c中登录指令末尾的域名。 [组织名称]:/${organization_name}请替换为您创建的组织。 [镜像名称2:版本名称2]:${image_name}:${image_version}请替换为您期待的镜像名称和镜像版本。 示例: docker tag ${image_name}:${image_version} swr.cn-north-4.myhuaweicloud.com/${organization_name}/${image_name}:${image_version} 上传镜像至镜像仓库。 docker push [镜像仓库地址]/[组织名称]/[镜像名称2:版本名称2] 示例: docker push swr.cn-north-4.myhuaweicloud.com/${organization_name}/${image_name}:${image_version} 上传镜像完成后,返回容器镜像服务控制台,在“我的镜像”页面,执行刷新操作后可查看到对应的镜像信息。
  • 监控资源 用户可以通过资源占用情况窗口查看计算节点的资源使用情况,最多可显示最近三天的数据。在资源占用情况窗口打开时,会定期向后台获取最新的资源使用率数据并刷新。 操作一:如果训练作业使用多个计算节点,可以通过实例名称的下拉框切换节点。 操作二:单击图例“cpuUsage”、“gpuMemUsage”、“gpuUtil”、“memUsage”“npuMemUsage”、“npuUtil”、可以添加或取消对应参数的使用情况图。 操作三:鼠标悬浮在图片上的时间节点,可查看对应时间节点的占用率情况。 表2 参数说明 参数 说明 cpuUsage cpu使用率。 gpuMemUsage gpu内存使用率。 gpuUtil gpu使用情况。 memUsage 内存使用率。 npuMemUsage npu内存使用率。 npuUtil npu使用情况。