洋書、時々プログラミング

博士課程修了→メーカーという経路を辿っている人の日常

PyTorchでdevice-side assert triggered が出た時の話

個人的に青ざめながらも勉強にはなったのでメモ

まとめと教訓

  • もらったデータの中の特定のデータに不備があったため、訓練中にエラーが出る(device-side assert triggered)
  • DataLoader中のShuffleをFalseにして、問題となっているデータの推定を行う事で解決
  • CUDAを使用しないことで問題の抽出が分かりやすくなるらしい(参考URL)
  • 最後はデータを直接見ることが大事(体育会系)

    起きた問題

  • 計算モデルと訓練データを変更して訓練を行おうとした。
  • もらったデータを解析にかけようとしたらトレーニング中に突然エラーを吐く
  • CUDAを使っているけど CUDA Assert trigger errorとしか言わず詳細が不明。


原因の切り分け方法

計算モデル起因? ->違う

  • 元の計算モデルに戻しても同様のエラーが出る

訓練データの不備か? ->それっぽい

問題のあるデータの特定

  • Trainingについて、DataLoaderのShuffle変数をFalseにすることでざっくりと問題のあるファイル名を特定し、実際に確認
  • 半分ほどのデータが取得できておらず、Tensorにした時にnanとなってしまっていた。
  • このデータを取り除いたら無事に訓練が回った

    対策

  • nanデータが入っていた場合の処理(全てゼロにするなど)の導入
  • Assertを使用することで例外処理の文章を出していくのもアリ
  • CUDAを使用しないことで問題の抽出が分かりやすくなるらしい(参考URL)