从官方资料:
https://www.mindspore.cn/tutorial/training/zh-CN/r1.2/use/save_model.html?highlight=save_checkpoint
在模型训练过程中,可以添加检查点(CheckPoint)用于保存模型的参数,以便执行推理及再训练使用。如果想继续在不同硬件平台上做推理,可通过网络和CheckPoint格式文件生成对应的MindIR、AIR和ONNX格式文件。
-
MindIR:MindSpore的一种基于图表示的函数式IR,定义了可扩展的图结构以及算子的IR表示,它消除了不同后端的模型差异。可以把在Ascend 910训练好的模型,在Ascend 310、GPU以及MindSpore Lite端侧上执行推理。
-
CheckPoint:MindSpore的存储了所有训练参数值的二进制文件。采用了Google的Protocol Buffers机制,与开发语言、平台无关,具有良好的可扩展性。CheckPoint的protocol格式定义在
mindspore/ccsrc/utils/checkpoint.proto
中。 -
AIR:全称Ascend Intermediate Representation,类似ONNX,是华为定义的针对机器学习所设计的开放式的文件格式,能更好地适配Ascend AI处理器。
-
ONNX:全称Open Neural Network Exchange,是一种针对机器学习所设计的开放式的文件格式,用于存储训练好的模型。
以下通过示例来介绍保存CheckPoint格式文件和导出MindIR、AIR和ONNX格式文件的方法。
=======================================================
我们可以知道:
CheckPoint 格式的文件只存储参数(Paremeter),并不会存储网络结构等信息,因此使用这个类型的备份文件我们需要提前已经具有网络结构的定义才可以使用。
MindIR 格式的文件存储着网络结构和参数(Paremeter),可以在没有网络结构定义的情况下进行使用,如:推理或再训练,但是需要注意的一点是 MindIR 文件是为跨平台使用的,也就是说该文件是为了在移动端等设备使用的,而调用的编程语言一般为C++, 如果我们是使用Python代码训练网络后获得的MindIR文件,我们无法在另一个Python环境下导入 MindIR 文件的。使用场景就是,用Python训练好网络,导出MindIR文件,然后在移动端等设备设备上使用C++语言调用MindIR中的模型及参数。
--------------------------------------------------------------------------------------------------------------------------