01.02a tensorflow GPU仕様

【現 象】
現在GGEが使用している環境は下記で

    python             : Python 3.7.6 (default, Jan 8 2020, 20:23:39)
    Keras              : 2.3.1
    tensorflow-gpu  : 1.15.0


使用可能なTensorFlowのバージョンは下記のサイトで確認すると、

    https://www.tensorflow.org/versions


TensorFlow 2
r2.3
r2.2
r2.1
r2.0

TensorFlow 1
r1.15
r1.14
r1.13
r1.12
r1.11
r1.10
r1.9
r1.8
r1.7
r1.6
r1.5
r1.4
r1.3
r1.2
r1.1
r1.0

GPUとCUDAとの対応は下記のようになっています。
GPU
バージョン              Python Ver      コンパイラ  ビルドツール    cuDNN   CUDA
tensorflow-2.1.0        2.7、3.5~3.7   GCC 7.3.1   Bazel 0.27.1    7.6     10.1
tensorflow-2.0.0        2.7、3.3~3.7   GCC 7.3.1   Bazel 0.26.1    7.4     10.0
tensorflow-gpu-1.14.0   2.7、3.3~3.7   GCC 4.8     Bazel 0.24.1    7.4     10.0
tensorflow-gpu-1.13.1   2.7、3.3~3.7   GCC 4.8     Bazel 0.19.2    7.4     10.0
tensorflow-gpu-1.12.0   2.7、3.3-3.6    GCC 4.8     Bazel 0.15.0    7       9
tensorflow-gpu-1.11.0   2.7、3.3-3.6    GCC 4.8     Bazel 0.15.0    7       9
tensorflow-gpu-1.10.0   2.7、3.3-3.6    GCC 4.8     Bazel 0.15.0    7       9
tensorflow-gpu-1.9.0    2.7、3.3-3.6    GCC 4.8     Bazel 0.11.0    7       9
tensorflow-gpu-1.8.0    2.7、3.3-3.6    GCC 4.8     Bazel 0.10.0    7       9
tensorflow-gpu-1.7.0    2.7、3.3-3.6    GCC 4.8     Bazel 0.9.0     7       9
tensorflow-gpu-1.6.0    2.7、3.3-3.6    GCC 4.8     Bazel 0.9.0     7       9
tensorflow-gpu-1.5.0    2.7、3.3-3.6    GCC 4.8     Bazel 0.8.0     7       9
tensorflow-gpu-1.4.0    2.7、3.3-3.6    GCC 4.8     Bazel 0.5.4     6       8
tensorflow-gpu-1.3.0    2.7、3.3-3.6    GCC 4.8     Bazel 0.4.5     6       8
tensorflow-gpu-1.2.0    2.7、3.3-3.6    GCC 4.8     Bazel 0.4.5     5.1     8
tensorflow-gpu-1.1.0    2.7、3.3-3.6    GCC 4.8     Bazel 0.4.2     5.1     8
tensorflow-gpu-1.0.0    2.7、3.3-3.6    GCC 4.8     Bazel 0.4.2     5.1     8
公式ページでも同じように記載されていますが、tensorflow-gpuがV1.14.0で終わっています。

tensorflow 2.xが最新なのに

    どうして最新のtensorflow V2.xがインストールされないのでしょう?



但し、現在勉強しているサンプルプログラムには都合がよい話で、tensorflow V2.xから使用概念が変わったので実際に使うという話ではありません


【原 因】

TensorFlow 2.0 ガイド:GPUを使用するに、次のような解説がありました。
https://tensorflow.classcat.com/2019/03/22/tf20-alpha-guide-using-gpu/


サポートされるデバイス

TensorFlow は CPU と GPU を含む、様々なタイプのデバイス上で計算を実行することをサポートします。それらは文字列で表わされます、例えば :

    ・ “/cpu:0”: 貴方のマシンの CPU。
    ・ “/device:GPU:0”: TensorFlow に見える、貴方のマシンの最初の GPU
    ・ “/device:GPU:1”: TensorFlow に見える、貴方のマシンの 2 番目の GPU, etc.

TensorFlow 演算が CPU と GPU 実装の両者を持つ場合、演算がデバイスに割り当てられるときデフォルトでは GPU デバイスに優先権が与えられるでしょう。例えば、matmul は CPU と GPU カーネルの両者を持ちます。デバイス cpu:0 と gpu:0 を持つシステム上では、貴方がそれを他のデバイス上で実行することを明示的に要請しない限りは matmul を実行するために gpu:0 が選択されます。』



つまり、最新版V2.xはGPU・CPU両方可能ということになります。

では、なぜtensorflow2.2.0にならなかったのでしょう?

どうやら原因は、インストール時にあるようです。

いつもは、下記コマンドまたは、その後ろにバージョン番号付きでインストールしています。

pip install tensorflow-gpu




【対 策】

原因は「tensorflow-gpu」と指定しているから、ネットでGPU仕様にするためには上記でインストールするよう指示されていますが、これは過去のだったのです。

下記のようにpytonの最新版のみでOKのようです。

pip install tensorflow


【結 果】

ネットに掲載されている多くのサンプルプログラムは、ちょっと前のものが多いので「tensorflow 2.x」から考え方が大幅に異なりエラーとなるケースがほとんどです。

このため、tensorflow-gpu v1.xxのまま使用する方がよさそうです。

「tensorflow-gpu v1.xx」をインストールするにしても、インストールに参考になるホームページが作成されたのが古いと「最新」が結構前の状態になるケースがよくあります。

このような裏技として、最新版をインストールしたい場合は下記のようにするとよいと思われます。ちなみに「「tensorflow-gpu v1.xx」の最新は2020/10現在「v1.15.0」です。

pip install tensorflow-gpu < 2.0.0


【参考文献】


≪清須電脳倶楽部メインページへ戻る場合はここをクリックしてください≫
Copyright(c)2018 GGE Kiyosu Cyber Club Allrights Reserved
inserted by FC2 system