什么是ModelArts?

ModelArts是面向AI开发者的一站式开发平台,提供海量数据预处理及半自动化标注、大规模分布式训练、自动化模型生成及端-边-云模型按需部署能力,帮助用户快速创建和部署模型,管理全周期AI工作流。

"一站式"是指AI开发的各个环节,包括数据处理、算法开发、模型训练、部署都可以在ModelArts上完成。ModelArts底层支持各种异构计算资源,开发者可以根据需要灵活选择使用,而不需要关心底层的技术。

产品优势

即使您是一个毫无AI经验的开发者,也可以开"箱"即用。ModelArts平台涵盖AI开发全流程,可灵活使用其中一个到多个功能用于开发工作。

  1. 提供多种预置模型,开源模型想用就用。
  2. 模型超参自动优化,简单快速。
  3. 零代码开发,简单操作训练出自己的模型。
  4. 支持模型一键部署到云、边、端。
  1. 自研MoXing深度学习框架,提升算法开发效率和训练速度。
  2. 优化深度模型推理中GPU的利用率,加速云端在线推理。
  3. 可生成在Ascend芯片上运行的模型,实现高效端边推理。

案例目标

在这个样例中,您将使用先进的ModelArts开发平台,开发一个"花卉识别"的自动学习图片分类模型,并能够测试模型的图片分类功能。您上传一张花卉图片,模型将自动识别出花卉的种类,让我们开始神奇的旅程吧!

案例内容

第一步:创建华为云账号

在使用华为云服务之前,您需要申请华为云帐号。通过此帐号,只需为您所使用的服务付费,就可以使用所有华为云服务。

操作步骤

  1. 进入华为云首页,单击页面右上角的"注册"。
  2. 设置手机号、短信验证码、账号名、密码并勾选"我已阅读并同意《华为云用户协议》和《隐私政策声明》",单击"同意协议并注册"。
  3. 页面提示注册成功后,使用注册的用户,登录华为云。

第二步:获取访问密钥并完成ModelArts全局配置

在使用ModelArts训练作业、模型管理以及Notebook时,需要使用OBS存放数据。因此,在使用ModelArts进行AI模型开发前,您需要获取访问密钥并在ModelArts管理控制台完成添加访问秘钥的配置。

获取访问秘钥

  1. 登录华为云,鼠标移动至页面右上方用户名,在下拉列表中选择"账号中心"。

  1. 进入"账号中心"页面,在"基本信息"页签,选择"管理我的凭证"。

  1. 进入"我的凭证"页面,选择"管理访问密钥"下的"新增访问密钥"。

  1. 进入"新增访问密钥"页面,输入当前用户的登录密码,通过已验证手机或已验证邮箱进行验证,输入对应的验证码。

  1. 单击"确定",根据浏览器提示,保存密钥文件。密钥文件会直接保存到浏览器默认的下载文件夹中。打开名称为"credentials.csv"的文件,即可查看访问密钥(Access Key Id和Secret Access Key)。

添加访问秘钥

  1. 登录ModelArts管理控制台,在左侧导航栏单击"全局配置",进入"全局配置"页面。
  2. 单击"添加访问密钥",填写获取的访问密钥。
  1. 单击"确认",完成访问密钥的添加。

第三步:创建OBS桶

OBS桶,即Object Storage Service,是ModelArts使用的对象存储服务,用来进行数据存储以及模型的备份和快照,实现安全、高可靠和低成本的存储需求。因此,在使用ModelArts之前您需要创建一个OBS桶,并在其中创建一个用于存放数据的文件夹。

操作步骤

  1. 登录OBS管理控制台,页面右上角单击"创建桶",系统弹出如下图所示的对话框,选择"区域"为"华北-北京一",并输入"桶名称"为"test-modelarts",其他选项保持默认即可,点击页面下方"创建桶"按钮即可成功创建。

  1. 回到OBS管理控制台页面,单击待操作的桶,进入"概览"页面,然后在页面左侧导航栏单击"对象",可以看到"新建文件夹"按钮。

  1. 点击"新建文件夹",如图所示创建下面三个文件夹:

"dataset-flowers":用于存储数据集。
"model-test":用于存储训练输出的模型和预测文件。
"train-log":用于存储训练作业的日志。

由于ModelArts在"AI市场"中提供了各种花卉的示例数据集,命名为"Flowers-Data-Set",因此,本案例使用此数据集进行模型构建。您需要执行如下操作,将数据集从市场导入到您的数据集中,以便用于模型训练和构建。

  1. 登录ModelArts管理控制台https://console.huaweicloud.com/modelarts/?region=cn-north-1#/manage/dashboard),左侧菜单栏中选择"AI市场",进入AI市场主页。
  2. 单击"数据集"页签进入数据集管理页面,找到花卉数据集"Flowers-Data-Set",单击数据集所在区域进入详情页面。

  1. 在详情页面中,单击"导入至我的数据集"。
  2. 在"导入至我的数据集"对话框中,填写数据集"名称"及"存储路径"。名称可自行定义,存储路径选择准备工作中已创建的OBS桶及文件夹,填写完成后单击"确定"。

  1. 如果您的OBS未开启多版本控制功能,此处将弹出"多版本控制"对话框,提示您启用。由于ModelArts创建数据集时,必须开启OBS的多版本控制功能,此处单击"确定"启用多版本控制功能。

  1. 操作完成后,您可以前往"数据管理>数据集"页面,查看数据导入情况。数据集的导入需要一定时间,大概几分钟,请耐心等待。

在"数据集目录"中,当数据集版本状态为"正常"时,表示数据集已导入成功,您可以使用此数据集开始模型构建。数据集导入后,此示例数据将被拷贝至步骤4中的OBS路径下。

数据准备完成后,就可以创建一个训练作业,选用预置算法"ResNet_v1_50",并最终生成一个可用的模型。

选择训练作业

ModelArts管理控制台,在左侧导航栏中选择"训练作业",进入"训练作业"管理页面。

创建训练作业

单击"创建",进入"创建训练作业"页面。

填写参数

在"创建训练作业"页面,填写相关信息。

  1. 基本信息区域,"计费模式"和"版本"为系统自动生成,不需修改。请根据界面提示填写"名称"和"描述"。

  1. 参数配置区域,选择"数据来源",设置"算法来源"、"运行参数"、"训练输出位置"和"作业日志路径"。

  1. 在资源设置区域,单击资源池文本框右侧的"选择",选择"公共资源池","计算节点个数"设置为"1"。
  2. 单击"下一步"完成信息填写。

完成创建
在"规格确认"页面,确认训练作业的参数信息,确认无误后单击"立即创建。在"训练作业"管理页面,可以查看新建训练作业的状态。训练作业的创建和运行需要一些时间,预计十几分钟,当状态变更为"运行成功"时,表示训练作业创建完成。

您可以单击训练作业的名称,可进入此作业详情页面,了解训练作业的"配置信息"、"日志"、"资源占用情况"和"评估详情"等信息。在"训练输出位置"所在的OBS路径中,即"/test-modelarts/model-test/"路径,可以获取到生成的模型文件。

TensorBoard是一个可视化工具,能够有效地展示TensorFlow在运行过程中的计算图、各种指标随着时间的变化趋势以及训练中使用到的数据信息。TensorBoard当前只支持基于TensorFlow和MXNet引擎的训练作业。

  1. ModelArts管理控制台,在左侧导航栏中选择"训练作业",然后单击"TensorBoard"页签进入"TensorBoard"管理页面。
  2. 在"TensorBoard"管理页面,单击创建。
  3. 在"创建TensorBoard"页面,设置相关参数,然后单击"下一步"。

设置TensorBoard的 "名称",以及 "日志存储路径"。 "日志存储路径"需要设置为训练作业中的 "训练输出位置",上述步骤中 "训练输出位置"为 "/test-modelarts/model-test/"。

  1. 在"规格确认"页面,信息确认完毕后,单击"立即创建"。
  2. 进入"TensorBoard"管理页面,等待5到10分钟,当TensorBoard的状态为"运行中"时,表示已创建成功。

针对运行中的TensorBoard,您可以单击TensorBoard的名称跳转到其可视化界面。您可以通过此界面的信息,了解到此模型的具体训练过程。如果此模型训练过程和参数满足要求,您可以开始执行"步骤4:导入模型"操作。

训练完成的模型还是存储在OBS路径中,您可以将此模型导入到ModelArts中进行管理和部署。

  1. ModelArts管理控制台中,单击左侧导航栏中的"模型管理",进入"模型管理"页面。
  2. 在"模型管理"页面,单击"导入"。
  3. 在"导入模型"页面,设置相关参数,然后单击"立即创建"。

设置模型的 "名称"和 "版本",然后在 "元模型来源"参数中,选择 "从训练中选择",此时系统会自动选择您创建的训练作业,您可以从下拉框中可以选择系统中可用的训练作业。由于本示例数据较简单,其他参数采用默认值。

  1. 模型导入完成后,系统将自动跳转至模型管理页面。您可以在模型管理页面查看已导入的模型及其版本。

模型导入完成后,您可以将模型部署上线,可部署为"在线服务"、"批量服务"或"边缘服务"。本案例以部署为在线服务为例。

  1. 在"模型管理"页面,单击操作列的"部署",然后在下拉框中选择"在线服务",进入"部署"页面。
  2. 在"部署"页面中,设置相关参数,然后单击"下一步"。

设置在线服务的 "名称"。在 "选择模型及配置"区域中,系统将自动选择"步骤4:导入模型"中的模型及其版本,在 "计算节点规格"右侧下拉框中选择使用的资源,本示例选用 "2核 | 8GiB"资源部署在线服务。其他参数使用默认值。

  1. 在"规格确认"页面,确认信息完毕后,单击"立即创建"。
  2. 在"部署上线 > 在线服务"页面,您可以查看在线服务的相关信息。由于模型部署上线需要花费一些时间,请耐心等待几分钟。当在线服务的状态为"运行中"时,表示在线服务已部署完成。

在线服务部署成功后,您可以进入在线服务,发起预测请求进行测试。

方式一:使用在线服务"预测"功能进行预测

  1. 通过"ModelArts管理控制台"->"部署上线"->"在线服务"进入"在线服务"管理页面,单击在线服务名称,进入在线服务详情页面
  2. 在线服务详情页面中,单击"预测"页签,进入预测页面。

在"选择预测图片文件"右侧,单击"..."按钮,上传一张带花的图片,然后单击"预测"。
预测完成后,预测结果显示区域将展示预测结果,根据预测结果得分,可识别出此图片的花为"roses。

方式二:使用接口调用进行预测

Postman是网页调试与辅助接口调用的工具,具有界面简洁清晰、操作方便快捷的特性,可以处理用户发送的HTTP请求,例如:GET,PUT、POST,DELETE等,支持用户修改HTTP请求中的参数并返回响应数据。本例中使用Postman进行接口调用来展示模型的预测结果。

  1. 下载Postman软件并安装,您也可以直接在Chrome浏览器添加Postman扩展程序(也可使用其它支持发送post请求的软件)。
  2. 打开Postman。

  1. 使用接口需要进行认证鉴权,本例中仍然选择Postman来获得Token。

Token认证就是在调用API的时候将Token加到请求消息头,从而通过身份认证,获得操作API的权限。

使用Postman进行Token认证

获取用户Token,获取API接口的URI,以cn-north1为例,则Request URL为:https://iam.cnnorth-1.myhuaweicloud.com/v3/auth/tokens。选择API接口获取方式,并将Request URL填写至postman中。

获取Request Header参数为keyContent-Typevalueapplication/json;charset=utf8

获取Request Body,修改Request Body样例中参数,其中:
user.name:用户名称,根据获取token的主体填写。
password:用户的登录密码。
domain.name:用户所属的账号名称。如果是账号获取token,账号的user.name和domain.name相同,此处填写user.name即可。否则此处填写用户所属的账号名称。

{ "auth": { "identity": { "methods": ["password"], "password": { "user": { "name": "username", //替换为实际用户名 "password": "**********",//替换为实际的用户密码 "domain": { "name": "domianname" //替换为实际账号名 } } } }, "scope": { "project": { "name": "cn-north-1" //替换为实际的project name,获取作用范围为指定project的Token } } } }

单击"Send",发送API请求。

在返回的响应体中查看获取的用户TokenHeaders下方X-Auth-Token这一项即为Token

  1. 选择POST任务,将在线服务的调用地址(通过在线服务详情界面-调用指南页签查看)复制到POST后面的方框。Headers页签的Key值填写为"X-Auth-Token",Value值为您获取到的Token

  1. 选择"form-data"。在"KEY"值填写模型的入参,比如本例中预测图片的参数为"images"。然后在"VALUE"值,选择文件,上传一张待预测图片(当前仅支持单张图片预测)。

  1. 参数填写完成,点击"send"发送请求,结果会在"Response"下的对话框里显示,可见,上传的玫瑰图片被正确识别为"roses"。

到这里我们的案例就要结束了,只差最后一步!
在完成试用后,建议您删除在线服务、TensorBoard、训练作业、数据集及其OBS目录的资源,以避免产生不必要的费用。

祝贺您,您已经使用ModelArts开发平台开发一个自动学习花卉识别模型,并进行了成功预测!
您使用了ModelArts在"AI市场"中提供的示例数据集,也学习了如何对已有图像数据进行标注,使用了ModelArts的"ResNet_v1_50" 预置算法对数据进行训练,得到了一个可用的模型,将此模型部署为在线服务,并分别使用在线服务和Postman对模型进行了测试。
现在,您知道了使用ModelArts开发平台开发一个自动学习图像分类模型的所有操作。

接下来您可以

参考文献

已复制代码