關於Windows PRs併入PyTorch的master分支

經過幾個月的努力,隨著11月8號PR 2941併入PyTorch之後,我們終於將關於Windows支持的相關PR全部併入了PyTorch的master分支,現在你可以直接對master分支進行編譯了。編譯需要的組件有:

CPU版本:

  1. Visual Studio 2017 C++ Build Tools
  2. CMake 3.0 及以上
  3. 64位Windows系統
  4. 64位Anaconda/Miniconda 或者 Python 3.5及以上

GPU版本:

  1. CUDA 8.0 及以上
  2. NVTX (在 CUDA 中為VS的插件,若安裝失敗,可以解壓CUDA安裝包,在CUDAVisualStudioIntegration中找到)
  3. 對於CUDA 8 的編譯還需要Visual Studio 2015 with Update 2 及以上

可選項:

  1. cuDNN 6.0 及以上
  2. BLAS 運算庫 (主要是OpenBLAS和MKL)

更新:已添加一個repo用於一鍵進行編譯安裝,歡迎體驗使用。

編譯步驟如下:

  1. clone 官方 repo,並執行一些預備處理

git clone --recursive https://github.com/pytorch/pytorchcd pytorchxcopy /Y atensrcATencommon_with_cwrap.py toolssharedcwrap_common.py

2. 在開始菜單找到x86_x64 Cross Tools Command Prompt for VS 2017,打開並切換目錄至pytorch的目錄下。如果找不到,他的位置一般在C:Program Files (x86)Microsoft Visual Studio2017EnterpriseVCAuxiliaryBuildvcvarsx86_amd64.bat。

3. 在x86_x64 Cross Tools Command Prompt for VS 2017下執行如下一些預配置(在set命令後請務必不要多打空格或Tab)

# 如果不需要 CUDA 支持set NO_CUDA=1# 如果安裝有多個 CUDA 版本,默認會編譯最後安裝的版本,若要覆蓋set CUDA_PATH=%CUDA_PATH_V8_0%# 或者set CUDA_PATH=%CUDA_PATH_V9_0%# 對於 CUDA 8 的編譯set CMAKE_GENERATOR=Visual Studio 14 2015 Win64# 對於 CUDA 9 / CPU 的編譯set CMAKE_GENERATOR=Visual Studio 15 2017 Win64# 你也可以使用 Ninja 來加速 CUDA 的編譯pip install ninjaset CMAKE_GENERATOR=Ninja# 如果使用 Ninja 為 CUDA 8 進行編譯set PREBUILD_COMMAND=%VS140COMNTOOLS%....VCvcvarsall.batset PREBUILD_COMMAND_ARGS=x86_amd64# 如果需要多次編譯,可以使用 clcache 來加快下次編譯的速度pip install git+https://github.com/frerich/clcache.gitset USE_CLCACHE=1set CC=clcacheset CXX=clcache# 如果需要添加 BLAS 支持(OpenBLAS, MKL)set LIB=[PATH_TO_BLAS_LIBS];%LIB%# (僅Conda)如果你的Python版本低於3.5set PYTHON_VERSION=3.5 # 3.6 or up is also fine conda create -q -n test python=PYTHON_VERSION numpy mkl cffi pyyamlactivate test# (僅Python)請安裝第三方的numpy和mkl包和官方的pyyamlpip install numpy.whlpip install mkl.whlpip install pyyaml# 如果你同時安裝了 VS 2015 和 2017set DISTUTILS_USE_SDK=1

4. 開始編譯安裝

python setup.py install

目前針對Windows的已修復項:

  1. 在backward過程中拋出異常會導致死鎖 PR 2941
  2. 在Dataloader開多線程時,會存在內存泄漏 PR 2897
  3. torch.cuda下的一個縮進bug PR 2941
  4. 增加對新 CUDA 和 cuDNN 版本的支持 PR 2941

目前Windows的已知問題:

  1. 部分測試會遇到許可權不足問題 PR 3447
  2. 分散式 torch.distributed 和 多顯卡 nccl 不支持
  3. python 3.5 以下的版本不支持
  4. 多線程的使用方式與 Unix 不同,對於DataLoader的迭代過程一定要使用如下代碼做保護。如遇到多線程下的問題,請先將num_worker設置為0試試是否正常。

if __name__ == __main__:

另外,大家一定很關心什麼時候能出正式Windows正式版,日前,Soumith大神給出了他的回復:

所以這次應該還是見不到正式的Windows版本,但是各位可以期待到時候我的Conda包。

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

推薦閱讀:

windows10下有哪些必須掌握的快捷鍵?
在XP挑戰賽中,這些安全軟體里,360 真的如新聞宣傳中所說,沒被黑客攻破?
Windows 內存釋放軟體的原理是什麼?
開發 Autodesk 的簡化版,除了用 Qt,如何跨 Windows 和 Linux 平台運行呢?
重視版權的知乎用戶有多少用正版 Windows 的?

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