文档首页 > > 最佳实践> Ascend应用教程> Ascend910训练和Ascend310推理的样例

Ascend910训练和Ascend310推理的样例

分享
更新时间:2020/11/17 GMT+08:00

如下操作步骤,以MindSpore引擎的“ResNet50”为例,指导如何从AI市场订阅算法,然后使用算法创建训练模型,将所得的模型部署为在线服务(Ascend 910训练+Ascend 310推理)。针对支持Ascend 910训练和Ascend 310推理的算法,如ResNet_v1_50,可参考此章节操作。

  • Ascend芯片的应用,仅支持在“华北-北京四”区域试用。
  • 在ModelArts中使用Ascend芯片资源之前,您需要申请ModelArts华为云昇腾集群服务公测
  • Ascend 910训练资源,只能用于一个正在运行中的作业。
  1. 数据准备
  2. 订阅算法
  3. 使用订阅算法创建训练作业(Ascend 910)
  4. 模型转换
  5. 导入模型
  6. 部署为在线服务(Ascend 310)

数据准备

  1. 获取样例数据集“Flowers-Data-Set”数据集中包含了花卉图片及其标注信息。由于数据集中数据较多,推荐使用OBS Browser+工具上传文件
  2. 登录ModelArts管理控制台,在左侧菜单栏中选择“数据管理 > 数据集”
  3. 在数据集管理页面,单击“创建数据集”,创建一个“图像分类”类型的数据集。
    其中,“数据集输入位置”,选择步骤1中数据存储的OBS路径。“数据集输出位置”,请务必选择一个空目录存储,且此目录不能是“数据集输入位置”对应目录的子目录。
    图1 创建数据集
  4. 参数填写完成后,单击右下角的“创建”,完成数据集的创建。此时页面将自动跳转至数据集列表中。
  5. 在数据集列表页面,单击数据集名称,进入数据集概览页,然后单击右上角的“开始标注”,进入数据集详情页。
  6. 在数据集详情页面中,等待数据同步至ModelArts中。由于数据集已完成标注,无需重新标注,只需等待数据同步即可。由于数据集中数据较多,数据同步需要花费2分钟左右,请耐心等待。

    “已标注”页签下呈现所有上传数据时,表示数据已完成同步。

  7. 单击左上角“返回数据集概览”,然后在数据集概览页中,单击右上角的“发布”
  8. 在弹出的对话框中,填写“版本名称”“版本格式”,可使用默认值。“训练验证比例”建议设置为“0.8”。然后单击“确定”完成发布。

    验证集不参与训练,用于训练过程中评估模型的好坏,验证集比例太大,会导致训练集变少,影响训练效果。验证集太少,可能导致验证的精度不准确。针对此示例,推荐使用0.8比例进行切分。

    图2 发布数据集版本
  9. 在数据集列表页面,等待数据集发布完成。发布过程中的数据集,其名称前面有个运行标记。当数据集发布结束后,其操作列的发布按钮将呈现为蓝色可点击状态。

    请耐心等待,必须等数据集发布成功后,才可以执行下一步训练模型的操作。

订阅算法

ModelArts官方提供了一个“ResNet50”,算法用途为图像分类,且此算法训练所得的模型,可快速部署在Ascend 310芯片上。目前“ResNet50”算法发布在AI市场中。您可以前往AI市场,订阅此模型,然后推送至ModelArts中。

  1. 在ModelArts管理控制台中,在左侧菜单栏中选择“AI市场”。选择进入新版AI市场。
  2. 在AI市场中,在搜索框中输入“ResNet50”,查找对应的算法。

    由于AI市场发布的预置算法有多个“ResNet50”算法,其使用的AI引擎不同,能应用的训练资源或推理资源不同。本示例建议选择带有“Ascend910/310”标识的算法,可应用于Ascend 910训练和Ascend 310推理。其中一个“ResNet50”算法是使用MindSpore引擎,另一个是TensorFlow引擎,请根据您的实际情况选择。本示例选择MindSpore引擎的“ResNet50”算法进行演示。

    图3 选择算法
  3. 单击算法名称进入算法详情页,单击右侧的“订阅”,根据界面提示完成算法订阅。

    此算法由ModelArts官方提供,目前免费开放。订阅算法完成后,页面的“订阅”按钮显示为“已订阅”

  4. 单击商品详情页的“前往控制台”,此时弹出“选择云服务区域”对话框,选择ModelArts对应的区域,然后再单击“确定”

    页面将自动跳转至ModelArts的“算法管理>市场订阅”中同步对应的算法。

    图4 前往控制台
    图5 选择云服务区域
  5. 在ModelArts管理控制台的算法管理页面,算法将自动同步至ModelArts中。

    未同步的算法,无法直接用于创建训练作业,因此从AI市场订阅完成后,需在ModelArts管理控制台执行同步操作。同步成功后,下方界面中的“创建训练作业”按钮可用,且状态变更为“就绪”

    图6 同步算法

使用订阅算法创建训练作业(Ascend 910)

算法订阅成功后,算法将呈现在“算法管理>市场订阅”中,您可以使用订阅的“ResNet50”算法创建训练作业,获得模型。

  1. 进入“算法管理>市场订阅”页面,选择订阅的“ResNet50”算法,单击左侧的小三角展开算法,在版本列表中,单击“创建训练作业”
    图7 创建训练作业
  2. 在创建训练作业页面,参考如下说明填写关键参数。
    • “算法来源”:系统默认选择订阅的算法,请勿随意修改。
    • “数据来源”:选择数据集,然后从下拉框中选择数据准备中创建好的数据集。数据集一定要选择切分训练集比例的版本,否则将会导致训练失败。
    • “训练输出”:选择一个OBS空目录存储训练输出的模型。
    • “调优参数”:建议采用默认值。如需进行调优,可参考运行参数说明
    • “资源池”:建议选择Ascend 910芯片,需注意的是,MindSpore引擎的算法,仅支持使用Ascend 910训练,不支持CPU或GPU训练。
      图8 训练作业参数
      图9 资源池设置
  3. 参数填写完成后,单击“下一步”,根据界面提示完成训练作业创建。
  4. 进入“训练管理>训练作业”页面,等待训练作业完成。

    训练作业运行需要一些时间,请耐心等待。根据经验,选择样例数据集,使用Ascend 910(单卡)资源运行,预计30多分钟完成。

    当训练作业的状态变更为“运行成功”时,表示已运行结束。您可以单击训练作业名称,进入详情页面,了解训练作业的“配置信息”、“日志”、“资源占用情况”和“评估结果”等信息。您也可以在配置的“训练输出位置”对应的OBS目录下获得训练生成的模型。

模型转换

使用预置算法训练所得的模型,需通过转换功能,转成适用于Ascend芯片的格式,即“om”格式。

  1. 在ModelArts管理控制台,选择“模型管理 > 压缩/转换”
  2. 在模型转换作业列表页面,单击“创建任务”。在创建转换任务页面中,参考如下说明填写关键参数。
    • “输入框架”:选择“TensorFlow”
    • “转换输入目录”:请选择训练作业输出路径下的“<输出路径>/V00X/onnx”目录。其中“<输出路径>/V00X”请根据实际参数填写。
    • “输出框架”:选择“MindSpore”
    • “转换输出目录”:请选择训练作业输出路径下的“<输出路径>/V00X/om/model”目录。由于训练作业可以运行多次,产生多个训练作业版本,因此“<输出路径>/V00X”请根据实际参数填写对应训练作业输出的目录及作业版本。
    • “转换模板”:用于Ascend 310芯片的模型请选择“Onnx-To-Ascend-TBE”模板。更多转换模板及其高级参数介绍请参见转换模板
    • “高级选项”:本示例可直接使用参数值如下所示。如果需要修改,请参见转换模板了解参数说明。

      “输入张量形状”“x:1,3,224,224”

      “输入数据格式”“NCHW”

      “转换输出节点”“446:0”

      “优选数据格式”“5D”

      “生成高精度模型”“0”

      “网络输出类型”“FP32”
      图10 转换模型

    如果您使用的算法为ResNet_v1_50算法(图像分类/TensorFlow/Ascend910训练),模型转换任务与ResNet50算法不一样的参数如下所示。

    “输入框架”:选择“TensorFlow”

    “转换输入目录”:请选择训练作业输出路径下的“<输出路径>/V00X/frozen_gragh”目录。

    “输出框架”:选择“MindSpore”

    “转换输出目录”:请选择训练作业输出路径下的“<输出路径>/V00X/om/model”目录。

    “转换模板”:使用“TF-FrozenGraph-To-Ascend-C32”模板进行模型转换。

    “输入张量形状”“images:1,224,224,3”

    “输入数据格式”“NHWC”

    “转换输出节点”“logits:0”

  3. 转换模型的参数填写完成后,单击“立即创建”,页面自动跳转至“压缩/转换”列表。

    当模型转换的“任务状态”变为“成功”时,表示模型已被转换成“om”格式。

    图11 模型转换成功

导入模型

模型转换为om格式后,可采用“从模板中选择元模型”的方式,导入模型。

  1. 在ModelArts管理控制台,选择“模型管理 > 模型”
  2. 在模型列表页面,单击“导入”。进入“导入模型”页面,参考如下说明填写关键参数。
    • “元模型来源”:选择“从模板中选择”
    • “模型模板”:本示例的模型需部署在Ascend 310芯片上,因此需选择“ARM-Ascend模板”。然后在“模型目录”中选择模型转换步骤中“转换输出目录”
    • “输入输出模式”:由于“ResNet50”算法的模型为“图像分类”类型的,因此此处需选择预置图像处理模式
    其他参数使用默认值。
    图12 从模板中选择模型
  3. 模型导入参数填写完成后,单击“立即创建”。页面自动跳转至模型列表页面,等待模型导入结果。

    当模型的状态变为“正常”时,表示模型导入成功。

    图13 模型导入成功

部署为在线服务(Ascend 310)

模型导入成功后,可将此模型部署为在线服务,在部署时可使用Ascend 310芯片资源。

本文仅描述了部署为在线服务的操作指导,针对批量服务的部署,其操作步骤类似,不再赘述。详细批量服务的部署指导,可参见ModelArts用户指南

  1. “模型管理>模型>我的模型”列表中,单击操作列的“部署 > 在线服务”
    图14 部署模型
  2. “部署”页面,参考如下说明填写关键参数。

    “资源池”:选择“公共资源池”

    “选择模型及配置”“模型”“版本”会自动选择前面导入的模型。在“计算节点规格”中,选择您创建的Ascend 310芯片资源,目前支持“ARMCPU:3 核 6 GiB Ascend: 1 * Ascend 310”资源规格。其他参数可使用默认值。

    图15 部署为在线服务
  3. 参数设置完成后,单击“下一步”,根据界面提示,完成在线服务的部署。

    您可以进入“在线服务列表”页面,等待服务部署结束,当服务状态变为“运行中”时,表示服务部署成功。

    图16 运行中的服务
  4. 在线服务部署完成后,您可以单击服务名称进入服务详情页。
    • 访问服务:了解调用指南,获取API接口地址,可通过postman或使用curl命令发送请求,访问在线服务
    • 预测:单击“预测”页签,上传一个测试图片,进行预测。
    更多操作,可参见ModelArts用户指南
    图17 调用指南
    图18 预测

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!非常感谢您的反馈,我们会继续努力做到更好!
反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

智能客服提问云社区提问