1. 程式人生 > >深度學習入門:詳解 Ubuntu 下 PaddlePaddle 原始碼編譯安裝

深度學習入門:詳解 Ubuntu 下 PaddlePaddle 原始碼編譯安裝

PaddlePaddle 是百度開源的一個深度學習框架,Paddle 提供的 Paddle book 對於那些深度學習入門的人簡直再方便不過。

想用 Paddle 進行模型訓練必然先進行安裝,這篇文章主要詳細的記錄一下 Paddle cpu 和 gpu 的原始碼編譯安裝。 個人認為原始碼的方式最簡單粗暴,而且透明。

內容

  • 安裝依賴
  • PaddlePaddle CPU 原始碼編譯安裝
  • PaddlePaddle GPU 原始碼編譯安裝

在正式安裝之前必須解決以下幾個依賴問題

Note❕ ⚠️⚠️⚠️ 這塊非常關鍵,以下的依賴只要有一個不滿足的話,肯定編譯出問題!無論 cpu 還是 gpu 安裝都得解決以下依賴。

1.1

用 gcc –version 命令 檢視一下自己電腦上 gcc 的版本,如果低於 4.8, 那麼請看這篇文章將 gcc 進行升級到 4.8 以上。

1.2

用 cmake –version 檢視 cmake 的版本,如果版本低於 3.0(對於 linux)3.4(對於 mac os), 請升級自己電腦的 cmake 版本。以下的命令可以安裝 cmake3.4。

curl -sSL https://cmake.org/files/v3.4/cmake-3.4.1.tar.gz | tar -xz && \
    cd cmake-3.4.1 && ./bootstrap && make -j4 && sudo
make install && \ cd .. && rm -rf cmake-3.4.1

1.3

用 python –version 檢視以下自己的 python 是不是 python27, 一般情況,mac 和 linux 都自帶 python27。

1.4

用 go version 命令檢視自己電腦是否有 go 的環境,如果沒有的話, 用 sudo apt-get install golang 這條命令來安裝

1.5 安裝其他依賴

$ sudo apt-get install -y git curl gfortran make build-essential
automake swig libboost-all-dev $ sudo apt-get install -y python-pip python-numpy libpython-dev bison $ pip install --upgrade pip $ sudo pip install 'protobuf==3.1.0.post1' $ sudo pip install wheel

Paddle CPU 編譯和安裝

1. 從 github 上把 Paddle 程式碼 clone 到本地

$ git clone https://github.com/PaddlePaddle/Paddle.git  paddle
$ cd paddle

2. cmake 生成 Makefile

$ mkdir build
$ cd build
$ cmake ..

Note : 如果使用命令 cmake .. 來生成 makefile,最終的 paddle 會安裝到/usr/local 下,如果想安裝到其他路徑(我們假定這個路徑為 $PADDLE_INSTALL_PATH), 我們可以這麼寫:
cmake .. -DCMAKE_INSTALL_PREFIX=$PADDLE_INSTALL_PATH,這樣最終編譯的 paddle 會安裝到 $PADDLE_INSTALL_PATH 下。

3. 編譯安裝

$ make -j `nproc`
$ sudo make install

Note : 因為我使用的是預設安裝路徑,最終要再全域性環境(/usr/local下)中生成檔案,所以 make 時候得加 sudo。執行結束後,Paddle 已經編譯完成,在我的電腦上會顯示以下 log:

這就說明我們的 paddle 已經安裝完成,我們可以用命令 paddle version 來檢視是否安裝成功:

$ paddle version
PaddlePaddle 0.10.0, compiled with
    with_avx: OFF
    with_gpu: OFF
    with_mkldnn: OFF
    with_mklml: OFF
    with_double: OFF
    with_python: ON
    with_rdma: OFF
    with_timer: OFF

4. 安裝 Paddle python 介面

根據上一步驟的 log 可以看出,通過make install後, 生成了一個/usr/local/opt/paddle/share/wheels/paddlepaddle-0.10.0-cp27-none-linux_x86_64.whl檔案。 執行以下命令進行 paddle python 安裝:

$ sudo pip install -U  /usr/local/opt/paddle/share/wheels/paddlepaddle-0.10.0-cp27-none-linux_x86_64.whl

5. 測試

$ python
>>>  import paddle.v2 as paddle

如果沒有出現 ImportError: No module named paddle,那恭喜,你已成功編譯安裝 paddle for cpu。

6. 跑一個 demo

從 github 上 clone paddle book 中的程式碼:

$ cd ~/
$ git clone https://github.com/PaddlePaddle/book.git  paddle_book
$ cd paddle_book/01.fit_a_line
$ python train.py

Paddle GPU 編譯和安裝

1. 安裝 CUDA 和 cuDNN

安裝 CUDA 8.0

$ sudo apt-get update && sudo apt-get install wget -y --no-install-recommends
$ wget "http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_8.0.61-1_amd64.deb"
$ sudo dpkg -i cuda-repo-ubuntu1604_8.0.61-1_amd64.deb
$ sudo apt-get update
$ sudo apt-get install cuda

安裝 cuDNN5.1

$ wget http://developer.download.nvidia.com/compute/redist/cudnn/v5.1/cudnn-8.0-linux-x64-v5.1.tgz
$ sudo tar -xzf cudnn-8.0-linux-x64-v5.1.tgz -C /usr/local
$ rm cudnn-8.0-linux-x64-v5.1.tgz && sudo ldconfig

2. 編譯安裝(和 cpu 過程一樣)

$ git clone https://github.com/PaddlePaddle/Paddle.git  paddle_gpu
$ cd paddle_gpu
$ mkdir build
$ cd build
$ cmake .. 
$ make -j `nproc`
$ sudo make install
$ sudo pip install -U  /usr/local/opt/paddle/share/wheels/paddlepaddle-0.10.0-cp27-none-linux_x86_64.whl  

3. 測試

$ paddle version
PaddlePaddle 0.10.0, compiled with
    with_avx: OFF
    with_gpu: ON
    with_mkldnn: OFF
    with_mklml: OFF
    with_double: OFF
    with_python: ON
    with_rdma: OFF
    with_timer: OFF

可以看出 with_gpuON 的狀態

4. Run a Demo

從 github 上 clone paddle book 中的程式碼:

$ cd ~/
$ git clone https://github.com/PaddlePaddle/book.git  paddle_book
$ cd paddle_book/01.fit_a_line
$ export WITH_GPU=1
$ python train.py

到這裡,paddle 的編譯安裝已經說的差不多了,不過因為每個人的機器環境不一樣,很可能你按照上述的方法去安裝時候還會遇到問題,可以在下方留言,或者去這裡提 issue,paddle 的同志們回覆還是很快的。

最後, 非常推薦去看一下 paddle book,對想入門深度學習的筒子來說,這個 book 能能讓你快速的瞭解學習深度學習在影象 nlp 以及推薦領域的應用!