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

作者: 追逐丶 | 来源:发表于2017-07-17 20:13 被阅读315次

    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容器使用方式,里面已经教了已经集成好的镜像的下载步骤和镜像搭建步骤,其实这篇东西就是从里面自动搭建镜像的脚本中手工搞一遍而已。

    相关文章

      网友评论

        本文标题:PaddlePaddle(v0.10.0)源码方式安装

        本文链接:https://www.haomeiwen.com/subject/mlpqkxtx.html