《昇思25天学习打卡笔记》---第八天|初学入门---保存与使用静态图加速

模型保存:

对于训练后的模型,模型的各个参数需要进行一定的保存,如果之后有新的数据想要进行训练,那么就可以使用原有的模型对新数据进行训练。

这一节比较简单。

用昨天写好的模型,训练完后,使用mindspore.save_checkpoint(model, ""model.ckpt')保存即可:

mindspore.save_checkpoint(model, "model.ckpt")

如果要加载模型的权重,需要先建立相同的模型,再用load_checkpointload_param_into_net方法加载参数。

model = network()
param_dict = mindspore.load_checkpoint("model.ckpt")
param_not_load, _ = mindspore.load_param_into_net(model, param_dict)
print(param_not_load)

使用静态图加速

先了解以下什么是静态图,什么是动态图。

静态图:

静态图在程序执行前定义好整个计算流程,即将计算步骤组织成一个静态的图形结构,其中节点表示操作(例如加法、乘法或卷积等),边表示数据流。这个图在编译阶段会被优化,然后生成高效的机器代码以供执行。

特点:

  • 提前优化:由于计算图在运行前已经确定,编译器可以对其进行详尽的优化,比如消除冗余计算、内存分配优化等,从而提高运行时效率。
  • 部署友好:优化后的静态图可以方便地序列化和部署到不同平台,适合于生产环境和移动设备。
  • 调试不便:静态图构建过程相对复杂,尤其是当涉及到控制流时,调试起来不如动态图直观。

动态图(Dynamic Graph)

概念: 动态图是在运行时根据程序的实际执行动态构建计算图。这意味着图的结构可以在每次迭代或每个操作时改变,更加灵活地反映了程序的动态行为。

特点:

  • 易于调试和快速迭代:开发者可以像编写常规程序那样一行行执行代码并立即看到结果,这对于调试和实验新想法非常有利。
  • 表达能力强:动态图能自然地处理条件分支、循环等控制流结构,更适合实现复杂的算法逻辑。
  • 性能开销:由于计算图是在运行时构建的,这可能会引入额外的 overhead,尤其是在需要频繁构建和销毁图的场景下,相较于静态图,其原始运行速度可能较慢。

TensorFlow 最初以静态图著称,但后来也支持了Eager Execution(动态图)模式;PyTorch 则是以动态图为核心设计,便于调试和快速迭代,但也通过 TorchScript 支持静态图执行以优化部署性能。

# 静态图
ms.set_context(mode=ms.GRAPH_MODE)  # 使用set_context进行运行静态图模式的配置

# 动态图
ms.set_context(mode=ms.PYNATIVE_MODE)  # 使用set_context进行动态图模式的配置

还可以通过@jit的方式,让某些运算时被编译为静态图。

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值