华为云用户手册

  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 访问令牌,承载用户的身份、权限等信息。 token所需权限请参见授权项。 表3 请求Body参数 参数 是否必选 参数类型 描述 protocol 是 Object 协议信息。 表4 protocol 参数 是否必选 参数类型 描述 mapping_id 否 String 映射ID。身份提供商类型为iam_user_sso时,不需要绑定映射ID,无需传入此字段;否则此字段必填。
  • 响应示例 状态码为 200 时: 请求成功。 { "protocol": { "mapping_id": "ACME", "id": "saml", "links": { "self": "https://iam.myhuaweicloud.com/v3/OS-FEDERATION/identity_providers/ACME/protocols/saml", "identity_provider": "https://iam.myhuaweicloud.com/v3/OS-FEDERATION/identity_providers/ACME" } } }
  • 操作步骤 拉取镜像。本测试镜像为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/bin/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/bin/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和内存限制过小引起任务无法正常运行。
  • 管理Lite Cluster节点池 为帮助您更好地管理Kubernetes集群内的节点,ModelArts支持通过节点池来管理节点。一个节点池包含一个节点或多个节点,能通过节点池批量配置一组节点。关于更多节点池的介绍,可以查看节点池概述。 在资源池详情页,单击“节点池管理”页签,您可以创建、更新和删除节点池。 图1 节点池管理 创建节点池 当您需要更多节点池时,可单击“创建节点池”新增节点池,相关参数请参见Lite Cluster资源开通。 查看节点列表 当您想查看某一节点池下的节点相关信息,可单击操作列的“节点列表”,可查询节点的名称、规格及可用区。 更新节点池 当您想更新节点池配置时,可单击操作列的“更新”,相关参数介绍请参见Step6 购买Cluster资源。 需注意,更新节点池配置时,配置仅对新增的节点生效,其中仅节点池K8S标签及污点支持对存量节点同步改动(勾选对应的复选框)。 图2 更新节点池 删除节点池 当有多个节点池时,支持删除节点池,此时在操作列会显示“删除”按钮,单击“删除”后输入“DELETE”并单击“确定”即可。 每个资源池至少需要有一个节点池,当只有一个节点池时不支持删除。 父主题: Lite Cluster资源管理
  • 插件版本与CCE集群版本适配关系 表3 插件版本与CCE集群版本适配关系 类别 插件名称 插件版本 适配CCE集群版本 适用范围、约束 插件功能描述 ccePlugin gpu-beta 2.0.48(推荐) v1.(23|25).* GPU 支持在容器中使用GPU显卡的设备管理插件。 1.2.15 v1.23.* huawei-npu 2.1.5(推荐) v1.(23|25).* NPU 支持容器里使用huawei NPU设备的管理插件。 volcano 1.11.9(推荐) v1.(23|25).* NPU 基于Kubernetes的批处理平台。 npuDriver npu-driver 7.1.0.7.220-23.0.5(推荐) 7.1.0.5.220-23.0.3 无约束 NPU 用于升级、回滚npu驱动。 helm rdma-sriov-dev-plugin 0.1.0 无约束 BMS、RDMA且非ascend-1980 用于支持容器里使用RDMA网卡。 memarts 3.23.6-r002 无约束 无约束 近计算侧分布式缓存插件,用于存储加速。 os-node-agent 6.5.0-20240529142433 无约束 无约束 OS插件,用于故障检测。 icAgent icagent default CCE默认安装当前适配版本 无约束 CCE基础组件,用于日志和监控。 gpuDriver gpu-driver 515.65.01(推荐) 510.47.03 470.182.03 470.57.02 gpu-driver与系统内核版本有关,请见表4。 用于升级、回滚gpu驱动,插件依赖gpu-beta版本。
  • 系统内核与gpu-driver配套关系 表4 系统内核与gpu-driver配套关系 镜像版本 系统内核版本 适配CCE gpu-driver版本 EulerOS 2.10 4.18.0-147.5.2.15.h1109.eulerosv2r10.x86_64 v1.(23|25|27|28).* 容器隧道网络|VPC|ENI 470.57.02 4.18.0-147.5.2.5.h805.eulerosv2r10.x86_64 v1.(23|25|27).* 容器隧道网络|VPC|ENI 470.57.02 EulerOS 2.9 4.18.0-147.5.1.6.h841.eulerosv2r9.x86_64 v1.(23|25|27|28).* 容器隧道网络|VPC 470.57.02 EulerOS 2.3 3.10.0-514.44.5.10.h193.x86_64 v1.(23|25).* 容器隧道网络|VPC 470.57.02 3.10.0-514.44.5.10.h254.x86_64 v1.(23|25).* 容器隧道网络|VPC 470.57.02
  • 裸金属服务器的对应的软件配套版本 表1 裸金属服务器 类型 卡类型 RDMA网络协议 操作系统 适用范围、约束 依赖插件 NPU ascend-snt9b RoCE 操作系统:EulerOS 2.10 64bit(推荐) 内核版本:4.19.90-vhulk2211.3.0.h1543.eulerosv2r10.aarch64 架构类型:aarch64 集群类型:CCE Standard 集群版本:v1.23(v1.23.5-r0及以上版本)|v1.25(推荐) 集群规模:50|200|1000|2000 集群网络模式:容器隧道网络|VPC 集群转发模式:iptables|ipvs huawei-npu npu-driver volcano 插件版本匹配关系请见表3。 RoCE 操作系统:Huawei Cloud EulerOS 2.0 64bit 内核版本:5.10.0-60.18.0.50.r865_35.hce2.aarch64 架构类型:aarch64 集群类型: CCE Turbo 集群版本:v1.23|v1.25(推荐) 集群规模:50|200|1000|2000 集群网络模式:ENI 集群转发模式:iptables|ipvs ascend-snt9 RoCE 操作系统:EulerOS 2.8 64bit 内核版本:4.19.36-vhulk1907.1.0.h619.eulerosv2r8.aarch64 架构类型:aarch64 集群类型:CCE Standard|Turbo 集群版本:v1.23(v1.23.5-r0及以上版本)|v1.25(推荐) 集群规模:50|200|1000|2000 集群网络模式:容器隧道网络|VPC|ENI 集群转发模式:iptables|ipvs GPU gp-ant8 RoCE 操作系统:EulerOS 2.10 64bit 内核版本:4.18.0-147.5.2.15.h1109.eulerosv2r10.x86_64 架构类型:x86 集群类型:CCE Standard 集群版本:v1.23|v1.25(推荐) 集群规模:50|200|1000|2000 集群网络模式:容器隧道网络|VPC 分布式训练时仅支持容器隧道网络 集群转发模式:iptables|ipvs gpu-beta gpu-driver rdma-sriov-dev-plugin 插件版本匹配关系请见表3。 gp-ant1 RoCE 操作系统:EulerOS 2.10 64bit 4.18.0-147.5.2.15.h1109.eulerosv2r10.x86_64 架构类型:x86 集群类型:CCE Standard 集群版本:v1.23|v1.25(推荐) 集群规模:50|200|1000|2000 集群网络模式:容器隧道网络|VPC 分布式训练时仅支持容器隧道网络 集群转发模式:iptables|ipvs gp-vnt1 RoCE|IB 操作系统:EulerOS 2.9 64bit(仅上海一p6|p6s规格使用) 内核版本:147.5.1.6.h1099.eulerosv2r9.x86_64 架构类型:x86 集群类型:CCE Standard| 集群版本:v1.23|v1.25(推荐) 集群规模:50|200|1000|2000 集群网络模式:容器隧道网络|VPC 分布式训练时仅支持容器隧道网络 集群转发模式:iptables|ipvs 操作系统:EulerOS 2.9 64bit(推荐) 内核版本:4.18.0-147.5.1.6.h841.eulerosv2r9.x86_64 架构类型:x86 RDMA:Remote Direct Memory Access(RDMA)是一种直接内存访问技术,将数据直接从一台计算机的内存传输到另一台计算机。 RoCE:RDMA over Converged Ethernet(RoCE)是一种网络协议,允许应用通过以太网实现远程内存访问。 IB:InfiniBand (IB) 是一种高性能计算机网络通信协议,专为高性能计算和数据中心互连设计。
  • 弹性云服务器的对应的软件配套版本 表2 弹性云服务器 类型 卡类型 操作系统 适用范围 依赖插件 NPU ascend-snt3p-300i 操作系统:EulerOS 2.9 架构类型:x86 集群类型:CCE Standard、CCE Turbo 集群版本:v1.23(v1.23.5-r0及以上版本)|v1.25(推荐) 集群规模:50|200|1000|2000 集群网络模式:容器隧道网络|VPC|ENI 集群转发模式:iptables|ipvs huawei-npu npu-driver volcano 插件版本匹配关系请见表3。 ascend-snt3 操作系统:EulerOS 2.5 架构类型:x86 集群类型:CCE Standard 集群版本:v1.23|v1.25(推荐) 集群规模:50|200|1000|2000 集群网络模式:容器隧道网络|VPC 集群转发模式:iptables|ipvs 操作系统:EulerOS 2.8 架构类型:arm 集群类型:CCE Standard 集群版本:v1.23|v1.25(推荐) 集群规模:50|200|1000|2000 集群网络模式:容器隧道网络|VPC 集群转发模式:iptables|ipvs GPU gp-vnt1 操作系统:EulerOS 2.9 架构类型:x86 集群类型:CCE Standard 集群版本:v1.23|v1.25(推荐) 集群规模:50|200|1000|2000 集群网络模式:容器隧道网络|VPC 集群转发模式:iptables|ipvs gpu-beta gpu-driver rdma-sriov-dev-plugin 插件版本匹配关系请见表3。 gp-ant03 操作系统:EulerOS 2.9 架构类型:x86 集群类型:CCE Standard 集群版本:v1.23|v1.25(推荐) 集群规模:50|200|1000|2000 集群网络模式:容器隧道网络|VPC 集群转发模式:iptables|ipvs gp-ant1-pcie40 操作系统:EulerOS 2.9 架构类型:x86 集群类型:CCE Standard 集群版本:v1.23|v1.25(推荐) 集群规模:50|200|1000|2000 集群网络模式:容器隧道网络|VPC 集群转发模式:iptables|ipvs gp-tnt004 操作系统:EulerOS 2.9 架构类型:x86 集群类型:CCE Standard 集群版本:v1.23|v1.25(推荐) 集群规模:50|200|1000|2000 集群网络模式:容器隧道网络|VPC 集群转发模式:iptables|ipvs
  • 配置Lite Cluster存储 如果没有挂载任何外部存储,此时可用存储空间根据dockerBaseSize的配置来决定,可访问的存储空间比较小,因此建议通过挂载外部存储空间解决存储空间受限问题。 容器中挂载存储有多种方式,不同的场景下推荐的存储方式不一样,详情如表1所示。容器存储的基础知识了解请参见存储基础知识,有助您理解本章节内容。您可查看数据盘空间分配说明,了解节点数据盘空间分配的情况,以便您根据业务实际情况配置数据盘大小。 表1 容器挂载存储的方式及差异 容器挂载存储的方式 使用场景 特点 挂载操作参考 EmptyDir 适用于训练缓存场景。 Kubernetes的临时存储卷,临时卷会遵从Pod的生命周期,与Pod一起创建和删除。 使用临时存储路径 HostPath 适用于以下场景: 容器工作负载程序生成的日志文件需要永久保存。 需要访问宿主机上Docker引擎内部数据结构的容器工作负载。 节点存储。多个容器可能会共享这一个存储,会存在写冲突的问题。 Pod删除后,存储不会清理。 使用主机路径 OBS 适用于训练数据集的存储。 对象存储。常用OBS SDK进行样本数据下载。存储量大,但是离节点比较远,直接训练速度会比较慢,通常会先将数据拉取到本地cache,然后再进行训练任务。 静态挂载 动态挂载 SFS Turbo 适用于海量小文件业务场景。 提供posix协议的文件系统; 需要和资源池在同一个VPC下或VPC互通; 价格较高。 静态挂载 动态挂载:不支持 SFS 适用于多读多写场景的持久化存储。 适用大容量扩展以及成本敏感型的业务场景,包括 媒体处理 、内容管理、大数据分析和分析工作负载程序等。 SFS容量型文件系统不适合海量小文件业务。 静态挂载 动态挂载 EVS 适用于Notebook场景,开发过程的数据持久化。 每个云盘只能在单个节点挂载。 存储大小根据云硬盘的大小而定。 静态挂载 动态挂载 父主题: Lite Cluster资源配置
  • 集群资源开通流程 开通集群资源过程中用户侧需要完成的任务流程如下图所示。 图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控制台的“专属资源池”页面,查看是否存在授权缺失的提示。 如果有授权缺失,根据提示,单击“此处”更新委托。根据提示选择“追加至已有授权”,单击“确定”,系统会提示权限更新成功。
  • 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版本。
  • 配置Lite Cluster网络 本章节介绍如何申请弹性公网IP并绑定到弹性云服务器。通过本文档,您可以实现弹性云服务器访问公网的目的。 使用华为云账号登录CCE管理控制台。 找到购买Cluster资源时选择的CCE集群,单击名称进入CCE集群详情页面,单击“节点管理”页签,在“节点”页签中单击需要登录的节点名称,跳转至弹性云服务器页面。 图1 节点管理 绑定弹性公网IP。 若已有未绑定的弹性公网IP,直接选择即可。如果没有可用的弹性公网IP,需要先购买弹性公网IP,具体操作请参见申请弹性公网IP。 图2 弹性公网IP 单击“购买弹性公网IP”,进入购买页。 图3 绑定弹性公网IP 图4 购买弹性公网IP 图5 未绑定的弹性公网IP 完成购买后,返回弹性云服务器页面,刷新列表。 图6 刷新列表 选择刚才创建的弹性公网IP,单击“确定”。 图7 绑定弹性公网IP 通过SSH方式远程访问集群资源包括2种方式,密码方式或密钥方式,二选一即可。 通过SSH密钥方式登录云服务器,具体操作请参见SSH密钥登录方式。 通过SSH密码方式登录云服务器,具体操作请参见SSH密码登录方式。 父主题: Lite Cluster资源配置
  • 场景介绍 当专属资源池中的节点含有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资源池支持镜像预热功能,镜像预热可实现将镜像提前在资源池节点上拉取好,在推理及大规模分布式训练时有效缩短镜像拉取时间。
  • 配置kubectl工具 kubectl是Kubernetes集群的命令行工具,配置kubectl后,您可通过kubectl命令操作Kubernetes集群。本文介绍如何配置kubectl工具,操作步骤如下。 进入专属资源池。 图1 专属资源池页签 单击创建的专属资源池,进入专属资源池详情页面。 图2 专属资源池详情 单击对应的CCE集群,进入CCE集群详情页面,在“集群信息”找到“连接信息”。 图3 链接信息 使用kubectl工具。 若通过内网使用kubectl工具,需要将kubectl工具安装在和集群在相同vpc下的某一台机器上。单击kubectl后的“配置”按钮。按照界面提示步骤操作即可。 图4 通过内网使用kubectl工具 通过公网使用kubectl工具,可以将kubectl安装在任一台可以访问公网的机器。 首先需要绑定公网地址,单击公网地址后的“绑定”按钮。 图5 绑定公网地址 选择已有的公网IP,或者跳至创建,创建新的弹性公网IP。 完成公网地址绑定后,在“集群信息”找到“连接信息”,单击kubectl后的“配置”按钮。 按照界面提示步骤操作即可。 图6 配置kubectl 验证。 在安装了kubectl工具的机器上执行如下命令,显示集群节点即为成功。 kubectl get node 父主题: Lite Cluster资源配置
  • Lite Cluster高危操作一览表 当您在CCE、ECS或BMS服务控制台直接操作ModelArts Lite Lite Cluster资源时,可能会导致资源池部分功能异常。下表可帮助您定位异常出现的原因,风险操作包括但不限于以下内容。 高危操作风险等级说明: 高:对于可能直接导致业务失败、数据丢失、系统不能维护、系统资源耗尽的高危操作。 中:对于可能导致安全风险及可靠性降低的高危操作。 低:高、中风险等级外的其他高危操作。 表1 操作及其对应风险 操作对象 操作名称 风险描述 风险等级 应对措施 集群 升级、修改、休眠集群、删除集群等。 可能影响ModelArts侧基本功能,包括但不限于资源池管理、节点管理、扩缩容、驱动升级等。 高 不可恢复。 节点 退订、移除、关机、污点管理、切换/重装操作系统等。 可能影响ModelArts侧基本功能,包括但不限于节点管理、扩缩容、驱动升级、带本地盘机型的本地盘数据丢失等。 高 不可恢复。 修改网络安全组 可能影响ModelArts侧基本功能,包括但不限于节点管理、扩缩容、驱动升级等。 中 改回原有内容。 网络 修改/删除集群关联网段。 影响ModelArts侧基本功能,包括但不限于节点管理、扩缩容、驱动升级等。 高 不可恢复。 插件 升级、卸载gpu-beta插件。 可能导致GPU驱动使用异常。 中 回退版本、重装插件。 升级、卸载huawei-npu插件。 可能导致NPU驱动使用异常。 中 回退版本、重装插件。 升级、卸载volcano插件。 可能导致作业调度异常。 中 回退版本、重装插件。 卸载ICAgent插件。 可能导致日志、监控功能异常。 中 回退版本、重装插件。 helm 升级、回退、卸载os-node-agent。 导致驱动升级、故障检测、指标采集、节点运维功能异常。 高 联系华为云技术支持重装os-node-agent。 升级、回退、卸载rdma-sriov-dev-plugin。 可能影响容器内使用RDMA网卡。 高 联系华为云技术支持重装rdma-sriov-dev-plugin。 父主题: Lite Cluster使用前必读
  • Lite Cluster资源管理介绍 在ModelArts控制台,您可以对已创建的资源进行管理。通过单击资源池名称,可以进入到资源池详情页,您可以在详情页进行下述操作。 管理Lite Cluster节点:节点是容器集群组成的基本元素,您可以对资源池内单节点进行替换、删除、重置等操作。 管理Lite Cluster节点池:为帮助您更好地管理Kubernetes集群内的节点,ModelArts支持通过节点池来管理节点。节点池是集群中具有相同配置的一组节点,一个节点池包含一个节点或多个节点,您可以创建、更新和删除节点池。 管理Lite Cluster资源池标签:ModelArts支持为资源池添加标签,用来标识云资源,方便您快速搜索到资源池。 扩缩容Lite Cluster资源池:当Cluster资源池创建完成,使用一段时间后,由于用户AI开发业务的变化,对于资源池资源量的需求可能会产生变化,面对这种场景,ModelArts提供了扩缩容功能,用户可以根据自己的需求动态调整。 升级Lite Cluster资源池驱动:当资源池中的节点含有GPU/Ascend资源时,用户基于自己的业务,可能会有自定义GPU/Ascend驱动的需求,ModelArts面向此类客户提供了自助升级专属资源池GPU/Ascend驱动的能力。 监控Lite Cluster资源:ModelArts支持使用AOM和Prometheus对资源进行监控,方便您了解当前的资源使用情况。 释放Lite Cluster资源:针对不再使用的Lite Cluster资源,您可以释放资源。 图1 Lite Cluster资源管理介绍 父主题: Lite Cluster资源管理
  • 操作步骤 单击资源池名称,进入资源池详情。 单击左侧“配置管理”。 图1 配置管理 在镜像预热中单击编辑图标,填写镜像预热信息。 表1 镜像预热参数 参数名称 说明 镜像来源 可选择“预置”或“自定义”的镜像。 预置:可选择SWR服务上自有的或他人共享的镜像。 自定义:可直接填写镜像地址。 添加镜像密钥 若本租户不具有预热的镜像的权限(即非公开/非本租户私有/非他人共享的镜像),此时需要添加镜像密钥。在开启镜像密钥开关后,选择命名空间及对应密钥。创建密钥方法可参考创建密钥,密钥类型须为kubernetes.io/dockerconfigjson类型。 若需添加多个密钥,可以单击“+”新增密钥数。 添加镜像预热配置 若需添加多个镜像,可单击此按键。 图2 预置镜像预热 图3 预置镜像选择 图4 自定义镜像 预热 创建密钥所需的仓库地址、用户名、密码、可以参考对应租户的SWR登录指令。 图5 创建密钥 图6 登录指令 上图中为临时登录指令,若需长期有效登录指令,可单击图中的“如何获取长期有效指令”链接获取指导。 单击“确认”后,在预热信息框中可以看到已成功预热的镜像信息。 图7 镜像预热成功 若镜像预热失败,请检查镜像地址以及密钥是否正确。
  • Lite Cluster使用流程 ModelArts Lite Cluster面向k8s资源型用户,提供托管式k8s集群,并预装主流AI开发插件以及自研的加速插件,以云原生方式直接向用户提供AI Native的资源、任务等能力,用户可以直接操作资源池中的节点和k8s集群。本文旨在帮助您了解Lite Cluster的基本使用流程,帮助您快速上手。 图1 资源池架构图 如图所示为Lite Cluster架构图。Lite Cluster基于CCE服务实现对资源节点的管理,因此,用户首先需要购买一个CCE集群。在ModelArts控制台购买Lite Cluster集群时,ModelArts的资源池会先纳管这个CCE集群,然后根据用户设置的规格创建相应的计算节点(BMS/ECS)。随后,CCE会对这些节点进行纳管,并且ModelArts会在CCE集群中安装npuDriver、os-node-agent等插件。完成Cluster资源池的购买后,您即可对资源进行配置,并将数据上传至存储云服务中。当您需要使用集群资源时,可以使用kubectl工具或k8s API来下发作业。此外,ModelArts还提供了扩缩容、驱动升级等功能,方便您对集群资源进行管理。 图2 使用流程 推荐您根据以下使用流程对Lite Cluster进行使用。 资源开通:您需要开通资源后才可使用Lite Cluster,在开通资源前,请确保完成所有相关准备工作,包括申请开通所需的规格和进行权限配置。随后,在ModelArts控制台上购买Lite Cluster资源。请参考Lite Cluster资源开通。 资源配置:完成资源购买后,需要对网络、存储、驱动进行相关配置。请参考Lite Cluster资源配置。 资源使用:完成资源配置后,您可以使用集群资源运行训练和推理训练,具体案例可参考Lite Cluster资源使用。 资源管理:Lite Cluster提供扩缩容、驱动升级等管理手段,您可在ModelArts控制台上对资源进行管理。请参考Lite Cluster资源管理。 表1 相关名词解释 名词 含义 容器 容器技术起源于Linux,是一种内核虚拟化技术,提供轻量级的虚拟化,以便隔离进程和资源。尽管容器技术已经出现很久,却是随着Docker的出现而变得广为人知。Docker是第一个使容器能在不同机器之间移植的系统。它不仅简化了打包应用的流程,也简化了打包应用的库和依赖,甚至整个操作系统的文件系统能被打包成一个简单的可移植的包,这个包可以被用来在任何其他运行Docker的机器上使用。 Kubernetes Kubernetes是一个开源的容器编排部署管理平台,用于管理云平台中多个主机上的容器化应用。Kubernetes的目标是让部署容器化的应用简单并且高效,Kubernetes提供了应用部署、规划、更新、维护的一种机制。使用Lite Cluster需要用户具备一定的Kubernetes知识背景,您可参考Kubernetes基础知识。 CCE 云容器引擎(Cloud Container Engine,简称CCE)是一个企业级的Kubernetes集群托管服务,支持容器化应用的全生命周期管理,为您提供高度可扩展的、高性能的云原生应用部署和管理方案。CCE官网文档可参考云容器引擎。 BMS 裸金属服务器(Bare Metal Server)是一款兼具虚拟机弹性和物理机性能的计算类服务,为您和您的企业提供专属的云上物理服务器,为核心数据库、关键应用系统、高性能计算、大数据等业务提供卓越的计算性能以及数据安全。 ECS 弹性云服务器(Elastic Cloud Server)是一种可随时自助获取、可弹性伸缩的云服务器,可帮助您打造可靠、安全、灵活、高效的应用环境,确保服务持久稳定运行,提升运维效率。 os-node-agent ModelArts Lite k8s Cluster节点默认会安装os-node-agent插件,用于对节点进行管理,例如: 驱动升级:通过os-node-agent插件下载驱动文件并进行驱动版本升级、回退。 故障检测:通过os-node-agent插件在系统内周期性巡检故障特征,及时发现节点故障。 指标采集:通过os-node-agent插件采集GPU/NPU利用率指标等重要的观测数据,上报到租户侧AOM。 节点运维:授权后,通过os-node-agent插件执行诊断脚本,进行故障定位定界。 父主题: Lite Cluster使用前必读
  • 场景描述 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 inference.py”),任务会在启动容器后执行。 config.yaml内容如下: apiVersion: apps/v1 kind: Deployment metadata: name: yourapp labels: app: infers spec: replicas: 1 selector: matchLabels: app: infers template: metadata: labels: app: infers spec: schedulerName: volcano nodeSelector: accelerator/huawei-npu: ascend-1980 containers: - image: bert_pretrain_mindspore:v1 # Inference image name imagePullPolicy: IfNotPresent name: 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: hccn #驱动hccn配置,保持不动 mountPath: /etc/hccn.conf - name: npu-smi #npu-smi mountPath: /usr/local/bin/npu-smi - name: localtime #The container time must be the same as the host time. mountPath: /etc/localtime volumes: - name: ascend-driver hostPath: path: /usr/local/Ascend/driver - name: ascend-add-ons hostPath: path: /usr/local/Ascend/add-ons - name: hccn hostPath: path: /etc/hccn.conf - name: npu-smi hostPath: path: /usr/local/bin/npu-smi - name: localtime hostPath: path: /etc/localtime 根据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} 激活conda模式。 su - ma-user //切换用户身份 conda activate MindSpore //激活 MindSpore环境 创建测试代码test.py。 from flask import Flask, request import json app = Flask(__name__) @app.route('/greet', methods=['POST']) def say_hello_func(): print("----------- in hello func ----------") data = json.loads(request.get_data(as_text=True)) print(data) username = data['name'] rsp_msg = 'Hello, {}!'.format(username) return json.dumps({"response":rsp_msg}, indent=4) @app.route('/goodbye', methods=['GET']) def say_goodbye_func(): print("----------- in goodbye func ----------") return '\nGoodbye!\n' @app.route('/', methods=['POST']) def default_func(): print("----------- in default func ----------") data = json.loads(request.get_data(as_text=True)) return '\n called default func !\n {} \n'.format(str(data)) # host must be "0.0.0.0", port must be 8080 if __name__ == '__main__': app.run(host="0.0.0.0", port=8080) 执行代码,执行后如下图所示,会部署一个在线服务,该容器即为服务端。 python test.py 图2 部署在线服务 在XShell中新开一个终端,参考步骤5~7进入容器,该容器为客户端。执行以下命令验证自定义镜像的三个API接口功能。当显示如图所示时,即可调用服务成功。 curl -X POST -H "Content-Type: application/json" --data '{"name":"Tom"}' 127.0.0.1:8080/ curl -X POST -H "Content-Type: application/json" --data '{"name":"Tom"}' 127.0.0.1:8080/greet curl -X GET 127.0.0.1:8080/goodbye 图3 访问在线服务 limit/request配置cpu和内存大小,已知单节点Snt9B机器为:8张Snt9B卡+192u1536g,请合理规划,避免cpu和内存限制过小引起任务无法正常运行。
  • 与Kafka、RabbitMQ的差异 表1 功能差异 功能项 RocketMQ Kafka RabbitMQ 优先级队列 不支持 不支持 支持。建议优先级大小设置在0-10之间。 延迟队列 支持 不支持 不支持 死信队列 支持 不支持 支持 消息重试 支持 不支持 不支持 消费模式 支持客户端主动拉取和服务端推送两种方式 客户端主动拉取 支持客户端主动拉取以及服务端推送两种模式 广播消费 支持 支持 支持 消息回溯 支持 支持。Kafka支持按照offset和timestamp两种维度进行消息回溯。 不支持。RabbitMQ中消息一旦被确认消费就会被标记删除。 消息堆积 支持 支持。考虑吞吐因素,Kafka的堆积效率比RabbitMQ总体上要高。 支持 持久化 支持 支持 支持 消息追踪 支持 不支持 不支持 消息过滤 支持 支持 不支持,但可以自行封装。 多租户 支持 不支持 支持 多协议支持 兼容RocketMQ协议 只支持Kafka自定义协议。 RabbitMQ基于AMQP协议实现,同时支持MQTT、STOMP等协议。 跨语言支持 支持多语言的客户端 采用Scala和Java编写,支持多种语言的客户端。 采用Erlang编写,支持多种语言的客户端。 流量控制 待规划 支持client和user级别,通过主动设置可将流控作用于生产者或消费者。 RabbitMQ的流控基于Credit-Based算法,是内部被动触发的保护机制,作用于生产者层面。 消息顺序性 单队列(queue)内有序 支持单分区(partition)级别的顺序性。 不支持。需要单线程发送、单线程消费并且不采用延迟队列、优先级队列等一些高级功能整体配合,才能实现消息有序。 安全机制 支持SSL认证 支持SSL、SASL身份认证和读写权限控制。 支持SSL认证 事务性消息 支持 支持 支持
  • 服务韧性 DMS for RocketMQ提供了3级可靠性架构,通过跨AZ容灾、AZ内实例容灾、实例数据多副本技术方案,保障服务的持久性和可靠性。 表1 DMS for RocketMQ可靠性架构 可靠性方案 简要说明 跨AZ容灾 DMS for RocketMQ提供跨AZ类型实例,支持跨AZ容灾,当一个AZ异常时,不影响RocketMQ实例持续提供服务。 AZ内实例容灾 使用一主两备架构,备节点通过数据同步的方式保持数据一致。当节点故障时,通过Raft协议自动切换主备关系,保持数据强一致性。 数据容灾 通过支持数据多副本方式实现数据容灾。 父主题: 安全
  • GaussDB (for MySQL)最佳实践汇总 本文汇总了云数据库 GaussDB(for MySQL)服务的常见应用场景,并为每个场景提供详细的方案描述和操作指南,以帮助您轻松上手云数据库 GaussDB(for MySQL)。 表1 GaussDB(for MySQL)最佳实践汇总 分类 相关文档 数据迁移 ECS自建MySQL迁移到GaussDB(for MySQL) 其他云MySQL迁移到GaussDB(for MySQL) 安全性 GaussDB(for MySQL)安全最佳实践
  • GaussDB(for MySQL)产品优势 性能强悍:采用计算与存储分离,日志即数据架构,RDMA网络。对于某些业务负载,吞吐量最高可提升至开源MySQL7倍。 弹性扩展:1写15只读节点,分钟级添加只读实例,规格升降级。 高可靠性:跨AZ部署,数据三副本,共享分布式存储,RPO为0,秒级故障倒换。 安全防护:采用共享分布式存储,故障秒级恢复,数据0丢失;采用VPC、安全组、SSL连接和 数据加密 等严格控制安全访问。 高兼容性:兼容MySQL,应用无需改造即可轻松迁移上云。 海量存储:华为自研DFV分布式存储,容量高达128TB,。
  • 方案架构 本示例中,数据库源端为ECS自建MySQL,目的端为GaussDB(for MySQL)实例,同时假设ECS和GaussDB(for MySQL)实例在同一个VPC中。部署架构如图1所示。 如果自建MySQL和GaussDB(for MySQL)实例不在同一个VPC内,相比于相同VPC的情况,需要配置两个VPC的对等连接,部署架构图如图2所示。 图1 同一VPC的部署架构 图2 不同VPC场景的部署架构
  • 初始化磁盘 执行如下命令,创建mysql文件夹。 mkdir /mysql 执行如下命令,查看数据盘信息。 fdisk -l 回显如下: 执行如下命令,初始化数据盘。 mkfs.ext4 /dev/vdb 执行如下命令,挂载磁盘。 mount /dev/vdb /mysql 执行如下命令,查看磁盘是否挂载成功。 df -h 当显示如下回显时,表示挂载成功。 依次执行如下命令,创建文件夹并切换至install文件夹。 mkdir -p /mysql/install/data mkdir -p /mysql/install/tmp mkdir -p /mysql/install/file mkdir -p /mysql/install/log cd /mysql/install 下载并安装社区版MySQL,详情请参见如何下载并安装MySQL客户端。 执行如下命令,初始化mysql。 /mysql/install/mysql-8.0.22/bin/mysqld --defaults-file= /etc/my.cnf --initialize-insecure 执行如下命令,启动MySQL。 nohup /mysql/install/mysql-8.0.22/bin/mysqld --defaults-file= /etc/my.cnf & 执行如下命令,连接MySQL。 /mysql/install/mysql-8.0.22/bin/mysql 执行如下命令,创建root用户并授权。 grant all privileges on *.* to 'root'@'%' identified by 'xxx' with grant option;FLUSH PRIVILEGES;
共100000条