【エラー】tensorflow.python.framework.errors_impl.InternalError: Failed to create session.

エラー発生

$ python test.py
Using TensorFlow backend.

2018-08-27 12:36:30.830945: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA
2018-08-27 12:36:30.929279: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:897] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
2018-08-27 12:36:30.929734: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1405] Found device 0 with properties: 
name: Tesla K80 major: 3 minor: 7 memoryClockRate(GHz): 0.8235
pciBusID: 0000:00:1e.0
totalMemory: 11.17GiB freeMemory: 11.10GiB
2018-08-27 12:36:30.929767: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1484] Adding visible gpu devices: 0
2018-08-27 12:36:30.930228: E tensorflow/core/common_runtime/direct_session.cc:158] Internal: cudaGetDevice() failed. Status: CUDA driver version is insufficient for CUDA runtime version
Traceback (most recent call last):
  File "create_mask.py", line 24, in <module>
    model_dlv3 = model.Deeplabv3()
    :
    :
    :
tensorflow.python.framework.errors_impl.InternalError: Failed to create session.

解決方法(今回はこれでは治らない)

調べてみると2つの解決方法がある。が、なおらない…。

その1

以下をプログラムに埋め込む。

import os
os.environ["CUDA_VISIBLE_DEVICES"] = "1"

その2

実行時に以下のようにする。

$ CUDA_VISIBLE_DEVICES=1 python **.py

原因

どうやらtensorflowとCUDAのバージョンによって起こるエラーのよう。

$ pip list
Package             Version  
------------------- ---------
  :
tensorflow          1.10.0   
  :

$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Fri_Sep__1_21:08:03_CDT_2017
Cuda compilation tools, release 9.0, V9.0.176

tensorflowは1.10.0、CUDAは9.0であることが確認出来た。

解決方法

今回はCUDAをバージョンアップすることでこの問題を解決する。

CUDA 9.2をインストール

公式サイトからダウンロードリンクを取得しあとは、その下にかかれているとおりに実行していく。 f:id:saneeeatsu:20180827134530p:plain

$ wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_9.2.148-1_amd64.deb
$ sudo dpkg -i cuda-repo-ubuntu1604_9.2.148-1_amd64.deb
$ sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
$ sudo apt-get update
$ sudo apt-get install cuda

パスを設定

$ echo -e "\n# CUDA and cuDNN paths"  >> ~/.bashrc
$ echo 'export PATH=/usr/local/cuda-9.2/bin:${PATH}' >> ~/.bashrc
$ echo 'export LD_LIBRARY_PATH=/usr/local/cuda-9.2/lib64:${LD_LIBRARY_PATH}' >> ~/.bashrc
$ source ~/.bashrc

参考