更新时间:2024-11-21 GMT+08:00
分享

在ModelArts Standard运行GPU训练任务的准备工作

使用ModelArts Standard的专属资源池训练时,需要完成以下准备工作。

购买服务资源

表1 购买服务资源

服务

使用说明

参考文档

弹性文件服务SFS

弹性文件服务默认为按需计费,即按购买的存储容量和时长收费。您也可以购买包年包月套餐,提前规划资源的使用额度和时长。在欠费时,您需要及时(15天之内)续费以避免您的文件系统资源被清空。

购买的SFS可以用于存储数据和代码。

如何购买弹性文件服务?

容器镜像服务SWR

容器镜像服务分为企业版和共享版。共享版计费项包括存储空间和流量费用,目前均免费提供给您。企业版支持按需计费模式。

购买的SWR可以用于上传自定义镜像。

使用容器引擎客户端上传镜像

对象存储服务OBS

对象存储服务提供按需计费和包年包月两种计费模式,用户可以根据实际需求购买OBS服务。

OBS服务支持以下两种存储方式,单机单卡场景使用文件系统,多机多卡场景使用普通OBS桶。

虚拟私有云VPC

虚拟私有云可以为您构建隔离的、用户自主配置和管理的虚拟网络环境。

通过打通专属资源池的VPC,可以方便用户跨VPC使用资源,提升资源利用率。

创建虚拟私有云和子网

弹性云服务器ECS

如果您需要在服务器上部署相关业务,较之物理服务器,弹性云服务器的创建成本较低,并且可以在几分钟之内快速获得基于云服务平台的弹性云服务器设施,并且这些基础设施是弹性的,可以根据需求伸缩。

购买的ECS服务可以用于挂载SFS Turbo存储。

说明:

购买时需注意,ECS需要和SFS买到同一个VPC才能挂载SFS存储。

购买弹性云服务器

数据加密服务DEW

在使用Notebook进行代码调试时,如果要开启“SSH远程开发”功能,需要选择密钥对,便于用户登录弹性云服务器时使用密钥对方式进行身份认证,提升通信安全。密钥对可免费创建。

如何创建密钥对?

配置权限

  1. 配置IAM权限。

    1. 使用华为云主帐号创建一个开发者用户组user_group,将开发者帐号加入用户组user_group中。具体操作请参见Step1 创建用户组并加入用户
    2. 创建自定义策略。
      1. 使用华为云主帐号登录控制台,单击右上角用户名,在下拉框中选择“统一身份认证”,进入IAM服务。
      2. 在统一身份认证服务控制台的左侧菜单栏中,选择权限管理> 权限。单击右上角“创建自定义策略”“策略名称”“Policy1”“Policy2”,策略配置方式选择JSON视图,输入策略内容,单击“确定”

        创建自定义策略时,建议将项目级云服务和全局级云服务拆分为两条策略,便于授权时设置最小授权范围。了解更多

        • 项目级云服务的自定义策略“Policy1”的具体内容如下,可以直接复制粘贴。
          {
              "Version": "1.1",
              "Statement": [
                  {
                      "Action": [
                          "modelarts:*:*"
                      ],
                      "Effect": "Allow"
                  },
                  {
                      "Action": [
                          "modelarts:pool:create",
                          "modelarts:pool:update",
                          "modelarts:pool:delete"
                      ],
                      "Effect": "Deny"
                  },
                  {
                      "Action": [
                          "sfsturbo:*:*",
                          "vpc:*:*",
                          "dss:*:get",
                          "dss:*:list"
                      ],
                      "Effect": "Allow"
                  },
                  {
                      "Action": [
                          "ecs:*:*",
                          "evs:*:get",
                          "evs:*:list",
                          "evs:volumes:create",
                          "evs:volumes:delete",
                          "evs:volumes:attach",
                          "evs:volumes:detach",
                          "evs:volumes:manage",
                          "evs:volumes:update",
                          "evs:volumes:use",
                          "evs:volumes:uploadImage",
                          "evs:snapshots:create",
                          "vpc:*:get",
                          "vpc:*:list",
                          "vpc:networks:create",
                          "vpc:networks:update",
                          "vpc:subnets:update",
                          "vpc:subnets:create",
                          "vpc:ports:*",
                          "vpc:routers:get",
                          "vpc:routers:update",
                          "vpc:securityGroups:*",
                          "vpc:securityGroupRules:*",
                          "vpc:floatingIps:*",
                          "vpc:publicIps:*",
                          "ims:images:create",
                          "ims:images:delete",
                          "ims:images:get",
                          "ims:images:list",
                          "ims:images:update",
                          "ims:images:upload"
                      ],
                      "Effect": "Allow"
                  },
                  {
                      "Action": [
                          "vpc:*:*",
                          "ecs:*:get*",
                          "ecs:*:list*"
                      ],
                      "Effect": "Allow"
                  },
                  {
                      "Action": [
                          "kms:cmk:*",
                          "kms:dek:*",
                          "kms:grant:*",
                          "kms:cmkTag:*",
                          "kms:partition:*"
                      ],
                      "Effect": "Allow"
                  }
              ]
          }
        • 全局级云服务的自定义策略“Policy2”的具体内容如下,可以直接复制粘贴。
          {
              "Version": "1.1",
              "Statement": [
                  {
                      "Action": [
                          "obs:bucket:ListAllMybuckets",
                          "obs:bucket:HeadBucket",
                          "obs:bucket:ListBucket",
                          "obs:bucket:GetBucketLocation",
                          "obs:object:GetObject",
                          "obs:object:GetObjectVersion",
                          "obs:object:PutObject",
                          "obs:object:DeleteObject",
                          "obs:object:DeleteObjectVersion",
                          "obs:object:ListMultipartUploadParts",
                          "obs:object:AbortMultipartUpload",
                          "obs:object:GetObjectAcl",
                          "obs:object:GetObjectVersionAcl"
                      ],
                      "Effect": "Allow"
                  }
              ]
          }
    3. 将自定义策略授权给开发者用户组user_group。
      1. 在统一身份认证服务控制台的左侧菜单栏中,选择用户组。在用户组页面单击对应用户组名称user_group操作列的“授权”,勾选策略“Policy1”“Policy2”“SWR Admin”。单击“下一步”

        SWR的权限有SWR FullAccess、SWR OperateAccess、SWR ReadOnlyAccess。但SWR FullAccess、SWR OperateAccess、SWR ReadOnlyAccess仅限容器镜像服务企业版使用,目前企业版已暂停公测。非企业版用户暂不支持使用此权限。因此需要在此勾选“SWR Admin” 策略。

      2. 设置最小授权范围,选择授权范围方案为“所有资源”,单击“确定”

    如果您需要进行精细的权限管理,可参考权限策略和授权项。精细化授权案例可参考管理员和开发者权限分离

  2. 配置ModelArts委托权限。

    给用户配置ModelArts委托授权,允许ModelArts服务在运行时访问OBS等依赖服务。
    1. 使用华为云账号登录ModelArts管理控制台,在左侧导航栏单击“权限管理”,进入“权限管理”页面,单击“添加授权”。
    2. 在弹出的“添加授权”窗口中,选择:
      • 授权对象类型所有用户
      • 委托选择新增委托
      • 权限配置普通用户
      选择完成后勾选“我已经详细阅读并同意《ModelArts服务声明》”,然后单击“创建”。
      图1 配置委托访问授权
    3. 完成配置后,在ModelArts控制台的权限管理列表,可查看到此账号的委托配置信息。
      图2 查看委托配置信息

  3. 配置SWR组织权限。

    IAM用户创建后,需要管理员在组织中为用户添加授权,使IAM用户对组织内所有镜像享有读取/编辑/管理的权限。

    只有具备“管理”权限的帐号和IAM用户才能添加授权。

    1. 登录容器镜像服务控制台。
    2. 在左侧菜单栏选择“组织管理”,单击组织名称。
    3. 在“用户”页签下单击“添加授权”,在弹出的窗口中为IAM用户选择权限,然后单击“确定”。

    SWR授权管理详情可参考授权管理

    如果给子账号的SWR授权不是SWR Admin权限,则需要继续配置SWR组织权限。

  4. 测试用户权限。

    由于权限配置需要等待15-30分钟生效,建议在配置完成后,等待30分钟,再执行如下验证操作。

    1. 使用用户组02中任意一个子账号登录ModelArts管理控制台。在登录页面,请使用“IAM用户登录”方式进行登录。

      首次登录会提示修改密码,请根据界面提示进行修改。

    2. 验证ModelArts权限。
      1. 在左上角的服务列表中,选择ModelArts服务,进入ModelArts管理控制台。
      2. 在ModelArts管理控制台,可正常创建Notebook、训练作业、注册镜像。
    3. 验证SFS权限。
      1. 在左上角的服务列表中,选择SFS服务,进入SFS管理控制台。
      2. 在SFS管理控制台的SFS Turbo中单击右上角的“创建文件系统”,如果能正常打开页面,表示当前用户具备SFS的操作权限。
    4. 验证ECS权限。
      1. 在左上角的服务列表中,选择ECS服务,进入ECS管理控制台。
      2. 在ECS管理控制台,单击右上角的“购买弹性云服务器”,如果能正常打开页面,表示当前用户具备ECS的操作权限。
    5. 验证VPC权限。
      1. 在左上角的服务列表中,选择VPC服务,进入VPC管理控制台。
      2. 在VPC管理控制台,单击右上角的“创建虚拟私有云”,如果能正常打开页面,表示当前用户具备VPC的操作权限。
    6. 验证DEW权限。
      1. 在左上角的服务列表中,选择DEW服务,进入DEW管理控制台。
      2. 在DEW管理控制台,选择“密钥对管理 > 私有密钥对”,单击“创建密钥对”,如果能正常打开页面,表示当前用户具备DEW的操作权限。
    7. 验证OBS权限。
      1. 在左上角的服务列表中,选择OBS服务,进入OBS管理控制台。
      2. 在OBS管理控制台,单击右上角的“创建桶”,如果能正常打开页面,表示当前用户具备OBS的操作权限。
    8. 验证SWR权限。
      1. 在左上角的服务列表中,选择SWR服务,进入SWR管理控制台。
      2. 在SWR管理控制台,如果能正常打开页面,表示当前用户具备SWR的操作权限。
      3. 单击右上角的“上传镜像”,如果能看到授权的组织,表示当前用户具备SWR组织权限。

创建专属资源池

ModelArts提供独享的计算资源,可用于Notebook、训练作业、部署模型。专属资源池不与其他用户共享,更加高效。在使用专属资源池之前,您需要先创建一个专属资源池,操作指导请参考创建Standard专属资源池

  • 配置“网络”时需要选择已打通VPC的网络。如果需要新建网络和打通VPC可以参考配置Standard专属资源池可访问公网
  • “规格类型”“节点数量”根据训练计划使用的资源选择。

在ECS服务器挂载SFS Turbo存储

在ECS服务器挂载SFS Turbo存储后,支持将训练所需的数据通过ECS上传至SFS Turbo。

  1. 检查云服务环境。
    • ECS服务器和SFS的共享硬盘在相同的VPC或者对应VPC能够互联。
    • ECS服务器基础镜像用的是Ubuntu 18.04。
    • ECS服务器和SFS Turbo在同一子网中。
  2. 在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
  3. 安装NFS客户端,挂载对应盘。
    sudo apt-get update
    sudo apt-get install nfs-common
  4. 获取SFS Turbo的挂载命令。
    1. 进入弹性文件服务SFS管理控制台。
    2. 选择“SFS Turbo”进入文件系统列表,单击文件系统名称,进入详情页面。
    3. “基本信息”页签获取并记录“Linux挂载命令”
  5. 在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错误。

  1. 在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
  2. 执行以下命令,查看创建的用户信息。
    id ma-user

    如果出现以下信息则表示创建成功。

    uid=1000(ma-user) gid=100(ma-group) groups=100(ma-group)

安装和配置OBS命令行工具

obsutil是用于访问、管理对象存储服务OBS的命令行工具,使用该工具可以对OBS进行常用的配置管理操作,如创建桶、上传文件/文件夹、下载文件/文件夹、删除文件/文件夹等。

obsutil安装和配置的具体操作指导请参见obsutils快速入门

操作命令中的AK/SK和Endpoint要换成用户实际获取的AK/SK和Endpoint。

(可选)工作空间配置

ModelArts支持设置子账号的细粒度权限、不同工作空间之间资源隔离。ModelArts工作空间帮您实现项目资源隔离、多项目分开结算等功能。

如果你开通了企业项目管理服务的权限,可以在创建工作空间的时候绑定企业项目ID,并在企业项目下添加用户组,为不同的用户组设置细粒度权限供组里的用户使用。

如果你未开通企业项目管理服务的权限,也可以在ModelArts创建自己独立的工作空间,但是无法使用跟企业项目相关的功能。

工作空间为白名单功能,使用该功能需要提工单申请开通。

相关文档