Press "Enter" to skip to content

MacOS上的Tensorflow (CPU Only) 调整AVX2 FMA 来加速

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

Xcode安装完成以后,需要使用Terminal来同意条款如下:

 

sudo xcodebuild -license accept

 

好了以后我们就可以来安装 Bazel 啰!首先需要先到 Bazel 的 github 位置
找到自己需要的版本下载安装档,截至小弟撰文的今日最新的版本虽然是1.2.1,然而 Tensorflow 2.0 目前可用的版本却是 1.1.0 (好像某些状况下可能只是 0.26.1),所以请找到 Bazel 相应的版本下面有个小小的 「 Assets 」字样并点开找到自己适用的版本如下图:

 

下载完成后,就请执行下面这几行并把自己的version填入(以1.1.0为例):

 

chmod +x bazel-1.1.0-installer-darwin-x86_64.sh
./bazel-1.1.0-installer-darwin-x86_64.sh --user

 

然后我们需要把 Bazel 用下面的指令设定好路径:

 

export PATH="$PATH:$HOME/bin"

 

然后可以用这个指令检查一下是不是安装成功了:

 

bazel --version

 

如果有出现 bazel 1.1.0
或是你所选择的其他版本号码那就表示成功啦!

 

Step 4. 针对 Tensorflow 的 build 进行 ./configure :

 

这边需要先在 Terminal cd
回到放置 Tensorflow clone 的资料夹里面,以我在 Step 1 里面就是 ~/Desktop/temp/tensorflow
,接着执行:

 

./configure

 

系统就会逐步开始询问相关的设定(详见下方);这个步骤我个人觉得需要注意的就是 Python location 以及 Library path,以我的情境来说,因为有好几个虚拟环境、 Python Interpreter 以及 Library,所以无法使用预设的而是先从我使用的 Pycharm 里面 Preference > Project: Tensorflow_Keras > Project Interpreter 确定并把自己的 Interpreter 位置複製出来(下面用粗体表示),并且也用 Preference > Project: Tensorflow_Keras > Project Structure 确认自己的 Library 位置

 

确认环境跟相关路径的动作如果是对环境比较熟悉的使用者应该就可以用其他方式确认 (ex: Python 里面 import 了某一个 library 以后,使用 np.__path__
之类的指令确认…等)

 

[email protected] tensorflow % ./configureWARNING: --batch mode is deprecated. Please instead explicitly shut down your Bazel server using the command "bazel shutdown".You have bazel 1.1.0 installed.Please specify the location of python. [Default is /System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python]: /Users/chia-yuchien/PycharmProjects/Tensorflow_Keras/venv/bin/pythonFound possible Python library paths:/Users/chia-yuchien/PycharmProjects/Tensorflow_Keras/venv/lib/python3.7/site-packagesPlease input the desired Python library path to use. Default is [/Users/chia-yuchien/PycharmProjects/Tensorflow_Keras/venv/lib/python3.7/site-packages]Do you wish to build TensorFlow with XLA JIT support? [Y/n]: YXLA JIT support will be enabled for TensorFlow.Do you wish to build TensorFlow with OpenCL SYCL support? [y/N]: NNo OpenCL SYCL support will be enabled for TensorFlow.Do you wish to build TensorFlow with ROCm support? [y/N]: NNo ROCm support will be enabled for TensorFlow.Do you wish to build TensorFlow with CUDA support? [y/N]: NNo CUDA support will be enabled for TensorFlow.Do you wish to download a fresh release of clang? (Experimental) [y/N]: NClang 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]: NNot configuring the WORKSPACE for Android builds.Do you wish to build TensorFlow with iOS support? [y/N]: NNo 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

 

Step 5. 使用 Bazel 製作属于自己的 Tensorflow pip package

 

经过了上面的努力,我们终于把该设定的都设定完了,就可以来製作 Tensorflow pip package 啰!

 

可以设定的指令、方法非常多,所以就针对大部分网路看到的,以及我们这次最想要解决的 AVX2 FMA 进行相应的设定,指令如下:

 

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

 

开始执行后,电脑就会开始努力的 compile,过程可能会有很多 Warning 或其他的提示喷出,不过都不用管他,画面大概如下:

还真没想到自己这个非资工背景的小鲁,可以帅气(?)的 compile 深度学习的安装包呢!

这是一路走来最花时间跟效能的步骤了,整个 compile 的过程大概花了我 2~3个小时,期间听到笔电风扇大力运作,CPU 用量直冲顶峰,不免有点心疼自己的 MacBook

 

Step 6. 製作 whl 档案

 

接下来就是利用刚刚我们努力产製出来的 build_pip_package 製作 whl 档案供后续 pip install 使用,作法如下:

 

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

 

这边是把製作完成的档案装在 /tmp/tensorflow_pkg
这个路径底下,如果有想要放的其他地方也可以自己改路径。基本上这个步骤完成,会拿到的东西就是我们在「安装线上既有的安装包」这个方法里面提到网路或我提供的whl档案了,他的档名大概会长得像…

 

tensorflow-2.0.0-cp37-cp37m-macosx_10_9_x86_64.whl

 

当然会根据你的设定以及版本有一些不同的长相,可以 cd
/tmp/tensorflow
里面用 ls
看一下这个闪闪发亮的宝贝档案的名字

 

Step 7. pip install

 

pip install /tmp/tensorflow_pkg/tensorflow-2.0.0-cp37-cp37m-macosx_10_9_x86_64.whl

 

终于到了这步,只要用熟悉的 pip install 指令并把路径跟档名都打进去,就完成了专属于自己的 Tensorflow 安装了!!

 

接下来就可以到自己的开发环境来试用一下了,如果步骤都成功的话,就再也看不到下面这行了呢,大功告成!

Be First to Comment

发表评论

邮箱地址不会被公开。 必填项已用*标注