2021/01/29 Updated by
2020/03/03 Updated by

Anaconda

TensorFlow2 を GPU で実行する環境 (Windows)

Deep Learning with TensorFlow 2 and Keras (second edition) を実行するためのpython環境


[Up] Japanese English

Deep Learning with TensorFlow 2 and Keras (second edition) を実行するためのpython環境。

前提条件


python + GPU環境を生成する

  1. Anaconda で python 3.X の環境がインストールされているものとする。(X ≥ 7)
  2. conda promptを起動して、condaが生成したウィンドウの中で以下の作業を行う。
  3. condaを最新版にしておく。
  4.     (base) C:\Users\nitta>  conda update -n base conda
        (base) C:\Users\nitta>  conda update --all
    
  5. 既に用意してある python 環境 gpu-deep-tf2 をクローンして、新しい python 環境 gpu-dl-book12 を作成する。tensorflow や pytorch との親和性から python 3.6 を使うことにする。
  6.     (base) C:\Users\nitta>  conda create --name gpu-dl-book12 --clone gpu-deep-tf2 
    
  7. 作成したpython 環境に切り換える
  8.     (base) C:\Users\nitta>  conda activate gpu-dl-book12  
    
  9. 本のp.xxi に記述されている必要パッケージは以下の通り。
  10. これらは gpu-deep-tf2 に元々インストールされているようだ。
  11. gpu-dl-book12 に新たに追加インストールするパッケージは以下の通り。
  12.     p.43 の例で必要
        (gpu-dl-book12) C:\Users\nitta>  pip install tensorflow_datasets  
    
        p.65 の例で必要
        (gpu-dl-book12) C:\Users\nitta>  pip install pydot  
        (gpu-dl-book12) C:\Users\nitta>  pip install pydotplus  
        (gpu-dl-book12) C:\Users\nitta>  pip install graphviz  
        もしかしたら下に述べる graphviz の実行ファイルのインストールも必要かもしれない(試行錯誤したので)。
    
      p.131 の例で必要 (skimage パッケージを使うので scikit-image パッケージをインストールする)
        (gpu-dl-book12) C:\Users\nitta>  pip install scikit-image  
    
      p.134 でcv2が必要
        (gpu-dl-book12) C:\Users\nitta>  pip install opencv-python  
    
      p.158 で tensorflow-hub が必要
        (gpu-dl-book12) C:\Users\nitta>  pip install tensorflow_hub  
    
  13. graphvizパッケージに関する注意
  14. シェルの対話環境で dot コマンドを使うためには graphvizの実行ファイルを環境Pathに含める必要がある。$larr; この本の実行環境で必須かどうかは不明。上記の pydotplus のインストールが必要なことがわかる前に、やったので記述しておく。

        (gpu-dl-book12) C:\Users\nitta>  conda install graphviz  
    
      [Windows]
        1. Graphviz の公式ページ https://graphviz.org/ から Windows: Stable Windows install packages をダウンロードする。
        2. 現時点(2021/Jan/16)では graphviz-install-2.44.1-win64.exe が最新のようだ。
        3. 適切なパス(自分の環境では D:\sys\Graphviz)にインストールする。
        4. 環境変数 Path に D:\sys\Graphviz\bin を追加する。
      [MacOS]
        $ brew install graphviz
      [Linux]
        $ sudo apt install graphviz
    
  15. [自分へのメモ 2021/01/28]GeForce RTX2070を積んだNotePC でもGPUが使われていないことが判明
    1. "nvcc -V" の出力にphysical_device_desc が表示されないので、GPU が使われていないことが確認できる。
        (base) > conda activate gpu-dl-book12
        (gpu-dl-book12) > python
        > from tensorflow.python.client import device_lib
        > device_lib.list_local_devices()
        device_type: "CPU"
        memory_limit: 268435456
        locality {
        }
        incarnation: 7877808199817469808
        ]
      
    2. tensorflow 2 のバージョンを調べる
    3.   (gpu-dl-book12) > python
        > import tensorflow as tf
        > print(tf.__version__)
        2.4.0
      
      TensorFlow 2.4.0 がインストールされているのが原因だ。2.3 までは CUDA10.1で大丈夫だったのに。
      • TensorFlow 2.4には nVidia CUDA 11 が推奨 (11.1, 11.2 では動かない) ← 個人の解説ページに記述されていた。
      • TensorFlow 2.3, 2.2 GPU版には nVidia CUDA 10.1 が推奨
  16. [自分メモへの回答 2021/01/29] tensorflow2.4.0 がインストールされていた。2.4.0では cuda11.0 が必要(11.1, 11.2 では駄目)。現在インストールされているのは cuda 10.1なので tensorflow-gpu を2.3.0 にバージョンダウンすることで対応する。
  17.   (gpu-dl-book12) > pip install tensorflow==2.3.0
      numpy と tensorflow-estimator のパッケージとincompatibleというエラーが出力された。
      一旦この仮想環境を消して作成しなおすことにする。
    
      (gpu-dl-book12) > pip install tensorflow-gpu==2.3.0
    
    GPUが正しく使われるようになった。
      (base) > conda activate gpu-dl-book12
      (gpu-dl-book12) > python
      > from tensorflow.python.client import device_lib
      > device_lib.list_local_devices()
      [name: "/device:CPU:0"
      device_type: "CPU"
      memory_limit: 268435456
      locality {
      }
      incarnation: 11129975225709982190
      , name: "/device:XLA_CPU:0"
      device_type: "XLA_CPU"
      memory_limit: 17179869184
      locality {
      }
      incarnation: 452061128191745231
      physical_device_desc: "device: XLA_CPU device"
      , name: "/device:GPU:0"
      device_type: "GPU"
      memory_limit: 6961726752
      locality {
        bus_id: 1
        links {
        }
      }
      incarnation: 7528734602206716308
      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: 10215822717422891676
      physical_device_desc: "device: XLA_GPU device"
      ]