自学内容网 自学内容网

# 昇思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修饰器可以在不失动态图灵活性的情况下对部分计算进行优化。

打卡

请添加图片描述


原文地址:https://blog.csdn.net/qq_31254435/article/details/140280890

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!