使用指南用Docker编译和测试PaddlePaddle

Posted 飞桨PaddlePaddle

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用指南用Docker编译和测试PaddlePaddle相关的知识,希望对你有一定的参考价值。

导语

本周将汇总整理PaddlePaddle的安装编译方法,发布系列推文。推文目录如下:


周一:用pip安装PaddlePaddle

周二:用Docker安装运行PaddlePaddle

周三:用Docker编译和测试PaddlePaddle

周四:从源码编译PaddlePaddle

周五:基本使用概念和安装及编译问题汇总


欢迎大家在留言区分享您在相应环节中遇到的问题,我们会 一 一为您解答,同时也会选择一部分展示在周五汇总贴中;欢迎大家在留言区提出您的反馈,表达您的见解;本周每篇推文点赞数最多的一条留言会被置顶(当日推文统计时间截止次日中午12点)并赠送小礼品一份(PaddlePaddle定制帽衫)


编写|PaddlePaddle

排版|wangp



 1 

需要的软硬件

为了开发PaddlePaddle,我们需要:


A: 一台电脑,可以装的是 Linux, BSD, Windows 或者 MacOS 操作系统,以及

B: Docker


不需要依赖其他任何软件了。即便是 Python 和 GCC 都不需要,因为我们会把所有编译工具都安装进一个 Docker image 里


 2 

总体流程

A:获取源码

git clone https://github.com/paddlepaddle/paddle


B:安装开发工具到 Docker image 里

cd paddle; docker build -t paddle:dev .

请注意这个命令结尾处的 .;它表示 docker build 应该读取当前目录下的 Dockerfile文件(网址:https://github.com/PaddlePaddle/Paddle/blob/develop/Dockerfile),按照其内容创建一个名为 paddle:dev 的 Docker image,并且把各种开发工具安装进去


C:编译

以下命令启动一个 Docker container 来执行 paddle:dev 这个 Docker image,同时把当前目录(源码树根目录)映射为 container 里的 /paddle 目录,并且运行 Dockerfile 描述的默认入口程序 build.sh。这个脚本调用 cmake make 来编译 /paddle 里的源码,结果输出到 /paddle/build,也就是本地的源码树根目录里的 build 子目录

docker run --rm -v $PWD:/paddle paddle:dev


上述命令编译出一个 CUDA-enabled 版本。如果我们只需要编译一个只支持 CPU 的版本,可以用

docker run --rm -e WITH_GPU=OFF -v $PWD:/paddle paddle:dev


D:运行单元测试

用本机的第一个 GPU 来运行包括 GPU 单元测试在内的所有单元测试:

NV_GPU=0 nvidia-docker run --rm -v $PWD:/paddle paddle:dev bash -c "cd /paddle/build; ctest"


如果编译的时候我们用了 WITH_GPU=OFF 选项,那么编译过程只会产生 CPU-based 单元测试,那么我们也就不需要 nvidia-docker 来运行单元测试了。我们只需要:

docker run --rm -v $PWD:/paddle paddle:dev bash -c "cd /paddle/build; ctest"


有时候我们只想运行一个特定的单元测试,比如 memory_test,我们可以

nvidia-docker run --rm -v $PWD:/paddle paddle:dev bash -c "cd /paddle/build; ctest -V -R memory_test"


E:清理

有时候我们会希望清理掉已经下载的第三方依赖以及已经编译的二进制文件。此时只需要:

rm -rf build


 3 

为什么要 Docker 呀?

以上是关于使用指南用Docker编译和测试PaddlePaddle的主要内容,如果未能解决你的问题,请参考以下文章

使用指南PaddlePaddle安装编译问题汇总和基本使用概念

使用指南用pip安装paddlepaddle

用 Docker 编译 Openwrt

大项目docker打包部署慢

docker使用jenkins

docker使用jenkins