はじめに
最近、Pythonでディープラーニングの勉強ができる環境を構築したので、備忘録としてまとめます。PC環境は以下の通りです。
・OS: Windows 10 Pro
・CPU: intel Core i9-9900K
・GPU: Geforce RTX2070
・メモリ: 32GB
特に、TensorFlowでGPUが認識されずに苦労しました。Anacondaのバージョンは4.9.2、Pythonのバージョンは3.8.5です。Anacondaにこだわる理由は、MATLABユーザの私にとって、Pythonエディタの「Spyder」が使いやすいからです。Spyderをpipでインストールして構築するのは初心者の私には無理でした。
記事の内容
Anaconda環境で、TesonrFlowをインストールする。
TensorFlowとは
TensorFlowは、Googleが公開している機械学習ライブラリです。2015年に登場したそうです。TesonrFlowはGPUを用いて高速な計算を行うことができます。GPUを使って計算ができるディープラーニングフレームワークは他にもChainerやPyTorchなどがあります。
環境構築の際の注意点
Python + TensorFlow + GPU の環境を構築する際、バージョンの対応を合わせないといけません。対応表は下記のリンクを参考にしてください。
・https://www.tensorflow.org/install/source?hl=ja#tested_build_configurations
特に、TensorFlowでGPUを認識させたい場合、cuDNNとCUDAのバージョンに注意が必要です。
本記事ではTensorFlow 2.3.0をインストールします。そのため、CUDA、cuDNNのバージョンは
・CUDA: 10.1
・cuDNN: 7.6
となります。
CUDA 10.1のインストール
映像を出力するためには、GPUという部品が必要です。パソコンには必ずついてます。ノートパソコンのCPUはたいてい、CPUの中にGPUが組み込まれています(内臓グラフィック)。しかし、もっと高性能なGPUを使いたい!という方は、外付けGPUを使うわけです。それがいわゆるグラボです。
そのグラフィックス担当のGPUを、グラフィックス以外に使えるようにしてやろうというのがCUDAです。CUDAは下記リンクからダウンロードできます。CUDA Toolkit 10.1 update2をインストールします。
・https://developer.nvidia.com/cuda-toolkit-archive
Select Target Platformでは、
・Operating System: Windows
・Architecture: x86_64
・Version: 10
・Installer Type: exe (local)
を選択します。exeを立ち上げて、CUDAをインストールできます。特別な設定はなく、インストーラーに従ってインストールすれば大丈夫だと思います。
cuDNNのインストール
cuDNNはディープラーニング用のGPU高速処理ライブラリです。下記リンクからダウンロード可能です。ダウンロードには、アカウントを作成する必要があります。
・https://developer.nvidia.com/rdp/cudnn-archive
ダウンロードしたzipファイルは、
・C:\tools\cuda\bin
に展開します。
パスの設定
システム環境変数のPathに、次のディレクトリを追加します。
・C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin
・C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\extras\CUPTI\lib64
・C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\include
・C:\tools\cuda\bin
TensorFlowのインストール
TensorFlowはAnaconda promptを開いて以下のコマンドでインストールできます。
pip install tensorflow-gpu==2.3.0
なぜ conda install を使わないのか
実は最初、conda install tensorflowでTensorFlowをインストールしてたのですが、GPUを認識せず苦労しました。conda install tensorflow では、TensorFlow 2.3.0がインストールされます。しかし、これがまずいらしい。
参考記事
1. TensorFlow2.1でCuda10.1なのにGPUが認識されない問題の解決法
2. Why is Tensorflow not recognizing my GPU after conda install?
参考記事1によると、tensorflowのビルドはeigen, gpu, mklの3種類が存在していて、これが適切でないとGPUを認識してくれないそうです。そこで、Anaconda.org にとんだところ、tensorflow2.3.0にはgpuのビルドがないっぽい。ということで、condaではなくpipからインストールすることにしたのでした。
動作確認
Spyderを開き、下記のコードを実行します。
from tensorflow.python.client import device_lib
device_lib.list_local_devices()
出力はこんな感じ
Out[38]:
[name: "/device:CPU:0"
device_type: "CPU"
memory_limit: 268435456
locality {
}
incarnation: 2745453239044564304,
name: "/device:XLA_CPU:0"
device_type: "XLA_CPU"
memory_limit: 17179869184
locality {
}
incarnation: 13175026954206619824
physical_device_desc: "device: XLA_CPU device",
name: "/device:GPU:0"
device_type: "GPU"
memory_limit: 6531337689
locality {
bus_id: 1
links {
}
}
incarnation: 18329998037222519679
physical_device_desc: "device: 0, name: GeForce RTX 2070, pci bus id: 0000:01:00.0, compute capability: 7.5",
name: "/device:XLA_GPU:0"
device_type: "XLA_GPU"
memory_limit: 17179869184
locality {
}
incarnation: 3378513503248220410
physical_device_desc: "device: XLA_GPU device"]
device_type: "GPU" との記載があるので、GPUがちゃんと認識されているようです。XLAはAccelerated Linear Algebraの略で、線形代数の演算に特化したコンパイラだそうです(参考:TensorFlowでGPUが使えることの確認)。
おわり
pipを使ってTensorFlowをインストールしました。