Tensorflow 설치
2020.03.12
Tensorflow 버전 2.0이상을 설치하기 위해서는 pip를 우선 업데이트 해야한다. pip 버전 19.0이상이 필요하다.
sudo pip3 install --upgrade pip sudo pip3 install tensorflow
GPU 지원. CUDA를 지원하는 NVIDIA 그래픽카드와 소프트웨어가 필요.
#그래픽카드 확인 lspci | grep NVIDIA #NVIDIA GPU 드라이버 설치 # Add NVIDIA package repositorieswget
http://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda-repo-ubuntu1804-10-2-local-10.2.89-440.33.01_1.0-1_amd64.debsudo dpkg -i
cuda-repo-ubuntu1804-10-2-local-10.2.89-440.33.01_1.0-1_amd64.debsudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
sudo apt-get update
wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb
sudo apt install ./nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb
sudo apt-get update
# NVIDIA 드라이버 설치sudo apt-get install --no-install-recommends nvidia-driver-418
# Reboot. Check that GPUs are visible using the command: nvidia-smi # 런타임 및 개발용 라이브러리 설치 (~4GB)sudo apt-get install --no-install-recommends cuda-10-1 libcudnn7=7.6.4.38-1+cuda10.1 libcudnn7-dev=7.6.4.38-1+cuda10.1
# TensorRT 설치. 위에서 설치한 libcudnn7 이 필요sudo apt-get install -y --no-install-recommends libnvinfer6=6.0.1-1+cuda10.1 libnvinfer-dev=6.0.1-1+cuda10.1 libnvinfer-plugin6=6.0.1-1+cuda10.1
GPU 이용가능한 지 확인
import tensorflow as tf
gpus = tf.config.experimental.list_physical_devices('GPU')
#nvidia 드라이버 확인
nvidia-smi
위과정까지 마쳤는데도, 실제로 계산수행할 때에 에러가 발생함. 에러 내용은 다음과 같음
tensorflow.python.framework.errors_impl.UnknownError: [Derived] Fail to find the dnn implementation. [[{{node CudnnRNN}}]] [[sequential/lstm/StatefulPartitionedCall]] [Op:__inference_distributed_function_2865] Function call stack: distributed_function -> distributed_function -> distributed_function
해결방법
- 모델을 컴파일 한 후에, 한 번 저장하였다가 다시 불러와서 fit 하면 된다.
model.save('model.sav') model = tf.keras.models.load_model('model.sav')
Docker를 이용한 GPU를 지원하는 tensorflow 설치를 시도
테서플로 공식홈페이지 설치 설명은 다음과 같다.
TensorFlow Docker 요구사항
- 로컬 호스트 머신에 Docker를 설치합니다.
- Linux에서 GPU를 지원하려면 NVIDIA Docker 지원을 설치합니다.
docker -v
로 Docker 버전을 기록합니다. 19.03 이전 버전에는 nvidia-docker2와--runtime=nvidia
플래그가 필요합니다. 19.03 이상 버전에는nvidia-container-toolkit
패키지와--gpus all
플래그를 사용합니다. 두 옵션 모두 위 링크된 페이지에 설명되어 있습니다.
Docker 설치.
sudo apt install docker.io docker -v #버전확인 #Docker version 19.03.6, build 369ce74a3c
NVIDIA container toolkit 설치
sudo apt-get install nvidia-cuda-toolkit distribution="ubuntu18.04" curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit sudo systemctl restart docker ##위 과정에서 오류가 발생해여 다음 과정을 수행함 #dpkg: error processing archive /var/cache/apt/archives/nvidia-cuda-dev_9.1.85-3ubuntu1_amd64.deb (--unpack): # '/usr/include/cublas.h'의 덮어쓰기를 시도합니다. 이 파일은 libcublas-dev 10.2.1.243-1 패키지에도 들어있습니다 # dpkg-deb: 오류: 붙여넣기 subprocess was killed by signal (파이프가 깨어짐) sudo apt download nvidia-cuda-dev sudo dpkg --force-overwrite -i nvidia-cuda-dev_9.1.85-3ubuntu1_amd64.deb
재부팅 후 CUDA 공식이미지 불러오기 테스트
sudo docker run --gpus all nvidia/cuda:10.0-base nvidia-smi +-----------------------------------------------------------------------------+ | NVIDIA-SMI 418.87.00 Driver Version: 418.87.00 CUDA Version: 10.1 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 GeForce GTX 960M On | 00000000:02:00.0 Off | N/A | | N/A 50C P0 N/A / N/A | 223MiB / 2004MiB | 11% Default | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: GPU Memory | | GPU PID Type Process name Usage | |=============================================================================| +-----------------------------------------------------------------------------+
tensorflow 이미지 설치
docker pull tensorflow/tensorflow:latest-gpu-py3 #오류발생 #docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.40/containers/create: dial unix /var/run/docker.sock: connect: permission denied. # See 'docker run --help'. sudo hcmod 777 /var/run/docker.sock
tensorflow 이미지 실행
docker run --gpus all -it tensorflow/tensorflow:latest-gpu-py3 #UID와GID 지정 docker run --gpus all -u1000:1000 -it tensorflow/tensorflow:latest-gpu-py3 #폴더공유 docker run --gpus all -it -v <호스트디렉토리>:<컨테이너디렉토리> tensorflow/tensorflow:latest-gpu-py3 #rm 옵션은 종료시 컨테이너 초기화 docker run --gpus all -it --rm tensorflow/tensorflow:latest-gpu-py3
참고
https://www.tensorflow.org/install
https://www.tensorflow.org/install/docker#tensorflow_docker_requirements
0개의 댓글