01. tensprflowインストール

GGE清須電脳倶楽部のHP数が増え、pipを使用しないインストールや手順が難しいセットアップを探し出せなくなってきたのと同時に、以前のインストール方法では出来なくなっているケースが見受けられます。そこで、極めて重要なモジュールや事前調査等手間がかかるモジュール等々トピックも含めピックアップしてインストール方法を纏めていきます。

★ tensorflowのバージョン

最初はtensorflowのインストール方法についてです。
現在存在するTensorFlowのバージョンは下記のサイトで確認すると、下記のように沢山あります(2023/05/19現在). 。急速に増加するのと同時に、古いバージョンは、もはやpipではインストールできなくなっていますが、今回は特にGPUを扱うために使用するtensorflowに関するインストール方法についてです。

    https://www.tensorflow.org/versions

TensorFlow 2
r2.12
r2.11
r2.10
r2.9
r2.8
r2.7
r2.6
r2.5
r2.4
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


★ tensorflow選定

ディープラーニングのバックエンドであるtensorflowはKerasを併用することで、ディープラーニング用計算を効率的に計算することが出来ますが、高速化を図るためにはGPUが欠かせません。

通常GPUはグラフィック用プロセッサであるため、CPU同様特に意識することが無く使用されますが、ディープラーニング用並列処理に利用するためには、NVIDIA製GPUが提供している汎用並列コンピューティングプラットフォームCUDAを経由して行います。このため今回行うインストールは、NVIDIA製GPUを搭載した64ビットパソコン限定で、tensorflowの選定方法とインストールを掲載します。 なお、GPUを搭載しないパソコンは通常通り「pip install tensorflow」にて行えます。

GPU仕様tensorflowをインストールする際はバージョンによって名称が異なります
tensorflow 1.**までは、CPUのみは「tensorflow」、CPU+GPUは「tensorflow-gpu」がインスール名称となり、tensorflow 2.**からは内部で自動判別するようになったため、「tensorflow」と統一されるようになりました。
この時、注意したいのはtensorflow 1.**を一旦「pip install tensorflow」でインストール後GPU仕様でインストールすると両方入ってしまうということです。
2つ入った場合の挙動やtensorflow1.**の次にtensorflow2.**をアップグレードした場合の挙動についてはデータがないのでわかりません。2023/05時点では仮想環境で1つの未使用する方が良いかと思います。

次にtensorflowのバージョンの選択方法についてです。
例えば現在本サイトで進行中の強化学習でOpenAI Gymライブラリを使用しています。しかしGymが使用できるpythonのバージョンはPython 3.7、3.8、3.9、および 3.10と決まっています。これを踏まえて tensorflow - python - cuDNN - CUDA のバージョン整合性表を見てみましょう。 尚、「1.15.*」も非公開で存在します。

バージョン              Python Ver     コンパイラ   ビルドツール    cuDNN   CUDA
tensorflow-2.6.0        3.5~3.8        GCC 7.3.1   Bazel 3.7.2     8.1     11.2
tensorflow-2.5.0        3.5~3.8        GCC 7.3.1   Bazel 3.7.2     8.1     11.2
tensorflow-2.4.0        3.5~3.8        GCC 7.3.1   Bazel 3.1.0     8.0     11.0
tensorflow-2.3.0        3.5~3.8        GCC 7.3.1   Bazel 3.1.0     7.6     10.1
tensorflow-2.2.0        3.5~3.8        GCC 7.3.1   Bazel 2.0.0     7.6     10.1
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

ところが、本サイトがOpenAIGymを学習した当時はpython3.6から動作出来たため「python3.6」を継続していますが、「2023年新たにインストールしたPCでは「python3.7」からしか使用できないことになっていました。具体的にはエラーを発生し動作しません。

次にtensoflowは「2.**」に行った大きな仕様変更に伴い、tensorflow「1.**」で作成されたプログラム資源の多くは「2.**」ではエラーとなりコンバージョンしないと動作しません
そこで現在のディープラーニング用サンプルプログラムを維持していくために、必然的にtensorflow「1.**」最新版バージョン「1.14.0」を使用することが一意的に決定されるというわけです。
tensorflow 1.14.0 が決定されると、次にCUDAバージョンは「10.0」、cuDNNは「7.4」が次々決定されていきます。
なお、CUDAバージョンは「10.0」ですが、本サイトでは併用するモジュールや実装時のワーニングによって「10.1」を選択し、動作実績からも支障なく動作し、CUDA ToolKitの途中リリース版も「10.1」と「10.0」が曖昧になっているので、実績もあるので継続使用していきます。

★ tensorflowのインストール

上記の理由からtensorflowのバージョンは「1.14.0」と決定しましたので、pipを使用したインストールを行います。ちなみに「1.14.0」を忘れてインストールすると2023/05現在エラーになります。

 
pip install tensorflow-gpu==1.14.0

以前よりインストールするためには「pip」を使用しますが、もう一つ「conda」があります。

【「pip」と「conda」の違い】
「pip」はモジュールのソース=プログラムをダウンロードし、そのいくつかはPC内でコンパイルし高速化を図っています。

「conda」は既にコンパイルされた完成品の状態をダウンロードしてきます。


この違いは大きな意味を持っています。
例えばAという外部モジュールをインストールする場合、Aは外部モジュールnumpyを使用していたとします。
そう考えると、「pip」でインストールしたAは現在PC内にあるバージョンのnumpy(1.24.0)を使用してコンパイルされた結果ですが、「conda」は作成された当時のnumpy(1.14.0)をしようしていることになります。

そうすると、「当時は出来ていた」または「当時はインストール完了した」という殆どの事例は、必要とする外部モジュールが新しいバージョンに変更されたことで起きる不具合や現象ということになります。

このためpythonのプログラムは一度動いたプログラム環境は仮想環境として残し、バージョンアップしていく場合は新しく仮想環境を起こして作成した方が良いということになるわけです。

pipでインストールできないバージョンもcondaでは残っていてインストールできるケースがあります。具体的にcondaを使用して仮想環境「py36」を作成し「python=3.6」「anaconda」「tensorflow-gpu」「Keras」を同時にインストールする場合下記に示すように行います。

 
conda create -n py36 python=3.6 anaconda tensorflow-gpu keras

同じ理屈でこの方法だと、先の例でnumpy(1.14.0)で動作していることになりますが、以降無条件でnumpyをアップデートするとnumpy(1.24.0)に変化し不具合となります。
つまり古いバージョンのtensorflowを2023/5にインストールしようとすると、どうやっても矛盾が発生します。

このため、1つはpipとcondaのインストールを混合しない方が良いとされています。

もうひとつは、ベースとなるpythonのみをインストールした仮想環境に対し、面倒でも残りの全てをpipでインストールしていく方が良いということです。

ですから、今回もtensorflowとKerasは「pip」で1つずつインストールしてください。


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