
# 在ModelArts运行训练作业的准备工作
使用ModelArts的专属资源池训练时，需要完成以下准备工作。
 #### 购买服务资源
表1购买服务资源 
| 服务        | 使用说明                                                                                                                                                                                                                                                                                                      | 参考文档                                                                                                                                                                                                                                                                                                                                                                                                                  |
|:---|:---|:---|
| 弹性文件服务SFS | 弹性文件服务默认为按需计费，即按购买的存储容量和时长收费。您也可以购买包年包月套餐，提前规划资源的使用额度和时长。在欠费时，您需要及时（15天之内）续费以避免您的文件系统资源被清空。 购买的SFS可以用于存储数据和代码。                                                                                                                                            | [如何购买弹性文件服务？](https://support.huaweicloud.com/sfs_faq/sfs_01_0084.html)                                                                                                                                                                                                                                                                                                                                               |
| 容器镜像服务SWR | 容器镜像服务分为企业版和共享版。共享版计费项包括存储空间和流量费用，目前均免费提供给您。企业版支持按需计费模式。 购买的SWR可以用于上传自定义镜像。                                                                                                                                                                                | [上传镜像](https://support.huaweicloud.com/qs-swr/index.html)                                                                                                                                                                                                                                                                                                                                                             |
| 对象存储服务OBS | 对象存储服务提供按需计费和包年包月两种计费模式，用户可以根据实际需求购买OBS服务。 OBS服务支持以下两种存储方式，单机单卡场景使用文件系统，多机多卡场景使用普通OBS桶。                                                                                                                                                                     | - [创建普通OBS桶](https://support.huaweicloud.com/usermanual-obs/zh-cn_topic_0045829088.html)  - [创建并行文件系统](https://support.huaweicloud.com/usermanual-obs/obs_13_0002.html)   |
| 虚拟私有云VPC  | 虚拟私有云可以为您构建隔离的、用户自主配置和管理的虚拟网络环境。 通过打通专属资源池的VPC，可以方便用户跨VPC使用资源，提升资源利用率。                                                                                                                                                                                        | [创建虚拟私有云和子网](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0013935842.html)                                                                                                                                                                                                                                                                                                                              |
| 弹性云服务器ECS | 如果您需要在服务器上部署相关业务，较之物理服务器，弹性云服务器的创建成本较低，并且可以在几分钟之内快速获得基于云服务平台的弹性云服务器设施，并且这些基础设施是弹性的，可以根据需求伸缩。 购买的ECS服务可以用于挂载SFS Turbo存储。 说明： 购买时需注意，ECS需要和SFS买到同一个VPC才能挂载SFS存储。 | [自定义购买ECS](https://support.huaweicloud.com/usermanual-ecs/ecs_03_7002.html)                                                                                                                                                                                                                                                                                                                                           |
| 密码安全中心DEW | 在使用Notebook进行代码调试时，如果要开启"SSH远程开发"功能，需要选择密钥对，便于用户登录弹性云服务器时使用密钥对方式进行身份认证，提升通信安全。密钥对可免费创建。                                                                                                                                                                                                                   | [如何创建密钥对？](https://support.huaweicloud.com/usermanual-dew/dew_01_0034.html)                                                                                                                                                                                                                                                                                                                                           |
   
 #### 配置权限
1. 配置IAM权限。 
   1. 使用华为云主账号创建一个开发者用户组user_group，将开发者账号加入用户组user_group中。具体操作请参见[Step1 创建用户组并加入用户](https://support.huaweicloud.com/permission-modelarts/modelarts_24_0089.html)。
   
   2. 创建自定义策略。
      1. 使用华为云主账号登录[华为云管理控制台](https://console.huaweicloud.com/console)，单击右上角用户名，在下拉框中选择"统一身份认证"，进入IAM服务。
      
      2. 在统一身份认证服务控制台的左侧菜单栏中，选择"权限管理\> 权限"。单击右上角"创建自定义策略"，"策略名称"为"Policy1"或"Policy2"，策略配置方式选择JSON视图，输入策略内容，单击"确定"。
         ![](https://support.huaweicloud.com/bestpractice-modelarts/public_sys-resources/note_3.0-zh-cn.png)
         创建自定义策略时，建议将项目级云服务和全局级云服务拆分为两条策略，便于授权时设置最小授权范围。[了解更多](https://support.huaweicloud.com/productdesc-iam/iam_01_0024.html)。
         - 项目级云服务的自定义策略"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"。单击"下一步"。
         ![](https://support.huaweicloud.com/bestpractice-modelarts/public_sys-resources/note_3.0-zh-cn.png)
         SWR的权限有SWR FullAccess、SWR OperateAccess、SWR ReadOnlyAccess。但SWR FullAccess、SWR OperateAccess、SWR ReadOnlyAccess仅限容器镜像服务企业版使用，目前企业版已暂停公测。非企业版用户暂不支持使用此权限。因此需要在此勾选"SWR Admin" 策略。
         
      
      2. 设置最小授权范围，选择授权范围方案为"所有资源"，单击"确定"。
       
   
   
   更多权限管理的信息请参见[ModelArts权限管理基本概念](https://support.huaweicloud.com/permission-modelarts/modelarts_24_0078.html)。
   
   
2. 配置ModelArts委托权限。 
   给用户配置ModelArts委托授权，允许ModelArts服务在运行时访问OBS等依赖服务。
   1. 使用华为云账号登录[ModelArts管理控制台](https://console.huaweicloud.com/modelarts)，在左侧导航栏单击"权限管理"，进入"权限管理"页面，单击"添加授权"。
   
   2. 在弹出的"添加授权"窗口中，选择：
      - 授权对象类型：IAM子用户
      
      - 委托选择：新增委托
      
      - 权限配置：普通用户
      
      - 权限模板：勾选训练模块和推理模块
      
      - 服务列表：会根据"权限模板"所勾选的内容自动勾选所需的最小权限。
      
      
      选择完成后勾选"我已经详细阅读并同意《ModelArts服务声明》"，然后单击"创建"。
      图1配置委托访问授权   
      ![](https://support.huaweicloud.com/bestpractice-modelarts/figure/zh-cn_image_0000002435619234.png "点击放大")
      
      
   
   3. 完成配置后，在ModelArts控制台的权限管理列表，可查看到此账号的委托配置信息。
      图2查看委托配置信息   
      ![](https://support.huaweicloud.com/bestpractice-modelarts/figure/zh-cn_image_0000002436998162.png "点击放大")
      
      
    
   
   
3. 配置SWR组织权限。 
   IAM用户创建后，需要管理员在组织中为用户添加授权，使IAM用户对组织内所有镜像享有读取/编辑/管理的权限。
   只有具备"管理"权限的账号和IAM用户才能添加授权。
   1. 登录[容器镜像服务控制台](https://console.huaweicloud.com/swr/)。
   
   2. 在左侧菜单栏选择"组织管理"，单击组织名称。
   
   3. 在"用户"页签下单击"添加授权"，在弹出的窗口中为IAM用户选择权限，然后单击"确定"。
   
   
   SWR授权管理详情可参考[授权管理](https://support.huaweicloud.com/usermanual-swr/swr_01_0015.html#section4)。
   ![](https://support.huaweicloud.com/bestpractice-modelarts/public_sys-resources/note_3.0-zh-cn.png)
   如果给子账号的SWR授权不是SWR Admin权限，则需要继续配置SWR组织权限。
   
   
4. 测试用户权限。 
   由于权限配置需要等待15-30分钟生效，建议在配置完成后，等待30分钟，再执行如下验证操作。
   1. 使用用户组02中任意一个子账号登录[ModelArts管理控制台](https://console.huaweicloud.com/modelarts)。在登录页面，请使用"IAM用户登录"方式进行登录。
      首次登录会提示修改密码，请根据界面提示进行修改。
      
   
   2. 验证ModelArts权限。
      1. 在左上角的服务列表中，选择ModelArts服务，进入[ModelArts管理控制台](https://console.huaweicloud.com/modelarts)。
      
      2. 在ModelArts管理控制台，可正常创建Notebook、训练作业、注册镜像。
       
   
   3. 验证SFS权限。
      1. 在左上角的服务列表中，选择SFS服务，进入[SFS管理控制台](https://console.huaweicloud.com/sfs/)。
      
      2. 在SFS管理控制台的SFS Turbo中单击右上角的"创建文件系统"，如果能正常打开页面，表示当前用户具备SFS的操作权限。
       
   
   4. 验证ECS权限。
      1. 在左上角的服务列表中，选择ECS服务，进入[ECS管理控制台](https://console.huaweicloud.com/ecm/)。
      
      2. 在ECS管理控制台，单击右上角的"购买弹性云服务器"，如果能正常打开页面，表示当前用户具备ECS的操作权限。
       
   
   5. 验证VPC权限。
      1. 在左上角的服务列表中，选择VPC服务，进入[VPC管理控制台](https://console.huaweicloud.com/vpc/)。
      
      2. 在VPC管理控制台，单击右上角的"创建虚拟私有云"，如果能正常打开页面，表示当前用户具备VPC的操作权限。
       
   
   6. 验证DEW权限。
      1. 在左上角的服务列表中，选择DEW服务，进入[DEW管理控制台](https://console.huaweicloud.com/dew/)。
      
      2. 在DEW管理控制台，选择"密钥对管理 \> 私有密钥对"，单击"创建密钥对"，如果能正常打开页面，表示当前用户具备DEW的操作权限。
       
   
   7. 验证OBS权限。
      1. 在左上角的服务列表中，选择OBS服务，进入[OBS管理控制台](https://console.huaweicloud.com/obs/)。
      
      2. 在OBS管理控制台，单击右上角的"创建桶"，如果能正常打开页面，表示当前用户具备OBS的操作权限。
       
   
   8. 验证SWR权限。
      1. 在左上角的服务列表中，选择SWR服务，进入[容器镜像服务控制台](https://console.huaweicloud.com/swr/)。
      
      2. 在SWR管理控制台，如果能正常打开页面，表示当前用户具备SWR的操作权限。
      
      3. 单击右上角的"上传镜像"，如果能看到授权的组织，表示当前用户具备SWR组织权限。
       
   
   
   
   
 
 #### 创建专属资源池
ModelArts提供独享的计算资源，可用于Notebook、训练作业、部署模型。专属资源池不与其他用户共享，更加高效。在使用专属资源池之前，您需要先创建一个专属资源池，操作指导请参考[创建专属资源池](https://support.huaweicloud.com/resmgmt-modelarts/resmgmt-modelarts_0004.html)。
- 配置"网络"时需要选择已打通VPC的网络。如果需要新建网络和打通VPC可以参考[配置专属资源池可访问公网](https://support.huaweicloud.com/resmgmt-modelarts/resmgmt-modelarts_0012.html)。
- "规格类型"和"节点数量"根据训练计划使用的资源选择。
 
 #### 在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管理控制台](https://console.huaweicloud.com/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安装和配置的具体操作指导请参见[obsutil快速入门](https://support.huaweicloud.com/utiltg-obs/obs_11_0002.html)。
![](https://support.huaweicloud.com/bestpractice-modelarts/public_sys-resources/notice_3.0-zh-cn.png)
操作命令中的AK/SK和Endpoint要替换为用户实际获取的AK/SK和Endpoint。
 #### （可选）工作空间配置
ModelArts支持设置子账号的细粒度权限、不同工作空间之间资源隔离。ModelArts工作空间帮您实现项目资源隔离、多项目分开结算等功能。
如果您开通了企业项目管理服务的权限，可以在创建工作空间的时候绑定企业项目ID，并在企业项目下添加用户组，为不同的用户组设置细粒度权限供组里的用户使用。
如果您未开通企业项目管理服务的权限，也可以在ModelArts创建自己独立的工作空间，但是无法使用跟企业项目相关的功能。
