Windows でのソースからのビルド

ソースから 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 0.23.0 をインストールします。C++ をビルドするように Bazel をセットアップします。

Bazel 実行可能ファイルの場所を %PATH% 環境変数に追加します。

Bazel 0.23.0 以下をインストールするようにしてください。

MSYS2 をインストールする

TensorFlow のビルドに必要な bin ツール用に MSYS2 をインストールします。MSYS2 が C:\msys64 にインストールされている場合は、C:\msys64\usr\bin%PATH% 環境変数に追加します。次に、cmd.exe を使って実行します。

    pacman -S git patch unzip
    

Visual C++ Build Tools 2015 をインストールする

Visual C++ Build Tools 2015 をインストールします。これは Visual Studio 2015 に付属していますが、別々にインストールすることができます。

  1. Visual Studio のダウンロード サイトに移動します。
  2. [再頒布可能パッケージおよびビルドツール] を選択します。
  3. 以下をダウンロードしてインストールします。
    • Microsoft Visual C++ 2015 再頒布可能パッケージ Update 3
    • Microsoft Build Tools 2015 Update 3

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 パッケージをビルドする

Bazel ビルド

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 ビルドのオプション

ビルドの際にこのオプションを使用して、パッケージの作成時の問題(https://github.com/tensorflow/tensorflow/issues/22390)を回避します。

    --define=no_tensorflow_py_deps=true
    

ソースから 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 ではうまく機能しません(//foo/bar: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 separator
    export PATH="/c/tools:$PATH"
    export PATH="/c/Python36:$PATH"
    

GPU サポートの場合は、CUDA と cuDNN の各 bin ディレクトリを $PATH に追加します。

    export PATH="/c/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v9.0/bin:$PATH"
    export PATH="/c/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v9.0/extras/CUPTI/libx64:$PATH"
    export PATH="/c/tools/cuda/bin:$PATH"
    

テスト済みのビルド設定

CPU

バージョンPython バージョンコンパイラビルドツール
tensorflow-1.13.03.5~3.6MSVC 2015 Update 3Cmake v3.6.3
tensorflow-1.12.03.5~3.6MSVC 2015 Update 3Cmake v3.6.3
tensorflow-1.11.03.5~3.6MSVC 2015 Update 3Cmake v3.6.3
tensorflow-1.10.03.5~3.6MSVC 2015 Update 3Cmake v3.6.3
tensorflow-1.9.03.5~3.6MSVC 2015 Update 3Cmake v3.6.3
tensorflow-1.8.03.5~3.6MSVC 2015 Update 3Cmake v3.6.3
tensorflow-1.7.03.5~3.6MSVC 2015 Update 3Cmake v3.6.3
tensorflow-1.6.03.5~3.6MSVC 2015 Update 3Cmake v3.6.3
tensorflow-1.5.03.5~3.6MSVC 2015 Update 3Cmake v3.6.3
tensorflow-1.4.03.5~3.6MSVC 2015 Update 3Cmake v3.6.3
tensorflow-1.3.03.5~3.6MSVC 2015 Update 3Cmake v3.6.3
tensorflow-1.2.03.5~3.6MSVC 2015 Update 3Cmake v3.6.3
tensorflow-1.1.03.5MSVC 2015 Update 3Cmake v3.6.3
tensorflow-1.0.03.5MSVC 2015 Update 3Cmake v3.6.3

GPU

バージョンPython バージョンコンパイラビルドツールcuDNNCUDA
tensorflow_gpu-1.13.03.5~3.6MSVC 2015 Update 3Bazel 0.15.079
tensorflow_gpu-1.12.03.5~3.6MSVC 2015 Update 3Bazel 0.15.079
tensorflow_gpu-1.11.03.5~3.6MSVC 2015 Update 3Bazel 0.15.079
tensorflow_gpu-1.10.03.5~3.6MSVC 2015 Update 3Cmake v3.6.379
tensorflow_gpu-1.9.03.5~3.6MSVC 2015 Update 3Cmake v3.6.379
tensorflow_gpu-1.8.03.5~3.6MSVC 2015 Update 3Cmake v3.6.379
tensorflow_gpu-1.7.03.5~3.6MSVC 2015 Update 3Cmake v3.6.379
tensorflow_gpu-1.6.03.5~3.6MSVC 2015 Update 3Cmake v3.6.379
tensorflow_gpu-1.5.03.5~3.6MSVC 2015 Update 3Cmake v3.6.379
tensorflow_gpu-1.4.03.5~3.6MSVC 2015 Update 3Cmake v3.6.368
tensorflow_gpu-1.3.03.5~3.6MSVC 2015 Update 3Cmake v3.6.368
tensorflow_gpu-1.2.03.5~3.6MSVC 2015 Update 3Cmake v3.6.35.18
tensorflow_gpu-1.1.03.5MSVC 2015 Update 3Cmake v3.6.35.18
tensorflow_gpu-1.0.03.5MSVC 2015 Update 3Cmake v3.6.35.18