一、MindSpore 运行模式
运行模式 | 特点 | 适用场景 | 配置方式 |
---|---|---|---|
动态图(PyNative 模式) | 计算图构建和计算同时发生,调试方便,实时获取中间结果,但难以对整个计算图优化 | 脚本开发和网络流程调试 | ms.set_context(mode=ms.PYNATIVE_MODE) |
静态图(Graph 模式) | 计算图构建和实际计算分开,适合网络固定且需要高性能的场景,但存在编译耗时 | 网络固定且追求高性能 | ms.set_context(mode=ms.GRAPH_MODE) 或使用 jit 装饰器 |
二、静态图模式开启方式
-
基于装饰器的开启方式
- 使用
@ms.jit
装饰器修饰函数或成员函数,使其以静态图模式运行。 - 示例:
@ms.jit def run(x): model = Network() return model(x)
- 也可使用函数变换方式调用
jit
方法:def run(x): model = Network() return model(x) run_with_jit = ms.jit(run)
- 对神经网络的某部分加速,可在
construct
方法上使用jit
装饰器。
- 使用
-
基于 context 的开启方式
- 全局设置:
ms.set_context(mode=ms.GRAPH_MODE)
- 全局设置:
三、静态图相关配置和技巧
-
JitConfig
配置选项jit_level
:控制优化等级。exec_mode
:控制模型执行方式。jit_syntax_level
:设置静态图语法支持级别。
-
静态图高级编程技巧:可参考相关文档提高编译和执行效率,使程序更稳定。
四、使用的库和函数
mindspore
库ms.set_context
函数用于设置运行模式。ms.jit
装饰器用于将函数编译为静态图。