Tensorflow1のWindowsでのビルド

English page

ビルド方法

ビルド環境の整備

git for windows

https://gitforwindows.org/

git for windowsをインストールします。

MSYS2

https://www.msys2.org/

MSYS2をインストールします。

MSYS2をインストールしたら、MSYS2 MinGW 64-bitを起動して、以下のコマンドを実行して必要なパッケージをインストールします。

pacman -Syu
pacman -S diffutils patch unzip sed

Visual Studio

Visual Studio 2026をインストールします。 https://visualstudio.microsoft.com/ja/downloads/ インストールの際は、C++によるデスクトップ開発を選択してください。

次に、Bazelを騙すために、パスを誤魔化します。 コマンドプロンプトを開いて、以下のコマンドを実行します。

    mklink /J C:\MSVC_2019 "C:\Program Files\Microsoft Visual Studio\18\Community"

今回使用するBazelは2019までしか対応していませんが、パスに数字があれば通ります。CUDA関連のコンパイルで失敗するので最新を使います。

CUDA環境の整備

CUDA Toolkit 12.9のインストール

CUDA Toolkit 12.9をインストールします。 https://developer.nvidia.com/compute/cuda/12.9.1/network_installers/cuda_12.9.1_windows_network.exe

cuDNN 8.9のインストール

次のリンクからダウンロードします。 https://developer.nvidia.com/downloads/compute/cudnn/secure/8.9.7/local_installers/12.x/cudnn-windows-x86_64-8.9.7.29_cuda12-archive.zip/

展開した内容を、CUDA Toolkitをインストールしたディレクトリc:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.9のbin、include、libにそれぞれコピーします。 このとき管理者権限が必要です。

cuda12.9にパッチ当てる

cuda-12.9.patch

Tensorflow1.15では、定義に矛盾が生じるので、コンパイル時はヘッダーを誤魔化します。 コンパイルした後は、元に戻しておきます。先程のフォルダから書き戻してください。

MSYS2が入っていると、コマンドプロンプトで以下のコマンドが実行できます。 管理者権限のコマンドプロンプトを開いて、以下のコマンドを実行します。

cd c:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.9
patch -p1 < cuda-12.9.patch

uvのインストール

今回は、Python環境を入れるためにuvを使用します。コマンドプロンプトを開いて以下のコマンドでインストールします。

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

Pythonのインストール

uvを使用してPythonをインストールします。 作業に使用する任意のディレクトリで、コマンドプロンプトを開いて、以下のコマンドを実行します。

uv init tensorflow1 --bare -p 3.12
cd tensorflow1
uv python pin 3.12

続いて、必要なPythonのパッケージをインストールします。

uv add 'numpy<2'
uv add git+https://github.com/keras-team/keras-preprocessing.git
uv add setuptools

bazelをインストールする

bazel0.26.1が必要なので、昔の置き場から持ってきてダウンロードします。最新のBazelだと上手くいきません。 https://releases.bazel.build/0.26.1/release/bazel-0.26.1-windows-x86_64.exe

ダウンロードしたファイルを、ファイル名を変更してパスの通ったところに置きます。 先程の仮想環境の実行ディレクトリに置くといいでしょう。

copy bazel-0.26.1-windows-x86_64.exe tensorflow1\.venv\Scripts\bazel.exe

仮想環境のアクティベート

コマンドプロンプトを開き、仮想環境をアクティベートします。

tensorflow1\.venv\Scripts\activate

これからの作業は、仮想環境をアクティベートした状態で行います。

Tensorflow1.15のソースを準備する

git clone -b r1.15 https://github.com/tensorflow/tensorflow.git

Tensorflow1.15のソースにパッチを当てる

tensorflow-1.15.5-cuda12.9-python3.12.patch

Tensorflow1.15のソースコードに、cuda12.9でビルドできるようにするためのパッチを当てます。 python3.12の場合、いろいろ通らなくなるようになるので、モジュールをいじったりしています。

cd tensorflow
patch -p1 < ../tensorflow-1.15.5-cuda12.9-python3.12.patch

パスの設定

bazelがコンパイラを見つけられるように、環境変数を設定します。 コマンドプロンプトで以下のコマンドを実行します。

set BAZEL_VC=C:\MSVC_2019\VC
set BAZEL_VS=C:\MSVC_2019

configure

cd tensorflow
configure

基本デフォルトでいいです。 CUDA の質問で Yes として、 Compute Capability は、7.5,8.0,8.6,8.9,9.0,10.0,10.3,12.0 を指定します。必要でないGPUのものを外すとコンパイルが速くなります。

ビルド

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

数時間かかると思うので、ゆっくりお茶して待っててください。

ビルドしたwhlファイルを作る

bazel-bin\tensorflow\tools\pip_package\build_pip_package tensorflow_pkg

tensorflow_pkg に、tensorflow-1.15.5-cp312-cp312-win_amd64.whl というファイルができるので、これをインストールして使ってください。 cp312の部分は、Pythonのバージョンによって変わります。


内容について何か問題やご意見がございましたら、contact@lithium03.infoまで連絡ください。

もくじへ戻る