문제점
Pytcharm에서 tensorflow 프레임워크에서 모델을 학습시키려고하는데
학습은 진행되고 있지만, CPU를 사용하여 학습 속도가 매우 느린편이였다. 즉, GPU를 전혀 사용하지 않는것이다.
nvidia-smi
사용가능한 device 목록을 다음코드로 찾아보았다.
from tensorflow.python.client import device_lib
device_lib.list_local_devices()
결과, CPU만 목록에 나타나고 GPU는 잡지 못하고 있었다.
나의 생각으로는 Pytorch에서는 GPU를 사용하여 학습이 잘 되었기 때문에
CUDA 버전 문제는 아니라고 생각했다.
또한, CPU지만 학습을 할 수 있었기 때문에, tensorflow, kears 등 Library나 Python의 버전을 변경하기가 귀찮았다.
이유를 찾는 도중 에러 로그를 보았는데,
Could not load dynamic library 'libcusolver.so.10'; 딱하나만 찾지 못하였다고 알려주었다.
해결 방법
이 오류에 대하여 검색한 결과,
https://github.com/tensorflow/tensorflow/issues/44777
똑같은 증상을 가진 사람들이 많았고 이 중, 하나 하나 확인한 결과
이분이 알려준 방법대로 따라하니 tensorflow에서 제대로 GPU를 잡고 학습을 할 수 있었다. (행---벅)
이분 방법도 해보고 싶었는데 이미 해결한 이상 더이상 건들기 싫었따.
간단히 정리하자면
- 사용하고 있는 가상환경의 tensorflow의 python 폴더로 이동한다.
- cuda/lib/ 폴더의 libcusolver.so.11 파일을 이동한 폴더에 libcusolver.so.10 파일로 복사 or 링크파일 생성한다.
나는 Ubuntu 환경에서 진행했는데 Window 환경에서도 똑같은 오류가 뜬다면 비슷한 방식으로 진행하면 될 것같다.