WSL에서 ML용 GPU 가속 시작

ML(기계 학습)은 많은 개발 워크플로의 핵심 부분이 되고 있습니다. 데이터 과학자, ML 엔지니어 또는 ML 학습 과정을 시작하는 사용자에게 WSL(Linux용 Windows 하위 시스템)은 가장 일반적이고 널리 사용되는 GPU 가속 ML 도구를 실행할 수 있는 훌륭한 환경을 제공합니다.

이러한 도구를 설정하는 방법에는 여러 가지가 있습니다. 예를 들어, WSL의 NVIDIA CUDA, TensorFlow-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 공급업체 웹 사이트(AND, Intel 또는 NVIDIA)에서 최신 드라이버를 다운로드하여 설치합니다.

  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 내에서 액세스할 수도 있습니다. 그러나 한 번에 하나씩만 액세스할 수 있습니다. 특정 GPU를 선택하려면 아래 환경 변수를 디바이스 관리자에 표시되는 GPU 이름으로 설정하세요:

export MESA_D3D12_DEFAULT_ADAPTER_NAME="<NameFromDeviceManager>"

이렇게 하면 문자열 일치가 수행되므로 "NVIDIA"로 설정하면 "NVIDIA"로 시작하는 첫 번째 GPU와 일치합니다.

추가 리소스