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に行って言及するべきではありませんか? 。しかし、ローカル環境でテストケースを作成しても、このエラーを再現することはできません。問題は結局のところデータに起因するはずです。