본문 바로가기
리눅스

WSL 2에서 GPU accelerated machine learning training(GPU 사용하기) - 3

by 머리올리자 2021. 1. 5.

 

docs.nvidia.com/cuda/wsl-user-guide/index.html#abstract

 

CUDA on WSL :: CUDA Toolkit Documentation

Windows Subsystem for Linux (WSL) is a Windows 10 feature that enables users to run native Linux command-line tools directly on Windows. WSL is a containerized environment within which users can run Linux native applications from the command line of the Wi

docs.nvidia.com

위 링크에서 Running CUDA Containers, 즉 cuda container를 실행시키는 예제를 해보려 한다.

 

WSL 2 환경에서 GPU 컨테이너를 실행하는 몇 가지 예

docker run --gpus all nvcr.io/nvidia/k8s/cuda-sample:nbody nbody -gpu -benchmark

 

 

Jupyter notebook

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

여기서 크롬으로 아래 빨간색 줄을 복사해서 링크를 여는데 127.0.0.1가 접속 안되면 localhost로 바꿔서 들어가면 된다.

http://localhost:8888/?token=e6cca498db4646fea7808db4728858b8f121155a7f335b83

 

그러면 아래와 같이 jupyter notebook이 접속되고

테스트겸 classification.ipynb 파일을 실행시켜보았다.

 

아래와 같이 학습이 잘 되는 것을 볼 수 있고 

 

리눅스 커널에서도 문제없이 작동하는 것으로 보인다.

 

Deep Learning Framework Containers

NGC의 20.03 컨테이너를 사용한 GPU를 이용하여 ResNet-50 학습 실행을 수행하기 위해 TensorFlow 컨테이너를 실행

 

 

컨테이너를 시작한 다음 nvidia-examples 디렉토리에서 학습 스크립트를 실행

 

sudo docker run --gpus all -it --shm-size=1g --ulimit memlock=-1 --ulimit stack=67108864 nvcr.io/nvidia/tensorflow:20.03-tf2-py3

설치가 완료되면 아래와 같이 workspace 경로로 간다.

여기서 아래 명령어를 실행 한다음 cnn 폴더가 있는지 확인하고

cd nvidia-examples/
ls

아래 명령어로 resnet을 실행한다.

python cnn/resnet.py

확인해보면 out of memory (OOM) 문제가 발생한다.....

 

아래 nvidia docs에 보면 잘 돌아가는데 원인이 무엇일까...

혹시 몰라 resnet.py의 파일을 열어서 batch size를 확인해봤다.

cat cnn/resnet.py

뭐지.... batch_size가 256으로 되어있다. (얘내들도 GTX 1070으로 돌린 것 같은데....)

 

vi 편집기를 열어 수정을 해야겠다.

 

vi cnn/resnet.py

batch_size를 1로 바꿔보았다.

 

다시 돌려보자

python cnn/resnet.py

잘 돌아간드아....

 

예제는 아래를 참고하였습니다.

docs.nvidia.com/cuda/wsl-user-guide/index.html#abstract

 

CUDA on WSL :: CUDA Toolkit Documentation

Windows Subsystem for Linux (WSL) is a Windows 10 feature that enables users to run native Linux command-line tools directly on Windows. WSL is a containerized environment within which users can run Linux native applications from the command line of the Wi

docs.nvidia.com