查看torch依赖的cuda版本_torch多GPU情况下模型建立遇到的问题
生活随笔
收集整理的這篇文章主要介紹了
查看torch依赖的cuda版本_torch多GPU情况下模型建立遇到的问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
問題:最近在實現bert pytorch版本的過程中遇到一個不能使用多GPU的問題,然而github原始版本是可以使用的,修改過程中的一些改動導致使用多GPU時會報如下的錯誤: arguments are located on different GPUs
定位完問題的位置后一開始以為是cuda設置的問題,后來發現問題出在tranformer模塊這里。舊代碼在transformer的12個layer建立時采用了簡單的list來存儲然后用add_module的方法建立模型。但是這樣的寫法在多GPU的情況下好像是有問題的。以下是修改前后的代碼對比:
修改前通過list和add_module方法建立
修改為nn.ModuleList方法建立
出錯原因詳解:
ModuleList和普通list不一樣,它和torch的其他機制結合緊密,繼承了nn.Module的網絡模型class可以使用nn.ModuleList并識別其中的parameters。而在我們出錯的代碼中可以看見我們的子module是用普通的list存儲的,這種寫法的子module不能被主module所識別,所以其參數未加入到主module的參數中去,自然會報第一張圖中的arguments are located on different GPUs。
總結
以上是生活随笔為你收集整理的查看torch依赖的cuda版本_torch多GPU情况下模型建立遇到的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: qq留言板图片(QQ空间十年前的留言板,
- 下一篇: 20 步内越狱任意大模型!更多“奶奶漏洞