centos7 源碼編譯安裝TensorFlow CPU 版本


一、前言

我們都知道,普通使用pip安裝的TensorFlow是萬金油版本,當你運行的時候,會提示你不是當前電腦中最優的版本,特別是CPU版本,沒有使用指令集優化會讓TensorFlow用起來更慢。

但是在編譯之中,發現很多坑,由此記錄一下。

環境相關:

系統:centos7

python版本:2.7.5

 

二、准備

1. 安裝相關依賴

# 一般會缺失的依賴
yum -y install java-1.8.0-openjdk-devel automake autoconf libtool libicu gcc-c++

 

2. pip安裝相關庫

# python 相關,連接境外源較慢,建議更換成國內源,比如 douban 等
pip install --upgrade pip
pip install numpy grpcio Keras-Applications Keras-Preprocessing h5py requests enum

 

3. 查看可優化的信息

直接使用pip安裝TensorFlow並運行隨便一個TensorFlow相關程序,如果出現以下內容則需要優化相關指令集:

將這些信息記錄下來,后面會用到。

 

4. 安裝Bazel

Bazel是編譯TensorFlow的工具,首先下載repo文件:

進入網頁 https://copr.fedorainfracloud.org/coprs/vbatts/bazel/ 選擇自己系統的版本並下載,我的系統是centos7,直接執行命令:

wget https://copr.fedorainfracloud.org/coprs/vbatts/bazel/repo/epel-7/vbatts-bazel-epel-7.repo

復制到yum.repos.d目錄並安裝:

cp vbatts-bazel-epel-7.repo /etc/yum.repos.d/
yum install bazel

 

5. 下載TensorFlow源碼

輸入命令:

git clone --recurse-submodules https://github.com/tensorflow/tensorflow

如果沒安裝git,直接安裝一下就行了:

yum -y install git

准備工作到此結束。

 

三、編譯

1. 配置編譯

進入源碼目錄並配置:

cd tensorflow/
./configure

剛開始會出現讓你選擇python的一些路徑的,輸入正確的安裝目錄就行了。

然后會出現一堆“Do you wish to build TensorFlow with…”的提示,安裝自己的情況去選擇,不確定的直接回車就行了,不過因為編譯的是CPU版本,所以GPU那里需要選n,其他根據實際情況去選擇。

最后是一堆配置選擇,也是直接回車,默認就可以了。

 

2. 開始編譯

根據pip安裝的TensorFlow,運行時提示的優化信息,作為優化參數,根據自己的情況輸入命令:

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

注意這里的優化參數一定要填正確,要不然CPU不支持,但編譯了,到時候用的時候有可能會報錯。注意這是一個很慢很慢的過程,請耐心等待。編譯界面如下。

微信截圖_20181127161541

不過編譯期間當然會出現各種錯誤,譬如我就遇到找不到python相關的頭文件的,最后發現都在/usr/include/python2.7/ 目錄里,而代碼中指向的是/usr/include/,所以只得把python2.7目錄里的頭文件復制一份到母目錄。此外還有很多錯誤,這個只能根據自己的系統和環境,一個個去解決了,此處省略一萬字。

ps:如果編譯一般發現之前的參數錯了,先clean一下編譯輸出文件再編譯:

bazel clean

不然會出現很奇怪的問題。

如果順利,編譯會經歷一個極其漫長的過程,可以先泡杯茶喝喝。

 

3. 創建whl文件

編譯完成后在tensorflow下會創建很多符號連接,譬如bazel-bin,運行以下命令創建whl文件:

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

輸出如下圖所示:

微信截圖_20181127190634

至此,編譯並生成whl過程才算完成,最后得到文件tensorflow-1.12.0rc0-cp27-cp27mu-linux_x86_64.whl,根據不同的平台名字會不大一樣。

 

四、安裝

1. 卸載直接用pip直接安裝的版本

pip uninstall tensorflow

 

2. 使用pip安裝之前生成的whl文件

pip install /tmp/tensorflow_pkg/tensorflow-1.12.0rc0-cp27-cp27mu-linux_x86_64.whl

如無意外,就安裝完成了,輸出如下圖所示:

微信截圖_20181127191017

 

3. 測試

運行TensorFlow相關代碼,如果沒有優化提示,證明一切正常。

>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print sess.run(hello)
Hello, TensorFlow!
>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> print sess.run(a+b)
42
>>> exit()

 

五、參考

1. CentOS源碼編譯安裝Tensor Flow

2. Tensorflow Serving CentOS 7源碼編譯(CPU 版)

(完)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM