Tensorflow1のUbuntu24.04でのコンパイル

English page

ビルド方法

cuda12.9にパッチ当てる

cuda-12.9.patch

Tensorflow1.15では、定義に矛盾が生じるので、コンパイル時はヘッダーを誤魔化します。

cd /usr/local/cuda-12.9/
sudo patch -p1 < cuda-12.9.patch

bazelをインストールする

bazel0.26.1が必要なので、昔の置き場から持ってきてダウンロードします。最新のBazelだと上手くいきません。

wget https://releases.bazel.build/0.26.1/release/bazel-0.26.1-installer-linux-x86_64.sh
bash bazel-0.26.1-installer-linux-x86_64.sh

Pythonの依存モジュールを入れる

仮想環境で作業する場合はその中で入れてください。 keras-preprocessingは、python3.12ではエラーが発生するので、masterブランチから直接インストールします。

sudo apt install python3-dev python3-pip git unzip
(cd /usr/bin && sudo ln -s python3 python)
pip3 install 'numpy<2'
pip3 install git+https://github.com/keras-team/keras-preprocessing.git

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

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のものを外すとコンパイルが速くなります。

cudaのパスをいじる

自動で CUDA12.9 が /usr/local/cuda にあることが認識されますが、このままだとなぜかインクルードのインクルードでパスが変になってて、ビルドが失敗します。 .tf_configure.bazelrc を開いて、/usr/local/cuda を探して、パスを /usr/local/cuda-12.9 に修正します。

build --action_env CUDA_TOOLKIT_PATH="/usr/local/cuda-12.9"

ビルド

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

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

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

./bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg

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


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

もくじへ戻る