# 附录
## **编译依赖表**
依赖包名称 |
版本 |
说明 |
安装命令 |
CMake |
3.4 |
|
|
GCC (Linux Only) |
4.8 / 5.4 |
推荐使用CentOS的devtools2 |
|
Clang (MacOS Only) |
9.0及以上 |
通常使用MacOS 10.11及以上的系统对应的Clang版本即可 |
|
Python(64 bit) |
2.7.x. 或 3.5+.x |
依赖libpython2.7.so 或 libpython3.5+.so |
apt install python-dev 或 yum install python-devel 如果安装python3请访问Python 官网 |
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 |
protobuf |
>=3.1.0 |
|
pip install protobuf |
wheel |
any |
|
pip install wheel |
patchELF |
any |
|
apt install patchelf 或参见github patchELF 官方文档 |
go |
>=1.8 |
可选 |
|
setuptools |
>= 28.0.0 |
|
|
***
## **编译选项表**
选项 |
说明 |
默认值 |
WITH_GPU |
是否支持GPU |
ON |
WITH_DSO |
是否运行时动态加载CUDA动态库,而非静态加载CUDA动态库 |
ON |
WITH_AVX |
是否编译含有AVX指令集的PaddlePaddle二进制文件 |
ON |
WITH_PYTHON |
是否内嵌PYTHON解释器 |
ON |
WITH_TESTING |
是否开启单元测试 |
OFF |
WITH_MKL |
是否使用MKL数学库,如果为否则是用OpenBLAS |
ON |
WITH_SYSTEM_BLAS |
是否使用系统自带的BLAS |
OFF |
WITH_DISTRIBUTE |
是否编译带有分布式的版本 |
OFF |
WITH_BRPC_RDMA |
是否使用BRPC RDMA作为RPC协议 |
OFF |
ON_INFER |
是否打开预测优化 |
OFF |
CUDA_ARCH_NAME |
是否只针对当前CUDA架构编译 |
All:编译所有可支持的CUDA架构 可选:Auto 自动识别当前环境的架构编译 |
**BLAS**
PaddlePaddle支持 [MKL](https://software.intel.com/en-us/mkl) 和 [OpenBlAS](http://www.openblas.net) 两种BLAS库。默认使用MKL。如果使用MKL并且机器含有AVX2指令集,还会下载MKL-DNN数学库,详细参考[这里](https://github.com/PaddlePaddle/Paddle/tree/release/0.11.0/doc/design/mkldnn#cmake) 。
如果关闭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.5.2 |
只支持CPU对应版本的PaddlePaddle,具体版本请参见Pypi |
paddlepaddle-gpu==[版本号] 例如 paddlepaddle-gpu==1.5.2 |
默认的支持CUDA 10.0和cuDNN 7的对应PaddlePaddle版本的安装包 |
paddlepaddle-gpu==[版本号].postXX 例如 paddlepaddle-gpu==1.5.2.post87 |
支持CUDA 8.0和cuDNN 7的对应PaddlePaddle版本的安装包 |
您可以在 [Release History](https://pypi.org/project/paddlepaddle-gpu/#history) 中找到PaddlePaddle-gpu的各个发行版本。
> 其中`postXX` 对应的是CUDA和cuDNN的版本,`postXX`之前的数字代表Paddle的版本
需要注意的是,命令中
paddlepaddle-gpu
在windows环境下,会默认安装支持CUDA 10.0和cuDNN 7的对应[版本号]的PaddlePaddle安装包
***
## **多版本whl包列表-Release**
### 表格说明
- 纵轴
cpu-mkl: 支持CPU训练和预测,使用Intel mkl数学库
cpu-openblas: 支持CPU训练和预测,使用openblas数学库
cuda8-cudnn7-openblas: 支持GPU训练和预测,使用openblas数学库
cuda8_cudnn7_mkl: 支持GPU训练和预测,使用Intel mkl数学库
cuda9_cudnn7-mkl: 支持GPU训练和预测,使用Intel mkl数学库
cuda10_cudnn7-mkl: 支持GPU训练和预测,使用Intel mkl数学库
- 横轴
一般是类似于“cp27-cp27mu”的形式,其中:
27:python tag,指python2.7,类似的还有“35”、“36”、“37”等
mu:指unicode版本python,若为m则指非unicode版本python
- 安装包命名规则
每个安装包都有一个专属的名字,它们是按照Python的官方规则 来命名的,形式如下:
{distribution}-{version}(-{build tag})?-{python tag}-{abi tag}-{platform tag}.whl
其中build tag可以缺少,其他部分不能缺少
distribution: wheel名称version: 版本,例如0.14.0 (要求必须是数字格式)
python tag: 类似'py27', 'py2', 'py3',用于标明对应的python版本
abi tag: 类似'cp33m', 'abi3', 'none'
platform tag: 类似 'linux_x86_64', 'any'
## **多版本whl包列表-dev**
## 在Docker中执行PaddlePaddle训练程序
***
假设您已经在当前目录(比如在/home/work)编写了一个PaddlePaddle的程序: `train.py` (可以参考
[PaddlePaddleBook](https://github.com/PaddlePaddle/book/blob/develop/01.fit_a_line/README.cn.md)
编写),就可以使用下面的命令开始执行训练:
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`
然后在浏览器中输入以下网址:
`http://localhost:8888/`
就这么简单,享受您的旅程!如有其他问题请参见[FAQ](#FAQ)
## 使用Docker执行GPU训练
***
为了保证GPU驱动能够在镜像里面正常运行,我们推荐使用
[nvidia-docker](https://github.com/NVIDIA/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