华为云用户手册

  • 示例 使用环境变量设置以下信息:安装文件的目录、存储输出的位置、存储连接和日志记录设置等。这些设置与应用程序逻辑解耦,在需要变更设置时,无需更新函数代码。 在如下函数代码片段中,参数“obs_output_bucket”为图片处理后存储地址。 def handler(event, context): srcBucket, srcObjName = getObsObjInfo4OBSTrigger(event) obs_address = context.getUserData('obs_address') outputBucket = context.getUserData('obs_output_bucket') if obs_address is None: obs_address = '{obs_address_ip}' if outputBucket is None: outputBucket = 'casebucket-out' ak = context.getAccessKey() sk = context.getSecretKey() # download file uploaded by user from obs GetObject(obs_address, srcBucket, srcObjName, ak, sk) outFile = watermark_image(srcObjName) # 将转换后的文件上传到新的obs桶中 PostObject (obs_address, outputBucket, outFile, ak, sk) return 'OK' 通过设置环境变量obs_output_bucket,可以灵活设置存储输出图片的OBS桶。 图2 环境变量
  • 域名 如何提交备案 2019年4月22日前的网站,如果一个网站下存在 多个域名 ,需要执行“添加域名”操作,将域名添加至备案的网站下。 2019年4月22日起一个网站只能提交一个域名,如多域名备案,在填写完一个网站信息后,单击“保存并继续添加网站”。具体位置如下: 填写主体信息,并单击“下一步,填写网站信息”。 填写网站信息,然后将页面滑动至最下方,单击“保存并继续添加网站”。 图1 保存并继续添加网站 继续添加网站域名信息,添加完成后,单击“下一步,上传资料”。 网站备案的域名个数限制优先以管局规定为准。部分管局要求每次只能备案1个网站/域名(如湖南、湖北),该域名备案通过后,可继续提交其他域名的备案申请。 如果单击“保存并继续添加网站”时,系统提示“一个订单中最多只能添加1个网站”或“订单中能添加的网站个数已达上限”,说明当前省份的管局只允许添加1个网站,或您添加的网站个数已达到该省份的管局要求。 图2 错误 部分管局(如:上海、广东和陕西等)要求域名超过一定数量时需要到管局现场核验或邮寄域名证书等。 父主题: 备案域名FAQ
  • 奖励规则 使用包年包月弹性云服务器的客户,华为云将根据客户提交ICP备案初审的时间至网站或APP通过管局审核备案完成的时间,相应的免费延长对应相同时长的用于办理备案的弹性云服务器的服务期限(延长的该服务期限,以下简称“赠送时长”),该赠送时长不能转移给其他弹性云服务器。 赠送时长不超过 30 天。 在任何情况下,赠送时长不能折抵服务费用。 备案成功后系统自动延长对应弹性云服务器的赠送时长(不包含云服务器绑定的云硬盘、带宽、弹性公网IP等资源)。
  • 常见问题 问:一台弹性云服务器已经享受过“备案多久送多久”奖励,使用该服务器再次提交备案时,还能再次享受吗? 答:不能,同一台弹性云服务器只能享受一次赠送时长,不能重复享受。 问:在备案成功前,弹性云服务器已到期,备案成功后还能享受“备案多久送多久”吗? 答:弹性云服务器到期,您将无法享受赠送时长,请及时续费,确保您的服务器在有效期内。 问:若备案过程中退订更换了新的弹性云服务器,还能享受“备案多久送多久”吗? 答:不能,退订属于办理备案的弹性云服务器服务提前终止,不能享受赠送时长。 问:享受了备案赠送时长的弹性云服务器,申请退订,赠送时长是否能折抵费用退到华为云账户? 答:不能,赠送时长是华为云为您备案成功的弹性云服务器免费延长的服务时长,不能折抵服务费用。 关于备案多久送多久奖励规则,如有疑问请提交备案类工单咨询,我们将竭诚为您服务。
  • 奖励对象 您办理备案的须为包年/包月计费的华为云弹性云服务器,且每台弹性云服务器仅限享受本规则规定的赠送时长一次。 您提交备案的资源须通过管局审核备案完成,并且是该弹性云服务器提供服务的第一个通过管局审核的资源,备案类型须为新增备案、新增互联网信息服务和新增接入。 资源不备案、中途放弃备案等未备案完成的不能参与该备案奖励。 在备案过程中,您的弹性云服务器如服务提前终止(包括但不限于提前退订服务等),或服务期届满到期不续费,无法享受该备案奖励。 云市场产品、含有云市场产品或非自营产品的任何套餐、免费领取服务器、按需计费的云服务器、软件开发套餐产品、专属云等,均不参与该备案奖励。 存在违法违规行为,或违反《华为云用户协议》、《可接受的使用政策》等的华为云账号或服务器,无法享受该备案奖励。
  • 新增备案 新增备案,即新增网站或者APP备案。 新增互联网信息服务(原备案在华为云):主体已在华为云办理过备案,且已经备案成功,现要新增互联网信息服务,则需进行新增互联网信息服务(原备案在华为云)操作。 新增互联网信息服务(原备案不在华为云):主体没有在华为云办理过备案,而是在其他接入商办理的备案,且已经备案成功。现需要在华为云办理新增互联网信息服务,则需要进行新增互联网信息服务(原备案不在华为云)操作。
  • 常见问题 问:一台弹性云服务器已经享受过“备案多久送多久”奖励,使用该服务器再次提交备案时,还能再次享受吗? 答:不能,同一台弹性云服务器只能享受一次赠送时长,不能重复享受。 问:在备案成功前,弹性云服务器已到期,备案成功后还能享受“备案多久送多久”吗? 答:弹性云服务器到期,您将无法享受赠送时长,请及时续费,确保您的服务器在有效期内。 问:若备案过程中退订更换了新的弹性云服务器,还能享受“备案多久送多久”吗? 答:不能,退订属于办理备案的弹性云服务器服务提前终止,不能享受赠送时长。 问:享受了备案赠送时长的弹性云服务器,申请退订,赠送时长是否能折抵费用退到华为云账户? 答:不能,赠送时长是华为云为您备案成功的弹性云服务器免费延长的服务时长,不能折抵服务费用。 关于备案多久送多久奖励规则,如有疑问请提交备案类工单咨询,我们将竭诚为您服务。
  • 奖励规则 使用包年包月弹性云服务器的客户,华为云将根据客户提交ICP备案初审的时间至网站或APP通过管局审核备案完成的时间,相应的免费延长对应相同时长的用于办理备案的弹性云服务器的服务期限(延长的该服务期限,以下简称“赠送时长”),该赠送时长不能转移给其他弹性云服务器。 赠送时长不超过 30 天。 在任何情况下,赠送时长不能折抵服务费用。 备案成功后系统自动延长对应弹性云服务器的赠送时长(不包含云服务器绑定的云硬盘、带宽、弹性公网IP等资源)。
  • 奖励对象 您办理备案的须为包年/包月计费的华为云弹性云服务器,且每台弹性云服务器仅限享受本规则规定的赠送时长一次。 您提交备案的资源须通过管局审核备案完成,并且是该弹性云服务器提供服务的第一个通过管局审核的资源,备案类型须为新增备案、新增互联网信息服务和新增接入。 资源不备案、中途放弃备案等未备案完成的不能参与该备案奖励。 在备案过程中,您的弹性云服务器如服务提前终止(包括但不限于提前退订服务等),或服务期届满到期不续费,无法享受该备案奖励。 云市场产品、含有云市场产品或非自营产品的任何套餐、免费领取服务器、按需计费的云服务器、软件开发套餐产品、专属云等,均不参与该备案奖励。 存在违法违规行为,或违反《华为云用户协议》、《可接受的使用政策》等的华为云账号或服务器,无法享受该备案奖励。
  • 什么情况下需要提交ICP备案?我应该在哪里提交? 如果您是在中国大陆购买的服务器,则需要在服务器提供商处提交ICP备案,且备案主体信息需要与域名实名认证信息保持一致。 具体可参考以下情形: 表1 ICP备案场景参考 服务器购买地 是否需要ICP备案 示例 中国大陆 是 用户在华为云华北-北京四区域购买了一台服务器,则用户需要在华为云进行ICP备案。 说明: 如果用户的域名是在非中国大陆地区注册,则需要先将域名迁移到中国大陆后再进行ICP备案。 非中国大陆 否 用户在华为云中国-香港区域购买了服务器,则不需要进行ICP备案。
  • 不备案的影响 对于使用中国大陆节点服务器提供互联网信息服务的用户,需要在取得备案号后才能进行网站访问或APP使用,否则会被阻断。 如果您没有提交过ICP备案,需要将域名解析至华为云购买的中国大陆服务器,请登录华为云备案管理系统,提交备案相关资料,办理ICP备案。 如果您已在其他接入商(即服务器提供商)处完成ICP备案并获取备案号,需要将域名解析至华为云购买的中国大陆服务器,请登录华为云备案管理系统,办理接入备案。 图1 阻断
  • 模型训练使用流程 AI模型开发的过程,称之为Modeling,一般包含两个阶段: 开发阶段:准备并配置环境,调试代码,使代码能够开始进行深度学习训练,推荐在ModelArts开发环境中调试。 实验阶段:调整数据集、调整超参等,通过多轮实验,训练出理想的模型,推荐在ModelArts训练中进行实验。 两个过程可以相互转换。如开发阶段代码稳定后,则会进入实验阶段,通过不断尝试调整超参来迭代模型;或在实验阶段,有一个可以优化训练的性能的想法,则会回到开发阶段,重新优化代码。 图1 模型开发过程 ModelArts提供了模型训练的功能,方便您查看训练情况并不断调整您的模型参数。您还可以基于不同的数据,选择不同规格的资源池用于模型训练。 请参考以下指导在ModelArts Standard上训练模型。 图2 ModelArts Standard模型训练流程 表1 Standard模型训练流程 操作任务 子任务 说明 准备工作 准备训练代码 模型训练必备要素包括训练代码、训练框架、训练数据。 训练代码包含训练作业的启动文件或启动命令、训练依赖包等内容。 当使用预置框架创建训练作业时,训练代码的开发规范可以参考开发用于预置框架训练的代码。 当使用 自定义镜像 创建训练作业时,训练代码的开发规范可以参考开发用于自定义镜像训练的代码。 准备训练框架(即训练镜像) 模型训练有多种训练框架来源,具体可以参考准备模型训练镜像。 ModelArts Standard平台提供了模型训练常用的预置框架,可以直接使用。 当预置框架不满足训练要求时,支持用户构建自定义镜像用于训练。 准备训练数据 训练数据除了训练数据集,也可以是预测模型。在创建训练作业前,需要先准备好训练数据。 当训练数据可以直接使用,无需二次处理时,可以直接将数据上传至OBS桶。在创建训练作业时,训练的输入参数位置可以直接填写OBS桶路径。 当训练数据集的数据未标注或者需要进一步的数据预处理,可以先将数据导入ModelArts数据管理模块进行数据预处理。在创建训练作业时,训练的输入参数位置可以选择数据管理模块的数据集。 创建调试训练作业 调试训练作业 模型训练前,一般会先对代码进行调试,ModelArts提供多种方式创建调试训练作业。 ModelArts提供了云化版本的JupyterLab,无需关注安装配置,即开即用。 ModelArts也提供了本地IDE的方式开发模型,通过开启SSH远程开发,本地IDE可以远程连接到调试训练作业中,进行调试和运行代码。本地IDE方式不影响用户的编码习惯,并且调试完成的代码可以零成本直接创建生产训练作业。支持的本地IDE请参考使用PyCharm ToolKit创建并调试训练作业。 创建算法 创建算法 创建生产训练作业之前,需要先准备算法,可以是用户自己准备的算法,也可以使用从AI Gallery订阅的算法。 创建生产训练作业 训练作业基础功能 ModelArts Standard支持通过Console控制台的可视化界面创建训练作业,创建时基于算法来源和训练框架又区分多种创建方式,具体请参见表2。 ModelArts Standard也支持通过调用API接口创建训练作业,请参见以PyTorch框架创建训练作业。 训练作业进阶功能 ModelArts Standard还支持以下训练进阶功能,例如: 增量训练 分布式训练 训练加速 训练高可靠性 查看训练结果和日志 查看训练作业详情 训练作业运行中或运行结束后,可以在训练作业详情页面查看训练作业的参数设置,训练作业事件等。 查看训练作业日志 训练日志用于记录训练作业运行过程和异常信息,可以通过查看训练作业日志定位作业运行中出现的问题。 表2 训练作业的创建方式介绍 创建方式 适用场景 使用预置框架创建训练作业 如果您已在本地使用一些常用框架完成算法开发,您可以选择常用框架,创建训练作业来构建模型 使用自定义镜像创建训练作业 如果您开发算法时使用的框架并不是常用框架,您可以将算法构建为一个自定义镜像,通过自定义镜像创建训练作业。 使用已有算法创建训练作业 算法管理中,管理了用户自己创建的算法和AI Gallery订阅的算法,您可以使用算法管理中的算法,快速创建训练作业,构建模型。 使用订阅算法创建训练作业 AI Gallery中提供了现成的算法,供用户使用,您可以直接订阅AI Gallery中的算法,快速创建训练作业,构建模型。 父主题: 使用ModelArts Standard训练模型
  • 创建模型操作步骤 登录ModelArts管理控制台,在左侧导航栏中选择“模型管理”,进入模型列表页面。 单击左上角的“创建模型”,进入“创建模型”页面。 在“创建模型”页面,填写相关参数。 填写模型基本信息,详细参数说明请参见表1。 表1 模型基本信息参数说明 参数名称 说明 名称 模型名称。支持1~64位可见字符(含中文),名称可以包含字母、中文、数字、中划线、下划线。 版本 设置所创建模型的版本。第一次导入时,默认为0.0.1。 说明: 模型创建完成后,可以通过创建新版本,导入不同的元模型进行调优。 描述 模型的简要描述。 填写元模型来源及其相关参数。当“元模型来源”选择“从训练中选择”时,其相关的参数配置请参见表2。 图1 从训练中选择元模型 表2 元模型来源参数说明 参数 说明 “元模型来源” 选择“从训练中选择”。 在“选择训练作业”右侧下拉框中选择当前账号下已完成运行的训练作业。 “动态加载”:用于实现快速部署和快速更新模型。如果勾选动态加载,则模型文件和运行时依赖仅在实际部署时拉取。当单个模型文件大小超过5GB时,必须配置“动态加载”。 “AI引擎” 元模型使用的推理引擎,选择训练作业后会自动匹配。 “推理代码” 推理代码自定义模型的推理处理逻辑。显示推理代码URL,您可以直接复制此URL使用。 “运行时依赖” 罗列选中模型对环境的依赖。例如依赖“tensorflow”,安装方式为“pip”,其版本必须为1.8.0及以上版本。 “模型说明” 为了帮助其他模型开发者更好的理解及使用您的模型,建议您提供模型的说明文档。单击“添加模型说明”,设置“文档名称”及其“URL”。模型说明最多支持3条。 “部署类型” 选择此模型支持部署服务的类型,部署上线时只支持部署为此处选择的部署类型,例如此处只选择在线服务,那您导入后只能部署为在线服务。当前支持“在线服务”、“批量服务”和“边缘服务”。 确认信息填写无误,单击“立即创建”,完成模型的创建。 在模型列表中,您可以查看刚创建的模型及其对应的版本。当模型状态变更为“正常”时,表示模型导入成功。在此页面,您还可以创建新版本、快速部署服务、发布模型等操作。
  • 场景描述 目标:构建安装如下软件的容器镜像,并在ModelArts平台上使用Ascend规格资源运行训练作业。 ubuntu-18.04 cann-6.3.RC2 (商用版本) python-3.7.13 mindspore-2.1.1 本教程以cann-6.3.RC2.、mindspore-2.1.1为例介绍。 本示例仅用于示意Ascend容器镜像制作流程,且在匹配正确的Ascend驱动/固件版本的专属资源池上运行通过。
  • Step2 准备脚本文件并上传至OBS中 准备本案例所需训练脚本mindspore-verification.py文件和Ascend的启动脚本文件(共5个)。 训练脚本文件具体内容请参见训练mindspore-verification.py文件。 Ascend的启动脚本文件包括以下5个,具体脚本内容请参见Ascend的启动脚本文件。 run_ascend.py common.py rank_table.py manager.py fmk.py mindspore-verification.py和run_ascend.py脚本文件在创建训练作业时的“启动命令”参数中调用,具体请参见启动命令。 run_ascend.py脚本运行时会调用common.py、rank_table.py、manager.py、fmk.py脚本。 上传训练脚本mindspore-verification.py文件至OBS桶的“obs://test-modelarts/ascend/demo-code/”文件夹下。 上传Ascend的启动脚本文件(共5个)至OBS桶的“obs://test-modelarts/ascend/demo-code/run_ascend/”文件夹下。
  • Step5 在ModelArts上创建Notebook并调试 将上传到SWR上的镜像注册到ModelArts的镜像管理中。 登录ModelArts管理控制台,在左侧导航栏中选择“镜像管理 ”,单击“注册镜像”,根据界面提示注册镜像。注册后的镜像可以用于创建Notebook。 在Notebook中使用自定义镜像创建Notebook并调试,调试成功后,保存镜像。 在Notebook中使用自定义镜像创建Notebook操作请参见基于自定义镜像创建Notebook实例。 保存Notebook镜像操作请参见保存Notebook镜像环境。 已有的镜像调试成功后,再使用ModelArts训练模块训练作业。
  • 训练mindspore-verification.py文件 mindspore-verification.py文件内容如下: import os import numpy as np from mindspore import Tensor import mindspore.ops as ops import mindspore.context as context print('Ascend Envs') print('------') print('JOB_ID: ', os.environ['JOB_ID']) print('RANK_TABLE_FILE: ', os.environ['RANK_TABLE_FILE']) print('RANK_SIZE: ', os.environ['RANK_SIZE']) print('ASCEND_DEVICE_ID: ', os.environ['ASCEND_DEVICE_ID']) print('DEVICE_ID: ', os.environ['DEVICE_ID']) print('RANK_ID: ', os.environ['RANK_ID']) print('------') context.set_context(device_target="Ascend") x = Tensor(np.ones([1,3,3,4]).astype(np.float32)) y = Tensor(np.ones([1,3,3,4]).astype(np.float32)) print(ops.add(x, y))
  • Step1 创建OBS桶和文件夹 在OBS服务中创建桶和文件夹,用于存放样例数据集以及训练代码。如下示例中,请创建命名为“test-modelarts”的桶,并创建如表1所示的文件夹。 创建OBS桶和文件夹的操作指导请参见创建桶和新建文件夹。 请确保您使用的OBS与ModelArts在同一区域。 表1 OBS桶文件夹列表 文件夹名称 用途 obs://test-modelarts/ascend/demo-code/ 用于存储Ascend训练脚本文件。 obs://test-modelarts/ascend/demo-code/run_ascend/ 用于存储Ascend训练脚本的启动脚本。 obs://test-modelarts/ascend/log/ 用于存储训练日志文件。
  • 管理工作空间配额 工作空间创建成功后,可以查看配额信息或修改配额值。 在ModelArts管理控制台的左侧导航栏中,选择“工作空间”进入工作空间列表。 在工作空间列表,单击操作列的“配额管理”进入工作空间详情页。 在配额信息页面可以查看工作空间设置的配额值、已用的配额、最后修改时间等配额信息。 单击配额信息右侧的“修改配额”可以修改配额值。配置值的配置说明请参见表2。 表2 配额信息 配额名称 配额值说明 单位 自动学习(预测分析)训练时长 默认无限制,支持设置1~60000。 分钟 自动学习(图像分类、物体检测、声音分类)训练时长 默认无限制,支持设置1~60000。 分钟 训练作业GPU规格训练时长(单张Pnt1单节点为统计基础单元) 默认无限制,支持设置1~60000。 分钟 训练作业CPU规格训练时长(单核单节点为统计基础单元) 默认无限制,支持设置1~60000。 分钟 可视化作业使用时长 默认无限制,支持设置1~60000。 分钟 开发环境CPU规格使用时长(单核为统计基础单元) 默认无限制,支持设置1~60000。 分钟 开发环境GPU规格使用时长(单张Pnt1为统计基础单元) 默认无限制,支持设置1~60000。 分钟 推理服务CPU规格使用时长(单节点为统计基础单元) 默认无限制,支持设置1~60000。 分钟 推理服务GPU规格使用时长(单节点为统计基础单元) 默认无限制,支持设置1~60000。 分钟 训练作业CPU规格训练核数 默认无限制,支持设置1~10000。 核 训练作业GPU规格训练卡数 默认无限制,支持设置1~1000。 卡 训练作业 RAM 规格训练内存大小 默认无限制,支持设置1~100000。 GB 智能标注GPU规格使用时长 默认无限制,支持设置1~60000。 分钟 工作空间的配额值修改完成后,单击“提交修改”,当“配额值”数据刷新表示修改成功。
  • 删除工作空间 当不需要使用工作空间时,支持删除工作空间。工作空间删除后会默认清理该工作空间下所有资源。其中,默认工作空间“default”不支持删除。 删除操作无法恢复,请谨慎操作。 在ModelArts管理控制台的左侧导航栏中,选择“工作空间”进入工作空间列表。 在工作空间列表,单击操作列的“删除”,在删除工作空间弹窗中确认待删除的工作空间信息以及该工作空间下将被一起删除的资源,确认无误后,输入“DELETE”,单击“确定”,工作空间的状态变为“删除中”,待资源清理完成,该工作空间会从列表删除。
  • 背景信息 ModelArts的用户需要为不同的业务目标开发算法、管理和部署模型,此时可以创建多个工作空间,把不同应用开发过程的输出内容划分到不同工作空间中,便于管理和使用。 基于工作空间可以实现资源逻辑隔离、资源配额管理、细粒度鉴权和资源清理能力。工作空间组件可以将ModelArts各类资源整合,以工作空间体现给企业项目管理服务。 工作空间支持3种访问控制: PUBLIC:租户(主账号和所有子账号)内部公开访问。 PRIVATE:仅创建者和主账号可访问。 INTERNAL:创建者、主账号、指定 IAM 子账号可访问当授权类型为INTERNAL时需要指定可访问的子账号的账号名,可选择多个。 每个账号每个IAM项目都会分配1个默认工作空间,默认工作空间的访问控制为PUBLIC。 通过工作空间的访问控制能力,可限制仅允许部分人访问对应的工作空间。通过此功能可实现类似如下场景: 教育场景:老师可给每个学生分配1个INTERNAL的工作空间并且限制该工作空间被指定学生访问,这样可使得学生可独立完成在ModelArts上的实验。 企业场景:管理者可创建用于生产任务的工作空间并限制仅让运维人员使用,用于日常调试的工作空间并限制仅让开发人员使用。通过这种方式让不同的企业角色只能在指定工作空间下使用资源。
  • 创建工作空间 登录ModelArts管理控制台。 在左侧导航栏中,选择“工作空间”进入工作空间列表。 单击“创建工作空间”,进入创建页面。 表1 创建工作空间 参数名称 说明 工作空间名称 必填,工作空间的名称。 支持4~64位可见字符,名称可以包含字母、中文、数字、中划线(-)或下划线(_)。 描述 工作空间的简介。支持0~256位字符。 企业项目 必填,选择绑定的企业项目。当没有合适的企业项目时,可以单击“新建企业项目”跳转到企业项目管理页面,创建新的企业项目再绑定。 企业项目是一种云资源管理方式,企业项目管理服务提供统一的云资源按项目管理,以及项目内的资源管理、成员管理。 授权类型 必填,选择工作空间的访问权限。 “PUBLIC”:租户(主账号和所有子账号)内部公开访问。 “PRIVATE”:仅创建者和主账号可访问。 “INTERNAL”:创建者、主账号、指定的子账号可访问。当授权类型为INTERNAL时,需要配置“授权对象类型”和“授权对象”指定可访问的子账号。 当“授权对象类型”选择“IAM子用户”时,“授权对象”选择指定的IAM子用户,可选择多个。 当“授权对象类型”选择“联邦用户”时,“授权对象”输入联邦用户的用户名或用户ID,支持配置多个。 当“授权对象类型”选择“委托用户”时,“授权对象”选择委托名称,可选择多个。 工作空间参数配置完成后,单击“立即创建”完成创建任务。
  • 后续操作 当创建训练作业的参数配置完成后,单击“提交”,在信息确认页面单击“确定”,提交创建训练作业任务。 训练作业一般需要运行一段时间,前往训练作业列表,可以查看训练作业的基本情况。 在训练作业列表中,刚创建的训练作业状态为“等待中”。 当训练作业的状态变为“已完成”时,表示训练作业运行结束,其生成的模型将存储至对应的“输出”目录中。 当训练作业的状态变为“运行失败”或“异常”时,可以单击训练作业的名称进入详情页面,通过查看日志等手段处理问题。 训练作业运行过程中将按照选择的资源进行计费。
  • (可选)选择训练模式 当训练作业的算法框架选用的是预置框架的MindSpore类引擎、资源池类型选用的是Ascend资源时,则支持选择训练模式。ModelArts提供了3种训练模式供用户选择,支持根据实际场景获取不同的诊断信息。 普通模式:默认训练场景。 高性能模式:最小化调测信息,可以提升运行速度,适合于网络稳定并追求高性能的场景。 故障诊断模式:收集更多的信息用于定位,适合于执行出现问题需要收集故障信息进行定位的场景。此模式提供故障诊断,用户可以根据实际需求选择诊断类别。
  • 配置训练参数 训练过程中可以从OBS桶或者数据集中获取输入数据进行模型训练,训练输出的结果也支持存储至OBS桶中。创建训练作业时可以参考表4配置输入、输出、超参、环境变量等参数。 创建训练作业时选择的创建方式不同,训练作业的输入、输出和超参显示不同。如果参数值置灰,即表示该参数已经在算法代码中配置了且不支持修改。 表4 配置训练参数 参数名称 子参数 说明 输入 参数名称 算法代码需要通过“输入”的“参数名称”去读取训练的输入数据。 建议设置为“data_url”。训练输入参数要与所选算法的“输入”参数匹配,请参见创建算法时的表4。 数据集 单击“数据集”,在ModelArts数据集列表中勾选目标数据集并选择对应的版本。 训练启动时,系统将自动下载输入路径中的数据到训练运行容器。 说明: ModelArts数据管理模块在重构升级中,对未使用过数据管理的用户不可见。建议新用户将训练数据存放至OBS桶中使用。 数据存储位置 单击“数据存储位置”,从OBS桶中选择训练输入数据的存储位置。文件总大小要小于或等于10GB,文件数要小于或等于1000个,单个文件大小要小于或等于1GB。 训练启动时,系统将自动下载输入路径中的数据到训练运行容器。 获取方式 以参数名称为“data_path”的训练输入为例,说明获取方式的作用。 当参数的“获取方式”为“超参”时,可以参考如下代码来读取数据。 import argparse parser = argparse.ArgumentParser() parser.add_argument('--data_path') args, unknown = parser.parse_known_args() data_path = args.data_path 当参数的“获取方式”为“环境变量”时,可以参考如下代码来读取数据。 import os data_path = os.getenv("data_path", "") 输出 参数名称 算法代码需要通过“输出”的“参数名称”去读取训练的输出目录。 建议设置为“train_url”。训练输出参数要与所选算法的“输出”参数匹配,请参见创建算法时的表5。 数据存储位置 单击“数据存储位置”,从OBS桶中选择训练输出数据的存储位置。文件总大小要小于或等于1GB,文件数要小于或等于128个,单个文件大小要小于或等于128MB。 训练过程中,系统将自动从训练容器的本地代码目录下同步文件到数据存储位置。 说明: 数据存储位置仅支持OBS路径。为避免数据存储冲突,建议选择一个空目录用作“数据存储位置”。 获取方式 以参数名称为“train_url”的训练输出为例,说明获取方式的作用。 当参数的“获取方式”为“超参”时,可以参考如下代码来读取数据。 import argparse parser = argparse.ArgumentParser() parser.add_argument('--train_url') args, unknown = parser.parse_known_args() train_url = args.train_url 当参数的“获取方式”为“环境变量”时,可以参考如下代码来读取数据。 import os train_url = os.getenv("train_url", "") 预下载至本地目录 选择是否将输出目录下的文件预下载至本地目录。 不下载:表示启动训练作业时不会将输出数据的存储位置中的文件下载到训练容器的本地代码目录中。 下载:表示系统会在启动训练作业时自动将输出数据的存储位置中的所有文件下载到训练容器的本地代码目录中。下载时间会随着文件变大而变长,为了防止训练时间过长,请及时清理训练容器的本地代码目录中的无用文件。如果要使用设置断点续训练,则必须选择“下载”。 超参 - 超参用于训练调优。此参数由选择的算法决定,如果在算法中已经定义了超参,则此处会显示算法中所有的超参。 超参支持修改和删除,状态取决于算法中的超参“约束”设置,详情请参见表6。 单击“本地上传”可以本地批量导入超参,需要按模板填写超参且总数不能超过100条,否则会导入失败。 说明: 为保证数据安全,请勿输入敏感信息,例如明文密码。 环境变量 - 根据业务需求增加环境变量。训练容器中预置的环境变量请参见管理训练容器环境变量。 单击“本地上传”可以本地批量导入环境变量,需要按模板填写环境变量且总数不能超过100条,否则会导入失败。 说明: 为保证数据安全,请勿输入敏感信息,例如明文密码。 自动重启 - 打开开关后,可以设置重启次数和是否启用无条件自动重启。 打开自动重启开关后,当由于环境问题导致训练作业异常时,系统将自动修复异常或隔离节点,并重启训练作业,提高训练成功率。为了避免丢失训练进度、浪费算力,开启此功能前请确认代码已适配断点续训,操作指导请参见设置断点续训练。 重启次数的取值范围是1~128,缺省值为3。创建训练后不支持修改重启次数,请合理设置次数。 勾选无条件自动重启后,只要系统检测到训练异常,就无条件重启训练作业。为了避免无效重启浪费算力资源,系统最多只支持连续无条件重启3次。 当训练过程中触发了自动重启,则系统会记录重启信息,在训练作业详情页可以查看故障恢复详情,具体请参见训练作业重调度。
  • 选择创建方式(自定义算法) 如果在算法管理中已经创建算法,此处建议选择““我的算法””页签中已经准备好的算法。如果没有已经准备好的算法,此处可以选择“自定义算法”创建方式。如果选择使用自定义算法创建训练作业,则参考表2选择训练作业的创建方式。 表2 创建训练作业的创建方式(使用自定义算法) 参数名称 说明 创建方式 必选,选择“自定义算法”。 启动方式 必选,选择“预置框架”,并选择训练作业要使用的预置框架引擎和引擎版本。 如果引擎版本选择“自定义”,则需要配置“镜像”参数,选择自定义镜像用于训练作业。 镜像 仅当预置框架的引擎版本选择“自定义”时才显示该参数,且是必填参数。 容器镜像地址的填写支持如下方式。 选择自有镜像或他人共享的镜像:单击右边的“选择”,从容器镜像中选择用于训练的容器镜像。所需镜像需要提前上传到SWR服务中。 选择公开镜像:直接输入SWR服务中公开镜像的地址。地址直接填写“组织名称/镜像名称:版本名称”,不需要带域名信息,系统会自动拼接域名地址。 代码来源 选择训练代码来源。 对象OBS存储:如果训练代码存放在OBS中,则选择“对象OBS存储”。 文件存储:如果训练代码存放在文件存储中,则选择“文件存储”。 代码目录 仅当“代码来源”选择“对象OBS存储”时才显示该参数。 必填,选择训练代码文件所在的OBS目录。 需要提前将代码上传至OBS桶中,目录内文件总大小要小于或等于5GB,文件数要小于或等于1000个,文件深度要小于或等于32。 训练代码文件会在训练作业启动的时候被系统自动下载到训练容器的“${MA_JOB_DIR}/demo-code”目录中,“demo-code”为存放代码目录的最后一级OBS目录。例如,“代码目录”选择的是“/test/code”,则训练代码文件会被下载到训练容器的“${MA_JOB_DIR}/code”目录中。 启动文件 必填,选择代码目录中训练作业的Python启动脚本。 ModelArts只支持使用Python语言编写的启动文件,因此启动文件必须以“.py”结尾。 本地代码目录 仅当“代码来源”选择“对象OBS存储”时才显示该参数。 指定训练容器的本地目录,启动训练时系统会将代码目录下载至此目录。 此参数可选,默认本地代码目录为“/home/ma-user/modelarts/user-job-dir”。 工作目录 训练时,系统会自动cd到此目录下执行启动文件。 选择预置框架+自定义时,该功能的后台行为与直接基于预置框架运行训练作业相同,例如: 系统将会自动注入一系列环境变量 PATH=${MA_HOME}/anaconda/bin:${PATH} LD_LIBRARY_PATH=${MA_HOME}/anaconda/lib:${LD_LIBRARY_PATH} PYTHONPATH=${MA_JOB_DIR}:${PYTHONPATH} 您选择的启动文件将会被系统自动以python命令直接启动,因此请确保镜像中的Python命令为您预期的Python环境。注意到系统自动注入的PATH环境变量,您可以参考下述命令确认训练作业最终使用的Python版本: export MA_HOME=/home/ma-user; docker run --rm {image} ${MA_HOME}/anaconda/bin/python -V docker run --rm {image} $(which python) -V 系统将会自动添加预置框架关联的超参
  • 选择创建方式(使用自定义镜像) 如果选择使用自定义镜像创建训练作业,则参考表3选择训练作业的创建方式。 表3 创建训练作业的创建方式(使用自定义镜像) 参数名称 说明 创建方式 必选,选择“自定义算法”。 启动方式 必选,选择“自定义”。 镜像 必填,填写容器镜像的地址。 容器镜像地址的填写支持如下方式。 选择自有镜像或他人共享的镜像:单击右边的“选择”,从容器镜像中选择用于训练的容器镜像。所需镜像需要提前上传到SWR服务中。 选择公开镜像:直接输入SWR服务中公开镜像的地址。地址直接填写“组织名称/镜像名称:版本名称”,不需要带域名信息,系统会自动拼接域名地址。 代码目录 选择训练代码文件所在的OBS目录。如果自定义镜像中不含训练代码则需要配置该参数,如果自定义镜像中已包含训练代码则不需要配置。 需要提前将代码上传至OBS桶中,目录内文件总大小要小于或等于5GB,文件数要小于或等于1000个,文件深度要小于或等于32。 训练代码文件会在训练作业启动的时候被系统自动下载到训练容器的“${MA_JOB_DIR}/demo-code”目录中,“demo-code”为存放代码目录的最后一级OBS目录。例如,“代码目录”选择的是“/test/code”,则训练代码文件会被下载到训练容器的“${MA_JOB_DIR}/code”目录中。 运行用户ID 容器运行时的用户ID,该参数为选填参数,建议使用默认值1000。 如果需要指定uid,则uid数值需要在规定范围内,不同资源池的uid范围如下: 公共资源池:1000-65535 专属资源池:0-65535 启动命令 必填,镜像的启动命令。 运行训练作业时,当“代码目录”下载完成后,“启动命令”会被自动执行。 如果训练启动脚本用的是py文件,例如“train.py”,则启动命令如下所示。 python ${MA_JOB_DIR}/demo-code/train.py 如果训练启动脚本用的是sh文件,例如“main.sh”,则启动命令如下所示。 bash ${MA_JOB_DIR}/demo-code/main.sh 启动命令支持使用“;”和“&&”拼接多条命令,命令中的“demo-code”为存放代码目录的最后一级OBS目录,以实际情况为准。 说明: 为保证数据安全,请勿输入敏感信息,例如明文密码。 本地代码目录 仅当“代码来源”选择“对象OBS存储”时才显示该参数。 指定训练容器的本地目录,启动训练时系统会将代码目录下载至此目录。 此参数可选,默认本地代码目录为“/home/ma-user/modelarts/user-job-dir”。 工作目录 训练时,系统会自动cd到此目录下执行启动文件。 训练支持的自定义镜像使用说明请参考自定义镜像的启动命令规范。
  • 操作流程介绍 创建训练作业的操作步骤如下所示。 进入创建训练作业页面。 配置训练作业基本信息。 根据不同的算法来源,选择不同的训练作业创建方式。 使用已有算法创建训练作业:选择创建方式(使用我的算法) 使用订阅算法创建训练作业:选择创建方式(使用订阅算法) 使用预置镜像创建训练作业:选择创建方式(自定义算法) 使用自定义镜像创建训练作:选择创建方式(使用自定义镜像) 配置训练参数:配置训练作业的输入、输出、超参、环境变量等参数。 根据需要选择不同的资源池用于训练作业,推荐使用专属资源池,两者的差异说明请参见专属资源池和公共资源池的能力差异。 配置资源池(公共资源池) 配置资源池(专属资源池) (可选)选择训练模式:当训练作业的算法框架选用的是预置框架的MindSpore类引擎、资源池类型选用的是Ascend资源时,则支持选择训练模式。 (可选)设置标签:如果需要对训练作业进行资源分组管理,可以设置标签。 后续操作。
  • 前提条件 已经将用于训练作业的数据上传至OBS目录。 已经在OBS目录下创建了至少1个空的文件夹,用于存储训练输出的内容。 ModelArts不支持加密的OBS桶,创建OBS桶时,请勿开启桶加密。 由于训练作业运行需消耗资源,为了避免训练失败请确保账户未欠费。 确保使用的OBS目录与ModelArts在同一区域。 检查是否配置了访问授权。如果未配置,请参见配置ModelArts Standard访问授权完成操作。 已经准备好训练算法,具体操作请参见创建算法。
  • 控制多分支的部分执行 from modelarts import workflow as wf # 构建一个OutputStorage对象,对训练输出目录做统一管理 storage = wf.data.Storage(name="storage_name", title="title_info", with_execution_id=True, create_dir=True, description="description_info") # name字段必填,title, description可选填 # 定义输入的OBS对象 obs_data = wf.data.OBSPlaceholder(name="obs_placeholder_name", object_type="directory") condition_equal_a = wf.steps.Condition(condition_type=wf.steps.ConditionTypeEnum.EQ, left=wf.Placeholder(name="job_step_a_is_skip", placeholder_type=wf.PlaceholderType.BOOL), right=True) # 通过JobStep来定义一个训练节点,并将训练结果输出到OBS job_step_a = wf.steps.JobStep( name="training_job_a", # 训练节点的名称,命名规范(只能包含英文字母、数字、下划线(_)、中划线(-),并且只能以英文字母开头,长度限制为64字符),一个Workflow里的两个step名称不能重复 title="图像分类训练", # 标题信息,不填默认使用name algorithm=wf.AIGalleryAlgorithm( subscription_id="subscription_id", # 算法订阅ID item_version_id="item_version_id", # 算法订阅版本ID,也可直接填写版本号 parameters=[] ), # 训练使用的算法对象,示例中使用AIGallery订阅的算法;部分算法超参的值如果无需修改,则在parameters字段中可以不填写,系统自动填充相关超参值 inputs=wf.steps.JobInput(name="data_url", data=obs_data), outputs=[wf.steps.JobOutput(name="train_url", obs_config=wf.data.OBSOutputConfig(obs_path=storage.join("directory_path_a")))], spec=wf.steps.JobSpec( resource=wf.steps.JobResource( flavor=wf.Placeholder(name="train_flavor", placeholder_type=wf.PlaceholderType.JSON, description="训练资源规格") ) ), # 训练资源规格信息 policy=wf.steps.StepPolicy(skip_conditions=condition_equal_a) ) condition_equal_b = wf.steps.Condition(condition_type=wf.steps.ConditionTypeEnum.EQ, left=wf.Placeholder(name="job_step_b_is_skip", placeholder_type=wf.PlaceholderType.BOOL), right=True) # 通过JobStep来定义一个训练节点,并将训练结果输出到OBS job_step_b = wf.steps.JobStep( name="training_job_b", # 训练节点的名称,命名规范(只能包含英文字母、数字、下划线(_)、中划线(-),并且只能以英文字母开头,长度限制为64字符),一个Workflow里的两个step名称不能重复 title="图像分类训练", # 标题信息,不填默认使用name algorithm=wf.AIGalleryAlgorithm( subscription_id="subscription_id", # 算法订阅ID item_version_id="item_version_id", # 算法订阅版本ID,也可直接填写版本号 parameters=[] ), # 训练使用的算法对象,示例中使用AIGallery订阅的算法;部分算法超参的值如果无需修改,则在parameters字段中可以不填写,系统自动填充相关超参值 inputs=wf.steps.JobInput(name="data_url", data=obs_data), outputs=[wf.steps.JobOutput(name="train_url", obs_config=wf.data.OBSOutputConfig(obs_path=storage.join("directory_path_b")))], spec=wf.steps.JobSpec( resource=wf.steps.JobResource( flavor=wf.Placeholder(name="train_flavor", placeholder_type=wf.PlaceholderType.JSON, description="训练资源规格") ) ), # 训练资源规格信息 policy=wf.steps.StepPolicy(skip_conditions=condition_equal_b) ) # 定义模型名称参数 model_name = wf.Placeholder(name="placeholder_name", placeholder_type=wf.PlaceholderType.STR) model_step = wf.steps.ModelStep( name="model_registration", # 模型注册节点的名称,命名规范(只能包含英文字母、数字、下划线(_)、中划线(-),并且只能以英文字母开头,长度限制为64字符),一个Workflow里的两个step名称不能重复 title="模型注册", # 标题信息 inputs=wf.steps.ModelInput(name='model_input', data=wf.data.DataConsumptionSelector(data_list=[job_step_a.outputs["train_url"].as_input(), job_step_b.outputs["train_url"].as_input()])), # 选择job_step_a或者job_step_b的输出作为输入 outputs=wf.steps.ModelOutput(name='model_output', model_config=wf.steps.ModelConfig(model_name=model_name, model_type="TensorFlow")), # ModelStep的输出 depend_steps=[job_step_a, job_step_b], # 依赖的作业类型节点对象 ) workflow = wf.Workflow( name="new-condition-demo", desc="this is a demo workflow", steps=[job_step_a, job_step_b, model_step], storages=storage )
共100000条