华为云用户手册

  • AI Gallery支持审计的关键操作列表 表6 AI Gallery支持审计的关键操作列表 操作名称 资源类型 事件名称 发布资产 ModelArts_Market create_content 修改资产信息 ModelArts_Market modify_content 发布资产新版本 ModelArts_Market add_version 订阅资产 ModelArts_Market subscription_content 收藏资产 ModelArts_Market star_content 取消收藏资产 ModelArts_Market cancel_star_content 点赞资产 ModelArts_Market like_content 取消点赞资产 ModelArts_Market cancel_like_content 发布实践 ModelArts_Market publish_activity 报名实践 ModelArts_Market regist_activity 修改个人资料 ModelArts_Market update_user
  • 资源管理支持审计的关键操作列表 表7 资源管理支持审计的关键操作列表 操作名称 资源类型 事件名称 创建资源池 PoolV2 CreatePoolV2 删除资源池 PoolV2 DeletePoolV2 更新资源池 PoolV2 UpdatePoolV2 创建网络 NetworksV1 CreateNetworksV1 删除网络 NetworksV1 DeleteNetworksV1 更新网络 NetworksV1 UpdateNetworksV1
  • 服务管理支持审计的关键操作列表 表5 服务管理支持审计的关键操作列表 操作名称 资源类型 事件名称 部署服务 service addService 删除服务 service deleteService 更新服务 service updateService 启停服务 service startOrStopService 启停边缘服务节点 service startOrStopNodesService 添加用户访问密钥 service addAkSk 删除用户访问密钥 service deleteAkSk 创建专属资源池 cluster createCluster 删除专属资源池 cluster deleteCluster 添加专属资源池节点 cluster addClusterNode 删除专属资源池节点 cluster deleteClusterNode 获取专属资源池创建结果 cluster createClusterResult
  • 数据管理支持审计的关键操作列表 表1 数据管理支持审计的关键操作列表 操作名称 资源类型 事件名称 创建数据集 dataset createDataset 删除数据集 dataset deleteDataset 更新数据集 dataset updateDataset 发布数据集版本 dataset publishDatasetVersion 删除数据集版本 dataset deleteDatasetVersion 同步数据源 dataset syncDataSource 导出数据集 dataset exportDataFromDataset 创建自动标注任务 dataset createAutoLabelingTask 创建自动分组任务 dataset createAutoGroupingTask 创建自动部署任务 dataset createAutoDeployTask 导入样本到数据集 dataset importSamplesToDataset 创建数据集标签 dataset createLabel 更新数据集标签 dataset updateLabel 删除数据集标签 dataset deleteLabel 删除数据集标签和对应的样本 dataset deleteLabelWithSamples 添加样本 dataset uploadSamples 删除样本 dataset deleteSamples 停止自动标注任务 dataset stopTask 创建团队标注任务 dataset createWorkforceTask 删除团队标注任务 dataset deleteWorkforceTask 启动团队标注验收的任务 dataset startWorkforceSamplingTask 通过/驳回/取消验收任务 dataset updateWorkforceSamplingTask 提交验收任务的样本评审意见 dataset acceptSamples 给样本添加标签 dataset updateSamples 发送邮件给团队标注任务的成员 dataset sendEmails 接口人启动团队标注任务 dataset startWorkforceTask 更新团队标注任务 dataset updateWorkforceTask 给团队标注样本添加标签 dataset updateWorkforceTaskSamples 团队标注审核 dataset reviewSamples 创建标注成员 workforce createWorker 更新标注成员 workforce updateWorker 删除标注成员 workforce deleteWorker 批量删除标注成员 workforce batchDeleteWorker 创建标注团队 workforce createWorkforce 更新标注团队 workforce updateWorkforce 删除标注团队 workforce deleteWorkforce 自动创建 IAM 委托 IAM createAgency 标注成员登录labelConsole标注平台 labelConsoleWorker workerLoginLabelConsole 标注成员登出labelConsole标注平台 labelConsoleWorker workerLogOutLabelConsole 标注成员修改labelConsole平台密码 labelConsoleWorker workerChangePassword 标注成员忘记labelConsole平台密码 labelConsoleWorker workerForgetPassword 标注成员通过url重置labelConsole标注密码 labelConsoleWorker workerResetPassword
  • 训练作业支持审计的关键操作列表 表3 训练作业支持审计的关键操作列表 操作名称 资源类型 事件名称 创建训练作业 ModelArtsTrainJob createModelArtsTrainJob 创建训练作业版本 ModelArtsTrainJob createModelArtsTrainVersion 停止训练作业 ModelArtsTrainJob stopModelArtsTrainVersion 更新训练作业描述 ModelArtsTrainJob updateModelArtsTrainDesc 删除训练作业版本 ModelArtsTrainJob deleteModelArtsTrainVersion 删除训练作业 ModelArtsTrainJob deleteModelArtsTrainJob 创建训练作业参数 ModelArtsTrainConfig createModelArtsTrainConfig 更新训练作业参数 ModelArtsTrainConfig updateModelArtsTrainConfig 删除训练作业参数 ModelArtsTrainConfig deleteModelArtsTrainConfig 创建可视化作业 ModelArtsTensorboardJob createModelArtsTensorboardJob 删除可视化作业 ModelArtsTensorboardJob deleteModelArtsTensorboardJob 更新可视化作业描述 ModelArtsTensorboardJob updateModelArtsTensorboardDesc 停止可视化作业 ModelArtsTensorboardJob stopModelArtsTensorboardJob 重启可视化作业 ModelArtsTensorboardJob restartModelArtsgTensorboardJob
  • 开发环境支持审计的关键操作列表 表2 开发环境支持审计的关键操作列表 操作名称 资源类型 事件名称 创建Notebook Notebook createNotebook 删除Notebook Notebook deleteNotebook 打开Notebook Notebook openNotebook 启动Notebook Notebook startNotebook 停止Notebook Notebook stopNotebook 更新Notebook Notebook updateNotebook 删除NotebookApp NotebookApp deleteNotebookApp 切换CodeLab规格 NotebookApp updateNotebookApp
  • 数据校验算子说明(MetaValidation算子) ModelArts的数据校验通过MetaValidation算子实现。当前ModelArts支持jpg、jpeg、bmp、png四种图片格式。物体检测场景支持xml标注格式,不支持“非矩形框”标注。针对您提供的数据集,MetaValidation算子支持对图片和xml文件进行数据校验: 表1 图片类数据校验 异常情况 处理方案 图片本身损坏无法解码 过滤掉不能解码的图片 图片通道可能是1通道、2通道,不是常用的3通道 转换图片成RGB三通道 图片格式不在ModelArts支持的格式范围内 转换图片格式至jpg格式 图片后缀与实际格式不符,但格式在ModelArts支持的格式内 后缀转换成与实际格式一致 图片后缀与实际格式不符,且格式不在ModelArts支持的格式内 转换图片格式至jpg格式 图片分辨率过大 宽、高按指定大小同比例进行裁剪 表2 标注类文件数据校验 异常情况 处理方案 xml结构残缺,无法解析 过滤xml文件 xml中没有标注“object” 过滤xml文件 xml中没有矩形框“bndbox” 过滤xml文件 某些标注“object”中没有矩形框“bndbox” 过滤标注“object” 图片经过裁剪后,xml文件中宽高不符 修改错误宽高参数为图片真实宽高 xml中没有“width”、“height”字段 根据图片真实宽高补全xml中的“width”、“height”字段和值 图片经过裁剪后,xml中矩形框“bndbox”大小不符 按图片裁剪比例缩放xml文件中“bnxbox”值 xml中矩形框“bndbox”宽或高值过小,显示为一条线 矩形框宽或高差值小于2,移除当前“object” xml中矩形框“bndbox”最小值大于最大值 移除当前“object” 矩形框“bndbox”超出图片边界,且超出部分占框面积50%以上 移除当前“object” 矩形框“bndbox”超出图片边界,但超出部分小于框面积50% 矩形框“bndbox”拉回到图片边界 数据校验过程不会改动原始数据,通过校验的图片或xml文件保存在指定的输出路径下。 参数说明 表3 数据校验-MetaValidation算子参数说明 参数名 是否必选 默认值 参数说明 image_max_width 否 -1 输入图片宽度最大值,如果输入图片宽度超过设定值则按比例裁剪。单位为px。 默认值 -1 表示不做裁剪。 image_max_height 否 -1 输入图片长度最大值,如果输入图片长度超过设定值则按比例裁剪。单位为px。 默认值 -1 表示不做裁剪。 输入要求 算子输入分为两种,“数据集”或“OBS目录”。 选择“数据集”,请从下拉框中选择ModelArts中管理的数据集及其版本。要求数据集类型与您在本任务中选择的场景类别一致。 选择“OBS目录”,存放结构又分两种情况,“仅包含图片”或“包含图片和标注信息”。 “仅包含图片”:当目录下全是图片时,支持jpg、jpeg、png、bmp格式,嵌套子目录的图片也将全部读入。 “包含图片和标注信息”:根据不同场景类型,结构不同。 图像分类场景,其目录结构如下所示。如下目录结构,仅支持单标签场景。 input_path/ --label1/ ----1.jpg --label2/ ----2.jpg --../ 物体检测场景,其目录结构如下所示。支持jpg、jpeg、png、bmp格式的图片,xml为标准的PACAL VOC格式标注文件。 input_path/ --1.jpg --1.xml --2.jpg --2.xml ... 输出说明 图像分类 输出数据的目录结构如下所示。 output_path/ --Data/ ----class1/ # 如果输入数据有标注信息会一并输出,class1为标注类别 ------1.jpg ------2_checked.jpg ----class2/ ------3.jpg ------4_checked.jpg ----5_checked.jpg --output.manifest 其中manifest文件内容示例如下所示。会给每一条数据加上一个校验属性"property":{"@modelarts:data_checked":true} { "id": "xss", "source": "obs://hard_example_path/Data/fc8e2688015d4a1784dcbda44d840307_14_checked.jpg", "property": { "@modelarts:data_checked": true }, "usage": "train", "annotation": [ { "name": "Cat", "type": "modelarts/image_classification" } ] } 物体检测 在输出目录下,文件结构如下所示。 output_path/ --Data/ ----1_checked.jpg ----1_checked.xml # 如果输入数据在校验过程中经过了转换,文件名会加上'_checked' ----2.jpg # 如果输入数据未经过转换,则以原来的名字保存 ----2.xml --output.manifest 其中manifest文件内容示例如下所示。会给每一条数据加上一个校验属性"property":{"@modelarts:data_checked":true} { "source": "obs://hard_example_path/Data/be462ea9c5abc09f_checked.jpg", "property": { "@modelarts:data_checked": true }, "annotation": [ { "annotation-loc": "obs://hard_example_path/Data/be462ea9c5abc09f_checked.xml", "type": "modelarts/object_detection", "annotation-format": "PASCAL VOC", "annotated-by": "modelarts/hard_example_algo" } ] }
  • 列举操作 列举一个OBS目录,只返回顶层结果(相对路径),不做递归列举。 例如列举“obs://bucket_name/object_dir”,返回该目录下所有的文件和文件夹,不会递归查询。 假设“obs://bucket_name/object_dir”中有如下结构 1 2 3 4 5 bucket_name |- object_dir |- dir0 |- file00 |- file1 调用如下代码: 1 2 import moxing as mox mox.file.list_directory('obs://bucket_name/object_dir') 返回一个list: ['dir0', 'file1'] 递归列举一个OBS目录,返回目录中所有的文件和文件夹(相对路径),并且会做递归查询。 假设obs://bucket_name/object_dir中有如下结构。 1 2 3 4 5 bucket_name |- object_dir |- dir0 |- file00 |- file1 调用如下代码: 1 2 import moxing as mox mox.file.list_directory('obs://bucket_name/object_dir', recursive=True) 返回一个list: ['dir0', 'dir0/file00', 'file1']
  • 删除操作 删除一个OBS文件。 例如删除“obs://bucket_name/obs_file.txt”。 1 2 import moxing as mox mox.file.remove('obs://bucket_name/obs_file.txt') 删除一个OBS目录,并且递归的删除这个目录下的所有内容。如果这个目录不存在,则会报错。 例如删除“obs://bucket_name/sub_dir_0”下的所有内容。 1 2 import moxing as mox mox.file.remove('obs://bucket_name/sub_dir_0', recursive=True)
  • 查询操作 判断一个OBS文件是否存在,如果存在则返回True,如果不存在则返回False。 1 2 import moxing as mox mox.file.exists('obs://bucket_name/sub_dir_0/file.txt') 判断一个OBS文件夹是否存在,如果存在则返回True,如果不存在则返回False。 1 2 import moxing as mox mox.file.exists('obs://bucket_name/sub_dir_0/sub_dir_1') 由于OBS允许同名的文件和文件夹(Unix操作系统不允许),如果存在同名的文件和文件夹,例如“obs://bucket_name/sub_dir_0/abc”,当调用mox.file.exists时,不论abc是文件还是文件夹,都会返回True。 判断一个OBS路径是否为文件夹,如果是则返回True,否则返回False。 1 2 import moxing as mox mox.file.is_directory('obs://bucket_name/sub_dir_0/sub_dir_1') 由于OBS允许同名的文件和文件夹(Unix操作系统不允许),如果存在同名的文件和文件夹,例如obs://bucket_name/sub_dir_0/abc,当调用mox.file.is_directory时,会返回True。 获取一个OBS文件的大小,单位为bytes。 例如获取“obs://bucket_name/obs_file.txt”的文件大小。 1 2 import moxing as mox mox.file.get_size('obs://bucket_name/obs_file.txt') 递归获取一个OBS文件夹下所有文件的大小,单位为bytes。 例如获取“obs://bucket_name/object_dir”目录下所有文件大小的总和。 1 2 import moxing as mox mox.file.get_size('obs://bucket_name/object_dir', recursive=True) 获取一个OBS文件或文件夹的stat信息,stat信息中包含如下信息。 length:文件大小。 mtime_nsec:创建时间戳。 is_directory:是否为目录。 例如查询一个OBS文件“obs://bucket_name/obs_file.txt”,此文件地址也可以替换成一个文件夹地址。 1 2 3 4 5 import moxing as mox stat = mox.file.stat('obs://bucket_name/obs_file.txt') print(stat.length) print(stat.mtime_nsec) print(stat.is_directory)
  • 移动和复制操作 移动一个OBS文件或文件夹。移动操作本身是用“复制+删除”来实现的。 一个OBS文件移动到另一个OBS文件,例如将“obs://bucket_name/obs_file.txt”移动到“obs://bucket_name/obs_file_2.txt”。 1 2 import moxing as mox mox.file.rename('obs://bucket_name/obs_file.txt', 'obs://bucket_name/obs_file_2.txt') 移动和复制操作不可以跨桶,必须在同一个桶内操作。 从OBS移动到本地,例如将“obs://bucket_name/obs_file.txt”移动到“/tmp/obs_file.txt”。 1 2 import moxing as mox mox.file.rename('obs://bucket_name/obs_file.txt', '/tmp/obs_file.txt') 从本地移动到OBS,例如将“/tmp/obs_file.txt”移动到“obs://bucket_name/obs_file.txt”。 1 2 import moxing as mox mox.file.rename('/tmp/obs_file.txt', 'obs://bucket_name/obs_file.txt') 从本地移动到本地,例如将“/tmp/obs_file.txt”移动到“/tmp/obs_file_2.txt”,该操作相当于os.rename。 1 2 import moxing as mox mox.file.rename('/tmp/obs_file.txt', '/tmp/obs_file_2.txt') 所有的移动操作均可以操作文件夹,如果操作的是文件夹,那么则会递归移动文件夹下所有的内容。 复制一个文件。mox.file.copy仅支持对文件操作,如果要对文件夹进行操作,请使用mox.file.copy_parallel。 从OBS复制到OBS,例如将“obs://bucket_name/obs_file.txt”复制到“obs://bucket_name/obs_file_2.txt”。 1 2 import moxing as mox mox.file.copy('obs://bucket_name/obs_file.txt', 'obs://bucket_name/obs_file_2.txt') 将OBS文件复制到本地,也就是下载一个OBS文件。例如下载“obs://bucket_name/obs_file.txt”到本地“/tmp/obs_file.txt”。 1 2 import moxing as mox mox.file.copy('obs://bucket_name/obs_file.txt', '/tmp/obs_file.txt') 将本地文件复制到OBS,也就是上传一个OBS文件,例如上传“/tmp/obs_file.txt”到“obs://bucket_name/obs_file.txt”。 1 2 import moxing as mox mox.file.copy('/tmp/obs_file.txt', 'obs://bucket_name/obs_file.txt') 将本地文件复制到本地,操作等价于shutil.copyfile,例如将“/tmp/obs_file.txt”复制到“/tmp/obs_file_2.txt”。 1 2 import moxing as mox mox.file.copy('/tmp/obs_file.txt', '/tmp/obs_file_2.txt') 复制一个文件夹。mox.file.copy_parallel仅支持对文件夹操作,如果要对文件进行操作,请使用mox.file.copy。 从OBS复制到OBS,例如将obs://bucket_name/sub_dir_0复制到obs://bucket_name/sub_dir_1 1 2 import moxing as mox mox.file.copy_parallel('obs://bucket_name/sub_dir_0', 'obs://bucket_name/sub_dir_1') 将OBS文件夹复制到本地,也就是下载一个OBS文件夹。例如下载“obs://bucket_name/sub_dir_0”到本地“/tmp/sub_dir_0”。 1 2 import moxing as mox mox.file.copy_parallel('obs://bucket_name/sub_dir_0', '/tmp/sub_dir_0') 将本地文件夹复制到OBS,也就是上传一个OBS文件夹,例如上传“/tmp/sub_dir_0”到“obs://bucket_name/sub_dir_0”。 1 2 import moxing as mox mox.file.copy_parallel('/tmp/sub_dir_0', 'obs://bucket_name/sub_dir_0') 将本地文件夹复制到本地,操作等价于shutil.copytree,例如将“/tmp/sub_dir_0”复制到“/tmp/sub_dir_1”。 1 2 import moxing as mox mox.file.copy_parallel('/tmp/sub_dir_0', '/tmp/sub_dir_1')
  • 读写操作 读取一个OBS文件。 例如读取“obs://bucket_name/obs_file.txt”文件内容,返回string(字符串类型)。 1 2 import moxing as mox file_str = mox.file.read('obs://bucket_name/obs_file.txt') 也可以使用打开文件对象并读取的方式来实现,两者是等价的。 1 2 3 import moxing as mox with mox.file.File('obs://bucket_name/obs_file.txt', 'r') as f: file_str = f.read() 从文件中读取一行,返回string,以换行符结尾。同样可以打开OBS的文件对象。 1 2 3 import moxing as mox with mox.file.File('obs://bucket_name/obs_file.txt', 'r') as f: file_line = f.readline() 从文件中读取所有行,返回一个list,每个元素是一行,以换行符结尾。 1 2 3 import moxing as mox with mox.file.File('obs://bucket_name/obs_file.txt', 'r') as f: file_line_list = f.readlines() 以二进制模式读取一个OBS文件。 例如读取“obs://bucket_name/obs_file.bin”文件内容,返回bytes(字节类型)。 1 2 import moxing as mox file_bytes = mox.file.read('obs://bucket_name/obs_file.bin', binary=True) 也可以使用打开文件对象并读取的方式来实现,两者是等价的。 1 2 3 import moxing as mox with mox.file.File('obs://bucket_name/obs_file.bin', 'rb') as f: file_bytes = f.read() 以二进制模式打开的文件也支持读取一行或者读取所有行,用法不变。 将字符串写入一个文件。 例如将字符串“Hello World!”写入OBS文件“obs://bucket_name/obs_file.txt”中。 1 2 import moxing as mox mox.file.write('obs://bucket_name/obs_file.txt', 'Hello World!') 也可以使用打开文件对象并写入的方式来实现,两者是等价的。 1 2 3 import moxing as mox with mox.file.File('obs://bucket_name/obs_file.txt', 'w') as f: f.write('Hello World!') 用写入模式打开文件或者调用mox.file.write时,如果被写入文件不存在,则会创建,如果已经存在,则会覆盖。 追加一个OBS文件。 例如将字符串“Hello World!”追加到“obs://bucket_name/obs_file.txt”文件中。 1 2 import moxing as mox mox.file.append('obs://bucket_name/obs_file.txt', 'Hello World!') 也可以使用打开文件对象并追加的方式来实现,两者是等价的。 1 2 3 import moxing as mox with mox.file.File('obs://bucket_name/obs_file.txt', 'a') as f: f.write('Hello World!') 用追加模式打开文件或者调用mox.file.append时,如果被写入文件不存在,则会创建,如果已经存在,则直接追加。 当被追加的源文件比较大时,例如“obs://bucket_name/obs_file.txt”文件大小超过5MB时,追加一个OBS文件的性能比较低。 如果以写入模式或追加模式打开文件,当调用write方法时,待写入内容只是暂时的被存在的缓冲区,直到关闭文件对象(退出with语句时会自动关闭文件对象)或者主动调用文件对象的close()方法或flush()方法时,文件内容才会被写入。
  • ModelArts Standard资源监控概述 ModelArts Standard支持通过以下方式查看监控指标: 在ModelArts控制台查看监控指标:您在可ModelArts总览页或各模块资源监控页签查看监控指标。 在 AOM 控制台查看ModelArts所有监控指标:ModelArts Standard上报的所有指标都保存在AOM中,用户可以通过AOM服务提供的指标消费和使用的能力来进行指标消费。设置指标阈值告警、告警上报等,都可以直接在AOM控制台查看。 使用Grafana查看AOM中的监控指标:使用Grafana等可视化工具来查看与分析,Grafana支持灵活而又复杂多样的监控视图和模板,为用户提供基于网页仪表面板的可视化监控效果,使用户更加直观地查看到实时资源使用情况。 Grafana可以满足绝大部分情况下用户的诉求。将Grafana的数据源配置完成后,就可以通过Grafana查看AOM保存的所有ModelArts Standard的所有指标。 通过Grafana插件查看AOM中的监控指标的操作流程如下: 安装配置Grafana 安装配置Grafana有在Windows上安装配置Grafana、在Linux上安装配置Grafana和在Notebook上安装配置Grafana三种方式,请您根据实际情况选择。 配置Grafana数据源 配置仪表盘查看指标数据 父主题: ModelArts Standard资源监控
  • 使用案例 int类型参数 from modelarts import workflow as wf wf.Placeholder(name="placeholder_int", placeholder_type=wf.PlaceholderType.INT, default=1, description="这是一个int类型的参数") str类型参数 from modelarts import workflow as wf wf.Placeholder(name="placeholder_str", placeholder_type=wf.PlaceholderType.STR, default="default_value", description="这是一个str类型的参数") bool类型参数 from modelarts import workflow as wf wf.Placeholder(name="placeholder_bool", placeholder_type=wf.PlaceholderType.BOOL, default=True, description="这是一个bool类型的参数") float类型参数 from modelarts import workflow as wf wf.Placeholder(name="placeholder_float", placeholder_type=wf.PlaceholderType.FLOAT, default=0.1, description="这是一个float类型的参数") Enum类型参数 from modelarts import workflow as wf wf.Placeholder(name="placeholder_enum", placeholder_type=wf.PlaceholderType.ENUM, default="a", enum_list=["a", "b"], description="这是一个enum类型的参数") dict类型参数 from modelarts import workflow as wf wf.Placeholder(name="placeholder_dict", placeholder_type=wf.PlaceholderType.JSON, default={"key": "value"}, description="这是一个dict类型的参数") list类型参数 from modelarts import workflow as wf wf.Placeholder(name="placeholder_list", placeholder_type=wf.PlaceholderType.LIST, default=[1, 2], placeholder_format="int", description="这是一个list类型的参数,并且value类型为int")
  • 修改成员信息 团队中的成员,当其信息发生变化时,可以编辑其基本情况。 在“团队详情”区域,选择需修改的成员。 在成员所在行的“操作”列,单击“修改”。在弹出的对话框中,修改其“描述”或“角色”。 成员的“邮箱”无法修改,如果需要修改邮箱地址,建议先删除此成员,然后再基于新的邮箱地址添加新成员。 “角色”支持“Labeler”、“Reviewer”和“Team Manager”,“Team Manager”只能设置为一个人。
  • 打通VPC(可选) 通过打通VPC,可以方便用户跨VPC使用资源,提升资源利用率。 在“网络”页签,单击网络列表中某个网络操作列的“打通VPC”。 图4 打通VPC 在打通VPC弹框中,打开“打通VPC”开关,在下拉框中选择可用的VPC和子网。 需要打通的对端网络不能和当前网段重叠。 图5 打通VPC参数选择 如果没有VPC可选,可以单击右侧的“创建虚拟私有云”,跳转到网络控制台,申请创建虚拟私有云。 如果没有子网可选,可以单击右侧的“创建子网”,跳转到网络控制台,创建可用的子网。 支持1个VPC下多个子网的打通,如果VPC下有多个子网,会显示“+”,您可单击“+”即可添加子网(上限10个)。 如果需要使用打通VPC的方式实现专属资源池访问公网,由于要访问的公网地址不确定,一般是建议用户在VPC中创建SNAT。此场景下,在打通VPC后,专属资源池中作业访问公网地址,默认不能转发到用户VPC的SNAT,需要提交工单联系技术支持在专属资源池VPC的路由中添加指向对等连接的缺省路由。当您开启默认路由后,在打通VPC时,会将ModelArts网络0.0.0.0/0路由作为默认路由,此时无需提交工单添加缺省路由即可完成网络配置。
  • 常见问题 创建专属资源池时,能选到规格但最终创建时发生报错,提示无可用资源? 由于专属资源的可选规格是动态监测的,因此在极少数情况下会出现,规格在购买界面可以被选择,但由于没有及时支付和创建资源池,导致该规格售罄创建失败。 建议您在创建界面更换规格重新创建资源池。 为什么无法使用资源池节点上的全部CPU资源? 由于资源池节点上会安装系统、插件等内容,因此不能完全使用所有资源。例如:资源池节点是8U,节点分配给系统组件部分CPU,可用的资源会小于8U。 建议您在启动任务前,在该资源池的详情页中,单击“节点”页签,查看实际可用的CPU资源。
  • Standard使用流程说明 ModelArts Standard平台提供了从数据准备到模型部署的AI全流程开发,兼容开发者的使用习惯,支持多种引擎和用户场景,使用自由度较高。针对AI开发的每个环节,Standard功能使用相对自由,您可以根据实际需要选择其中的环节。下文介绍使用ModelArts平台,从准备数据到完成模型开发上线的全流程。 图1 Standard使用流程 表1 使用流程说明 流程 子任务 说明 详细指导 配置权限 快速配置ModelArts委托授权 ModelArts功能使用还依赖与其他云服务的交互,需要先配置委托授权,允许ModelArts访问相关依赖服务。 快速配置ModelArts委托授权 创建IAM用户并授权使用ModelArts 对于企业或高校用户,需要创建独立的IAM用户和子用户,并对用户进行细粒度的权限配置,以达到精细化资源、权限管理之目的时,需要参考此章节配置。 创建IAM用户并授权使用ModelArts 创建OBS桶(可选) 创建OBS桶用于ModelArts存储数据 由于ModelArts本身没有数据存储的功能,使用Modelarts Standard进行AI开发过程中的输入数据、输出数据、中间缓存数据都可以在OBS桶中进行存储、读取。因此,建议您在使用ModelArts之前先创建一个OBS桶。 创建OBS桶可以提前完成,也可以在后续使用到时再创建。 创建OBS桶用于ModelArts存储数据 准备资源(可选) 创建Stanard专属资源池 ModelArts Standard支持公共资源池和专属资源池。 公共资源池:方便快捷,无需创建,创建训练推理任务时直接选择即可。此时,忽略此步骤。 专属资源池:用户独占资源,需要先购买创建。如果使用专属资源池,需要完成此步骤。 创建Standard专属资源池 准备数据(可选) 创建数据集 ModelArts Standard提供了数据管理功能,用户可以在ModelArts Standard中创建数据集,用于管理、预处理、标注数据。 如果用户已经准备了可用于训练的数据,直接上传到OBS即可,无需使用数据管理功能。 创建数据集 标注数据 发布数据集 开发调试 创建Notebook 创建一个Notebook作为开发环境,用于调试训练和推理代码。 建议先在开发环境中调试完成训练代码后再创建生产训练任务。 创建Notebook实例 训练模型 准备算法 创建训练作业前需要先准备算法,可以订阅AI Gallery中的算法,也可以使用用户自己的算法。 准备算法 创建训练作业 创建一个训练作业,选择可用的数据集版本,并使用前面编写完成的训练脚本。训练完成后,将生成模型并存储至OBS中。 创建训练作业 管理AI应用 编写推理代码和配置文件 针对您生成的模型,建议您按照ModelArts提供的模型包规范,编写推理代码和配置文件,并将推理代码和配置文件存储至训练输出位置。 模型包规范介绍 创建AI应用 将训练完成的模型导入至ModelArts创建为AI应用,方便将AI应用部署上线。 创建AI应用 部署AI应用 部署服务 ModelArts支持将模型部署为在线服务、批量服务和边缘服务。 部署为在线服务 部署为批量服务 访问服务 服务部署完成后,针对在线服务和边缘服务,您可以访问并使用服务,针对批量服务,您可以查看其预测结果。 访问在线服务 查看批量服务预测结果
  • Standard使用场景介绍 ModelArts Standard是面向AI开发者的一站式开发平台,提供了简洁易用的管理控制台,包含自动学习、数据管理、开发环境、模型训练、模型管理、部署上线等端到端的AI开发工具链。 Standard的自动学习可以帮助用户零代码构建AI模型。自动学习功能根据标注数据自动设计模型、自动调参、自动训练、自动压缩和部署模型。开发者无需专业的开发基础和编码能力,只需上传数据,通过自动学习界面引导和简单操作即可完成模型训练和部署。具体请参见自动学习简介。 Standard的Workflow是一套低代码的AI开发流水线工具,覆盖数据标注、数据处理、模型开发、训练、模型评估、部署上线等步骤,提供可视化的工作流运行方式。具体请参见什么是Workflow。 Standard的开发环境Notebook提供了云上JupyterLab环境和本地IDE插件,方便用户编写训练推理代码,并使用云上资源进行代码调试。具体请参见Notebook使用场景。 Standard的模型训练功能提供了界面化的训练调试环境和生产环境,用户可以使用自己的数据和算法,利用Standard提供的计算资源开展模型训练。具体请参见使用ModelArts Standard训练模型。 Standard的推理部署功能提供了界面化的推理部署生产环境,AI模型开发完成后,在Standard中可以纳管AI模型并快速部署为推理服务,您可以进行在线推理预测,也可以通过调用API把AI推理能力集成到自己的IT平台。具体请参见推理部署使用场景。
  • 团队标注使用流程 数据标注任务中,一般由一个人完成,但是针对数据集较大时,需要多人协助完成。ModelArts提供了团队标注功能,可以由多人组成一个标注团队,针对同一个数据集进行标注管理。 团队标注功能当前仅支持“图像分类”、“物体检测”、“文本分类”、“命名实体”、“文本三元组”、“语音分割”类型的数据集。 针对启用团队标注功能的数据标注任务,支持创建团队标注任务,将标注任务指派给不同的团队,由多人完成标注任务。同时,在成员进行数据标注过程中,支持发起验收、继续验收以及查看验收报告等功能。 团队标注功能是以团队为单位进行管理,数据集启用团队标注功能时,必须指定一个团队。一个团队可以添加多个成员。 一个账号最多可添加10个团队。 如果数据集需要启用团队标注功能,当前账号至少拥有一个团队。如果没有,请执行添加团队操作添加。 父主题: 通过团队标注方式标注数据
  • 标注音频(语音分割) 标注作业详情页中,展示了此标注作业中“未标注”和“已标注”的音频,默认显示“未标注”的音频列表。 在“未标注”页签左侧音频列表中,单击目标音频文件,在右侧的区域中出现音频,单击音频下方,即可进行音频播放。 根据播放内容,选取合适的音频段,在下方“语音内容”文本框中填写音频标签和内容。 图4 语音标签音频标注 输入内容后单击下方的“确认标注”按钮完成标注。音频将被自动移动至“已标注”页签。
  • 标注音频(声音分类) 标注作业详情页中,展示了此标注作业中“未标注”和“已标注”的音频,默认显示“未标注”的音频列表。单击音频左侧,即可进行音频的试听。 在“未标注”页签,勾选需进行标注的音频。 手工点选:在音频列表中,单击音频,当右上角出现蓝色勾选框时,表示已勾选。可勾选同类别的多个音频,一起添加标签。 批量选中:如果音频列表的当前页,所有音频属于一种类型,可以在列表的右上角单击“选择当前页”,则当前页面所有的音频将选中。 添加标签。 在右侧的“添加标签”区域中,单击“标签”下侧的文本框设置标签。 方式一(已存在标签):单击“标签”下方的文本框,在快捷键下拉列表中选择快捷键,然后在标签文本输入框中选择已有的标签名称,然后单击“确定”。 方式二(新增标签):在“标签”下方的文本框中,在快捷键下拉列表中选择快捷键,然后在标签文本输入框中输入新的标签名称,然后单击“确定”。 选中的音频将被自动移动至“已标注”页签,且在“未标注”页签中,标签的信息也将随着标注步骤进行更新,如增加的标签名称、各标签对应的音频数量。 快捷键的使用说明:为标签指定快捷键后,当您选择一段音频后,在键盘中按一下快捷键,即可为此音频增加为此快捷键对应的标签。例如“aa”标签对应的快捷键是“1”,在数据标注过程中,选中1个或多个文件,按“1”,界面将提示是否需要将此文件标注为“aa”标签,单击确认即可完成标注。 快捷键对应的是标签,1个标签对应1个快捷键。不同的标签,不能指定为同一个快捷键。快捷键的使用,可以大大提升标注效率。 图2 添加音频标签
  • Step2 准备训练脚本并上传至OBS 准备本案例所需的训练脚本“pytorch-verification.py”文件,并上传至OBS桶的“obs://test-modelarts/pytorch/demo-code/”文件夹下。 “pytorch-verification.py”文件内容如下: import torch import torch.nn as nn x = torch.randn(5, 3) print(x) available_dev = torch.device("cuda") if torch.cuda.is_available() else torch.device("cpu") y = torch.randn(5, 3).to(available_dev) print(y)
  • Step1 创建OBS桶和文件夹 在OBS服务中创建桶和文件夹,用于存放样例数据集以及训练代码。需要创建的文件夹列表如表1所示,示例中的桶名称“test-modelarts”和文件夹名称均为举例,请替换为用户自定义的名称。 创建OBS桶和文件夹的操作指导请参见创建桶和新建文件夹。 请确保您使用的OBS与ModelArts在同一区域。 表1 OBS桶文件夹列表 文件夹名称 用途 “obs://test-modelarts/pytorch/demo-code/” 用于存储训练脚本文件。 “obs://test-modelarts/pytorch/log/” 用于存储训练日志文件。
  • Step5 上传镜像至SWR服务 登录 容器镜像服务 控制台,选择区域,要和ModelArts区域保持一致,否则无法选择到镜像。 单击右上角“创建组织”,输入组织名称完成组织创建。请自定义组织名称,本示例使用“deep-learning”,下面的命令中涉及到组织名称“deep-learning”也请替换为自定义的值。 单击右上角“登录指令”,获取登录访问指令,本文选择复制临时登录指令。 以root用户登录本地环境,输入复制的SWR临时登录指令。 上传镜像至容器 镜像服务 镜像仓库。 使用docker tag命令给上传镜像打标签。 #region和domain信息请替换为实际值,组织名称deep-learning也请替换为自定义的值。 sudo docker tag pytorch:1.8.1-cuda11.1 swr.{region-id}.{domain}/deep-learning/pytorch:1.8.1-cuda11.1 #此处以华为云cn-north-4为例 sudo docker tag pytorch:1.8.1-cuda11.1 swr.cn-north-4.myhuaweicloud.com/deep-learning/pytorch:1.8.1-cuda11.1 使用docker push命令上传镜像。 #region和domain信息请替换为实际值,组织名称deep-learning也请替换为自定义的值。 sudo docker push swr.{region-id}.{domain}/deep-learning/pytorch:1.8.1-cuda11.1 #此处以华为云cn-north-4为例 sudo docker push swr.cn-north-4.myhuaweicloud.com/deep-learning/pytorch:1.8.1-cuda11.1 完成镜像上传后,在容器镜像服务控制台的“我的镜像”页面可查看已上传的 自定义镜像 。 “swr.cn-north-4.myhuaweicloud.com/deep-learning/pytorch:1.8.1-cuda11.1”即为此自定义镜像的“SWR_URL”。
  • 发布Workflow至运行态 工作流编写完成后,可以进行固化保存,调用Workflow对象的release()方法发布到运行态进行配置执行(在管理控制台Workflow页面配置)。 执行如下命令: workflow.release() 上述命令执行完成后,如果日志打印显示发布成功,则可前往ModelArts的Workflow页面中查看新发布的工作流,进入Workflow详情,单击“配置”进行参数配置。工作流相关的配置执行操作可参考如何使用Workflow。 基于release()方法,提供了release_and_run()方法,支持用户在开发态发布并运行工作流,节省了前往console配置执行的操作。 使用该方法时需要注意以下几个事项: Workflow中所有出现占位符相关的配置对象时,均需要设置默认值,或者直接使用固定的数据对象 方法的执行依赖于Workflow对象的名称:当该名称的工作流不存在时,则创建新工作流并创建新执行;当该名称的工作流已存在时,则更新存在的工作流并基于新的工作流结构创建新的执行 workflow.release_and_run()
  • 发布Workflow至运行态并运行 该方式支持用户直接在SDK侧发布并运行工作流,节省了前往控制台进行配置运行的操作,对Workflow代码改造如下。 from modelarts import workflow as wf # 定义统一存储对象管理输出目录 output_storage = wf.data.OutputStorage(name="output_storage", description="输出目录统一配置", default="**") # 数据集对象 dataset = wf.data.DatasetPlaceholder(name="input_data", default=wf.data.Dataset(dataset_name="**", version_name="**")) # 创建训练作业 job_step = wf.steps.JobStep( name="training_job", title="图像分类训练", algorithm=wf.AIGalleryAlgorithm( subscription_id="**", # 图像分类算法的订阅ID,自行前往算法管理页面进行查看,可选参数,此处以订阅算法举例 item_version_id="10.0.0", # 订阅算法的版本号,可选参数,此处以订阅算法举例 parameters=[ wf.AlgorithmParameters(name="task_type", value="image_classification_v2"), wf.AlgorithmParameters(name="model_name", value="resnet_v1_50"), wf.AlgorithmParameters(name="do_train", value="True"), wf.AlgorithmParameters(name="do_eval_along_train", value="True"), wf.AlgorithmParameters(name="variable_update", value="horovod"), wf.AlgorithmParameters(name="learning_rate_strategy", value=wf.Placeholder(name="learning_rate_strategy", placeholder_type=wf.PlaceholderType.STR, default="0.002", description="训练的学习率策略(10:0.001,20:0.0001代表0-10个epoch学习率0.001,10-20epoch学习率0.0001),如果不指定epoch, 会根据验证精度情况自动调整学习率,并当精度没有明显提升时,训练停止")), wf.AlgorithmParameters(name="batch_size", value=wf.Placeholder(name="batch_size", placeholder_type=wf.PlaceholderType.INT, default=64, description="每步训练的图片数量(单卡)")), wf.AlgorithmParameters(name="eval_batch_size", value=wf.Placeholder(name="eval_batch_size", placeholder_type=wf.PlaceholderType.INT, default=64, description="每步验证的图片数量(单卡)")), wf.AlgorithmParameters(name="evaluate_every_n_epochs", value=wf.Placeholder(name="evaluate_every_n_epochs", placeholder_type=wf.PlaceholderType.FLOAT, default=1.0, description="每训练n个epoch做一次验证")), wf.AlgorithmParameters(name="save_model_secs", value=wf.Placeholder(name="save_model_secs", placeholder_type=wf.PlaceholderType.INT, default=60, description="保存模型的频率(单位:s)")), wf.AlgorithmParameters(name="save_summary_steps", value=wf.Placeholder(name="save_summary_steps", placeholder_type=wf.PlaceholderType.INT, default=10, description="保存summary的频率(单位:步)")), wf.AlgorithmParameters(name="log_every_n_steps", value=wf.Placeholder(name="log_every_n_steps", placeholder_type=wf.PlaceholderType.INT, default=10, description="打印日志的频率(单位:步)")), wf.AlgorithmParameters(name="do_data_cleaning", value=wf.Placeholder(name="do_data_cleaning", placeholder_type=wf.PlaceholderType.STR, default="True", description="是否进行数据清洗, 数据格式异常会导致训练失败,建议开启,保证训练稳定性。数据量过大时,数据清洗可能耗时较久,可自行线下清洗(支持BMP.JPEG,PNG格式, RGB三通道)。建议用JPEG格式数据")), wf.AlgorithmParameters(name="use_fp16", value=wf.Placeholder(name="use_fp16", placeholder_type=wf.PlaceholderType.STR, default="True", description="是否使用混合精度, 混合精度可以加速训练,但是可能会造成一点精度损失,如果对精度无极严格的要求,建议开启")), wf.AlgorithmParameters(name="xla_compile", value=wf.Placeholder(name="xla_compile", placeholder_type=wf.PlaceholderType.STR, default="True", description="是否开启xla编译,加速训练,默认启用")), wf.AlgorithmParameters(name="data_format", value=wf.Placeholder(name="data_format", placeholder_type=wf.PlaceholderType.ENUM, default="NCHW", enum_list=["NCHW", "NHWC"], description="输入数据类型,NHWC表示channel在最后,NCHW表channel在最前,默认值NCHW(速度有提升)")), wf.AlgorithmParameters(name="best_model", value=wf.Placeholder(name="best_model", placeholder_type=wf.PlaceholderType.STR, default="True", description="是否在训练过程中保存并使用精度最高的模型,而不是最新的模型。默认值True,保存最优模型。在一定误差范围内,最优模型会保存最新的高精度模型")), wf.AlgorithmParameters(name="jpeg_preprocess", value=wf.Placeholder(name="jpeg_preprocess", placeholder_type=wf.PlaceholderType.STR, default="True", description="是否使用jpeg预处理加速算子(仅支持jpeg格式数据),可加速数据读取,提升性能,默认启用。如果数据格式不是jpeg格式,开启数据清洗功能即可使用")) ] ), inputs=[wf.steps.JobInput(name="data_url", data=dataset)], outputs=[wf.steps.JobOutput(name="train_url", obs_config=wf.data.OBSOutputConfig(obs_path=output_storage.join("/train_output/")))], spec=wf.steps.JobSpec( resource=wf.steps.JobResource( flavor=wf.Placeholder( name="training_flavor", placeholder_type=wf.PlaceholderType.JSON, description="训练资源规格", default={"flavor_id": "**"} ) ) ) ) # 构建工作流对象 workflow = wf.Workflow( name="image-classification-ResNeSt", desc="this is a image classification workflow", steps=[job_step], storages=[output_storage] ) 用户需要完成上述代码中**部分的配置,主要涉及以下三项。 统一存储:output_storage对象的default值,需填写一个已存在的OBS路径,路径格式为:/OBS桶名称/文件夹路径/。 数据集对象:使用准备数据集章节下载的数据集即可,填写相应的数据集名称以及版本号。 训练资源规格:配置计算资源。由于举例的算法只能跑GPU,此处必须配置GPU类型的资源,可使用免费规格(modelarts.p3.large.public.free)。 配置项修改完成后执行如下代码。 workflow.release_and_run() 执行完成后可前往ModelArts管理控制台,在总览页中选择Workflow,查看工作流的运行情况。
  • 设置告警规则 通过设置ModelArts在线服务和模型负载告警规则,用户可自定义监控目标与通知策略,及时了解ModelArts在线服务和模型负载状况,从而起到预警作用。 设置ModelArts服务和模型的告警规则包括设置告警规则名称、监控对象、监控指标、告警阈值、监控周期和是否发送通知等参数。本节介绍了设置ModelArts服务和模型告警规则的具体方法。 只有“运行中”的在线服务,支持对接 CES 监控。
  • Notebook自定义镜像规范 制作自定义镜像时,Base镜像需满足如下规范: 基于昇腾、Dockerhub官网等官方开源的镜像制作,开源镜像需要满足如下操作系统约束: x86:Ubuntu18.04、Ubuntu20.04 ARM:Euler2.8.3、Euler2.10.7 Ubuntu20.04.6可能有兼容性问题,请优先使用低于该版本的操作系统。 不满足以上镜像规范,所制作的镜像使用可能会出现故障,请用户检查镜像规范,并参考Notebook自定义镜像故障基础排查自行排查,如未解决请联系华为技术工程师协助解决。
  • Notebook自定义镜像制作流程 图1 Notebook自定义镜像制作流程图(适用于场景一和场景二) 场景一:基于Notebook预置镜像或第三方镜像,在服务器上配置docker环境,编写Dockerfile后构建镜像并注册,具体案例参考在E CS 上构建自定义镜像并在Notebook中使用 场景二:基于Notebook提供的预置镜像或第三方镜像,借助ModelArts命令行工具(ma-cli镜像构建命令介绍)制作和注册镜像,构建一个面向AI开发的自定义镜像。此场景Notebook作为制作镜像的平台。具体案例参考在Notebook中通过Dockerfile从0制作自定义镜像。 场景三:通过预置的镜像创建Notebook实例,在预置镜像上安装对应的自定义软件和依赖,进而将运行的实例环境以容器镜像的方式保存下来。具体案例参考在Notebook中通过镜像保存功能制作自定义镜像。
共100000条