准备工作

进行调试调优时,推荐调整日志级别export MSA_LOG=2协助调试分析。

功能调试

动态图模式功能调试

默认情况下,MindTorch迁移后代码是运行在MindSpore框架的动态图(PyNative)模式下。动态图模式下,程序按照代码的编写顺序执行,在执行正向过程中根据反向传播的原理,动态生成反向执行图。这种模式下,编译器将神经网络中的各个算子逐一下发执行,方便用户编写和调试神经网络模型。

1)当执行出现异常时,您会得到由MindSpore反馈的报错信息。如下图示例,MindSpore报错信息采用Python Traceback处理,包括Python堆栈信息、报错类型与报错描述等信息,对于接口级别的问题,可以根据报错堆栈信息快速定位出问题位置:

error_log

更多细节请参考MindSpore功能调试

2)动态图模式下可以通过print添加打印信息获取问题接口当前的输入数据具体取值。若输入数据不符合预期,则可能由于前置接口导致问题,可以在关键位置添加断点,逐步缩小范围,直至明确问题接口;

如果您在使用过程中遇到框架问题或接口无法对标请通过创建ISSUE 和我们交流。

静态图模式功能调试

静态图模式又被称为Graph模式,可以通过mindspore.set_context(mode=GRAPH_MODE)或者在函数定义上使用@mindspore.jit装饰器来设置成静态图模式。静态图模式比较适合网络固定且需要高性能的场景。在静态图模式下,基于图优化、计算图整图下沉等技术,编译器可以针对图进行全局的优化,因此在静态图下能获得较好的性能,但是执行图是从源码转换而来,因此在静态图下不是所有的Python语法都能支持。

首先推荐您在动态图模式(即默认模式)下完成功能调试后再尝试静态图模式性能调优。当静态图模式出现异常时,可结合报错信息和静态图语法支持文档进行手动适配。如果以上信息无法覆盖使用场景,可以通过创建ISSUE反馈详细信息,我们会优先分析支持。