快速入门 · 2020. 9. 19. · ModelArts 快速入门 文档版本 01 发布日期 2020-09-17...

42
ModelArts 快速入门 文档版本 01 发布日期 2020-10-15 华为技术有限公司

Transcript of 快速入门 · 2020. 9. 19. · ModelArts 快速入门 文档版本 01 发布日期 2020-09-17...

Page 1: 快速入门 · 2020. 9. 19. · ModelArts 快速入门 文档版本 01 发布日期 2020-09-17 华为技术有限公司

ModelArts

快速入门

文档版本 01

发布日期 2020-10-15

华为技术有限公司

Page 2: 快速入门 · 2020. 9. 19. · ModelArts 快速入门 文档版本 01 发布日期 2020-09-17 华为技术有限公司

版权所有 © 华为技术有限公司 2020。 保留一切权利。

非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播。 商标声明

和其他华为商标均为华为技术有限公司的商标。本文档提及的其他所有商标或注册商标,由各自的所有人拥有。 注意

您购买的产品、服务或特性等应受华为公司商业合同和条款的约束,本文档中描述的全部或部分产品、服务或特性可能不在您的购买或使用范围之内。除非合同另有约定,华为公司对本文档内容不做任何明示或默示的声明或保证。

由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用指导,本文档中的所有陈述、信息和建议不构成任何明示或暗示的担保。

华为技术有限公司地址: 深圳市龙岗区坂田华为总部办公楼 邮编:518129

网址: https://www.huawei.com

客户服务邮箱: [email protected]

客户服务电话: 4008302118

文档版本 01 (2020-10-15) 版权所有 © 华为技术有限公司 i

Page 3: 快速入门 · 2020. 9. 19. · ModelArts 快速入门 文档版本 01 发布日期 2020-09-17 华为技术有限公司

目 录

1 ModelArts 使用简介..................................................................................................................1

2 业务开发者:使用自动学习构建模型....................................................................................... 2

3 AI 初学者:使用预置算法构建模型.......................................................................................... 8

4 AI 工程师:AI 全流程开发...................................................................................................... 174.1 使用 MXNet 构建模型...........................................................................................................................................................174.2 使用 Notebook 构建模型..................................................................................................................................................... 244.3 使用 PyCharm ToolKit 训练模型........................................................................................................................................28

ModelArts快速入门 目 录

文档版本 01 (2020-10-15) 版权所有 © 华为技术有限公司 ii

Page 4: 快速入门 · 2020. 9. 19. · ModelArts 快速入门 文档版本 01 发布日期 2020-09-17 华为技术有限公司

1 ModelArts 使用简介

ModelArts是面向AI开发者的一站式开发平台,通过AI开发全流程管理助您智能、高效地创建AI模型和一键部署到云、边、端。

ModelArts不仅支持自动学习功能,还预置了多种已训练好的模型,同时集成了Jupyter Notebook,提供在线的代码开发环境。

根据经验选择您的使用方式● 如果您是业务开发者,没有AI开发经验,您可以使用ModelArts的自动学习功能,

进行零基础构建AI模型,详细介绍请参见业务开发者:使用自动学习构建模型。

● 如果您是AI初学者,有一定AI基础,您可以使用自己的业务数据对ModelArts预置算法进行重训练,从而得到新模型,详细介绍请参见AI初学者:使用预置算法构建模型。

● 如果您是AI工程师,熟悉代码编写和调测,您可以使用ModelArts提供的在线代码开发环境,编写训练代码进行AI模型的开发,详细介绍请参见使用MXNet构建模型和使用Notebook构建模型。如果您更习惯使用本地PyCharm工具开发模型,建议可参考使用PyCharm ToolKit训练模型,安装ModelArts ToolKit工具,在本地完成代码开发后,将代码提交至ModelArts公有云端进行训练和推理。

ModelArts快速入门 1 ModelArts 使用简介

文档版本 01 (2020-10-15) 版权所有 © 华为技术有限公司 1

Page 5: 快速入门 · 2020. 9. 19. · ModelArts 快速入门 文档版本 01 发布日期 2020-09-17 华为技术有限公司

2 业务开发者:使用自动学习构建模型

针对业务开发者,ModelArts提供了自动学习功能,无需关注模型开发、参数调整等开发细节,仅需三步(数据标注、自动训练、部署上线),即可完成一个AI开发项目。

本章节提供了一个“找云宝”样例(“云宝”是华为云的吉祥物),帮助您快速熟悉ModelArts自动学习的使用过程。此样例为“物体检测”类别项目,通过预置的云宝图像数据集,自动训练并生成检测模型,同时将生成的模型部署为在线服务。部署完成后,用户可通过在线服务识别输入图片是否包含云宝。

开始使用样例前,请仔细阅读准备工作罗列的要求,提前完成准备工作。使用自动学习功能完成模型构建的步骤如下所示:

● 步骤1:准备数据

● 步骤2:创建物体检测项目

● 步骤3:数据标注

● 步骤4:自动训练,生成模型

● 步骤5:将模型部署上线为在线服务

● 步骤6:测试服务

准备工作● 已注册华为云账号,且在使用ModelArts前检查账号状态,账号不能处于欠费或冻

结状态。

● 当前账号已完成访问授权的配置。如未完成,请参考使用委托授权。针对之前使用访问密钥授权的用户,建议清空授权,然后使用委托进行授权。

● 创建OBS桶和文件夹的操作指导请参见创建桶和新建文件夹。为保证数据能正常访问,请务必保证创建的OBS桶与ModelArts在同一区域。

● 由于创建自动学习项目需要使用数据管理功能,在开始使用前,需为数据管理模块获取访问OBS权限。

在ModelArts管理控制台,进入“数据管理 > 数据集”页面,单击“服务授权”,由具备授权的账号“同意授权”后,即可正常使用。如果使用“账号”登录,可直接在弹出对话框中同意授权。如果使用“IAM用户”(即子账号)登录,需主账号或具备Admin权限的用户进行授权操作。

步骤 1:准备数据

ModelArts在公共OBS桶中提供了云宝的示例数据集,命名为“Yunbao-Data-Custom”,因此,本文的操作示例使用此数据集进行模型构建。您需要执行如下操

ModelArts快速入门 2 业务开发者:使用自动学习构建模型

文档版本 01 (2020-10-15) 版权所有 © 华为技术有限公司 2

Page 6: 快速入门 · 2020. 9. 19. · ModelArts 快速入门 文档版本 01 发布日期 2020-09-17 华为技术有限公司

作,将数据集上传至您的OBS目录下,即准备工作中您创建的OBS目录“test-modelarts/dataset-yunbao”。

如果您想使用自己的数据集,可跳过此步骤,直接将数据上传至OBS文件夹中,并在步骤2:创建物体检测项目操作中直接选择此目录即可。

1. 单击数据集下载链接,将“Yunbao-Data-Custom”数据集下载至本地。

2. 在本地,将“Yunbao-Data-Custom.zip”压缩包解压。例如,解压至本地“Yunbao-Data-Custom”文件夹下。

3. 参考上传文件,使用批量上传方式将“Yunbao-Data-Custom”文件夹下的所有文件上传至“test-modelarts/dataset-yunbao”OBS路径下。

获取的数据集分为2个子目录,分别为“eval”和“train”。“train”存储的数据用于模型训练,“eval”存储的数据可用于模型的预测。

步骤 2:创建物体检测项目

1. 在ModelArts管理控制台,单击左侧导航栏“自动学习”。

2. 在“物体检测”方框中单击“创建项目”,在“创建物体检测项目”页面中,填写“项目名称”、“数据集名称”,选择“数据集输入位置”,云宝数据集OBS路径为“/test-modelarts/dataset-yunbao/train/”。“数据集输出位置”选择一个空目录。

说明

云宝数据集有“eval”和“train”两个目录,请选择“train”目录下的数据进行训练,如果选择“train”的上层目录,会提示“OBS存在非法数据的错误”,导致无法创建项目。

图 2-1 创建物体检测项目

3. 单击“创建项目”,完成物体检测项目创建。项目创建成功后,页面自动跳转至“自动学习 > 数据标注”页面,并自动执行数据源同步操作。

ModelArts快速入门 2 业务开发者:使用自动学习构建模型

文档版本 01 (2020-10-15) 版权所有 © 华为技术有限公司 3

Page 7: 快速入门 · 2020. 9. 19. · ModelArts 快速入门 文档版本 01 发布日期 2020-09-17 华为技术有限公司

步骤 3:数据标注

数据标注,针对物体检测项目,即在已有数据集图像中,标注出物体位置,并为其打上标签。标注好的数据用于模型训练。云宝数据集中,已标注部分数据,还有部分数据未标注,您可以选择未标注数据进行试用。

自动学习项目创建时,会自动执行数据源同步操作。由于数据源同步需要一定时间,如果出现同步失败,可单击“同步数据源”手动执行。

1. 在“自动学习 > 数据标注”页面单击“未标注”页签,此页面展示所有未标注的图片数据。单击任意一张图片,进入图片标注界面。

2. 用鼠标框选图片中的云宝所在区域,然后在弹出的对话框中输入标签名称,例如此示例中的“yunbao”,按“Enter”键完成此图片的添加。标注完成后,左侧图片目录中此图片的状态将显示为“已标注”。

您可以在下方图片目录中,选择其他图片,重复上述操作继续进行图片标注。如果一张图片有多个云宝,您可以标注多处。建议将数据集中所有图片都标注完成,这样能得到一个效果比较好的模型。

图 2-2 物体检测图片标注

3. 当图片目录中所有图片都完成标注后,单击左上角“自动学习”,在弹出的对话框中单击“确定”保存标注信息,页面进入数据标注页面。您可以在“已标注”页签下查看已完成标注的图片,并通过右侧的标签信息,了解当前已完成的标签名称和标签数量。

步骤 4:自动训练,生成模型

1. 完成数据标注后,在“数据标注”页面,单击右上角的“开始训练”,然后在弹出的“训练设置”对话框中配置相关参数,参考图2-3填写相关参数。

ModelArts快速入门 2 业务开发者:使用自动学习构建模型

文档版本 01 (2020-10-15) 版权所有 © 华为技术有限公司 4

Page 8: 快速入门 · 2020. 9. 19. · ModelArts 快速入门 文档版本 01 发布日期 2020-09-17 华为技术有限公司

图 2-3 设置训练参数

2. 单击“下一步”进入配置页,确认规格后单击“提交”开始模型的自动训练。训练时间相对较长,建议您耐心等待。如果关闭或退出此页面,系统仍然在执行训练操作。

训练完成后,您可以在界面中查看训练详情,如“准确率”、“评估结果”、“训练参数”、“分类统计表”等

图 2-4 开始模型训练

步骤 5:将模型部署上线为在线服务

1. 在“模型训练”页签中,待训练状态变为“已完成”,单击“版本管理”区域中的“部署”。

ModelArts快速入门 2 业务开发者:使用自动学习构建模型

文档版本 01 (2020-10-15) 版权所有 © 华为技术有限公司 5

Page 9: 快速入门 · 2020. 9. 19. · ModelArts 快速入门 文档版本 01 发布日期 2020-09-17 华为技术有限公司

图 2-5 开始部署上线

2. 在弹出的部署设置对话框中,选择“计算节点规格”,设置“自动停止”功能,单击“确定”开始将物体检测模型部署上线为在线服务。

如果选择免费规格,则不需要设置“自动停止”功能,1小时之后自动停止。

图 2-6 部署设置

3. 启动部署上线后,系统自动跳转至部署上线页面。此页面将呈现模型部署上线的进度和状态。

部署上线将耗费较多时间,请您耐心等待。部署完成后,版本管理区域的状态将变更为“运行中”。

图 2-7 部署成功

步骤 6:测试服务

模型部署完成后,您可添加图片进行测试。

1. 在“部署上线”界面,选择状态为“运行中”的服务版本,在“服务测试”区域单击“上传”。

ModelArts快速入门 2 业务开发者:使用自动学习构建模型

文档版本 01 (2020-10-15) 版权所有 © 华为技术有限公司 6

Page 10: 快速入门 · 2020. 9. 19. · ModelArts 快速入门 文档版本 01 发布日期 2020-09-17 华为技术有限公司

图 2-8 上传图片

2. 从本地环境选择一张图片,此图片中包含云宝。然后单击“预测”进行测试。

预测完成后,右侧“预测结果”区域输出标签名称“yunbao”,以及位置坐标和检测的评分。预测结果中,“detection_boxes”表示物体所在位置坐标,“detection_scores”表示检测评分,表示坐标内图像是云宝的概览评分。

如模型准确率不满足预期,可在“数据标注”步骤中添加图片并进行标注,重新进行模型训练及部署上线。

说明

由于“运行中”的在线服务将持续耗费资源,如果不需再使用此在线服务,建议在版本管理区域,单击“停止”,即可停止在线服务的部署,避免产生不必要的费用。如果需要继续使用此云宝检测的服务,可单击“启用”恢复。

图 2-9 测试结果

ModelArts快速入门 2 业务开发者:使用自动学习构建模型

文档版本 01 (2020-10-15) 版权所有 © 华为技术有限公司 7

Page 11: 快速入门 · 2020. 9. 19. · ModelArts 快速入门 文档版本 01 发布日期 2020-09-17 华为技术有限公司

3 AI 初学者:使用预置算法构建模型

针对有一定AI基础的AI初学者,ModelArts基于业界的主流引擎提供了预置算法,无需关注模型开发过程,直接使用预置算法对已有数据进行训练,并快速部署为服务。预置算法可用于物体类别和位置、图像分类等场景。

本章节提供了一个花卉图像分类应用的样例,帮助您快速熟悉使用ModelArts预置算法构建模型的过程。此样例针对预置的花卉图像数据集,对已有图像数据进行标注,然后使用预置的“ResNet_v1_50”算法对数据进行训练,得到一个可用的模型,最后,将此模型部署为在线服务。部署完成后,用户可通过在线服务识别输入图片的花卉种类。

开始使用样例前,请仔细阅读准备工作罗列的要求,提前完成准备工作。使用预置算法完成模型构建的步骤如下所示:

● 步骤1:准备数据

● 步骤2:训练模型

● 步骤3:(可选)创建可视化作业,查看模型训练过程

● 步骤4:导入模型

● 步骤5:部署上线

● 步骤6:测试服务

● 步骤7:清除相应资源,避免产生费用

准备工作● 已注册华为云账号,且在使用ModelArts前检查账号状态,账号不能处于欠费或冻

结状态。

● 当前账号已完成访问授权的配置。如未完成,请参考使用委托授权。针对之前使用访问密钥授权的用户,建议清空授权,然后使用委托进行授权。

● 已在OBS服务中创建桶和文件夹,用于存放样例数据集以及模型。如下示例中,请创建命名为“test-modelarts”的桶,并创建如表3-1所示的文件夹。

创建OBS桶和文件夹的操作指导请参见创建桶和新建文件夹。确保您使用的OBS目录与ModelArts在同一区域。

ModelArts快速入门 3 AI 初学者:使用预置算法构建模型

文档版本 01 (2020-10-15) 版权所有 © 华为技术有限公司 8

Page 12: 快速入门 · 2020. 9. 19. · ModelArts 快速入门 文档版本 01 发布日期 2020-09-17 华为技术有限公司

表 3-1 文件夹列表

文件夹名称 用途

“dataset-flowers” 用于存储数据集。

“model-test” 用于存储训练输出的模型和预测文件。

“train-log” 用于存储训练作业的日志。

步骤 1:准备数据

ModelArts在公共OBS桶中提供了花卉的示例数据集,命名为“Flowers-Data-Set”,因此,本文的操作示例使用此数据集进行模型构建。您需要执行如下操作,将数据集上传至您的OBS目录下,即准备工作中您创建的OBS目录“test-modelarts/dataset-flowers”。

说明

● 由于“Flowers-Data-Set”数据集已完成数据标注,数据集中文件格式为“.txt”是对应图片的标注文件,因此在此操作步骤中忽略了数据标注操作。

● 如果您想使用自己的数据集,可跳过此步骤,直接将数据上传至OBS文件夹中,并在步骤2:训练模型操作中直接选择此目录即可。如果您使用的数据集未进行标注,在创建训练作业前请在“数据管理>数据集”页面创建数据集并进行人工标注。

1. 单击数据集下载链接,将“Flowers-Data-Set”数据集下载至本地。

2. 在本地,将“Flowers-Data-Set.zip”压缩包解压。例如,解压至本地“Flowers-Data-Set”文件夹下。

3. 参考上传文件,使用批量上传方式将“Flowers-Data-Set”文件夹下的所有文件上传至“test-modelarts/dataset-flowers”OBS路径下。

步骤 2:训练模型

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

“ResNet_v1_50”算法基于“TensorFlow, TF-1.8.0-python2.7”引擎,其用途为图像分类。如果您想获取更多预置算法的介绍,您可以在“训练作业”页面中,单击“预置算法”页签,了解ModelArts提供的算法信息,如用途、引擎类型、精度等。

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

2. 单击“创建”,进入“创建训练作业”页面。

3. 在“创建训练作业”页面,填写相关信息,参数填写指导请参见如下步骤。

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

ModelArts快速入门 3 AI 初学者:使用预置算法构建模型

文档版本 01 (2020-10-15) 版权所有 © 华为技术有限公司 9

Page 13: 快速入门 · 2020. 9. 19. · ModelArts 快速入门 文档版本 01 发布日期 2020-09-17 华为技术有限公司

图 3-1 填写名称和描述

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

▪ “算法来源”:单击“选择”,从“预置算法”列表中,选择“ResNet_v1_50”算法。

▪ “数据来源”:由于导入的数据集已完成标注,因此直接从数据存储位置导入即可。单击“数据存储位置”,然后单击文本框右侧的“选择”,选择数据集所在的OBS路径,如“/test-modelarts/dataset-flowers/”。

▪ “训练输出位置”:从已有的OBS桶中选择模型和预测文件存储路径。使用准备工作中已创建好的“model-test”文件夹。如果没有可用文件夹,您可以单击“选择”,在弹出对话框中新建文件夹。

▪ “运行参数”:选择“ResNet_v1_50”算法后,默认包含“max_epoches”参数,默认值为“100”。针对此示例,建议将“max_epoches”参数值修改为“10”,1个epoch代表整个数据集训练一遍,此运行参数表示训练10个epoch,“max_epoches”值越大训练时间越长。

▪ “作业日志路径”:从已有的OBS桶中选择日志存储路径。使用准备工作中已创建好的“train-log”文件夹。如果没有可用文件夹,您可以单击“选择”,在弹出对话框中新建文件夹。

ModelArts快速入门 3 AI 初学者:使用预置算法构建模型

文档版本 01 (2020-10-15) 版权所有 © 华为技术有限公司 10

Page 14: 快速入门 · 2020. 9. 19. · ModelArts 快速入门 文档版本 01 发布日期 2020-09-17 华为技术有限公司

图 3-2 参数配置

c. 在资源设置区域,选择“公共资源池”,同时设置“规格”和“计算节点个数”。

如果选择使用免费规格,请仔细阅读提示信息,然后勾选“我已阅读并同意以上内容”。

图 3-3 设置使用的资源

d. 单击“下一步”完成信息填写。

4. 在“规格确认”页面,确认训练作业的参数信息,确认无误后单击“提交”。

5. 在“训练作业”管理页面,可以查看新建训练作业的状态。训练作业的创建和运行需要一些时间,预计十几分钟,当状态变更为“运行成功”时,表示训练作业创建完成。

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

ModelArts快速入门 3 AI 初学者:使用预置算法构建模型

文档版本 01 (2020-10-15) 版权所有 © 华为技术有限公司 11

Page 15: 快速入门 · 2020. 9. 19. · ModelArts 快速入门 文档版本 01 发布日期 2020-09-17 华为技术有限公司

图 3-4 训练作业详情

步骤 3:(可选)创建可视化作业,查看模型训练过程

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

如果训练详情页的详细信息已足够支撑您判断模型好坏并构建模型,您可以选择跳过此步骤,直接执行步骤4:导入模型的操作。

1. 在ModelArts管理控制台,在左侧导航栏中选择“训练管理 > 训练作业”,然后单击“可视化作业”页签进入“可视化作业”管理页面。

2. 在“可视化作业”管理页面,单击“创建”。

3. 在“创建可视化作业”页面,设置相关参数,然后单击“下一步”。

可视化作业的类型默认为“可视化作业”,且不可更改。设置可视化作业的“名称”,以及“训练输出位置”。“训练输出位置”需要设置为训练作业中的“训练输出位置”,上述步骤中“训练输出位置”为“/test-modelarts/model-test/”。“自动停止”启用,并设置为“1小时后”停止,避免产生不必要的费用。

图 3-5 设置可视化作业参数信息

ModelArts快速入门 3 AI 初学者:使用预置算法构建模型

文档版本 01 (2020-10-15) 版权所有 © 华为技术有限公司 12

Page 16: 快速入门 · 2020. 9. 19. · ModelArts 快速入门 文档版本 01 发布日期 2020-09-17 华为技术有限公司

4. 在“规格确认”页面,信息确认完毕后,单击“提交”。

5. 进入“可视化作业”管理页面,等待一段时间,当可视化作业的状态为“运行中”时,表示已创建成功。

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

图 3-6 可视化界面

步骤 4:导入模型

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

1. 在ModelArts管理控制台中,单击左侧导航栏中的“模型管理>模型”,进入“模型”页面。

2. 在“模型”页面,单击“导入”。

3. 在“导入模型”页面,设置相关参数,然后单击“立即创建”。

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

ModelArts快速入门 3 AI 初学者:使用预置算法构建模型

文档版本 01 (2020-10-15) 版权所有 © 华为技术有限公司 13

Page 17: 快速入门 · 2020. 9. 19. · ModelArts 快速入门 文档版本 01 发布日期 2020-09-17 华为技术有限公司

图 3-7 导入模型

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

图 3-8 模型列表

步骤 5:部署上线

模型导入完成后,当状态显示为“正常”时,可以将模型部署上线,可部署为“在线服务”、“批量服务”或“边缘服务”。如下操作步骤以部署为在线服务为例。

1. 在“模型管理 > 模型”页面,单击模型名称左侧的小三角,打开此模型下的所有版本。在对应版本所在行,单击操作列的“部署”,然后在下拉框中选择“在线服务”,进入“部署”页面。

2. 在“部署”页面中,设置相关参数,然后单击“下一步”。

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

“数据采集”和“难例筛选”功能,建议使用默认值,保持关闭。

ModelArts快速入门 3 AI 初学者:使用预置算法构建模型

文档版本 01 (2020-10-15) 版权所有 © 华为技术有限公司 14

Page 18: 快速入门 · 2020. 9. 19. · ModelArts 快速入门 文档版本 01 发布日期 2020-09-17 华为技术有限公司

图 3-9 部署为在线服务

3. 在“规格确认”页面,确认信息完毕后,单击“提交”。

4. 在“部署上线 > 在线服务”页面,您可以查看在线服务的相关信息。由于模型部署上线需要花费一些时间,请耐心等待几分钟。当在线服务的状态为“运行中”时,表示在线服务已部署完成。

步骤 6:测试服务

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

1. 在“在线服务”管理页面,单击在线服务名称,进入在线服务详情页面。

2. 在线服务详情页面中,单击“预测”页签,进入预测页面。

3. 在“选择预测图片文件”右侧,单击“上传”按钮,上传一张带花的图片,然后单击“预测”。

预测完成后,预测结果显示区域将展示预测结果,根据预测结果得分,可识别出此图片的花为“daisy”。

说明

由于此处是测试服务,为保证测试效果,建议选择图片时,不要使用示例数据集中已有的图片。

ModelArts快速入门 3 AI 初学者:使用预置算法构建模型

文档版本 01 (2020-10-15) 版权所有 © 华为技术有限公司 15

Page 19: 快速入门 · 2020. 9. 19. · ModelArts 快速入门 文档版本 01 发布日期 2020-09-17 华为技术有限公司

图 3-10 预测结果

步骤 7:清除相应资源,避免产生费用

为避免产生不必要的费用,在完成试用后,建议您删除相关资源,如在线服务、可视化作业、训练作业、数据及其OBS目录。

● 删除在线服务:在“在线服务”页面,单击操作列的“更多>删除”。

● 删除可视化作业:在“训练作业>可视化作业”页面,单击操作列的“删除”。

● 删除训练作业:在“训练作业”页面,单击操作列的“删除”。

● 删除数据:前往OBS,删除上传的数据,然后删除文件夹及OBS桶。

ModelArts快速入门 3 AI 初学者:使用预置算法构建模型

文档版本 01 (2020-10-15) 版权所有 © 华为技术有限公司 16

Page 20: 快速入门 · 2020. 9. 19. · ModelArts 快速入门 文档版本 01 发布日期 2020-09-17 华为技术有限公司

4 AI 工程师:AI 全流程开发

4.1 使用 MXNet 构建模型ModelArts为AI工程师提供了一站式AI开发全流程管理能力,AI工程师可以从数据准备、模型开发、模型训练、模型部署,一站式完成整个AI过程。兼容业界主流引擎,兼容用户习惯,同时,提供了自研的MoXing深度学习框架,提升算法开发效率和训练速度。

本章节提供了使用MXNet实现手写数字图像识别应用的示例,帮助您快速梳理ModelArts的AI开发全流程。

MNIST是一个手写体数字识别数据集,常被用作深度学习的入门样例。本示例将针对MNIST数据集,使用MXNet原生接口编写的模型训练脚本(ModelArts默认提供),在ModelArts中完成模型训练,并将此模型部署为在线服务。部署完成后,用户可通过在线服务识别输入图片中的数字。

开始使用样例前,请仔细阅读准备工作罗列的要求,提前完成准备工作。本示例模型构建的步骤如下所示:

● 步骤1:准备数据

● 步骤2:训练模型

● 步骤3:编写推理代码和配置文件,并上传至模型所在路径

● 步骤4:导入模型

● 步骤5:部署上线

● 步骤6:测试服务

● 步骤7:清除相应资源,避免产生费用

准备工作● 已注册华为云账号,且在使用ModelArts前检查账号状态,账号不能处于欠费或冻

结状态。

● 当前账号已完成访问授权的配置。如未完成,请参考使用委托授权。针对之前使用访问密钥授权的用户,建议清空授权,然后使用委托进行授权。

● 已在OBS服务中创建桶和文件夹,用于存放样例数据集以及模型。如下示例中,请创建命名为“test-modelarts”的桶,并创建如表4-1所示的文件夹。

ModelArts快速入门 4 AI 工程师:AI 全流程开发

文档版本 01 (2020-10-15) 版权所有 © 华为技术有限公司 17

Page 21: 快速入门 · 2020. 9. 19. · ModelArts 快速入门 文档版本 01 发布日期 2020-09-17 华为技术有限公司

创建OBS桶和文件夹的操作指导请参见创建桶和新建文件夹。请确保您使用的OBS与ModelArts在同一区域。

表 4-1 文件夹列表

文件夹名称 用途

“dataset-mnist” 用于存储数据集。

“MXNet-mnist/code/”

用于存储训练脚本。

“MXNet-mnist/output/”

用于存储训练输出的模型和预测文件。

“MXNet-mnist/log/”

用于存储训练作业的日志。

● 针对此示例,ModelArts提供了部署上线需使用的训练脚本、推理代码和配置文件。请获取示例文件并上传OBS指定路径,详细请参见表4-2。

a. 获取示例文件。

在gitee的ModelArts-Lab工程中,单击“克隆/下载”,然后单击“下载ZIP”,下载工程。

下载完成后,解压缩“ModelArts-Lab-master.zip”文件,示例文件存储路径为:“\ModelArts-Lab-master\official_examples\Using_MXNet_to_Create_a_MNIST_Dataset_Recognition_Application\codes”

b. 将示例文件上传至对应OBS路径。上传文件至OBS的操作指导请参见上传文件。

表 4-2 上传示例文件至 OBS

文件名称 描述 上传至如下OBS路径中

“train_mnist.py” 训练脚本。 “test-modelarts/MXNet-mnist/code/”

“customize_service.py”

推理代码。 “test-modelarts/MXNet-mnist/output/model”说明请在训练作业完成后,再执行上传操作。详细操作指导请参见步骤3:编写推理代码和配置文件,并上传至模型所在路径。

“config.json” 配置文件。

步骤 1:准备数据

ModelArts在公共OBS桶中提供了MNIST数据集,命名为“Mnist-Data-Set”,因此,本文的操作示例使用此数据集进行模型构建。您需要执行如下操作,将数据集上传至您的OBS目录下,即准备工作中您创建的OBS目录“test-modelarts/dataset-mnist”。

ModelArts快速入门 4 AI 工程师:AI 全流程开发

文档版本 01 (2020-10-15) 版权所有 © 华为技术有限公司 18

Page 22: 快速入门 · 2020. 9. 19. · ModelArts 快速入门 文档版本 01 发布日期 2020-09-17 华为技术有限公司

1. 单击数据集下载链接,将“Mnist-Data-Set”数据集下载至本地。

2. 在本地,将“Mnist-Data-Set.zip”压缩包解压。例如,解压至本地“Mnist-Data-Set”文件夹下。

3. 参考上传文件,使用批量上传方式将“Mnist-Data-Set”文件夹下的所有文件上传至“test-modelarts/dataset-mnist”OBS路径下。

“Mnist-Data-Set”数据集包含的内容如下所示,其中“.gz”为对应的压缩包。

– “t10k-images-idx3-ubyte”:验证集,共包含10000个样本。

– “t10k-images-idx3-ubyte.gz”:验证集的压缩包文件。

– “t10k-labels-idx1-ubyte”:验证集标签,共包含10000个样本的类别标签。

– “t10k-labels-idx1-ubyte.gz”:验证集标签的压缩包文件。

– “train-images-idx3-ubyte”:训练集,共包含60000个样本。

– “train-images-idx3-ubyte.gz”:训练集的压缩包文件。

– “train-labels-idx1-ubyte”:训练集标签,共包含60000个样本的类别标签。

– “train-labels-idx1-ubyte.gz”:训练集标签的压缩包文件。

步骤 2:训练模型

数据准备完成后,您可以创建一个训练作业,选用MXNet引擎,基于已上传的“train_mnist.py”训练脚本,并最终生成一个可用的模型。本示例已提供编码完成的脚本(基于MXNet引擎的原生接口),如果使用自行编写的代码,请使用ModelArts支持的引擎类型及其对应版本的接口,并满足其要求。

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

2. 单击“创建”,进入“创建训练作业”页面。

3. 在“创建训练作业”页面,填写相关信息,参数填写指导请参见如下步骤。

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

图 4-1 名称和描述

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

▪ “算法来源”:选择常用框架,在“AI引擎”右侧下拉框中选择“MXNet”,并选择“MXNet-1.2.1-python2.7”版本。选择“代码目录”及“启动文件”。此示例中,“代码目录”的OBS路径为“test-modelarts/MXNet-mnist/code/”,“启动文件”的OBS路径为“test-

ModelArts快速入门 4 AI 工程师:AI 全流程开发

文档版本 01 (2020-10-15) 版权所有 © 华为技术有限公司 19

Page 23: 快速入门 · 2020. 9. 19. · ModelArts 快速入门 文档版本 01 发布日期 2020-09-17 华为技术有限公司

modelarts/MXNet-mnist/code/train_mnist.py”。训练脚本“train_mnist.py”上传说明请参见准备工作。

▪ “数据来源”:请选择“数据存储位置”页签,然后指定MNIST数据集存储的OBS路径。

▪ “训练输出位置”:训练作业生成的模型和预测文件的存储路径。使用准备工作中已创建好的“mnist-model”文件夹。如果没有可用文件夹,您可以单击“选择”,在弹出对话框中新建文件夹。

▪ “运行参数”:单击“增加运行参数”,增加“max_epoches=10”参数。针对“max_epoches”参数,1个epoch代表整个数据集训练一遍,此运行参数表示训练10个epoch,数值可更改,不填写时使用默认值(默认值为100),“max_epoches”值越大训练时间越长。

▪ “作业日志路径”:从已有的OBS桶中选择日志存储路径。使用准备工作中已创建好的“train-log”文件夹。如果没有可用文件夹,您可以单击“选择”,在弹出对话框中新建文件夹。

图 4-2 作业参数配置

c. 在资源设置区域,选择“公共资源池”,选择资源“类型”、“规格”以及“计算节点个数”。

说明

由于MNIST数据集数据较多,为提升训练效率,操作示例选择GPU训练。但是,GPU的费用高于CPU,请根据实际情况选择可用的资源池。

如果选择免费规格,请仔细阅读提示信息。

ModelArts快速入门 4 AI 工程师:AI 全流程开发

文档版本 01 (2020-10-15) 版权所有 © 华为技术有限公司 20

Page 24: 快速入门 · 2020. 9. 19. · ModelArts 快速入门 文档版本 01 发布日期 2020-09-17 华为技术有限公司

图 4-3 设置资源

d. 单击“下一步”完成信息填写。

4. 在“规格确认”页面,确认训练作业的参数信息,确认无误后单击“提交”。

5. 在“训练作业”管理页面,可以查看新建训练作业的状态。训练作业的创建和运行需要一些时间,预计十几分钟,当状态变更为“运行成功”时,表示训练作业已完成。

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

图 4-4 训练作业详情页面

步骤 3:编写推理代码和配置文件,并上传至模型所在路径

参考准备工作中的指导,获取推理代码“customize_service.py”和配置文件“config.json”。此推理代码和配置文件是ModelArts提供的示例。

在步骤2:训练模型中,训练作业生成的模型存储在“test-modelarts/mnist-model”路径下,且系统将自动生成“model”文件夹,模型相关的文件存储在此目录下。将获取的“customize_service.py”和“config.json”文件,上传至“model”文件夹下。

说明

如果训练作业运行多次,将“训练输出位置”生成不同的版本,即“mnist-model”目录下将生成多种版本的目录,如“V0001”、“V0002”,请基于训练作业的版本,将文件上传至对应版本下的“model”文件夹内。

ModelArts快速入门 4 AI 工程师:AI 全流程开发

文档版本 01 (2020-10-15) 版权所有 © 华为技术有限公司 21

Page 25: 快速入门 · 2020. 9. 19. · ModelArts 快速入门 文档版本 01 发布日期 2020-09-17 华为技术有限公司

前往OBS管理控制台,找到“test-modelarts”桶,然后进入“test-modelarts/mnist-model/model”路径,执行“上传对象”的操作。OBS的上传操作指导,请参见上传文件。

图 4-5 上传推理代码和配置文件

步骤 4:导入模型

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

1. 在ModelArts管理控制台中,单击左侧导航栏中的“模型管理>模型”,进入“模型”页面。

2. 在“模型”页面,单击“导入”。

3. 在“导入模型”页面,设置相关参数,然后单击“立即创建”。

– 设置模型的“名称”和“版本”。

– “元模型来源”:单击“从OBS中选择”页签,在“选择元模型”参数中,设置此模型所在的OBS路径,如“test-modelarts/MXNet-mnist/output/”,“AI引擎”会根据选择路径下的模型文件自动选择,当前示例使用的是“MXNet”引擎。

说明

选择模型所在路径时,请务必选择“model”文件夹的父目录,如果选择到“model”文件夹,将导致系统无法自动识别模型及配置文件,无法导入模型。

– “推理代码”:系统将根据选择的原模型信息,自动生成对应推理代码路径及文件名称。

图 4-6 导入模型页面

ModelArts快速入门 4 AI 工程师:AI 全流程开发

文档版本 01 (2020-10-15) 版权所有 © 华为技术有限公司 22

Page 26: 快速入门 · 2020. 9. 19. · ModelArts 快速入门 文档版本 01 发布日期 2020-09-17 华为技术有限公司

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

步骤 5:部署上线

模型导入完成后,且模型状态为“正常”时,可以将模型部署上线,可部署为“在线服务”、“批量服务”或“边缘服务”。如下操作步骤以部署为在线服务为例。

1. 在“模型”页面,单击模型名称左侧的小三角,打开此模型下的所有版本。在对应版本所在行,单击操作列的“部署”,然后在下拉框中选择“在线服务”,进入“部署”页面。

2. 在“部署”页面中,设置相关参数,然后单击“下一步”。

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

环境变量:在本示例中,由于推理代码和配置文件需要补充三个信息,请参考如下指导补充环境变量。

– “input_data_name”:参数值必须是images。针对自己开发训练脚本的场景,此参数是必须设置的。您可以在导入模型时设置参数,也可以写到推理代码中。

– “input_data_shape”:代表NCHW。本示例的数值为“0,1,28,28”,表示设置了输入图片的规则,其中,输入预测图片大小必须是“28px*28px”。

– “output_data_shape”:模型输出的类别数。本示例指定范围为“0,10”,表示输出结果会显示“0~9”中10个类别的数字,以及属于每一个类别的概率。此范围必须与训练代码中的类别数一致。

图 4-7 部署在线服务

3. 在“规格确认”页面,确认信息完毕后,单击“提交”。

4. 在“部署上线>在线服务”页面,您可以查看在线服务的相关信息。由于模型部署上线需要花费一些时间,请耐心等待几分钟。当在线服务的状态为“运行中”时,表示在线服务已部署完成。

步骤 6:测试服务

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

1. 在“在线服务”管理页面,单击在线服务名称,进入在线服务详情页面。

2. 在线服务详情页面中,单击“预测”页签,进入预测页面。

3. 在“选择预测图片文件”右侧,单击“上传”按钮,上传一张黑底白字的图片,然后单击“预测”。

ModelArts快速入门 4 AI 工程师:AI 全流程开发

文档版本 01 (2020-10-15) 版权所有 © 华为技术有限公司 23

Page 27: 快速入门 · 2020. 9. 19. · ModelArts 快速入门 文档版本 01 发布日期 2020-09-17 华为技术有限公司

预测完成后,预测结果显示区域将展示预测结果,根据预测结果内容,可识别出此图片的数字是“8”的概率为“1”。

说明

● 由于推理代码和配置文件中已指定图片要求,用于预测的图片,大小必须为“28px*28px”,且图片必须是黑底白字。

● 建议不要使用数据集中自带的图片,可以使用Windows自带的画图工具绘制一张。

● 本示例代码仅输出了Top5置信度的类别。

图 4-8 预测成功结果

步骤 7:清除相应资源,避免产生费用

为避免产生不必要的费用,在完成试用后,建议您删除相关资源,如在线服务、训练作业、数据及其OBS目录。

● 删除在线服务:在“在线服务”页面,单击操作列的“更多>删除”。

● 删除训练作业:在“训练作业”页面,单击操作列的“删除”。

● 删除数据:前往OBS,删除上传的数据,然后删除文件夹及OBS桶。

● 删除训练脚本和模型等文件:进入OBS管理控制台,删除相关文件夹及数据,然后再删除“test-modelarts”的桶。

4.2 使用 Notebook 构建模型ModelArts为AI工程师提供了Notebook功能,工程师可在Notebook中一站式完成数据准备、模型训练、预测等操作。

本章节提供了使用MoXing实现手写数字图像识别应用的示例,帮助您快速梳理ModelArts的Notebook开发流程。

MNIST是一个手写体数字识别数据集,常被用作深度学习的入门样例。本示例将针对MNIST数据集,使用MoXing接口编写的模型训练和预测代码(ModelArts默认提供),您可以使用此示例,在Notebook中一站式完成模型训练,并上传图片进行预测。

开始使用样例前,请仔细阅读准备工作罗列的要求,提前完成准备工作。使用Notebook完成模型构建的步骤如下所示:

ModelArts快速入门 4 AI 工程师:AI 全流程开发

文档版本 01 (2020-10-15) 版权所有 © 华为技术有限公司 24

Page 28: 快速入门 · 2020. 9. 19. · ModelArts 快速入门 文档版本 01 发布日期 2020-09-17 华为技术有限公司

● 步骤1:准备数据

● 步骤2:使用Notebook训练模型并预测

● 步骤3:删除相关资源,避免计费

准备工作● 已注册华为云账号,且在使用ModelArts前检查账号状态,账号不能处于欠费或冻

结状态。

● 当前账号已完成访问授权的配置。如未完成,请参考使用委托授权。针对之前使用访问密钥授权的用户,建议清空授权,然后使用委托进行授权。

● 已在OBS服务中创建桶和文件夹,用于存放样例数据集以及模型。如下示例中,请创建命名为“test-modelarts”的桶,并创建如表4-3所示的文件夹。

创建OBS桶和文件夹的操作指导请参见创建桶和新建文件夹。请确保您使用的OBS与ModelArts在同一区域。

表 4-3 文件夹列表

文件夹名称 用途

“dataset-mnist” 用于存储数据集。

“mnist-MoXing-code”

用于存储编写好的模型代码“mnist_example.ipynb”。

“train-log” 用于存储图片,此图片用于预测。

● 针对此示例,ModelArts提供了一个编写好的模型代码

“mnist_example.ipynb”。您需要从Github中提前获取文件,待模型训练结束后,需要将此文件上传至对应位置。

a. 在gitee的ModelArts-Lab工程中,单击“克隆/下载”,然后单击“下载ZIP”,下载工程。

b. 下载完成后,解压缩“ModelArts-Lab-master.zip”文件,然后在“\ModelArts-Lab-master\official_examples\Using_Notebook_to_Create_a_MNIST_Dataset_Recognition_Application\code”目录中获取到示例代码文件“mnist_example.ipynb”。

c. 参考上传文件至OBS的操作指导,将“mnist_example.ipynb”文件上传至“test-modelarts”桶的“mnist-MoXing-code”文件夹中。

● 准备一张黑底白字的图片,且尺寸为“28px*28px”,图片中手写一个数字。例如准备一张命名为“7.jpg”图片,图片中有一个手写数字7。将准备好的图片上传至“test-modelarts”桶的“train-log”文件夹中,用于预测。

步骤 1:准备数据

ModelArts在公共OBS桶中提供了MNIST数据集,命名为“Mnist-Data-Set”,因此,本文的操作示例使用此数据集进行模型构建。您需要执行如下操作,将数据集上传至您的OBS目录下,即准备工作中您创建的OBS目录“test-modelarts/dataset-mnist”。

1. 单击数据集下载链接,将“Mnist-Data-Set”数据集下载至本地。

2. 在本地,将“Mnist-Data-Set.zip”压缩包解压。例如,解压至本地“Mnist-Data-Set”文件夹下。

ModelArts快速入门 4 AI 工程师:AI 全流程开发

文档版本 01 (2020-10-15) 版权所有 © 华为技术有限公司 25

Page 29: 快速入门 · 2020. 9. 19. · ModelArts 快速入门 文档版本 01 发布日期 2020-09-17 华为技术有限公司

3. 参考上传文件,使用批量上传方式将“Mnist-Data-Set”文件夹下的所有文件上传至“test-modelarts/dataset-mnist”OBS路径下。

“Mnist-Data-Set”数据集包含的内容如下所示,其中“.gz”为对应的压缩包。

– “t10k-images-idx3-ubyte”:验证集,共包含10000个样本。

– “t10k-images-idx3-ubyte.gz”:验证集的压缩包文件。

– “t10k-labels-idx1-ubyte”:验证集标签,共包含10000个样本的类别标签。

– “t10k-labels-idx1-ubyte.gz”:验证集标签的压缩包文件。

– “train-images-idx3-ubyte”:训练集,共包含60000个样本。

– “train-images-idx3-ubyte.gz”:训练集的压缩包文件。

– “train-labels-idx1-ubyte”:训练集标签,共包含60000个样本的类别标签。

– “train-labels-idx1-ubyte.gz”:训练集标签的压缩包文件。

步骤 2:使用 Notebook 训练模型并预测

数据准备完成后,您需要使用Notebook编写代码构建模型。ModelArts提供了一个基于MoXing实现手写数字图像训练、预测的示例代码“mnist_example.ipynb”。

1. 参考准备工作的操作指导,获取“mnist_example.ipynb”文件,并上传至OBS,例如“test-modelarts/mnist-MoXing-code”。

2. 在ModelArts管理控制台,进入“开发环境>Notebook”页面,单击左上角的“创建”。

3. 在“创建Notebook”页面,参考表4-4填写相关信息,然后单击“下一步”。

表 4-4 本示例的参数填写说明

参数 说明

名称 用户可自定义Notebook实例名称。

自动停止 为避免资源浪费,启用自动停止功能,并选择1小时后自动停止。

工作环境 选择“Multi-Engine 1.0 (python3 推荐)”。

资源池 选“公共资源池”。

类型 选择“GPU”。

规格 选择“GPU: 1*v100NV32 CPU: 8 核 64GiB”,您也可以选择“免费规格”,如果使用“免费规格”,可能会由于使用人数较多导致排队等待。

存储配置 选择“对象存储服务”,并在“存储位置”选择示例文件存储的OBS路径,例如“test-modelarts/mnist-MoXing-code”。

4. 在“规格确认”页面,确认信息无误后,单击“提交”。

5. 在“Notebook”管理页面,当新建的Notebook状态变为“运行中”时,表示Notebook已创建完成。单击操作列的“打开”,进入“Jupyter”页面。

ModelArts快速入门 4 AI 工程师:AI 全流程开发

文档版本 01 (2020-10-15) 版权所有 © 华为技术有限公司 26

Page 30: 快速入门 · 2020. 9. 19. · ModelArts 快速入门 文档版本 01 发布日期 2020-09-17 华为技术有限公司

6. 在“Jupyter”页面的“Files”页签下,您可以看到步骤1上传的示例代码文件。单击文件名称,进入Notebook详情页。

在详情页根据页面提示,选择和代码环境相匹配的Kernel环境并单击“SetKernel”,本示例使用的Kernel为“TensorFlow-1.8”。如果界面无此提示,可不进行Kernel环境设置,直接执行下一步。

图 4-9 设置 Kernel 环境

7. 在Notebook详情页,示例代码文件已提供了详细的描述,包含“数据准备”、“训练模型”和“预测”。

a. 数据准备:步骤1:准备数据已完成数据准备,数据集所在路径为“test-modelarts/dataset-mnist/”。示例代码提供了数据集的介绍说明。

b. 训练模型

在训练模型区域,将“data_url”修改为步骤1:准备数据中数据集所在OBS路径,您可以从OBS管理控制台拷贝OBS路径,并将OBS路径修改为“obs://”格式。例如:data_url = 'obs://test-modelarts/dataset-mnist/'

代码修改完成后,从第一个Cell开始,单击 运行代码,将训练模型区域下的所有Cell运行一遍。在训练模型区域最后,将显示运行日志,当日志出现如下类似信息时,表示模型训练成功。如下日志信息表示模型训练成功,且模型文件已成功生成。INFO:tensorflow:No assets to write.

INFO:tensorflow:Restoring parameters from ./cache/log/model.ckpt-1000

INFO:tensorflow:SavedModel written to: b'./cache/log/model/saved_model.pb'

An exception has occurred, use %tb to see the full traceback.

c. 预测

模型训练完成后,可上传一张图片,并使用生成的模型预测。参考准备工作操作指导示例,已将用于预测的“7.jpg”图片上传至“test-modelarts/train-log”路径中。

在Notebook中,将预测区域的“src_path”修改为图片实际存放的OBS路径和名称。此处请使用“obs://”格式的OBS路径。src_path = 'obs://test-modelarts/train-log/7.jpg'

代码修改完成后,从第一个Cell开始,单击 运行代码,将预测区域下的所有Cell运行一遍。在预测区域最后,将显示运行日志,当日志出现如下类似信息时,显示图片预测结果,例如本示例中图片的手写数字为“7”。请对比图片中的数字和预测结果,判断预测结果是否正确。INFO:tensorflow:Running local_init_op. INFO:tensorflow:Done running local_init_op. INFO:tensorflow:Done running local_init_op. The result: [7] INFO:tensorflow:[1 examples]

ModelArts快速入门 4 AI 工程师:AI 全流程开发

文档版本 01 (2020-10-15) 版权所有 © 华为技术有限公司 27

Page 31: 快速入门 · 2020. 9. 19. · ModelArts 快速入门 文档版本 01 发布日期 2020-09-17 华为技术有限公司

INFO:tensorflow: [1 examples] An exception has occurred, use %tb to see the full traceback.

步骤 3:删除相关资源,避免计费

为避免产生不必要的费用,在完成试用后,建议您删除相关资源,本示例包含数据和Notebook。

● 删除Notebook:在“开发环境>Notebook”页面,单击操作列的“删除”。

● 删除数据:前往OBS,删除上传的数据,然后删除文件夹及OBS桶。

4.3 使用 PyCharm ToolKit 训练模型本章节提供了使用MXNet实现手写数字图像识别应用的示例,帮助您使用ModelArts提供的PyCharm ToolKit工具,在本地快速完成模型的训练和部署。更多关于PyCharmToolKit工具的描述,请参见《工具指南》。

MNIST是一个手写体数字识别数据集,常被用作深度学习的入门样例。本示例将针对MNIST数据集,使用MXNet原生接口编写的模型训练脚本(ModelArts默认提供),在ModelArts PyCharm ToolKit中完成模型训练,并将此模型部署为在线服务。部署完成后,用户可通过在线服务识别输入图片中的数字。

开始使用样例前,请仔细阅读准备工作罗列的要求,提前完成准备工作。本示例模型构建的步骤如下所示:

准备工作

● 本地已安装PyCharm 2019.2或以上版本,推荐Windows版本,Community或Professional均可,请单击PyCharm工具下载地址获取工具并在本地完成安装。

● 已注册华为云账号,且在使用ModelArts前检查账号状态,账号不能处于欠费或冻结状态。

● 在ModelArts管理控制台中,当前账号已完成访问授权的配置。如果已完成,此操作可跳过。

如未完成,请参考使用委托授权。针对之前使用访问密钥授权的用户,建议清空授权,然后使用委托进行授权。

● 已在OBS服务中创建桶和文件夹,用于存放样例数据集以及模型。如下示例中,请创建命名为“test-modelarts”的桶,并创建如表4-5所示的文件夹。

创建OBS桶和文件夹的操作指导请参见创建桶和新建文件夹。确保您使用的OBS目录与ModelArts在同一区域。

表 4-5 文件夹列表

文件夹名称 用途

“dataset-mnist” 用于存储数据集。

“mnist-output” 用于存储训练输出的模型和日志文件。

ModelArts快速入门 4 AI 工程师:AI 全流程开发

文档版本 01 (2020-10-15) 版权所有 © 华为技术有限公司 28

Page 32: 快速入门 · 2020. 9. 19. · ModelArts 快速入门 文档版本 01 发布日期 2020-09-17 华为技术有限公司

步骤 1:安装 PyCharm ToolKit,并添加访问密钥

1. 获取PyCharm ToolKit工具安装包,单击ToolKit工具的下载地址,获得工具包。

2. 打开本地PyCharm工具。

3. 在PyCharm工具中,选择菜单栏的“File > Settings”,弹出“Settings”对话框。

4. 在“Settings”对话框中,首先单击左侧导航栏中的“Plugins”,然后单击右侧的设置图标,选择“Install Plugin from Disk”,弹出文件选择对话框。

图 4-10 选择从本地安装插件

5. 在弹出的对话框中,从本地目录选择ToolKit的工具包,然后单击“OK”。

ModelArts快速入门 4 AI 工程师:AI 全流程开发

文档版本 01 (2020-10-15) 版权所有 © 华为技术有限公司 29

Page 33: 快速入门 · 2020. 9. 19. · ModelArts 快速入门 文档版本 01 发布日期 2020-09-17 华为技术有限公司

图 4-11 选择插件文件

6. 单击“Restart IDE”重启PyCharm。在弹出的确认对话框中,单击“Restart”开始重启。

图 4-12 重启 PyCharm

7. 重启成功后,当PyCharm工具栏出现“ModelArts”页签,表示ToolKit工具已安装完成。

ModelArts快速入门 4 AI 工程师:AI 全流程开发

文档版本 01 (2020-10-15) 版权所有 © 华为技术有限公司 30

Page 34: 快速入门 · 2020. 9. 19. · ModelArts 快速入门 文档版本 01 发布日期 2020-09-17 华为技术有限公司

图 4-13 安装成功

8. 获取访问密钥,并在PyCharm中添加密钥。

– 获取此账号的访问密钥(“AK/SK”),详细操作请参见获取访问密钥。

– PyCharm ToolKit安装后,在ToolKit工具中添加访问密钥,详细操作请参见使用访问秘钥登录。

图 4-14 填写区域和访问密钥

9. 查看认证结果。

在Event Log区域中,当提示如下类似信息时,表示访问密钥添加成功。16:01 Validate Credential Success: The HUAWEI CLOUD credential is valid.

步骤 2:准备数据

ModelArts在公共OBS桶中提供了MNIST数据集,命名为“Mnist-Data-Set”,因此,本文的操作示例使用此数据集进行模型构建。您需要执行如下操作,将数据集上传至您的OBS目录下,即准备工作中您创建的OBS目录“test-modelarts/dataset-mnist”。

1. 单击数据集下载链接,将“Mnist-Data-Set”数据集下载至本地。

2. 在本地,将“Mnist-Data-Set.zip”压缩包解压。例如,解压至本地“Mnist-Data-Set”文件夹下。

3. 参考上传文件,使用批量上传方式将“Mnist-Data-Set”文件夹下的所有文件上传至“test-modelarts/dataset-mnist”OBS路径下。

“Mnist-Data-Set”数据集包含的内容如下所示,其中“.gz”为对应的压缩包。

– “t10k-images-idx3-ubyte”:验证集,共包含10000个样本。

– “t10k-images-idx3-ubyte.gz”:验证集的压缩包文件。

– “t10k-labels-idx1-ubyte”:验证集标签,共包含10000个样本的类别标签。

ModelArts快速入门 4 AI 工程师:AI 全流程开发

文档版本 01 (2020-10-15) 版权所有 © 华为技术有限公司 31

Page 35: 快速入门 · 2020. 9. 19. · ModelArts 快速入门 文档版本 01 发布日期 2020-09-17 华为技术有限公司

– “t10k-labels-idx1-ubyte.gz”:验证集标签的压缩包文件。

– “train-images-idx3-ubyte”:训练集,共包含60000个样本。

– “train-images-idx3-ubyte.gz”:训练集的压缩包文件。

– “train-labels-idx1-ubyte”:训练集标签,共包含60000个样本的类别标签。

– “train-labels-idx1-ubyte.gz”:训练集标签的压缩包文件。

步骤 3:编写训练代码

ModelArts提供了本示例需要使用的训练代码,请获取并在PyCharm工程中打开。

1. 在gitee的ModelArts-Lab工程中,单击“克隆/下载”,然后单击“下载ZIP”,下载工程。

2. 下载完成后,解压缩“ModelArts-Lab-master.zip”文件,然后在“\ModelArts-Lab-master\official_examples\Using_MXNet_to_Create_a_MNIST_Dataset_Recognition_Application\codes”目录中获取到训练代码文件“train_mnist.py”。

3. 打开PyCharm工具,单击“File > New Project”创建新工程, 在工程目录下创建“src”文件夹,并将训练代码文件“train_mnist.py”拷贝到“src”文件夹下。

图 4-15 将训练代码拷贝至 src 目录

步骤 4:训练模型

数据和代码准备完成后,您可以创建一个训练作业,选用MXNet引擎,基于本地的train_mnist.py训练脚本,并最终生成一个可用的模型。本示例已提供编码完成的脚本(基于MXNet引擎的原生接口),如果使用自行编写的代码,请使用ModelArts支持的引擎类型及其对应版本的接口,并满足其要求。

1. 在PyCharm工具栏中,选择“ModelArts > Edit Training Job Configuration”。

2. 在弹出的对话框中,按照如下示例配置训练参数。

– “Job Name”:自动生成,首次提交训练作业时,该名称也可以自己指定。

– “AI Engine”:选择“MXNet”,版本为“MXNet-1.2.1-python3.6”。

– “Algorithm Source”:选择“Frequently-used”,代表常用框架。

– “Specifications”:选择GPU规格。

– “OBS Path”:填写准备工作中创建的输出路径,用于存储训练输出模型和日志文件。

– “Data Path in OBS”:填写步骤2:准备数据中数据上传的OBS目录。此处需完整OBS路径,需包含OBS桶名称。

ModelArts快速入门 4 AI 工程师:AI 全流程开发

文档版本 01 (2020-10-15) 版权所有 © 华为技术有限公司 32

Page 36: 快速入门 · 2020. 9. 19. · ModelArts 快速入门 文档版本 01 发布日期 2020-09-17 华为技术有限公司

此示例填写的值如图所示,请务必修改为您自己的OBS桶及路径。

– “Boot File Path”:选择本地的训练脚本“train_mnist.py”。

– “Code Directory”:选择启动脚本所在“src”目录。

– “Running Parameters”:是训练脚本所需要的输入参数,本样例中没有参数,无需填写。

填写完成后,单击“Apply and Run”提交训练作业到云上ModelArts。

说明

由于MNIST数据集数据较多,为提升训练效率,操作示例选择GPU训练。但是,GPU的费用高于CPU,请根据实际情况选择可用的资源池。

图 4-16 配置训练作业

3. 训练作业提交后,可在下方查看训练日志。当训练日志中出现“Current trainingjob status: Successful”类似信息时,表示训练作业运行成功。

图 4-17 查看训练日志

其中, “ModelArts Event Log”栏为工具打印的日志,“ModelArts TrainingLog”为训练脚本代码打印的日志。

从日志可以看到,工具会先将本地工程的代码自动上传至云上OBS,然后自动提交一个训练作业。作业提交成功后,工具会实时从云上的训练环境获取日志并展示在“ModelArts Training Log”窗口,直至作业运行结束。

ModelArts快速入门 4 AI 工程师:AI 全流程开发

文档版本 01 (2020-10-15) 版权所有 © 华为技术有限公司 33

Page 37: 快速入门 · 2020. 9. 19. · ModelArts 快速入门 文档版本 01 发布日期 2020-09-17 华为技术有限公司

4. 在PyCharm的左边菜单栏,单击“ModelArts Explorer”,选择刚才提交的作业,双击版本号“V0001”,可以查看作业详情。

图 4-18 选择对应的训练作业及版本

ModelArts快速入门 4 AI 工程师:AI 全流程开发

文档版本 01 (2020-10-15) 版权所有 © 华为技术有限公司 34

Page 38: 快速入门 · 2020. 9. 19. · ModelArts 快速入门 文档版本 01 发布日期 2020-09-17 华为技术有限公司

图 4-19 训练作业详情

步骤 5:编写推理代码和配置文件,并上传至模型所在路径

ModelArts提供了本示例需要使用的推理代码“customize_service.py”和配置文件“config.json”文件路径和下载的git工程中的训练代码在同一目录。此推理代码和配置文件是ModelArts提供的示例。

在步骤4:训练模型中,训练作业生成的模型存储在“test-modelarts/mnist-output/MA-mnist-11-30-16/output/V0001”路径下(其中MA-mnist-11-30-16是JobName,如果配置时填写了自定义Job Name,则路径中就是自定义的Job Name),且系统将自动生成“model”文件夹,模型相关的文件存储在此目录下。将获取的“customize_service.py”和“config.json”文件,上传至OBS的“model”文件夹下。

说明

如果训练作业运行多次,将在“训练输出位置”生成不同的版本,即“mnist-output”目录下将生成多种版本的目录,如“V0001”、“V0002”,请基于训练作业的版本,将文件上传至对应版本下的“model”文件夹内。

前往OBS管理控制台,找到“test-modelarts”桶,然后进入“test-modelarts/mnist-output/MA-mnist-11-30-16/output/V001/model”路径,执行“上传对象”的操作。OBS的上传操作指导,请参见上传文件。

步骤 6:部署在线服务

训练完成的模型还是存储在OBS路径中,您可以将此模型导入到ModelArts中并部署为在线服务。

1. 在训练作业版本号上单击鼠标右键,选择“Deploy to Service”。

ModelArts快速入门 4 AI 工程师:AI 全流程开发

文档版本 01 (2020-10-15) 版权所有 © 华为技术有限公司 35

Page 39: 快速入门 · 2020. 9. 19. · ModelArts 快速入门 文档版本 01 发布日期 2020-09-17 华为技术有限公司

图 4-20 部署为在线服务

2. 在弹出的对话框中,按照如下说明填写部署为在线服务的参数。

– “Service Name”:自动生成,也可以自定义。

– “Auto Stop”:勾选Auto Stop,表示启动自动停止功能,服务会在指定时间后自动停止。

– “Model Path”:自动填写,无需自己配置。与您选择的训练作业及其版本一致。

– “Environment Variables”:填写运行参数,设置为“input_data_name=images;input_data_shape=0,1,28,28;output_data_shape=0,10”。

▪ “input_data_name”:参数值必须是images。针对自己开发训练脚本的场景,此参数是必须设置的。您可以在导入模型时设置参数,也可以写到推理代码中。

▪ “input_data_shape”:代表NCHW。本示例的数值为“0,1,28,28”,表示设置了输入图片的规则,其中,输入预测图片大小必须是“28px*28px”。

▪ “output_data_shape”:置信度。本示例指定范围为“0~10”。表示输出结果会显示“0~9”中10个类别,属于每一个类别的概率。

信息填写完成后,单击“OK”,开始服务部署。

ModelArts快速入门 4 AI 工程师:AI 全流程开发

文档版本 01 (2020-10-15) 版权所有 © 华为技术有限公司 36

Page 40: 快速入门 · 2020. 9. 19. · ModelArts 快速入门 文档版本 01 发布日期 2020-09-17 华为技术有限公司

图 4-21 部署为在线服务

可以在最下方的日志栏查看服务部署进度。

图 4-22 查看部署进度

模型部署上线需要花费一些时间,请耐心等待几分钟。当出现类似“Servicestatus is running”信息时,表示服务部署成功。服务部署成功后,将展示在线服务的链接,单击链接可以进入华为云ModelArts在线服务的界面。

说明

首次进入需要输入华为云账号密码登录。

ModelArts快速入门 4 AI 工程师:AI 全流程开发

文档版本 01 (2020-10-15) 版权所有 © 华为技术有限公司 37

Page 41: 快速入门 · 2020. 9. 19. · ModelArts 快速入门 文档版本 01 发布日期 2020-09-17 华为技术有限公司

图 4-23 完成部署

步骤 7:测试服务

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

1. 部署成功后,单击提供的链接进入在线服务。

2. 在线服务详情页面中,单击“预测”页签,进入预测页面。

3. 在“选择预测图片文件”右侧,单击“上传”按钮,上传一张黑底白字的图片,然后单击“预测”。

预测完成后,预测结果显示区域将展示预测结果,根据预测结果内容,可识别出此图片的数字是“8”的概率为“1”。

说明

● 由于推理代码和配置文件中已指定图片要求,用于预测的图片,大小必须为“28px*28px”,且图片必须是黑底白字。

● 建议不要使用数据中自带的图片,可以使用Windows自带的画图工具绘制一张。

图 4-24 预测结果

步骤 8:清除相应资源,避免产生费用

为避免产生不必要的费用,在完成试用后,建议您删除相关资源,如在线服务、训练作业及其OBS目录。

● 进入ModelArts管理控制台,删除在线服务:在“在线服务”页面,单击操作列的“更多>删除”。

● 进入ModelArts管理控制台,删除训练作业:在“训练作业”页面,单击操作列的“删除”。

ModelArts快速入门 4 AI 工程师:AI 全流程开发

文档版本 01 (2020-10-15) 版权所有 © 华为技术有限公司 38

Page 42: 快速入门 · 2020. 9. 19. · ModelArts 快速入门 文档版本 01 发布日期 2020-09-17 华为技术有限公司

● 进入OBS管理控制台,删除数据准备阶段创建的OBS桶。先逐个删除桶内文件夹和文件,再执行删除桶的操作。

ModelArts快速入门 4 AI 工程师:AI 全流程开发

文档版本 01 (2020-10-15) 版权所有 © 华为技术有限公司 39