Windows 上のソースからビルドする,Windows 上のソースからビルドする

TensorFlow pipパッケージをソースからビルドし、Windows にインストールします。

Windows 用のセットアップ

次のビルド ツールをインストールして、Windows 開発環境を構成します。

Python と TensorFlow パッケージの依存関係をインストールする

Windows 用の Python 3.9+ 64 ビット リリースをインストールします。オプション機能としてpipを選択し、 %PATH%環境変数に追加します。

TensorFlow pipパッケージの依存関係をインストールします。

pip3 install -U six numpy wheel packaging
pip3 install -U keras_preprocessing --no-deps

依存関係は、 setup.pyファイルのREQUIRED_PACKAGESの下にリストされています。

Bazel をインストールする

TensorFlow のコンパイルに使用されるビルド ツールであるBazel をインストールします。 Bazel のバージョンについては、Windows のテスト済みのビルド構成を参照してください。 C++ をビルドするように Bazel を構成します。

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

MSYS2をインストールする

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

pacman -S git patch unzip

Visual C++ ビルド ツール 2019 をインストールする

Visual C++ ビルド ツール 2019をインストールします。これはVisual Studio 2019に付属していますが、個別にインストールすることもできます。

  1. Visual Studio のダウンロードに移動し、
  2. [再頒布可能ファイルとビルド ツール]を選択し、
  3. ダウンロードとインストール:
    • Microsoft Visual C++ 2019 再頒布可能パッケージ
    • Microsoft ビルド ツール 2019

GPU サポートのインストール (オプション)

GPU で TensorFlow を実行するために必要なドライバーと追加ソフトウェアをインストールするには、Windows GPU サポートガイドを参照してください。

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.

オプション: 環境変数の設定

パッケージ作成の問題を回避するには、ビルド コマンドを実行する前に次のコマンドを実行します (パッケージのインストール中に以下のコマンドが設定された場合は、無視してください)。すべてのパスが正しく設定されているかどうかset check を実行し、 echo %Environmental Variable% (例: echo %BAZEL_VC%を実行して、特定の環境変数に対して設定されたパスを確認します。

Python パス設定の問題tensorflow:issue#59943tensorflow:issue#9436tensorflow:issue#60083

set PATH=path/to/python # [e.g. (C:/Python310)]
set PATH=path/to/python/Scripts # [e.g. (C:/Python310/Scripts)] 
set PYTHON_BIN_PATH=path/to/python_virtualenv/Scripts/python.exe 
set PYTHON_LIB_PATH=path/to/python virtualenv/lib/site-packages 
set PYTHON_DIRECTORY=path/to/python_virtualenv/Scripts 

Bazel/MSVC パスのセットアップの問題tensorflow:issue#54578

set BAZEL_SH=C:/msys64/usr/bin/bash.exe 
set BAZEL_VS=C:/Program Files(x86)/Microsoft Visual Studio/2019/BuildTools 
set BAZEL_VC=C:/Program Files(x86)/Microsoft Visual Studio/2019/BuildTools/VC 

オプション: ビルドを構成する

TensorFlow ビルドは、リポイトリのルート ディレクトリにある.bazelrcファイルによって設定されます。 ./configureまたは./configure.pyスクリプトを使用して、共通設定を調整できます。

構成を変更する必要がある場合は、リポジトリのルート ディレクトリから./configureスクリプトを実行します。

python ./configure.py

このスクリプトは、TensorFlow 依存関係の場所を要求し、追加のビルド構成オプション (コンパイラー フラグなど) を要求します。以下に、 python ./configure.pyの実行例を示します (セッションによって異なる場合があります)。

pip パッケージをビルドしてインストールする

pip パッケージは 2 つのステップで構築されます。 bazel buildコマンドは、「パッケージ ビルダー」プログラムを作成します。次に、パッケージ ビルダーを実行してパッケージを作成します。

パッケージビルダーをビルドする

tensorflow:master リポジトリはデフォルトでビルド 2.x に更新されました。 Bazel をインストールしbazel buildを使用して TensorFlow パッケージ ビルダーを作成します。

bazel build //tensorflow/tools/pip_package:build_pip_package

CPUのみ

bazelを使用して、CPU のみをサポートする TensorFlow パッケージ ビルダーを作成します。

bazel build --config=opt //tensorflow/tools/pip_package:build_pip_package

GPUのサポート

TensorFlow パッケージ ビルダーを GPU サポートで作成するには:

bazel build --config=opt --config=cuda --define=no_tensorflow_py_deps=true //tensorflow/tools/pip_package:build_pip_package

Bazel キャッシュをクリーンアップして、無効または古いキャッシュ データによるエラーを解決するコマンド。--expunge フラグを使用して Bazel Clean を実行すると、ファイルが永久に削除されます。

bazel clean 
bazel clean --expunge  

Bazel ビルド オプション

パッケージ作成の問題を回避するには、ビルド時にこのオプションを使用します: tensorflow:issue#22390

--define=no_tensorflow_py_deps=true

ビルド オプションについては、Bazelコマンド ライン リファレンスを参照してください。

TensorFlow をソースからビルドすると、大量の RAM が使用される可能性があります。システムのメモリが制限されている場合は、 --local_ram_resources=2048を使用して Bazel の RAM 使用量を制限します。

GPU サポートを使用してビルドする場合は、 --copt=-nvcc_options=disable-warnings追加して、nvcc 警告メッセージを抑制します。

パッケージをビルドする

bazel buildコマンドは、 build_pip_packageという名前の実行可能ファイルを作成します。これは、 pipパッケージをビルドするプログラムです。たとえば、次のコードはC:/tmp/tensorflow_pkgディレクトリに.whlパッケージをビルドします。

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-tags.whl

e.g., pip3 install C:/tmp/tensorflow_pkg/tensorflow-2.12.0-cp310-cp310-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="*"

パスを設定します

Bazel と Python のインストール ディレクトリを$PATH環境変数に追加します。 Bazel がC:\tools\bazel.exeにインストールされ、Python がC:\Python\python.exeにインストールされている場合は、次のようにPATHを設定します。

# Use Unix-style with ':' as separator
export PATH="/c/tools:$PATH"
export PATH="/c/path/to/Python:$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のバージョンコンパイラビルドツール
テンソルフロー-2.15.0 3.9~3.11 MSVC 2019バゼル6.1.0
テンソルフロー-2.14.0 3.9~3.11 MSVC 2019バゼル6.1.0
テンソルフロー-2.12.0 3.8~3.11 MSVC 2019バゼル5.3.0
テンソルフロー-2.11.0 3.7~3.10 MSVC 2019バゼル5.3.0
テンソルフロー-2.10.0 3.7~3.10 MSVC 2019バゼル5.1.1
テンソルフロー-2.9.0 3.7~3.10 MSVC 2019バゼル5.0.0
テンソルフロー-2.8.0 3.7~3.10 MSVC 2019バゼル 4.2.1
テンソルフロー-2.7.0 3.7-3.9 MSVC 2019バゼル 3.7.2
テンソルフロー-2.6.0 3.6-3.9 MSVC 2019バゼル 3.7.2
テンソルフロー-2.5.0 3.6-3.9 MSVC 2019バゼル 3.7.2
テンソルフロー-2.4.0 3.6-3.8 MSVC 2019バゼル 3.1.0
テンソルフロー-2.3.0 3.5-3.8 MSVC 2019バゼル 3.1.0
テンソルフロー-2.2.0 3.5-3.8 MSVC 2019バゼル2.0.0
テンソルフロー-2.1.0 3.5-3.7 MSVC 2019ベゼル 0.27.1-0.29.1
テンソルフロー-2.0.0 3.5-3.7 MSVC 2017バゼル0.26.1
テンソルフロー-1.15.0 3.5-3.7 MSVC 2017バゼル0.26.1
テンソルフロー-1.14.0 3.5-3.7 MSVC 2017ベゼル 0.24.1-0.25.2
テンソルフロー-1.13.0 3.5-3.7 MSVC 2015 アップデート 3バゼル 0.19.0-0.21.0
テンソルフロー-1.12.0 3.5-3.6 MSVC 2015 アップデート 3バゼル0.15.0
テンソルフロー-1.11.0 3.5-3.6 MSVC 2015 アップデート 3バゼル0.15.0
テンソルフロー-1.10.0 3.5-3.6 MSVC 2015 アップデート 3 Cmake v3.6.3
テンソルフロー-1.9.0 3.5-3.6 MSVC 2015 アップデート 3 Cmake v3.6.3
テンソルフロー-1.8.0 3.5-3.6 MSVC 2015 アップデート 3 Cmake v3.6.3
テンソルフロー-1.7.0 3.5-3.6 MSVC 2015 アップデート 3 Cmake v3.6.3
テンソルフロー-1.6.0 3.5-3.6 MSVC 2015 アップデート 3 Cmake v3.6.3
テンソルフロー-1.5.0 3.5-3.6 MSVC 2015 アップデート 3 Cmake v3.6.3
テンソルフロー-1.4.0 3.5-3.6 MSVC 2015 アップデート 3 Cmake v3.6.3
テンソルフロー-1.3.0 3.5-3.6 MSVC 2015 アップデート 3 Cmake v3.6.3
テンソルフロー-1.2.0 3.5-3.6 MSVC 2015 アップデート 3 Cmake v3.6.3
テンソルフロー-1.1.0 3.5 MSVC 2015 アップデート 3 Cmake v3.6.3
テンソルフロー-1.0.0 3.5 MSVC 2015 アップデート 3 Cmake v3.6.3

GPU

バージョンPythonのバージョンコンパイラビルドツールクドンCUDA
tensorflow_gpu-2.10.0 3.7~3.10 MSVC 2019バゼル5.1.1 8.1 11.2
tensorflow_gpu-2.9.0 3.7~3.10 MSVC 2019バゼル5.0.0 8.1 11.2
tensorflow_gpu-2.8.0 3.7~3.10 MSVC 2019バゼル 4.2.1 8.1 11.2
tensorflow_gpu-2.7.0 3.7-3.9 MSVC 2019バゼル 3.7.2 8.1 11.2
tensorflow_gpu-2.6.0 3.6-3.9 MSVC 2019バゼル 3.7.2 8.1 11.2
tensorflow_gpu-2.5.0 3.6-3.9 MSVC 2019バゼル 3.7.2 8.1 11.2
tensorflow_gpu-2.4.0 3.6-3.8 MSVC 2019バゼル 3.1.0 8.0 11.0
tensorflow_gpu-2.3.0 3.5-3.8 MSVC 2019バゼル 3.1.0 7.6 10.1
tensorflow_gpu-2.2.0 3.5-3.8 MSVC 2019バゼル2.0.0 7.6 10.1
tensorflow_gpu-2.1.0 3.5-3.7 MSVC 2019ベゼル 0.27.1-0.29.1 7.6 10.1
tensorflow_gpu-2.0.0 3.5-3.7 MSVC 2017バゼル0.26.1 7.4 10
tensorflow_gpu-1.15.0 3.5-3.7 MSVC 2017バゼル0.26.1 7.4 10
tensorflow_gpu-1.14.0 3.5-3.7 MSVC 2017ベゼル 0.24.1-0.25.2 7.4 10
tensorflow_gpu-1.13.0 3.5-3.7 MSVC 2015 アップデート 3バゼル 0.19.0-0.21.0 7.4 10
tensorflow_gpu-1.12.0 3.5-3.6 MSVC 2015 アップデート 3バゼル0.15.0 7.2 9.0
tensorflow_gpu-1.11.0 3.5-3.6 MSVC 2015 アップデート 3バゼル0.15.0 7 9
tensorflow_gpu-1.10.0 3.5-3.6 MSVC 2015 アップデート 3 Cmake v3.6.3 7 9
tensorflow_gpu-1.9.0 3.5-3.6 MSVC 2015 アップデート 3 Cmake v3.6.3 7 9
tensorflow_gpu-1.8.0 3.5-3.6 MSVC 2015 アップデート 3 Cmake v3.6.3 7 9
tensorflow_gpu-1.7.0 3.5-3.6 MSVC 2015 アップデート 3 Cmake v3.6.3 7 9
tensorflow_gpu-1.6.0 3.5-3.6 MSVC 2015 アップデート 3 Cmake v3.6.3 7 9
tensorflow_gpu-1.5.0 3.5-3.6 MSVC 2015 アップデート 3 Cmake v3.6.3 7 9
tensorflow_gpu-1.4.0 3.5-3.6 MSVC 2015 アップデート 3 Cmake v3.6.3 6 8
tensorflow_gpu-1.3.0 3.5-3.6 MSVC 2015 アップデート 3 Cmake v3.6.3 6 8
tensorflow_gpu-1.2.0 3.5-3.6 MSVC 2015 アップデート 3 Cmake v3.6.3 5.1 8
tensorflow_gpu-1.1.0 3.5 MSVC 2015 アップデート 3 Cmake v3.6.3 5.1 8
tensorflow_gpu-1.0.0 3.5 MSVC 2015 アップデート 3 Cmake v3.6.3 5.1 8