史上最详细的 PaddlePaddle 从安装到部署、从桌面到服务器

摘要

真正从零开始,PaddlePaddle 详细安装入门图文教程!

 AI 这个概念好像突然就火起来了,年初大比分战胜李世石的 AlphaGo 成功的吸引了大量的关注,但其实看看你的手机上的语音助手,相机上的人脸识别,今日头条上帮你自动筛选出来的新闻,还有各大音乐软件的歌曲「每日推荐」……形形色色的 AI 早已进入我们生活的方方面面。深刻的影响了着我们,可以说,这是一个 AI 的时代。

其实早在 2016 年 9 月,百度就开源了 PaddlePaddle 深度学习框架,并且很快就吸引了很多来自百度外的参与者。相信有不少同学曾经有着对这款又新鲜又强大的深度学习框架蠢蠢欲动,虽然有关 PaddlePaddle 的教程不太多,但百度官方就在 PaddlePaddle 的官网给出了一份详细的教程,包括其 API 和函数文档。不过它仍然是有门槛的,尤其是对于对计算机及编程环境搭建了解不深的同学,可能看着页面上凭空给出的代码及操作陷入懵逼。

真正从零开始,PaddlePaddle 详细安装入门图文教程!

而今天我要做的,就是带着所有这些几乎没有编程基础却很想学习 PaddlePaddle 的同学跨过这道坎。告诉你们大家如何准备好使用 PaddlePaddle 进行编程所需的一切,以及如何看懂教程上的那些代码所代表的含义,那么废话不多说,我们马上开始。

第一步,找一台计算机

首先,我们第一步要有一个计算设备,俗话说巧妇难为无米之炊。你可以租用云服务器,当然也可以利用你手上现有的计算机和服务器。在这里为了使初始安装环境纯净,我将申请一个百度云服务器。

我们进入百度云官网,在产品中选择「云服务器 BBC」。点击购买:

在购买时,云服务器类型选择「GPU 实例」,因为其他类型的云服务器都没有配置 GPU。有时候「GPU 实例」处于不可用状态,是因为该地区服务器已经被租完,这就要在左上角选择其他地区的服务器集群,或者更换「可用区」:

我换到了苏州的集群。下一步,在 GPU 型号的选择上,因为老黄的那个条款,NVIDIA GeForce 系列的 GPU 不允许用在商用深度学习领域,只能个人研究使用或者玩游戏,所以目前只有 4 种可以选:P40、P4、K40 和 NVIDIA 深度学习开发卡。他们在参数上有两种差别,一个是计算能力,一个是缓显存。例如:P4 的单精度性能是 5.5Tflops,P40 性能是 12Tflops。因为深度学习主要使用单精度计算(其实除了天气预测,流体模拟,量子色动力学等极端科研项目,用到的都是单精度或者半精度的运算),所以这个指标在实际影响上在你训练时训练速度快慢的问题。第二个差别就是 GPU 显存,显存问题其实优化的合理 8G 足够用,优化不合理,给你 100G 都会爆显存。有的热用了 CNN,你随便做个内积内存就翻倍了肯定要炸的。

其他的一路默认就可以,如果想用 SSD,在存储层面点击「创建云磁盘」,选择」SSD 云磁盘「,调整合适的容量就可以,之后会挂在在系统上:

如果你想要从外网访问这个服务器,要选择「购买弹性公网 IP」,实际就是给你的服务器分配一个公网 IP,不然的话你只能从管理页面在网页上使用 VNC 远程连接。

之后根据自己的实际情况填写服务器登录密码和购买时长。linux 系统为 root,windows 系统为 Administrator。整体就是这个样子:

付费方式可以选预付费和后付费,如果不是计算重度使用用户,使用后付费会便宜很多,以为他是按照使用量计费的。

付费完成后就可以在账户的「云服务器 BCC-实例列表」里看到你的机器啦。默认名称是一个内部序号,如果服务器多的话为了方便区分,可以在右边的按钮重新输入名称:

点击右侧的「VNC 远程」可以从网页端连接到服务器的 SHELL。

当然,我们也可以在「监控」页面中找到服务器的 IP 地址,用 XSHELL 或者 PUTTY 等工具链接到服务器,在这用 XSHELL 演示一下:

连接:

接受并保存主机密钥。Linux 用户名初始为 root,建议使用 root,就是为了方便,不用经常打 sudo 和输入密码:

正确输入密码后就连接到服务器的 shell 了:

这样一台可用的服务器就准备好了。

如果使用的而是自己的机器的话,请确保机器环境与以上一致

第二步

拿到 shell 后第一步当然是要换一个国内的 apt 源,我找了一个清华的源:

执行如下操作,备份原文件后,新建一个原文件:

# mv /etc/apt/sources.list /etc/apt/sources2.list

# vi /etc/apt/sources.list

使用 i 键进入编辑模式,然后将以下内容使用 shift+insert 复制进去:

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse

# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse

# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse

# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse

# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse

输入后 按下 esc,然后按下英文半角的冒号「:」,后输入 wq,回车,就保存了。

最后别忘了输入 apt-get update 更新一下源文件

因为目前 PaddlePaddle 与 python3 不兼容,所以我们要需要一个 2.7 版本的 python。

我们直接用 apt 下载就可以 apt-get install python。他默认是 2.7 版本。安装完成后进入到了等待模式,输入 python 可以看到是 2.7 版:

当然我们也可以通过源码方式安装 python2.7

wget [https://www.python.org/ftp/python/2.7.13/Python-2.7.13.tgz]

下载 Python2.7

解压该包:

tar -xvf Python-2.7.13.tgz

进入该包:

cd Python-2.7.13

配置

./configure

编译:

make

make install

安装完毕

之后需要安装 pip。Pip 使用 python 的一个包管理工具,可以用它方便地直接下载安装 python 包。

输入 apt-get install python-pip 安装,他会默认安装 python 默认的 2.7 版本对应的 PIP 管理器

安装完成后,输入 pip -V 来查看 pip 的版本

装好 pip 后,首先先把 numpy 模块装好,因为他是 paddlepaddle 必备环境包

Pip install numpy

Pip 默认已经用的是国外的源,那速度简直是再难,我们临时用清华源来安装:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyspider

安装完成后,进入 python,输入 import numpy as py 若没有报错则安装成功。

下面进入安装 PaddlePaddle 阶段。

安装 PaddlePaddle 有三种方式:

  1. 最简单的方式当然是用 pip 包管理器安装

  2. 编译源码安装

  3. 在 docker 中安装

1.1 用 pip 直接安装:

pip install -i https://pypi.douban.com/simple paddlepaddle==0.11.0

1.2 安装 gpu 版本前提是安装了 CUDA 和 cudnn5,CUDA 官方支持的是 cuda7.5 和 cuda8。Cuddn 加速的话 PaddlePaddle 可以使用 cudnn v2 之后的任何一个版本来编译运行,但推荐使用它目前所支持的最高版本最新版本的 cudnn5):

pip install -i https://pypi.douban.com/simple paddlepaddle-gpu==0.11.0

2:从源码中编译

编译依赖:

PaddlePaddle 编译需要使用到下面的依赖(包含但不限于),其他的依赖软件,会自动在编译时下载。

PaddlePaddle 编译依赖

|依赖 | 版本 | 说明|

|CMake| >=3.5| |

|GCC | 4.8.2 |推荐使用 CentOS 的 devtools2|

|Python| 2.7.x |依赖 libpython2.7.so|

|pip |>=9.0 | |

|numpy |||

|SWIG| >=2.0||

|Go |>=1.8 |可选|

首先你要吧源码从 github 上下载下来,并且进入 paddle 文件目录

git clone https://github.com/PaddlePaddle/Paddle.git

cd Paddle # 进入 paddle 文件目录

mkdir build # 创建编译文件夹

cd build # 进入编译文件夹

cmake -DWITH_GPU=OFF -DWITH_TESTING=OFF .. # 不要看漏后面有两个点,如果你安装的而是 GPU 版本的话,如想要支持 GPU,请在编译参数 DWITH_GPU 设置为 ON

以下是 cmake -D 参数支持的所有编译选项:

  • WITH_GPU 是否支持 GPU。取决于是否寻找到 CUDA 工具链

  • WITH_DOUBLE 是否使用双精度浮点数。否

  • WITH_DSO 是否运行时动态加载 CUDA 动态库,而非静态加载 CUDA 动态库。是

  • WITH_AVX 是否编译含有 AVX 指令集的 PaddlePaddle 二进制文件 是

  • WITH_PYTHON 是否内嵌 PYTHON 解释器。方便今后的嵌入式移植工作。是

  • WITH_STYLE_CHECK 是否编译时进行代码风格检查 是

  • WITH_RDMA 是否开启 RDMA 否

  • WITH_TIMER 是否开启计时功能。如果开启会导致运行略慢,打印的日志变多,但是方便调试和测 Benchmark 否

  • WITH_TESTING 是否开启单元测试 取决于是否寻找到 GTEST

  • WITH_DOC 是否编译中英文文档 否

  • WITH_SWIG_PY 是否编译 PYTHON 的 SWIG 接口,该接口可用于预测和定制化训练 取决于是否寻找到 SWIG

make

编译完成后会在 build/python/dist 目录下生成输出的 whl 包,可以选在在当前机器安装:

Make install

可以拷贝到目标机器安装:

pip install 目标路径/*.whl

如果之前机器上安装了旧版本的 paddle,可以利用编译的二进制包,使用-U 参数来升级安装:

pip install 目标路径/*.whl -U

在 docker 中安装

百度把 PaddlePaddle 的编译环境打包成一个镜像,称为开发镜像,里面涵盖了 PaddlePaddle 需要的所有编译工具。把编译出来的 PaddlePaddle 也打包成一个镜 像,称为生产镜像,里面涵盖了 PaddlePaddle 运行所需的所有环境。每次 PaddlePaddle 发布新版本的时候都会发布对应版本的生产镜像以及开发镜像。运 行镜像包括纯 CPU 版本和 GPU 版本以及其对应的非 AVX 版本。他们会在 dockerhub.com 提供最新 的 Docker 镜像

使用 Docker 安装和运行 PaddlePaddle 可以无需考虑依赖环境即可运行。并且也可以在 Windows 的 docker 中运行。如果你不了解 docker 的安装和基本操作,可以在这里 http://docker-doc.readthedocs.io/zh_CN/latest/ 找到中文版的 docker 手册,找到你对应的操作系统开始学习使用 docker。

在了解 Docker 的基本使用方法之后,即可开始下面的步骤:

执行下面的命令来下载 PaddlePaddle 的 Docker 镜像,默认是 cpu 出版本的:

docker pull paddlepaddle/paddle

但镜像的默认地址依旧是国外的,为了方便在国内的开发者下载 Docker 镜像,百度提供了国内的镜像服务器供大家使用。我们使用 paddle 提供的一个国内的服务器下载:

docker pull docker.paddlepaddlehub.com/paddle

下载 GPU 版本(cuda8.0_cudnn5_avx_mkl)的 Docker 镜像:

docker pull paddlepaddle/paddle:latest-gpu # 默认

docker pull docker.paddlepaddlehub.com/paddle:latest-gpu # 推荐使用

下载使用不同的 BLAS 库的 Docker 镜像:

默认是使用 MKL 的镜像

docker pull paddlepaddle/paddle

使用 OpenBLAS 的镜像

docker pull paddlepaddle/paddle:latest-openblas

下载指定版本的 Docker 镜像,可以从 DockerHub 网站 获取可选的 tag,并执行下面的命令:

docker pull paddlepaddle/paddle:[tag]

比如:

docker pull docker.paddlepaddlehub.com/paddle:0.11.0-gpu

在 Docker 中执行 PaddlePaddle 训练程序

运行 PaddlePaddle Book

Jupyter Notebook 是一个开源的 web 程序,大家可以通过它制作和分享带有代码、公式、图表、文字的交互式文档。用户可以通过网页浏览文档。

PaddlePaddle Book 是为用户和开发者制作的一个交互式的 Jupyter Nodebook。如果您想要更深入了解 deep learning,PaddlePaddle Book 一定是您最好的选择。

我们提供可以直接运行 PaddlePaddle Book 的 Docker 镜像,直接运行:

docker run -p 8888:8888 paddlepaddle/book

然后在浏览器中输入以下网址:

http://localhost:8888/

皆可打开 Jupyter Notebook 客户页面


最新文章

极客公园

用极客视角,追踪你最不可错过的科技圈。

极客之选

新鲜、有趣的硬件产品,第一时间为你呈现。

顶楼

关注前沿科技,发表最具科技的商业洞见。