Windows 10でPyTorch 1.5をCUDA 10.2向けにビルドする手順をのせておきます。(2020/3/1時点)
PyTorchと併せてよく使われるtorchvisionのビルド手順も含んでいます。
ここでは細かい説明は省略しているので、もう少し細かい説明が必要な場合はBlog - dev.infohub.ccも参考にしていただければと思います。
#ビルド環境
- ハードウェア
- CPU: AMD Threadripper 3960X
- GPU: nVIDIA TITAN RTX
- ソフトウェア
- Windows 10 Pro Version 1909 (x64)
- Microsoft Visual Studio Community 2019 – Ver 16.4.5
- Git for Windows(gitコマンドが使えれば何でもOK)
- Python 3.8.2(AnacondaではなくPython.orgの方)
- CUDA 10.2
- cuDNN 7.6.5
- Intel MKL 2019.0(AMDのCPUだけど強制的にMKLを使用)
#環境変数などの設定
- MKL_DEBUG_CPU_TYPE=5 (AMD系CPUでMKLを使うための設定)
- 他CUDA等へのPATHが通っていること
#PyTorch、torchvisionのビルド
Visual Studio 2019のx64 Native Tools Command Prompt for VS 2019
を開いて以下の手順で作業を行います。(説明はコメント形式で載せています)
# ビルド用の仮想環境(build_pt)作成
python -m venv g:\work\build_pt
g:\work\build_pt\Scripts\activate.bat
cd /d g:\work\build_pt
# パッケージなどの更新
python -m pip install --upgrade pip
# ビルドに必要なパッケージの導入
pip install numpy ninja pyyaml mkl mkl-include cmake cffi wheel
# ソース取得
# 本家サイトの手順とは違って、サブモジュールは後から取得する
git clone https://github.com/pytorch/pytorch
cd pytorch
# 2020/03/01 13:24 時点の状態に切り替え(今回試した最新の状態)
git checkout ace2b4f
# サブモジュールの取得
git submodule sync
git submodule update --init --recursive
# ビルド(Threadripper3960Xで18分くらい)
python setup.py install
# wheelパッケージ作成(pipでwheelを入れておく)
# G:\work\build_pt\pytorch\dist に「torch-1.5.0a0+ace2b4f-cp38-cp38-win_amd64.whl」が作成される
python setup.py bdist_wheel
# ---- ここからtorchvisionのビルド ----------------------------------
# 親フォルダ(g:\work\build_pt)に移動
cd ..
# torchvisionのビルドに必要な追加パッケージの導入
pip install six pillow
# torchvisionでCUDAが使われるかどうかの確認
# この結果がTrueならCUDAが使われる(強制的に使うようにビルドすることも可能。詳細はtorchvisionのページを参照)
python -c "import torch; print(torch.cuda.is_available())"
# torchvisionのソースコード取得
git clone https://github.com/pytorch/vision.git
cd vision
git checkout b2e9565
# ビルド(数分くらい)
python setup.py install
# wheelパッケージの作成
python setup.py bdist_wheel
これでdistフォルダにPyTorchとtorchvisionのwheelファイル(*.whl)が作成されます。
#利用環境への導入
ビルドしたPyTorchとtorchvisionのwheelパッケージを、個別の仮想環境に導入する手順です。
ビルド用のフォルダはディスク容量をかなり使うので、実際にPyTorchなどを利用する環境と、ビルド用の仮想環境は分けておくと便利です。
ここでは、c:\venvs\
配下にml
という仮想環境を作成する想定です。
通常のコマンドプロンプトから実行すればOKです(Visual StudioのコンソールでなくてOK)
# 仮想環境(ml)作成
python -m venv c:\venvs\ml
c:\venvs\ml\Scripts\activate.bat
cd /d c:\venvs\ml
# パッケージなどの更新
python -m pip install --upgrade pip
# PyTorchとtorchvisionの導入(依存パッケージも)
# PyTorchとtorchvisionのwhlファイルは上記で作成したファイルを指定
pip install numpy mkl six pillow
pip install "torch-1.5.0a0+ace2b4f-cp38-cp38-win_amd64.whl"
pip install "torchvision-0.6.0a0+b2e9565-cp38-cp38-win_amd64.whl"
これで、CUDA 10.2向けのPyTorch 1.5.0a0環境作成が完了です。