Skip to content

[已解決] RuntimeError: CUDA error: device-side assert triggered

今天我在使用 PyTorch 搭建一個簡單的分類器時,遇到了一個這樣的報錯: “RuntimeError: CUDA error: device-side assert triggered”。依稀記得從前也遇過這樣的問題,但也忘記怎麼解決的了,畢竟從前其實沒有記筆記的習慣。

今天在把遠端伺服器重開機以後,這個問題仍然發生,故我想可以排除硬體設備異常的情況。痛定思痛的情況下,我決定認真釐清這個問題,並且把可能的解決方法紀錄下來。


異常排除

首先我尋找了 Github Issues 上的討論,發現大家似乎都建議使用 CPU 去跑跑看,看看是不是仍然有著一樣的問題。我的理解是這跟我先前最早的猜測一樣,不確定是否是『硬體』故障還是程式碼寫錯,於是乎建議他人將程式移動至 CPU 執行。

我也立即照做了,但在將程式移動至 CPU 執行後,可惜的是仍然存在著這個錯誤訊息。

下一個我所看到的建議是,檢查『訓練資料的 Label 中是否存在著 -1』。其實我的第一感這『真是個奇怪的建議』,畢竟這次訓練資料的 Label 是我自己決定的,肯定不會存在著有 -1 的情況。

但既然大神都這樣建議了,那肯定不會有錯的。我連忙寫了個簡單的小 Script,檢查之下,我真的發覺了一個古怪的地方。

我所決定的資料的 Label (標籤),是從 [1-3140],可是我最後一層的 Fully-connected 層只有設定輸出 3139 個神經元。

我所預測的 Label 數量比實際 Label 數量少! (震驚)

所以到頭來,我們問題要解決很簡單:將最後一層的神經元數目調整至跟預測的 Label 數量一致即可。

希望大家都可以順利解決自己的問題。


References

Leave a Reply