2020/11/30時点でのTensorFlow 2.4.0-rc3のビルド方法の概要を残しておきます。
毎回同じような手順でビルドできるようになってきていますが、その時々で注意すべきポイントや手順があったりします。今回の組み合わせでは、Numpyのバージョンにだけ気をつければ正常にビルドできました。ビルド時点でNumpyの最新バージョンは1.19.4でしたが、このバージョンはWindows環境だとNumpyをimportするだけでエラーになるので、1つ前の1.19.3
を使用します。
追伸
2020/12/05
私の環境だけかもしれませんが、以下環境の組み合わせで利用すると作成したTensorFlowのwheelパッケージをインストールする際にFailed to build h5py grpcio
となりインストールに失敗します。
バージョンはh5py 3.1.0
、grpcio 1.34.0
になりますが、現時点で解決策は調べられていません。
2020/12/06
作成したTensorFlowのwheelパッケージのインストールで失敗する件、Python 3.9.0
を利用したときの依存パッケージの組み合わせなどに起因しているエラーのように見えます。
全く同じ設定でPython 3.8.6
を利用したら問題ありませんでした。
環境情報
ビルドに利用した環境です。CUDAやcuDNNのフォルダなど、事前にパスを通した状態になっています。
- Windows 10 Pro 20H2 (64bit)
- Visual Studio Community 2019 Ver 16.8.2
-
Python 3.9.0Python 3.8.6(3.9.0を使うとwheelパッケージインストール時にエラーになります) - MSYS2(
pacman -S git patch unzip
で必要なパッケージを導入済み) - Bazel 3.7.1 (3.1.0以上のバージョンを使う必要あり)
- CUDA 11.1.1
- cuDNN 8.0.5.39
ビルド用のフォルダ構成など
今回はS:\build\build_tf240rc3
フォルダ配下にTensorFlowのソースコードをダウンロードしてビルドしています。Pythonの仮想環境も、TensorFlowビルド用に用意します。
S:/build/build_tf240rc3 # 作業フォルダRoot
+ tensorflow # gitで取得してくるソースコード
+ venv # Python仮想環境
+ wheelhouse # 作成したwhlファイルを格納するフォルダ
ビルド手順
x64 Native Tools Command Prompt for VS 2019
を起動して以下の手順でビルドを行います。
# 仮想環境を作成して有効化する
python -m venv s:\build\build_tf240rc3\venv
cd /d s:\build\build_tf240rc3
.\venv\Scripts\activate.bat
# 必要なパッケージのインストール
# 注意:Numpyは最新の1.19.4を使うとエラーになるので1.19.3を使用(利用時もNumpy 1.19.3を使用すること)
python -m pip install --upgrade pip
pip install numpy==1.19.3
pip install six wheel
pip install keras_applications==1.0.8 --no-deps
pip install keras_preprocessing==1.1.2 --no-deps
# ソースコード取得(v2.4.0-rc3のタグ指定)
git clone -b v2.4.0-rc3 https://github.com/tensorflow/tensorflow.git
cd tensorflow
# 環境によってはコマンドのパラメーターが長くなりすぎてエラーになるので不要な環境変数を削除
set _OLD_VIRTUAL_PATH=
# ビルド構成の設定
# CUDA support: Y
# CUDA compute capabilities: 7.5 (利用環境に合わせて変更)
# Optimization: /arch:AVX2 (利用環境に合わせて変更)
# それ以外はデフォルト設定(Enter)
python ./configure.py
# ビルド
# TensorFlow 2.3.0+CUDA11の場合は「DTHRUST_IGNORE_CUB_VERSION_CHECK」のおまじない(CUB互換チェックのスキップ)が必要だったが今回は不要
bazel build --config=opt --config=avx2_win --config=short_logs --config=cuda --define=no_tensorflow_py_deps=true --copt=-nvcc_options=disable-warnings //tensorflow/tools/pip_package:build_pip_package
# パッケージの作成(wheelhouseフォルダにパッケージを作成)
# 数分間画面が更新されないので心配になりますが、きちんと処理されているのでしばらく待ちましょう
bazel-bin\tensorflow\tools\pip_package\build_pip_package ..\wheelhouse
これで完了です。
なおビルドに使用したbazelの中間ファイル等は%UserProfile%\_bazel_%UserName%
フォルダに作成され、容量も20GB近くになるので、不要であれば削除しても問題ありません。Bazelが起動していると削除できないので、その場合はコマンドプロンプトでbazel shutdown
として、Bazelを終了してから削除してください。