WSL での ML の GPU アクセラレーションの概要
機械学習 (ML) は、多くの開発ワークフローの重要な部分になっています。 データ サイエンティスト、ML エンジニア、ML を使用した学習体験の開始のいずれであっても、Linux 用 Windows サブシステム (WSL) は、最も一般的で人気のある GPU アクセラレータ ML ツールを実行するための優れた環境を提供します。
これらのツールを設定するには、さまざまな方法があります。 たとえば、WSLのNVIDIA CUDA、TensorFlow-DirectML、PyTorch-DirectML はすべて、WSL で ML に GPU を使用できるさまざまな方法を提供します。 どちらかを選択する理由の詳細については、「 GPU アクセラレータ ML トレーニング」を参照してください。
このガイドでは、次の設定方法について説明します:
- NVIDIA グラフィックス カードがあり、サンプル ML フレームワーク コンテナーを実行している場合は NVIDIA CUDA
- AMD、Intel、または NVIDIA グラフィックス カードのTensorFlow-DirectMLとPyTorch-DirectML
前提条件
- Windows 11 または Windows 10、バージョン 21H2 以降を実行していることを確認します。
- WSL をインストールし、Linux ディストリビューションのユーザー名とパスワードを設定します。
Docker を使用した NVIDIA CUDA の設定
次のコマンドを実行して、 Docker Desktop をインストールするか、WSL に Docker エンジンを直接インストールします
curl https://get.docker.com | sh
sudo service docker start
Docker エンジンを直接インストールした場合は、次の手順に従って NVIDIA Container Toolkit をインストール します。
次のコマンドを実行して、NVIDIA Container Toolkit の安定したリポジトリを設定します:
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-docker-keyring.gpg
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-docker-keyring.gpg] https://#g' | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
次のコマンドを実行して、NVIDIA ランタイム パッケージと依存関係をインストールします:
sudo apt-get update
sudo apt-get install -y nvidia-docker2
機械学習フレームワーク コンテナーとサンプルを実行します。
機械学習フレームワーク コンテナーを実行し、この NVIDIA NGC TensorFlow コンテナーで GPU の使用を開始するには、次のコマンドを入力します:
docker run --gpus all -it --shm-size=1g --ulimit memlock=-1 --ulimit stack=67108864 nvcr.io/nvidia/tensorflow:20.03-tf2-py3
このコンテナーに組み込まれている事前トレーニング済みのモデル サンプルを実行するには、次のコマンドを実行します:
cd nvidia-examples/cnn/
python resnet.py --batch_size=64
NVIDIA CUDA をセットアップして利用するその他の方法については、 WSL ユーザー ガイドの NVIDIA CUDA を参照してください。
TensorFlow-DirectML または PyTorch-DirectML の設定
GPU ベンダーの Web サイト: AMD、 Intel、 NVIDIA から最新のドライバーをダウンロードしてインストールします。
Python 環境を設定します。
仮想 Python 環境を設定することをお勧めします。 仮想 Python 環境のセットアップに使用できるツールは多数あります — これらの手順では、Anaconda の miniconda を使用します。
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
conda create --name directml python=3.7 -y
conda activate directml
任意の DirectML によってサポートされる機械学習フレームワークをインストールします。
TensorFlow-DirectML:
pip install tensorflow-directml
PyTorch-DirectML:
sudo apt install libblas3 libomp5 liblapack3
pip install pytorch-directml
TensorFlow-DirectML または PyTorch-DirectML の対話型 Python セッションで簡単な追加サンプルを実行して、すべてが動作していることを確認します。
質問がある場合や問題が発生した場合は、 GitHub の DirectML リポジトリ にアクセスしてください。
複数の GPU
コンピューターに複数の GPU がある場合は、WSL 内でそれらにアクセスすることもできます。 ただし、アクセスできるのは一度に 1 つだけです。 特定の GPU を選択するには、次の環境変数を、デバイス マネージャーに表示される GPU の名前に設定してください:
export MESA_D3D12_DEFAULT_ADAPTER_NAME="<NameFromDeviceManager>"
これにより文字列が一致するため、"NVIDIA" に設定すると、"NVIDIA" で始まる最初の GPU と一致します。
その他のリソース
Windows Subsystem for Linux