云服务器内容精选

  • 站点管理 站点管理是用来新增站点、批量启用、批量禁用、批量删除、编辑等操作管理。 操作步骤 登录成功后将进入系统主界面。单击系统主界面上方【站群管理】,进入【站点管理】。 单击【站点管理】,可以查看【列表】中内容,通过输入站点名称进行筛选查询结果,清空查询条件,实现设置默认站点、是否启用、编辑、新增、批量启用、批量禁用、批量删除、刷新的操作。如下图所示: 图1 站点管理 单击【新增】,填写完站点名称等选项信息,确认提交信息即可。如下图所示: 图2 新增 单击【回收站】,通过输入站点名称进行筛选查询结果,实现批量还原、批量永久删除、刷新操作。如下图所示: 图3 回收站
  • 发布点管理 发布点管理是用来新增发布点、排序、批量启用、批量禁用、批量删除等操作管理。 操作步骤 登录成功后将进入系统主界面。单击系统主界面上方【站群管理】,进入【发布点管理】。 单击【发布点管理】,可以查看【列表】中内容,通过输入发布点名称、IP、发布点类型进行筛选查询结果,清空查询条件。实现新增、批量启用、批量禁用、批量删除、刷新的操作。如下图所示: 图4 发布点管理 单击【新增】,填写完站点名称等选项信息,确认提交信息即可。如下图所示: 图5 新增 单击【回收站】,通过输入发布点名称、IP、发布类型进行筛选查询结果,实现批量还原、批量永久删除、刷新、是否禁用操作。如下图所示: 图6 回收站
  • 工作流 工作流是用来新增工作流、批量删除等操作管理。 操作步骤 登录成功后将进入系统主界面。单击系统主界面上方【站群管理】,进入【工作流】。 单击【工作流】,可以查看【列表】中内容,通过输入工作流名称进行筛选查询结果,清空查询条件。实现新增、批量删除、刷新的操作。如下图所示: 图9 列表 单击【新增】,填写完工作流名称等选项信息,确认提交信息即可。如下图所示: 图10 新增 单击【回收站】,通过输入工作流名称进行筛选查询结果,实现批量还原、批量永久删除、刷新操作。如下图所示: 图11 回收站
  • 站点管理 支持无限制的添加站点,支持站点分级建设,站点之间的信息可以互相推送、共享。站点管理具备的功能操作有:创建,复制,编辑,启用,禁用,删除,回收站。每个站点可以独立配置 域名 和虚拟目录。站点可以指定前台主题模板文件夹,可以指定前台发布点,可以设定首页的模板文件。站点具备动态发布与静态发布的功能,在站点管理里可以设置整站静态,站点首页静态。 图1 站点管理 系统支持针对网站管理多角度的支持,包括网站管理员权限分配、审核流设定、日志管理、网站统计分析等网站管理功能。 管理员设置 管理员分系统管理员,安全管理员,审计管理员和普通管理员,系统可以设置开启三员权限管理机制,三员权限管理机制是为了保障账号权限安全。在三员权限管理机制关闭的情况下,系统管理员权限是最大。开启后,系统管理员将没有安全管理员,审计管理员所具有的权限,安全管理员与审计管理员的权限可以根据实际需求设定。
  • 场景描述 ranktable路由规划是一种用于分布式并行训练中的通信优化能力,在使用NPU的场景下,支持对节点之间的通信路径根据交换机实际topo做网络路由亲和规划,进而提升节点之间的通信速度。 本案例介绍如何在ModelArts Lite场景下使用ranktable路由规划完成Pytorch NPU分布式训练任务,训练任务默认使用Volcano job形式下发到Lite资源池集群。 图1 任务示意图
  • 约束与限制 该功能只支持贵阳一区域,如果要在其他区域使用请联系技术支持。 ModelArts Lite资源池对应的CCE集群需要安装1.10.12及以上版本的华为云版Volcano插件。Volcano调度器的安装升级请参见Volcano调度器。仅华为云版Volcano插件支持开启路由加速特性。 训练使用的Python版本是3.7或3.9,否则无法实现ranktable路由加速。 训练作业的任务节点数要大于或等于3,否则会跳过ranktable路由加速。建议在大模型场景(512卡及以上)使用ranktable路由加速。 脚本执行目录不能是共享目录,否则ranktable路由加速会失败。 路由加速的原理是改变rank编号,所以代码中对rank的使用要统一,如果rank的使用不一致会导致训练异常。
  • 操作步骤 拉取镜像。本测试镜像为bert_pretrain_mindspore:v1,已经把测试数据和代码打进镜像中。 docker pull swr.cn-southwest-2.myhuaweicloud.com/os-public-repo/bert_pretrain_mindspore:v1 docker tag swr.cn-southwest-2.myhuaweicloud.com/os-public-repo/bert_pretrain_mindspore:v1 bert_pretrain_mindspore:v1 在主机上新建config.yaml文件。 config.yaml文件用于配置pod,本示例中使用sleep命令启动pod,便于进入pod调试。您也可以修改command为对应的任务启动命令(如“python train.py”),任务会在启动容器后执行。 config.yaml内容如下: apiVersion: v1 kind: ConfigMap metadata: name: configmap1980-yourvcjobname # 前缀使用“configmap1980-”不变,后接vcjob的名字 namespace: default # 命名空间自选,需要和下边的vcjob处在同一命名空间 labels: ring-controller.cce: ascend-1980 # 保持不动 data: #data内容保持不动,初始化完成,会被volcano插件自动修改 jobstart_hccl.json: | { "status":"initializing" } --- apiVersion: batch.volcano.sh/v1alpha1 # The value cannot be changed. The volcano API must be used. kind: Job # Only the job type is supported at present. metadata: name: yourvcjobname # job名字,需要和configmap中名字保持联系 namespace: default # 和configmap保持一致 labels: ring-controller.cce: ascend-1980 # 保持不动 fault-scheduling: "force" spec: minAvailable: 1 # The value of minAvailable is 1 in a single-node scenario and N in an N-node distributed scenario. schedulerName: volcano # 保持不动,Use the Volcano scheduler to schedule jobs. policies: - event: PodEvicted action: RestartJob plugins: configmap1980: - --rank-table-version=v2 # 保持不动,生成v2版本ranktablefile env: [] svc: - --publish-not-ready-addresses=true maxRetry: 3 queue: default tasks: - name: "yourvcjobname-1" replicas: 1 # The value of replicas is 1 in a single-node scenario and N in an N-node scenario. The number of NPUs in the requests field is 8 in an N-node scenario. template: metadata: labels: app: mindspore ring-controller.cce: ascend-1980 # 保持不动,The value must be the same as the label in ConfigMap and cannot be changed. spec: affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: volcano.sh/job-name operator: In values: - yourvcjobname topologyKey: kubernetes.io/hostname containers: - image: bert_pretrain_mindspore:v1 # 镜像地址,Training framework image, which can be modified. imagePullPolicy: IfNotPresent name: mindspore env: - name: name # The value must be the same as that of Jobname. valueFrom: fieldRef: fieldPath: metadata.name - name: ip # IP address of the physical node, which is used to identify the node where the pod is running valueFrom: fieldRef: fieldPath: status.hostIP - name: framework value: "MindSpore" command: - "sleep" - "1000000000000000000" resources: requests: huawei.com/ascend-1980: "1" # 需求卡数,key保持不变。Number of required NPUs. The maximum value is 16. You can add lines below to configure resources such as memory and CPU. limits: huawei.com/ascend-1980: "1" # 限制卡数,key保持不变。The value must be consistent with that in requests. volumeMounts: - name: ascend-driver #驱动挂载,保持不动 mountPath: /usr/local/Ascend/driver - name: ascend-add-ons #驱动挂载,保持不动 mountPath: /usr/local/Ascend/add-ons - name: localtime mountPath: /etc/localtime - name: hccn #驱动hccn配置,保持不动 mountPath: /etc/hccn.conf - name: npu-smi #npu-smi mountPath: /usr/local/sbin/npu-smi nodeSelector: accelerator/huawei-npu: ascend-1980 volumes: - name: ascend-driver hostPath: path: /usr/local/Ascend/driver - name: ascend-add-ons hostPath: path: /usr/local/Ascend/add-ons - name: localtime hostPath: path: /etc/localtime # Configure the Docker time. - name: hccn hostPath: path: /etc/hccn.conf - name: npu-smi hostPath: path: /usr/local/sbin/npu-smi restartPolicy: OnFailure 根据config.yaml创建pod。 kubectl apply -f config.yaml 检查pod启动情况,执行下述命令。如果显示“1/1 running”状态代表启动成功。 kubectl get pod -A 进入容器,{pod_name}替换为您的pod名字(get pod中显示的名字),{namespace}替换为您的命名空间(默认为default)。 kubectl exec -it {pod_name} bash -n {namespace} 查看卡信息,执行以下命令。 npu-smi info kubernetes会根据config.yaml文件中配置的卡数分配资源给pod,如下图所示由于配置了1卡因此在容器中只会显示1卡,说明配置生效。 图2 查看卡信息 修改pod的卡数。由于本案例中为分布式训练,因此所需卡数修改为8卡。 删除已创建的pod。 kubectl delete -f config.yaml 将config.yaml文件中“limit”和“request”改为8。 vi config.yaml 图3 修改卡数 重新创建pod。 kubectl apply -f config.yaml 进入容器并查看卡信息,{pod_name}替换为您的pod名字,{namespace}替换为您的命名空间(默认为default)。 kubectl exec -it {pod_name} bash -n {namespace} npu-smi info 如图所示为8卡,pod配置成功。 图4 查看卡信息 查看卡间通信配置文件,执行以下命令。 cat /user/config/jobstart_hccl.json 多卡训练时,需要依赖“rank_table_file”做卡间通信的配置文件,该文件自动生成,pod启动之后文件地址。为“/user/config/jobstart_hccl.json”,“/user/config/jobstart_hccl.json”配置文件生成需要一段时间,业务进程需要等待“/user/config/jobstart_hccl.json”中“status”字段为“completed”状态,才能生成卡间通信信息。如下图所示。 图5 卡间通信配置文件 启动训练任务。 cd /home/ma-user/modelarts/user-job-dir/code/bert/ export MS_ENABLE_GE=1 export MS_GE_TRAIN=1 python scripts/ascend_distributed_launcher/get_distribute_pretrain_cmd.py --run_script_dir ./scripts/run_distributed_pretrain_ascend.sh --hyper_parameter_config_dir ./scripts/ascend_distributed_launcher/hyper_parameter_config.ini --data_dir /home/ma-user/modelarts/user-job-dir/data/cn-news-128-1f-mind/ --hccl_config /user/config/jobstart_hccl.json --cmd_file ./distributed_cmd.sh bash scripts/run_distributed_pretrain_ascend.sh /home/ma-user/modelarts/user-job-dir/data/cn-news-128-1f-mind/ /user/config/jobstart_hccl.json 图6 启动训练任务 训练任务加载需要一定时间,在等待若干分钟后,可以执行下述命令查看卡信息。如下图可见,8张卡均被占用,说明训练任务在进行中 npu-smi info 图7 查看卡信息 若想停止训练任务,可执行下述命令关闭进程,查询进程后显示已无运行中python进程。 pkill -9 python ps -ef 图8 关闭训练进程 limit/request配置cpu和内存大小,已知单节点Snt9B机器为:8张Snt9B卡+192u1536g,请合理规划,避免cpu和内存限制过小引起任务无法正常运行。
  • 场景介绍 当专属资源池中的节点含有GPU/Ascend资源时,用户基于自己的业务,可能会有自定义GPU/Ascend驱动的需求,ModelArts面向此类客户提供了自助升级专属资源池GPU/Ascend驱动的能力。 驱动升级有两种升级方式:安全升级、强制升级。 安全升级:不影响正在运行的业务,开始升级后会先将节点进行隔离(不能再下发新的作业),待节点上的存量作业运行完成后再进行升级,因需要等待作业完成,故升级周期可能比较长。 强制升级:忽略资源池中正在运行的作业,直接进行驱动升级,可能会导致运行中作业失败,需谨慎选择。
  • 配置流程 图1 Lite Cluster资源配置流程图 表1 Cluster资源配置流程 配置顺序 配置任务 场景说明 1 配置Lite Cluster网络 购买资源池后,需要弹性公网IP并进行网络配置,配置网络后可通过公网访问集群资源。 2 配置kubectl工具 kubectl是Kubernetes集群的命令行工具,配置kubectl后,您可通过kubectl命令操作Kubernetes集群。 3 配置Lite Cluster存储 如果没有挂载任何外部存储,此时可用存储空间根据dockerBaseSize的配置来决定,可访问的存储空间比较小,因此建议通过挂载外部存储空间解决存储空间受限问题。容器中挂载存储有多种方式,不同的场景下推荐的存储方式不一样,您可根据业务实际情进行选择。 4 (可选)配置驱动 当专属资源池中的节点含有GPU/Ascend资源时,为确保GPU/Ascend资源能够正常使用,需要配置好对应的驱动。如果在购买资源池时,没配置自定义驱动,默认驱动不满足业务要求,可通过本章节将驱动升级到指定版本。 5 (可选)配置镜像预热 Lite Cluster资源池支持镜像预热功能,镜像预热可实现将镜像提前在资源池节点上拉取好,在推理及大规模分布式训练时有效缩短镜像拉取时间。
  • Step5 购买CCE集群 购买Cluster资源池时,需要选择CCE集群,若您没有可用的CCE集群,可参考购买Standard/Turbo集群进行购买,集群配套版本请参考不同机型的对应的软件配套版本。 创建Cluster资源池时,请确保CCE集群为“运行中”状态。 当前仅支持CCE集群1.23&1.25&1.28版本。 若您没有可用的CCE集群,可先创建CCE集群。CCE 1.28集群版本支持通过控制台、API方式创建,CCE 1.23和CCE 1.25版本支持通过API方式创建。不同版本的CCE集群创建方式请见Kubernetes版本策略。 若您已有CCE集群,但CCE集群版本低于1.23,则可参考升级集群的流程和方法,建议将集群升级至1.28版本。
  • 集群资源开通流程 开通集群资源过程中用户侧需要完成的任务流程如下图所示。 图1 用户侧任务流程 表1 Cluster资源开通流程 任务 说明 Step1 申请开通资源规格 当前部分规格为受限购买,需要提前联系客户经理申请开通资源规格,预计1~3个工作日内开通(若无客户经理可提交工单反馈)。 Step2 基础权限开通 为子用户开通使用资源池所需要的权限。 Step3 在ModelArts上创建委托授权 第一次使用ModelArts时需要创建委托授权,授权允许ModelArts代表用户去访问其他云服务。 如果之前已经创建过委托授权,需要更新委托相应的权限。 Step4 申请扩大资源配额 集群所需的E CS 实例数、内存大小、CPU核数和EVS硬盘大小等资源会超出华为云默认提供的资源配额,因此需要申请扩大配额。 具体的配额方案请联系客户经理获取。 配额需大于要开通的资源,且在购买开通前完成配额提升,否则会导致资源开通失败。 Step5 购买CCE集群 购买Cluster资源池时,需要选择CCE集群,若您没有可用的CCE集群需要提前在CCE控制台购买。 Step6 购买Cluster资源 在ModelArts控制台上购买Cluster资源。
  • Step2 基础权限开通 基础权限开通需要登录管理员账号,为子用户账号开通使用资源池所需的基础权限。 登录 统一身份认证 服务管理控制台。 单击目录左侧“用户组”,然后在页面右上角单击“创建用户组”。 填写“用户组名称”并单击“确定”。 在操作列单击“用户组管理”,将需要配置权限的用户加入用户组中。 单击用户组名称,进入用户组详情页。 在权限管理页签下,单击“授权”。 图2 “配置权限” 在搜索栏输入“ModelArts FullAccess”,并勾选“ModelArts FullAccess”。 图3 ModelArts FullAccess 以相同的方式,依次添加如下权限: ModelArts FullAccess CTS Administrator CCE Administrator BMS FullAccess IMS FullAccess DEW KeypairReadOnlyAccess VPC FullAccess ECS FullAccess SFS Turbo FullAccess OBS Administrator AOM FullAccess TMS FullAccess BSS Administrator 单击“下一步”,授权范围方案选择“所有资源”。 单击“确认”,完成基础权限开通。
  • Step3 在ModelArts上创建委托授权 新建委托 第一次使用ModelArts时需要创建委托授权,授权允许ModelArts代表用户去访问其他云服务。使用ModelArts Lite的资源池需要授权允许ModelArts代表用户访问云容器引擎服务CCE、裸金属服务BMS、 镜像服务 IMS和密钥管理服务DEW。 进入到ModelArts控制台的“全局配置”页面,单击“添加授权”,根据提示进行操作。 图4 添加授权 更新委托 如果之前给ModelArts创过委托授权,此处可以更新授权。 进入到ModelArts控制台的“专属资源池”页面,查看是否存在授权缺失的提示。 如果有授权缺失,根据提示,单击“此处”更新委托。根据提示选择“追加至已有授权”,单击“确定”,系统会提示权限更新成功。
  • 子账号启动其他用户的SSH实例 子账号可以看到所有用户的Notebook实例后,如果要通过SSH方式远程连接其他用户的Notebook实例,需要将SSH密钥对更新成自己的,否则会报错ModelArts.6786。更新密钥对具体操作请参见修改Notebook SSH远程连接配置。具体的错误信息提示:ModelArts.6789: 在ECS密钥对管理中找不到指定的ssh密钥对xxx,请更新密钥对并重试。
  • Step7 远程调试 单击本地IDE右下角interpreter,选择Notebook的python解释器。 图9 选择Python解释器 像本地运行代码一样,直接单击运行按钮运行代码即可,此时虽然是在本地IDE点的运行按钮,实际上运行的是云端Notebook里的代码,日志可以回显在本地的日志窗口。 图10 查看运行日志 也可以单击本地IDE右上角的Run/Debug Configuration按钮来设置运行参数。 图11 设置运行参数(1) 选择远程连接到云上开发环境实例对应的Python解释器。 图12 设置运行参数(2) 当需要调试代码时,可以直接打断点,然后使用debug方式运行程序。 图13 使用debug方式运行程序 此时可以进入debug模式,代码运行暂停在该行,且可以查看变量的值。 图14 Debug模式下查看变量值