centos編譯tensorflow

安裝好編譯工具后,我們使用git將tf的代碼clone到服務(wù)器逝慧。

1. 編譯配置

然后進(jìn)入 tensorflow的目錄。

運(yùn)行configure文件:

./configure积糯,根據(jù)個(gè)人的需要進(jìn)行tf編譯的配置跌帐。這里要求系統(tǒng)需要 預(yù)裝python 和c++,這里做好是使用python3.x,2.7編譯會(huì)失敗

如果沒有請(qǐng)進(jìn)行安裝:

yum install gcc-c++ libstdc++-devel

2. 編譯

bazel build -c opt --verbose_failures? --jvmopt="-server -Xms1024m" //tensorflow/tools/pip_package:build_pip_package

會(huì)遇到很多的錯(cuò)誤,有很多依賴庫(kù)沒安裝會(huì)導(dǎo)致編譯錯(cuò)誤翎冲,需要進(jìn)行安裝

依賴的python庫(kù)有numpy垂睬,keras

依賴的工具有:patch

編譯完成了

INFO: Analysed target //tensorflow/tools/pip_package:build_pip_package (0 packages loaded, 0 targets configured).

INFO: Found 1 target...

Target //tensorflow/tools/pip_package:build_pip_package up-to-date:

? bazel-bin/tensorflow/tools/pip_package/build_pip_package

INFO: Elapsed time: 18.080s, Critical Path: 4.67s, Remote (0.00% of the time): [queue: 0.00%, setup: 0.00%, process: 0.00%]

INFO: 26 processes: 26 local.

INFO: Build completed successfully, 44 total actions

3. 構(gòu)建安裝包,可以指定想要存放安裝包的位置

bazel-bin/tensorflow/tools/pip_package/build_pip_package? pack_path

這里我們放到tf源碼的tmp目錄下

bazel-bin/tensorflow/tools/pip_package/build_pip_package? /data/tensorflow/tmp/

完成后可以看到wheel安裝包

使用pip安裝既可;

pip install tensorflow-1.12.0rc0-cp36-cp36m-linux_x86_64.whl

然后我們就可以測(cè)試:

import tensorflow as tf

hello = tf.constant("Hello, TensorFlow!")

sess = tf.Session()

print(sess.run(hello))

錯(cuò)誤集錦:

1.ERROR: /data/tensorflow/tensorflow/lite/toco/python/BUILD:15:1: C++ compilation of rule '//tensorflow/lite/toco/python:toco_python_api' failed (Exit 1): gcc failed: error executing command

? (cd /root/.cache/bazel/_bazel_root/48b0697df5815d95b49fd98c3083955b/execroot/org_tensorflow && \

? exec env -? ......

編譯輸出如下:

\/root/.cache/bazel/_bazel_root/48b0697df5815d95b49fd98c3083955b/external/protobuf_archive/BUILD:640:1: C++ compilation of rule '@protobuf_archive//:python/google/protobuf/pyext/_message.so' failed (Exit 1)

external/protobuf_archive/python/google/protobuf/pyext/descriptor.cc:33:20: fatal error: Python.h: No such file or directory

#include <Python.h>

#include "Python.h"

解決: 安裝python-devel

sudo yum -y install python-devel

但是以上似乎并不能解決問題:我們換成如下命令抗悍,打印詳細(xì)的編譯日志:

bazel build -c opt?--verbose_failures?//tensorflow/tools/pip_package:build_pip_package

ERROR: /data/tensorflow/tensorflow/lite/toco/python/BUILD:15:1: C++ compilation of rule '//tensorflow/lite/toco/python:toco_python_api' failed (Exit 1): gcc failed: error executing command

? (cd /root/.cache/bazel/_bazel_root/48b0697df5815d95b49fd98c3083955b/execroot/org_tensorflow && \

? exec env - \

? ? PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/bin:/root/bin \

? ? PWD=/proc/self/cwd \

? /usr/bin/gcc -U_FORTIFY_SOURCE -fstack-protector -Wall -B/usr/bin -B/usr/bin -Wunused-but-set-parameter -Wno-free-nonheap-object -fno-omit-frame-pointer -g0 -O2 '-D_FORTIFY_SOURCE=1' -DNDEBUG -ffunction-sections -fdata-sections '-std=c++0x' -MD -MF bazel-out/host/bin/tensorflow/lite/toco/python/_objs/toco_python_api/toco_python_api.pic.d '-frandom-seed=bazel-out/host/bin/tensorflow/lite/toco/python/_objs/toco_python_api/toco_python_api.pic.o' -fPIC -D__CLANG_SUPPORT_DYN_ANNOTATION__ -DEIGEN_MPL2_ONLY '-DEIGEN_MAX_ALIGN_BYTES=64' '-DEIGEN_HAS_TYPE_TRAITS=0' -DTF_USE_SNAPPY -iquote . -iquote bazel-out/host/genfiles -iquote bazel-out/host/bin -iquote external/local_config_python -iquote bazel-out/host/genfiles/external/local_config_python -iquote bazel-out/host/bin/external/local_config_python -iquote external/bazel_tools -iquote bazel-out/host/genfiles/external/bazel_tools -iquote bazel-out/host/bin/external/bazel_tools -iquote external/com_google_absl -iquote bazel-out/host/genfiles/external/com_google_absl -iquote bazel-out/host/bin/external/com_google_absl -iquote external/nsync -iquote bazel-out/host/genfiles/external/nsync -iquote bazel-out/host/bin/external/nsync -iquote external/eigen_archive -iquote bazel-out/host/genfiles/external/eigen_archive -iquote bazel-out/host/bin/external/eigen_archive -iquote external/local_config_sycl -iquote bazel-out/host/genfiles/external/local_config_sycl -iquote bazel-out/host/bin/external/local_config_sycl -iquote external/gif_archive -iquote bazel-out/host/genfiles/external/gif_archive -iquote bazel-out/host/bin/external/gif_archive -iquote external/jpeg -iquote bazel-out/host/genfiles/external/jpeg -iquote bazel-out/host/bin/external/jpeg -iquote external/protobuf_archive -iquote bazel-out/host/genfiles/external/protobuf_archive -iquote bazel-out/host/bin/external/protobuf_archive -iquote external/com_googlesource_code_re2 -iquote bazel-out/host/genfiles/external/com_googlesource_code_re2 -iquote bazel-out/host/bin/external/com_googlesource_code_re2 -iquote external/farmhash_archive -iquote bazel-out/host/genfiles/external/farmhash_archive -iquote bazel-out/host/bin/external/farmhash_archive -iquote external/fft2d -iquote bazel-out/host/genfiles/external/fft2d -iquote bazel-out/host/bin/external/fft2d -iquote external/highwayhash -iquote bazel-out/host/genfiles/external/highwayhash -iquote bazel-out/host/bin/external/highwayhash -iquote external/zlib_archive -iquote bazel-out/host/genfiles/external/zlib_archive -iquote bazel-out/host/bin/external/zlib_archive -iquote external/gemmlowp -iquote bazel-out/host/genfiles/external/gemmlowp -iquote bazel-out/host/bin/external/gemmlowp -iquote external/arm_neon_2_x86_sse -iquote bazel-out/host/genfiles/external/arm_neon_2_x86_sse -iquote bazel-out/host/bin/external/arm_neon_2_x86_sse -iquote external/flatbuffers -iquote bazel-out/host/genfiles/external/flatbuffers -iquote bazel-out/host/bin/external/flatbuffers -isystem external/local_config_python/python_include -isystem bazel-out/host/genfiles/external/local_config_python/python_include -isystem bazel-out/host/bin/external/local_config_python/python_include -isystem external/nsync/public -isystem bazel-out/host/genfiles/external/nsync/public -isystem bazel-out/host/bin/external/nsync/public -isystem external/eigen_archive -isystem bazel-out/host/genfiles/external/eigen_archive -isystem bazel-out/host/bin/external/eigen_archive -isystem external/gif_archive/lib -isystem bazel-out/host/genfiles/external/gif_archive/lib -isystem bazel-out/host/bin/external/gif_archive/lib -isystem external/protobuf_archive/src -isystem bazel-out/host/genfiles/external/protobuf_archive/src -isystem bazel-out/host/bin/external/protobuf_archive/src -isystem external/farmhash_archive/src -isystem bazel-out/host/genfiles/external/farmhash_archive/src -isystem bazel-out/host/bin/external/farmhash_archive/src -isystem external/zlib_archive -isystem bazel-out/host/genfiles/external/zlib_archive -isystem bazel-out/host/bin/external/zlib_archive -isystem tensorflow/lite/schema -isystem bazel-out/host/genfiles/tensorflow/lite/schema -isystem bazel-out/host/bin/tensorflow/lite/schema -isystem external/flatbuffers/include -isystem bazel-out/host/genfiles/external/flatbuffers/include -isystem bazel-out/host/bin/external/flatbuffers/include -g0 -g0 -fno-canonical-system-headers -Wno-builtin-macro-redefined '-D__DATE__="redacted"' '-D__TIMESTAMP__="redacted"' '-D__TIME__="redacted"' -c tensorflow/lite/toco/python/toco_python_api.cc -o bazel-out/host/bin/tensorflow/lite/toco/python/_objs/toco_python_api/toco_python_api.pic.o)

In file included from tensorflow/lite/toco/python/toco_python_api.cc:20:0:

./tensorflow/lite/toco/python/toco_python_api.h:18:20: fatal error: Python.h: No such file or directory

#include <Python.h>

以上問題可能是由于內(nèi)存不足引起的驹饺,我們?cè)黾觭wap空間:

Ubuntu下:

# 生成swap鏡像文件

sudo dd if=/dev/zero of=/mnt/512Mb.swap bs=1M count=512

# 對(duì)該鏡像文件格式化

sudo mkswap /mnt/512Mb.swap

# 掛載該鏡像文件

sudo swapon /mnt/512Mb.swap

centos:

. 檢查是否配置swap:

swapon -s

或者free -m

total? ? ? ? used? ? ? ? free? ? ? shared? buff/cache? available

Mem:? ? ? ? ? 15885? ? ? ? 1539? ? ? 13593? ? ? ? ? 8? ? ? ? 752? ? ? 14020

Swap:? ? ? ? ? ? 0? ? ? ? ? 0? ? ? ? ? 0

. 查看系統(tǒng)存儲(chǔ)

df -h

嘗試指定jvm參數(shù):

bazel build -c opt --verbose_failures? --jvmopt="-server -Xms1024m" //tensorflow/tools/pip_package:build_pip_package

同樣會(huì)出現(xiàn)該錯(cuò)誤,接下來我們換成python3.6 試一下缴渊,使用anaconda創(chuàng)建一個(gè)python3.6的環(huán)境赏壹,激活環(huán)境并重新運(yùn)行上述命令:

2. ?from tensorflow.python.keras.preprocessing.sequence import _remove_long_seq

? File "/root/.cache/bazel/_bazel_root/48b0697df5815d95b49fd98c3083955b/execroot/org_tensorflow/bazel-out/host/bin/tensorflow/create_tensorflow.python_api_1_tf_python_api_gen_v1.runfiles/org_tensorflow/tensorflow/python/keras/preprocessing/__init__.py", line 21, in <module>

? ? import keras_preprocessing

ModuleNotFoundError: No module named 'keras_preprocessing'

嘗試安裝keras,pip install keras衔沼,重新開始編譯

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蝌借,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子指蚁,更是在濱河造成了極大的恐慌菩佑,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,110評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件凝化,死亡現(xiàn)場(chǎng)離奇詭異稍坯,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)搓劫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門瞧哟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來混巧,“玉大人,你說我怎么就攤上這事勤揩∵值常” “怎么了?”我有些...
    開封第一講書人閱讀 165,474評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵雄可,是天一觀的道長(zhǎng)凿傅。 經(jīng)常有香客問我缠犀,道長(zhǎng)数苫,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,881評(píng)論 1 295
  • 正文 為了忘掉前任辨液,我火速辦了婚禮虐急,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘滔迈。我一直安慰自己止吁,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評(píng)論 6 392
  • 文/花漫 我一把揭開白布燎悍。 她就那樣靜靜地躺著敬惦,像睡著了一般。 火紅的嫁衣襯著肌膚如雪谈山。 梳的紋絲不亂的頭發(fā)上俄删,一...
    開封第一講書人閱讀 51,698評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音奏路,去河邊找鬼畴椰。 笑死,一個(gè)胖子當(dāng)著我的面吹牛鸽粉,可吹牛的內(nèi)容都是我干的斜脂。 我是一名探鬼主播,決...
    沈念sama閱讀 40,418評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼触机,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼帚戳!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起儡首,我...
    開封第一講書人閱讀 39,332評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤片任,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后椒舵,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蚂踊,經(jīng)...
    沈念sama閱讀 45,796評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評(píng)論 3 337
  • 正文 我和宋清朗相戀三年笔宿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了犁钟。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片棱诱。...
    茶點(diǎn)故事閱讀 40,110評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖涝动,靈堂內(nèi)的尸體忽然破棺而出迈勋,到底是詐尸還是另有隱情,我是刑警寧澤醋粟,帶...
    沈念sama閱讀 35,792評(píng)論 5 346
  • 正文 年R本政府宣布靡菇,位于F島的核電站,受9級(jí)特大地震影響米愿,放射性物質(zhì)發(fā)生泄漏厦凤。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評(píng)論 3 331
  • 文/蒙蒙 一育苟、第九天 我趴在偏房一處隱蔽的房頂上張望较鼓。 院中可真熱鬧,春花似錦违柏、人聲如沸博烂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽禽篱。三九已至,卻和暖如春馍惹,著一層夾襖步出監(jiān)牢的瞬間躺率,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工讼积, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留肥照,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,348評(píng)論 3 373
  • 正文 我出身青樓勤众,卻偏偏與公主長(zhǎng)得像舆绎,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子们颜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評(píng)論 2 355