华为云用户手册

  • 使用示例 未启用安全协议或安全协议使用PLAINTEXT的场景: importClass(com.roma.apic.livedata.client.v1.KafkaProducer); importClass(com.roma.apic.livedata.config.v1.KafkaConfig); var kafka_brokers = '192.168.0.10:26330,192.168.0.11:26330,192.168.0.12:26330' var topic = 'YourKafkaTopic' function execute(data) { var config = KafkaConfig.getConfig(kafka_brokers, null) var producer = new KafkaProducer(config) var record = producer.produce(topic, "hello, kafka.") return { offset: record.offset(), partition: record.partition(), code: 0, message: "OK" } } 安全协议使用SASL_SSL且SASL认证机制使用PLAIN的场景: importClass(com.roma.apic.livedata.client.v1.KafkaProducer); importClass(com.roma.apic.livedata.config.v1.KafkaConfig); var kafka_brokers = '192.168.0.10:26330,192.168.0.11:26330,192.168.0.12:26330' var topic = 'YourKafkaTopic' //AppKey和AppSecret为SASL_SSL认证的用户名和密码,如果对接的为MQS,则为Topic所属集成应用的Key和Secret var app_key = 'AppKey' var app_secret = 'AppSecret' function execute(data) { var config = KafkaConfig.getSaslConfig(kafka_brokers, null, app_key, app_secret) var producer = new KafkaProducer(config) var record = producer.produce(topic, "hello, kafka.") return { offset: record.offset(), partition: record.partition(), code: 0, message: "OK" } } 安全协议使用SASL_SSL或SASL_PLAINTEXT,且SASL认证机制使用SC RAM -SHA-512的场景: importClass(com.roma.apic.livedata.client.v1.KafkaProducer); importClass(com.roma.apic.livedata.config.v1.KafkaConfig); var kafka_brokers = '192.168.0.10:26330,192.168.0.11:26330,192.168.0.12:26330' var topic = 'YourKafkaTopic' function execute(data) { var config = KafkaConfig.getConfig(kafka_brokers, null); //根据实际使用的安全协议设置具体的值,SASL_SSL或SASL_PLAINTEXT config.put("security.protocol", "SASL_SSL|SASL_PLAINTEXT"); config.put("sasl.mechanism", "SCRAM-SHA-512"); //AppKey和AppSecret为SASL_SSL或SASL_PLAINTEXT认证的用户名和密码,如果对接的为MQS,则为Topic所属集成应用的Key和Secret config.put("sasl.jaas.config","org.apache.kafka.common.security.scram.ScramLoginModule required username=\"AppKey\" password=\"AppSecret\";"); var producer = new KafkaProducer(config) var record = producer.produce(topic, "hello, kafka.") return { offset: record.offset(), partition: record.partition(), code: 0, message: "OK" } }
  • 方法列表 返回类型 方法和说明 org.apache.kafka.clients.producer.RecordMetadata produce(String topic, String message) 生产消息 不能直接返回方法produce(String topic, String message),否则会导致返回信息为空。例如在使用示例中,不能直接使用“return record”句式,否则返回的信息为空。
  • URI PUT /v1/{user_id}/devices/{device_id}/gb-account 表1 路径参数 参数 是否必选 参数类型 描述 device_id 是 String 设备ID: 国标设备:由数字组成,长度为20个字符长度,由客户自行设置,其中第11-13位,必须是以下之一132(IPC)、111(DVR)、118(NVR),用来区分设备类型 user_id 是 String 用户ID:由数字组成,长度范围[15,25],获取方式参考获取user ID与下载AK/SK章节
  • 响应参数 状态码: 200 表5 响应Body参数 参数 参数类型 描述 targets Array of TargetAdd objects 添加目标ID列表 表6 TargetAdd 参数 参数类型 描述 target_id String 目标ID:目标标识符 name String 目标名称 external_target_id String 用户传入的名单库ID jpegBase64 String 图片内容,经过base64编码 result Result object 结果信息 表7 Result 参数 参数类型 描述 code String 错误编码 msg String 错误信息
  • 请求示例 批量添加目标 POST /v1/2562572829***/targets/batch-add { "device_id":"952352LWXT***", "group_id":2, "targets":[ { "name":"mark", "gender":"male", "age":24, "country":"中国", "nation":"汉", "native":"杭州", "occupation":"工人", "work_no":"124****77", "phone":"15********61", "email":"1*********@qq.com", "domicile":"杭州", "external_target_id":"10", "remark":"无", "jpegBase64":"/9j/4AAQSkZJRgABAQAAAQABAAD..."}] }
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 Access-Token 是 String 用户认证AccessToken:从获取用户北向接口认证AccessToken中获取 表3 请求Body参数 参数 是否必选 参数类型 描述 device_id 是 String 设备ID: 好望设备:大小写字母、数字组成,长度范围[8,32],可在设备外壳或者设备web页面上获取 group_id 是 Integer 目标库分组ID:非负值,从获取目标库分组接口获取,NVR默认陌生人分组不可以添加目标 targets 是 Array of AddTargetsDto objects 目标数据列表: NVR800和IVS1800:9.1以上版本支持该接口,支持批量添加,最多支持添加20个目标,NVR800的所有图片合计最大为700K,像素大小在1200*1200以内,NVR800在脱敏库中目标无法进行修改 SDC:仅支持单目标添加 storage 否 Boolean 是否保存图片:false-不保存图片,true-保存图片,默认值true,NVR800的不保存图片就会保存到脱敏名单库中,SDC和NVR800修改时该字段不生效 表4 AddTargetsDto 参数 是否必选 参数类型 描述 name 是 String 姓名:支持中英文、数字、特殊字符(_-空格),长度范围[1,128] gender 是 String 性别:枚举类型 枚举值: male 男性 female 女性 age 否 Integer 年龄:取值范围[1,255](仅NVR800支持) country 否 String 国家:支持大小写字母数字,长度范围[1,128](SDC不支持) nation 否 String 民族:支持大小写字母数字,长度范围[1,32](暂不支持) native 否 String 籍贯:支持大小写字母数字,长度范围[1,128](IVS1800不支持) occupation 否 String 职业:支持大小写字母数字,长度范围[1,128](SDC不支持) work_no 否 String 工号或身份证号之类:支持大小写数字,长度范围[1,64] phone 否 String 电话:11位纯数字(仅NVR800支持) email 否 String 邮箱:邮箱格式,***@.***(仅NVR800支持) domicile 否 String 居住地:支持大小写字母数字,长度范围[1,256](IVS1800不支持) remark 否 String 备注信息:支持大小写字母数字,长度范围[1,512](SDC不支持) jpegBase64 是 String 目标图片:经过base64编码(单个图片建议不超过50K),像素大小在1200*1200以内,支持png、jpeg、jpg格式 external_target_id 否 String 用户传入的目标id:支持大小写英文、数字、_,长度范围[1,64],NVR800不保存图片必须传external_target_id
  • 请求示例 添加国标协议设备 POST /v1/2562572829***/devices/gb/batch-add { "devices" : [ { "device_id" : "952352LWXT***", "device_name": "DEVICE01", "device_username" : "admin", "device_password" : "***", "algorithm": "MD5" } ] }
  • 响应示例 状态码: 200 OK { "failed_num" : 0, "devices" : [ { "device_id" : "952352LWXT***", "sip_server_id" : "3402000000***", "sip_server_domain" : "3402***", "sip_server_host" : "123.123.*.*", "sip_server_port" : "5060", "result" : { "code" : "IVM.0", "msg" : "Success" } } ] }
  • 响应参数 状态码: 200 表5 响应Body参数 参数 参数类型 描述 failed_num Integer 失败数量 devices Array of BatchAddGBDevicesRespItem objects 添加结果详细信息 表6 BatchAddGBDevicesRespItem 参数 参数类型 描述 device_id String 设备ID,设备唯一标识符 sip_server_id String SIP服务器ID sip_server_domain String SIP服务器域 sip_server_host String SIP服务器地址 sip_server_port String SIP服务器端口 result Result object 错误或成功信息 表7 Result 参数 参数类型 描述 code String 错误编码 msg String 错误信息
  • 请求示例 批量修改目标信息 PUT /v1/2562572829***/targets { "device_id":"952352LWXT***", "group_id":2, "targets":[ { "target_id":"2", "name":"mark", "gender":"male", "age":24, "country":"中国", "nation":"汉", "native":"杭州", "occupation":"工人", "work_no":"124****77", "phone":"15********61", "email":"1*********@qq.com", "domicile":"杭州", "remark":"无", "jpegBase64":"/9j/4AAQSkZJRgABAQAAAQABAAD..."}] }
  • 响应示例 状态码: 200 OK { "group_id" : 2, "target_ids" : [ { "result" : { "code" : "IVM.0", "msg" : "Success" }, "target_id" : "2", "external_target_id" : "1234567890123456" } ] }
  • 响应参数 状态码: 200 表5 响应Body参数 参数 参数类型 描述 group_id Integer 目标库分组ID:目标库标识符 target_ids Array of TargetResultVo objects 目标ID列表 表6 TargetResultVo 参数 参数类型 描述 target_id String 目标ID:目标标识符 result Result object 结果信息 external_target_id String 用户传入的目标ID:用户自定义的,在添加目标的时候由客户填入 表7 Result 参数 参数类型 描述 code String 错误编码 msg String 错误信息
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 Access-Token 是 String 用户认证AccessToken:从获取用户北向接口认证AccessToken中获取 表3 请求Body参数 参数 是否必选 参数类型 描述 device_id 是 String 设备ID: 好望设备:大小写字母、数字组成,长度范围[8,32],可在设备外壳或者设备web页面上获取 group_id 是 Integer 目标库分组ID:非负值,从获取目标库分组接口获取 targets 是 TargetDto object 目标数据列表: NVR800和IVS1800:9.1以上版本支持该接口,支持批量修改,最多支持修改20个目标,NVR800的所有图片合计最大为700K,NVR800在脱敏库中目标无法进行修改 SDC:仅支持单目标修改 storage 否 Boolean 是否保存图片:false-不保存图片,true-保存图片,默认值true,NVR800的不保存图片就会保存到脱敏名单库中,SDC和NVR800修改时该字段不生效 表4 TargetDto 参数 是否必选 参数类型 描述 target_id 是 String 目标ID:支持数字和-,长度范围[1,20],需要已添加目标才可以修改,可以从按索引范围获取目标ID列表、获取目标信息、按索引范围获取目标ID信息中获取 name 是 String 姓名:支持中英文、数字、特殊字符(_-空格),长度范围[1,128] gender 是 String 性别:枚举类型 枚举值: male 男性 female 女性 age 否 Integer 年龄:取值范围[1,255](仅NVR800支持) country 否 String 国家:支持大小写字母数字,长度范围[1,128](SDC不支持) nation 否 String 民族:支持大小写字母数字,长度范围[1,32](暂不支持) native 否 String 籍贯:支持大小写字母数字,长度范围[1,128](IVS1800不支持) occupation 否 String 职业:支持大小写字母数字,长度范围[1,128](SDC不支持) work_no 否 String 工号或身份证号之类:支持大小写数字,长度范围[1,64] phone 否 String 电话:11位纯数字(仅NVR800支持) email 否 String 邮箱:邮箱格式,***@.***(仅NVR800支持) remark 否 String 备注信息:支持大小写字母数字,长度范围[1,512](SDC不支持) jpegBase64 是 String 目标图片:经过base64编码(单个图片建议不超过50K),支持png、jpeg、jpg格式 domicile 否 String 居住地:支持大小写字母数字,长度范围[1,256](IVS1800不支持)
  • 场景介绍 当专属资源池中的节点含有GPU/Ascend资源时,用户基于自己的业务,可能会有自定义GPU/Ascend驱动的需求,ModelArts面向此类客户提供了自助升级专属资源池GPU/Ascend驱动的能力。 驱动升级有两种升级方式:安全升级、强制升级。 安全升级:不影响正在运行的业务,开始升级后会先将节点进行隔离(不能再下发新的作业),待节点上的存量作业运行完成后再进行升级,因需要等待作业完成,故升级周期可能比较长。 强制升级:忽略资源池中正在运行的作业,直接进行驱动升级,可能会导致运行中作业失败,需谨慎选择。
  • 管理Lite Cluster节点池 为帮助您更好地管理Kubernetes集群内的节点,ModelArts支持通过节点池来管理节点。一个节点池包含一个节点或多个节点,能通过节点池批量配置一组节点。 在资源池详情页,单击“节点池管理”页签,您可以创建、更新和删除节点池。 图1 节点池管理 创建节点池 当您需要更多节点池时,可单击“创建节点池”新增节点池,相关参数请参见Step6 购买Cluster资源。 节点池配置弹性伸缩 根据Pod调度状态及资源使用情况对节点池的节点进行自动扩容缩容,同时支持多可用区、多实例规格、指标触发和周期触发等多种伸缩模式,满足不同的节点伸缩场景。 节点池使用弹性伸缩功能前,需要安装集群弹性引擎插件,更多详情请见集群弹性引擎。 查看节点列表 当您想查看某一节点池下的节点相关信息,可单击操作列的“节点列表”,可查询节点的名称、规格及可用区。 更新节点池 当您想更新节点池配置时,可单击操作列的“更新”,相关参数介绍请参见Step6 购买Cluster资源,对配置进行更新操作。 需注意,更新节点池配置时,高级配置仅对新增的节点生效,其中“存量节点标签及污点”、“存量节点资源标签”支持对存量节点同步改动(勾选对应的复选框)。 节点池中更新的“资源标签”信息会同步到节点上。 图2 更新节点池 删除节点池 当有多个节点池时,支持删除节点池,此时在操作列会显示“删除”按钮,单击“删除”后输入“DELETE”并单击“确定”即可。 每个资源池至少需要有一个节点池,当只有一个节点池时不支持删除。 查看节点池的存储配置 在节点池管理的更新页面,可以查看该节点池配置的系统盘、容器盘或数据盘的磁盘类型、大小、数量、写入模式、容器引擎空间大小、挂载路径磁盘配置等参数。 在Lite资源池的扩缩容页面,也可以查看节点池的存储配置信息。 查找搜索节点池 在节点池管理页面的搜索栏中,支持通过节点池名称、规格 、容器引擎空间大小、可用区等关键字搜索节点池。 设置节点池列表显示信息 在节点池管理页面中,单击右上角的设置图标,支持对节点池列表中显示的信息进行自定义。 父主题: Lite Cluster资源管理
  • 弹性云服务器的对应的软件配套版本 表2 弹性云服务器 类型 卡类型 操作系统 适用范围 依赖插件 NPU ascend-snt3p-300i 操作系统:Huawei Cloud EulerOS 2.0 64bit 架构类型:x86、arm 集群类型:CCE Standard 集群版本:v1.23(v1.23.5-r0及以上版本)|v1.25|v1.28|v1.31(推荐) 集群规模:50|200|1000|2000 集群网络模式:容器隧道网络|VPC 集群转发模式:iptables|ipvs 操作系统:EulerOS 2.9 架构类型:x86 集群类型:CCE Standard、 CCE Turbo 集群版本:v1.23(v1.23.5-r0及以上版本)|v1.25|v1.28(推荐) 集群规模: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|v1.28|v1.31(推荐) 集群规模: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|v1.28|v1.31(推荐) 集群规模:50|200|1000|2000 集群网络模式:容器隧道网络|VPC 集群转发模式:iptables|ipvs gp-ant1-pcie40 操作系统:EulerOS 2.9 架构类型:x86 集群类型:CCE Standard 集群版本:v1.23|v1.25|v1.28|v1.31(推荐) 集群规模:50|200|1000|2000 集群网络模式:容器隧道网络|VPC 集群转发模式:iptables|ipvs gp-tnt004 操作系统:EulerOS 2.9 架构类型:x86 集群类型:CCE Standard 集群版本:v1.23|v1.25|v1.28|v1.31(推荐) 集群规模:50|200|1000|2000 集群网络模式:容器隧道网络|VPC 集群转发模式:iptables|ipvs
  • 驱动和插件版本与CCE集群版本适配关系 表3 驱动与CCE集群版本适配关系 类别 插件名称 插件版本 适配CCE集群版本 适用范围、约束 插件功能描述 npuDriver npu-driver 7.1.0.9.220-23.0.6(推荐) 7.1.0.7.220-23.0.5 7.1.0.5.220-23.0.3 无约束 NPU(snt9b) 用于升级、回滚npu驱动。 gpuDriver gpu-driver 515.65.01(推荐) 510.47.03 470.182.03 470.57.02 无约束 GPU 用于升级、回滚gpu驱动,插件依赖gpu-beta版本。 表4 插件版本与CCE集群版本适配关系 插件名称 插件版本 适配CCE集群版本 适用范围、约束 插件功能描述 gpu-beta 2.7.63(推荐) v1.(28|31).* GPU 支持在容器中使用GPU显卡的设备管理插件。 2.6.4 v1.28.* 2.0.48 v1.(23|25).* huawei-npu 2.1.53(推荐) v1.(23|25|28|31).* NPU 支持容器里使用huawei NPU设备的管理插件。 2.1.22 v1.(23|25|28).* volcano 1.16.8(推荐) v1.(23|25|28|31).* NPU 基于Kubernetes的批处理平台。 1.15.8 v1.(23|25|28).* os-node-agent 7.0.0 无约束 无约束 OS插件,用于故障检测。 icagent default CCE默认安装当前适配版本 无约束 CCE基础组件,用于日志和监控。
  • 裸金属服务器的对应的软件配套版本 表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|v1.28|v1.31(推荐) 集群规模: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|v1.28|v1.31(推荐) 集群规模: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|v1.28(推荐) 集群规模: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|Turbo 集群版本:v1.23|v1.25|v1.28|v1.31(推荐) 集群规模: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|Turbo 集群版本:v1.23|v1.25|v1.28|v1.31(推荐) 集群规模: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|v1.28|v1.31(推荐) 集群规模: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) 是一种高性能计算机网络通信协议,专为高性能计算和数据中心互连设计。
  • CCE集群维护策略说明 ModelArts Lite Cluster使用的CCE集群归属于用户,用户拥有对CCE集群的完全控制权。 如果您的Lite Cluster使用了EOS的CCE集群,应遵照CCE发布的生命周期策略,尽快升级到ModelArts推荐的CCE版本。 关于如何升级CCE集群,请参见CCE集群升级指导。 关于CCE集群版本策略,请参见CCE集群版本公告。 如果您在LiteCluster场景遇到CCE集群相关的技术问题,请通过提交工单联系CCE技术支持进行问题的排查和解决。
  • 配置流程 图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和内存限制过小引起任务无法正常运行。
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全