PytorchがRuntimeErrorを報告します:cudaランタイムエラー(59):デバイス側のアサートの奇妙な解決策がでトリガーされました



Pytorch Reports Runtimeerror



このような関数がモデルに追加されます

def func1(self,seq1,seq2): out = [] //...Add content to out return torch.stack(out,0)

ランタイムエラー:cudaランタイムエラー(59):デバイス側のアサートがトリガーされ、その場所は戻る前に異常が見られない場所にあり、エラーの場所の変数が出力され、同じエラーが報告されます。



このエラーが発生したのはこれが初めてではありませんが、問題を解決してプロセスを記録するのに6時間かかりました。

[1]一般的な解決策は良くありません



前任者の経験では、すべての計算をCPUに置き、.cuda()を直接コメントして実行すると、問題を見つけることができます。しかし、今回は無効であり、CPUに入れて計算を転送したときはすべて正常でした。

[2]形状などの変数をチェックして、インデックス番号が一致するかどうかを確認します

それは役に立たない、CPUフォワード計算は合格した、それでも正しいのだろうか?



[3]ユニットテスト、1行ずつコメント、コメントアウトされた内容を順方向に書き込み、順方向計算のプロセスでは使用しないで、プロセスがスムーズであることを確認します。

コードが次のように変更されるまで:

def func1(self,seq1,seq2): out = [] //...Add content to out return out def forward(self,...): out = self.func1(seq1,seq2) out = torch.stack(out,0) return pred,loss

いよいよスムーズに走ります!その他の変更は行われませんでした。このコードに従って実行すると、モデルはスムーズに実行され、新しい最先端技術が登場します。 。 。 。 。 。 。

概要:最初のスキームはまだ使いやすく、最初に最初のスキームを使用し、次に3番目のスキームを使用します。

私はとても恥ずかしいです。問題は解決しましたが、なぜそうなのかわかりません。 。 githubに行って言及するべきではありませんか? 。しかし、ローカル環境でテストケースを作成しても、このエラーを再現することはできません。問題は結局のところデータに起因するはずです。