溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

TensorFlow源代碼編譯構(gòu)建安裝包的示例分析

發(fā)布時(shí)間:2021-12-04 11:33:04 來(lái)源:億速云 閱讀:234 作者:小新 欄目:大數(shù)據(jù)

這篇文章給大家分享的是有關(guān)TensorFlow源代碼編譯構(gòu)建安裝包的示例分析的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。

        最近公司給我們分配了2臺(tái)虛擬機(jī)服務(wù)器用于強(qiáng)化學(xué)習(xí)訓(xùn)練,我們?cè)谔摂M環(huán)境中安裝好了TensorFlow環(huán)境后,在import tensorflow時(shí)發(fā)現(xiàn)報(bào)了下面的錯(cuò)誤:
TensorFlow源代碼編譯構(gòu)建安裝包的示例分析
        于是我去Google搜索了下出現(xiàn)這個(gè)錯(cuò)誤的原因,發(fā)現(xiàn)是因?yàn)槲覀兎?wù)器的CPU不支持AVX指令集導(dǎo)致的,而使用pip安裝的TensorFlow需要依賴AVX指令集,為了確認(rèn)我們的CPU是否真的不支持AVX指令集,我使用cat /proc/cpuinfo 命令查看了下目前CPU指令集支持情況,發(fā)現(xiàn)我們的CPU果然不支持AVX指令集。
TensorFlow源代碼編譯構(gòu)建安裝包的示例分析
        又不支持又想用咋辦,后來(lái)經(jīng)過(guò)網(wǎng)上查詢了一下,我們可以自己使用TensorFlow的源代碼來(lái)編譯和構(gòu)建一個(gè)TensorFlow的版本,這樣的話就可以在不支持AVX指令集的機(jī)器上使用TensorFlow了。于是我按照官網(wǎng)https://www.tensorflow.org/install/source給出的步驟來(lái)嘗試從源碼自己編譯和構(gòu)建TensorFlow。
        在構(gòu)建TensorFlow之前,我們要先做兩件事:
      1. 下載TensorFlow的源碼
      2. 下載和安裝Bazel構(gòu)建工具

        在下載TensorFlow源碼如果網(wǎng)速比較好的話,可以直接使用下面的命令從GitHub倉(cāng)庫(kù)中克隆TensorFlow代碼庫(kù)的源碼:

   
   
   git clone https://github.com/tensorflow/tensorflow.gitcd tensorflow
        如果網(wǎng)速堪憂的話,可以直接先下載zip版本,然后再傳到服務(wù)器上,我使用的是后者。  
        注意:這里的代碼庫(kù)默認(rèn)的是master開(kāi)發(fā)分支。

        下載和安裝Bazel構(gòu)建工具這里我要特別說(shuō)一下,一般來(lái)講,Bazel的安裝方式有2種,一種是使用Bazelisk來(lái)安裝,另外一種是手動(dòng)安裝,我使用的是后者。在官網(wǎng)中會(huì)告訴你,你可以安裝在GitHub中可以是 tensorflow/configure.py 中指定的介于 _TF_MIN_BAZEL_VERSION 和 _TF_MAX_BAZEL_VERSION 之間的任意版本,但是,  這里是一個(gè)坑。因?yàn)樵谶@里他說(shuō)可以安裝3.10~3.99種的任意一個(gè)版本,于是乎我安裝了一個(gè)3.70的版本,等到真正編譯的時(shí)候,他會(huì)告訴你,這個(gè)版本不匹配,需要你安裝3.10的版本,于是只能卸載重新安裝。
        接下來(lái)我們需要按照bazel,首先要安裝一些依賴:

   
   
   apt install curl gnupg
    curl -fsSL https://bazel.build/bazel-release.pub.gpg | gpg --dearmor > bazel.gpg
    mv bazel.gpg /etc/apt/trusted.gpg.d/
    echo "deb [arch=amd64] https://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list
        接下來(lái)我們可以使用apt update && sudo apt install bazel-3.1.0命令直接安裝就好。
        到目前為止我們已經(jīng)安裝好了bazel編譯工具,也下載了TensorFlow的源碼,那么接下來(lái)就要開(kāi)始準(zhǔn)備編譯和構(gòu)建TensorFlow了。
        在這之前我們還需要去安裝一些相應(yīng)的依賴,使用如下命令即可:
   
   
   pip install  six numpy wheel setuptools mock 'future>=0.17.1'
    pip install  keras_applications --no-deps
    pip install  keras_preprocessing --no-deps
 
        然后我們使用gcc --version查看下我們的gcc版本,我的是18.04自帶的7.5.0,可用。

        接下來(lái)就是真正的編譯環(huán)節(jié)了。首先我們進(jìn)入到從GitHub中下載的TensorFlow源代碼,并執(zhí)行
   
   
   ./configure
 
        這個(gè)時(shí)候會(huì)讓你去做一些配置相關(guān)的信息:
   
   
   Please specify the location of python. [Default is /root/miniconda3/envs/ray/bin/python3]:
 
        這一句是讓你輸入Python所在的位置,如果沒(méi)錯(cuò)的話直接回車,如果想修改的話就輸入你的Python所在的目錄;
   
   
   Found possible Python library paths:
    /root/miniconda3/envs/ray/lib/python3.8/site-packages
    Please input the desired Python library path to use.  Default is [/root/miniconda3/envs/ray/lib/python3.8/site-packages]
 
        這一步讓你去輸入Python library所在的位置,和上面一樣,我這里直接回車。

   
   
   Do you wish to build TensorFlow with ROCm support? [y/N]: N
        這一步是問(wèn)你是不是要build一個(gè)支持ROCm的TensorFlow版本,在這里我選擇N。  

Do you wish to build TensorFlow with CUDA support? [y/N]: N
        這一步是問(wèn)你是不是要build一個(gè)支持CUDA的TensorFlow版本,因?yàn)槲疫@個(gè)是要在分布式集群的CPU版本用的,這個(gè)服務(wù)器里沒(méi)用CUDA,所以我選擇N。  

Do you wish to download a fresh release of clang? (Experimental) [y/N]: N
          這一步是問(wèn)你是不是希望狹隘一個(gè)clang是release版本,這里我一開(kāi)始選擇的是Y,由于我網(wǎng)速不好,下載報(bào)錯(cuò),然后就選擇了N;
Please specify optimization flags to use during compilation when bazel option "--config=opt" is specified [Default is -march=native -Wno-sign-compare]:
        這一步是讓你輸入一個(gè)編譯時(shí)候的優(yōu)化器,在這里我直接用默認(rèn)的,就直接回車了;

   
   
   Would you like to interactively configure ./WORKSPACE for Android builds? [y/N]:  N
        這一步是問(wèn)你是不是需要支持Android,我這邊不需要,所以直接N,否則的話會(huì)讓你選擇你Android SDK的版本之類的;  

        當(dāng)這些都配置完成之后,就會(huì)彈出來(lái)一個(gè)你的配置信息。
TensorFlow源代碼編譯構(gòu)建安裝包的示例分析
        接下來(lái)就要真正的開(kāi)始去編譯你的TensorFlow源碼了,由于我使用的是不帶CUDA的版本,所以我直接使用如下命令即可:
   
   
   bazel build --config=opt //tensorflow/tools/pip_package:build_pip_package
        編譯好會(huì)看到下面的信息:(由于我自己這塊沒(méi)有截圖,用了個(gè)網(wǎng)圖,我用老的CPU花了7500多秒)  
TensorFlow源代碼編譯構(gòu)建安裝包的示例分析
        編譯好之后,我們就可以在TensorFlow源代碼目錄輸入以下命令,來(lái)構(gòu)建最終的pip安裝包:
   
   
   ./bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
        在這里,/tmp/tensorflow_pkg是我自己定義的最終安裝包輸出的位置,結(jié)束后,我們可以cd到 /tmp/tensorflow_pkg目錄中,查看里面的內(nèi)容:  
TensorFlow源代碼編譯構(gòu)建安裝包的示例分析
        可以看到,我們最終的pip安裝版本就已經(jīng)完成,接下來(lái)我們就可以在命令行里輸入下面的命令進(jìn)行安裝了:
   
   
   pip install tensorflow-2.5.0-cp38-cp38-linux_x86_64.whl
TensorFlow源代碼編譯構(gòu)建安裝包的示例分析  
        安裝完成后,我們可以試著在Python交互環(huán)境中導(dǎo)入一下TensorFlow,看看是否有報(bào)錯(cuò):
TensorFlow源代碼編譯構(gòu)建安裝包的示例分析
        我們發(fā)現(xiàn),可以正常導(dǎo)入和使用,至此,整個(gè)TensorFlow源碼的編譯、構(gòu)建以及安裝環(huán)境完成。

感謝各位的閱讀!關(guān)于“TensorFlow源代碼編譯構(gòu)建安裝包的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI