macOS CatalinaでTensorflow 2.3.0をビルド
ビルド環境
macOS用のAnacondaをインストール
conda create -n tf_38 python=3.8 conda activate tf_38
以下がセットアップ内容
Collecting package metadata (current_repodata.json): done Solving environment: done ==> WARNING: A newer version of conda exists. <== current version: 4.8.3 latest version: 4.8.4 Please update conda by running $ conda update -n base -c defaults conda ## Package Plan ## environment location: /Users/tak/opt/anaconda3/envs/tf_38 added / updated specs: - python=3.8 The following packages will be downloaded: package | build ---------------------------|----------------- pip-20.2.2 | py38_0 1.7 MB python-3.8.5 | h26836e1_0 20.7 MB setuptools-49.6.0 | py38_0 747 KB ------------------------------------------------------------ Total: 23.1 MB The following NEW packages will be INSTALLED: ca-certificates pkgs/main/osx-64::ca-certificates-2020.7.22-0 certifi pkgs/main/osx-64::certifi-2020.6.20-py38_0 libcxx pkgs/main/osx-64::libcxx-10.0.0-1 libedit pkgs/main/osx-64::libedit-3.1.20191231-h1de35cc_1 libffi pkgs/main/osx-64::libffi-3.3-hb1e8313_2 ncurses pkgs/main/osx-64::ncurses-6.2-h0a44026_1 openssl pkgs/main/osx-64::openssl-1.1.1g-h1de35cc_0 pip pkgs/main/osx-64::pip-20.2.2-py38_0 python pkgs/main/osx-64::python-3.8.5-h26836e1_0 readline pkgs/main/osx-64::readline-8.0-h1de35cc_0 setuptools pkgs/main/osx-64::setuptools-49.6.0-py38_0 sqlite pkgs/main/osx-64::sqlite-3.33.0-hffcf06c_0 tk pkgs/main/osx-64::tk-8.6.10-hb0a8c7a_0 wheel pkgs/main/noarch::wheel-0.35.1-py_0 xz pkgs/main/osx-64::xz-5.2.5-h1de35cc_0 zlib pkgs/main/osx-64::zlib-1.2.11-h1de35cc_3
pipモジュールのインストール
pip install -U --user pip six 'numpy<1.19.0' wheel setuptools mock 'future>=0.17.1' 'gast==0.3.3' typing_extensions pip install -U --user keras_applications --no-deps pip install -U --user keras_preprocessing --no-deps
git clone https://github.com/tensorflow/tensorflow tensorflow_38 cd tensorflow_38 git checkout v2.3.0
Bazelのインストール
export BAZEL_VERSION=3.1.0 curl -fLO "https://github.com/bazelbuild/bazel/releases/download/${BAZEL_VERSION}/bazel-${BAZEL_VERSION}-installer-darwin-x86_64.sh" chmod +x "bazel-${BAZEL_VERSION}-installer-darwin-x86_64.sh" ./bazel-${BAZEL_VERSION}-installer-darwin-x86_64.sh --user export PATH="$PATH:$HOME/bin" bazel --version
Xcodeの設定
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer sudo xcodebuild -license bazel clean --expunge
このパッチを参考にファイルを修正します。
Fix GCC 10.1 compile error. by cbalint13 · Pull Request #40654 · tensorflow/tensorflow · GitHub
configureの内容
% ./configure You have bazel 3.1.0 installed. Please specify the location of python. [Default is /Users/tak/opt/anaconda3/envs/tf_38/bin/python3]: Found possible Python library paths: /Users/tak/opt/anaconda3/envs/tf_38/lib/python3.8/site-packages Please input the desired Python library path to use. Default is [/Users/tak/opt/anaconda3/envs/tf_38/lib/python3.8/site-packages] Do you wish to build TensorFlow with OpenCL SYCL support? [y/N]: n No OpenCL SYCL support will be enabled for TensorFlow. Do you wish to build TensorFlow with ROCm support? [y/N]: n No ROCm support will be enabled for TensorFlow. Do you wish to build TensorFlow with CUDA support? [y/N]: n No CUDA support will be enabled for TensorFlow. Do you wish to download a fresh release of clang? (Experimental) [y/N]: n Clang will not be downloaded. Please specify optimization flags to use during compilation when bazel option "--config=opt" is specified [Default is -march=native -Wno-sign-compare]: Would you like to interactively configure ./WORKSPACE for Android builds? [y/N]: n Not configuring the WORKSPACE for Android builds. Do you wish to build TensorFlow with iOS support? [y/N]: n No iOS support will be enabled for TensorFlow. Preconfigured Bazel build configs. You can use any of the below by adding "--config=<>" to your build command. See .bazelrc for more details. --config=mkl # Build with MKL support. --config=monolithic # Config for mostly static monolithic build. --config=ngraph # Build with Intel nGraph support. --config=numa # Build with NUMA support. --config=dynamic_kernels # (Experimental) Build kernels into separate shared objects. --config=v2 # Build TensorFlow 2.x instead of 1.x. Preconfigured Bazel build configs to DISABLE default on features: --config=noaws # Disable AWS S3 filesystem support. --config=nogcp # Disable GCP support. --config=nohdfs # Disable HDFS support. --config=nonccl # Disable NVIDIA NCCL support. Configuration finished
ビルド開始
bazel build --config=opt //tensorflow/tools/pip_package:build_pip_package
インストール作業
./bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
pip install /tmp/tensorflow_pkg/tensorflow-2.3.0-cp38-cp38-macosx_10_15_x86_64.whl
これでインストール完了です。