MNIST_Example/Example_Picture/快速创建NPU训练任务.md

7.8 KiB
Raw Permalink Blame History

如何在启智平台上进行模型训练 - NPU版本

1 概述

  • 本项目以LeNet-MNIST为例简要介绍如何在启智AI协同平台上使用MindSpore完成训练任务并提供单数据集的训练多数据集的训练智算网络的训练单数据集推理等训练代码示例旨在为AI开发者提供启智npu训练示例。对于示例代码有任何问题欢迎在本项目中提issue。
  • 用户可以直接使用本项目提供的数据集和代码文件创建自己的训练任务。
  • 启智平台对接ModelArts和OBS将数据集代码训练资源池等整合在启智AI协同平台上供开发者使用。
    • ModelArts是华为云提供的面向开发者的一站式AI开发平台集成了昇腾AI处理器资源池用户可以在ModelArts下体验MindSpore。
    • OBS是华为云提供的存储方式。

2 准备工作

  • 启智平台使用准备,本项目需要用户创建启智平台账户,克隆代码到自己的账户,上传数据集,具体操作方法可以通过访问OpenI_Learning项目学习小白训练营系列课程进行学习。

2.1 数据准备

数据集下载

  • 数据集可从本项目的数据集目录中下载,数据集下载
  • 数据文件说明
    • MNISTData数据集是由10类2828的灰度图片组成训练数据集包含60000张图片测试数据集包含10000张图片。

    • 数据集压缩包的目录结构如下:

      MNIST_Data.zip ├── test │ ├── t10k-images-idx3-ubyte │ └── t10k-labels-idx1-ubyte └── train ├── train-images-idx3-ubyte └── train-labels-idx1-ubyte

      checkpoint_lenet-1_1875.zip ├── checkpoint_lenet-1_1875.ckpt

数据集上传

  • 由于本示例使用的是Mindspore开发需要在NPU芯片运行所以上传的数据集需要传到NPU界面。【注意如果你需要试运行本示例则无需再次上传数据集因为本示例中的数据集MNIST_Example已经设置为公开数据集可以直接引用或点赞收藏后使用】
  • 如下所示:
  • avatar

imagenet-1k

  • 平台已经将imagenet-1k挂载到了训练镜像中可在训练脚本中直接读取具体用法请参考上述示例代码。
  • imagenet-1k在训练镜像中的绝对路径
.
└── cache/
    ├── ascend
    ├── outputs
    ├── user-job-dir
    └── sfs/
        └── data/
            └── imagenet/
                ├── train/
                │   └── n01440764/
                │       └── n01440764_11063.JPEG
                └── val/
                    └── n01440764/
                        └── ILSVRC2012_val_00011993.JPEG

2.2 执行脚本准备

示例代码

  • 示例代码可从本仓库中下载,代码下载
  • 代码文件说明
    • train.py启智集群单数据集训练的脚本文件包括将数据集从obs拷贝到训练镜像中、指定迭代次数、把训练后的模型数据拷贝回obs等。具体说明请参考train.py的代码注释
    • train_for_c2net.py,智算网络训练的脚本文件,包括指定迭代次数等。具体说明请参考train_for_c2net.py的代码注释
    • inference.py启智集群用于推理的脚本文件包括将数据集从obs拷贝到训练镜像中、指定迭代次数、把训练后的模型数据拷贝回obs等。具体说明请参考inference.py的代码注释
    • config.py,网络配置信息,在单数据集训练,多数据集训练,智算网络训练等训练脚本中会使用到。
    • dataset.py,对原始数据集进行预处理,产生可用于网络训练的数据集,在单数据集的训练,多数据集的训练,智算网络的训练等训练脚本中会使用到。
    • lenet.py,使用的训练网络,在单数据集训练,多数据集训练,智算网络训练等训练脚本中会使用到。
    • dataset_distributes.py,对原始数据集进行预处理,产生可用于单机多卡训练的数据集。

3 创建训练任务

  • 准备好数据和执行脚本以后需要创建训练任务将MindSpore脚本真正运行起来。首次使用的用户可参考本示例代码。

使用MindSpore作为训练框架创建训练作业界面截图如下图所示。

avatar

表1 创建训练作业界面参数说明

参数名称 说明
代码分支 选择仓库代码中要使用的代码分支默认可选择master分支。
AI引擎 AI引擎选择[Ascend-Powered-Engine]和所需的MindSpore版本(本示例图片为 [Mindspore-1.3.0-python3.7-aarch64],请注意使用与所选版本对应的脚本)。
启动文件 启动文件选择代码目录下的启动脚本。
数据集 数据集选择已上传到启智平台的数据集。
运行参数 单数据集数据存储位置和训练输出位置分别对应运行参数data_url和train_url注意多数据集需要增加参数multi_data_url并在代码中声明选择增加运行参数可以向脚本中其他参数传值如epoch_size。在这里只需填入其他参数传值data_url和train_url已默认加入运行参数用户无需重复指定只需在代码中指定。
资源池 规格选择[Ascend: 1 * Ascend 910 CPU24 核 256GiB],表示单机单卡

4 查看运行结果

4.1 在训练作业界面可以查看运行日志

avatar

4.2 训练结束后可以下载模型文件

avatar

对于示例代码有任何问题欢迎在本项目中提issue。