更新时间:2024-07-25 GMT+08:00

创建算法

针对您在本地或使用其他工具开发的算法,支持上传至ModelArts中统一管理。在创建自定义算法过程中,您需要关注以下内容:

  1. 前提条件
  2. 进入创建算法页面
  3. 设置算法基本信息
  4. 设置算法启动方式
  5. 输入输出管道设置
  6. 定义超参
  7. 支持的策略
  8. 添加训练约束
  9. 运行环境预览
  10. 后续操作

前提条件

  • 数据已完成准备:已在ModelArts中创建可用的数据集,或者您已将用于训练的数据集上传至OBS目录。
  • 请准备好训练脚本,并上传至OBS目录。训练脚本开发指导参见开发自定义脚本
  • 已在OBS创建至少1个空的文件夹,用于存储训练输出的内容。
  • 由于训练作业运行需消耗资源,确保账户未欠费。
  • 确保您使用的OBS目录与ModelArts在同一区域。

进入创建算法页面

  1. 登录ModelArts管理控制台,单击左侧菜单栏的“算法管理”
  2. “我的算法”管理页面,单击“创建”,进入“创建算法”页面。

设置算法基本信息

填写算法的基本信息,包含“名称”“描述”

设置算法启动方式

选择“预置框架”创建算法。

用户需根据实际算法代码情况设置“镜像”“代码目录”“启动文件”。选择的AI镜像和编写算法代码时选择的框架必须一致。例如编写算法代码使用的是TensorFlow,则在创建算法时也要选择TensorFlow镜像。
表1 启动方式参数说明

参数

说明

“启动方式-预置框架”

选择算法使用的预置框架引擎和引擎版本。勾选“显示旧版镜像”,可以选择旧版预置框架。

“代码目录”

算法代码存储的OBS路径。训练代码、依赖安装包或者预生成模型等训练所需文件上传至该代码目录下。

请注意不要将训练数据放在代码目录路径下。训练数据比较大,训练代码目录在训练作业启动后会下载至后台,可能会有下载失败的风险。

训练作业创建完成后,ModelArts会将代码目录及其子目录下载至训练后台容器中。

例如:OBS路径“obs://obs-bucket/training-test/demo-code”作为代码目录,OBS路径下的内容会被自动下载至训练容器的“${MA_JOB_DIR}/demo-code”目录中,demo-code为OBS存放代码路径的最后一级目录,用户可以根据实际修改。

说明:
  • 编程语言不限。
  • 文件数(含文件、文件夹数量)小于或等于1000个。
  • 文件总大小小于或等于5GB。

“启动文件”

必须为“代码目录”下的文件,且以“.py”结尾,即ModelArts目前只支持使用Python语言编写的启动文件。

代码目录路径中的启动文件为训练启动的入口。

图1 使用自定义脚本创建算法

输入输出管道设置

训练过程中,基于预置框架的算法需要从OBS桶或者数据集中获取数据进行模型训练,训练产生的输出结果也需要存储至OBS桶中。用户的算法代码中需解析输入输出参数实现ModelArts后台与OBS的数据交互,用户可以参考开发自定义脚本完成适配ModelArts训练的代码开发。

创建基于预置框架的算法时,用户需要配置算法代码中定义的输入输出参数。

  • 输入配置
    表2 输入配置

    参数

    参数说明

    参数名称

    根据实际代码中的输入数据参数定义此处的名称。此处设置的代码路径参数必须与算法代码中解析的训练输入数据参数保持一致,否则您的算法代码无法获取正确的输入数据。

    例如,算法代码中使用argparse解析的data_url作为输入数据的参数,那么创建算法时就需要配置输入数据的参数名称为“data_url”

    描述

    输入参数的说明,用户可以自定义描述。

    获取方式

    输入参数的获取方式,默认使用“超参”,也可以选择“环境变量”

    输入约束

    开启后,用户可以根据实际情况限制数据输入来源。输入来源可以选择“数据存储位置”或者“ModelArts数据集”

    如果用户选择数据来源为ModelArts数据集,还可以约束以下三种:

    • 标注类型。数据类型请参考标注数据
    • 数据格式。可选“Default”“CarbonData”,支持多选。其中“Default”代表Manifest格式。
    • 数据切分。仅“图像分类”、“物体检测”、“文本分类”和“声音分类”类型数据集支持进行数据切分功能。

      可选“仅支持切分的数据集”“仅支持未切分数据集”“无限制”。数据切分详细内容可参考发布数据版本

    添加

    用户可以根据实际算法添加多个输入数据来源。

  • 输出配置
    表3 输出配置

    参数

    参数说明

    参数名称

    根据实际代码中的训练输出参数定义此处的名称。此处设置的代码路径参数必须与算法代码中解析的训练输出参数保持一致,否则您的算法代码无法获取正确的输出路径。

    例如,算法代码中使用argparse解析的train_url作为训练输出数据的参数,那么创建算法时就需要配置输出数据的参数名称为“train_url”

    描述

    输出参数的说明,用户可以自定义描述。

    获取方式

    输出参数的获取方式,默认使用“超参”,也可以选择“环境变量”

    添加

    用户可以根据实际算法添加多个输出数据路径。

定义超参

使用预置框架创建算法时,ModelArts支持用户自定义超参,方便用户查阅或修改。定义超参后会体现在启动命令中,以命令行参数的形式传入您的启动文件中。

  1. 导入超参

    您可以单击“增加超参”手动添加超参。

  2. 编辑超参

    超参的参数说明参见表4

    表4 超参编辑参数

    参数

    说明

    名称

    填入超参名称。

    超参名称支持64个以内字符,仅支持大小写字母、数字、下划线和中划线。

    类型

    填入超参的数据类型。支持String、Integer、Float和Boolean。

    默认值

    填入超参的默认值。创建训练作业时,默认使用该值进行训练。

    约束

    单击“约束”。在弹出对话框中,支持用户设置默认值的取值范围或者枚举值范围。

    必需

    选择是或否。

    • 选择否,则在使用该算法创建训练作业时,支持在创建训练作业页面删除该超参。
    • 选择是,则在使用该算法创建训练作业时,不支持在创建训练作业页面删除该超参。

    描述

    填入超参的描述说明。

    超参描述支持大小写字母、中文、数字、空格、中划线、下划线、中英文逗号和中英文句号。

支持的策略

ModelArts支持用户使用自动化搜索功能。自动化搜索功能在零代码修改的前提下,自动找到最合适的超参,有助于提高模型精度和收敛速度。详细的参数配置请参考超参搜索配置

自动搜索目前仅支持pytorch_1.8.0-cuda_10.2-py_3.7-ubuntu_18.04-x86_64, tensorflow_2.1.0-cuda_10.1-py_3.7-ubuntu_18.04-x86_64镜像。

添加训练约束

用户可以根据实际情况定义此算法的训练约束。

  • 资源类型:选择适用的资源类型,支持多选。
  • 多卡训练:选择是否支持多卡训练。
  • 分布式训练:选择是否支持分布式训练。

运行环境预览

创建算法时,可以打开创建页面右下方的运行环境预览窗口,辅助您了解代码目录、启动文件、输入输出等数据配置在训练容器中的路径。

后续操作

创建算法完成后,可以使用算法创建训练作业,详细操作请参见创建训练作业