はじめに
TensorFlowを使用したところ、以下のエラーが発生しました。
$ python3 -c "from keras import backend as K"
Using TensorFlow backend.
Illegal instruction
CPUがAVX命令に対応していない場合に、上記のエラーが発生するようです。
TensorFlowを実行環境でビルドしなおせばいいという情報があり、1.15.0のソースからビルドすることにしました。
実行環境
OS:Windows10のWSL2(Debian)
プロセッサ:Intel(R) Core(TM) i3 CPU M 380 @ 2.53GHz 2.53 GHz
実装RAM:8.00 GB (7.68 GB 使用可能)
Pythonのバージョン:3.7.11
参考サイト
以下の公式ページを参考にしました。
ビルド手順
※以下は上記の公式ページの「Bazel をインストールする」以降の作業内容となります。この作業よりも前にkeras_preprocessing等のインストールが必要となりますので、詳しくは上記リンクを参照ください。
$ sudo apt update
$ sudo apt install -y curl build-essential
$ curl -L -o bazel https://github.com/bazelbuild/bazelisk/releases/download/v1.10.1/bazelisk-linux-amd64
$ chmod +x bazel
$ export PATH="${PATH}:${PWD}"
$ git clone https://github.com/tensorflow/tensorflow.git
$ cd tensorflow
$ git checkout v1.15.0
以下のファイルにBazelのバージョン「0.26.1」を指定する。
$ vi .bazelversion
以下のコマンドで構成セッションが開始される。今回は全てデフォルトのままとしたが、必要に応じて変更する。
$ python configure.py
ビルドを開始する。
※TensorFlow 1.xを指定するオプション--config=v1
を指定するとエラーが出たため、無指定とした。git checkout v1.15.0
をせずに最新のソースコードでこのオプションを指定する方法も可能かもしれない(未検証)。
$ bazel build //tensorflow/tools/pip_package:build_pip_package
私の環境ではビルドに15時間程度かかった。
Target //tensorflow/tools/pip_package:build_pip_package up-to-date:
bazel-bin/tensorflow/tools/pip_package/build_pip_package
INFO: Elapsed time: 52524.336s, Critical Path: 1560.65s
INFO: 19514 processes: 19514 local.
INFO: Build completed successfully, 20531 total actions
pipパッケージをビルドする。
$ ./bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
pipパッケージをインストールする。
$ python3 -m pip install /tmp/tensorflow_pkg/tensorflow-1.15.0-cp37-cp37m-linux_x86_64.whl