当使用MindSpore进行深度学习任务时,可以选择使用动态图模式(PyNative模式)或静态图模式(Graph模式)。

  1. 动态图模式(PyNative模式):

    • 适合脚本开发和网络调试,以及需要实时获取中间结果的值进行调试或可视化。
    • 可以使用Python编写网络模型,自由度较高。
    • 每个操作都是立即执行的,可以方便地进行调试和错误排查。
    • 无需显式编译,代码动态执行。
  2. 静态图模式(Graph模式):

    • 通过图优化和整图下沉等技术,可以获得较好的性能,适合网络固定且需要高性能的场景。
    • 静态图模式将整个计算图编译并优化后再执行,提高了执行效率。
    • 可以使用静态图编译器对计算图进行优化,减少运行时开销。
    • 适合模型训练和推理,特别是对于需要频繁执行的任务。

静态图模式的开启方式有两种:

  1. 基于装饰器的方式:

    import mindspore.common.dtype as mstype
    from mindspore.common.tensor import Tensor
    from mindspore import context
    
    @context.compile_mode(0)
    def func(x, y):
        z = x + y
        return z
    
    x = Tensor(1, mstype.int32)
    y = Tensor(2, mstype.int32)
    output = func(x, y)
    
  2. 基于全局context的方式:

    import mindspore.context as context
    import mindspore.ops.operations as P
    from mindspore import Tensor
    
    context.set_context(mode=context.GRAPH_MODE, device_target="CPU")
    
    x = Tensor(1, dtype=mindspore.float32)
    y = Tensor(2, dtype=mindspore.float32)
    add = P.Add()
    output = add(x, y)
    

在使用静态图模式时,需要注意以下细节:

  • 静态图模式有一定的语法约束,MindSpore的静态图编译器支持Python的常用语法子集,不支持所有Python语法。
  • 可以使用JitConfig配置选项来自定义编译流程,包括优化等级、模型执行方式和静态图语法支持级别。
  • 静态图模式支持更多的优化和部署选项,例如自动混合精度、自动并行等。
  • 使用静态图高级编程技巧可以提高编译效率和执行效率,如使用@ms_function装饰器、使用make_tuple等。
Logo

昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链

更多推荐