프로그래밍/텐서플로우(python)

CUDA driver version is insufficient for CUDA runtime version 에러 해결

콘파냐 2019. 8. 16. 20:50
반응형

우선 이 에러는 케라스를 사용하여 딥러닝 학습을 하는 코드에서 발생한다. 말 그대로 CUDA 드라이버 버전과 CUDA runtime 버전이 다르기 때문에 생긴 문제로 내 경우엔 nvidia-docker를 사용하여 docker환경에서 텐서플로우를 사용하다 생긴 문제다.

tensorflow를 docker에서 사용하기 위한 환경설정을 위해서 이 글은 보는 경우라면 이 글이 참고 정도는 될 것이다.

위 에러의 해결법을 보려면 아래쪽으로 스크롤 하면 되며 대략적으로 docker 환경을 세팅하는 방법을 적어두려한다.

현재 2019년 8월이며 앞으로 1년정도는 이 글이 유용할 것이라고 생각은 드나 1년 후라면 새로운 버전의 쿠다 텐서플로우로 업데이트 할지도 모른다.

CUDA 설치는 머신러닝 학습시 병렬처리를 위한  nvidia GPU를 사용하기 위함이며 GPU 사용이 필요없다면  그냥 텐서플로우만 설치하면 된다.

 

주의 : 도커에 대한 이해가 없다면 이 글을 읽는데 불편할 것이다.

centos7 기준으로 자세한 설명은  생략한 필자의 환경 설정 대략적인 순서.

1. cuda 설치(10.0)

2. cudnn 설치(딥러닝 라이브러리)(cuda10.0에 호환되는 버전 설치할 것)

3. docker-ce 설치 (기본 docker가 설치되었다면 삭제하고 설치할 것, 단 기존에 사용중인 이미지와 컨테이너는 호환안됨)

4. nvidia-docker 설치(https://github.com/NVIDIA/nvidia-docker 참고)

5.  https://gitlab.com/nvidia/cuda/blob/master/doc/supported-tags.md 에서 Dockerfile 참고하여 빌드 (10.0-base)

 

필자는 Dockerfile을 직접 만들어 사용하며 5번에서 다운받은 Dockerfile과 단순히 합쳤다.(그냥 5 도커파일만 사용해도 가능)

Dockerfile을 빌드한 후 4번 사이트에서 알려주듯이 docker run --gpus all 또는 개발환경 gpu 상태 또는 쓰임에 따라 다른 옵션을 추가하여 실행한다.

현재 CUDA 10.1 버전이 최신버전이나 이 버전을 사용하면 도커 컨테이너가 제대로 생성되지 않는 문제가 생겼다. 아마 호스트 컴퓨터에 기본 쿠다 버전이 10.0이기 때문인 듯 하다. 그러므로 주의할것.

해당 에러 해결

만들어진 도커 컨테이너에 접속 한 후에 tensorflow를 설치해야한다. 텐서플로우가 설치된 도커 이미지도 있지만 필자가 직접 텐서플로우를 설치하는 이유는 systemd를 사용하도록 설정된 centos/systemd를 기본으로 이미지로 했기 때문이다.

 

1. anaconda 최신버전 설치

2. conda install -c anaconda cudatoolkit=10.0

3. conda install -c  anaconda tensorflow

4. conda instal -c anaconda keras

....

텐서플로우를 그냥 설치하면 cudatoolkit10.1버전이 설치되면서 위 에러가 생긴다.

따라서 위와 같이 cudatoolkit=10.0을 따로 설치해주면 해결된다.

반응형