【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

相关文章

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

Spring AI Alibaba接入大模型时的依赖问题小结

《SpringAIAlibaba接入大模型时的依赖问题小结》文章介绍了如何在pom.xml文件中配置SpringAIAlibaba依赖,并提供了一个示例pom.xml文件,同时,建议将Maven仓... 目录(一)pom.XML文件:(二)application.yml配置文件(一)pom.xml文件:首

使用C++将处理后的信号保存为PNG和TIFF格式

《使用C++将处理后的信号保存为PNG和TIFF格式》在信号处理领域,我们常常需要将处理结果以图像的形式保存下来,方便后续分析和展示,C++提供了多种库来处理图像数据,本文将介绍如何使用stb_ima... 目录1. PNG格式保存使用stb_imagephp_write库1.1 安装和包含库1.2 代码解

如何在本地部署 DeepSeek Janus Pro 文生图大模型

《如何在本地部署DeepSeekJanusPro文生图大模型》DeepSeekJanusPro模型在本地成功部署,支持图片理解和文生图功能,通过Gradio界面进行交互,展示了其强大的多模态处... 目录什么是 Janus Pro1. 安装 conda2. 创建 python 虚拟环境3. 克隆 janus

本地私有化部署DeepSeek模型的详细教程

《本地私有化部署DeepSeek模型的详细教程》DeepSeek模型是一种强大的语言模型,本地私有化部署可以让用户在自己的环境中安全、高效地使用该模型,避免数据传输到外部带来的安全风险,同时也能根据自... 目录一、引言二、环境准备(一)硬件要求(二)软件要求(三)创建虚拟环境三、安装依赖库四、获取 Dee

Java导出Excel动态表头的示例详解

《Java导出Excel动态表头的示例详解》这篇文章主要为大家详细介绍了Java导出Excel动态表头的相关知识,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录前言一、效果展示二、代码实现1.固定头实体类2.动态头实现3.导出动态头前言本文只记录大致思路以及做法,代码不进

DeepSeek模型本地部署的详细教程

《DeepSeek模型本地部署的详细教程》DeepSeek作为一款开源且性能强大的大语言模型,提供了灵活的本地部署方案,让用户能够在本地环境中高效运行模型,同时保护数据隐私,在本地成功部署DeepSe... 目录一、环境准备(一)硬件需求(二)软件依赖二、安装Ollama三、下载并部署DeepSeek模型选

详解Vue如何使用xlsx库导出Excel文件

《详解Vue如何使用xlsx库导出Excel文件》第三方库xlsx提供了强大的功能来处理Excel文件,它可以简化导出Excel文件这个过程,本文将为大家详细介绍一下它的具体使用,需要的小伙伴可以了解... 目录1. 安装依赖2. 创建vue组件3. 解释代码在Vue.js项目中导出Excel文件,使用第三

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

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