Tensorflow編譯血淚史

為了安裝tensorflow,導(dǎo)致我Linux系統(tǒng)重裝趴俘,Windows系統(tǒng)差點也沒了睹簇,哎。寥闪。太惠。

本人筆記本電腦有一個256 SSD和1TB機械硬盤,固態(tài)裝C盤疲憋,機械硬盤裝D凿渊、E和F,各330G缚柳,系統(tǒng)為Win10埃脏,顯卡為NVIDIA1060。后來打算裝manjaro雙系統(tǒng)喂击,進行編程和機器學(xué)習(xí)剂癌、深度學(xué)習(xí)的開發(fā)工作,于是F盤分了一半約160G給manjaro系統(tǒng)翰绊,其中根目錄和家目錄等單獨劃分分區(qū)掛載佩谷,根目錄分區(qū)大小為30G旁壮,此是前話。

在安裝tensorflow之前自己先裝了pytorch谐檀,因為覺得這個框架代碼更優(yōu)雅抡谐,代碼風(fēng)格自己更喜歡。后來在安裝tensorflow時發(fā)現(xiàn)還挺麻煩桐猬,需要獨立cuda和cudnn庫麦撵,不同版本的tensorflow依賴于不同版本的cuda和cudnn,而cuda和cudnn依賴于gcc溃肪,如下圖所示免胃。

tensorflow編譯配置
安裝cuda9.1包依賴gcc6

而manjaro系統(tǒng)屬于arch系,各軟件包滾動更新速度很快惫撰,基本總是保持最新羔沙,比如系統(tǒng)默認python環(huán)境竟然時3.7.2,我的個乖乖厨钻,自己的系統(tǒng)里安裝的gcc是此時最新的8.2.1扼雏,與cuda所需的gcc6沖突,如果要裝gcc6還要卸載gcc8夯膀,而其他軟件包會依賴于gcc8诗充,況且安裝舊版本包這種行為一點都不arch,于是使用tensorflow官方預(yù)編譯好的whl文件安裝就不太現(xiàn)實了诱建,只能自己在本機上編譯構(gòu)建了蝴蜓,幸好網(wǎng)上搜到了一篇最近的、講得很好很詳細俺猿、和自己情況正相符的一篇帖子:編譯 Tensorflow 1.10 + CUDA9.2 + MKL励翼,在這里向作者由衷的表示感謝!

于是便紅紅火火按照教程開始來裝了辜荠,于是問題舊開始出現(xiàn)了。
首先問題是當(dāng)下載了tensorflow源碼之后發(fā)現(xiàn)自己不能切換安裝版本抓狭,如果選擇默認master以外的分支伯病,則報無法引用到/tensorflow/tools/bazel.rc文件的錯誤,于是只能在master分支裝吧否过,不管了午笛。
如圖:

bazel.png

同時發(fā)現(xiàn)自己訪問github下載文件的速度太慢了,導(dǎo)致bazel程序運行失敗苗桂,后來找到了相關(guān)博客如git clone速度太慢的解決辦法進行配置药磺,發(fā)現(xiàn)還是未解決,自己在命令前加proxychains代理也不行煤伟,因為是程序內(nèi)部調(diào)用系統(tǒng)網(wǎng)絡(luò)去下載文件癌佩,代理命令無效木缝,經(jīng)過多次嘗試后,自己打算通過瀏覽器下載一個文件試試围辙,如https://github.com/bazelbuild/rules_closure/archive/9889e2348259a5aad7e805547c1a0cf311cfcd91.tar.gz,發(fā)現(xiàn)下載的挺快的我碟,是因為代理,而自己直接調(diào)用wget命令發(fā)現(xiàn)好慢姚建,同時還發(fā)現(xiàn)了該文件的最終下載域名為:codeload.github.com矫俺,后來自己參考那個教程在https://www.ipaddress.com/里搜索得到了對應(yīng)的ip并將其和ip加到hosts文件中,如圖所示:

hosts文件相關(guān)內(nèi)容

速度一下就快了不少掸冤,雖說只有幾十k厘托,但是也比之前的幾十幾百b強,同時安裝也不報下載文件失敗訪問不了文件的錯誤了稿湿。

后來又遇到:invalid conversion from 'const char*' to 'char*'這樣的代碼error铅匹,于是網(wǎng)上找到了invalid conversion from 'const char' to 'char' 的解決方法這篇文章,于是便修改了報錯處的源碼缎罢,重新繼續(xù)編譯伊群,看著編譯進行的挺順利,自己還蠻開心的策精,可誰知命運給自己開的玩笑才剛剛開始舰始。

經(jīng)過了漫長的編譯時間,突然又報錯了咽袜,說是什么文件訪問失敗丸卷,沒有剩余空間了,當(dāng)時我就蒙了询刹,這是咋回事谜嫉,后來發(fā)現(xiàn):根目錄所在分區(qū)滿了,安裝過程中所有文件都保存在根目錄所在分區(qū)凹联,即已經(jīng)到了30G了沐兰,使用df -h命令查看所在分區(qū)使用率已經(jīng)到了100%,我擦1文印W〈场!

這可如何是好澳淑,沒想到編譯個tensorflow這么占存儲空間比原,后來網(wǎng)上查找相關(guān)案例和解決方案,暫時只是把用不到的大軟件卸載了杠巡,如Clion量窘,發(fā)現(xiàn)效果不明顯,還是占用了29G多氢拥,于是心想:老子不裝了蚌铜,不裝了還不行嗎锨侯,回歸pytorch,pytorch才是老紙的真愛厘线,卸載之后發(fā)現(xiàn):使用率還是90%识腿,這這這,后來想到滿了那就擴充啊造壮,于是就在網(wǎng)上找擴充根目錄分區(qū)的方法教程渡讼,然而歷史說明正是這一步開始使我踏進了深淵烦味。

網(wǎng)上搜了不少方法呼胚,發(fā)現(xiàn)許多都不好使空繁,同時分區(qū)滿了我裝個軟件都裝不了了键袱,感覺要炸蝶缀!發(fā)現(xiàn)有個說法說在拓展分區(qū)之前要先掛載平挑,于是我就嘗試著把根目錄所在分區(qū)給掛載掉了扇谣,在卸載時還提示錯誤锣尉,說device is busy攀隔,于是網(wǎng)上找到類似如linux umount命令介紹與device is busy解決方法的答案皂贩,于是敲下了罪惡的umount -l /,后來系統(tǒng)崩了昆汹,重啟明刷,發(fā)現(xiàn)又好了,哈哈满粗。

后來就想著硬盤F盤還有剩余空間辈末,想劃分出來給根目錄所在分區(qū),經(jīng)過嘗試之后發(fā)現(xiàn)直接劃分不行映皆,因為自己沒有搞lvm挤聘,不能通過卷組或邏輯卷相關(guān)的指令操作來進行,后來發(fā)現(xiàn)了一個可行的法子是把硬盤中根目錄所在分區(qū)位置后面的空間騰出來捅彻,然后便可以擴充了组去,把原來的數(shù)據(jù)放到其他位置就可以了,于是通過這樣的操作進行了var掛載分區(qū)的移動步淹,感覺還不錯添怔,其中主要參考的是linux(manjaro)磁盤遷移/opt /home,而在進行boot分區(qū)的移動時發(fā)現(xiàn)自己未成功進行boot分區(qū)的重新掛載,于是系統(tǒng)又崩了贤旷,重啟也報錯了,進入grub rescue模式中砾脑,此時有點慌了幼驶,后來找到類似該篇博客grub rescue救援模式的處理所說內(nèi)容,重新掛載了boot目錄,并且重新生成grub配置文件韧衣,于是問題解決了盅藻。

之后在進行home分區(qū)的操作時自己忘記了備份购桑,直接掛載和格式化掉了(通過 mkfs.ext4 /dev/sda*),發(fā)現(xiàn)出了問題之后重新登錄都登錄不了氏淑,因為相關(guān)用戶信息都沒了勃蜘,只能進入命令行界面,同時home目錄為空假残,后來在各分區(qū)找了半天發(fā)現(xiàn)沒有找到備份缭贡,這時自己真的慌掉了,還有不少數(shù)據(jù)呢辉懒,比如項目代碼阳惹、還有博客環(huán)境配置和博客原文件等,找了半天都沒能找到可行的辦法眶俩,因為系統(tǒng)都登錄不進去莹汤,連修復(fù)軟件啥的都安裝不了,況且天色已晚颠印,于是就先睡了纲岭。

等到第二天自己想到可以在window系統(tǒng)上安裝然后修復(fù)那個分區(qū)的數(shù)據(jù)吧?于是先嘗試了DiskGenius軟件线罕,發(fā)現(xiàn)好像它識別的分區(qū)不全止潮,并且也只能恢復(fù)文件,會丟失文件名等信息闻坚,這樣也僅是得到一些文件沽翔,不是整體的恢復(fù)分區(qū),而后又下載了testdisk軟件窿凤,經(jīng)過一陣蒙蔽的操作之后仅偎,發(fā)現(xiàn)自己的D盤和E盤也不見了,趕忙重啟發(fā)現(xiàn)還是沒有雳殊,由于許多軟件都是安裝在D盤上橘沥,所以導(dǎo)致window系統(tǒng)下的環(huán)境也出問題了,要炸啊夯秃,幸虧自己的chrome瀏覽器在C盤裝的座咆,又下載了DiskGenius,發(fā)現(xiàn)還要注冊仓洼,還挺麻煩介陶,于是又嘗試下了綠色破解版,經(jīng)過掃描色建,找到了丟失的D盤和E盤哺呜,只是其他數(shù)據(jù)全部都沒有了(指manjaro系統(tǒng)下全部信息)。哎箕戳,一聲長嘆之后只能重新再裝系統(tǒng)了某残。

只是可惜了當(dāng)時探索了不少軟件国撵,同時還有不少有用的數(shù)據(jù)資料,還有自己最新的代碼玻墅,以及最新的博客環(huán)境配置文件和最新的博客原文件介牙。

而后再劃分分區(qū)安裝的時候,有了之前的教訓(xùn)和探索澳厢,自己對分區(qū)的理解更加深刻环础,于是在劃分時感覺熟悉了好多,把整個300G空間全部給新系統(tǒng)了赏酥,同時多分配了一些空間給根目錄和var目錄所在分區(qū)喳整。
后來重裝系統(tǒng),還好自己當(dāng)時寫了安裝記錄的博客在網(wǎng)上可以看裸扶,于是又重新安裝配置環(huán)境框都,配置NVIDIA獨顯,配置科學(xué)上網(wǎng)呵晨,后來心想以后再做記錄先只在簡書和有道上吧魏保,自己的博客先不管了吧,畢竟環(huán)境也丟了摸屠,能找到的是好久之前的了谓罗,要配置還挺麻煩,博客內(nèi)容自己自己也增刪改的比較多季二,再撿起來比較耗時檩咱,于是暫時就不考慮維護自己的博客了,之前也嘗試在知乎專欄和簡書上寫文章胯舷,發(fā)現(xiàn)簡書支持Markdown效果很好刻蚯,而知乎則導(dǎo)入效果很差,于是便最終選擇了簡書作為最終的自己發(fā)布內(nèi)容的平臺啦桑嘶。

后來重新參考之前提到的編譯tensorflow的那篇文章炊汹,還是只能master分支,還是要配置hosts文件中g(shù)ithub對應(yīng)域名和ip逃顶,不過編譯的還挺順利的讨便,不過還是要好久,最終吃了個晚飯以政,回來發(fā)現(xiàn)又報錯了霸褒,我真的快要崩潰了,報ImportError: No module named keras.preprocessing的錯誤盈蛮,后來我就想是不是版本問題傲霸,于是切換r1.12和r1.10,發(fā)現(xiàn)還是報bazel.rc文件的錯,于是又切換回master分支昙啄,繼續(xù)網(wǎng)上找相關(guān)問題和答案,并在github上成功找到了答案:1.10 build fails with "No module named 'keras_applications'" ,即通過pip安裝keras_applicationskeras_preprocessing這兩個庫寸五。

后來重新執(zhí)行編譯命令梳凛,又等待了好一會兒(比之前快多了,因為有緩存之前的編譯結(jié)果)梳杏,終于成功了哈哈哈韧拒!后來經(jīng)過測試,發(fā)現(xiàn)編譯成功十性,tensorflow已經(jīng)被正常安裝在自己的pip列表中了叛溢。
以下是耗時截圖:


首次編譯失敗
重新編譯再次報錯
最終編譯成功

安裝tensorflow的whl包后,發(fā)現(xiàn)安裝的就是現(xiàn)行版r1.12劲适。楷掉。。


tensorflow_whl文件.png

這里是分區(qū)使用率截圖:


分區(qū)使用率截圖

相比而言霞势,pytorch安裝就要簡單許多了烹植,并且提供了許多預(yù)編譯好的可選。

在這里自己簡單記錄一下心酸的歷程愕贡,也提醒各位看客同樣需要編譯tensorflow時留意自己的分區(qū)使用率~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末草雕,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子固以,更是在濱河造成了極大的恐慌墩虹,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件憨琳,死亡現(xiàn)場離奇詭異诫钓,居然都是意外死亡,警方通過查閱死者的電腦和手機栽渴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門尖坤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人闲擦,你說我怎么就攤上這事慢味。” “怎么了墅冷?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵纯路,是天一觀的道長。 經(jīng)常有香客問我寞忿,道長驰唬,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮叫编,結(jié)果婚禮上辖佣,老公的妹妹穿的比我還像新娘。我一直安慰自己搓逾,他們只是感情好卷谈,可當(dāng)我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著霞篡,像睡著了一般世蔗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上朗兵,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天污淋,我揣著相機與錄音,去河邊找鬼余掖。 笑死寸爆,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的浊吏。 我是一名探鬼主播而昨,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼找田!你這毒婦竟也來了歌憨?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤墩衙,失蹤者是張志新(化名)和其女友劉穎务嫡,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體漆改,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡心铃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了挫剑。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片去扣。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖樊破,靈堂內(nèi)的尸體忽然破棺而出愉棱,到底是詐尸還是另有隱情,我是刑警寧澤哲戚,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布奔滑,位于F島的核電站,受9級特大地震影響顺少,放射性物質(zhì)發(fā)生泄漏朋其。R本人自食惡果不足惜王浴,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望梅猿。 院中可真熱鬧氓辣,春花似錦、人聲如沸袱蚓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽癞松。三九已至,卻和暖如春入蛆,著一層夾襖步出監(jiān)牢的瞬間响蓉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工哨毁, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留枫甲,地道東北人。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓扼褪,卻偏偏與公主長得像想幻,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子话浇,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容