1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

TensorFlow 2.2.0-rc0(CUDA10.2+cuDNN7.6.5)のビルド手順 - Windows10

Last updated at Posted at 2020-03-21

TensorFlow 2.2.0-rc0(GPU版)をWindows 10でビルドする手順です。
細かい説明は省略して要点だけを記載しているので、もう少し詳しい内容はdev.infohub.ccのBlogなどを参考にしていただければと思います。

ビルド環境の準備

ビルドには次の環境を利用します。
CUDAやcuDNN、Pythonなどは事前にPATHを通しておきます。

  • CPU: AMD Ryzen Threadripper 3960X
  • GPU: NVIDIA TITAN RTX
  • Windows 10 Pro 64bit (Ver 1909 build 18363.720)
  • CUDA 10.2
  • cuDNN 7.6.5
  • Visual Studio Community 2019 Ver16.4.6
  • Python 3.8.2
  • MSYS2
    インストールしてC:\msys64\usr\binにパスを通す。
  • Bazel 2.0.0
    ダウンロードしたファイルをbazel.exeにリネームしてパスの通ったフォルダに格納。
    ※TensorFlow 2.2.0-rc0のビルドに使えるバージョンはBazel 2.0.0だけなので注意!

MSYS2のパッケージ追加

C:\msys64\msys2_shell.cmdを起動して、ビルドに必要なパッケージを追加します。

# 必要なパッケージの導入
pacman -S git patch unzip

# 以降はMSYS2のコンソールは利用しないので終了
exit

TensorFlowのビルド

ビルド用のPython仮想環境g:\venvs\build_tf2を使ってTensorFlowをビルドしていきます。
パス等はそれぞれの環境に合わせて読み替えてください。

以降の操作は、Visual Studio 2019のx64 Native Tools Command Prompt for VS 2019で起動したコンソール画面を利用します。

# 仮想環境を作成して有効化する
python -m venv g:\venvs\build_tf2
cd /d g:\venvs\build_tf2
g:\venvs\build_tf2\Scripts\activate.bat

# pipのアップグレード(任意)
python -m pip install --upgrade pip

# ビルドに必要なパッケージを導入
pip install six numpy wheel
pip install keras_applications==1.0.8 --no-deps
pip install keras_preprocessing==1.1.0 --no-deps

# TensorFlow v2.2.0-rc0のソースコードを取得
git clone https://github.com/tensorflow/tensorflow.git
cd tensorflow
git checkout v2.2.0-rc0

# 不要な環境変数の削除(オプション)
# 環境変数全てがパラメータで渡されるため、パラメータの文字列が32768文字を超えると
# FATAL: Command line too long (34052 > 32768) というようなエラーが発生する。
# それを防ぐために、ここで不要な環境変数を一時的に削除。
# _OLD_VIRTUAL_PATHは文字数が多くなりがちなので、削除する第一候補。
set _OLD_VIRTUAL_PATH=

# ビルド構成の設定
#----------------------------------------------------------------
# <設定例>
# Location of Python        : (Default)
# ROCm support              : (Default = N)
# CUDA support              : Y
# CUDA compute capabilities : 7.5 (詳細はhttps://developer.nvidia.com/cuda-gpusを参照) 
# Optimization flag         : /arch:AVX2
# Override eigen...         : (Default = Y)
#----------------------------------------------------------------
python ./configure.py

# ビルド(CUDA向け)
# ビルドが完了するまで、数十分~数時間かかります
bazel build --config=opt --config=cuda --define=no_tensorflow_py_deps=true --copt=-nvcc_options=disable-warnings //tensorflow/tools/pip_package:build_pip_package

# Wheelパッケージの作成
# g:\tensorflow_pkgフォルダにパッケージを作成する(数分かかる)
bazel-bin\tensorflow\tools\pip_package\build_pip_package g:\tensorflow_pkg

# これでTensorFlowのビルドが完了。exitで終了。
#----------------------------------------------------------------
# <参考>
# Bazelのワークファイルは %UserProfile%_bazel_%UserName% に作成されるので
# 不要なら、このフォルダを削除してもOK(20GB程度の容量)
#----------------------------------------------------------------
exit

新規環境にビルドしたTensorFlowを導入

ビルドしたTensorFlowを新しいPythonの仮想環境に導入する方法です。
ここではg:\venvs\tf2に新しい仮想環境を作成する例です。

# 仮想環境を作成して有効化
python -m venv g:\venvs\tf2
g:\venvs\tf2\Scripts\activate.bat

# pipのアップデート(任意)
python -m pip install --upgrade pip

# ビルドしたTensorFlowのインストール(作成したwheelファイルを指定するだけ)
pip install g:\tensorflow_pkg\tensorflow-2.2.0rc0-cp38-cp38-win_amd64.whl

# 動作確認
python -c "import tensorflow as tf; print(tf.__version__); print(tf.keras.__version__)"
python -c "import tensorflow as tf; print(tf.reduce_sum(tf.random.normal([1000, 1000])))"

備考

TensorFlow 2.2.0-rc0のビルドは、TensorFlow v1の頃に比べると格段に簡単になっている印象を受けます。
今回のビルドでも、python ./configure.pyとしたときに、FATAL: Command line too long (34052 > 32768)というエラーに遭遇しただけで、それ以外は何の問題も発生しませんでした。

実行時にDLLが見つからずにエラーになるケースが多くありますが、この場合はCUDA等必要なライブラリへのパスが通っているか確認してみてください。

1
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?