附录
编译依赖表
https://github.com/PaddlePaddle/Paddle/tree/develop/doc/design/mkldnn
依赖包名称 | 版本 | 说明 | 安装命令 |
---|---|---|---|
CMake | 3.4 | ||
GCC | 4.8 / 5.4 | 推荐使用CentOS的devtools2 | |
Python | 2.7.x. | 依赖libpython2.7.so | apt install python-dev 或 yum install python-devel |
SWIG | 最低 2.0 | apt install swig 或 yum install swig | |
wget | any | apt install wget 或 yum install wget | |
openblas | any | ||
pip | 最低9.0.1 | apt install python-pip 或 yum install Python-pip | |
numpy | >=1.12.0 | pip install numpy==1.14.0 | |
protobuf | 3.1.0 | pip install protobuf==3.1.0 | |
wheel | any | pip install wheel | |
patchELF | any | apt install patchelf 或参见github patchELF 官方文档 | |
go | >=1.8 | 可选 |
编译选项表
选项 | 说明 | 默认值 |
---|---|---|
WITH_GPU | 是否支持GPU | ON |
WITH_C_API | 是否仅编译CAPI | OFF |
WITH_DOUBLE | 是否使用双精度浮点数 | OFF |
WITH_DSO | 是否运行时动态加载CUDA动态库,而非静态加载CUDA动态库 | ON |
WITH_AVX | 是否编译含有AVX指令集的PaddlePaddle二进制文件 | ON |
WITH_PYTHON | 是否内嵌PYTHON解释器 | ON |
WITH_STYLE_CHECK | 是否编译时进行代码风格检查 | ON |
WITH_TESTING | 是否开启单元测试 | OFF |
WITH_DOC | 是否编译中英文文档 | OFF |
WITH_SWIG_PY | 是否编译PYTHON的SWIG接口,该接口可用于预测和定制化训练 | Auto |
WITH_GOLANG | 是否编译go语言的可容错parameter server | OFF |
WITH_MKL | 是否使用MKL数学库,如果为否则是用OpenBLAS | ON |
WITH_SYSTEM_BLAS | 是否使用系统自带的BLAS | OFF |
WITH_DISTRIBUTE | 是否编译带有分布式的版本 | OFF |
WITH_MKL | 是否使用MKL数学库,如果为否则是用OpenBLAS | ON |
WITH_RDMA | 是否编译支持RDMA的相关部分 | OFF |
WITH_BRPC_RDMA | 是否使用BRPC RDMA作为RPC协议 | OFF |
ON_INFER | 是否打开预测优化 | OFF |
DWITH_ANAKIN | 是否编译ANAKIN | OFF |
BLAS
PaddlePaddle支持 MKL 和 OpenBlAS 两种BLAS库。默认使用MKL。如果使用MKL并且机器含有AVX2指令集,还会下载MKL-DNN数学库,详细参考这里 。
如果关闭MKL,则会使用OpenBLAS作为BLAS库。
CUDA/cuDNN
PaddlePaddle在编译时/运行时会自动找到系统中安装的CUDA和cuDNN库进行编译和执行。 使用参数 -DCUDA_ARCH_NAME=Auto
可以指定开启自动检测SM架构,加速编译。
PaddlePaddle可以使用cuDNN v5.1之后的任何一个版本来编译运行,但尽量请保持编译和运行使用的cuDNN是同一个版本。 我们推荐使用最新版本的cuDNN。
编译选项的设置
PaddePaddle通过编译时指定路径来实现引用各种BLAS/CUDA/cuDNN库。cmake编译时,首先在系统路径( /usr/liby
和 /usr/local/lib
)中搜索这几个库,同时也会读取相关路径变量来进行搜索。 通过使用-D
命令可以设置,例如:
cmake .. -DWITH_GPU=ON -DWITH_TESTING=OFF -DCUDNN_ROOT=/opt/cudnnv5
注意:这几个编译选项的设置,只在第一次cmake的时候有效。如果之后想要重新设置,推荐清理整个编译目录( rm -rf )后,再指定。
安装包列表
版本号 | 版本说明 |
---|---|
paddlepaddle==[版本号] 如 paddlepaddle==1.0.1(下载1.0.1版本只支持CPU的PaddlePaddle) | 只支持CPU对应版本的PaddlePaddle,具体版本请参见Pypi |
paddlepaddle-gpu==1.0.1 | 使用CUDA 9.0和cuDNN 7编译的1.0.1版本 |
paddlepaddle-gpu==1.0.1.post87 | 使用CUDA 8.0和cuDNN 7编译的1.0.1版本 |
paddlepaddle-gpu==1.0.1.post85 | 使用CUDA 8.0和cuDNN 5编译的1.0.1版本 |
paddlepaddle-gpu==1.0.0 | 使用CUDA 9.0和cuDNN 7编译的1.0.0版本 |
paddlepaddle-gpu==1.0.0.post87 | 使用CUDA 8.0和cuDNN 7编译的1.0.0版本 |
paddlepaddle-gpu==1.0.0.post85 | 使用CUDA 8.0和cuDNN 5编译的1.0.0版本 |
paddlepaddle-gpu==0.15.0 | 使用CUDA 9.0和cuDNN 7编译的0.15.0版本 |
paddlepaddle-gpu==0.15.0.post87 | 使用CUDA 8.0和cuDNN 7编译的0.15.0版本 |
paddlepaddle-gpu==0.15.0.post85 | 使用CUDA 8.0和cuDNN 5编译的0.15.0版本 |
paddlepaddle-gpu==0.14.0 | 使用CUDA 9.0和cuDNN 7编译的0.15.0版本 |
paddlepaddle-gpu==0.14.0.post87 | 使用CUDA 8.0和cuDNN 7编译的0.15.0版本 |
paddlepaddle-gpu==0.14.0.post85 | 使用CUDA 8.0和cuDNN 5编译的0.15.0版本 |
paddlepaddle-gpu==0.13.0 | 使用CUDA 9.0和cuDNN 7编译的0.13.0版本 |
paddlepaddle-gpu==0.12.0 | 使用CUDA 8.0和cuDNN 5编译的0.12.0版本 |
paddlepaddle-gpu==0.11.0.post87 | 使用CUDA 8.0和cuDNN 7编译的0.11.0版本 |
paddlepaddle-gpu==0.11.0.post85 | 使用CUDA 8.0和cuDNN 5编译的0.11.0版本 |
paddlepaddle-gpu==0.11.0 | 使用CUDA 7.5和cuDNN 5编译的0.11.0版本 |
您可以在 Release History 中找到PaddlePaddle-gpu的各个发行版本。
多版本whl包列表-Release
多版本whl包列表-dev
在Docker中执行PaddlePaddle训练程序
假设您已经在当前目录(比如在/home/work)编写了一个PaddlePaddle的程序: train.py
(可以参考PaddlePaddleBook编写),就可以使用下面的命令开始执行训练:
cd /home/work
docker run -it -v $PWD:/work hub.baidubce.com/paddlepaddle/paddle /work/train.py
上述命令中,-it
参数说明容器已交互式运行;-v $PWD:/work
指定将当前路径(Linux中PWD变量会展开为当前路径的绝对路径)挂载到容器内部的:/work
目录: hub.baidubce.com/paddlepaddle/paddle
指定需要使用的容器; 最后/work/train.py
为容器内执行的命令,即运行训练程序。
当然,您也可以进入到Docker容器中,以交互式的方式执行或调试您的代码:
docker run -it -v $PWD:/work hub.baidubce.com/paddlepaddle/paddle /bin/bash
cd /work
python train.py
注:PaddlePaddle Docker镜像为了减小体积,默认没有安装vim,您可以在容器中执行 apt-get install -y vim
安装后,在容器中编辑代码。
使用Docker启动PaddlePaddle Book教程
使用Docker可以快速在本地启动一个包含了PaddlePaddle官方Book教程的Jupyter Notebook,可以通过网页浏览。PaddlePaddle Book是为用户和开发者制作的一个交互式的Jupyter Notebook。如果您想要更深入了解deep learning,PaddlePaddle Book一定是您最好的选择。大家可以通过它阅读教程,或者制作和分享带有代码、公式、图表、文字的交互式文档。
我们提供可以直接运行PaddlePaddle Book的Docker镜像,直接运行:
docker run -p 8888:8888 hub.baidubce.com/paddlepaddle/book
国内用户可以使用下面的镜像源来加速访问:
docker run -p 8888:8888 hub.baidubce.com/paddlepaddle/book
然后在浏览器中输入以下网址:
就这么简单,享受您的旅程!如有其他问题请参见FAQ
使用Docker执行GPU训练
为了保证GPU驱动能够在镜像里面正常运行,我们推荐使用nvidia-docker来运行镜像。请不要忘记提前在物理机上安装GPU最新驱动。
nvidia-docker run -it -v $PWD:/work hub.baidubce.com/paddlepaddle/paddle:latest-gpu /bin/bash
注: 如果没有安装nvidia-docker,可以尝试以下的方法,将CUDA库和Linux设备挂载到Docker容器内:
export CUDA_SO="$(\ls /usr/lib64/libcuda* | xargs -I{} echo '-v {}:{}') \
$(\ls /usr/lib64/libnvidia* | xargs -I{} echo '-v {}:{}')"
export DEVICES=$(\ls /dev/nvidia* | xargs -I{} echo '--device {}:{}')
docker run ${CUDA_SO} \
${DEVICES} -it hub.baidubce.com/paddlepaddle/paddle:latest-gpu
关于AVX:
AVX是一种CPU指令集,可以加速PaddlePaddle的计算。最新的PaddlePaddle Docker镜像默认是开启AVX编译的,所以,如果您的电脑不支持AVX,需要单独编译PaddlePaddle为no-avx版本。
以下指令能检查Linux电脑是否支持AVX:
if cat /proc/cpuinfo | grep -i avx; then echo Yes; else echo No; fi
如果输出是No,就需要选择使用no-AVX的镜像
原文: http://paddlepaddle.org/documentation/docs/zh/1.3/beginners_guide/install/Tables.html