云服务器内容精选

  • 集中式工作流缺点 依赖中央仓库:所有的代码都依赖于中央仓库,如果中央仓库出现问题,整个团队的开发工作都将受到影响。 代码冲突:由于所有的代码都在中央仓库中进行管理,团队成员在进行代码修改时容易发生冲突,需要通过手动解决冲突来保证代码的正确性。 需要权限管理:由于所有的代码都在中央仓库中进行管理,需要对团队成员的权限进行管理,以保证代码的安全性和可靠性。 不适合大型项目团队:对于大型项目团队而言,集中式工作流可能会导致中央仓库的管理和维护变得困难,影响开发效率和代码质量。
  • 集中式工作流流程 创建代码仓库。Repo目前支持新建自定义代码仓库、按模板新建代码仓库、Fork已有的代码仓库,也支持从本地导入已有的代码仓库、导入Git平台的代码仓、导入SVN平台的代码仓。 开发者克隆代码仓。Repo目前支持使用SSH密钥克隆代码仓到本地、使用HHPS协议克隆代码仓到本地。 开发者在本地创建分支并开发代码或者在线创建分支分支并开发代码。 开发者提交更改的代码文件到缓存区。Repo目前支持使用Git Bash提交代码、在Eclipse提交代码。 开发者新建合并请求。 开发者解决检视意见。 Committer合入合并请求。
  • 表/文件同步支持的数据源类型 表/文件同步可以实现表或文件级别的数据同步。 支持单表同步的数据源(已支持的数据源即可作为源端,又可作为目的端组成不同链路)如下所示: 数据仓库 :DWS、 DLI Hadoop: MRS Hive、Apache Hive、MRS HBase、MRS Hudi、OpenSource ClickHouse、Apache HDFS、Doris 对象存储:OBS 文件系统:FTP、SFTP 关系型数据库:RDS(MySQL)、RDS(PostgreSQL)、RDS(SQL Server)、RDS(达梦数据库DM)、RDS(SAP HANA)、Oracle、GBASE 创建数据连接时也支持用户使用自建的数据库,如MySQL、PostgreSQL、SQL Server、达梦数据库DM、SAP HANA,在选择界面对应的RDS(MySQL)、RDS(PostgreSQL)、RDS(SQL Server)、RDS(达梦数据库DM)、RDS(SAP HANA)即可。 非关系型数据库:MongoDB、Redis 消息系统:DMS Kafka 搜索:Elasticsearch 其他:Rest Client
  • 功能概述 数据集成的实时同步包括实时读取、转换和写入三种基础能力,通过内部定义的中间数据格式进行交互。 实时同步任务支持多种数据源同步功能。同时针对某些场景,支持整库实时同步全增量同步任务,您可以一次性实时同步多个表。 图1 原理图 表1 基本功能 功能 描述 多种数据源间的数据同步 实时同步支持多种数据源型链路组合,您可以将多种输入及输出数据源搭配组成同步链路进行数据同步。详情请参见支持的数据源。 复杂网络环境下的数据同步 支持云数据库、本地IDC、E CS 自建数据库等多种数据库的数据同步。您可以根据数据库所在网络环境,选择合适的同步解决方案来实现数据源与资源组的网络连通。在配置同步任务前,您需要确保数据集成资源组与您将同步的数据来源端与目标端网络环境已经连通,对应数据库环境与网络连通配置详情请参见:配置实时网络连接。 数据同步场景 实时同步支持单表实时增量数据同步至目标端单表、分库分表实时增量数据同步至目标端单表、整库(多表)实时增量数据同步至目标多表。 单表增量数据实时同步:支持单表实时同步。 分库分表:支持将多个来源的多个数据库的多个分表迁移到目的端的一个表中,支持灵活配置来源库来源表和目标表的映射关系。 整库增量数据实时同步:支持同时对源端多张库表批量操作。 支持将整个数据库的变化日志同步到目标端中,一般用作实时日志的收集。 支持一次性配置一个实例下多个库的多个表,一个任务中最多支持3000个目标表。 实时同步任务配置 实时同步任务配置时支持的能力如下,您无需编写代码,通过简单的任务配置即可实现单表实时同步,整库实时数据的收集。 单表增量数据实时同步 支持字段映射、附加字段、UDF转换。 分库分表 整库数据实时同步 库表名匹配规则 自动建表 为目标字段赋值 实时同步默认同名映射,将源端字段写入目标端同名字段中,未映射成功的字段将无法同步。同时,支持您为目标表新增字段并为字段赋值常量或变量。 定义DDL消息处理策略 来源数据源会包含许多DDL操作,进行实时同步时,您可以根据业务需求,对不同的DDL消息设置同步至目标端的处理策略。 实时同步任务运维 支持对同步任务设置监控报警。
  • 基本特性 实时处理集成作业为大数据开发提供了支撑,具有以下特性: 实时性:支持数据秒级迁移。 可靠性:通过异常恢复,重试等机制确保数据的一致性和准确性。 多样性: 数据源多样性:源端和目的端可供选择多种数据源,为用户提供了多种选择。 链路多样性:部分链路支持全量和增量同步,部分链路支持分库分表。 可维护性:支持作业监控和日志查看,方便运维人员进一步定位。 易用性:长界面更易操作,用户只需配置必要信息,学习成本减低。
  • 引用字符和转义字符使用示例 引用字符和转义字符使用说明: 引用字符:用于识别分割字段,默认值:英文双引号(")。 转义字符:在导出结果中如果需要包含特殊字符,如引号本身,可以使用转义字符(反斜杠 \ )来表示。默认值:英文反斜杠(\)。 假设两个quote_char之间的数据内容存在第三个quote_char,则在第三个quote_char前加上escape_char,从而避免字段内容被分割。 假设数据内容中原本就存在escape_char,则在这个原有的escape_char前再加一个escape_char,避免原来的那个字符起到转义作用。 应用示例: 在进行转储时,如果引用字符和转义字符不填,如下图所示。 下载的.csv用excel打开以后如下图所示,是分成两行的。 在转储时,如果引用字符和转义字符都填写,比如,引用字符和转义字符都填英文双引号("),则下载以后查看结果如下图所示。
  • 下载或转储脚本执行结果 脚本运行成功后,支持下载和转储SQL脚本执行结果。系统默认支持所有用户都能下载和转储SQL脚本的执行结果。如果您不希望所有用户都有该操作权限,可参考配置数据导出策略进行配置。 脚本执行完成后在“执行结果”中,单击“下载”可以直接下载CSV格式的结果文件到本地。可以在下载中心查看下载记录。 脚本执行完成后在“执行结果”中,单击“转储”可以将脚本执行结果转储为CSV和JSON格式的结果文件到OBS中,详情请参见表3。 转储功能依赖于OBS服务,如无OBS服务,则不支持该功能。 当前仅支持转储SQL脚本查询(query)类语句的结果。 DataArts Studio 的下载或转储的SQL结果中,如果存在英文逗号、换行符等这种特殊符号,可能会导致数据错乱、行数变多等的问题。 表3 转储配置 参数 是否必选 说明 数据格式 是 目前支持导出CSV和JSON格式的结果文件。 资源队列 否 选择执行导出操作的DLI队列。当脚本为DLI SQL时,配置该参数。 压缩格式 否 选择压缩格式。当脚本为DLI SQL时,配置该参数。 none bzip2 deflate gzip 存储路径 是 设置结果文件的OBS存储路径。选择OBS路径后,您需要在选择的路径后方自定义一个文件夹名称,系统将在OBS路径下创建文件夹,用于存放结果文件。 您也可以到下载中心配置默认的OBS路径地址,配置好后在转储时会默认填写。 覆盖类型 否 如果“存储路径”中,您自定义的文件夹在OBS路径中已存在,选择覆盖类型。当脚本为DLI SQL时,配置该参数。 覆盖:删除OBS路径中已有的重名文件夹,重新创建自定义的文件夹。 存在即报错:系统返回错误信息,退出导出操作。 是否导出列名 否 是:导出列名 否:不导出列名 字符集 否 UTF-8:默认字符集。 GB2312:当导出数据中包含中文字符集时,推荐使用此字符集。 GBK:国家标准GB2312基础上扩容后兼容GB2312的标准。 引用字符 否 仅在数据格式为csv格式时支持配置引用字符。 引用字符在导出作业结果时用于标识文本字段的开始和结束,即用于分割字段。 仅支持设置一个字符。默认值是英文双引号(")。 主要用于处理包含空格、特殊字符或与分隔符相同字符的数据。 关于“引用字符”和“转义字符”的使用示例请参考引用字符和转义字符使用示例。 转义字符 否 仅在数据格式为csv格式时支持配置转义字符。 在导出结果中如果需要包含特殊字符,如引号本身,可以使用转义字符(反斜杠 \ )来表示。 仅支持设置一个字符。默认值是英文反斜杠(\)。 常用转义字符的场景: 假设两个引用字符之间的数据内容存在第三个引用字符,则在第三个引用字符前加上转义字符,从而避免字段内容被分割。 假设数据内容中原本就存在转义字符,则在这个原有的转义字符前再加一个转义字符,避免原来的那个字符起到转义作用。 关于“引用字符”和“转义字符”的使用示例请参考引用字符和转义字符使用示例。 相对于直接查看SQL脚本的执行结果,通过下载和转储能够支持获取更多的执行结果。各类SQL脚本查看、下载、转储支持的规格如表4所示。 表4 SQL脚本支持查看/下载/转储规格 SQL类型 在线查看最大结果条数 下载最大结果条数 转储最大结果 DLI 10000 1000 无限制 Hive 1000 1000 10000条或3MB DWS 1000 1000 10000条或3MB Spark 1000 1000 10000条或3MB RDS 1000 1000 不支持 Presto 1000 下载结果直接转储至OBS,条数无限制。 无限制 ClickHouse 1000 1000 10000条或3MB HetuEngine 1000 1000 10000条或3MB Impala 1000 1000 10000条或3MB Doris 1000 1000 1000
  • 保存作业 作业配置完成后,请执行以下操作: 单击画布上方的“启动”,运行作业。运行完成后,查看执行结果时,双击任意一行的一个字段,可以查看该行的结果详情,支持复制字段名称。 执行结果最多显示1000条数据;执行结果的大小不超过3MB,若超过3MB结果会被截断。 运行完成后,单击画布上方的保存按钮,保存作业的配置信息。 保存后,在右侧的版本里面,会自动生成一个保存版本,支持版本回滚。保存版本时,一分钟内多次保存只记录一次版本。对于中间数据比较重要时,可以通过“新增版本”按钮手动增加保存版本。
  • 配置作业参数 单击编辑器右侧的“参数”,展开配置页面,配置如表4所示的参数。 表4 作业参数配置 功能 说明 变量 新增 单击“新增”,在文本框中填写作业参数的名称和参数值。 参数名称 名称只能包含字符:英文字母、数字、中划线和下划线。 参数值 字符串类的参数直接填写字符串,例如:str1 数值类的参数直接填写数值或运算表达式。 参数配置完成后,在作业中的引用格式为:${参数名称} 编辑参数表达式 在参数值文本框后方,单击,编辑参数表达式,更多表达式请参见表达式概述。 修改 在参数名和参数值的文本框中直接修改。 掩码显示 在参数值为密钥等情况下,从安全角度,请单击将参数值掩码显示。 删除 在参数值文本框后方,单击,删除作业参数。 常量 新增 单击“新增”,在文本框中填写作业常量的名称和参数值。 参数名称 名称只能包含字符:英文字母、数字、中划线和下划线。 参数值 字符串类的参数直接填写字符串,例如:str1 数值类的参数直接填写数值或运算表达式。 参数配置完成后,在作业中的引用格式为:${参数名称} 编辑参数表达式 在参数值文本框后方,单击,编辑参数表达式,更多表达式请参见表达式概述。 修改 在参数名和参数值的文本框中直接修改,修改完成后,请保存。 删除 在参数值文本框后方,单击,删除作业常量。 工作空间环境变量 查看工作空间已配置的变量和常量。 单击“作业参数预览”页签,展开预览页面,配置如表5所示的参数。 表5 作业参数预览 功能 说明 当前时间 仅单次调度才显示。系统默认为当前时间。 事件触发时间 仅事件驱动调度才显示。系统默认为事件触发时间。 周期调度 仅周期调度才显示。系统默认为调度周期。 具体时间 仅周期调度才显示。周期调度配置的具体运行时间。 起始日期 仅周期调度才显示。周期调度的生效时间。 后N个实例 作业运行调度的实例个数。 单次调度场景默认为1。 事件驱动调度场景默认为1。 周期调度场景 当实例数大于10时,系统最多展示10个日期实例,系统会自动提示“当前参数预览最多支持查看10个实例”。 在作业参数预览中,如果作业参数配置存在语法异常情况系统会给出提示信息。 如果参数配置了依赖作业实际运行时产生的数据,参数预览功能中无法模拟此类数据,则该数据不展示。
  • 管理集群共享 专享版集群创建成功后,默认仅能在绑定的工作空间内使用。如果您需要在其他工作空间使用此集群,则可以进行集群共享,共享后在其他工作空间可查看、使用但不能管理该集群,并能将API发布至该集群。 参考访问DataArts Studio实例控制台,登录DataArts Studio管理控制台。 在DataArts Studio控制台首页,选择已购买专享版集群的工作空间的“数据服务”模块,进入数据服务页面。 在数据服务集群页面单击“集群”,进入集群列表页面。 单击集群名称,进入集群详情页面。 在集群详情页面,单击“共享管理”页签,进入共享管理页面。 图3 进入共享管理页面 单击“共享”,在弹出的窗口中勾选需要共享的工作空间后,单击“确定”完成集群共享。 图4 选择工作空间 对于已共享集群的工作空间,您可以在该工作空间内,正常查看、使用该集群。 如后续需要取消该工作空间的集群共享,则需要先下线该工作空间已在集群上发布的API,再到绑定工作空间的数据服务集群详情页面,取消共享。
  • 操作步骤 购买数据服务专享集群增量包,系统会按照您所选规格自动创建一个数据服务专享集群。 单击已开通实例卡片上的“购买增量包”。 进入购买DataArts Studio增量包页面,参见表1进行配置。 表1 购买数据服务专享版实例参数说明 参数项 说明 增量包类型 选择数据服务专享集群增量包。 计费方式 实例收费方式,当前支持“包年包月”。 工作空间 选择需要使用数据服务专享集群增量包的工作空间。例如需要在DataArts Studio实例的工作空间A中使用数据服务专享版,则此处工作空间应选择为A。集群购买成功后,即可通过在工作空间A查看到创建好的数据服务专享集群。 如果需要在其他工作空间内使用该集群,您可以在集群创建成功后,参考管理集群共享将该集群共享给其他工作空间。 可用区 选择数据服务专享集群所在的可用区。 支持单AZ和多AZ两种部署方式。推荐使用多AZ方式。 单AZ:仅可以选择1个AZ,集群节点部署在同一AZ上。 多AZ:可选择2-10个AZ,集群节点部署在不同AZ上,以提升集群的容灾能力。 详情请参见什么是可用区。 集群名称 - 集群描述 可以自定义对当前数据服务专享版集群的描述。 版本 当前数据服务专享版的集群版本。 集群规格 不同实例规格,对API数量的支持能力不同。 公网入口 开启“公网入口”,创建集群时会为集群自动绑定一个新建的弹性公网IP,后续可以通过此公网IP地址调用专享版API。该功能新建的弹性公网IP不会计入收费项。 如果您存在需要本地调用或跨网调用API的使用场景,建议开启。如果在创建集群时未开启公网入口,后续则不再支持绑定EIP。 带宽大小 可配置公网带宽范围。 虚拟私有云 DataArts Studio实例中的数据服务专享版集群所属的VPC、子网、安全组。 在相同VPC、子网、安全组中的云服务资源(如ECS),可以使用数据服务专享版实例的私有地址调用API。建议将专享版集群和您的其他关联业务配置一个相同的VPC、子网、安全组,确保网络安全的同时,方便网络配置。 VPC、子网、安全组的详细操作,请参见《虚拟私有云用户指南》。 说明: 目前专享版集群创建完成后不支持切换VPC、子网、安全组,请谨慎选择。 如果开启公网入口,安全组入方向需要放开80(HTTP)和443(HTTPS)端口的访问权限。 此处支持选择共享VPC子网,即由VPC的所有者将VPC内的子网共享给当前账号,由当前账号在购买数据服务专享版集群时选择共享VPC子网。通过共享VPC子网功能,可以简化网络配置,帮助您统一配置和运维多个账号下的资源,有助于提升资源的管控效率,降低运维成本。如何共享VPC子网,请参考《共享VPC》。 子网 安全组 企业项目 DataArts Studio专享版集群关联的企业项目。企业项目管理是一种按企业项目管理云资源的方式,具体请参见企业管理用户指南。 节点数量 - 购买时长 - 单击“立即购买”,确认规格后提交。
  • 网络环境准备 如图1所示,专享版集群创建后,资源位于资源租户区,由ELB统一对集群节点进行负载均衡。 专享版集群创建后,您可以通过如下途径访问集群API: 内网地址:内网地址为用户VPC内的终端节点IP地址,默认具备。 外网地址(可选):外网地址为绑定在ELB上的EIP地址。EIP仅在创建数据服务集群时,勾选开启公网入口,才会具备。 内网 域名 (可选):内网域名是指在VPC中生效的域名。创建集群后可通过“绑定内网域名”,输入自定义内网域名,数据服务调用DNS服务将内网域名与内网地址相关联。 公网域名(可选):公网域名是在Internet中使用公网解析的域名。创建集群后可通过“绑定公网域名”,输入已完成注册、备案的域名,数据服务调用DNS服务将公网域名与外网地址相关联。 图1 专享版集群网络架构说明 因此,为了保证专享版集群API能够被用户访问,集群创建中需要注意如下网络配置: VPC 虚拟私有云。专享版实例需要配置虚拟私有云(VPC),在同一VPC中的资源(如ECS),可以使用专享版实例的私有地址调用API。 在购买时专享版实例时,建议配置和您其他关联业务相同VPC,确保网络安全的同时,方便网络配置。 弹性公网IP 专享版实例的API如果要允许外部调用,则需要购买一个弹性公网IP,并在购买时绑定给实例,作为实例的公网入口。 安全组 安全组类似防火墙,控制谁能访问实例的指定端口,以及控制实例的通信数据流向指定的目的地址。安全组入方向规则建议按需开放地址与端口,这样可以最大程度保护实例的网络安全。 专享版实例绑定的安全组有如下要求: 入方向:如果需要从公网调用API,或从其他安全组内资源调用API,则需要为专享版实例绑定的安全组的入方向放开80(HTTP)、443(HTTPS)两个端口。 出方向:如果后端服务部署在公网,或者其他安全组内,则需要为专享版实例绑定的安全组的出方向放开后端服务地址与API调用监听端口。 如果API的前后端服务与专享版实例绑定了相同的安全组、相同的虚拟私有云,则无需专门为专享版实例开放上述端口。 路由配置 在物理机纳管场景下,如果物理机纳管网段与集群网段不一致,需要配置路由。 进入集群“基本信息”页面,单击配置路由项的“新建”按钮,新增物理机的IP地址,如图2所示。 图2 基本信息
  • 场景描述 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和内存限制过小引起任务无法正常运行。