【要約】 TensorFlowは,データフローグラフを特徴とするPythonパッケージであり,CPU,GPU,Google TPU上で動作する.Windows環境でTensorFlow GPU版をインストールし,動作を確認する手順は次の通りである.初めに,最新のNVIDIAドライバとBuild Tools for Visual Studioを準備する.さらに,NVIDIA CUDAツールキット11とPythonのインストールが必要である.既にTensorFlowや関連パッケージがインストールされている場合は,問題を回避するためにアンインストールを行う.その後,pipを用いてTensorFlow(推奨バージョン2.10)をインストールする.インストールの成功は,バージョン番号の表示とGPUの認識によって確認する.さらに,「Hello, TensorFlow!」と表示するサンプルプログラムや,VGG16及びInceptionV3を活用した画像分類のサンプルプログラムも提供しており,試すことが可能である.
【目次】
GPU は,グラフィックス・プロセッシング・ユニット(Graphics Processing Unit)の略である.現在は,3次元のビデオゲーム,さまざまな計算,ディープラーニングの高速な並列処理などに用いられている
NVIDIA CUDA ツールキット は,NVIDIA社が提供する GPU 用のツールキットである.GPU を用いた演算のプログラム作成や動作のための各種機能を備えている.ディープラーニングでも利用されている.
【サイト内の関連ページ】
【関連する外部ページ】
【NVIDIA CUDA ツールキットの動作に必要なもの】
Windows で,NVIDIA グラフィックス・カードの種類を調べたいときは, hwinfo (URL: https://www.hwinfo.com/index.html) を使って調べることができる.
【Windows でインストールするときの注意点】
Windows のユーザ名が日本語のとき,nvcc がうまく動作しないエラーを回避するためである.
ユーザ環境変数 TEMP に「C:\TEMP」を設定するために, コマンドプロンプトで,次のコマンドを実行する.
mkdir C:\TEMP powershell -command "[System.Environment]::SetEnvironmentVariable(\"TEMP\", \"C:\TEMP\", \"User\")"
NVIDIA cuDNN は, NVIDIA CUDA ツールキット上で動作するディープラーニング・ライブラリである. 畳み込みニューラルネットワークや リカレントニューラルネットワークなど,さまざまなディープラーニングで利用されている.
Windows で,NVIDIA cuDNN の利用時に 「Could not locate zlibwapi.dll. Please make sure it is in your library path!」と表示されるときは, ZLIB DLL をインストールすること.
【関連する外部ページ】
【NVIDIA cuDNN の動作に必要なもの】
Windows で,NVIDIA グラフィックス・カードの種類を調べたいときは, hwinfo (URL: https://www.hwinfo.com/index.html) を使って調べることができる.
最新のNVIDIA CUDA ツールキットでは動かないということもあるので注意.
ZLIB DLL は,データの圧縮と展開(解凍)の機能を持ったライブラリ.
ZLIB DLL のインストールを行うため, Windows で,コマンドプロンプトを管理者として実行
コマンドプロンプトを管理者として実行: 別ページ »で説明
次のコマンドを実行.
但し,「v11.8」のところは,実際にインストールされている NVIDIA CUDA ツールキットのバージョンを確認し,読み替えてください.
cd "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\bin" curl -O http://www.winimage.com/zLibDll/zlib123dllx64.zip powershell -command "Expand-Archive -Path zlib123dllx64.zip" copy zlib123dllx64\dll_x64\zlibwapi.dll .
NVIDIA Developer Program の公式ページ: https://developer.nvidia.com/developer-program
NVIDIA ドライバは,NVIDIA 社製の GPU を動作させるのに必要なドライバである.次の NVIDIA の公式サイトからダウンロードできる.ダウンロードのときは,使用しているオペレーティングシステムとGPUに適したものを選ぶこと.
【関連する外部ページ】
NVIDIA ドライバのダウンロードの公式ページ: https://www.nvidia.co.jp/Download/index.aspx?lang=jp
Tensorflowは, データフローグラフ (data flow graph) を特色とするフレームワークの機能を持つ Pythonのパッケージ. データフローグラフでは, 節が数値演算,枝が多次元の配列(テンソル)になっている. Python, C/C++ 言語から利用可能.機械学習のアプリケーションを簡単に作成できるもの. プロセッサ(CPU), GPU, Google TPU で動く. Google 社のディープラーニング研究プロジェクト. 2015年11月に最初のリリース.
TensorFlow のデータセットとして,https://github.com/tensorflow/datasets などで・音声,画像,テキスト,ビデオのデータが多数公開されており,学習に利用できる
TensorFlow GPU 版の動作に必要なもの(2023年4月時点)
Windows で,NVIDIA グラフィックス・カードの種類を調べたいときは, hwinfo (URL: https://www.hwinfo.com/index.html) を使って調べることができる.
TensorFlow の動作に,cudart64_110.dll, cusolver64_11.dll, cudnn64_8.dll が必要であるため,NVIDIA CUDA ツールキット 11 をインストールする.
注意点の1:NVIDIA CUDA ツールキット 11は,NVIDIA cuDNN が対応しているものを選ぶこと. 新しいNVIDIA CUDA ツールキット 11では,NVIDIA cuDNN が対応していない場合がある.詳細は,NVIDIA cuDNN のページ https://developer.nvidia.com/cudnn で確認できる.
注意点の2:NVIDIA CUDA ツールキット は,バージョン12 でなくバージョン11 の最新版を使うこと.バージョン 12 は,2023年 4月に Tensorflow 2.10.1 で試したが動作しなかった.
最新の NVIDIA cuDNNに対応するNVIDIA CUDA ツールキットのバージョンは,
古いバージョンである2.4.4 あるいはそれ以前のバージョン のTensorFlow を使う場合は, 最新の NVIDIA cuDNNを使わないこと. 詳しくは,別ページ »で説明
Build Tools for Visual Studio 2022 (ビルドツール for Visual Studio 2022)は,Windows で動くMicrosoft の C++ コンパイラーである.
(例)cl hello.c
「cl hello.c」でコンパイルしたときは「hello.exe」ファイルができるので確認
【サイト内の関連ページ】
Windows での Build Tools for Visual Studio 2022(ビルドツール for Visual Studio 2022)のインストール: 別ページ »で説明している.
【関連する外部ページ】
Build Tools for Visual Studio 2022 (ビルドツール for Visual Studio 2022)の公式ダウンロードページ: https://visualstudio.microsoft.com/ja/visual-cpp-build-tools/
Windows での Visual Studio Community 2022 のインストール: 別ページ »で説明している.
Visual Studio Community 2022 に, Build Tools for Visual Studio 2022の機能が含まれている.
Build Tools for Visual Studio 2022 のインストールを行う.
【関連する外部ページ】
Git はバージョン管理システムである.
Git の公式ページ: https://git-scm.com/ からダウンロードしてインストール:
このとき,ライセンス条項の確認を行う.設定は既定(デフォルト)のままでも問題はない.
【サイト内の関連ページ】
【関連する外部ページ】
Windows での NVIDIA ドライバ,NVIDIA CUDA ツールキット 11.8,NVIDIA cuDNN v8.8 のインストールと動作確認: 別ページ »で説明している.
2022年12月時点では, Python 3.10 を使う.
Python 3.10 の根拠:
古いバージョンの TensorFlow,PyTorch を使う予定の場合.
次により, Python, TensorFlow, PyTorch のバージョンの組み合わせを確認し,それにあったバージョンの Python をインストールする必要がある.
【Python のインストールでの注意点】
Windows で,ユーザ名が日本語のとき,あとでトラブルが発生するかもしれない. トラブルの回避のため, Python をシステム管理者の領域にインストール(パソコンの全ユーザの共有領域)する.
TensorFlow を使う予定がある場合は,https://pypi.org/project/tensorflow-gpu/#filesで,必要な Python のバージョンを確認しておく. 2022/9 時点では,TensorFlow バージョン 2.10 が動くのは,Python 3.10 または Python 3.9 または Python 3.8 または Python 3.7 (https://pypi.org/project/tensorflow/2.10/#files)
【インストール手順の詳細(別ページ) 】
Windows での Python のインストール: 別ページ »で説明している.
【Python の公式ページ】
【pip の利用】
python -m pip install -U pip setuptools jupyterlab jupyter jupyter-console jupytext PyQt5 nteract_on_jupyter spyder
【他の Python の開発環境】
設定の要点
システム環境変数 TF_FORCE_GPU_ALLOW_GROWTH の設定: true
コマンドプロンプトを管理者として実行: 別ページ »で説明
python --version
※ 「 python -m pip install ...」は,Python パッケージをインストールするためのコマンド.
python -m pip install -U pip setuptools
トラブルの可能性を減らすために,関係のパッケージのアンインストールを行っておく.
python -m pip uninstall -y tensorflow tensorflow-cpu tensorflow-gpu tensorflow-intel tensorflow-text tensorflow-estimator tf-models-official tf_slim tensorflow_datasets tensorflow-hub keras keras-tuner keras-visualizer
pip を用いてインストール
python -m pip install -U tensorflow==2.10.1 tf_slim tensorflow_datasets tensorflow-hub keras keras-tuner keras-visualizer python -m pip install git+https://github.com/tensorflow/docs python -m pip install git+https://github.com/tensorflow/examples.git python -m pip install git+https://www.github.com/keras-team/keras-contrib.git
コマンドプロンプトを管理者として実行: 別ページ »で説明
次のコマンドを実行
powershell -command "[System.Environment]::SetEnvironmentVariable(\"TF_FORCE_GPU_ALLOW_GROWTH\", \"true\", \"Machine\")"
TensorFlow がインストールできたかを確認したい.
バージョン番号が表示されれば OK.下の図とは違うバージョンが表示されることがある.
python -c "import tensorflow as tf; print( tf.__version__ )"
次のようなメッセージが出た場合には,メッセージに従い, NVIDIA ドライバ,NVIDIA CUDA ツールキット, NVIDIA cuDNN のインストールを行う. 但し,GPU がない場合には,このメッセージを無視する.
pip show tensorflow
TensorFlow が GPU を認識できているかの確認は,端末で,次を実行して行う.
python -c "from tensorflow.python.client import device_lib; print(device_lib.list_local_devices())"
実行結果の中に,次のように「device_type: "GPU"」があれば,GPUが認識できている.エラーメッセージが出ていないことを確認しておくこと.
ここで,GPU があるのに,TensorFlow から認識されていないかもしれない. TensorFlow GPU 版が指定するバージョンの NVIDIA CUDA ツールキット,NVIDIA cuDNN がインストールされていないことが原因かも知れない.
TensorFlow 2.5 の GPU 版での,cuDNN のバージョンは 8.2,TensorFlow 2.4 の GPU 版での,cuDNN のバージョンは 8.0.5,TensorFlow 2.3, 2.2, 2.1 の GPU 版での,cuDNN のバージョンは 7.6.そして,TensorFlow 1.13 以上 TensorFlow 2.0 までの GPU 版での,cuDNN のバージョンは7.4 が良いようである.
Windows での NVIDIA ドライバ,NVIDIA CUDA ツールキット 11.8,NVIDIA cuDNN v8.8 のインストールと動作確認: 別ページ »で説明
Python プログラムを実行する
結果として 「b'Hello, TensorFlow!'」のように表示されるので確認する.
import tensorflow as tf hello = tf.constant('Hello, TensorFlow!') print(hello) exit()
結果として 「42」のように表示されるので確認する.
「tf.add(a, b)」と「a + b 」は,同じ結果になる
import tensorflow as tf a = tf.constant(10) b = tf.constant(32) print( tf.add(a, b) ) print( a + b ) exit()
結果として 「[[ 12.]]」のように表示されるので確認する.
import tensorflow as tf matrix1 = tf.constant([[3., 3.]]) matrix2 = tf.constant([[2.],[2.]]) print( tf.matmul(matrix1, matrix2) ) exit()
python -m pip install -U h5py pillow
10.png のようなファイル名で保存しておく
cd <画像を置いたディレクトリ> python
次のプログラムをコピー&ペースト
Kerasのサイトで公開されているものを少し書き換えて使用。
「'10.png'」のところは,実際に使用する画像ファイル名に書き換えること.
import h5py from tensorflow.keras.preprocessing import image from tensorflow.keras.applications.vgg16 import VGG16 from tensorflow.keras.applications.vgg16 import preprocess_input import numpy as np m = VGG16(weights='imagenet', include_top=False) img_path = '10.png' img = image.load_img(img_path, target_size=(299, 299)) x = image.img_to_array(img) x = np.expand_dims(x, axis=0) x = preprocess_input(x) features = m.predict(x) print(features)
python の終了は「exit()」
次のプログラムをコピー&ペースト
Kerasのサイトで公開されているものを少し書き換えて使用。
「'10.png'」のところは,実際に使用する画像ファイル名に書き換えること.
import h5py from tensorflow.keras.preprocessing import image from tensorflow.keras.applications.inception_v3 import preprocess_input, decode_predictions, InceptionV3 import numpy as np m = InceptionV3(weights='imagenet') img_path = '10.png' img = image.load_img(img_path, target_size=(299, 299)) x = image.img_to_array(img) x = np.expand_dims(x, axis=0) x = preprocess_input(x) preds = m.predict(x) print('Predicted:') for p in decode_predictions(preds, top=5)[0]: print("Score {}, Label {}".format(p[2], p[1]))
python の終了は「exit()」