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

本文主要是介绍【MindSpore两日训练营第五期笔记】导出MindIR格式模型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、MindIR 概述

MindSpore通过统一IR定义了网络的逻辑结构和算子的属性,将MindIR格式的模型文件
与硬件平台解耦,实现一次训练多次部署。
MindIR作为MindSpore的统一模型文件,同时存储了网络结构和权重参数值。同时支持
部署到云端Serving和端侧Lite平台执行推理任务。
同一个MindIR文件支持多种硬件形态的部署:
- Serving部署推理
- 端侧Lite推理部署

二、名词解释

Checkpoint
• 采用了Protocol Buffers格式,存储了网络中所有的参数值。
• 一般用于训练任务中断后恢复训练,或训练后的微调(Fine Tune)任务。
•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 LeNet5lenet = 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 ResNet50resnet = 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文件的话就代表模型转化成功了!

转自文章链接:【MindSpore两日训练营第五期笔记】导出MindIR格式模型_MindSpore_昇腾论坛_华为云论坛

感谢作者的努力与分享,侵权立删!

这篇关于【MindSpore两日训练营第五期笔记】导出MindIR格式模型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/615759

相关文章

Golang的CSP模型简介(最新推荐)

《Golang的CSP模型简介(最新推荐)》Golang采用了CSP(CommunicatingSequentialProcesses,通信顺序进程)并发模型,通过goroutine和channe... 目录前言一、介绍1. 什么是 CSP 模型2. Goroutine3. Channel4. Channe

IDEA如何将String类型转json格式

《IDEA如何将String类型转json格式》在Java中,字符串字面量中的转义字符会被自动转换,但通过网络获取的字符串可能不会自动转换,为了解决IDEA无法识别JSON字符串的问题,可以在本地对字... 目录问题描述问题原因解决方案总结问题描述最近做项目需要使用Ai生成json,可生成String类型

Python实现将实体类列表数据导出到Excel文件

《Python实现将实体类列表数据导出到Excel文件》在数据处理和报告生成中,将实体类的列表数据导出到Excel文件是一项常见任务,Python提供了多种库来实现这一目标,下面就来跟随小编一起学习一... 目录一、环境准备二、定义实体类三、创建实体类列表四、将实体类列表转换为DataFrame五、导出Da

Python数据处理之导入导出Excel数据方式

《Python数据处理之导入导出Excel数据方式》Python是Excel数据处理的绝佳工具,通过Pandas和Openpyxl等库可以实现数据的导入、导出和自动化处理,从基础的数据读取和清洗到复杂... 目录python导入导出Excel数据开启数据之旅:为什么Python是Excel数据处理的最佳拍档

Oracle Expdp按条件导出指定表数据的方法实例

《OracleExpdp按条件导出指定表数据的方法实例》:本文主要介绍Oracle的expdp数据泵方式导出特定机构和时间范围的数据,并通过parfile文件进行条件限制和配置,文中通过代码介绍... 目录1.场景描述 2.方案分析3.实验验证 3.1 parfile文件3.2 expdp命令导出4.总结

Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)

《Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)》:本文主要介绍Python基于火山引擎豆包大模型搭建QQ机器人详细的相关资料,包括开通模型、配置APIKEY鉴权和SD... 目录豆包大模型概述开通模型付费安装 SDK 环境配置 API KEY 鉴权Ark 模型接口Prompt

java poi实现Excel多级表头导出方式(多级表头,复杂表头)

《javapoi实现Excel多级表头导出方式(多级表头,复杂表头)》文章介绍了使用javapoi库实现Excel多级表头导出的方法,通过主代码、合并单元格、设置表头单元格宽度、填充数据、web下载... 目录Java poi实现Excel多级表头导出(多级表头,复杂表头)上代码1.主代码2.合并单元格3.

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了