华为云用户手册

  • 故障切换演练 查看监控器活跃的数据中心。 登录MAS控制台,在“多活管理”页面单击多活实例,进入实例控制台。 在页面顶端导航栏选择“监控列表”,查看创建的“litemall-db”MySQL监控器。 在未出现故障前,监控器的活跃数据中心为数据中心1,即主数据中心,此时商城应用是连接数据中心1。 构造数据中心1故障。 通过修改数据库端口的方式,使“litemall-db”监控器的数据中心1故障。 查看监控器的活跃的数据中心是否已自动切换。 在多活实例控制台“监控列表”页面,可以发现“litemall-db”监控器数据中心1状态异常,“litemall-db”监控器活跃的数据中心已切换至数据中心2,此时商城应用是连接数据中心2。 验证电商应用是否正常运行。 使用管理员账号登录电商应用。 测试电商应用的相关数据是否能够正常创建和查询。 恢复数据中心1的故障。 恢复数据中心1之前的端口,当数据中心1故障恢复时,此时监控器不会自动回切。 手动回切数据中心。 在多活实例控制台“监控列表”页面,单击“litemall-db”监控器左侧操作栏的“回切”,并在弹窗中单击“确认”,活跃的数据中心切换至数据中心1。 重复步骤4,再次验证电商应用是否正常运行。 父主题: 实施步骤
  • 背景说明 访问在线服务的实际业务中,用户可能会存在如下需求: 高吞吐量、低时延 TCP或者RPC请求 因此,ModelArts提供了VPC直连的高速访问通道功能以满足用户的需求。 使用VPC直连的高速访问通道,用户的业务请求不需要经过推理平台,而是直接经VPC对等连接发送到实例处理,访问速度更快。 由于请求不经过推理平台,所以会丢失以下功能: 认证鉴权 流量按配置分发 负载均衡 告警、监控和统计 图1 VPC直连的高速访问通道示意图
  • 准备工作 使用专属资源池部署在线服务,服务状态为“运行中”。 需使用新版专属资源池部署服务,详情请参见ModelArts Standard资源池功能介绍。 只有专属资源池部署的服务才支持VPC直连的高速访问通道。 VPC直连的高速访问通道,目前只支持访问在线服务。 因流量限控,获取在线服务的IP和端口号次数有限制,每个主账号租户调用次数不超过2000次/分钟,每个子账号租户不超过20次/分钟。 目前仅支持 自定义镜像 导入模型,部署的服务支持高速访问通道。
  • 修改成员信息 团队中的成员,当其信息发生变化时,可以编辑其基本情况。 在“团队详情”区域,选择需修改的成员。 在成员所在行的“操作”列,单击“修改”。在弹出的对话框中,修改其“描述”或“角色”。 成员的“邮箱”无法修改,如果需要修改邮箱地址,建议先删除此成员,然后再基于新的邮箱地址添加新成员。 “角色”支持“Labeler”、“Reviewer”和“Team Manager”,“Team Manager”只能设置为一个人。
  • 数据导出 ModelArts训练管理模块支持通过ModelArts数据集或者OBS目录中的文件创建训练作业。如果选择通过OBS目录的方式创建训练任务,用户需要将数据集中准备好的数据导出到OBS中。 导出数据到OBS 在数据集详情页面中,选中需要导出的数据或筛选出需要导出的数据,然后单击右上角“导出”。 导出方式选择“OBS”,填写相关信息,然后单击“确定”,开始执行导出操作。 “保存路径”:即导出数据存储的路径。建议不要将数据存储至当前数据集所在的输入路径或输出路径。 图12 导出至OBS 数据导出成功后,您可以前往您设置的保存路径,查看到存储的数据。 查看任务历史 当您导出数据后,可以通过任务历史查看导出任务明细。 在数据集详情页面中,单击右上角“任务历史 ”。 在弹出的“任务历史”对话框中,可以查看该数据集之前的导出任务历史。包括“任务ID”、“创建时间”、“导出方式”、“导出路径”、“导出样本总数”和“导出状态”。 图13 导出任务历史
  • 数据标注 人工标注 在“未标注”页签图片列表中,单击图片,自动跳转到标注页面。 在标注页面的工具栏中选择合适的标注工具,本示例使用矩形框进行标注。 图6 标注工具 使用标注工具选中目标区域,在弹出的标签文本框中,直接输入新的标签名。如果已存在标签,从下拉列表中选择已有的标签。单击“添加”完成标注。 图7 添加物体检测标签 单击页面上方“返回数据标注预览”查看标注信息,在弹框中单击“确定”保存当前标注并离开标注页面。选中的图片被自动移动至“已标注”页签,且在“未标注”和“全部”页签中,标签的信息也将随着标注步骤进行更新,如增加的标签名称、标签对应的图片数量。 智能标注 通过人工标注完成少量数据标注后,可以通过智能标注对剩下的数据进行自动标注,提高标注的效率。 在数据集详情页面,单击右上角“启动智能标注”。 在“启动智能标注”窗口中,填写如下参数,然后单击“提交”。 智能标注类型:主动学习 算法类型:快速型 其他参数采用默认值。 图8 启动智能标注任务 查看智能标注任务进度 智能标注任务启动后,可以在“待确认”页签下查看智能标注任务进度。当任务完成后,即可在“待确认”页签下查看自动标注好的数据。 图9 查看智能标注任务进度 确认智能标注结果 在智能标注任务完成后,在“待确认”页签下,单击具体图片进入标注详情页面,可以查看或修改智能标注的结果。 如果智能标注的数据无误,可单击右侧的“确认标注”完成标注,如果标注信息有误,可直接删除错误标注框,然后重新标注,以纠正标注信息。针对物体检测任务,需一张一张确认。确保所有图片已完成确认,然后执行下一步操作。 图10 确认智能标注结果
  • 数据发布 ModelArts训练管理模块支持通过ModelArts数据集或者OBS目录中的文件创建训练作业。如果选择通过数据集作为训练任务的数据源,则需要指定数据集及特定的版本。因此,用户需要为准备好的数据发布一个版本,具体操作参考发布ModelArts数据集中的数据版本。 为了便于后期的模型构建和开发,对同一数据源来说,将其不同时间对数据的处理和标注按照版本来进行区分,按照需求选择指定的版本使用。 图11 创建训练任务的数据来源
  • 数据分析 数据集创建完成后,可以基于图片各项特征,如模糊度、亮度等进行分析,帮助用户更好的分析数据集的数据质量,判断数据集是否满足自己的算法和模型要求。 创建特征分析任务 在执行特征分析前,需先发布一个数据集版本。在“数据集概览”页单击右上角的“发布”,为数据集发布一个新版本。 版本发布完成后,进入数据集概览页。选择“数据特征”页签,单击“特征分析”,在弹窗中选择刚才发布的数据集版本,并单击“确定”,启动特征分析任务。 图3 启动特征分析 查看任务进度 任务执行过程中,可以单击“任务历史”,查看任务进度。当任务状态变为“成功”时,表示任务执行完成。 图4 特征分析任务进度 查看特征分析结果 特征分析任务执行完成后,可以在“数据特征”页签下,选择“数据集版本”、“类型”和“数据特征指标”,页面将自动呈现您选择对应版本及其指标数据,您可以根据呈现的图表了解数据分布情况,帮助您更好的理解您的数据。 “版本选择”:根据实际情况选择已执行过特征任务的版本,可以选多个进行对比,也可以只选择一个。 “类型”:根据需要分析的类型选择。支持“all”、“train”、“eval”和“inference”。分别表示所有、训练、评估和推理类型。 “数据特征指标”:选择您需要展示的指标。详细指标解释,可参见特征分析指标列表。 图5 查看特征分析结果 在特征分析结果中,例如图片亮度指标,数据分布中,分布不均匀,缺少某一种亮度的图片,而此指标对模型训练非常关键。此时可选择增加对应亮度的图片,让数据更均衡,为后续模型构建做准备。
  • 子账号启动其他用户的SSH实例 子账号可以看到所有用户的Notebook实例后,如果要通过SSH方式远程连接其他用户的Notebook实例,需要将SSH密钥对更新成自己的,否则会报错ModelArts.6786。更新密钥对具体操作请参见修改Notebook SSH远程连接配置。具体的错误信息提示:ModelArts.6789: 在E CS 密钥对管理中找不到指定的ssh密钥对xxx,请更新密钥对并重试。
  • Step3 在TMS中根据资源类型查询ModelArts资源使用情况 登录TMS控制台,在资源标签页面根据资源类型和资源标签查询指定区域的资源任务。 区域:使用华为云的具体Region,区域概念请参见什么是区域、可用区?。 资源类型:ModelArts支持查询的资源类型如表1所示。 资源标签:不填写标签时,表示查询所有资源,无论此资源是否有配置标签。选择相应标签查询资源,用户可以通过多个标签组合查询资源使用情况。 表1 ModelArts的资源类型 资源类型 说明 ModelArts-Notebook ModelArts的开发环境Notebook对应的资源类型。 ModelArts-TrainingJob ModelArts的训练作业对应的资源类型。 ModelArts-RealtimeService ModelArts的推理在线服务对应的资源类型。 ModelArts-ResourcePool ModelArts的专属资源池对应的资源类型。 如您的组织已经设定ModelArts的相关标签策略,则需按照标签策略规则为资源添加标签。标签如果不符合标签策略的规则,则可能会导致资源创建失败,请联系组织管理员了解标签策略详情。
  • Step2 在ModelArts任务中添加标签 在ModelArts中创建Notebook、创建训练作业、创建推理在线服务时,对这些任务配置标签。 在ModelArts的Notebook中添加标签。 可以在创建Notebook页面添加标签,也可以在已经创建完成的Notebook详情页面的“标签”页签中添加标签。 在ModelArts的训练作业中添加标签。 可以在创建训练作业页面添加标签,也可以在已经创建完成的训练作业详情页面的“标签”页签中添加标签。 在ModelArts的在线服务中添加标签。 可以在创建在线服务页面添加标签,也可以在已经创建完成的在线服务详情页面的“标签”页签中添加标签。 图1 添加标签 用户也可以在ModelArts任务中添加标签时,创建新的标签,直接输入标签键和标签值即可。此处创建的标签仅当前的项目Project可见。不同的项目中查看不到。
  • 方式三:使用Python语言发送预测请求 下载Python SDK并在开发工具中完成SDK配置。具体操作请参见在Python环境中集成API请求签名的SDK。 创建请求体,进行预测请求。 输入为文件格式 # coding=utf-8 import requests if __name__ == '__main__': # Config url, token and file path. url = "在线服务的调用地址" token = "用户Token" file_path = "预测文件的本地路径" # Send request. headers = { 'X-Auth-Token': token } files = { 'images': open(file_path, 'rb') } resp = requests.post(url, headers=headers, files=files) # Print result. print(resp.status_code) print(resp.text) “files”中的参数名由在线服务的输入参数决定,需要和“类型”为“file”的输入参数“名称”保持一致。以前提条件里获取的文件预测输入参数“images”为例。 输入为文本格式(json类型) 读取本地预测文件并进行base64编码的请求体示例如下: # coding=utf-8 import base64 import requests if __name__ == '__main__': # Config url, token and file path url = "在线服务的调用地址" token = "用户Token" file_path = "预测文件的本地路径" with open(file_path, "rb") as file: base64_data = base64.b64encode(file.read()).decode("utf-8") # Set body,then send request headers = { 'Content-Type': 'application/json', 'X-Auth-Token': token } body = { 'image': base64_data } resp = requests.post(url, headers=headers, json=body) # Print result print(resp.status_code) print(resp.text) “body”中的参数名由在线服务的输入参数决定,需要和“类型”为“string”的输入参数“名称”保持一致。以前提条件里获取的文本预测输入参数“image”为例。“body”中的base64_data值为string类型。
  • 方式一:使用图形界面的软件进行预测(以Postman为例) 下载Postman软件并安装,您也可以直接在Chrome浏览器添加Postman扩展程序(也可使用其他支持发送post请求的软件)。Postman推荐使用7.24.0版本。 打开Postman,如图3所示。 图3 Postman界面 在Postman界面填写参数,以图像分类举例说明。 选择POST任务,将在线服务的调用地址复制到POST后面的方框。Headers页签的Key值填写为“X-Auth-Token”,Value值为用户Token。 您也可以通过AK(Access Key ID)/SK(Secret Access Key)加密调用请求,具体可参见用户AK-SK认证模式。 图4 参数填写 在Body页签,根据AI应用的输入参数不同,可分为2种类型:文件输入、文本输入。 文件输入 选择“form-data”。在“KEY”值填写AI应用的入参,和在线服务的输入参数对应,比如本例中预测图片的参数为“images”。然后在“VALUE”值,选择文件,上传一张待预测图片(当前仅支持单张图片预测),如图5所示。 图5 填写Body 文本输入 选择“raw”,选择JSON(application/json)类型,在下方文本框中填写请求体,请求体样例如下: { "meta": { "uuid": "10eb0091-887f-4839-9929-cbc884f1e20e" }, "data": { "req_data": [ { "sepal_length": 3, "sepal_width": 1, "petal_length": 2.2, "petal_width": 4 } ] } } 其中,“meta”中可携带“uuid”,调用时传入一个“uuid”,返回预测结果时回传此“uuid”用于跟踪请求,如无此需要可不填写meta。“data”包含了一个“req_data”的数组,可传入单条或多条请求数据,其中每个数据的参数由AI应用决定,比如本例中的“sepal_length”、“sepal_width”等。 参数填写完成,单击“send”发送请求,结果会在“Response”下的对话框里显示。 文件输入形式的预测结果样例如图6所示,返回结果的字段值根据不同AI应用可能有所不同。 文本输入形式的预测结果样例如图7所示,请求体包含“meta”及“data”。如输入请求中包含“uuid”,则输出结果中回传此“uuid”。如未输入,则为空。“data”包含了一个“resp_data”的数组,返回单条或多条输入数据的预测结果,其中每个结果的参数由AI应用决定,比如本例中的“sepal_length”、“predictresult”等。 图6 文件输入预测结果 图7 文本输入预测结果
  • 配置训练参数 训练过程中可以从OBS桶或者数据集中获取输入数据进行模型训练,训练输出的结果也支持存储至OBS桶中。创建训练作业时可以参考表4配置输入、输出、超参、环境变量等参数。 创建训练作业时选择的创建方式不同,训练作业的输入、输出和超参显示不同。如果参数值置灰,即表示该参数已经在算法代码中配置了且不支持修改。 表4 配置训练参数 参数名称 子参数 说明 输入 参数名称 算法代码需要通过“输入”的“参数名称”去读取训练的输入数据。 建议设置为“data_url”。训练输入参数要与所选算法的“输入”参数匹配,请参见创建算法时的表4。 数据集 单击“数据集”,在ModelArts数据集列表中勾选目标数据集并选择对应的版本。 训练启动时,系统将自动下载输入路径中的数据到训练运行容器。 说明: ModelArts数据管理模块在重构升级中,对未使用过数据管理的用户不可见。建议新用户将训练数据存放至OBS桶中使用。 数据存储位置 单击“数据存储位置”,从OBS桶中选择训练输入数据的存储位置。 训练启动时,系统将自动下载输入路径中的数据到训练运行容器。 获取方式 以参数名称为“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桶中选择训练输出数据的存储位置。训练过程中,系统将自动从训练容器的本地代码目录下同步文件到数据存储位置。 说明: 数据存储位置仅支持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", "") 预下载至本地目录 选择是否将输出目录下的文件预下载至本地目录。 不下载:表示启动训练作业时不会将输出数据的存储位置中的文件下载到训练容器的本地代码目录中。 下载:表示系统会在启动训练作业时自动将输出数据的存储位置中的所有文件下载到训练容器的本地代码目录中。下载时间会随着文件变大而变长,为了防止训练时间过长,请及时清理训练容器的本地代码目录中的无用文件。如果要使用设置断点续训练,则必须选择“下载”。 超参 - 超参用于训练调优。此参数由选择的算法决定,如果在算法中已经定义了超参,则此处会显示算法中所有的超参。 超参支持修改和删除,状态取决于算法中的超参“约束”设置,详情请参见定义超参。 说明: 为保证数据安全,请勿输入敏感信息,例如明文密码。 环境变量 - 根据业务需求增加环境变量。训练容器中预置的环境变量请参见管理训练容器环境变量。 说明: 为保证数据安全,请勿输入敏感信息,例如明文密码。 自动重启 - 打开开关后,可以设置重启次数和是否启用无条件自动重启。 打开自动重启开关后,当由于环境问题导致训练作业异常时,系统将自动修复异常或隔离节点,并重启训练作业,提高训练成功率。为了避免丢失训练进度、浪费算力,开启此功能前请确认代码已适配断点续训,操作指导请参见设置断点续训练。 重启次数的取值范围是1~128,缺省值为3。创建训练后不支持修改重启次数,请合理设置次数。 勾选无条件自动重启后,只要系统检测到训练异常,就无条件重启训练作业。为了避免无效重启浪费算力资源,系统最多只支持连续无条件重启3次。 当训练过程中触发了自动重启,则系统会记录重启信息,在训练作业详情页可以查看故障恢复详情,具体请参见训练作业重调度。
  • (可选)选择训练模式 当训练作业的算法框架选用的是预置框架的MindSpore类引擎、资源池类型选用的是Ascend资源时,则支持选择训练模式。ModelArts提供了3种训练模式供用户选择,支持根据实际场景获取不同的诊断信息。 普通模式:默认训练场景。 高性能模式:最小化调测信息,可以提升运行速度,适合于网络稳定并追求高性能的场景。 故障诊断模式:收集更多的信息用于定位,适合于执行出现问题需要收集故障信息进行定位的场景。此模式提供故障诊断,用户可以根据实际需求选择诊断类别。
  • 后续操作 当创建训练作业的参数配置完成后,单击“提交”,在信息确认页面单击“确定”,提交创建训练作业任务。 训练作业一般需要运行一段时间,前往训练作业列表,可以查看训练作业的基本情况。 在训练作业列表中,刚创建的训练作业状态为“等待中”。 当训练作业的状态变为“已完成”时,表示训练作业运行结束,其生成的模型将存储至对应的“输出”目录中。 当训练作业的状态变为“运行失败”或“异常”时,可以单击训练作业的名称进入详情页面,通过查看日志等手段处理问题。 训练作业运行过程中将按照选择的资源进行计费。
  • 配置训练作业基本信息 在创建训练作业页面填写训练作业基本信息。 表1 创建训练作业的基本信息 参数名称 说明 名称 必填,训练作业的名称。 系统会自动生成一个名称,可以根据业务需求重新命名,命名规则如下: 支持1~64位字符。 可以包含大小写字母、数字、中划线(-)或下划线(_)。 描述 训练作业的简介,便于在训练作业列表了解作业信息。 设置实验 将训练作业分类有序地放入实验中进行管理。 如果选择“纳入新实验”,需要配置“新建实验名称”和“新建实验描述”。 如果选择“纳入已有实验”,需要选择“实验名称”。 如果选择“不纳入实验”,则不在实验中进行统一管理。 作业模式 创建生产训练作业时,必须选择“生产模型”。如果选择“调试模式”,则请参考创建调试训练作业创建调试训练作业。
  • 选择创建方式(自定义算法) 如果在算法管理中已经创建算法,此处建议选择““我的算法””页签中已经准备好的算法。如果没有已经准备好的算法,此处可以选择“自定义算法”创建方式。如果选择使用自定义算法创建训练作业,则参考表2选择训练作业的创建方式。 表2 创建训练作业的创建方式(使用自定义算法) 参数名称 说明 创建方式 必选,选择“自定义算法”。 启动方式 必选,选择“预置框架”,并选择训练作业要使用的预置框架引擎和引擎版本。 如果引擎版本选择“自定义”,则需要配置“镜像”参数,选择自定义镜像用于训练作业。 镜像 仅当预置框架的引擎版本选择“自定义”时才显示该参数,且是必填参数。 容器镜像地址的填写支持如下方式。 选择自有镜像或他人共享的镜像:单击右边的“选择”,从容器镜像中选择用于训练的容器镜像。所需镜像需要提前上传到SWR服务中。 选择公开镜像:直接输入SWR服务中公开镜像的地址。地址直接填写“组织名称/镜像名称:版本名称”,不需要带 域名 信息,系统会自动拼接域名地址。 代码来源 选择训练代码来源。 对象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”结尾。 本地代码目录 指定训练容器的本地目录,启动训练时系统会将代码目录下载至此目录。 此参数可选,默认本地代码目录为“/home/ma-user/modelarts/user-job-dir”。 工作目录 训练时,系统会自动cd到此目录下执行启动文件。
  • 选择创建方式(使用自定义镜像) 如果选择使用自定义镜像创建训练作业,则参考表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目录,以实际情况为准。 说明: 为保证数据安全,请勿输入敏感信息,例如明文密码。 本地代码目录 指定训练容器的本地目录,启动训练时系统会将代码目录下载至此目录。 此参数可选,默认本地代码目录为“/home/ma-user/modelarts/user-job-dir”。 工作目录 训练时,系统会自动cd到此目录下执行启动文件。
  • 操作流程介绍 创建训练作业的操作步骤如下所示。 进入创建训练作业页面。 配置训练作业基本信息。 根据不同的算法来源,选择不同的训练作业创建方式。 使用已有算法创建训练作业:选择创建方式(使用我的算法) 使用订阅算法创建训练作业:选择创建方式(使用订阅算法) 使用预置镜像创建训练作业:选择创建方式(自定义算法) 使用自定义镜像创建训练作:选择创建方式(使用自定义镜像) 配置训练参数:配置训练作业的输入、输出、超参、环境变量等参数。 根据需要选择不同的资源池用于训练作业,推荐使用专属资源池,两者的差异说明请参见专属资源池和公共资源池的能力差异。 配置资源池(公共资源池) 配置资源池(专属资源池) (可选)选择训练模式:当训练作业的算法框架选用的是预置框架的MindSpore类引擎、资源池类型选用的是Ascend资源时,则支持选择训练模式。 (可选)设置标签:如果需要对训练作业进行资源分组管理,可以设置标签。 后续操作。
  • 前提条件 已经将用于训练作业的数据上传至OBS目录。 已经在OBS目录下创建了至少1个空的文件夹,用于存储训练输出的内容。 ModelArts不支持加密的OBS桶,创建OBS桶时,请勿开启桶加密。 由于训练作业运行需消耗资源,为了避免训练失败请确保账户未欠费。 确保使用的OBS目录与ModelArts在同一区域。 检查是否配置了访问授权。如果未配置,请参见使用委托授权完成操作。 已经准备好训练算法,具体操作请参见创建算法。
  • 场景介绍 当专属资源池中的节点含有GPU/Ascend资源时,用户基于自己的业务,可能会有自定义GPU/Ascend驱动的需求,ModelArts面向此类客户提供了自助升级专属资源池GPU/Ascend驱动的能力。 驱动升级有两种升级方式:安全升级、强制升级。 安全升级:不影响正在运行的业务,开始升级后会先将节点进行隔离(不能再下发新的作业),待节点上的存量作业运行完成后再进行升级,因需要等待作业完成,故升级周期可能比较长。 强制升级:忽略资源池中正在运行的作业,直接进行驱动升级,可能会导致运行中作业失败,需谨慎选择。
  • 创建AI应用操作步骤 登录ModelArts管理控制台,在左侧导航栏中选择“AI应用”,进入AI应用列表页面。 单击左上角的“创建应用”,进入“创建应用”页面。 在“创建应用”页面,填写相关参数。 填写AI应用基本信息,详细参数说明请参见表1。 表1 AI应用基本信息参数说明 参数名称 说明 名称 AI应用名称。支持1~64位可见字符(含中文),名称可以包含字母、中文、数字、中划线、下划线。 版本 设置所创建AI应用的版本。第一次导入时,默认为0.0.1。 说明: AI应用创建完成后,可以通过创建新版本,导入不同的元模型进行调优。 描述 AI应用的简要描述。 填写元模型来源及其相关参数。当“元模型来源”选择“从训练中选择”时,其相关的参数配置请参见表2。 图1 从训练中选择元模型 表2 元模型来源参数说明 参数 说明 “元模型来源” 选择“从训练中选择”。 在“选择训练作业”右侧下拉框中选择当前账号下已完成运行的训练作业。 “动态加载”:用于实现快速部署和快速更新模型。如果勾选动态加载,则模型文件和运行时依赖仅在实际部署时拉取。当单个模型文件大小超过5GB时,必须配置“动态加载”。 “AI引擎” 元模型使用的推理引擎,选择训练作业后会自动匹配。 “推理代码” 推理代码自定义AI应用的推理处理逻辑。显示推理代码URL,您可以直接复制此URL使用。 “运行时依赖” 罗列选中模型对环境的依赖。例如依赖“tensorflow”,安装方式为“pip”,其版本必须为1.8.0及以上版本。 “AI应用说明” 为了帮助其他AI应用开发者更好的理解及使用您的AI应用,建议您提供AI应用的说明文档。单击“添加AI应用说明”,设置“文档名称”及其“URL”。AI应用说明最多支持3条。 “部署类型” 选择此AI应用支持部署服务的类型,部署上线时只支持部署为此处选择的部署类型,例如此处只选择在线服务,那您导入后只能部署为在线服务。当前支持“在线服务”、“批量服务”和“边缘服务”。 确认信息填写无误,单击“立即创建”,完成AI应用的创建。 在AI应用列表中,您可以查看刚创建的AI应用及其对应的版本。当AI应用状态变更为“正常”时,表示AI应用导入成功。在此页面,您还可以创建新版本、快速部署服务、发布AI应用等操作。
  • 基于自定义镜像创建新的Notebook实例 从Notebook中保存的镜像可以在镜像管理中查询到,可以用于创建新的Notebook实例,完全继承保存状态下的实例软件环境配置。 基于自定义镜像创建Notebook实例有两种方式: 方式一:在Notebook实例创建页面,镜像类型选择“自定义镜像”,名称选择上述保存的镜像。 图3 创建基于自定义镜像的Notebook实例 方式二:在“镜像管理”页面,单击某个镜像的镜像详情,在镜像详情页,单击“创建Notebook”,也会跳转到基于该自定义镜像创建Notebook的页面。
  • 常见问题 镜像保存时报错“there are processes in 'D' status, please check process status using 'ps -aux' and kill all the 'D' status processes”如何解决? 镜像保存时报错“container size %dG is greater than threshold %dG”如何解决? 保存镜像时报错“too many layers in your image”如何解决? 镜像保存时报错“The container size (xG) is greater than the threshold (25G)”如何解决?
  • 背景说明 WebSocket是一种网络传输协议,可在单个TCP连接上进行全双工通信,位于OSI模型的应用层。WebSocket协议在2011年由IETF标准化为RFC 6455,后由RFC 7936补充规范。Web IDL中的WebSocket API由W3C标准化。 WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就可以建立持久性的连接,并进行双向数据传输。
  • ModelArts的预置镜像使用场景 ModelArts给用户提供了一组预置镜像,用户可以直接使用预置镜像创建Notebook实例,在实例中进行依赖安装与配置后,保存为自定义镜像,可直接用于ModelArts训练,而不需要做适配。同时也可以使用预置镜像直接提交训练作业、创建AI应用等。 ModelArts提供的预置镜像版本是依据用户反馈和版本稳定性决定的。当用户的功能开发基于ModelArts提供的版本能够满足的时候,比如用户开发基于MindSpore1.X,建议用户使用预置镜像,这些镜像经过充分的功能验证,并且已经预置了很多常用的安装包,用户无需花费过多的时间来配置环境即可使用。 ModelArts默认提供了一组预置镜像供开发使用,这些镜像有以下特点: 零配置,即开即用,面向特定的场景,将AI开发过程中常用的依赖环境进行固化,提供合适的软件、操作系统、网络等配置策略,通过在硬件上的充分测试,确保其兼容性和性能最合适。 方便自定义,预置镜像已经在SWR仓库中,通过对预置镜像的扩展完成自定义镜像注册。 安全可信,基于安全加固最佳实践,访问策略、用户权限划分、开发软件 漏洞扫描 、操作系统安全加固等方式,确保镜像使用的安全性。
  • ModelArts的自定义镜像使用场景 当用户对深度学习引擎、开发库有特殊需求场景的时候,预置镜像已经不能满足用户需求。ModelArts提供自定义镜像功能支持用户自定义运行引擎。 ModelArts底层采用容器技术,自定义镜像指的是用户自行制作容器镜像并在ModelArts上运行。自定义镜像功能支持自由文本形式的命令行参数和环境变量,灵活性比较高,便于支持任意计算引擎的作业启动需求。 在制作自定义镜像的时候,可以把ModelArts提供的预置镜像作为基础镜像,通过在Dockerfile中使用预置镜像的SWR地址来拉取预置镜像后进行改造。可在ModelArts预置镜像列表里获取镜像的SWR地址,参考ModelArts支持的预置镜像列表章节。 制作自定义镜像用于创建Notebook 当Notebook预置镜像不能满足需求时,用户可以制作自定义镜像。在镜像中自行安装与配置环境依赖软件及信息,并制作为自定义镜像,用于创建新的Notebook实例。同时也支持用户在Notebook中,基于已有镜像制作新的自定义镜像。 制作自定义镜像用于训练模型 如果您已经在本地完成模型开发或训练脚本的开发,且您使用的AI引擎是ModelArts不支持的框架。您可以制作自定义镜像,并上传至SWR服务。您可以在ModelArts使用此自定义镜像创建训练作业,使用ModelArts提供的资源训练模型。 制作自定义镜像用于推理 如果您使用了ModelArts不支持的AI引擎开发模型,可以通过制作自定义镜像,导入ModelArts创建为AI应用,并支持进行统一管理和部署为服务。 用户制作的自定义镜像,使用的场景不同,镜像规则也不同,具体如下: 通用规则:SWR镜像类型为“私有”时,才可以共享给他人,适用于开发环境、训练作业、AI应用。 开发环境:SWR镜像类型为“公开”时,其他用户才可以在ModelArts镜像管理页面注册使用。 训练作业:SWR镜像类型为“公开”时,在使用自定义镜像创建训练作业时,在“镜像”输入框内直接填写“组织名称/镜像名称:版本名称”即可。例如:公开镜像的SWR地址为“swr.cn-north-4.myhuaweicloud.com/test-image/tensorflow2_1_1:1.1.1”,则在创建训练作业的“镜像”输入框里内直接填“test-images/tensorflow2_1_1:1.1.1”。
  • 自定义镜像功能关联服务介绍 容器镜像服务 容器 镜像服务 (Software Repository for Container,SWR)是一种支持镜像全生命周期管理的服务, 提供简单易用、安全可靠的镜像管理功能,帮助您快速部署容器化服务。您可以通过界面、社区CLI和原生API上传、下载和管理容器镜像。 您制作的自定义镜像需要上传至SWR服务。ModelArts开发环境、训练和创建AI应用使用的自定义镜像需要从SWR服务管理列表获取。 图1 获取镜像列表 对象存储服务 对象存储服务(Object Storage Service,OBS)是一个基于对象的海量存储服务,为客户提供海量、安全、高可靠、低成本的数据存储能力。 在使用ModelArts时存在与OBS的数据交互,您需要使用的数据可以存储至OBS。 弹性云服务器 弹性云服务器(Elastic Cloud Server,ECS)是由CPU、内存、操作系统、云硬盘组成的基础的计算组件。弹性云服务器创建成功后,您就可以像使用自己的本地PC或物理服务器一样,使用弹性云服务器。 在制作自定义镜像时,您可以在本地环境或者ECS上完成自定义镜像制作。
  • 使用案例 统一存储主要用于JobStep中,下面代码示例全部以单训练节点为例。 from modelarts import workflow as wf # 构建一个InputStorage对象, 并且假设配置的根目录为"/root/input-data/" input_storage = wf.data.InputStorage(name="input_storage_name", title="title_info", description="description_info") # name字段必填,title, description可选填 # 构建一个OutputStorage对象, 并且假设配置的根目录为"/root/output/" output_storage = wf.data.OutputStorage(name="output_storage_name", title="title_info", description="description_info") # name字段必填,title, description可选填 # 通过JobStep来定义一个训练节点,输入数据来源为OBS,并将训练结果输出到OBS中 job_step = wf.steps.JobStep( name="training_job", # 训练节点的名称,命名规范(只能包含英文字母、数字、下划线(_)、中划线(-),并且只能以英文字母开头,长度限制为64字符),一个Workflow里的两个step名称不能重复 title="图像分类训练", # 标题信息,不填默认使用name algorithm=wf.AIGalleryAlgorithm(subscription_id="subscription_ID", item_version_id="item_version_ID"), # 训练使用的算法对象,示例中使用AIGallery订阅的算法 inputs=[ wf.steps.JobInput(name="data_url_1", data=wf.data.OBSPath(obs_path = input_storage.join("/dataset1/new.manifest"))), # 获得的路径为:/root/input-data/dataset1/new.manifest wf.steps.JobInput(name="data_url_2", data=wf.data.OBSPath(obs_path = input_storage.join("/dataset2/new.manifest"))) # 获得的路径为:/root/input-data/dataset2/new.manifest ], outputs=wf.steps.JobOutput(name="train_url", obs_config=wf.data.OBSOutputConfig(obs_path=output_storage.join("/model/"))), # 训练输出的路径为:/root/output/执行ID/model/ spec=wf.steps.JobSpec( resource=wf.steps.JobResource( flavor=wf.Placeholder(name="train_flavor", placeholder_type=wf.PlaceholderType.JSON, description="训练资源规格") ), log_export_path=wf.steps.job_step.LogExportPath(obs_url=output_storage.join("/logs/")) # 日志输出的路径为:/root/output/执行ID/logs/ )# 训练资源规格信息 ) # 定义一个只包含job_step的工作流 workflow = wf.Workflow( name="test-workflow", desc="this is a test workflow", steps=[job_step], storages=[input_storage, output_storage] # 注意在整个工作流中使用到的Storage对象需要在这里添加 )
共100000条