昇思25天学习打卡营第10天 | 使用静态图加速

昇思25天学习打卡营第10天 | 使用静态图加速


AI编译框架分为两种运行模式:

  • 动态图模式: 计算图的构建和计算同时发生(define by run),符合python的解释执行方式。在调试模型时较为方便,能够实时得到中间结果的值。但由于所有节点都需要保存,导致难以对整个计算图进行优化。
  • 静态图模式: 计算图的构建和实际计算分开(define and run)。在MindSpore中静态图模式又称Graph模式,基于图优化、计算图整图下沉等技术,编译器可以对图进行全局的优化,获得较好的性能。适用于网络固定且需要高性能的场景。

动态图的开启方式

在MindSpore中,动态图又被称为PyNative模式。可以通过:

mindspore.set_context(mode=mindspore.PYNATIVE_MODE)

进行全局启用。

静态图的开启方式

基于全局context的开启方式

mindspore.set_context(mode=mindspore.GRAPH_MODE)

基于修饰器的开启方式

使用jit修饰器修饰Python函数或者Python类的成员函数使其被编译成计算图。而模型的其他部分任旧使用解释执行方式,在性能优化的同时而不丢失动态图的灵活性。

@mindspore.jit  # 使用ms.jit装饰器,使被装饰的函数以静态图模式运行
def run(x):
    model = Network()
    return model(x)
    
output = run(input)

或者

def run(x):
    model = Network()
    return model(x)

run_with_jit = ms.jit(run)
output = run(input)

总结

这一节的内容对MindSpore框架中的两种计算模式进行了介绍,动态图模式十分灵活,可以方便的获取中间结果,但由于节点是运行时定义并计算的,所以难以进行优化。而静态图模式模式直接编译计算图,可以方便的进行性能优化。通过jit修饰器可以在不失动态图灵活性的情况下对部分计算进行优化。

打卡

请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吉拉尔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值