WSL での ML の GPU アクセラレーションの概要

機械学習 (ML) は、多くの開発ワークフローの重要な部分になっています。 データ サイエンティスト、ML エンジニア、ML を使用した学習体験の開始のいずれであっても、Linux 用 Windows サブシステム (WSL) は、最も一般的で人気のある GPU アクセラレータ ML ツールを実行するための優れた環境を提供します。

これらのツールを設定するには、さまざまな方法があります。 たとえば、WSLのNVIDIA CUDATensorFlow-DirectMLPyTorch-DirectML はすべて、WSL で ML に GPU を使用できるさまざまな方法を提供します。 どちらかを選択する理由の詳細については、「 GPU アクセラレータ ML トレーニング」を参照してください。

このガイドでは、次の設定方法について説明します:

  • NVIDIA グラフィックス カードがあり、サンプル ML フレームワーク コンテナーを実行している場合は NVIDIA CUDA
  • AMD、Intel、または NVIDIA グラフィックス カードのTensorFlow-DirectMLとPyTorch-DirectML

前提条件

Docker を使用した NVIDIA CUDA の設定

  1. NVIDIA GPU 用の最新のドライバーをダウンロードしてインストールする

  2. 次のコマンドを実行して、 Docker Desktop をインストールするか、WSL に Docker エンジンを直接インストールします

    curl https://get.docker.com | sh
    
    sudo service docker start
    
  3. 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
    
  4. 機械学習フレームワーク コンテナーとサンプルを実行します。

    機械学習フレームワーク コンテナーを実行し、この 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
    

    TensorFlow with CUDA running inside a Docker container

    このコンテナーに組み込まれている事前トレーニング済みのモデル サンプルを実行するには、次のコマンドを実行します:

    cd nvidia-examples/cnn/
    
    python resnet.py --batch_size=64
    

    TensorFlow sample model training within Docker container

NVIDIA CUDA をセットアップして利用するその他の方法については、 WSL ユーザー ガイドの NVIDIA CUDA を参照してください。

TensorFlow-DirectML または PyTorch-DirectML の設定

  1. GPU ベンダーの Web サイト: AMDIntelNVIDIA から最新のドライバーをダウンロードしてインストールします。

  2. 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
    
  3. 任意の DirectML によってサポートされる機械学習フレームワークをインストールします。

    TensorFlow-DirectML:

    pip install tensorflow-directml
    

    PyTorch-DirectML:

    sudo apt install libblas3 libomp5 liblapack3
    
    pip install pytorch-directml
    
  4. TensorFlow-DirectML または PyTorch-DirectML の対話型 Python セッションで簡単な追加サンプルを実行して、すべてが動作していることを確認します。

質問がある場合や問題が発生した場合は、 GitHub の DirectML リポジトリ にアクセスしてください。

複数の GPU

コンピューターに複数の GPU がある場合は、WSL 内でそれらにアクセスすることもできます。 ただし、アクセスできるのは一度に 1 つだけです。 特定の GPU を選択するには、次の環境変数を、デバイス マネージャーに表示される GPU の名前に設定してください:

export MESA_D3D12_DEFAULT_ADAPTER_NAME="<NameFromDeviceManager>"

これにより文字列が一致するため、"NVIDIA" に設定すると、"NVIDIA" で始まる最初の GPU と一致します。

その他のリソース