1、源碼構(gòu)建與預(yù)構(gòu)建:
源碼構(gòu)建:
源碼構(gòu)建是通過獲取軟件的源代碼,然后在本地編譯生成可執(zhí)行程序或庫文件的過程。這種方法允許根據(jù)特定需求進行配置和優(yōu)化,但可能需要較長的時間和較大的資源來編譯源代碼。
預(yù)構(gòu)建:
預(yù)構(gòu)建是通過從開發(fā)者或官方網(wǎng)站下載預(yù)先編譯好的可執(zhí)行程序或庫文件,然后在本地使用它們的過程。這種方法省去了編譯的時間和工作,通常更方便。然而,預(yù)構(gòu)建版本可能沒有完全針對特定需求進行優(yōu)化。
源碼構(gòu)建的優(yōu)缺點:
優(yōu)點:
1.可以根據(jù)特定需求進行配置、優(yōu)化和修改。2.可以確保編譯的二進制與系統(tǒng)和需求完全匹配。
3.可以進行調(diào)試和錯誤跟蹤,有助于自定義和定制。
缺點:
1.需要較長的編譯時間和系統(tǒng)資源。
2.對于不熟悉編譯過程的用戶來說可能較為復(fù)雜。
3.編譯過程可能會受到依賴項的影響,需要處理依賴項問題。
2、Tensorflow源代碼編譯安裝
TensorFlowi源碼構(gòu)建基本流程:
1、安裝依賴:安裝構(gòu)建TensorFlow所需的各種依賴項,包括Python、Bazel構(gòu)建工具、CUDA、cuDNN、TensorRT等。這些依賴項可能因系統(tǒng)和配置而有所不同。
2、配置編譯:在TensorFlowi源碼目錄中,運行配置腳本以配置編譯選項。
3、構(gòu)建:用Bazelt構(gòu)建TensorFlow。
4、生成Wheel包:如果希望將TensorFlow打包成Pythonf的Wheelt格式,以便于分發(fā)和安裝。
5、運行測試(可選):可以運行TensorFlow的單元測試和集成測試,以確保構(gòu)建的版本沒有問題。TensorFlow-安裝依賴、編譯環(huán)境:
確保環(huán)境中,已經(jīng)安裝python、pip等工具
????????pip install -U --user pip numpy wheel
????????pip install -U--user keras_preprocessing --no-depsnumpy是一個開源的數(shù)值計算庫,提供了豐富的多維數(shù)組和矩陣操作功能,以及數(shù)學(xué)、邏輯、傅里葉變換等數(shù)值計算工具。
wheel是Python的一個二進制包格式,旨在加速包的安裝。是一種預(yù)構(gòu)建的軟件包格式,可以包含Python模塊的代碼、依賴項和元數(shù)據(jù),以便于分發(fā)和安裝。
keras_preprocessing是TensorFlow的一個重要子模塊,提供了許多用于數(shù)據(jù)預(yù)處理和增強的工具,特別適用于在深度學(xué)習(xí)任務(wù)中準(zhǔn)備數(shù)據(jù)集。
TensorFlow-編譯工具bazel
Bazel是一個由Google開發(fā)的開源構(gòu)建工具,旨在支持大型項目的高效構(gòu)建、測試和部署。它特別適用于構(gòu)建復(fù)雜的軟件系統(tǒng),具有高度的可擴展性和性能優(yōu)勢。Bazel支持多種編程語言,并在TensorFlow等許多大型項目中得到廣泛應(yīng)用。
■構(gòu)建速度和緩存:使用了增量構(gòu)建和緩存機制,只編譯已更改的部分,從而顯著加快構(gòu)建過程。Bazel還可以共享構(gòu)建緩存,以避免重復(fù)編譯相同的依賴項。
■多語言支持:包括但不限于Java、C++、Python、Go、Rust等。這使得可以在一個項目中混合使用不同的語言,而無需為每種語言使用不同的構(gòu)建工具。
■高度模塊化:將項目拆分為小的、可重用的模塊,以提高代碼的可維護性和可測試性。每個模塊都可以擁有自己的構(gòu)建規(guī)側(cè)和依賴項。
■聲明式構(gòu)建:使用BUILD文件來聲明構(gòu)建規(guī)則和依賴關(guān)系。這種聲明式的構(gòu)建方法使構(gòu)建過程更加清晰和可管理。
■平臺無關(guān)性:可以在不同的操作系統(tǒng)上運行,包括Linux、macOS和Windows。詳細(xì)使用方法可以參考:https:/blog.gmem.cc/bazel-study-note
3、pytorch 源代碼編譯安裝
1、環(huán)境準(zhǔn)備:
安裝?Python:確保的系統(tǒng)中安裝了?Python,建議使用支持的版本(通常是?Python 3.7+)。
安裝依賴項:如?CMake、NumPy、Ninja?等??梢愿鶕?jù)官方文檔安裝這些依賴項。
2、更新子模塊:源代碼中可能包含子模塊(submodules),往往需要使用以下命令更新子模塊才能正常編譯:
????????git submodule update --init --recursive
3、配置編譯選項:(可使用?cmake -DCMAKE_INSTALL_PREFIX=<install_dir>?來指定安裝目錄)。
????????????????mkdir build
????????????????cd build
????????????????cmake ..
4、使用make命令進行編譯,make install命令進行安裝。
5、運行測試:
在?test?目錄下,可以使用以下命令來運行測試:
????????python run_test.py
這將運行所有的測試套件,包括單元測試、集成測試等。如果需要指定特定的測試模塊或測試用例,可以使用命令行參數(shù)來過濾測試,
例如:
????????python run_test.py test_torch.py
將只運行與?test_torch.py?相關(guān)的測試。
在測試運行完成后,成功的測試將顯示為?"OK",而失敗的測試將顯示詳細(xì)的錯誤信息。
4、caffe源代碼編譯安裝
1、環(huán)境準(zhǔn)備(這些基本都可以從conda里面安裝):
????????sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev?
????????libhdf5-serial-dev protobuf-compiler?
????????sudo apt-get install --no-install-recommends libboost-all-dev
????????sudo apt-get install python-dev
????????sudo apt-get install libatlas-base-dev
????????sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
????????sudo apt-get install python-opencv
2、修改caffe下文件Makefile.config
????????CPU?和?GPU?支持: 可以通過設(shè)置是否啟用?CPU?或?GPU?支持來決定構(gòu)建?Caffe?時是否使用CPU?或?GPU?運算。這通常涉及?USE_CUDNN、USE_NCCL、CPU_ONLY?等選項。
????????CUDA?和?cuDNN?路徑: 如果啟用了?GPU?支持,需要指定?CUDA?和?cuDNN?的路徑。
????????BLAS?庫: 可以選擇使用不同的?BLAS?庫,如?OpenBLAS、MKL?或?ATLAS。?
????????Python?路徑: 需要指定與?Caffe?集成的?Python?版本和路徑。
3、修改caffe下文件Makefile
????????1.opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs
????????后面加入?opencv_imgcodecs
????????2.?找到LIBRARIES +=glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
????????更改最后兩項為:
????????LIBRARIES +=glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl?
????????hdf5_serial
4、編譯與測試
????????make all
????????Make test
????????make runtest
5、深度學(xué)習(xí)框架常用模型倉庫
TensorFlow: https://github.com/tensorflow/models
TensorFlow Model Garden?是?TensorFlow?團隊維護的一個開源項目,旨在為機器學(xué)習(xí)社區(qū)提供一系列預(yù)訓(xùn)練模型、工具、示例和最佳實踐,以加速模型開發(fā)和研究。這個項目匯集了各種不同類型的模型,涵蓋了計算機視覺、自然語言處理、語音識別等多個領(lǐng)域,幫助開發(fā)者快速構(gòu)建和訓(xùn)練自己的模型。
預(yù)訓(xùn)練模型:?Model Garden?包含了多個預(yù)訓(xùn)練模型,包括?TensorFlow?官方發(fā)布的模型,以及社區(qū)貢獻的模型。這些模型可以用作遷移學(xué)習(xí)的起點,或者可以在特定任務(wù)上微調(diào)。
模型庫:?Model Garden?提供了一個模型庫,用于查看各種模型的代碼、配置文件和文檔。這些模型可以幫助開發(fā)者了解模型的結(jié)構(gòu)和使用方法。文章來源:http://www.zghlxwxcb.cn/news/detail-656633.html
最佳實踐:?TensorFlow?團隊會分享一些模型開發(fā)和訓(xùn)練的最佳實踐,幫助開發(fā)者避免常見的陷阱和問題。文章來源地址http://www.zghlxwxcb.cn/news/detail-656633.html
到了這里,關(guān)于(五)、深度學(xué)習(xí)框架源碼編譯的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!