Mac 등 환경에 맞게 Tensorflow Build하기

tips
tensorflow

(Curtis Kim) #1

Intro

tensorflow 공식 사이트에는 빌드하는 방식에 대한 일반적인 이야기만 나와 있어서, 최신 아키텍쳐의 연산 등을 지원하도록 잘 빌드하는 것에 대해 자주 검색하게 되길래, 이 글에 정리해두려고 합니다.

How to Build Optimized Tensorflow

2019-02-25 16:02:33.022114: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA

위와 같은 메세지를 종종 볼 수 있는데, 텐서플로우가 CPU가 지원하는 더 좋은 연산에 대응하도록 빌드되지 않았다는 뜻입니다. 다시 말해, 나의 환경에 맞게 새로 Build하면 더 빨라진다는 뜻. 대부분 pip 등으로 설치하므로 이런 메세지를 종종 겪게 됩니다.

https://www.tensorflow.org/install/source 에 나와있는대로, tensorflow 소스코드를 받습니다. 아래의 branch name을 적절한 버전으로 바꾸어주시면 됩니다.

git clone https://github.com/tensorflow/tensorflow.git
cd tensorflow

git checkout {branch_name}  # r1.9, r1.10, r1.12, etc.

bazel이 깔린 상태에서 build를 하게 되는데, bazel은 최신 버전보다는 0.18 등 tensorflow와 궁합이 잘 맞는 버전으로 설치하시기 바랍니다. (그래서 저는 bazel 사이트에서 .sh 설치파일을 직접 받아서 사용합니다)

./configure

빌드할 때 아래와 같이 cpu option을 추가로주면 해당 cpu에 대해 최적화된 빌드로 진행됩니다. 아래의 copt 들은 머신마다 다르며, tensorflow warning을 보고 적절히 추가해주면 됩니다.

bazel build -c opt --copt=-mavx --copt=-mavx2 --copt=-mfma --copt=-mfpmath=both --copt=-msse4.2 --config=cuda //tensorflow/tools/pip_package:build_pip_package

마지막으로 아래와 같이 python package를 만들어 준 후

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

아래와 같이 설치하면 됩니다.

pip install /tmp/tensorflow_pkg/tensorflow-1.12.0-cp36-cp36m-macosx_10_13_x86_64.whl

References