ソースから TensorFlow の pip パッケージをビルドし、それを Windows にインストールします。
Windows でのセットアップ
Windows での開発環境を構成するために、以下のビルドツールをインストールします。
Python と TensorFlow パッケージの依存関係をインストールする
Windows 用の Python 3.5.x または Python 3.6.x の 64 ビット版をインストールします。
オプション機能として pip を選択し、%PATH%
環境変数に追加します。
TensorFlow の pip パッケージの依存関係をインストールします。
pip3 install six numpy wheel
pip3 install keras_applications==1.0.6 --no-deps
pip3 install keras_preprocessing==1.0.5 --no-deps
依存関係のリストは、REQUIRED_PACKAGES
内の setup.py
ファイルにあります。
Bazel をインストールする
TensorFlow のコンパイルに使用するビルドツールである Bazel をインストールします。Bazel のバージョンについては、Windows 用のテスト済みのビルド構成をご覧ください。 Bazel で C++ をビルドするように構成します。
Bazel 実行可能ファイルの場所を %PATH%
環境変数に追加します。
MSYS2 をインストールする
TensorFlow のビルドに必要な bin ツール用に MSYS2 をインストールします。MSYS2 が C:\msys64
にインストールされている場合は、C:\msys64\usr\bin
を %PATH%
環境変数に追加します。次に、cmd.exe
を使用して、以下のコマンドを実行します。
pacman -S git patch unzip
Visual C++ Build Tools 2019 をインストールする
Visual C++ Build Tools 2019 をインストールします。これは Visual Studio 2019 に付属していますが、別々にインストールすることもできます。
- Visual Studio のダウンロード サイトに移動します。
- [再頒布可能パッケージおよびビルドツール] を選択します。
- 以下をダウンロードしてインストールします。
- Microsoft Visual C++ 2019 再頒布可能ファイル
- Microsoft Build Tools 2019
GPU サポートをインストールする(省略可)
Windows 用の GPU サポートに関するガイドを確認して、GPU で TensorFlow を実行するのに必要なドライバや追加のソフトウェアをインストールします。
TensorFlow のソースコードをダウンロードする
Git を使用して TensorFlow リポジトリのクローンを作成します(git
は MSYS2 でインストールされます)。
git clone https://github.com/tensorflow/tensorflow.git
cd tensorflow
リポジトリのデフォルトは master
開発ブランチです。リリース ブランチをチェックアウトしてビルドすることもできます。
git checkout branch_name # r1.9, r1.10, etc.
ビルドを構成する
TensorFlow のソースツリーのルートで、次のコマンドを実行して、システムビルドを構成します。
python ./configure.py
このスクリプトを実行すると、TensorFlow の依存関係の場所を尋ねるプロンプトが表示され、追加のビルド構成オプション(たとえば、コンパイラ フラグ)についても問い合わせがあります。python ./configure.py
(セッションによって異なる場合があります)の実行例を以下に示します。
構成オプション
GPU サポートを使用する場合は、CUDA と cuDNN のバージョンを指定します。CUDA や cuDNN の複数のバージョンがシステムにインストールされている場合は、デフォルトを使用するのではなく、バージョンを明示的に設定します。./configure.py
はシステムの CUDA ライブラリへのシンボリック リンクを作成します。そのため、CUDA ライブラリパスを変更する場合は、ビルドする前にこの構成手順をもう一度行う必要があります。
pip パッケージをビルドする
TensorFlow 2.x
tensorflow:master リポジトリがデフォルトで 2.x をビルドするようにアップデートされました。
Bazel をインストールし、bazel build
を使用して TensorFlow パッケージを作成します。
bazel build //tensorflow/tools/pip_package:build_pip_package
TensorFlow 1.x
マスターから TensorFlow の 1.x バージョンをビルドするには、bazel build --config=v1
を使用して TensorFlow 1.x パッケージを作成します。
bazel build --config=v1 //tensorflow/tools/pip_package:build_pip_package
CPU のみ
CPU のみに対応する TensorFlow パッケージのビルダーを、bazel
を使用して作成します。
bazel build --config=opt //tensorflow/tools/pip_package:build_pip_package
GPU サポート
GPU に対応する TensorFlow パッケージのビルダーを作成するには、以下を使用します。
bazel build --config=opt --config=cuda --define=no_tensorflow_py_deps=true //tensorflow/tools/pip_package:build_pip_package
Bazel のビルド オプション
ビルドの際にこのオプションを使用して、パッケージの作成時の問題(tensorflow:issue#22390)を回避します。
--define=no_tensorflow_py_deps=true
ビルド オプションについては、Bazel コマンドライン リファレンスをご覧ください。
ソースから TensorFlow をビルドすると、大量の RAM が使用される可能性があります。メモリの制約があるシステムでは、Bazel の RAM 使用量を --local_ram_resources=2048
で制限してください。
GPU サポートを含めてビルドする場合は、--copt=-nvcc_options=disable-warnings
を追加して、nvcc 警告メッセージを非表示にします。
パッケージをビルドする
bazel build
コマンドを実行すると build_pip_package
という名前の実行可能ファイルが作成されます。これは pip
パッケージをビルドするプログラムです。たとえば、次のように実行すると、.whl
パッケージが C:/tmp/tensorflow_pkg
ディレクトリ内にビルドされます。
bazel-bin\tensorflow\tools\pip_package\build_pip_package C:/tmp/tensorflow_pkg
CUDA 構成と非 CUDA 構成の両方を同じソースツリー下にビルドすることも可能ですが、同じソースツリー内のこの 2 つの構成間を切り替える際には、bazel clean
を実行することをおすすめします。
パッケージをインストールする
生成される .whl
ファイルのファイル名は TensorFlow のバージョンとご利用のプラットフォームによって異なります。pip3 install
を使ってパッケージをインストールするには、たとえば次のように指定します。
pip3 install C:/tmp/tensorflow_pkg/tensorflow-version-cp36-cp36m-win_amd64.whl
MSYS シェルを使用してビルドする
TensorFlow は MSYS シェルを使用してビルドすることもできます。以下に挙げた変更を行った後、Windows のネイティブ コマンドライン(cmd.exe
)での上記の手順を行います。
MSYS のパス変換を無効にする
MSYS は Unix のパスと見なされる引数を Windows のパスに変換しますが、これは bazel
ではうまく機能しません(//path/to:bin
というラベルはスラッシュで始まるため、Unix の絶対パスと見なされてしまいます)。
export MSYS_NO_PATHCONV=1
export MSYS2_ARG_CONV_EXCL="*"
PATH を設定する
Bazel と Python の各インストール先ディレクトリを $PATH
環境変数に追加します。Bazel が C:\tools\bazel.exe
、Python が C:\Python36\python.exe
にインストールされている場合は、PATH
を次のように設定します。
# Use Unix-style with ':' as separatorexport PATH="/c/tools:$PATH"
export PATH="/c/Python36:$PATH"
GPU サポートの場合は、CUDA と cuDNN の各 bin ディレクトリを $PATH
に追加します。
export PATH="/c/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.0/bin:$PATH"
export PATH="/c/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.0/extras/CUPTI/libx64:$PATH"
export PATH="/c/tools/cuda/bin:$PATH"
テスト済みのビルド構成
CPU
バージョン | Python バージョン | コンパイラ | ビルドツール |
---|---|---|---|
tensorflow-2.4.0 | 3.6~3.8 | MSVC 2019 | Bazel 3.1.0 |
tensorflow-2.3.0 | 3.5~3.8 | MSVC 2019 | Bazel 3.1.0 |
tensorflow-2.2.0 | 3.5~3.8 | MSVC 2019 | Bazel 2.0.0 |
tensorflow-2.1.0 | 3.5~3.7 | MSVC 2019 | Bazel 0.27.1-0.29.1 |
tensorflow-2.0.0 | 3.5~3.7 | MSVC 2017 | Bazel 0.26.1 |
tensorflow-1.15.0 | 3.5~3.7 | MSVC 2017 | Bazel 0.26.1 |
tensorflow-1.14.0 | 3.5~3.7 | MSVC 2017 | Bazel 0.24.1-0.25.2 |
tensorflow-1.13.0 | 3.5~3.7 | MSVC 2015 Update 3 | Bazel 0.19.0-0.21.0 |
tensorflow-1.12.0 | 3.5~3.6 | MSVC 2015 Update 3 | Bazel 0.15.0 |
tensorflow-1.11.0 | 3.5~3.6 | MSVC 2015 Update 3 | Bazel 0.15.0 |
tensorflow-1.10.0 | 3.5~3.6 | MSVC 2015 Update 3 | Cmake v3.6.3 |
tensorflow-1.9.0 | 3.5~3.6 | MSVC 2015 Update 3 | Cmake v3.6.3 |
tensorflow-1.8.0 | 3.5~3.6 | MSVC 2015 Update 3 | Cmake v3.6.3 |
tensorflow-1.7.0 | 3.5~3.6 | MSVC 2015 Update 3 | Cmake v3.6.3 |
tensorflow-1.6.0 | 3.5~3.6 | MSVC 2015 Update 3 | Cmake v3.6.3 |
tensorflow-1.5.0 | 3.5~3.6 | MSVC 2015 Update 3 | Cmake v3.6.3 |
tensorflow-1.4.0 | 3.5~3.6 | MSVC 2015 Update 3 | Cmake v3.6.3 |
tensorflow-1.3.0 | 3.5~3.6 | MSVC 2015 Update 3 | Cmake v3.6.3 |
tensorflow-1.2.0 | 3.5~3.6 | MSVC 2015 Update 3 | Cmake v3.6.3 |
tensorflow-1.1.0 | 3.5 | MSVC 2015 Update 3 | Cmake v3.6.3 |
tensorflow-1.0.0 | 3.5 | MSVC 2015 Update 3 | Cmake v3.6.3 |
GPU
バージョン | Python バージョン | コンパイラ | ビルドツール | cuDNN | CUDA |
---|---|---|---|---|---|
tensorflow_gpu-2.4.0 | 3.6~3.8 | MSVC 2019 | Bazel 3.1.0 | 8.0 | 11.0 |
tensorflow_gpu-2.3.0 | 3.5~3.8 | MSVC 2019 | Bazel 3.1.0 | 7.6 | 10.1 |
tensorflow_gpu-2.2.0 | 3.5~3.8 | MSVC 2019 | Bazel 2.0.0 | 7.6 | 10.1 |
tensorflow_gpu-2.1.0 | 3.5~3.7 | MSVC 2019 | Bazel 0.27.1-0.29.1 | 7.6 | 10.1 |
tensorflow_gpu-2.0.0 | 3.5~3.7 | MSVC 2017 | Bazel 0.26.1 | 7.4 | 10 |
tensorflow_gpu-1.15.0 | 3.5~3.7 | MSVC 2017 | Bazel 0.26.1 | 7.4 | 10 |
tensorflow_gpu-1.14.0 | 3.5~3.7 | MSVC 2017 | Bazel 0.24.1-0.25.2 | 7.4 | 10 |
tensorflow_gpu-1.13.0 | 3.5~3.7 | MSVC 2015 Update 3 | Bazel 0.19.0-0.21.0 | 7.4 | 10 |
tensorflow_gpu-1.12.0 | 3.5~3.6 | MSVC 2015 Update 3 | Bazel 0.15.0 | 7 | 9 |
tensorflow_gpu-1.11.0 | 3.5~3.6 | MSVC 2015 Update 3 | Bazel 0.15.0 | 7 | 9 |
tensorflow_gpu-1.10.0 | 3.5~3.6 | MSVC 2015 Update 3 | Cmake v3.6.3 | 7 | 9 |
tensorflow_gpu-1.9.0 | 3.5~3.6 | MSVC 2015 Update 3 | Cmake v3.6.3 | 7 | 9 |
tensorflow_gpu-1.8.0 | 3.5~3.6 | MSVC 2015 Update 3 | Cmake v3.6.3 | 7 | 9 |
tensorflow_gpu-1.7.0 | 3.5~3.6 | MSVC 2015 Update 3 | Cmake v3.6.3 | 7 | 9 |
tensorflow_gpu-1.6.0 | 3.5~3.6 | MSVC 2015 Update 3 | Cmake v3.6.3 | 7 | 9 |
tensorflow_gpu-1.5.0 | 3.5~3.6 | MSVC 2015 Update 3 | Cmake v3.6.3 | 7 | 9 |
tensorflow_gpu-1.4.0 | 3.5~3.6 | MSVC 2015 Update 3 | Cmake v3.6.3 | 6 | 8 |
tensorflow_gpu-1.3.0 | 3.5~3.6 | MSVC 2015 Update 3 | Cmake v3.6.3 | 6 | 8 |
tensorflow_gpu-1.2.0 | 3.5~3.6 | MSVC 2015 Update 3 | Cmake v3.6.3 | 5.1 | 8 |
tensorflow_gpu-1.1.0 | 3.5 | MSVC 2015 Update 3 | Cmake v3.6.3 | 5.1 | 8 |
tensorflow_gpu-1.0.0 | 3.5 | MSVC 2015 Update 3 | Cmake v3.6.3 | 5.1 | 8 |