운영체제/리눅스 linux

[WSL] 윈도우에 WSL2에서 nvidia-docker GPU, CUDA 사용하기

박경태 2021. 8. 28. 11:54

윈도우 OS 빌드를 업그레이드 하는 과정에서 윈도우10 → 윈도우11 로 변경되며, 개발용 컴퓨터 외에 세컨드 컴퓨터로 진행을 권장

(정식 배포가 아닌 개발자용 배포라서 굉장히 불안정, 운영체제를 다시 설치해야 하는 경우도 있음)

 

Step 1)

Windows 설정 앱 → 업데이트 및 보안 → Windows 참가자 프로그램

  • "진단 & 피드백 설정으로 이동하여 선택형 진단 데이터를 설정합니다." 를 클릭하거나 Windows 설정 → 개인 정보 → 피드백 및 진단으로 이동 후 "선택적 진단 데이터" 옵션 선택

 

Step 2)

Windows 설정 앱 → 업데이트 및 보안 → Windows 참가자 프로그램

  • 시작을 클릭하고 Windows 참가자 프로그램에 참여 (마이크로소프트 계정 필요)
  • 설정 중 참가자 설정에서 "Dev 채널"로 선택 후 설정 완료하면 컴퓨터 다시 시작하기

 

Step 3)

생성된 Windows 업데이트 모두 실행하고, OS 빌드 버전 확인시 22000.160 확인 (2021.08.26 기준)

  • OS 빌드 버전 확인 방법 : 실행 창에서 winver

 

Step 4)

WSL 설치 및 Ubuntu 설치 후 wsl로 ubuntu 접속하고, nvidia-smi 명령어 입력시 출력 되는지 확인

  • OS 빌드 버전 19000대, 윈10 은 출력 안되고, OS 빌드 버전 22000대 / 윈11 은 출력됨

 

Step 5)

wsl의 ubuntu에 접속 후 순서대로 명령어 입력하여 cuda 설치

$ wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
$ sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
$ wget https://developer.download.nvidia.com/compute/cuda/11.4.0/local_installers/cuda-repo-wsl-ubuntu-11-4-local_11.4.0-1_amd64.deb
$ sudo dpkg -i cuda-repo-wsl-ubuntu-11-4-local_11.4.0-1_amd64.deb
$ sudo apt-key add /var/cuda-repo-wsl-ubuntu-11-4-local/7fa2af80.pub
$ sudo apt-get update
$ sudo apt-get -y install cuda

 

Step 6)

wsl의 ubuntu에 접속 후 docker 설치

$ curl https://get.docker.com | sh
$ 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/libnvidia-container/experimental/$distribution/libnvidia-container-experimental.list | sudo tee /etc/apt/sources.list.d/libnvidia-container-experimental.list
$ sudo apt-get update
$ sudo apt-get install -y nvidia-docker2
 
$ sudo service docker stop
$ sudo service docker start

 

Step 7)

wsl의 ubuntu에 접속 후 GPU 컨테이너 만들어서 테스트해보기

  • 컨테이너 생성 명령어 입력시 아래와 같은 내용 출력됨. 안되면 확인 필요.
$ sudo docker run --gpus all nvcr.io/nvidia/k8s/cuda-sample:nbody nbody -gpu -benchmark

 

Step 8)

GPU 활용 가능한 Jupyter notebook 컨테이너 생성하기

$ sudo docker run -it --gpus all -p 8888:8888 tensorflow/tensorflow:latest-gpu-py3-jupyter

 

Host PC에서 localhost:8888 이동 후 컨테이너 생성시 만들어진 토큰 입력

 

주피터 노트북에서 Tensorflow GPU 사용여부 확인

from tensorflow.python.client import device_lib
device_lib.list_local_devices()