MindSpore可以基于训练好的模型,在不同的硬件平台上执行推理任务。
Ascend 310是面向边缘场景的高能效高集成度AI处理器,支持对MindIR格式模型进行推理。
MindIR格式可由MindSpore CPU、GPU、Ascend 910导出,可运行在GPU、Ascend 910、Ascend 310上,推理前不需要手动执行模型转换,推理时需要安装MindSpore Lite,调用MindSpore Lite C++ API进行推理。
MindSpore支持保存两种类型的数据:训练参数和网络模型(模型中包含参数信息)。
下面介绍一下这几种格式的基本概念及其应用场景。
按照使用环境的不同,推理可以分为以下两种方式。
本机推理
通过加载网络训练产生的Checkpoint文件,调用model.predict
接口进行推理验证。
跨平台推理
使用网络定义和Checkpoint文件,调用export
接口导出模型文件,在不同平台执行推理,目前支持导出MindIR和ONNX(仅支持Ascend AI处理器)模型,具体操作可查看保存模型。
MindSpore通过统一IR定义了网络的逻辑结构和算子的属性,将MindIR格式的模型文件与硬件平台解耦,实现一次训练多次部署。
基本介绍
MindIR作为MindSpore的统一模型文件,同时存储了网络结构和权重参数值。同时支持部署到云端Serving和MindSpore Lite平台执行推理任务。
同一个MindIR文件支持多种硬件形态的部署:
使用场景
先使用网络定义和Checkpoint文件导出MindIR模型文件,再根据不同需求执行推理任务,如基于MindSpore Serving部署推理服务、Lite推理。
首先构建模型,然后使用mindspore
模块的load_checkpoint
和load_param_into_net
从本地加载模型与参数,传入验证数据集后即可进行模型推理,验证数据集的处理方式与训练数据集相同。
network = LeNet5(cfg.num_classes)
net_loss = nn.SoftmaxCrossEntropyWithLogits(sparse=True, reduction="mean")
model = Model(network, net_loss, metrics={"Accuracy": Accuracy()})
print("============== Starting Testing ==============")
param_dict = load_checkpoint(args.ckpt_path)
load_param_into_net(network, param_dict)
dataset = create_dataset(os.path.join(args.data_path, "test"),
cfg.batch_size,)
acc = model.eval(dataset, dataset_sink_mode=args.dataset_sink_mode)
print("============== {} ==============".format(acc))
其中,
model.eval
为模型验证接口,对应接口说明mindspore.train.Model.eval。
推理样例代码eval.py。
model.predict
接口进行推理操作model.predict(input_data)
其中,
model.predict
为推理接口,对应接口说明mindspore.train.Model.predict。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。