深度学习入门:详解 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:

深度学习入门:详解 Ubuntu 下 PaddlePaddle 源码编译安装_第1张图片

这就说明我们的 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_gpu 是 ON 的状态

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 以及推荐领域的应用!

你可能感兴趣的:(人工智能)