關於 PyTorch 0.3.0 在Windows下的安裝和使用

更新:Conda的編譯問題已經解決,請訪問此處安裝新版本。

另外,再把相應的發布日誌一同搬過來吧。

Windows版本的改動:

錯誤修復

  1. backward中的錯誤會導致死鎖
  2. DataLoader多線程時的內存泄漏
  3. torch.cuda中的縮進bug

新功能

  1. 添加對 CUDA 和 cuDNN 新版本的支持
  2. 添加對 Ninja 和 clcache 編譯器的支持

已知問題

  1. 有些測試不能通過
  2. 不能支持 torch.distributed(分散式)、NCCL(多卡)和 Magma
  3. 不支持 3.5 及以下的版本
  4. 不要把 num_worker 設置為1以上的值。有問題可以嘗試調成0。另外代碼入口得用以下的if語句包裹。這裡稍微解釋下為什麼要這樣,因為Windows不支持fork,多進程只能採用spawn,而如果你不用這個條件包裹,那麼代碼就會被再次執行一遍,這樣如果不加限制,那麼就會有無限多的進程了。那為什麼不能把 num_worker 開的大一些呢?因為PyTorch在Windows下跨進程的數據傳輸方式採取了FileMapping,在傳輸過程中,Mapping也會佔用一份內存,這樣的話,如果將 num_worker 設置為1,就要使用雙倍的內存了。另外管道傳遞也是比較慢的,因此如果開的多了,主進程如果不能快速處理的話,會造成數據的積壓,從而導致對內存無限的佔用。

if __name__ == "__main__":

另外這兩天還有個好消息是,Windows的CI已經正式在搭建中了,估計下周就能完工。以後大家可以更加方便的使用master分支進行編譯了。我寫的一些腳本可以幫助你們方便的進行編譯。

以上,就是文章的全部內容啦,如果感覺還意猶未盡的話,可以給我的Github 主頁或者項目加個watch或者star之類的(滑稽),以後說不定還會再分享一些相關的經驗。

推薦閱讀:

FCN 的簡單實現
pytorch中nn和nn.functional有什麼區別?
2017 年 8 月 6 日發布的 pytorch 0.2.0 哪個特性最吸引你?
如何有效地閱讀PyTorch的源代碼?

TAG:深度学习DeepLearning | PyTorch | MicrosoftWindows |