# 运行wizardcoder迁移代码报错broken pipe

**1. 系统环境**

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

软件环境: MindSpore 版本: 2.2

执行模式（静态图/动态图）： 不限

Python 版本: 3.8

操作系统平台: linux

**2. 报错信息**

2.1 问题描述

之前能够跑通的wizardcoder训练代码，在引入mindspore.ops.Print\(\)后再次运行无法跑通。

2.2 报错信息

```
uring handling of the above exception, another exception occurred:
    File "/home/liyejun/miniconda3/envs /test0823/lib/python3.7/multiproc essing/connection.py", line 368, in _send
        n = write(seif. handle. buf)
rokenPipeError: [Errno 32] Broken pipe
raceback (most recet catl last)
rokenPipeError: [Errno 32] Broken pipe
```

**3. 根因分析**

使用日志打印功能来查看。命令如下：

```
export GLOG_v = 1: mindspore日志输出等级设置，设为2后停止输出
export ASCEND_GLOBAL_LOG_LEVEL=1: CANN相关日志等级
export ASCEND_SLOG_PRINT_TO_STDOUT=1: CANN相关日志控制,0不输出,1打屏
```

找到出错的位置，查看前后信息，有一行信息是“type of scalar to print is not support”，推测是在调试的过程中使用了mindspore的mindspore.ops.Print\(\)，打印的对象不满足要求，导致报错。

**4. 解决方案**

在wizardcoder.py文件中添加了上述print功能，将其注释或者删除后可以跑通，具体位置在WizardCoderLMHeadModel类的\_\_init\_\_\(\)和construct\(\)中。

```
        self.tile = P.Tile()
        self.concat = P.Concat(axis=-1)
        # self.print - = mindspore.ops.Print()
        def _add_eos_to_inputs(self, target_ids):...
```

```
               output_states, table = self.backbone(tokens, attention_mask)
        # self.print('------------------------')
        # self.print(output_states. shape)
        # self.print(table.shape)
        logits = self.head(output_states table)
```

分析官网对于 ops.Print\(\) 的介绍 （ 参 见 ： https://www.mindspore.cn/docs/zh-CN/r2.1/api\_python/ops/mindspore.ops.Print.html\#mindspore.ops.Print）

官网说明ops.Print\(\)的入参可以是str、Tensor、int等的union组合, 只注释如下行代码，发现能够正确跑通代码且打印出对应的shape值。

```
        # self.print('------------------------')
        self.print(output_states. shape)
        self.print(table.shape)
        logits = self.head(output_states table
```

