PaddlePaddle(v0.10.0)源码方式安装

0、前言

PaddlePaddle,百度旗下深度学习开源平台。
  2016年9月27日,百度宣布其全新的深度学习开源平台PaddlePaddle在开源社区Github及百度大脑平台开放,供广大开发者下载使用。百度成为继Google、Facebook、IBM后另一个将人工智能技术开源的科技巨头,同时也是国内首个开源深度学习平台的科技公司。

---摘自百度百科:PaddlePaddle
下面是两个有用的网址:
PaddlePaddle官网
百度技术学院-PaddlePaddle 深度学习实战课程
看完实战课程的前三个视频,觉得不错,同时官方只提供Docker的安装模式,所以研究了一下,有了这篇源码方式安装的方式。
看【PaddlePaddle 深度学习实战课程】的话推荐用谷歌浏览器,因为网址兼容性问题,其他浏览器可能不能全屏不能播放声音。

github的话,介绍一下这两个:
PaddlePaddle/book
PaddlePaddle/Paddle

  • PaddlePaddle/book:这是离线教程,试过自己动手下载,缺少了jupyter notebook源文件(.ipynb),只有生成的文件,所以notebook的交互文件没了,下载docker版本的话,全部文件都健在。

  • PaddlePaddle/Paddle:这是源码,下载的时候记得用git clone,不要直接download zip压缩文件,因为在满足依赖的时候,编译时需要从git中获取版本号。

从我docker方式安装的时候发现运行paddle的环境是一个叫moby的linux发行版,接着也了解到:


图片来自:如何评价百度刚刚开源的 Paddle 平台?
从表格来看,上手难度中等,并且很多中文文档,还有视频教程,以前试过入坑tensorflow,额,我没去学,坑还没入,看了看视频教程标题,有我想要的东西,就用它了,愉快的决定了。

走过一遍源码安装之后,我想说非常非常费时,主要是各种墙(天朝就是强,等得我天荒地老),其实现成 的教程就在paddle项目中,里面有个dockerfile



虽然这是给docker里面的moby的安装paddle的安装脚本,但是同是linux,也就可以用了

注意一点是内核版本不要太高,我在Deepin15.4.1(内核版本4.9)下,在make源码的时候报错了(即报error警告,不能继续编译了),最后转到ubuntu下试了试才成功了。

大概过程如下:满足环境->cmke->make->make install->
pip install /usr/local/opt/paddle/share/wheels/*.whl->paddle version

1、系统环境

系统:ubuntu16.04.2LTS
python版本:2.7
paddle版本:v0.10.0

2、满足环境

PaddlePaddle的Docker容器使用方式--开发镜像
官方说明:开发镜像包含了以下工具:

  • gcc/clang -------------编译的
  • nvcc -------------cuda的,没有用到GPU可以不用安装
  • Python
  • sphinx
  • woboq -------------指的是woboq下的woboq_codebrowser
  • sshd -------------按照文档来理解,因该是ssh访问docker用的

下面内容均来自源码中的dockerfile
以下操作均在root用户下进行

2.1从源安装软件

    apt-get update && \
    apt-get install -y \
    git python-pip python-dev openssh-server bison  \
    wget unzip unrar tar xz-utils bzip2 gzip coreutils ntp \
    curl sed grep graphviz libjpeg-dev zlib1g-dev  \
    python-numpy python-matplotlib gcc g++ \
    automake locales clang-format-3.8 swig doxygen cmake  \
    liblapack-dev liblapacke-dev libboost-dev \
    clang-3.8 llvm-3.8 libclang-3.8-dev \
    net-tools && \
    apt-get clean -y

可以看到需要pip包管理器来安装python环境,openssh远程用,python-numpy一些科学计算的库,clang-3.8 llvm-3.8 libclang-3.8-dev这些是golang的编译工具,因为源码中有一个go文件夹放置go语言的源代码。没有go的编译器,我就试过报错,不过那是在我,还没发现dockerfile之前的事。

2.2安装Go

wget -O go.tgz https://storage.googleapis.com/golang/go1.8.1.linux-amd64.tar.gz

tar -C /usr/local -xzf go.tgz

mkdir /root/gopath
mkdir /root/gopath/bin
mkdir /root/gopath/src

在/etc/profile中,添加环境变量:

export GOROOT=/usr/local/go
export GOPATH=/root/gopath
PATH=${PATH}:${GOROOT}/bin:${GOPATH}/bin

上面是安装go和配置go的环境变量

2.3安装glide

curl -q https://glide.sh/get | sh

↑安装glide。实际上很慢,我直接从源仓库安装:

apt-get install libglide3

2.4执行一些命令

git config --global credential.helper store

↑这句是自动保存git用户名和密码的命令

localedef -i en_US -f UTF-8 en_US.UTF-8
apt-get install -y libssl-dev libffi-dev
pip install certifi urllib3[secure]

2.5pip安装软件

    pip install --upgrade pip && \
    pip install -U 'protobuf==3.1.0' && \
    pip install -U wheel pillow BeautifulSoup && \
    pip install -U docopt PyYAML sphinx && \
    pip install -U sphinx-rtd-theme==0.1.9 recommonmark && \
    pip install pre-commit 'requests==2.9.2' 'ipython==5.3.0' && \
    pip install 'ipykernel==4.6.0' 'jupyter==1.0.0' && \
    pip install rarfile

首先更新一下pip本地缓存,接着安装软件,里面的protobuf没有这个是编译不通过的,还有一些jupyter notebook的东西

2.3安装woboq_codebrowser到/woboq

git clone https://github.com/woboq/woboq_codebrowser /woboq
cd /woboq
cmake -DLLVM_CONFIG_EXECUTABLE=/usr/bin/llvm-config-3.8 \
           -DCMAKE_BUILD_TYPE=Release .
make

这里的woboq是在根目录下的目录,因为/开头的路径。

3、cmake

在Paddle根目录处:

cmake -DWITH_GPU=OFF -DWITH_AVX=ON -WITH_DOC=OFF

4、make

在Paddle根目录处:

make

5、make install

在Paddle根目录处:

make install 

make install完一般是用命令使用了,但是还是报错了,我们从截图中可以看到有一些.whl结尾的文件,这是pip包管理器的东西,我们还没安装这些包,所以安装完就好了,错误的时候我没截图,所以将就文字描述吧。

6、pip安装paddle生成的python包

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple /usr/local/opt/paddle/share/wheels/*.whl

这里多加了一个添加源的参数选项而已。
其实这句命令是有迹可寻的:



在dockerfile结尾知道了这个文件路径,找到这个文件,打开:



看到一下安装的命令,并且和报错相吻合,运行这个明明果然,好了。

7、paddle version

直接运行paddle version,查看信息和一些功能的开关情况:

paddle version


环境安装完毕!

8、测试

在普通用户下:

jupyter notebook


在前面安装软件的过程中,我们已经了jupyter notebook 直接输入命令,浏览器就会弹出窗口,之后创建python的文件,运行

代码出处https://github.com/PaddlePaddle/book/blob/develop/01.fit_a_line/train.py
贴入如下代码:


import paddle.v2 as paddle
import paddle.v2.dataset.uci_housing as uci_housing


def main():
    # init
    paddle.init(use_gpu=False, trainer_count=1)

    # network config
    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())
    y = paddle.layer.data(name='y', type=paddle.data_type.dense_vector(1))
    cost = paddle.layer.mse_cost(input=y_predict, label=y)

    # create parameters
    parameters = paddle.parameters.create(cost)

    # create optimizer
    optimizer = paddle.optimizer.Momentum(momentum=0)

    trainer = paddle.trainer.SGD(
        cost=cost, parameters=parameters, update_equation=optimizer)

    feeding = {'x': 0, 'y': 1}

    # event_handler to print training and testing info
    def event_handler(event):
        if isinstance(event, paddle.event.EndIteration):
            if event.batch_id % 100 == 0:
                print "Pass %d, Batch %d, Cost %f" % (
                    event.pass_id, event.batch_id, event.cost)

        if isinstance(event, paddle.event.EndPass):
            result = trainer.test(
                reader=paddle.batch(uci_housing.test(), batch_size=2),
                feeding=feeding)
            print "Test %d, Cost %f" % (event.pass_id, result.cost)

    # training
    trainer.train(
        reader=paddle.batch(
            paddle.reader.shuffle(uci_housing.train(), buf_size=500),
            batch_size=2),
        feeding=feeding,
        event_handler=event_handler,
        num_passes=30)


if __name__ == '__main__':
    main()


教程结束,最后唠叨一下,除非很有空,不然正的很慢,建议用docker,我再家里有个台式本来是下载docker的结果不支持虚拟化技术吧,我才这么折腾,docker这个方式也是不错的,起码不用浪费那么多时间,反复看多几遍如果不会,PaddlePaddle的Docker容器使用方式,里面已经教了已经集成好的镜像的下载步骤和镜像搭建步骤,其实这篇东西就是从里面自动搭建镜像的脚本中手工搞一遍而已。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345

推荐阅读更多精彩内容