华为云用户手册

  • 配置流程 图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&1.31版本。 如果您没有可用的CCE集群,可先创建CCE集群。CCE 1.28集群版本支持通过控制台、API方式创建,CCE 1.23和CCE 1.25版本支持通过API方式创建,CCE 1.31集群版本支持通过控制台、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 “配置权限” 在搜索栏输入“ModelArtsFullAccessPolicy”,并勾选“ModelArtsFullAccessPolicy”。 图3 ModelArtsFullAccessPolicy 以相同的方式,依次添加如下权限: 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 单击“下一步”,授权范围方案选择“所有资源”。 单击“确认”,完成基础权限开通。
  • 步骤一:日志采集 共需要采集6类日志:用户训练打屏日志,主机侧操作系统日志(Host日志), Device侧日志,CANN日志,主机侧资源信息,NPU网口资源信息。 用户训练打屏日志:指在训练过程中,通过设置环境变量将日志信息输出到标准输出(屏幕)的日志。 机侧操作系统日志(Host日志):指在训练作业运行过程中,HOST侧用户进程产生的日志。 Device侧日志:指在HOST侧用户进程运行时,DEVICE侧产生的AICPU、HCCP的日志,这些日志会被回传到HOST侧。 CANN日志:CANN日志是昇腾(Ascend)计算架构中用于记录CANN(Compute Architecture for Neural Networks)模块运行时信息的日志。在模型转换过程中,如果遇到“Convert graph to om failed”等错误,CANN日志可以帮助分析问题。 主机侧资源信息:指在主机(Host)侧运行的AI应用或服务所使用的资源统计信息。 NPU网口资源信息:指在主机(Host)侧运行的AI应用或服务所使用的资源统计信息。 如果日志数据已经在训练时进行了输出和转储,例如存放在OBS,且符合约束限制中的文件名和路径约束,则跳过日志采集步骤,进入步骤二:日志清洗。 约束限制 CANN日志采集后必须放在名为“process_log”的文件夹下,示例:“worker-0/…/process_log/”。 Device侧日志采集后必须放在名为“device_log”的文件夹下,示例:“worker-0/…/device_log/”。 主机侧资源信息、NPU网口资源信息采集后必须放在名为“environment_check”的文件夹下,示例:“worker-0/…/environment_check/”。 单节点采集的日志,即单worker目录下,总文件大小应限制在5G以下,文件总数量不能超过一百万,否则将影响日志清洗效率。 用户训练打屏日志无大小限制,会默认只读最后100KB日志。 CANN日志单个文件应限制在20MB以下。 NPU状态监测指标文件、NPU网口统计监测指标文件、主机侧资源信息文件应限制在512MB以下。 Host日志当前仅支持“/var/log”下的messages日志,且单个文件的转储大小上限应限制在512MB以下。 日志采集目录结构 具体请见日志采集目录结构。 训练前采集 采集NPU网口环境检查文件 训练中采集 采集NPU网口状态监测指标文件 NPU状态监测指标文件 主机侧资源信息 训练后采集 采集训练后NPU环境检查文件 采集用户训练日志 采集CANN日志 采集Host日志 采集Device侧日志
  • 步骤二:日志清洗 采集的日志需要按照不同节点路径进行组织,如“worker-0”目录下存放从对应节点采集的所有日志。需要特别注意目录下“device_log”、“process_log”、“environment_check”三个子目录是否存在,且命名正确。 数据挂载 如果所采集日志的存储在OBS上,首先需要将OBS内的日志数据进行挂载。挂载方式建议使用rclone工具。 下载安装rclone。 首先配置访问OBS所需凭据: # 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全; # 本示例以ak和sk保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。 export AWS_AC CES S_KEY=${HUAWEICLOUD_SDK_AK} export AWS_SECRET_KEY=${HUAWEICLOUD_SDK_AK} export AWS_SESSION_TOKEN=${TOKEN} 填写rclone配置文件rclone.conf: [rclone] type = s3 provider = huaweiOBS env_auth = true acl = private 使用lsd命令查看日志路径下目录,验证是否配置成功: rclone lsd rclone:/${obs_bucket_name}/${path_to_logs} --config=${path_to_rclone.config} --s3-endpoint=${obs_endpoint} –no-check-certificate 屏幕输出日志目录,示例(该任务只有worker-0一个节点): 使用mount命令将日志目录挂载到本机: rclone mount rclone:/${obs_bucket_name}/${path_to_logs} /${path_to_local_dir} --config=${path_to_rclone.config} --s3-endpoint=${obs_endpoint} –no-check-certificate 节点日志清洗 指定单节点日志路径为输入,指定该节点日志清洗存储路径为输出(输出路径需要为空),使用ascend-fd parse命令逐一对单个节点的日志进行清洗。 ascend-fd parse -i ${path_to_worker_logs} -o ${path_to_parse_output} 需要注意的是,清洗结果也与日志相似,不同节点需要按照不同的worker目录分别进行存储。
  • 步骤三:故障诊断 因为Linux系统限制最大进程数(默认为1024),所以集群规格建议≤128台服务器(1024卡)。如果服务器数量超过此规格,需使用ulimit -n ${num}命令调整文件描述符上限,其中${num}值大于卡数,如6k卡集群,则可设置为8192。 日志故障诊断需要指定所有节点清洗结果的所在路径,指定诊断结果存储路径为输出,且输出路径需要为空,使用ascend-fd diag命令进行日志故障诊断: ascend-fd diag -i ${path_to_parse_outputs} -o ${path_to_diag_output} 诊断结果以两种形式进行呈现: 屏幕回显 在“${path_to_diag_output}/fault_diag_result”目录下生成的diag_report.json文件。
  • 场景描述 本文档介绍了在ModelArts Lite环境下使用Ascend FaultDiag工具进行日志诊断的过程,包括日志采集、日志清洗、故障诊断三个步骤。 日志数据以节点为单位进行采集,在单节点日志目录下分别清洗,将清洗结果汇总后,进行故障诊断。例如,对于运行在8个节点共64卡集群上的任务,需要在8个节点上分别进行日志采集,收集的日志存储在worker-0 ~ worker-7这8个目录下。然后分别在8个目录下进行日志清洗,每一个目录下的日志清洗结果分别存储到output/worker-0 ~ output/worker-7下面。最后,在output目录下进行故障诊断,得到诊断结果。 Ascend FaultDiag工具官方指导请见Ascend FaultDiag工具使用指导。 Ascend FaultDiag工具下载地址请见Ascend FaultDiag 故障诊断工具。
  • 更多相关操作 其它更多操作如下: 节点池管理操作请参见管理Lite Cluster节点池 节点管理操作请参见管理Lite Cluster节点 扩缩容Lite Cluster资源池操作请参见扩缩容Lite Cluster资源池 升级Lite Cluster资源池驱动操作请参见升级Lite Cluster资源池驱动 升级Lite Cluster资源池单个节点驱动操作请参见升级Lite Cluster资源池单个节点驱动
  • Lite Cluster资源池配置管理 在资源池详情页面,单击“配置管理”,在配置管理页面,可以修改设置监控的命名空间、修改集群配置,配置镜像预热信息。 单击监控的图标,可以开启或关闭监控信息,并设置监控的命名空间。监控使用请参考使用Prometheus查看Lite Cluster监控指标。 单击集群配置的图标,可以设置绑核、Dropcache、大页内存参数。缺省值表示读取资源池镜像中的默认值。 绑核:开启CPU绑核表示工作负载实例独占CPU,可以提升应用性能(比如训练作业、推理任务性能),减少应用的调度延迟,适用于对CPU缓存和调度延迟敏感的场景。关闭绑核表示关闭工作负载实例独占CPU的功能,优点是CPU共享池可分配的核数较多。也可关闭系统默认绑核后,在业务容器中用taskset等方式进行灵活绑核。 Dropcache:开启后表示启用Linux的缓存清理功能,是一种应用性能调优手段,在大部分场景下可以提升应用性能。但是清除缓存也可能会导致容器启动失败或系统性能暂时下降(因为系统需要重新从磁盘加载数据到内存中)。关闭表示不启用缓存清理功能。 大页内存:开启表示配置使用透明大页功能。大页内存是一种内存管理机制,可以通过增大内存页的大小来提高系统性能。透明大页是动态分配大页内存的机制,可以简化大页内存的管理。开启大页内存也是一种应用调优手段,在大部分场景下可以提升应用性能,但是开启后也会引起soft lockup机制导致节点重启。关闭表示不使用大页内存功能。 单击镜像预热的图标,可以设置镜像来源、添加镜像密钥、添加镜像预热配置,具体操作请参见(可选)配置镜像预热。
  • 操作步骤 拉取镜像。本测试镜像为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和内存限制过小引起任务无法正常运行。
  • Label指标介绍 表3 Label名字栏 指标对象 Label名字 Label描述 容器级别指标 pod_name 容器所属pod的名字。 pod_id 容器所属pod的ID。 node_ip 容器所属的节点IP值。 container_id 容器ID。 cluster_id 集群ID。 cluster_name 集群名称。 container_name 容器名称。 namespace 是用户创建的POD所在的命名空间。 app_kind 取自首个ownerReferences的kind字段。 app_id 取自首个ownerReferences的uid字段。 app_name 取自首个ownerReferences的name字段。 npu_id 昇腾卡的ID信息,比如davinci0(即将废弃)。 device_id 昇腾系列AI处理器的Physical ID。 device_type 昇腾系列AI处理器类型。 pool_id 物理专属池对应的资源池id。 pool_name 物理专属池对应的资源池name。 gpu_uuid 容器使用的GPU的UUID。 gpu_index 容器使用的GPU的索引。 gpu_type 容器使用的GPU的型号。 node级别指标 cluster_id 该node所属CCE集群的ID。 node_ip 节点的IP。 host_name 节点的主机名。 pool_id 物理专属池对应的资源池ID。 project_id 物理专属池的用户的project id。 npu_id 昇腾卡的ID信息,比如davinci0(即将废弃)。 device_id 昇腾系列AI处理器的Physical ID。 device_type 昇腾系列AI处理器类型。 gpu_uuid 节点上GPU的UUID。 gpu_index 节点上GPU的索引。 gpu_type 节点上GPU的型号。 device_name infiniband或RoCE网络网卡的设备名称。 port IB网卡的端口号。 physical_state IB网卡每个端口的状态。 firmware_version IB网卡的固件版本。 filesystem NFS挂载的文件系统。 mount_point NFS的挂载点。 Diagnos cluster_id GPU所在节点所属的CCE集群ID。 node_ip GPU所在节点的IP。 pool_id 物理专属池对应的资源池ID。 project_id 物理专属池的用户的project id。 gpu_uuid GPU的UUID。 gpu_index 节点上GPU的索引。 gpu_type 节点上GPU的型号。 device_name infiniband或RoCE网络网卡的设备名称。 port IB网卡的端口号。 physical_state IB网卡每个端口的状态。 firmware_version IB网卡的固件版本。
  • 删除/退订/释放节点 如果是“按需计费”的资源池,您可单击操作列的“删除”,在文本框中输入“DELETE”,单击“确定”,确认删除,即可实现对单个节点的资源释放。 如果想批量删除节点,勾选待删除节点名称前的复选框,然后单击名称上方的“删除”,在文本框中输入“DELETE”,单击“确定”,确认删除,即可实现对多个节点的资源释放。 如果是“包年/包月”且资源未到期的资源池,您可单击操作列的“退订”,即可实现对节点的资源释放。支持批量退订节点。 如果是“包年/包月”且资源到期的资源池(处于宽限期),您可单击操作列的“释放”,即可实现对单个节点的资源释放。不支持批量释放处于宽限期的节点。 部分“包年/包月”节点会出现“删除”按钮,原因是该节点为存量节点,单击“删除”即可实现节点的资源释放。
  • 插件简介 Volcano 是一个基于 Kubernetes 的批处理平台,提供了机器学习、深度学习、生物信息学、基因组学及其他大数据应用所需要而 Kubernetes 当下缺失的一系列特性。 Volcano提供了高性能任务调度引擎、高性能异构芯片管理、高性能任务运行管理等通用计算能力,通过接入AI、大数据、基因、渲染等诸多行业计算框架服务终端用户,最大支持1000Pod/s的调度并发数,轻松应对各种规模的工作负载,大大提高调度效率和资源利用率。 Volcano针对计算型应用提供了作业调度、作业管理、队列管理等多项功能,主要特性包括: 丰富的计算框架支持:通过CRD提供了批量计算任务的通用API,通过提供丰富的插件及作业生命周期高级管理,支持TensorFlow,MPI,Spark等计算框架容器化运行在Kubernetes上。 高级调度:面向批量计算、高性能计算场景提供丰富的高级调度能力,包括成组调度,优先级抢占、装箱、资源预留、任务拓扑关系等。 队列管理:支持分队列调度,提供队列优先级、多级队列等复杂任务调度能力。 目前Volcano项目已经在Github开源,项目开源地址:https://github.com/volcano-sh/volcano。
  • 常见问题 1)必选安装插件状态显示不可用时,或长时间处于安装中/删除中状态时,可单击资源池名称,查看基本信息,在基本信息的CCE集群里,单击进入该资源池的CCE集群。 单击插件中心,找到对应的插件,单击插件详情,查看插件的实例列表,单击异常状态,查看具体的异常原因。 2)可选插件显示不可用时,或长时间处于安装中/删除中状态时,可先尝试卸载,重装插件。重装后插件还是显示不可用,可参考步骤1定位插件异常详情。 3)经过以上操作,问题未得到解决,可联系MA技术人员。
  • 默认安装插件 在创建专属资源池时,已默认安装的插件。 表1 默认安装插件简介 插件名称 插件简介 节点故障检测(ModelArts Node Agent) Modelarts节点故障检测是一款监控集群节点异常事件的插件,以及对接第三方监控平台功能的组件。它是一个在每个节点上运行的守护程序,可从不同的守护进程中搜集节点问题。 AI套件(NVIDIA GPU) CCE AI套件(NVIDIA GPU)插件是支持在容器中使用GPU显卡的设备管理插件,集群中使用GPU节点时必须安装本插件。 开通Lite Cluster资源时,仅实例规格类型选择“GPU”时自动安装。 AI套件(Ascend NPU) CCE AI套件(Ascend NPU)是支持容器里使用huawei NPU设备的管理插件。 开通Lite Cluster资源时,仅实例规格类型选择“Ascend”时自动安装。 Volcano调度器 Volcano 是一个基于 Kubernetes 的批处理平台,提供了机器学习、深度学习、生物信息学、基因组学及其他大数据应用所需要而 Kubernetes 当下缺失的一系列特性。
  • 插件生命周期 状态 状态属性 说明 安装中 中间状态 插件正处于部署状态。 如遇到插件配置错误或资源不足所有实例均无法调度等情况,系统会在10分钟后将该插件置为“不可用”状态。 运行中 稳定状态 插件正常运行状态,所有插件实例均正常部署,插件可正常使用。 升级中 中间状态 插件正处于更新状态。 不可用 稳定状态 不可用,表示插件状态异常,插件不可使用。可单击状态查看失败原因。 删除中 中间状态 插件处于正在被删除的状态。 如果长时间处于该状态,则说明出现异常。
  • 版本记录 表2 AI套件(Ascend NPU)版本记录 插件版本 更新特性 2.1.53 修复安全漏洞 2.1.46 支持Kubernetes v1.31 2.1.23 修复部分问题 2.1.22 修复了一些页面显示问题 支持查询超节点信息 支持上报显卡拓扑信息 修复了日志打印问题 2.1.5 适配CCE v1.29集群 新增静默故障码 1.2.14 支持NPU监控 1.2.5 支持NPU驱动自动安装
  • 组件说明 表1 CCE AI套件(NVIDIA GPU)插件组件 容器组件 说明 资源类型 nvidia-driver-installer 为节点安装Nvidia GPU驱动的工作负载,仅在安装场景占用资源,安装完成后无资源占用。 DaemonSet hce20-nvidia-driver-installer 为节点安装Nvidia GPU驱动的工作负载,仅在安装场景占用资源,安装完成后无资源占用(用于适配OS HCE 2.0)。 DaemonSet ubuntu22-nvidia-driver-installer 为节点安装Nvidia GPU驱动的工作负载,仅在安装场景占用资源,安装完成后无资源占用(用于适配OS Ubuntu22)。 DaemonSet nvidia-gpu-device-plugin 为容器提供Nvidia GPU异构算力的Kubernetes设备插件。 DaemonSet nvidia-operator 为集群提供Nvidia GPU节点管理能力。 Deployment dcgm-exporter 启用dcgm-exporter组件进行DCGM指标观测时安装,用于采集GPU指标。 DaemonSet
  • 版本记录 表2 AI套件(NVIDIA GPU)版本记录 插件版本 更新特性 2.7.63 修复安全漏洞 2.7.42 新增NVIDIA 535.216.03驱动,支持XGPU特性 2.6.4 更新GPU卡逻辑隔离逻辑 2.0.72 更新GPU卡逻辑隔离逻辑 2.0.48 修复安装驱动的问题 2.0.44 支持535版本Nvidia驱动 支持非root用户使用XGPU 优化启动逻辑 2.0.14 支持xGPU设备监控 支持nvidia.com/gpu与volcano.sh/gpu-* api兼容 1.2.29 适配OS Ubuntu22.04 GPU驱动目录自动挂载优化 1.2.24 节点池支持配置GPU驱动版本 支持GPU指标采集 1.2.20 设置插件别名为gpu 1.2.15 适配CCE v1.23集群
  • 验证插件 插件安装完成后,在GPU节点及调度了GPU资源的容器中执行nvidia-smi命令,验证GPU设备及驱动的可用性。 GPU节点: # 插件版本为2.0.0以下时,执行以下命令: cd /opt/cloud/cce/nvidia/bin && ./nvidia-smi # 插件版本为2.0.0及以上时,驱动安装路径更改,需执行以下命令: cd /usr/local/nvidia/bin && ./nvidia-smi 容器: cd /usr/local/nvidia/bin && ./nvidia-smi 若能正常返回GPU信息,说明设备可用,插件安装成功。
  • 配置节点池弹性伸缩策略 安装集群弹性引擎插件后,需要为节点池配置弹性伸缩策略。 弹性伸缩仅支持扩容按需计费节点。 每个资源池支持最多添加10个弹性弹性伸缩策略。 每个节点池支持最多添加5个弹性伸缩策略。 不能添加相同的弹性伸缩策略。 在资源池详情页,切换到“节点池管理”页签。 单击操作列的“弹性伸缩”。 在弹性伸缩弹框中配置节点池伸缩策略。 自定义扩容规则:单击“添加规则”,在弹出的添加规则窗口中设置参数。 规则类型:可选择“周期触发”。 触发时间:可选择每天、每周、每月或每年的具体时间点。 增加节点数(个数):弹性伸缩时节点池下的节点增加数量。 节点池资源下限(个):节点池中的总节点数缩小至配置的资源下限后将不再自动缩容。 节点池资源上限(个):节点池中的总节点数达到配置的资源上限后将不再自动扩容。 冷却时间(分钟):触发弹性扩容后,再次启动缩容评估的冷却时间。 设置完成后,单击“确定”。
  • 约束与限制 集群弹性引擎支持对集群中按需计费和包周期的Lite Cluster资源池节点进行扩容和缩容。 集群弹性引擎不支持对整柜购买的Lite Cluster资源池进行弹性伸缩。 集群弹性引擎插件使用用户全局委托的权限操作资源池,如果全局委托中涉及资源池操作相关的黑名单策略,需要先删除黑名单。 在ModelArts控制台的“权限管理”页面获取当前“授权对象”对应的“授权内容”,即当前用户所授予的委托名称。 图1 授权内容 前往 IAM 控制台的委托页面,找到上一步骤获取的委托名称,单击操作列的“修改”。 图2 IAM委托 单击“授权记录”,切换至授权记录页签。 单击ModelArts CommonOperations操作列的“删除”,在对话框中单击“确定”,删除ModelArts CommonOperations权限。 图3 删除ModelArts CommonOperations权限
  • 解决方案 通过配置NAT网关,为CAE应用搭建公网及跨VPC访问通道,利用NAT网关的地址转换功能,使多个CAE应用可共享弹性公网IP访问互联网。通过合理配置路由和目标网络地址,打通不同VPC间的数据传输路径,实现资源互联互通。 本章节将详细介绍CAE应用如何通过NAT网关实现公网及跨VPC访问。 步骤一:创建公网NAT网关 VPC作为相对封闭的网络空间,内部资源使用私有IP地址,无法直接与公网通信。部署在CAE上的应用使用私有IP无法实现访问公网资源。 创建公网NAT网关将VPC内私有IP地址转换为公有IP地址,使VPC内多个云主机能够共享弹性公网IP访问互联网。 步骤二:添加SNAT规则 通过添加SNAT规则,来建立私有IP与公有IP之间的转换关系。 步骤三:为VPC添加路由 为VPC添加路由的核心目的在于为VPC内网络流量规划传输路径。当CAE应用需要访问公网资源时,通过将路由的“下一跳”指定为NAT网关,数据包就能依据路由规则,准确传输到NAT网关,经NAT网关完成地址转换后实现对公网的访问;在跨VPC访问场景下,合理的路由配置可打通不同VPC间的网络通道,确保数据包能从源VPC顺利传输到目标VPC。 步骤四:添加目标网络地址 VPC需要一个具有明确访问目标的网络地址(如公网IP段或其他VPC的CIDR网段),否则流量无法知晓该向何处转发。通过指定目标地址,与路由规则中的“下一跳”形成完整路径指引,确保CAE应用产生的流量能经NAT网关准确转发至公网或目标VPC,实现资源访问与跨网络通信。
  • 背景信息 在数字化业务持续演进的当下,数据库作为企业核心数据的存储与管理中枢,其安全性面临日益严峻的挑战。传统静态数据库密码管理方式存在诸多隐患,一旦密码泄露,可能引发数据泄露、恶意篡改等严重安全事故。为提升数据库安全防护能力,动态凭证轮转机制应运而生,它通过定期更换数据库密码,有效降低密码被破解的风险,成为保障数据库安全的重要手段。 华为云 数据加密 服务(DEW)具备对云数据库(RDS)凭证进行定期轮转和修改的能力,能够实时将修改后的凭证更新至RDS实例,极大增强了数据库密码的安全性。然而,云应用引擎(CAE)作为数据库客户端,在RDS凭证更新后,无法自动感知这一变化,导致其无法及时更新凭证信息,进而无法建立新的数据库连接,影响业务的正常运行。这一矛盾使得RDS凭证轮转机制在实际应用中难以实现端到端的自动化,成为制约数据库安全防护体系高效运作的瓶颈。
  • 解决方案 为打破上述困局,充分发挥RDS凭证轮转的安全效能,华为云构建了以事件网格(EG)为核心的端到端RDS凭证自动轮转解决方案。该方案基于华为云各服务间的协同运作,形成完整的凭证更新与同步闭环。 本章节将详细介绍如何通过EG实现端到端的RDS凭证自动轮转流程。 步骤一:使用DEW服务创建事件通知,再创建凭据并绑定事件通知 DEW依据预设的安全策略,定期对RDS凭证进行轮转与修改,并将更新后的凭证实时同步至RDS实例。 步骤二:使用EG服务创建事件通道,再创建事件订阅 DEW通过事件网格(EG)发送凭证更新事件通知,将RDS实例ID、新凭证版本号等关键信息推送至EG主题。 EG作为事件路由中枢,按照预先配置的订阅规则,识别并筛选出与RDS凭证更新相关的事件,将其路由至云应用引擎(CAE)的指定接收端点。 步骤三:使用CAE服务创建凭据 CAE接收到EG发送的事件通知后,立即启动凭证更新流程。通过解析事件中的凭证信息,CAE将新凭证注入到相关组件的配置中,并触发组件重启或连接池刷新操作,实现使用新凭证建立与RDS的数据库连接。 (可选)步骤四:使用AOM服务创建告警通知规则,再创建事件告警规则 通过在AOM中创建告警通知规则和事件告警规则,实时监控“CAE组件更新凭据失败”事件。一旦发生异常,AOM将按照预设的通知方式(如短信、邮件等)及时向运维人员发送告警,以便快速定位和解决问题,确保整个凭证自动轮转流程的可靠运行。
  • 步骤二:使用EG服务创建事件通道,再创建事件订阅 创建事件通道 进入EG控制台。 在左侧导航栏选择“事件通道”,EG服务已默认创建一条云服务事件通道(通道名称为default),云服务事件通道负责接收来自云服务事件源的事件。 创建事件订阅 在EG控制台,在左侧导航栏选择“事件订阅”。 单击“创建事件订阅”,进入事件订阅页面。 图1 事件订阅页面 单击“事件源”,参考表4设置参数信息。创建事件订阅的参数详细说明请参见创建事件订阅。 表4 事件源参数示例 参数 本案例的示例 选择提供方 选择“云服务”。 事件源 选择“云凭据管理服务 C SMS ”。 事件类型 全部勾选,包含“DEW:CSMS:SecretRotated”、“DEW:CSMS:SecretVersionCreated”,“DEW:CSMS:SecretDeleted”和“DEW:CSMS:SecretVersionExpired”。 过滤规则 保持默认。 单击“确定”,完成事件源设置。 单击“事件目标”,参考表5设置参数信息。 表5 事件目标参数示例 参数 本案例的示例 选择提供方 选择“云服务”。 事件目标 选择“云服务接口”。该功能需要提交工单申请才能使用。详细操作请参考提交工单。 云服务 选择“云应用引擎 CAE”。 接口 选择“修改用户已在DEW服务上注册的凭据版本”。 委托 选择“EG_TARGET_AGENCY”。若没有可选的委托,可以单击右侧“创建委托”。 X-Enterprise-Project-ID 不要求填写。 secret_id 填写刚才在DEW控制台创建的凭据的凭据ID。凭据ID获取方式:在DEW控制台的凭据列表页面,可以获取凭据ID。 Body 单击“切换为文本输入”,填写以下Body: { "api_version": "v1", "kind": "Secret", "spec": { "name": "test", "version_id": "v2" } } 单击“确定”,完成事件目标设置。 单击“保存”,完成事件订阅创建。
  • DDoS防护 流量控制: APIG提供API级别的流量控制策略和流量控制2.0插件策略,用户可以通过为API配置流控策略进行流量控制。 APIG提供实例级别的流量控制,通过配置ratelimit_api_limits参数设置API全局默认流控值。 APIG提供实例级别的请求大小控制,通过配置request_body_size参数设置请求中允许携带的Body大小上限。 APIG支持对接WAF和DDoS防护服务来进行抵御攻击。具体操作请参考使用WAF对APIG进行安全防护和使用DDoS防护服务为APIG抵御DDoS攻击。
  • 身份认证和访问控制 APIG提供API级别的认证鉴权,包括APP认证、IAM认证和自定义认证。 在IAM认证场景下,使用Token认证方式调用API时,token过期时间由IAM服务决定。详情请参考获取IAM用户Token(使用密码)。 在APP认证/IAM认证场景下,使用AK/SK认证方式调用API时,签名有效期为15分钟。 APIG提供API级别访问控制策略,用户可以设置IP地址或账户的黑白名单来禁止/允许某个IP地址/账号名/账号ID访问API。 APIG支持实例级别访问控制策略,用户可以配置黑白名单来禁止/允许某个IP地址访问实例。
  • 应用网关 CSE应用网关基于开源社区版Envoy,提供Ingress网关和微服务网关二合一的云原生网关服务。使用华为云CSE应用网关可以获得微服务架构或容器化应用的极简网关体验,快速对接服务发现、实现服务路由、安全控制、流量治理等功能,让用户专注于业务应用的开发与维护。CSE应用网关的可观测能力,与华为云AOM、 APM 、LTS等服务预集成,提供监控告警、调用链路分析、访问日志查询等功能。 应用网关当前仅在华东-上海一、西南-贵阳一支持公测。
共100000条