前言
近期参加了华为的众智计划进行了网络的开发,第一次接触到了310推理,一路开发下来还算顺利,但还是遇到了一些问题,所以还是想写一篇文章记录和分享一下。
一、Ascend310处理器上推理MindIR模型的流程
??其实这个离线推理的过程在mindspore官网上有一个很详细的介绍,如果有很想了解的推荐取mindspore官网上查看其教程,或者可以上华为mindspore/models仓库里查看别人写好的推理代码以及脚本。 ??如果要我总结的话,大概整个流程是:将保存好的checkpoint格式文件转成mindir文件->将需要进行推理的数据集进行一些预处理(如果需要的话)->然后执行推理代码读取已经处理好的需要推理的数据,调用导出的mindir文件进行预测并保存预测结果->对预测结果进行评估得到最终评价分数。
二、遇到的问题
??虽然说进行310推理的开发还算顺利,但我还是遇到了一些问题,其中困扰我最久的是建立模型失败的问题,具体报错如下: ??然后我初步发现是导出的MindIR格式的网络模型文件有问题,在经过进一步的排查发现是模型的设计有问题,当时由于偷懒不想写数据处理函数,并使用map映射将其插入数据处理管道,就直接把部分数据处理写在了模型里,把将MNIST里面每张图片向量化后进行重排列这个操作直接写在了模型的开头,虽然训练和在线推理都是没有问题的,但310推理就遇到了问题,最后规范了代码的编写后就解决了这个问题。 ??果然,数据的处理和模型搭建还是要明确分开比较好。
三、离线推理的一些小技巧
- 在进行数据预处理时,可以直接调用之前训练时的预处理函数,并将处理好的数据保存下来。
- 在编写推理代码以及推理脚本,可以参考mindspore/models这一官方仓库中同类型模型的推理代码,因为他们大致是相同的。
总结
以上就是今天要讲的内容,本文仅仅简单分享和记录了Ascend310处理器上推理MindIR模型的流程,我在Ascend310上进行推理遇到的问题以及小技巧,非常感谢大家的阅读。
|