Windows上でGPUやGUIが使用できるUbuntu環境をセットアップ!
機械学習で大変なことの一つにその環境構築があります. GPUとcudaのバージョンを合わせたり, 必要なpythonパッケージをインストールしなければなりません. それらをスクリプト一つで自動に実行してくれるのがdockerですが, docker内でGPUを利用できるのは現状Linuxのみになっています.
今回はWindows上でもLinux環境を構築し, dockerでGPUを利用できるようにするWindows Subsystem for LinuxやCuda on WSLを紹介します.
セットアップ
Windows上でのセットアップ
Windows Insider ProgramのDevチャネルに参加します. Windowsのタスクバー内の検索ボックスからWindows Insider Programを検索し, Devチャネルを選択します.
![](https://www.techlife-hacking.com/wp-content/uploads/2022/01/WindowsInsiderProgram-1024x482.png)
Visual Studio Codeのインストール
公式ページからVisual Studio Codeをインストールします.
Windows Subsystem for Linuxにアクセスするために, Visual Studio Codeの拡張機能"Remote Development"をインストールします.
またVisual Studio CodeからDockerコンテナにアクセスするために, 拡張機能"Docker"をインストールします.
Nvidia Driverのインストール
CUDA on WSL->Get CUDA Driver->GeForce DriverかQuadro Driverを選択し, インストールします.
Ubuntuのインストール
# install ubuntu
wsl --install -d Ubuntu-20.04
Ubuntu上でのセットアップ
Ubuntuのコンソールを立ち上げ, dockerをインストールします.
![](https://www.techlife-hacking.com/wp-content/uploads/2022/01/WSL-console.png)
Dockerのインストール
# install docker
curl https://get.docker.com | sh
NVIDIA Container Toolkitのインストール
Docker内でGPUが利用できるようにWindows Insider Programをインストールしていきます.
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
&& curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \
&& curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
curl -s -L https://nvidia.github.io/nvidia-container-runtime/experimental/$distribution/nvidia-container-runtime.list | sudo tee /etc/apt/sources.list.d/nvidia-container-runtime.list
sudo apt-get update
sudo apt-get install -y nvidia-docker2
sudo systemctl restart docker
sudoを付与することなく, dockerコマンドが使えるようにしておきます.
sudo usermod -aG docker $USER
sudo service docker restart
検証
TensorflowのDockerfileをpullし, runさせる.
docker pull tensorflow/tensorflow:2.5.0-gpu
docker run --gpus all -it tensorflow/tensorflow:2.5.0-gpu
Visual Studio Codeを立ち上げます.
code .
Visual Studio CodeのDockerタブからコンテナにアタッチします.
![](https://www.techlife-hacking.com/wp-content/uploads/2022/01/VScode.png)
Docker内でGPUが認識されているか確認します.
# verify existence of GPU
python
# in python
from tensorflow.python.client import device_lib
device_lib.list_local_devices()
# the response
[name: "/device:CPU:0"
device_type: "CPU"
memory_limit: 268435456
locality {
}
incarnation: 5894596360552558978,
name: "/device:GPU:0"
device_type: "GPU"
memory_limit: 4128702464
locality {
bus_id: 1
links {
}
}
incarnation: 6180404691262226554
physical_device_desc: "device: 0, name: NVIDIA GeForce RTX 2060, pci bus id: 0000:01:00.0, compute capability: 7.5"]
上記のような結果が返れば, うまくGPUを認識できています.
おわりに
WindowsからUbuntuを使用できるので, 多くのユーザーが機械学習を実施する際にDockerの恩恵を受けることができます. まだ試してない人はやってみてください.