fastnlp / fastNLP

fastNLP: A Modularized and Extensible NLP Framework. Currently still in incubation.
https://gitee.com/fastnlp/fastNLP
Apache License 2.0
3.05k stars 451 forks source link

在运行matching_esim.py时报错RuntimeError: CUDA error: device-side assert triggered #316

Closed jwc19890114 closed 3 years ago

jwc19890114 commented 3 years ago

使用cpu训练没有问题,刚开始以为是pytorch版本问题,后来尝试了1.2、1.4、1.7,其中1.2和1.4都会报错,都是训练到第二个epoch在test时报错RuntimeError: CUDA error: device-side assert triggered。1.7会提示由于pytorch版本问题,对超出词表的词要使用long型。 同样的问题在之前的一个脚本中也出现了。我在4月份使用bertMatching模型训练跑通了,但是现在再做的时候也会报这个错误。 感谢项目组。

xuyige commented 3 years ago

请问是否直接用命令 python matching_esim.py 跑起来的呢? 我刚刚在自己的1.2.0版本当中重新跑了一遍,并没有遇到这个问题

jwc19890114 commented 3 years ago

请问是否直接用命令 python matching_esim.py 跑起来的呢? 我刚刚在自己的1.2.0版本当中重新跑了一遍,并没有遇到这个问题

anaconda和pycharm都试过,都会有,可能是我系统的问题,本来想在colab上训练,但是也报错

xuyige commented 3 years ago

请问是否直接用命令 python matching_esim.py 跑起来的呢? 我刚刚在自己的1.2.0版本当中重新跑了一遍,并没有遇到这个问题

anaconda和pycharm都试过,都会有,可能是我系统的问题,本来想在colab上训练,但是也报错

请问是否又更详细的报错信息呢?因为我这边1.2.0跑下来是完整的并没有报错

jwc19890114 commented 3 years ago

请问是否直接用命令 python matching_esim.py 跑起来的呢? 我刚刚在自己的1.2.0版本当中重新跑了一遍,并没有遇到这个问题

anaconda和pycharm都试过,都会有,可能是我系统的问题,本来想在colab上训练,但是也报错

请问是否又更详细的报错信息呢?因为我这边1.2.0跑下来是完整的并没有报错

就是那个runtime error,很迷,我的主机坏了送修了,过两天装好再测一下

jwc19890114 commented 3 years ago

请问是否直接用命令 python matching_esim.py 跑起来的呢? 我刚刚在自己的1.2.0版本当中重新跑了一遍,并没有遇到这个问题

anaconda和pycharm都试过,都会有,可能是我系统的问题,本来想在colab上训练,但是也报错

请问是否又更详细的报错信息呢?因为我这边1.2.0跑下来是完整的并没有报错

就是那个runtime error,很迷,我的主机坏了送修了,过两天装好再测一下

试了一下,是类似以下这种错误,我在加载训练好的模型进行test的时候报这样的runtime error

RuntimeError                              Traceback (most recent call last)
<ipython-input-16-25ae4e25038e> in <module>
----> 1 tester.test()

C:\ProgramData\Anaconda3\lib\site-packages\fastNLP\core\tester.py in test(self)
    163                     for batch_x, batch_y in data_iterator:
    164                         _move_dict_value_to_device(batch_x, batch_y, device=self._model_device)
--> 165                         pred_dict = self._data_forward(self._predict_func, batch_x)
    166                         if not isinstance(pred_dict, dict):
    167                             raise TypeError(f"The return value of {_get_func_signature(self._predict_func)} "

C:\ProgramData\Anaconda3\lib\site-packages\fastNLP\core\tester.py in _data_forward(self, func, x)
    211         """A forward pass of the model. """
    212         x = _build_args(func, **x)
--> 213         y = self._predict_func_wrapper(**x)
    214         return y
    215 

C:\ProgramData\Anaconda3\lib\site-packages\fastNLP\models\bert.py in predict(self, words)
    130         :return: { :attr:`fastNLP.Const.OUTPUT` : logits}: torch.LongTensor [batch_size]
    131         """
--> 132         logits = self.forward(words)[Const.OUTPUT]
    133         return {Const.OUTPUT: torch.argmax(logits, dim=-1)}
    134 

C:\ProgramData\Anaconda3\lib\site-packages\fastNLP\models\bert.py in forward(self, words)
    119         :return: { :attr:`fastNLP.Const.OUTPUT` : logits}: torch.Tensor [batch_size, num_labels]
    120         """
--> 121         hidden = self.bert(words)
    122         cls_hidden = self.dropout(hidden[:, 0])
    123         logits = self.classifier(cls_hidden)

C:\ProgramData\Anaconda3\lib\site-packages\torch\nn\modules\module.py in __call__(self, *input, **kwargs)
    530             result = self._slow_forward(*input, **kwargs)
    531         else:
--> 532             result = self.forward(*input, **kwargs)
    533         for hook in self._forward_hooks.values():
    534             hook_result = hook(self, input, result)

C:\ProgramData\Anaconda3\lib\site-packages\fastNLP\embeddings\bert_embedding.py in forward(self, words)
    104         if outputs is not None:
    105             return self.dropout(outputs)
--> 106         outputs = self.model(words)
    107         outputs = torch.cat([*outputs], dim=-1)
    108 

C:\ProgramData\Anaconda3\lib\site-packages\torch\nn\modules\module.py in __call__(self, *input, **kwargs)
    530             result = self._slow_forward(*input, **kwargs)
    531         else:
--> 532             result = self.forward(*input, **kwargs)
    533         for hook in self._forward_hooks.values():
    534             hook_result = hook(self, input, result)

C:\ProgramData\Anaconda3\lib\site-packages\fastNLP\embeddings\bert_embedding.py in forward(self, words)
    329                                                                                    0)  # batch_size x max_len
    330             word_pieces_lengths = batch_word_pieces_length.sum(dim=-1)  # batch_size
--> 331             word_piece_length = batch_word_pieces_length.sum(dim=-1).max().item()  # 表示word piece的长度(包括padding)
    332             if word_piece_length + 2 > self._max_position_embeddings:
    333                 if self.auto_truncate:

RuntimeError: cuda runtime error (710) : device-side assert triggered at C:/w/1/s/tmp_conda_3.7_100118/conda/conda-bld/pytorch_1579082551706/work/aten/src\THC/THCReduceAll.cuh:327
jwc19890114 commented 3 years ago

解决了

PGCJ commented 1 year ago

解决了

请问下如何解决呢