Docker에서 GPU 사용

Docker에서도 딥러닝을 위한 GPU를 사용할 수 있다. 예전에는 꽤나 복잡한 모양이지만 NVIDIA에서 지원을 해줘서 지금은 그렇게 어렵지 않은 것 같다. 아래의 공식 링크를 참고했다.

일단 Docker가 설치되어 있다고 하고 설치를 따라해 보면 다음과 같다.

요약하면 nvidia-container-toolkit과 nvidida-docker2 를 설치하는 것이다.

그리고 Docker 재시작한다.

$ sudo systemctl restart docker

Docker에서 nvidia-smi 로 확인해 보기.

$ sudo docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi

여기서 nvidia-smi 화면이 나오면 일단은 잘 설치가 된 것이다.

그리고 gpu를 사용할 docker 의 container를 생성한다. 위 명령어를 보면 알겠지만 –gpus 라는 명령어를 이용해서 사용하도록 하면 된다.

$ sudo docker run -it --gpus all debian

이렇게 gpu를 사용하도록 만들어진 container는 docker inspect를 이용하면 해당 부분을 알 수 있다. 사용하지 않는 경우에는 결과 값이 []로 출력된다.

$ sudo docker inspect -f "{{ .HostConfig.DeviceRequests}}" python2
[{ -1 [] [[gpu]] map[]}]

사용하기 위해서는 nvidia-container-toolkit이 필요하다. 설치하기 위해서는 다음과 같이 하면 된다.

$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
      && curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
      && curl -s -L https://nvidia.github.io/libnvidia-container/experimental/$distribution/libnvidia-container.list | \
         sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
         sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list