(譯)綜合指南:通過Ubuntu 16.04上從Source構建來安裝支持GPU的Caffe2
(譯)綜合指南:通過Ubuntu 16.04上從Source構建來安裝支持GPU的Caffe2
譯者註:
原文來自:https://tech.amikelive.com/node-706/comprehensive-guide-installing-caffe2-with-gpu-support-by-building-from-source-on-ubuntu-16-04/?tdsourcetag=s_pctim_aiomsg, 不得不說該文作者知識比較豐富,研究比較深入,環境的配置講解比較詳細。個人認為這篇博客價值比較大,可能這篇博客會對深度學習的工作者們提供一定的幫助,所以打算翻譯下來,並盡量還原原文的意思。如果有侵權,請聯系我。
通過基礎設施設置(譯者註:即深度環境),我們可以方便地開始鉆研深度學習,構建,訓練和驗證深度神經網絡模型,並將模型應用到特定問題域。將深度學習原語轉換為低級字節碼執行可能是一項艱巨的任務,特別是對於沒有深度學習計算興趣的從業者。幸運的是,有幾個深度學習框架提供高級編程接口,以幫助執行深度學習任務。(即深度學習平臺)
在這篇文章中,我們將介紹Caffe2的安裝,這是一個主要的深度學習框架。Caffe2采用Caffe,這是由加州大學伯克利分校Barkeley Vision and Learning Center(BVLC)開發的深度學習框架。Caffe2的開始旨在改善Caffe,特別是為了更好地支持大規模分布式模型培訓,移動部署,降低精度計算,新硬件以及移植到多個平臺的靈活性。
為什麽從源安裝?
需要註意的是,除了從源進行安裝,還有一些更簡單的選項,例如通過拉動和運行Caffe2 Docker鏡像。可以在此處訪問Caffe2映像的Docker存儲庫。盡管如此,如果您觀察列表,image(docker中鏡像)不是最新的,它們是針對舊版本的CUDA工具包和cuDNN構建的。因此,打算使用最新的Caffe2,CUDA或cuDNN功能的人應該考慮從源代碼進行安裝。
Caffe2 現在是Pytorch的一部分
之前caffe2是一個獨立的庫來維護的。自從2018年3月底依賴,Caffe2就已經被合並到Pytorch倉庫中了,(譯者註:現在已經不能通過單獨編譯caffe2的源代碼得到Caffe2了,已經無法將所有模塊clone下來了)。所以Caffe2的共同構建過程已經被集成到了pytorch中去。
關於源代碼合並的動機可能存在疑問。正如公告文章中所解釋的那樣,合並之前是Caffe2和Pytorch之間的開發基礎設施共享,導致共享代碼和公共庫的數量不斷增加。然後得出結論,將兩個項目合並為一個代碼庫將提高工程效率並提高框架的穩健性,尤其是在模型部署領域。
如果先前安裝了Caffe2怎麽辦?在源代碼合並之前安裝Caffe2時,構建過程將輸出隨後復制到指定目錄的頭文件,動態庫和python庫。從理論上講,用最新版本的文件替換舊的頭文件和庫文件就足夠了。如果它不起作用,則在繼續安裝之前首先從已安裝的目錄中刪除舊文件,然後進行清理
先決條件
我們將安裝支持GPU的Caffe2。本文僅介紹具有NVIDIA GPU的計算機的安裝過程。在完成安裝之前,請驗證是否滿足這些項目。
確認已正確安裝NVIDIA圖形驅動程序。
您可以參考本文了解NVIDIA圖形驅動程序的安裝和功能檢查。
驗證是否已安裝CUDA工具包。
如果您尚未安裝CUDA工具包,不確定它是否已安裝,或者是否要安裝較新版本的CUDA工具包,請參閱本文,其中提供了有關CUDA工具包安裝的更多詳細信息。驗證是否已安裝cuDNN。有關cuDNN安裝的更多詳細信息,
請參閱此文章從先前的Caffe2安裝中刪除文件
如果您之前安裝了Caffe2並且想要進行升級,則可能需要清除在先前的Caffe 2安裝中創建和復制的文件。
註意:這通常可以跳過,因為構建工具將首先檢查系統中安裝的Caffe2的現有版本,然後再用新的版本替換它
sudo rm -vRf /usr/local/include/caffe2
sudo rm -vf /usr/local/lib/libcaffe2*
此外,我們可能需要從Python包目錄中刪除python API(路徑可能因安裝的Python版本而異)。
sudo rm -vRf /usr/local/lib/python2.7/dist-packages/caffe2
檢查完所有先決條件後,我們現在可以繼續安裝。
安裝步驟
可以通過按順序執行這些步驟來完成安裝。
- 更新apt包索引
sudo apt-get update
- 安裝apt包依賴
sudo apt-get install -y --no-install-recommends build-essential cmake git libgoogle-glog-dev libgtest-dev libiomp-dev libleveldb-dev liblmdb-dev libopencv-dev libopenmpi-dev libsnappy-dev libprotobuf-dev openmpi-bin openmpi-doc protobuf-compiler python-dev python-pip
- 安裝pip依賴
sudo pip install --upgrade pip
sudo pip install setuptools future numpy protobuf
sudo apt-get install -y --no-install-recommends libgflags-dev
- 將Caffe 2克隆到本地目錄中
註意:我們創建一個名為caffe2-pytorch的目錄,並將Pytorch git repository克隆到此目錄中。
mkdir caffe2-pytorch && cd caffe2-pytorch
git clone --recursive https://github.com/pytorch/pytorch.git ./
git submodule update --init
- 建立Caffe 2
mkdir build && cd build
cmake ..
sudo make -j"$(nproc)" install
註意:構建源代碼時,我們提供-j標誌。該標誌指的是在構建源代碼時編譯器(即GCC)可以生成的線程數。該NPROC命令本身會打印可用的CPU數量。簡而言之,我們希望通過創建多個線程來加快編譯時間,這些線程相當於並行執行編譯的CPU數量。
- 為Caffe 2共享庫創建符號鏈接
sudo ldconfig
- 驗證Caffe2的庫文件和頭文件是否已經安裝好
- 更新本地database
sudo updatedb
- 確保libcaffe2.so在
/usr/local/lib
locate libcaffe2.so
- 確認頭文件是不是在
/usr/local/include
中
locate caffe2 | grep /usr/local/include/caffe2
- 將Caffe2添加到Python 庫路徑中,以便於其他應用能夠通過路徑找到該文件
vim ~/.profile
# set python path
if [ -z “$PYTHONPATH” ]; then
PYTHONPATH=/usr/local
else
PYTHONPATH=/usr/local:$PYTHONPATH
fi
#set library path
if [ -z “$LD_LIBRARY_PATH” ]; then
LD_LIBRARY_PATH=/usr/local/lib
else
LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
fi
我們還可以使用參數擴展設置庫路徑,如下所示:
PYTHONPATH=/usr/local${PYTHONPATH:+:${PYTHONPATH}}
LD_LIBRARY_PATH=/usr/local/lib${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
讓新路徑生效
source ~/.profile
- 驗證Caffe2 python模塊是否可以被正確調用
$ python -c 'from caffe2.python import core' 2>/dev/null && echo "Success" || echo "Failure"
- 驗證Caffe2是否可以在GPU支持下運行
python2 -c 'from caffe2.python import workspace; print(workspace.NumCudaDevices())'
(譯)綜合指南:通過Ubuntu 16.04上從Source構建來安裝支持GPU的Caffe2