### 准备工作 进行调试调优时,推荐调整[日志级别](User_Guide_Env.md)`export MSA_LOG=2`协助调试分析。 ### 功能调试 #### 动态图模式功能调试 默认情况下,MindTorch迁移后代码是运行在MindSpore框架的动态图(PyNative)模式下。动态图模式下,程序按照代码的编写顺序执行,在执行正向过程中根据反向传播的原理,动态生成反向执行图。这种模式下,编译器将神经网络中的各个算子逐一下发执行,方便用户编写和调试神经网络模型。 1)当执行出现异常时,您会得到由MindSpore反馈的报错信息。如下图示例,MindSpore报错信息采用Python Traceback处理,包括Python堆栈信息、报错类型与报错描述等信息,对于接口级别的问题,可以根据报错堆栈信息快速定位出问题位置: ![error_log](pic/error_log.png) 更多细节请参考[MindSpore功能调试](https://www.mindspore.cn/docs/zh-CN/r2.2/migration_guide/debug_and_tune.html)。 2)动态图模式下可以通过`print`添加打印信息获取问题接口当前的输入数据具体取值。若输入数据不符合预期,则可能由于前置接口导致问题,可以在关键位置添加断点,逐步缩小范围,直至明确问题接口; 如果您在使用过程中遇到框架问题或接口无法对标请通过创建[ISSUE](https://openi.pcl.ac.cn/OpenI/MSAdapter/issues) 和我们交流。 #### 静态图模式功能调试 静态图模式又被称为Graph模式,可以通过`mindspore.set_context(mode=GRAPH_MODE)`或者在函数定义上使用`@mindspore.jit`装饰器来设置成静态图模式。静态图模式比较适合网络固定且需要高性能的场景。在静态图模式下,基于图优化、计算图整图下沉等技术,编译器可以针对图进行全局的优化,因此在静态图下能获得较好的性能,但是执行图是从源码转换而来,因此在静态图下不是所有的Python语法都能支持。 首先推荐您在动态图模式(即默认模式)下完成功能调试后再尝试静态图模式性能调优。当静态图模式出现异常时,可结合报错信息和[静态图语法支持](https://www.mindspore.cn/docs/zh-CN/r2.2/note/static_graph_syntax_support.html)文档进行手动适配。如果以上信息无法覆盖使用场景,可以通过创建[ISSUE](https://openi.pcl.ac.cn/OpenI/MSAdapter/issues)反馈详细信息,我们会优先分析支持。