on WSL2 on Bootcamp with eGPU(GeForce) - 環境の作り方から機械学習ベンチマークまで -
はじめに
-「 MacBook Pro(Bootcamp) + eGPU(GeForce)で機械学習ベンチマーク」という記事の最後で触れていた「CUDA on WSL2」に再挑戦した結果上手く動作したので、記事にしました。
検証環境
- MacBook Pro(2018)
- OS:Windows 10 Pro Insider Preview(Bootcamp)
- バージョン:2004
- OS ビルド:20175.1000
- macOS:Catalina 10.15.5
- CPU:Intel Core i7-8559U
- GPU:NVIDIA GeForce RTX 2080 Ti(MSI GAMING TRIO Z)
- GPUエンクロージャ:Razer Core X Chroma
- Memory:16GB
- Storage:NVMe SSD 200GB
環境の作り方
- 全体的な感触としては、WindowsにNVIDIA Drivers for CUDA on WSLをインストールする点以外は、おおよそ、普通のLinuxマシン(Ubuntu18.04)にCUDA環境を構築するのと同じような感じで、できました。
Windowsでの操作
WSL2(Ubuntu18.04)のインストール
- WSL2が使える状態にします。
- Windows StoreからUbuntu(今回は18.04)をインストールします。
グラフィックスドライバ―のインストール
- 下のページからドライバーをダウンロードして、インストールします。
WSL2での操作
Python環境の構築
- お好みのPython環境を作ります。
- Pyenv + Python 環境
- https://qiita.com/neruoneru/items/1107bcdca7fa43de673d
CUDA + cuDNN環境の構築
- 下記の記事を参考に作ります。(CUDA10.1)
- https://www.nemotos.net/?p=3176
- ただし、グラフィックスドライバーに関して、今回はWindows側で入れているため、WSL2側では入れません。
- まず、適当な作業フォルダを作成します。
$ mkdir tmp
$ cd tmp
- NVIDIAが提供するCUDAリポジトリを追加します。
$ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-repo-ubuntu1804_10.1.243-1_amd64.deb
$ sudo apt install ./cuda-repo-ubuntu1804_10.1.243-1_amd64.deb
- メッセージにCUDAのパブリックGPGキーをインストールしてくださいと出るので、インストールします。
$ sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
$ sudo apt update
- NVIDIAが提供する機械学習リポジトリを追加します。
$ wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb
$ sudo apt install ./nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb
$ sudo apt update
- ここまで来たら、Windows側のPowerShell/コマンドプロンプトで
$ wsl.exe --shutdown
し、WSLを再起動しておきます。
- CUDAとcuDNNをインストールします。
- バージョンを指定しないと、"+cuda10.2"などがついたものがインストールされることがあるので、指定する方が無難だと思います。
$ sudo apt install --no-install-recommends cuda-10-1 libcudnn7=7.6.5.32-1+cuda10.1 libcudnn7-dev=7.6.5.32-1+cuda10.1
- TensorRTをインストールします。(お好みです。)
$ sudo apt install --no-install-recommends libnvinfer6=6.0.1-1+cuda10.1 libnvinfer-dev=6.0.1-1+cuda10.1 libnvinfer-plugin6=6.0.1-1+cuda10.1
- 最後に、バージョン指定して入れたパッケージを
$ sudo apt upgrade
の対象外にしておきます。
$ apt-mark hold libcudnn7 libcudnn7-dev libnvinfer6 libnvinfer-dev libnvinfer-plugin6
機械学習ベンチマーク
検証環境
- フレームワーク
- NNabla 1.8.0
- CUDA 10.1
- タスク
実験結果
- with GPU:0.929[sec]/10[iter](3717.86[sec]/40000[iter])
- only CPU:19.2[sec]/10[iter] (192.30[sec]/100[iter])
- ちなみにCUDA on Windowsの場合の検証結果はこちら。
with GPU:0.189[sec]/10[iter] (757.95[sec]/40000[iter])
only CPU:21.9[sec]/10[iter] (218.70[sec]/100[iter])
- CUDA on Windowsに比べて、CUDA on WSL2の方が4-5倍遅い、という結果になりました。
- これは、まだライブラリが整備しきれていないことによるものなのでしょうか…?(わかりません。)
余談
- 今回検証したWindows OSビルドではタスクマネージャのGPUの表示項目に「CUDA」はなくなっており、「3D」の項目に統合された模様。学習をさせている間は、使用率80-100%で推移していたものの、温度はあまり上昇しませんでした。(使用率100%でもゲームを動作させているときのようなコアの使われ方はしていないということ。)
- ベンチマークまでは回しませんでしたが、tensorflowではこのようにGPUが見えました。
$ python -c "from tensorflow.python.client import device_lib; print(device_lib.list_local_devices())"
:
:
:
2020-07-24 01:01:53.460761: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1247] Created TensorFlow device (/device:GPU:0 with 9530 MB memory) -> physical GPU (device: 0, name: GeForce RTX 2080 Ti, pci bus id: 0000:7f:00.0, compute capability: 7.5)
[name: "/device:CPU:0"
device_type: "CPU"
memory_limit: 268435456
locality {
}
incarnation: 4887027337662705891
, name: "/device:XLA_CPU:0"
device_type: "XLA_CPU"
memory_limit: 17179869184
locality {
}
incarnation: 16175718367223053796
physical_device_desc: "device: XLA_CPU device"
, name: "/device:XLA_GPU:0"
device_type: "XLA_GPU"
memory_limit: 17179869184
locality {
}
incarnation: 5717429592944183067
physical_device_desc: "device: XLA_GPU device"
, name: "/device:GPU:0"
device_type: "GPU"
memory_limit: 9992943744
locality {
bus_id: 1
links {
}
}
incarnation: 9217682947427494720
physical_device_desc: "device: 0, name: GeForce RTX 2080 Ti, pci bus id: 0000:7f:00.0, compute capability: 7.5"
>>>
- 以上です。参考になりましたら、幸いです。
- OS:Windows 10 Pro Insider Preview(Bootcamp)
- バージョン:2004
- OS ビルド:20175.1000
- macOS:Catalina 10.15.5
- CPU:Intel Core i7-8559U
- GPU:NVIDIA GeForce RTX 2080 Ti(MSI GAMING TRIO Z)
- GPUエンクロージャ:Razer Core X Chroma
- Memory:16GB
- Storage:NVMe SSD 200GB
- 全体的な感触としては、WindowsにNVIDIA Drivers for CUDA on WSLをインストールする点以外は、おおよそ、普通のLinuxマシン(Ubuntu18.04)にCUDA環境を構築するのと同じような感じで、できました。
Windowsでの操作
WSL2(Ubuntu18.04)のインストール
- WSL2が使える状態にします。
- Windows StoreからUbuntu(今回は18.04)をインストールします。
グラフィックスドライバ―のインストール
- 下のページからドライバーをダウンロードして、インストールします。
WSL2での操作
Python環境の構築
- お好みのPython環境を作ります。
- Pyenv + Python 環境
- https://qiita.com/neruoneru/items/1107bcdca7fa43de673d
CUDA + cuDNN環境の構築
- 下記の記事を参考に作ります。(CUDA10.1)
- https://www.nemotos.net/?p=3176
- ただし、グラフィックスドライバーに関して、今回はWindows側で入れているため、WSL2側では入れません。
- まず、適当な作業フォルダを作成します。
$ mkdir tmp
$ cd tmp
- NVIDIAが提供するCUDAリポジトリを追加します。
$ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-repo-ubuntu1804_10.1.243-1_amd64.deb
$ sudo apt install ./cuda-repo-ubuntu1804_10.1.243-1_amd64.deb
- メッセージにCUDAのパブリックGPGキーをインストールしてくださいと出るので、インストールします。
$ sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
$ sudo apt update
- NVIDIAが提供する機械学習リポジトリを追加します。
$ wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb
$ sudo apt install ./nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb
$ sudo apt update
- ここまで来たら、Windows側のPowerShell/コマンドプロンプトで
$ wsl.exe --shutdown
し、WSLを再起動しておきます。 - CUDAとcuDNNをインストールします。
- バージョンを指定しないと、"+cuda10.2"などがついたものがインストールされることがあるので、指定する方が無難だと思います。
$ sudo apt install --no-install-recommends cuda-10-1 libcudnn7=7.6.5.32-1+cuda10.1 libcudnn7-dev=7.6.5.32-1+cuda10.1
- TensorRTをインストールします。(お好みです。)
$ sudo apt install --no-install-recommends libnvinfer6=6.0.1-1+cuda10.1 libnvinfer-dev=6.0.1-1+cuda10.1 libnvinfer-plugin6=6.0.1-1+cuda10.1
- 最後に、バージョン指定して入れたパッケージを
$ sudo apt upgrade
の対象外にしておきます。
$ apt-mark hold libcudnn7 libcudnn7-dev libnvinfer6 libnvinfer-dev libnvinfer-plugin6
機械学習ベンチマーク
検証環境
- フレームワーク
- NNabla 1.8.0
- CUDA 10.1
- タスク
実験結果
- with GPU:0.929[sec]/10[iter](3717.86[sec]/40000[iter])
- only CPU:19.2[sec]/10[iter] (192.30[sec]/100[iter])
- ちなみにCUDA on Windowsの場合の検証結果はこちら。
with GPU:0.189[sec]/10[iter] (757.95[sec]/40000[iter])
only CPU:21.9[sec]/10[iter] (218.70[sec]/100[iter])
- CUDA on Windowsに比べて、CUDA on WSL2の方が4-5倍遅い、という結果になりました。
- これは、まだライブラリが整備しきれていないことによるものなのでしょうか…?(わかりません。)
余談
- 今回検証したWindows OSビルドではタスクマネージャのGPUの表示項目に「CUDA」はなくなっており、「3D」の項目に統合された模様。学習をさせている間は、使用率80-100%で推移していたものの、温度はあまり上昇しませんでした。(使用率100%でもゲームを動作させているときのようなコアの使われ方はしていないということ。)
- ベンチマークまでは回しませんでしたが、tensorflowではこのようにGPUが見えました。
$ python -c "from tensorflow.python.client import device_lib; print(device_lib.list_local_devices())"
:
:
:
2020-07-24 01:01:53.460761: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1247] Created TensorFlow device (/device:GPU:0 with 9530 MB memory) -> physical GPU (device: 0, name: GeForce RTX 2080 Ti, pci bus id: 0000:7f:00.0, compute capability: 7.5)
[name: "/device:CPU:0"
device_type: "CPU"
memory_limit: 268435456
locality {
}
incarnation: 4887027337662705891
, name: "/device:XLA_CPU:0"
device_type: "XLA_CPU"
memory_limit: 17179869184
locality {
}
incarnation: 16175718367223053796
physical_device_desc: "device: XLA_CPU device"
, name: "/device:XLA_GPU:0"
device_type: "XLA_GPU"
memory_limit: 17179869184
locality {
}
incarnation: 5717429592944183067
physical_device_desc: "device: XLA_GPU device"
, name: "/device:GPU:0"
device_type: "GPU"
memory_limit: 9992943744
locality {
bus_id: 1
links {
}
}
incarnation: 9217682947427494720
physical_device_desc: "device: 0, name: GeForce RTX 2080 Ti, pci bus id: 0000:7f:00.0, compute capability: 7.5"
>>>
- 以上です。参考になりましたら、幸いです。
- NNabla 1.8.0
- CUDA 10.1
with GPU:0.189[sec]/10[iter] (757.95[sec]/40000[iter])
only CPU:21.9[sec]/10[iter] (218.70[sec]/100[iter])
- 今回検証したWindows OSビルドではタスクマネージャのGPUの表示項目に「CUDA」はなくなっており、「3D」の項目に統合された模様。学習をさせている間は、使用率80-100%で推移していたものの、温度はあまり上昇しませんでした。(使用率100%でもゲームを動作させているときのようなコアの使われ方はしていないということ。)
- ベンチマークまでは回しませんでしたが、tensorflowではこのようにGPUが見えました。
$ python -c "from tensorflow.python.client import device_lib; print(device_lib.list_local_devices())"
:
:
:
2020-07-24 01:01:53.460761: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1247] Created TensorFlow device (/device:GPU:0 with 9530 MB memory) -> physical GPU (device: 0, name: GeForce RTX 2080 Ti, pci bus id: 0000:7f:00.0, compute capability: 7.5)
[name: "/device:CPU:0"
device_type: "CPU"
memory_limit: 268435456
locality {
}
incarnation: 4887027337662705891
, name: "/device:XLA_CPU:0"
device_type: "XLA_CPU"
memory_limit: 17179869184
locality {
}
incarnation: 16175718367223053796
physical_device_desc: "device: XLA_CPU device"
, name: "/device:XLA_GPU:0"
device_type: "XLA_GPU"
memory_limit: 17179869184
locality {
}
incarnation: 5717429592944183067
physical_device_desc: "device: XLA_GPU device"
, name: "/device:GPU:0"
device_type: "GPU"
memory_limit: 9992943744
locality {
bus_id: 1
links {
}
}
incarnation: 9217682947427494720
physical_device_desc: "device: 0, name: GeForce RTX 2080 Ti, pci bus id: 0000:7f:00.0, compute capability: 7.5"
>>>
- 以上です。参考になりましたら、幸いです。
Author And Source
この問題について(on WSL2 on Bootcamp with eGPU(GeForce) - 環境の作り方から機械学習ベンチマークまで -), 我々は、より多くの情報をここで見つけました https://qiita.com/Navier/items/cf551908bae707db4258著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .