GPU를 사용하도록 설정 for tensorflow
14965 단어 Keras파이썬TensorFlowCUDAGPU
소개
2018/2/8 추가
TensorFlow의 GPU 환경 설정의 개인 결정판 (ubuntu 16.04))에 지금은 이것이 좋지 않다는 잠정판 메모를 썼습니다.
1.GPU 확인
GPU를 계산에 사용하고 싶다고 생각하고 Centos7에 환경을 도입했다. 목표는 tensorflow라고 하는지 keras의 계산을 GPU로 할 수 있도록 하는 것.
$ lspci | grep VGA
01:00.0 VGA compatible controller: NVIDIA Corporation GK208 [GeForce GT 710B] (rev a1)
htp : // bg. 아메다마. jp/엔트리/2017/03/13/123742
이 기사에 따르면, Compute Capability가 3.0 이상이 아니면 현재 보급되고 있는 CUDA8.0에 대응하고 있지 않다고 한다.
이 GPU는 초절 오래된 녀석이지만, Compute Capability가 3.5이므로 길을 갈 것 같다.
2.Keras에서 GPU를 사용하는 데 필요한 것
htp : // bg. 아메다마. jp/엔트리/2017/02/26/120215
이 기사에 따르면 다음 세 가지를 다운로드하면됩니다.
GPU를 계산에 사용하고 싶다고 생각하고 Centos7에 환경을 도입했다. 목표는 tensorflow라고 하는지 keras의 계산을 GPU로 할 수 있도록 하는 것.
$ lspci | grep VGA
01:00.0 VGA compatible controller: NVIDIA Corporation GK208 [GeForce GT 710B] (rev a1)
htp : // bg. 아메다마. jp/엔트리/2017/03/13/123742
이 기사에 따르면, Compute Capability가 3.0 이상이 아니면 현재 보급되고 있는 CUDA8.0에 대응하고 있지 않다고 한다.
이 GPU는 초절 오래된 녀석이지만, Compute Capability가 3.5이므로 길을 갈 것 같다.
2.Keras에서 GPU를 사용하는 데 필요한 것
htp : // bg. 아메다마. jp/엔트리/2017/02/26/120215
이 기사에 따르면 다음 세 가지를 다운로드하면됩니다.
3.CUDA 설치
nvidia의 다음 문서를 따랐다.
htp // // cs. 응아아. 코 m / 쿠다 / 쿠다 - s s 탓 치 온구이 - ぃ ん x / 어서 x. html # a xz z4l4RhQh5L
우선은 환경의 확인으로부터.
$ python --version
# Python 3.5.2 :: Anaconda 4.2.0 (64-bit)
$ uname -m && cat /etc/*release
# CentOS Linux release 7.3.1611 (Core)
$ gcc --version
# gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-11)
$ uname -r
# 3.10.0-514.10.2.el7.x86_64
모두 위의 URL의 시스템 요구 사항을 충족합니다.
그래서 cuda를 설치하십시오.
htps : //에서 ゔぇぺぺr. 응아아. 코 m / 쿠다 - ww 아아 ds
위 그림과 같이 base installer를 cuda-downloads에 있는 대로 다음의 명령을 실행하여 설치할 수 있었다.
sudo rpm -i cuda-repo-rhel7-8.0.61-1.x86_64.rpm
sudo yum clean all
sudo yum install cuda
4.cuDNN 설치
그런 다음 cuDNN을 설치합니다.
htps : //에서 ゔぇぺぺr. 응아아. 이 m / 로
여기에서 개발자 계정을 만들고,
htps : //에서 ゔぇぺぺr. 응아아. 코 m / rdp / 쿠 드 - w w ぉ 아 d
여기서 cuDNN을 다운로드합니다. linux cuda-8.0 버전을 다운로드했습니다.
$ tar -xvzf cudnn-8.0-linux-x64-v5.1.tgz
여기에서 확장 된 것은 /usr/local/cuda
와 /usr/local/cuda-8.0
의 각 include, lib64 디렉토리로 이동했다. 자세한 내용은 6.1을 참조하십시오.
다른 기사를 참고로 이하의 path를 추가했지만, 불필요한 것도 들어 있을지도.
# CUDA path
export CUDA_ROOT="/usr/local/cuda"
export LIBRARY_PATH=$CUDA_ROOT/lib:$CUDA_ROOT/lib64:$LIBRARY_PATH
export LD_LIBRARY_PATH=$CUDA_ROOT/lib64/
source ~/.bash_profile
5.tensorflow-gpu 다운로드
$ pip install tensorflow-gpu
6.1.libcudnn.so.5를 찾을 수 없는 오류
In [2]: import keras
(import tensorflowでも)
ImportError: libcudnn.so.5: cannot open shared object file: No such file or directory
원래 cuda를 저장하는 디렉토리는 /usr/local/cuda
에있었습니다. 거기에 cuDNN을 이동합니다. /usr/local/
아래에는 cuda
와 cuda-8.0
가 있으며 둘 다로 이동했습니다.
$ sudo cp ./cudnn.h /usr/local/cuda/include
$ sudo cp ./cudnn.h /usr/local/cuda-8.0/include
$ sudo cp ./* /usr/local/cuda/lib64
$ sudo cp ./* /usr/local/cuda-8.0/lib64
둘 중 하나라면 ImportError: libcudnn.so.5: cannot open shared object file: No such file or directory
오류가 발생했습니다.
6.2. 드라이버가 없는 오류
In [1]: %timeit -n 1 -r 1 %run mnist_cnn.py
Using TensorFlow backend.
x_train shape: (60000, 28, 28, 1)
60000 train samples
10000 test samples
Train on 60000 samples, validate on 10000 samples
Epoch 1/12
2017-06-26 14:03:56.377779: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.1 instructions, but these are available on your machine and could speed up CPU computations.
2017-06-26 14:03:56.377825: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.2 instructions, but these are available on your machine and could speed up CPU computations.
2017-06-26 14:03:56.418415: E tensorflow/stream_executor/cuda/cuda_driver.cc:406] failed call to cuInit: CUDA_ERROR_UNKNOWN
2017-06-26 14:03:56.418677: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:145] kernel driver does not appear to be running on this host (cosmos): /proc/driver/nvidia/version does not exist
3584/60000 [>.............................] - ETA: 127s - loss: 1.4717 - acc: 0.5474
이와 같이 드라이버가 없어 GPU를 검출 할 수 없다는 표시가 나왔다.
6.3. 드라이버 다운로드
드라이버를 넣으려고했지만 다음과 같은 Nouveau 커널 드라이버에 대한 오류가 발생했습니다.
이 기사에서,
Nouveau kernel driver가 존재하기 때문에 CUDA 드라이버를 설치할 수 없을 때의 조치
참고로 Black list에 Nouveau를 추가하여 재부팅했습니다. 이렇게하면 드라이버를 성공적으로 설치할 수있었습니다.
7.완성
움직였다!
In [1]: %timeit -n 1 -r 1 %run mnist_cnn.py
Using TensorFlow backend.
x_train shape: (60000, 28, 28, 1)
60000 train samples
10000 test samples
Train on 60000 samples, validate on 10000 samples
Epoch 1/12
2017-06-26 16:53:56.009383: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.1 instructions, but these are available on your machine and could speed up CPU computations.
2017-06-26 16:53:56.009431: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.2 instructions, but these are available on your machine and could speed up CPU computations.
2017-06-26 16:53:56.848793: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:893] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2017-06-26 16:53:56.849080: I tensorflow/core/common_runtime/gpu/gpu_device.cc:940] Found device 0 with properties:
name: GeForce GT 710
major: 3 minor: 5 memoryClockRate (GHz) 0.954
pciBusID 0000:01:00.0
Total memory: 980.75MiB
Free memory: 970.88MiB
2017-06-26 16:53:56.849126: I tensorflow/core/common_runtime/gpu/gpu_device.cc:961] DMA: 0
2017-06-26 16:53:56.849143: I tensorflow/core/common_runtime/gpu/gpu_device.cc:971] 0: Y
2017-06-26 16:53:56.849180: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GT 710, pci bus id: 0000:01:00.0)
60000/60000 [==============================] - 114s - loss: 0.3256 - acc: 0.9009 - val_loss: 0.0758 - val_acc: 0.9759
Epoch 2/12
60000/60000 [==============================] - 110s - loss: 0.1120 - acc: 0.9670 - val_loss: 0.0527 - val_acc: 0.9831
Epoch 3/12
60000/60000 [==============================] - 110s - loss: 0.0855 - acc: 0.9745 - val_loss: 0.0443 - val_acc: 0.9858
Epoch 4/12
60000/60000 [==============================] - 110s - loss: 0.0719 - acc: 0.9789 - val_loss: 0.0370 - val_acc: 0.9865
Epoch 5/12
60000/60000 [==============================] - 110s - loss: 0.0621 - acc: 0.9817 - val_loss: 0.0362 - val_acc: 0.9879
Epoch 6/12
60000/60000 [==============================] - 110s - loss: 0.0570 - acc: 0.9835 - val_loss: 0.0326 - val_acc: 0.9885
Epoch 7/12
60000/60000 [==============================] - 110s - loss: 0.0499 - acc: 0.9853 - val_loss: 0.0344 - val_acc: 0.9894
Epoch 8/12
60000/60000 [==============================] - 110s - loss: 0.0485 - acc: 0.9855 - val_loss: 0.0298 - val_acc: 0.9911
Epoch 9/12
60000/60000 [==============================] - 110s - loss: 0.0441 - acc: 0.9874 - val_loss: 0.0304 - val_acc: 0.9899
Epoch 10/12
60000/60000 [==============================] - 109s - loss: 0.0416 - acc: 0.9878 - val_loss: 0.0289 - val_acc: 0.9910
Epoch 11/12
60000/60000 [==============================] - 110s - loss: 0.0398 - acc: 0.9882 - val_loss: 0.0295 - val_acc: 0.9899
Epoch 12/12
60000/60000 [==============================] - 109s - loss: 0.0374 - acc: 0.9888 - val_loss: 0.0274 - val_acc: 0.9909
Test loss: 0.0273571792022
Test accuracy: 0.9909
1 loop, best of 1: 22min 31s per loop
덧붙여서 core i7의 multiprocess로 28분으로, GPU를 사용해 22분이므로, 그렇게 변하지 않는 웃음(Geforce 710이므로 어쩔 수 없다)
8. 추가: 기타 오류
2017/12/11에 새로운 GPU를 구입해 설정했으므로 그 때의 메모.
GTX1060을 샀다. 그건 그렇고, 환경은 centos에서 우분투로 바뀌었다.
8.1 드라이버 버전의 엇갈림
17-12-11 20:23:00.970215: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:189] libcuda reported version is: 384.90.0
2017-12-11 20:23:00.970253: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:369] driver version file contents: """NVRM version: NVIDIA UNIX x86_64 Kernel Module 384.98 Thu Oct 26 15:16:01 PDT 2017
GCC version: gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.5)
"""
2017-12-11 20:23:00.970277: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:193] kernel reported version is: 384.98.0
2017-12-11 20:23:00.970288: E tensorflow/stream_executor/cuda/cuda_diagnostics.cc:303] kernel version 384.98.0 does not match DSO version 384.90.0 -- cannot find working devices in this configuration
일단 드라이버를 지우고 6.3과 같은 방법으로 384.98.0
의 드라이버를 넣으면 사라졌다.384.98.0
의 드라이버는 영어 사이트에서는 좀처럼 발견되지 않고, 일본 사이트에서는 곧 발견된 것이 수수께끼다.
9. 참고 정보
2017/12/11 현재
tensorflow 출시을 보면 1.5.0에서 cuda9.0에 대응할 예정이다. 현재 (1.4.0)는 지원되지 않습니다.
출시되어 대응했다.
10. 참고 링크
Ubuntu에 Nvidia GPU의 Driver + CUDA를 Install (GTX1080 대응 버전)
Reference
이 문제에 관하여(GPU를 사용하도록 설정 for tensorflow), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kazetof/items/941c3463ac452b496d59
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ python --version
# Python 3.5.2 :: Anaconda 4.2.0 (64-bit)
$ uname -m && cat /etc/*release
# CentOS Linux release 7.3.1611 (Core)
$ gcc --version
# gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-11)
$ uname -r
# 3.10.0-514.10.2.el7.x86_64
sudo rpm -i cuda-repo-rhel7-8.0.61-1.x86_64.rpm
sudo yum clean all
sudo yum install cuda
그런 다음 cuDNN을 설치합니다.
htps : //에서 ゔぇぺぺr. 응아아. 이 m / 로
여기에서 개발자 계정을 만들고,
htps : //에서 ゔぇぺぺr. 응아아. 코 m / rdp / 쿠 드 - w w ぉ 아 d
여기서 cuDNN을 다운로드합니다. linux cuda-8.0 버전을 다운로드했습니다.
$ tar -xvzf cudnn-8.0-linux-x64-v5.1.tgz
여기에서 확장 된 것은
/usr/local/cuda
와 /usr/local/cuda-8.0
의 각 include, lib64 디렉토리로 이동했다. 자세한 내용은 6.1을 참조하십시오.다른 기사를 참고로 이하의 path를 추가했지만, 불필요한 것도 들어 있을지도.
# CUDA path
export CUDA_ROOT="/usr/local/cuda"
export LIBRARY_PATH=$CUDA_ROOT/lib:$CUDA_ROOT/lib64:$LIBRARY_PATH
export LD_LIBRARY_PATH=$CUDA_ROOT/lib64/
source ~/.bash_profile
5.tensorflow-gpu 다운로드
$ pip install tensorflow-gpu
6.1.libcudnn.so.5를 찾을 수 없는 오류
In [2]: import keras
(import tensorflowでも)
ImportError: libcudnn.so.5: cannot open shared object file: No such file or directory
원래 cuda를 저장하는 디렉토리는 /usr/local/cuda
에있었습니다. 거기에 cuDNN을 이동합니다. /usr/local/
아래에는 cuda
와 cuda-8.0
가 있으며 둘 다로 이동했습니다.
$ sudo cp ./cudnn.h /usr/local/cuda/include
$ sudo cp ./cudnn.h /usr/local/cuda-8.0/include
$ sudo cp ./* /usr/local/cuda/lib64
$ sudo cp ./* /usr/local/cuda-8.0/lib64
둘 중 하나라면 ImportError: libcudnn.so.5: cannot open shared object file: No such file or directory
오류가 발생했습니다.
6.2. 드라이버가 없는 오류
In [1]: %timeit -n 1 -r 1 %run mnist_cnn.py
Using TensorFlow backend.
x_train shape: (60000, 28, 28, 1)
60000 train samples
10000 test samples
Train on 60000 samples, validate on 10000 samples
Epoch 1/12
2017-06-26 14:03:56.377779: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.1 instructions, but these are available on your machine and could speed up CPU computations.
2017-06-26 14:03:56.377825: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.2 instructions, but these are available on your machine and could speed up CPU computations.
2017-06-26 14:03:56.418415: E tensorflow/stream_executor/cuda/cuda_driver.cc:406] failed call to cuInit: CUDA_ERROR_UNKNOWN
2017-06-26 14:03:56.418677: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:145] kernel driver does not appear to be running on this host (cosmos): /proc/driver/nvidia/version does not exist
3584/60000 [>.............................] - ETA: 127s - loss: 1.4717 - acc: 0.5474
이와 같이 드라이버가 없어 GPU를 검출 할 수 없다는 표시가 나왔다.
6.3. 드라이버 다운로드
드라이버를 넣으려고했지만 다음과 같은 Nouveau 커널 드라이버에 대한 오류가 발생했습니다.
이 기사에서,
Nouveau kernel driver가 존재하기 때문에 CUDA 드라이버를 설치할 수 없을 때의 조치
참고로 Black list에 Nouveau를 추가하여 재부팅했습니다. 이렇게하면 드라이버를 성공적으로 설치할 수있었습니다.
7.완성
움직였다!
In [1]: %timeit -n 1 -r 1 %run mnist_cnn.py
Using TensorFlow backend.
x_train shape: (60000, 28, 28, 1)
60000 train samples
10000 test samples
Train on 60000 samples, validate on 10000 samples
Epoch 1/12
2017-06-26 16:53:56.009383: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.1 instructions, but these are available on your machine and could speed up CPU computations.
2017-06-26 16:53:56.009431: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.2 instructions, but these are available on your machine and could speed up CPU computations.
2017-06-26 16:53:56.848793: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:893] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2017-06-26 16:53:56.849080: I tensorflow/core/common_runtime/gpu/gpu_device.cc:940] Found device 0 with properties:
name: GeForce GT 710
major: 3 minor: 5 memoryClockRate (GHz) 0.954
pciBusID 0000:01:00.0
Total memory: 980.75MiB
Free memory: 970.88MiB
2017-06-26 16:53:56.849126: I tensorflow/core/common_runtime/gpu/gpu_device.cc:961] DMA: 0
2017-06-26 16:53:56.849143: I tensorflow/core/common_runtime/gpu/gpu_device.cc:971] 0: Y
2017-06-26 16:53:56.849180: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GT 710, pci bus id: 0000:01:00.0)
60000/60000 [==============================] - 114s - loss: 0.3256 - acc: 0.9009 - val_loss: 0.0758 - val_acc: 0.9759
Epoch 2/12
60000/60000 [==============================] - 110s - loss: 0.1120 - acc: 0.9670 - val_loss: 0.0527 - val_acc: 0.9831
Epoch 3/12
60000/60000 [==============================] - 110s - loss: 0.0855 - acc: 0.9745 - val_loss: 0.0443 - val_acc: 0.9858
Epoch 4/12
60000/60000 [==============================] - 110s - loss: 0.0719 - acc: 0.9789 - val_loss: 0.0370 - val_acc: 0.9865
Epoch 5/12
60000/60000 [==============================] - 110s - loss: 0.0621 - acc: 0.9817 - val_loss: 0.0362 - val_acc: 0.9879
Epoch 6/12
60000/60000 [==============================] - 110s - loss: 0.0570 - acc: 0.9835 - val_loss: 0.0326 - val_acc: 0.9885
Epoch 7/12
60000/60000 [==============================] - 110s - loss: 0.0499 - acc: 0.9853 - val_loss: 0.0344 - val_acc: 0.9894
Epoch 8/12
60000/60000 [==============================] - 110s - loss: 0.0485 - acc: 0.9855 - val_loss: 0.0298 - val_acc: 0.9911
Epoch 9/12
60000/60000 [==============================] - 110s - loss: 0.0441 - acc: 0.9874 - val_loss: 0.0304 - val_acc: 0.9899
Epoch 10/12
60000/60000 [==============================] - 109s - loss: 0.0416 - acc: 0.9878 - val_loss: 0.0289 - val_acc: 0.9910
Epoch 11/12
60000/60000 [==============================] - 110s - loss: 0.0398 - acc: 0.9882 - val_loss: 0.0295 - val_acc: 0.9899
Epoch 12/12
60000/60000 [==============================] - 109s - loss: 0.0374 - acc: 0.9888 - val_loss: 0.0274 - val_acc: 0.9909
Test loss: 0.0273571792022
Test accuracy: 0.9909
1 loop, best of 1: 22min 31s per loop
덧붙여서 core i7의 multiprocess로 28분으로, GPU를 사용해 22분이므로, 그렇게 변하지 않는 웃음(Geforce 710이므로 어쩔 수 없다)
8. 추가: 기타 오류
2017/12/11에 새로운 GPU를 구입해 설정했으므로 그 때의 메모.
GTX1060을 샀다. 그건 그렇고, 환경은 centos에서 우분투로 바뀌었다.
8.1 드라이버 버전의 엇갈림
17-12-11 20:23:00.970215: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:189] libcuda reported version is: 384.90.0
2017-12-11 20:23:00.970253: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:369] driver version file contents: """NVRM version: NVIDIA UNIX x86_64 Kernel Module 384.98 Thu Oct 26 15:16:01 PDT 2017
GCC version: gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.5)
"""
2017-12-11 20:23:00.970277: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:193] kernel reported version is: 384.98.0
2017-12-11 20:23:00.970288: E tensorflow/stream_executor/cuda/cuda_diagnostics.cc:303] kernel version 384.98.0 does not match DSO version 384.90.0 -- cannot find working devices in this configuration
일단 드라이버를 지우고 6.3과 같은 방법으로 384.98.0
의 드라이버를 넣으면 사라졌다.384.98.0
의 드라이버는 영어 사이트에서는 좀처럼 발견되지 않고, 일본 사이트에서는 곧 발견된 것이 수수께끼다.
9. 참고 정보
2017/12/11 현재
tensorflow 출시을 보면 1.5.0에서 cuda9.0에 대응할 예정이다. 현재 (1.4.0)는 지원되지 않습니다.
출시되어 대응했다.
10. 참고 링크
Ubuntu에 Nvidia GPU의 Driver + CUDA를 Install (GTX1080 대응 버전)
Reference
이 문제에 관하여(GPU를 사용하도록 설정 for tensorflow), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kazetof/items/941c3463ac452b496d59
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ pip install tensorflow-gpu
In [2]: import keras
(import tensorflowでも)
ImportError: libcudnn.so.5: cannot open shared object file: No such file or directory
원래 cuda를 저장하는 디렉토리는
/usr/local/cuda
에있었습니다. 거기에 cuDNN을 이동합니다. /usr/local/
아래에는 cuda
와 cuda-8.0
가 있으며 둘 다로 이동했습니다.$ sudo cp ./cudnn.h /usr/local/cuda/include
$ sudo cp ./cudnn.h /usr/local/cuda-8.0/include
$ sudo cp ./* /usr/local/cuda/lib64
$ sudo cp ./* /usr/local/cuda-8.0/lib64
둘 중 하나라면
ImportError: libcudnn.so.5: cannot open shared object file: No such file or directory
오류가 발생했습니다.6.2. 드라이버가 없는 오류
In [1]: %timeit -n 1 -r 1 %run mnist_cnn.py
Using TensorFlow backend.
x_train shape: (60000, 28, 28, 1)
60000 train samples
10000 test samples
Train on 60000 samples, validate on 10000 samples
Epoch 1/12
2017-06-26 14:03:56.377779: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.1 instructions, but these are available on your machine and could speed up CPU computations.
2017-06-26 14:03:56.377825: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.2 instructions, but these are available on your machine and could speed up CPU computations.
2017-06-26 14:03:56.418415: E tensorflow/stream_executor/cuda/cuda_driver.cc:406] failed call to cuInit: CUDA_ERROR_UNKNOWN
2017-06-26 14:03:56.418677: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:145] kernel driver does not appear to be running on this host (cosmos): /proc/driver/nvidia/version does not exist
3584/60000 [>.............................] - ETA: 127s - loss: 1.4717 - acc: 0.5474
이와 같이 드라이버가 없어 GPU를 검출 할 수 없다는 표시가 나왔다.
6.3. 드라이버 다운로드
드라이버를 넣으려고했지만 다음과 같은 Nouveau 커널 드라이버에 대한 오류가 발생했습니다.
이 기사에서,
Nouveau kernel driver가 존재하기 때문에 CUDA 드라이버를 설치할 수 없을 때의 조치
참고로 Black list에 Nouveau를 추가하여 재부팅했습니다. 이렇게하면 드라이버를 성공적으로 설치할 수있었습니다.
7.완성
움직였다!
In [1]: %timeit -n 1 -r 1 %run mnist_cnn.py
Using TensorFlow backend.
x_train shape: (60000, 28, 28, 1)
60000 train samples
10000 test samples
Train on 60000 samples, validate on 10000 samples
Epoch 1/12
2017-06-26 16:53:56.009383: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.1 instructions, but these are available on your machine and could speed up CPU computations.
2017-06-26 16:53:56.009431: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.2 instructions, but these are available on your machine and could speed up CPU computations.
2017-06-26 16:53:56.848793: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:893] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2017-06-26 16:53:56.849080: I tensorflow/core/common_runtime/gpu/gpu_device.cc:940] Found device 0 with properties:
name: GeForce GT 710
major: 3 minor: 5 memoryClockRate (GHz) 0.954
pciBusID 0000:01:00.0
Total memory: 980.75MiB
Free memory: 970.88MiB
2017-06-26 16:53:56.849126: I tensorflow/core/common_runtime/gpu/gpu_device.cc:961] DMA: 0
2017-06-26 16:53:56.849143: I tensorflow/core/common_runtime/gpu/gpu_device.cc:971] 0: Y
2017-06-26 16:53:56.849180: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GT 710, pci bus id: 0000:01:00.0)
60000/60000 [==============================] - 114s - loss: 0.3256 - acc: 0.9009 - val_loss: 0.0758 - val_acc: 0.9759
Epoch 2/12
60000/60000 [==============================] - 110s - loss: 0.1120 - acc: 0.9670 - val_loss: 0.0527 - val_acc: 0.9831
Epoch 3/12
60000/60000 [==============================] - 110s - loss: 0.0855 - acc: 0.9745 - val_loss: 0.0443 - val_acc: 0.9858
Epoch 4/12
60000/60000 [==============================] - 110s - loss: 0.0719 - acc: 0.9789 - val_loss: 0.0370 - val_acc: 0.9865
Epoch 5/12
60000/60000 [==============================] - 110s - loss: 0.0621 - acc: 0.9817 - val_loss: 0.0362 - val_acc: 0.9879
Epoch 6/12
60000/60000 [==============================] - 110s - loss: 0.0570 - acc: 0.9835 - val_loss: 0.0326 - val_acc: 0.9885
Epoch 7/12
60000/60000 [==============================] - 110s - loss: 0.0499 - acc: 0.9853 - val_loss: 0.0344 - val_acc: 0.9894
Epoch 8/12
60000/60000 [==============================] - 110s - loss: 0.0485 - acc: 0.9855 - val_loss: 0.0298 - val_acc: 0.9911
Epoch 9/12
60000/60000 [==============================] - 110s - loss: 0.0441 - acc: 0.9874 - val_loss: 0.0304 - val_acc: 0.9899
Epoch 10/12
60000/60000 [==============================] - 109s - loss: 0.0416 - acc: 0.9878 - val_loss: 0.0289 - val_acc: 0.9910
Epoch 11/12
60000/60000 [==============================] - 110s - loss: 0.0398 - acc: 0.9882 - val_loss: 0.0295 - val_acc: 0.9899
Epoch 12/12
60000/60000 [==============================] - 109s - loss: 0.0374 - acc: 0.9888 - val_loss: 0.0274 - val_acc: 0.9909
Test loss: 0.0273571792022
Test accuracy: 0.9909
1 loop, best of 1: 22min 31s per loop
덧붙여서 core i7의 multiprocess로 28분으로, GPU를 사용해 22분이므로, 그렇게 변하지 않는 웃음(Geforce 710이므로 어쩔 수 없다)
8. 추가: 기타 오류
2017/12/11에 새로운 GPU를 구입해 설정했으므로 그 때의 메모.
GTX1060을 샀다. 그건 그렇고, 환경은 centos에서 우분투로 바뀌었다.
8.1 드라이버 버전의 엇갈림
17-12-11 20:23:00.970215: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:189] libcuda reported version is: 384.90.0
2017-12-11 20:23:00.970253: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:369] driver version file contents: """NVRM version: NVIDIA UNIX x86_64 Kernel Module 384.98 Thu Oct 26 15:16:01 PDT 2017
GCC version: gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.5)
"""
2017-12-11 20:23:00.970277: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:193] kernel reported version is: 384.98.0
2017-12-11 20:23:00.970288: E tensorflow/stream_executor/cuda/cuda_diagnostics.cc:303] kernel version 384.98.0 does not match DSO version 384.90.0 -- cannot find working devices in this configuration
일단 드라이버를 지우고 6.3과 같은 방법으로 384.98.0
의 드라이버를 넣으면 사라졌다.384.98.0
의 드라이버는 영어 사이트에서는 좀처럼 발견되지 않고, 일본 사이트에서는 곧 발견된 것이 수수께끼다.
9. 참고 정보
2017/12/11 현재
tensorflow 출시을 보면 1.5.0에서 cuda9.0에 대응할 예정이다. 현재 (1.4.0)는 지원되지 않습니다.
출시되어 대응했다.
10. 참고 링크
Ubuntu에 Nvidia GPU의 Driver + CUDA를 Install (GTX1080 대응 버전)
Reference
이 문제에 관하여(GPU를 사용하도록 설정 for tensorflow), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kazetof/items/941c3463ac452b496d59
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
In [1]: %timeit -n 1 -r 1 %run mnist_cnn.py
Using TensorFlow backend.
x_train shape: (60000, 28, 28, 1)
60000 train samples
10000 test samples
Train on 60000 samples, validate on 10000 samples
Epoch 1/12
2017-06-26 14:03:56.377779: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.1 instructions, but these are available on your machine and could speed up CPU computations.
2017-06-26 14:03:56.377825: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.2 instructions, but these are available on your machine and could speed up CPU computations.
2017-06-26 14:03:56.418415: E tensorflow/stream_executor/cuda/cuda_driver.cc:406] failed call to cuInit: CUDA_ERROR_UNKNOWN
2017-06-26 14:03:56.418677: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:145] kernel driver does not appear to be running on this host (cosmos): /proc/driver/nvidia/version does not exist
3584/60000 [>.............................] - ETA: 127s - loss: 1.4717 - acc: 0.5474
움직였다!
In [1]: %timeit -n 1 -r 1 %run mnist_cnn.py
Using TensorFlow backend.
x_train shape: (60000, 28, 28, 1)
60000 train samples
10000 test samples
Train on 60000 samples, validate on 10000 samples
Epoch 1/12
2017-06-26 16:53:56.009383: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.1 instructions, but these are available on your machine and could speed up CPU computations.
2017-06-26 16:53:56.009431: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.2 instructions, but these are available on your machine and could speed up CPU computations.
2017-06-26 16:53:56.848793: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:893] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2017-06-26 16:53:56.849080: I tensorflow/core/common_runtime/gpu/gpu_device.cc:940] Found device 0 with properties:
name: GeForce GT 710
major: 3 minor: 5 memoryClockRate (GHz) 0.954
pciBusID 0000:01:00.0
Total memory: 980.75MiB
Free memory: 970.88MiB
2017-06-26 16:53:56.849126: I tensorflow/core/common_runtime/gpu/gpu_device.cc:961] DMA: 0
2017-06-26 16:53:56.849143: I tensorflow/core/common_runtime/gpu/gpu_device.cc:971] 0: Y
2017-06-26 16:53:56.849180: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GT 710, pci bus id: 0000:01:00.0)
60000/60000 [==============================] - 114s - loss: 0.3256 - acc: 0.9009 - val_loss: 0.0758 - val_acc: 0.9759
Epoch 2/12
60000/60000 [==============================] - 110s - loss: 0.1120 - acc: 0.9670 - val_loss: 0.0527 - val_acc: 0.9831
Epoch 3/12
60000/60000 [==============================] - 110s - loss: 0.0855 - acc: 0.9745 - val_loss: 0.0443 - val_acc: 0.9858
Epoch 4/12
60000/60000 [==============================] - 110s - loss: 0.0719 - acc: 0.9789 - val_loss: 0.0370 - val_acc: 0.9865
Epoch 5/12
60000/60000 [==============================] - 110s - loss: 0.0621 - acc: 0.9817 - val_loss: 0.0362 - val_acc: 0.9879
Epoch 6/12
60000/60000 [==============================] - 110s - loss: 0.0570 - acc: 0.9835 - val_loss: 0.0326 - val_acc: 0.9885
Epoch 7/12
60000/60000 [==============================] - 110s - loss: 0.0499 - acc: 0.9853 - val_loss: 0.0344 - val_acc: 0.9894
Epoch 8/12
60000/60000 [==============================] - 110s - loss: 0.0485 - acc: 0.9855 - val_loss: 0.0298 - val_acc: 0.9911
Epoch 9/12
60000/60000 [==============================] - 110s - loss: 0.0441 - acc: 0.9874 - val_loss: 0.0304 - val_acc: 0.9899
Epoch 10/12
60000/60000 [==============================] - 109s - loss: 0.0416 - acc: 0.9878 - val_loss: 0.0289 - val_acc: 0.9910
Epoch 11/12
60000/60000 [==============================] - 110s - loss: 0.0398 - acc: 0.9882 - val_loss: 0.0295 - val_acc: 0.9899
Epoch 12/12
60000/60000 [==============================] - 109s - loss: 0.0374 - acc: 0.9888 - val_loss: 0.0274 - val_acc: 0.9909
Test loss: 0.0273571792022
Test accuracy: 0.9909
1 loop, best of 1: 22min 31s per loop
덧붙여서 core i7의 multiprocess로 28분으로, GPU를 사용해 22분이므로, 그렇게 변하지 않는 웃음(Geforce 710이므로 어쩔 수 없다)
8. 추가: 기타 오류
2017/12/11에 새로운 GPU를 구입해 설정했으므로 그 때의 메모.
GTX1060을 샀다. 그건 그렇고, 환경은 centos에서 우분투로 바뀌었다.
8.1 드라이버 버전의 엇갈림
17-12-11 20:23:00.970215: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:189] libcuda reported version is: 384.90.0
2017-12-11 20:23:00.970253: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:369] driver version file contents: """NVRM version: NVIDIA UNIX x86_64 Kernel Module 384.98 Thu Oct 26 15:16:01 PDT 2017
GCC version: gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.5)
"""
2017-12-11 20:23:00.970277: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:193] kernel reported version is: 384.98.0
2017-12-11 20:23:00.970288: E tensorflow/stream_executor/cuda/cuda_diagnostics.cc:303] kernel version 384.98.0 does not match DSO version 384.90.0 -- cannot find working devices in this configuration
일단 드라이버를 지우고 6.3과 같은 방법으로
384.98.0
의 드라이버를 넣으면 사라졌다.384.98.0
의 드라이버는 영어 사이트에서는 좀처럼 발견되지 않고, 일본 사이트에서는 곧 발견된 것이 수수께끼다.9. 참고 정보
2017/12/11 현재
tensorflow 출시을 보면 1.5.0에서 cuda9.0에 대응할 예정이다. 현재 (1.4.0)는 지원되지 않습니다.
출시되어 대응했다.
10. 참고 링크
Ubuntu에 Nvidia GPU의 Driver + CUDA를 Install (GTX1080 대응 버전)
Reference
이 문제에 관하여(GPU를 사용하도록 설정 for tensorflow), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kazetof/items/941c3463ac452b496d59텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)