WindowsでPyTorchをC++のサンプル(MNIST)をVisual Studio 2017でビルドして動かす手順のメモです。
LibTorchのインストール
https://pytorch.orgのQUICK START LOCALLYから、Stable/Windows/LibTorch/C++/10.0(CUDAのバージョンが10.0の場合)を選んでlibtorch-win-shared-with-deps-latest.zipをダウンロードする。
適当な場所に解凍する(以下、C:\に解凍したとして説明)。
環境変数PATHに
C:\libtorch\lib
を追加する。
最も単純なサンプルをビルドして実行
Installing C++ Distributions of PyTorch — PyTorch master documentation
の説明の通り、適当な場所に
- CMakeLists.txt
- example-app.cpp
を作成して、上記のページの内容の通り内容を記述する。
ビルド
スタートメニューから「VS 2017 用 x64_x86 Cross Tools コマンド プロンプト」を起動する。
サンプルコードを配置したディレクトリに移動して、以下のコマンドを実行する。
mkdir build cd build cmake -G "Visual Studio 15 2017 Win64" -DCMAKE_PREFIX_PATH=C:\libtorch ..
cmakeのオプションは、Visual Studio 2017とLibTorchを解凍した場所に合わせている。
(cmakeはVisual Studioのインストール時のオプションで選択すればインストールされる。)
buildディレクトリに「example-app.sln」が作成されるので、エクスプローラから開いて、Visual Studio 2017でビルドして、スタートアッププロジェクトを「example-app」に設定して実行する。
成功すれば、以下のように表示される。
0.3171 0.7950 0.6067 0.1094 0.7421 0.8496 [ Variable[CPUType]{2,3} ]
もしくは、msbuildでビルドする。
ソリューションの構成が「RelWithDebInfo」の場合の例)
msbuild example-app.sln /t:build /p:Configuration=RelWithDebInfo;Platform="x64"
MNISTサンプルをビルドして実行
The C++ Frontend — PyTorch master documentation
の説明の通り、サンプルのGitHubレポジトリのcppブランチを取得する。
git clone -b cpp https://github.com/goldsborough/examples.git
以下の通り実行する。
cd examples\cpp\mnist mkdir build cd build cmake -G "Visual Studio 15 2017 Win64" -DCMAKE_PREFIX_PATH=C:\libtorch ..
buildディレクトリにmnist.slnが作成されるので、エクスプローラから開いてビルドする。
スタートアッププロジェクトを「mnist」に設定して実行する。
ソリューションの構成が「Debug」の場合、
register_module("conv1", conv1);
の箇所で、vectorライブラリ内で例外が発生して実行できなかった。
ソリューションの構成を「Release」または「RelWithDebInfo」にした場合は実行できた。
成功すれば、以下のように表示される。
CUDA available! Training on GPU. Train Epoch: 1 [59584/60000] Loss: 0.4143 Test set: Average loss: 0.1984 | Accuracy: 0.939 Train Epoch: 2 [59584/60000] Loss: 0.1886 Test set: Average loss: 0.1356 | Accuracy: 0.959 Train Epoch: 3 [59584/60000] Loss: 0.1666 Test set: Average loss: 0.0983 | Accuracy: 0.969 Train Epoch: 4 [59584/60000] Loss: 0.1346 Test set: Average loss: 0.0870 | Accuracy: 0.973 Train Epoch: 5 [59584/60000] Loss: 0.1822 Test set: Average loss: 0.0770 | Accuracy: 0.975 Train Epoch: 6 [59584/60000] Loss: 0.0635 Test set: Average loss: 0.0696 | Accuracy: 0.978 Train Epoch: 7 [59584/60000] Loss: 0.1375 Test set: Average loss: 0.0676 | Accuracy: 0.978 Train Epoch: 8 [59584/60000] Loss: 0.0289 Test set: Average loss: 0.0625 | Accuracy: 0.980 Train Epoch: 9 [59584/60000] Loss: 0.0218 Test set: Average loss: 0.0553 | Accuracy: 0.982 Train Epoch: 10 [59584/60000] Loss: 0.0773 Test set: Average loss: 0.0530 | Accuracy: 0.983
Google Colabでビルドして実行する方法
Linuxの場合は、公式の説明の通り実行できる。
Google Colabのノートブックを公開したので参考にしてほしい。
https://colab.research.google.com/drive/1F8kSS1VLTAi0zVocIf7kCCMhSgM732PW