임의의 NVIDIA 드라이버와 CUDA 버전이 설치된 Debian 11 서버에 액세스할 수 있습니다. 그러나 많은 사람들이 서버를 사용하기 때문에 많은 사람들에게는 다양한 버전의 CUDA와 cuDNN이 필요합니다. 그래서 나는 docker에서 내 환경을 격리하고 이미지에서 컨테이너를 만들기로 결정했습니다.여기.
온라인 가이드에 따르면 호스트에는 NVIDIA 드라이버가 설치(이행)되고 nvidia-container-toolkit
설치(이행)되어야 합니다. 그런 다음 다음을 실행하여 이미지에서 컨테이너를 만들었습니다.
docker run -it --rm --gpus all nvidia/cuda:11.2.0-cudnn8-runtime-ubuntu20.04
이미지에 연결하면 성공적으로 실행할 수 있지만 nvidia-smi
CUDA 버전이 호스트 시스템과 동일하고 cuDNN이 전혀 없는 것 같습니다(호스트에도 현재 cuDNN이 없습니다). 이미지에 두 가지가 모두 사전 설치되어 있어야 한다는 것을 정확하게 이해하고 있습니다.
내가 뭘 잘못하고 있는지, 필요한 경우 특정 CUDA/cuDNN 및 드라이버 버전을 사용하여 격리된 컨테이너를 구현하는 방법을 알고 계시나요?
답변1
nvidia-smi
컨테이너 내부에서 show CUDA version을 호출하면 호스트의 CUDA 버전이 표시되는 이유를 모르겠지만 잘못된 위치에서 cuDNN을 찾고 있다는 것을 알아냈습니다.https://github.com/NVIDIA/nvidia-docker/issues/53
이미지는 다음과 같아야 합니다. (nvidia-docker2도 설치했습니다)
어떤 이유로 훈련 시간이 매우 느려지지만 이에 대해 더 조사해야 하며 이미지 구성과 관련이 없는 것 같습니다(적어도 GPU는 Tensorflow에서 올바르게 볼 수 있습니다).