# MindSpore模型推理报错TypeError: cell\_reuse\(\) takes 0 positional arguments but 1 was given

**1. 系统环境**

硬件环境\(Ascend/GPU/CPU\): Ascend

软件环境: MindSpore 版本: 2.2.0

MF版本：r1.0

执行模式： 不限

**2. 报错信息**

2.1 问题描述

使用MindSpore进行模型推理时报错。

2.2 报错信息

```
ml#keyword-namespace-packages
    declare_namespace(pkg)
Traceback (most recent Tcall last):
    File "pipeline_predict.py", line 5, in <module>
        from wizardcoder import WizardCoderLMHeadModel
    File "/home/wizardcoder/2_ wizardcoder-mindformers-1019/research/wizardcoder/wizardcoder.py", line 49, in <module>
        class WizardcoderLMHeadModel (BaseModel):
    File "/home/wizardcoder/2_wizardcoder-mindformers-1019/research/wizardcode r/wizardcoder.py", line 59, in Wiza rdcoderLMHeadModel
        def __init__(self, config:WizardCoderConfig = None):
TypeError: cell_reuse() takes 0 positional arguments but 1 was given
```

**3. 根因分析**

上述报错意思是调用cell\_reuse\(\)报错，这是由于mindspore2.2.0版本不支持cell\_reuse\(\)这种写法。

**4. 解决方案**

由于mindspore2.2.0版本不支持cell\_reuse\(\)这种写法，所以应该写成cell\_reuse，代码如下。

```
@MindFormerRegister.register(MindFormerModuleType. MODELS)
class WizardCoderLMHeadModel(BaseModel):
    r"""..."""
    @cell_reuse
    def __init__ (self, config: WizardCoderConfig = None):
        config = config if config is not None else WizardCoderConfig()
        super (WizardCoderLMHeadModel, self).__init__(config, auto_prefix=True)
        self.use_past = config.use_past
```

装饰器名称改为cell\_reuse后如果还是报上面错误，这应该是因为本身环境安装了mindformers旧版本，代码可能调用了安装的旧版本mindformers的功能，导致出错。解决方法是添加调用路径，让cell\_reuse调用我们当前的mindformers dev版本：

```
import os
import sys

sys.path.append(os.path.abspath("../.."))
sys.path.insert(0, os.getcwd().split('research')[0])

from mindspore import context
from mindformers.pipeline import pipeline
```

