前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《我的PaddlePaddle学习之路》笔记一——PaddlePaddle的安装

《我的PaddlePaddle学习之路》笔记一——PaddlePaddle的安装

作者头像
夜雨飘零
修改2020-05-23 09:05:21
9380
修改2020-05-23 09:05:21
举报
文章被收录于专栏:CSDN博客CSDN博客

原文博客:Doi技术团队 链接地址:https://blog.doiduoyi.com/authors/1584446358138 初心:记录优秀的Doi技术团队学习经历

环境


系统:Ubuntu 16.0.4(64位)

处理器:Intel® Celeron® CPU

内存:8G

环境:Python 2.7

Windows系统的安装


PaddlePaddle目前还不支持Windows,如果读者直接在Windows上安装PaddlePaddlePaddle的话,就会提示没有找到该安装包。如果读者一定要在Windows上工作的话,笔者提供两个建议:一、在Windows系统上使用Docker容器,在Docker容器上安装带有PaddlePaddle的镜像;二、在Windows系统上安装虚拟机,再在虚拟机上安装Ubuntu。

本篇文章基于 PaddlePaddle 0.11.0、Python 2.7

在Windows上安装Docker容器

首先下载Docker容器的工具包DockerToolbox,笔者使用这个安装包不仅仅只有Docker,它还包含了VirtualBox虚拟机,使用者工具包我们就不用单独去安装VirtualBox虚拟机了,DockerToolbox的官网下载地址:

代码语言:txt
复制
https://docs.docker.com/toolbox/toolbox_install_windows/

下载之后,就可以直接安装了,双击安装包,开始安装

选择安装路径,笔者使用默认的安装路径

然后安装所依赖的软件,因为笔者之前在电脑上已经安装了git,所以在这里就不安装了,其他都要勾选

这一步不用修改什么,让程序为我们创建一个桌面快捷键

最后就可以安装了,等待一小段时间即可

到这里就安装完成了

安装完成之后,如果直接启动Docker的话,有可能可能会卡在这里,因为还有下载一个boot2docker.iso镜像,网速比较慢的话就可能一直卡在这里。所以我们还要镜像下一步操作

代码语言:txt
复制
Running pre-create checks...
(default) No default Boot2Docker ISO found locally, downloading the latest release...
(default) Latest release for github.com/boot2docker/boot2docker is v17.12.1-ce
(default) Downloading C:\Users\15696\.docker\machine\cache\boot2docker.iso from https://github.com/boot2docker/boot2docker/releases/download/v17.12.1-ce/boot2docker.iso...

在下载DockerToolbox的时候,这个工具就已经带有boot2docker.iso镜像了。并且存在DockerToolbox安装的路径上,笔者的路径是:

代码语言:txt
复制
C:\Program Files\Docker Toolbox\boot2docker.iso

我们把这个镜像复制到用户目录\.docker\machine\cache\,如笔者的目录如下:

代码语言:txt
复制
C:\Users\15696\.docker\machine\cache\

复制完成之后,双击桌面快捷方式Docker Quickstart Terminal,启动Docker,命令窗口会输出以下信息:

代码语言:txt
复制
Running pre-create checks...
Creating machine...
(default) Copying C:\Users\15696\.docker\machine\cache\boot2docker.iso to C:\Users\15696\.docker\machine\machines\default\boot2docker.iso...
(default) Creating VirtualBox VM...
(default) Creating SSH key...
(default) Starting the VM...
(default) Check network to re-create if needed...
(default) Windows might ask for the permission to create a network adapter. Sometimes, such confirmation window is minimized in the taskbar.
(default) Found a new host-only adapter: "VirtualBox Host-Only Ethernet Adapter #3"
(default) Windows might ask for the permission to configure a network adapter. Sometimes, such confirmation window is minimized in the taskbar.
(default) Windows might ask for the permission to configure a dhcp server. Sometimes, such confirmation window is minimized in the taskbar.
(default) Waiting for an IP...

最后看到Docker的logo就表示成功安装Docker容器了

代码语言:txt
复制
                        ##         .
                  ## ## ##        ==
               ## ## ## ## ##    ===
           /"""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ /  ===- ~~~
           \______ o           __/
             \    \         __/
              \____\_______/

docker is configured to use the default machine with IP 192.168.99.100
For help getting started, check out the docs at https://docs.docker.com

Start interactive shell

15696@ɵ MINGW64 ~
$

到这就可以使用Docker来安装PaddlePaddle了,具体请看本文章中关于Docker使用PaddlePaddle部分

在Windows上安装Ubuntu

在Windows上在Ubuntu就要先安装虚拟机,虚拟机有很多,笔者使用的是开源的VirtualBox虚拟机,VirtualBox的官网:

代码语言:txt
复制
https://www.virtualbox.org/

安装完成VirtualBox虚拟机之后,进入到VirtualBox虚拟机中点击新建,创建一个系统

选择分配的内存,我这里只是分配了2G,如果正式使用PaddlePaddle训练模型,这远远不够,读者可以根据需求分配内存

创建一个虚拟硬盘

选择默认的VDI硬盘文件类型

这里最好是选择动态分配硬盘,这样虚拟机会根据实际占用的空间大小使用电脑本身的磁盘大小,这样会减少电脑空间的占用率的。如果是固定大小,那么创建的虚拟机的虚拟硬盘一开始就是用户设置的大小了。

这里就是选择虚拟硬盘大小的,最后分配20G以上,笔者分配30G,应该够用。

然后选择刚才创建的Ubuntu系统,点击设置,这系统中取消勾选软驱,然后点击存储,选择Ubuntu镜像,笔者使用的是64位Ubuntu 16.04 桌面版的镜像

最后就可以启动安装Ubuntu了。选择我们创建的Ubuntu系统,点击启动

进入到开始安装界面,为了方便使用,笔者选择中文版的

为了安装之后不用在安装和更新应用,笔者勾选了安装Ubuntu时下载更新,这样在安装的时候就已经更新应用了

然后是选安装的硬盘,因为我们使用的自己创建的整一个硬盘,所以我们可以直接选择青春整个硬盘并安装Ubuntu,这里就不用考虑分区和挂载问题了

选择所在的位置,这没什么要求的,笔者随便选择一个城市

然后是选择键盘的布局,通常的键盘布局都是英语(美国)

创建Ubuntu的用户名称和密码

最后就是安装了,这个安装过程可能有点久,耐心等待

安装完成之后就可以在Windows系统上使用Ubuntu系统了,我们再使用Ubuntu来学习和使用PaddlePaddle做深度学习了。最好安装完成之后,把在存储中设置的Ubuntu镜像移除

在本篇文章之后部分都是在Ubuntu上操作,我们都可以使用Ubuntu这虚拟机来完成。

如果读者使用的是Windows 10,可以使用Windows系统自带的Linux子系统,安装教程可以看我之前的文章Windows10安装Linux子系统

使用pip安装


如果你还没有在pip命令的话,首先要安装pip,要确保安装的pip版本是大于9.0.0的,否则可能无法安装paddlepaddle。

安装pip命令如下:

代码语言:txt
复制
sudo apt install python-pip

安装之后,还有看一下pip的的版本pip --version,如果版本低于9.0.0,那要先升级pip,先要下载一个升级文件,命令如下:

代码语言:txt
复制
wget https://bootstrap.pypa.io/get-pip.py

下载完成之后,可以使用这个文件安装最新的pip了

代码语言:txt
复制
python get-pip.py

安装pip就可以动手安装paddlepaddle了。如果权限不够,请在root下执行命。笔者使用了阿里的镜像源,这样下载速度会快很多。

代码语言:txt
复制
pip install paddlepaddle==0.11.0 -i https://mirrors.aliyun.com/pypi/simple/

现在就测试看看paddlepaddle有没有,在python的命令终端中试着导入paddlepaddle包:

代码语言:txt
复制
 import paddle.v2 as paddle

如果没有报错的话就证明paddlepaddle安装成功了

使用Docker安装


为什么要使用Docker安装paddlepaddle呢,Docker是完全使用沙箱机制的一个容器,在这个容器安装的环境是不会影响到本身系统的环境的。通俗来说,它就是一个虚拟机,但是它本身的性能开销很小。在使用Docker安装paddlepaddle前,首先要安装Docker,通过下面的命令就可以安装了:

代码语言:txt
复制
sudo apt-get install docker.io

安装完成之后,可以使用docker --version查看Docker的版本,如果有显示,就证明安装成功了。可以使用docker images查看已经安装的镜像。

一切都没有问题之后,就可以用Docker安装paddlepaddle了,命令如下:

代码语言:txt
复制
docker pull hub.baidubce.com/paddlepaddle/paddle

在这里不得不说的是,这个安装过程非常久,也许是笔者的带宽太小了。安装完成后,可以再使用docker images命令查看安装的镜像,应该可以 看到类似这样一个镜像,名字和TAG会相同,其他信息一般不同

代码语言:txt
复制
hub.baidubce.com/paddlepaddle/paddle   latest                         2b1ae16d846e        27 hours ago        1.338 GB

从源码编译生成安装包


我们的硬件环境都有很大的不同,官方给出的pip安装包不一定是符合我们的需求,比如笔者的电脑是不支持AVX指令集的,在官方中没找到这个的安装包(也行现在已经有了),所以我们要根据自己的需求来打包一个自己的安装包

在本地编译生成安装包

1. 安装依赖环境

在一切开始之前,先要安装好依赖环境,下面表格是官方给出的依赖环境

依赖

版本

说明

GCC

4.8.2

推荐使用CentOS的devtools2

CMake

=3.2

Python

2.7.x

依赖libpython2.7.so

pip

=9.0

numpy

SWIG

=2.0

Go

=1.8

可选

1.1 安装GCC

一般现在的Ubuntu都是高于个版本了,可以使用gcc --version查看安装的版本。比如笔者的是4.8.4,如果你的是版本是低于4.8.2的就要更新一下了

代码语言:txt
复制
sudo apt-get install gcc-4.9

1.2 安装CMake

先要从官网下CMake源码

代码语言:txt
复制
wget https://cmake.org/files/v3.8/cmake-3.8.0.tar.gz

解压源码

代码语言:txt
复制
tar -zxvf cmake-3.8.0.tar.gz

依次执行下面的代码

代码语言:txt
复制
# 进入解压后的目录
cd cmake-3.8.0
# 执行当前目录的bootstrap程序
./bootstrap
# make一下
make
# 开始安装
sudo make install

查看是否安装成功,cmake --version,如果正常显示版本,那已经安装成功了。

1.3 安装pip

关于安装pip9.0.0以上的版本,在上面的使用pip安装部分已经讲了,这里就不在熬述了

1.4 安装numpy

安装numpy很简单,一条命令就够了

代码语言:txt
复制
sudo apt-get install python-numpy

顺便多说一点,matplotlib这个包也经常用到,顺便安装一下

代码语言:txt
复制
sudo apt-get install python-matplotlib

1.5 安装SWIG

执行下面代码安装SWIG,安装成功之后,使用swig -version检查安装结果

代码语言:txt
复制
sudo apt-get install -y git curl gfortran make build-essential automake swig libboost-all-dev

1.6 安装Go

官方说可选择,那看情况吧,如果像安装安装吧,笔者顺便安装了,就一条代码的事情,老规则go version

代码语言:txt
复制
sudo apt-get install golang

到这里,依赖环境就已经安装好了,准备安装paddlepaddle

2.首先要在GitHub上获取paddlepaddle源码

代码语言:txt
复制
git clone https://github.com/PaddlePaddle/Paddle.git

3.然后输以下命令

代码语言:txt
复制
# 进入刚下载的Paddle里面
cd Paddle
# 切换到0.11.0分支
git checkout release/0.11.0
# 创建一个build文件夹
mkdir build
# 进入build文件夹里
cd build
# 这就要选好你的需求了,比如笔者没有使用GPU,不支持AVX,为了节省空间,我把测试关闭了,这样会少很多空间。最后不要少了..
cmake .. -DWITH_GPU=OFF -DWITH_AVX=OFF -DWITH_TESTING=OFF
# 最后make,使用4个线程编译生成你想要的安装包,这个可能很久,一定要有耐心
make -j4

经过长久的make之后,终于生成了我们想要的安装包,它的路径在Paddle/build/python/dist下,比如笔者在该目录下有这个安装包paddlepaddle-0.11.0-cp27-cp27mu-linux_x86_64.whl,你的命名可能不是这个。之后就可以安装了,使用pip安装:

代码语言:txt
复制
# 请切入到该目录
cd build/python/dist/
# 每个人的安装包名字可能不一样。如果权限不够,请在root下执行命令
pip install paddlepaddle-0.11.0-cp27-cp27mu-linux_x86_64.whl

这个我们就已经安装了paddlepaddle,现在就测试看看paddlepaddle有没有安装成功了,在python的命令终端中试着导入paddlepaddle包:

代码语言:txt
复制
import paddle.v2 as paddle

如果没有报错的话就证明paddlepaddle安装成功了

在Docker编译生成安装包

使用Docker就轻松很多了,有多轻松,看一下便知,以下的命令都是在Ubuntu本地操作的,全程不用进入到docker镜像中的。

1.首先要在GitHub上获取paddlepaddle源码

代码语言:txt
复制
git clone https://github.com/PaddlePaddle/Paddle.git

2.切入到项目的根目录下

代码语言:txt
复制
cd Paddle

切换到0.11.0分支

代码语言:txt
复制
git checkout release/0.11.0

3.生成安装包

执行以下代码,生成whl安装包,这个跟在本地操作差不多。

代码语言:txt
复制
# 启动并进入镜像
docker run -v $PWD:/paddle -it hub.baidubce.com/paddlepaddle/paddle:latest-dev /bin/bash
# 创建并进入build镜像
mkdir -p /paddle/build && cd /paddle/build
# 安装缺少的依赖环境
pip install protobuf==3.1.0
# 安装依赖环境
apt install patchelf
# 生成编译环境
cmake .. -DWITH_GPU=OFF -DWITH_AVX=OFF -DWITH_TESTING=OFF
# 开始编译
make -j4

然后使用exit命令退出镜像,再Ubuntu系统本地的Paddle/build/python/dist目录下同样会生成一个安装包,这对比在本地生成的安装包,是不是要简单很多,没错这就是Docker强大之处,所有的依赖环境都帮我们安装好了,现在只要安装这个安装包就行了:

代码语言:txt
复制
# 请切入到该目录
cd build/python/dist/
# 每个人的安装包名字可能不一样。如果权限不够,请在root下执行命令
pip install paddlepaddle-0.11.0-cp27-cp27mu-linux_x86_64.whl

同样我们要测试看看paddlepaddle有没有安装成功了,在python的命令终端中试着导入paddlepaddle包:

代码语言:txt
复制
 import paddle.v2 as paddle

如果没有报错的话就证明paddlepaddle安装成功了

编译Docker镜像


如果你比较喜欢使用Docker来运行你的paddlepaddle代码,但是有没有你想要的镜像,这是就要自己来制作一个Docker镜像了,比如笔者的电脑是不支持AVX指令集的,还只有CPU,那么我就要一个不用AVX指令集和使用CPU训练的镜像。好吧,我们开始吧

1.我们要从GitHub下载源码:

代码语言:txt
复制
git clone https://github.com/PaddlePaddle/Paddle.git

2.安装开发工具到 Docker image里

代码语言:txt
复制
# 切入到Paddle目录下
cd Paddle
# 切换到0.11.0分支
git checkout release/0.11.0
# 下载依赖环境并创建镜像,别少了最后的.
docker build -t paddle:dev .

有可能它不能够命名为paddle:dev,我们可以对他从重新命名,ID要是你镜像的ID

代码语言:txt
复制
# docker tag <镜像对应的ID> <镜像名:TAG>
例如:docker tag 1e835127cf33 paddle:dev

3.编译

代码语言:txt
复制
# 这个编译要很久的,请耐心等待
docker run --rm -e WITH_GPU=OFF -e WITH_AVX=OFF -v $PWD:/paddle paddle:dev

安装完成之后,使用docker images查看刚才安装的镜像

测试安装环境


我们就使用官方给出的一个例子,来测试我们安装paddlepaddle真的安装成功了

1.创建一个记事本,命名为housing.py,并输入以下代码:

代码语言:txt
复制
import paddle.v2 as paddle

# Initialize PaddlePaddle.
paddle.init(use_gpu=False, trainer_count=1)

# Configure the neural network.
x = paddle.layer.data(name='x', type=paddle.data_type.dense_vector(13))
y_predict = paddle.layer.fc(input=x, size=1, act=paddle.activation.Linear())

# Infer using provided test data.
probs = paddle.infer(
    output_layer=y_predict,
    parameters=paddle.dataset.uci_housing.model(),
    input=[item for item in paddle.dataset.uci_housing.test()()])

for i in xrange(len(probs)):
    print 'Predicted price: ${:,.2f}'.format(probs[i][0] * 1000)

2.执行一下该代码

在本地执行代码请输入下面的命令

代码语言:txt
复制
python housing.py

在Docker上执行代码的请输入下面的代码

代码语言:txt
复制
docker run -v $PWD:/work -w /work -p 8899:8899 hub.baidubce.com/paddlepaddle/paddle python housing.py

-v命令是把本地目录挂载到docker镜像的目录上,-w设置该目录为工作目录,-p设置端口号,使用到的镜像是在使用Docker安装部分安装的镜像hub.baidubce.com/paddlepaddle/paddle

3.终端会输出下面类似的日志

代码语言:txt
复制
I0116 08:40:12.004096     1 Util.cpp:166] commandline:  --use_gpu=False --trainer_count=1 
Cache file /root/.cache/paddle/dataset/fit_a_line.tar/fit_a_line.tar not found, downloading https://github.com/PaddlePaddle/book/raw/develop/01.fit_a_line/fit_a_line.tar
[==================================================]
Cache file /root/.cache/paddle/dataset/uci_housing/housing.data not found, downloading https://archive.ics.uci.edu/ml/machine-learning-databases/housing/housing.data
[==================================================]
Predicted price: $12,316.63
Predicted price: $13,830.34
Predicted price: $11,499.34
Predicted price: $17,395.05
Predicted price: $13,317.67
Predicted price: $16,834.08
Predicted price: $16,632.04

如果没有成功运行该代码,报错信息如下,说明安装的paddlepaddle版本过低,请安装高版本的paddlepaddle

代码语言:txt
复制
I0116 13:53:48.957136 15297 Util.cpp:166] commandline:  --use_gpu=False --trainer_count=1
Traceback (most recent call last):
  File "housing.py", line 13, in <module>
    parameters=paddle.dataset.uci_housing.model(),
AttributeError: 'module' object has no attribute 'model'

最后提示


  • 有很多学习者会出现明明安装完成PaddlePaddle了,但是在PaddlePaddle的时候,在初始化PaddlePaddle这一行代码出错
代码语言:txt
复制
paddle.init(use_gpu=False, trainer_count=1)

这个多数是读者的电脑不支持AVX指令集,而在PaddlePaddle的时候,安装的是支持AVX指令集的版本,所以导致在初始化PaddlePaddle的时候报错。所以在安装或者编译PaddlePaddle安装包时,要根据读者电脑本身的情况,选择是否支持AVX指令集。查看电脑是否支持AVX指令集,可以在终端输入以下命令,输出Yes表示支持,输出No表示不支持

代码语言:txt
复制
if cat /proc/cpuinfo | grep -i avx; then echo Yes; else echo No; fi
  • 如果报以下的错误,这是在/usr/lib下没有找到对应的动态库,通常情况它们会放在/usr/local/lib目录下。可以使用命令ldconfig更新一下系统的动态库。
代码语言:txt
复制
ImportError: libmkldnn.so.0: cannot open shared object file: No such file or directory
下一章:《我的PaddlePaddle学习之路》笔记二——MNIST手写数字识别

项目代码


GitHub地址:https://github.com/yeyupiaoling/LearnPaddle

参考资料


  1. http://paddlepaddle.org/
  2. https://pip.pypa.io/en/stable/
  3. http://www.runoob.com/
  4. http://www.linuxidc.com/Linux/2016-12/138489.htm
  5. https://www.jianshu.com/p/c6264cd5f5c7
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-01-16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 环境
  • Windows系统的安装
    • 在Windows上安装Docker容器
      • 在Windows上安装Ubuntu
      • 使用pip安装
      • 使用Docker安装
      • 从源码编译生成安装包
        • 在本地编译生成安装包
          • 在Docker编译生成安装包
          • 编译Docker镜像
          • 测试安装环境
          • 最后提示
          • 项目代码
          • 参考资料
          相关产品与服务
          容器服务
          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档