昇思25天学习打卡营第8天|模型权重保存与加载

打卡

目录

打卡

模型的两种保存形式

Checkpoint

中间表示IR

模型保存与加载

模型权重保存-例1

模型权重加载-例1

模型权重保存-例2

模型权重加载-例2

模型权重文件的空间占用计算-例


模型的两种保存形式

Checkpoint

权重参数文件

中间表示IR

中间表示(Intermediate Representation,IR)是程序编译过程中介于源语言和目标语言之间的程序表示。MindIR是一种基于图表示的函数式IR,其最核心的目的是服务于自动微分变换

在图模式set_context(mode=GRAPH_MODE)下运行用MindSpore编写的模型时,若配置中设置了set_context(save_graphs=1),运行时会输出一些图编译过程中生成的一些中间文件,我们称为IR文件。

  • ir后缀结尾的IR文件:一种比较直观易懂的以文本格式描述模型结构的文件,可以直接用文本编辑软件查看。

  • dot后缀结尾的IR文件:描述了不同节点间的拓扑关系,可以用graphviz将此文件作为输入生成图片,方便用户直观地查看模型结构。对于算子比较多的模型,推荐使用可视化组件MindSpore Insight对计算图进行可视化。

模型保存与加载

保存流程:

  • 定义模型网络
  • 选择损失函数、优化器等
  • 训练模型、更新模型权重参数
  • 选择1:保存模型权重参数Checkpoint到本地
  • 选择2:保存中间表示IR到本地

加载流程:

  • 定义模型网络
  • 选择1:从本地加载模型权重参数Checkpoint
  • 选择2:保存中间表示IR到本地

模型权重保存-例1

python 复制代码
model = network()
mindspore.save_checkpoint( 
       model,         ## 待保存的对象。数据类型可为 mindspore.nn.Cell 、list或dict。
       "model.ckpt"   ## 模型权重保存路径
     )

模型权重加载-例1

python 复制代码
model = network()
param_dict = mindspore.load_checkpoint("model.ckpt")
param_not_load, _ = mindspore.load_param_into_net(
                                    model, 
                                    param_dict
                                  )
print(param_not_load)  ## param_not_load是未被加载的参数列表,为空时代表所有参数均加载成功。

模型权重保存-例2

MindIR同时保存了Checkpoint和模型结构,因此需要定义输入Tensor来获取输入shape。

python 复制代码
model = network()
inputs = Tensor(np.ones([1, 1, 28, 28]).astype(np.float32))
mindspore.export(model, 
                inputs, 
                file_name="model", 
                file_format="MINDIR"
                )

模型权重加载-例2

python 复制代码
mindspore.set_context(mode=mindspore.GRAPH_MODE)

graph = mindspore.load("model.mindir")
model = nn.GraphCell(graph)
outputs = model(inputs)
print(outputs.shape)

模型权重文件的空间占用计算-例

  • 计算方式:计算模型参数个数;按照每个参数占用的字节数计算所有参数的字节占用;转换字节占用单位为MB或GB等。
  • 对比:查看实际保存的大小,与计算预期占用字节数做对比。

例子如下:可以看到,计算与预期基本一致。MindIR同时保存了Checkpoint和模型结构,参数文件会更大一些。

相关推荐
EveryPossible22 分钟前
穿透iframe
学习
檐下翻书17325 分钟前
产品开发跨职能流程图在线生成工具
大数据·人工智能·架构·流程图·论文笔记
TTGGGFF25 分钟前
Supertonic 部署与使用全流程保姆级指南(附已部署镜像)
开发语言·python
杜子不疼.27 分钟前
计算机视觉热门模型手册:Faster R-CNN / YOLO / SAM 技术原理 + 应用场景对比
人工智能·计算机视觉·r语言·cnn
木木木一29 分钟前
Rust学习记录--C7 Package, Crate, Module
开发语言·学习·rust
love530love29 分钟前
升级到 ComfyUI Desktop v0.7.0 版本后启动日志报 KeyError: ‘tensorrt‘ 错误解决方案
开发语言·windows·python·pycharm·virtualenv·comfyui·comfyui desktop
腾视科技1 小时前
腾视科技TS-SG-SM7系列AI算力模组:32TOPS算力引擎,开启边缘智能新纪元
人工智能·科技
极新2 小时前
深势科技生命科学高级业务架构师孟月:AI4S 赋能生命科学研发,数智化平台的实践与落地 | 2025极新AIGC峰会演讲实录
人工智能
落羽凉笙7 小时前
Python学习笔记(3)|数据类型、变量与运算符:夯实基础,从入门到避坑(附图解+代码)
笔记·python·学习
Light607 小时前
破局而立:制造业软件企业的模式重构与AI赋能新路径
人工智能·云原生·工业软件·商业模式创新·ai赋能·人机协同·制造业软件