15
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Python】Anaconda+TensorFlow 2.3.0 (GPU) の環境構築

Last updated at Posted at 2021-03-01

はじめに

 最近、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をインストールしました。

15
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?