安装支持intel优化(mkl-dnn)的cpu版tensorflow

一、 发现问题

"I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA"

百度搜了一下, 此文解释的非常清楚:(https://www.cnblogs.com/Ph-one/p/9033733.html)

二、尝试解决

网上普遍提出两种方法:

  1. 禁用warning。
    遇到问题,禁用算怎么回事,不符合我们性格,拒绝。
  2. 重新编译tensorflow。
    太麻烦了,不符合我们性格,拒绝。

有没有编译好的支持AVX2 FMA 的wheel呢?
找了一下,
https://github.com/lakshayg/tensorflow-build 有符合的wheel提供下载,下不了。
https://github.com/mind/wheels/releases 有符合的wheel提供下载,下载成功。
同时,我们观察到,这里作者介绍了intel的深度学习加速工具,MKL-DNN(名字起的就像CUDA的CUDNN):
https://github.com/mind/wheels#mkl
https://github.com/intel/mkl-dnn
我了解了一下,装了mkl-dnn对于cpu的运算速率是有较大提升的。
安装方法:

sudo apt install cmake
git clone https://github.com/01org/mkl-dnn.git
cd mkl-dnn/scripts && ./prepare_mkl.sh && cd ..
mkdir -p build && cd build && cmake .. && make
sudo make install
echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib' >> ~/.bashrc

但是github上最新的mkl-dnn/scripts 目录下没有prepare_mkl.sh,只有一个generate_mkldnn_debug.py。
于是只好运行

python generate_mkldnn_debug.py

然后按照后续流程继续安装。最后也安装成功了,能不能用我也不知道,也不知道去哪儿问。
最后,pip install <刚刚下载的tensorflow的whl文件>,tf安装成功,可正常使用,并且不不再提示
“Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA”
测试速度提升:
毫无提升。。。。

三、解决问题

抱着不到黄河不死心的态度,继续网上找MKL-DNN相关信息。
https://software.intel.com/zh-cn/articles/intel-optimization-for-tensorflow-installation-guide
哦,直接用anaconda安装。。
在新环境里安装成功,可正常使用。
然而,最初的问题并没有解决:

2019-08-27 18:11:57.709843: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA

那么,测试一下速度呢?
nice,mkl-dnn还是有点用的。。纯cpu跑的yolov3模型,之前检测每张图大概耗时0.8s左右, 如今降到了0.71s左右,还是可以了。。


Screenshot from 2019-08-27 18-12-45.png

四、得出结论

  1. avx2,fma什么的对于tensorflow几乎没有提升。遇到这个warning的同学不要纠结了,直接屏蔽即可。
  2. 前面应该是我自己安装mkl-dnn没有安装正确,或者我下载的别人编制的whl没有用。
  3. 要享受因特尔mkl加速的tensorflow,还是用anaconda装吧。
  4. 不管怎么说,cpu还是不适合深度学习。

你可能感兴趣的:(安装支持intel优化(mkl-dnn)的cpu版tensorflow)