静态式下报错TypeError: pynative模式不支持重新计算

系统环境

硬件环境(Ascend/GPU/CPU): GPU
MindSpore版本: mindspore=2.5.0
执行模式(PyNative/ Graph): PyNative
Python版本: Python=3.10
操作系统平台: Ubuntu22.04

报错信息

问题描述

在MindSpore静态图模式下使用nn.Cell.recompute方法报错

脚本信息

import mindspore
from mindspore import context
context.set_context(mode=context.GRAPH_MODE)

报错信息

/site-packages/mindspore/nn/cell.py in recompute(self, mode, output_recompute)
1306 “”"
1307 if context.get_context(“mode”) == context.PYNATIVE_MODE:
-> 1308 raise TypeError(“Recompute is not supported in pynative mode currently.”)
1309 Validator.check_bool(mode)
1310 Validator.check_bool(output_recompute)
TypeError: Recompute is not supported in pynative mode currently.

根因分析

这个是使用了nn.Cell.recompute方法来设置重计算,这个方法确实目前只支持静态图模式。

解决方案

将脚本的运行模式切换成静态图。

import mindspore
from mindspore import context
context.set_context(mode=context.GRAPH_MODE)

如果动态图模式下使用的话,可以尝试用mindspore.recompute,mindspore.recompute文档:
https://www.mindspore.cn/docs/zh-CN/r2.6.0rc1/api_python/mindspore/mindspore.recompute.html?highlight=recompute#mindspore.recompute