MindSpore两日训练营第五期笔记】导出MindIR格式模型

网友投稿 1015 2022-05-25

一、MindIR 概述

MindSpore通过统一IR定义了网络的逻辑结构和算子的属性,将MindIR格式的模型文件

与硬件平台解耦,实现一次训练多次部署。

MindIR作为MindSpore的统一模型文件,同时存储了网络结构和权重参数值。同时支持

部署到云端Serving和端侧Lite平台执行推理任务。

同一个MindIR文件支持多种硬件形态的部署:

- Serving部署推理

- 端侧Lite推理部署

二、名词解释

Checkpoint

• 采用了Protocol Buffers格式,存储了网络中所有的参数值。

• 一般用于训练任务中断后恢复训练,或训练后的微调(Fine Tune)任务。

【MindSpore两日训练营第五期笔记】导出MindIR格式模型

•MindIR

• 全称MindSpore IR,是MindSpore的一种基于图表示的函数式IR,定义了可扩展的图

结构以及算子的IR表示。

• 它消除了不同后端的模型差异,一般用于跨硬件平台执行推理任务。

•ONNX

• 全称Open Neural Network Exchange,是一种针对机器学习模型的通用表达。

• 一般用于不同框架间的模型迁移或在推理引擎(TensorRT)上使用。

•AIR

• 全称Ascend Intermediate Representation,是华为定义的针对机器学习所设计的开放式

文件格式。

• 它能更好地适应华为AI处理器,一般用于Ascend 310上执行推理任务。

三、导出LeNet网络的MindIR格式模型

1.训练LeNet模型生成checkpoint

LeNet训练代码选用MindSpore官方代码仓中modelzool中的代码

地址:https://gitee.com/mindspore/mindspore/tree/master/model_zoo/official/cv/lenet

2.MNIST数据-

1)官方-:http://yann.lecun.com/exdb/mnist/

2)网盘下载:链接: https://pan.baidu.com/s/1zX-OwL8bOgq4dhEuaRj2Xg 提取码: zew6

MNIST数据集下载完成后解压到代码根目录下

3.执行训练命令

python train.py --data_path ./MNIST_DATA/ --ckpt_path=./checkpoint/ --device_target Ascend

注:我使用的是昇腾平台进行模型训练,如果使用CPU或者GPU进行训练的话device_target后面改为对应的就好

当屏幕出现epoch、loss等数值时模型就开始进行训练了

4.得到checkpoint

当模型训练参数中指定的ckpt_path文件夹中出现ckpt文件就代表训练成功了。接下去我们可以选择一个ckpt文件进行转换mindir格式。这里我选择checkpoint_lenet-10_1875.ckpt

5.编写模型转换代码

import numpy as np from mindspore import Tensor, export, load_checkpoint, load_param_into_net from src.lenet import LeNet5 lenet = LeNet5() # load the parameter into net load_checkpoint("./checkpoint/checkpoint_lenet-10_1875.ckpt", net=lenet) #checkpoint_lenet-10_1875.ckpt更换成对应所需要转换的ckpt文件 input = np.random.uniform(0.0, 1.0, size=[32, 1, 32, 32]).astype(np.float32) #Lenet模型的size为32,1,32,32 export(lenet, Tensor(input), file_name='lenet-10_1875', file_format='MINDIR') #file_name指定转换后文件的文件名

6.执行模型转换代码

python lenet_mindr.py

执行完毕后查看代码根目录下如果存在前面我们指定的lenet-10_1875.mindir文件的话就代表模型转化成功了!

四、导出ResNet50网络的MindIR格式模型

1.训练ResNet50网络生成checkpoint

ResNet50模型训练代码依旧使用MindSpore官方代码仓中modelzoo的代码,链接:https://gitee.com/mindspore/mindspore/tree/master/model_zoo/official/cv/resnet

2.Cifar10数据集

因为ImageNet数据集比较庞大训练需要比较久的时间,所以这边我们采用cifar10数据集进行模型训练

1)Cifar10数据集官方下载:http://www.cs.toronto.edu/~kriz/cifar.html

2)  百度网盘下载:链接: https://pan.baidu.com/s/1CpgjFtZk2ZQsr_qUtc6z1g 提取码: kjhi

3.执行训练命令

python train.py --net resnet50 --dataset cifar10 --dataset_path ./data/cifar10-bin/train/ --device_target Ascend

注:我使用的是昇腾平台进行模型训练,如果使用CPU或者GPU进行训练的话device_target后面改为对应的就好

当屏幕出现epoch、loss等数值时模型就开始进行训练了

4.获取checkpoint

当模型训练参数中指定的ckpt_path文件夹中出现ckpt文件就代表训练成功了。接下去我们可以选择一个ckpt文件进行转换mindir格式。这里我选择resnet-90_1562.ckpt

5.编写模型转换脚本

import numpy as np from mindspore import Tensor, export, load_checkpoint, load_param_into_net from src.resnet import resnet50 as ResNet50 resnet = ResNet50() # load the parameter into net load_checkpoint("./checkpoint/resnet-90_1562.ckpt", net=resnet) input = np.random.uniform(0.0, 1.0, size=[32, 3, 224, 224]).astype(np.float32) export(resnet, Tensor(input), file_name='resnet-90_162', file_format='MINDIR')

6.执行模型转换

python resnet_mindir.py

执行完毕后查看代码根目录下如果存在前面我们指定的resnet-90_1562.mindir文件的话就代表模型转化成功了!

AI MindSpore 机器学习

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:计算机控制技术期中测试素材2020版
下一篇:STM32深入实践教程目录STM32 HAL库学习系列
相关文章