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-实例列表”里看到你的机器啦。默认名称是一个内部序号,如果服务器多的话为了方便区分,可以在右边的按钮重新输入名称:
当然,我们也可以在“监控”页面中找到服务器的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各个版本,所以我们下载一个Python3.5版本的Python。
我们直接用apt下载就可以 apt-get install python。但他默认是2.7版本。安装完成后进入到了等待模式,输入python可以看到是2.7版:
所以我们需要通过指定版本号方式来安装
apt-get install python=3.5
当然我们也可以通过源码方式安装python3.5
wget [https://www.python.org/ftp/python/3.5.6/Python-3.5.6.tgz]
下载Python3.5后解压该包:
tar -xvf Python-3.5.6.tgz
进入该包:
cd Python-3.5.6.tgz
配置
./configure
编译:
make
make install
安装完毕
之后需要安装Pip。Pip是python的一个包管理工具,可以用它方便地直接下载安装python包。
输入 apt-get install python3-pip 安装,他会默认安装python3版本对应的PIP管理器
安装完成后,输入pip -V来查看pip的版本
装好pip后,首先先把numpy模块装好,因为他是paddlepaddle必备环境包
Pip install numpy
Pip默认已经用的是国外的源,那速度简直是再难,我们临时用清华源来安装:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy
安装完成后,进入python,输入import numpy as py 若没有报错则安装成功。
下面进入安装PaddlePaddle阶段。
安装PaddlePaddle有三种方式:
- 最简单的方式当然是用pip包管理器安装
- 编译源码安装
- 在docker中安装
1 :Pip安装
1.1 用pip直接安装可以拉取到最新的fluid1.2的cpu版本:
pip install paddlepaddle
1.2 安装gpu版本前提是安装了CUDA和cudnn,CUDA官方支持的是cuda9、cuda8和cuda7.5。Cuddn加速的话PaddlePaddle可以使用cudnn v2之后的任何一个版本来编译运行,但推荐使用它目前所支持的最高版本最新版本的cudnn7。所以目前官方推荐的环境为cuda9+cuDNN7:
pip install paddlepaddle-gpu
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
3:在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版本(cuda9.0_cudnn7_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:1.2-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
然后在浏览器中输入以下网址:
皆可打开Jupyter Notebook客户页面
以上PaddlePaddle Fluid的三种安装方式就介绍完成啦。
目前PaddlePaddle已经更新到Fluid 1.2版本,在安装覆盖面上做了大量的优化,不仅做到了业界首个官方支持CentOS操作系统,并且支持了Windows 7/8/10,大家可以在个人PC上更便捷的玩转PaddlePaddle。
值得一提的是,最近官方上线了全中文API文档:http://www.paddlepaddle.org/documentation/docs/zh/1.2/api_cn/index_cn.html,现在看文档的我明显神清气爽了很多!