盆暗の学習記録

データサイエンスを中心として,日々学んだことの備忘録としていく予定です。初心者であり独学なので内容には誤りが含まれる可能性が大いにあります。

TensorFlow-GPUのインストールで詰まったときのメモ

久々にTensorFlowを使おうとしたら動かなくて(最近Rでkerasをインストールするときに失敗したから…?),再インストールしようとしたら詰まったので対処法をメモ

対処法というのもおこがましいレベルで,要するに「最新版じゃなく,少し古いバージョンのTensorFlowを入れたら(よくわからんが)動くようになった」という感じです…(汗)

※環境

Windows 10(ver.1803)
NVIDIA GeForce GTX 760
Python 3.6
Anaconda使ってます

今回の問題と対応

問題:GPUが認識されない

私は当初tensorflow-gpu 1.12.0(最新)とcuDNN 7.4(最新)とCUDA9.0で行っていたのですがGPUが認識されませんでした。

対応

いろいろといじっていたのですが,試しにtensorflow-gpuを1.10.0にダウングレードしてみたところ,GPUが認識されるようになりました。

※ダウングレードの方法

pip uninstall -y tensorflow-gpu
pip install tensorflow-gpu==1.10.0

以下備忘録

TensorFlowの環境構築

TensorFlowのインストール方法

公式(https://www.tensorflow.org/install/)にいけば書いてあるんですが,あえて日本語で整理しておきます(自分用に…)

tensorflow

CPU onlyのTensorFlowをインストールする場合は単純で,

  1. Anacondaのインストール(これでpythonとpipが入る)
  2. Anaconda promptでpip install tensorflow を実行する

です

tensorflow-gpu

しかし,TensorFlow-GPUのインストールの場合はもうすこし面倒で,

  1. Anacondaのインストール(これでpythonとpipが入る)
    • 今回はAnacondaで新しい仮想環境を"Create"した
  2. CUDA対応のグラボとドライバを用意する
  3. CUDAをインストールする
  4. cuDNNをインストールする
    • Windowsの場合)ダウンロードしたzipファイルの中身をCUDAのディレクトリに手動コピーします
  5. Anaconda promptでpip install tensorflow-gpuを実行する

という手順になります。

気をつける点

tensorflow-gpuとcuDNNとCUDAのバージョンを対応させる必要があって,公式ページに対応表があります。

https://www.tensorflow.org/install/source_windows#gpu

ただ,今回はこの対応表通りにやっても動かないパターンでした…

GPUが認識されているかを確かめる方法

pythonエディタで実行できるなら以下のコードで。

# tensorflowがGPUも使えるかどうか
from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())

Anaconda promptから確認したいなら

python -c "from tensorflow.python.client import device_lib; print(device_lib.list_local_devices())"

で。

GPUが認識されていない場合,device_type: "CPU"だけしか返ってきません。

[name: "/device:CPU:0"
device_type: "CPU"
memory_limit: 268435456
locality {
}
incarnation: 1714209209365535369
]

GPUが認識されていればdevice_type: "GPU"の文字が返ってきます

[name: "/device:CPU:0"
device_type: "CPU"
memory_limit: 268435456
locality {
}
incarnation: 16550052200207927911
, name: "/device:GPU:0"
device_type: "GPU"
memory_limit: 1481696870
locality {
  bus_id: 1
  links {
  }
}
incarnation: 10180044052055237741
physical_device_desc: "device: 0, name: GeForce GTX 760, pci bus id: 0000:01:00.0, compute capability: 3.0"
]