附录¶
飞桨支持的Nvidia GPU架构及安装方式¶
GPU架构 | Compute Capability | 对应GPU硬件型号 | 请下载以下CUDA版本的飞桨安装包 |
---|---|---|---|
Fermi | sm_20 | GeForce 400, 500, 600, GT-630 | 不支持 |
Kepler | sm_30 | GeForce 700, GT-730 | 不支持 |
Kepler | sm_35 | Tesla K40 | CUDA10 |
Kepler | sm_37 | Tesla K80 | CUDA10 |
Maxwell | sm_50 | Tesla/Quadro M series | CUDA10、CUDA11 |
Maxwell | sm_52 | Quadro M6000 , GeForce 900, GTX-970, GTX-980, GTX Titan X | CUDA10、CUDA11 |
Pascal | sm_60 | Quadro GP100, Tesla P100, DGX-1 | CUDA10、CUDA11 |
Pascal | sm_61 | GTX 1080, GTX 1070, GTX 1060, GTX 1050, GTX 1030 (GP108), GT 1010 (GP108) Titan Xp, Tesla P40, Tesla P4 | CUDA10、CUDA11 |
Volta | sm_70 | DGX-1 with Volta, Tesla V100, GTX 1180 (GV104), Titan V, Quadro GV100 | CUDA10、CUDA11 |
Turing | sm_75 | GTX/RTX Turing – GTX 1660 Ti, RTX 2060, RTX 2070, RTX 2080, Titan RTX, Quadro RTX 4000, Quadro RTX 5000, Quadro RTX 6000, Quadro RTX 8000, Quadro T1000/T2000, Tesla T4 | CUDA10、CUDA11 |
Ampere | sm_80 | NVIDIA A100, GA100, NVIDIA DGX-A100 | CUDA11 |
Ampere | sm_86 | Tesla GA10x cards, RTX Ampere – RTX 3080, GA102 – RTX 3090, RTX A2000, A3000, RTX A4000, A5000, A6000, NVIDIA A40, GA106 – RTX 3060, GA104 – RTX 3070, GA107 – RTX 3050, RTX A10, RTX A16, RTX A40, A2 Tensor Core GPU | CUDA11、CUDA11.2(推荐) |
编译依赖表¶
依赖包名称 | 版本 | 说明 | 安装命令 |
---|---|---|---|
CMake | 3.15, 3.16(推荐),3.17 | ||
GCC (Linux Only) | 5.4 / 8.2 | 推荐使用CentOS的devtools2 | |
Clang (MacOS Only) | 9.0及以上 | 通常使用MacOS 10.11及以上的系统对应的Clang版本即可 | |
Python(64 bit) | 3.6+.x | 依赖 libpython3.6+.so | 请访问Python 官网 |
SWIG | 最低 2.0 | apt install swig 或 yum install swig |
|
wget | any | apt install wget 或 yum install wget |
|
openblas | any | 可选 | |
pip | >=20.2.2 | 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 | ||
unrar | brew install unrar (For MacOS), apt-get install unrar (For Ubuntu) |
编译选项表¶
选项 | 说明 | 默认值 |
---|---|---|
WITH_GPU | 是否支持CUDA | ON |
WITH_ROCM | 是否支持ROCM | OFF |
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 自动识别当前环境的架构编译 |
TENSORRT_ROOT | 指定TensorRT路径 | Windows下默认值为'/',Linux下默认值为 '/usr/' |
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/lib
和 /usr/local/lib
)中搜索这几个库,同时也会读取相关路径变量来进行搜索。 通过使用-D
命令可以设置,例如:
cmake .. -DWITH_GPU=ON -DWITH_TESTING=OFF -DCUDNN_ROOT=/opt/cudnnv5
注意:这几个编译选项的设置,只在第一次cmake的时候有效。如果之后想要重新设置,推荐清理整个编译目录( rm -rf )后,再指定。
安装包列表¶
版本号 | 版本说明 |
---|---|
paddlepaddle==[版本号] 例如 paddlepaddle==2.3.2 | 只支持CPU对应版本的PaddlePaddle,具体版本请参见Pypi |
paddlepaddle-gpu==[版本号] 例如 paddlepaddle-gpu==2.3.2 | 默认安装支持CUDA 10.2和cuDNN 7的对应[版本号]的PaddlePaddle安装包 |
您可以在 Release History 中找到PaddlePaddle-gpu的各个发行版本。
其中
postXX
对应的是CUDA和cuDNN的版本,postXX
之前的数字代表Paddle的版本
需要注意的是,命令中 paddlepaddle-gpu==2.3.2
在windows环境下,会默认安装支持CUDA 10.2和cuDNN 7的对应[版本号]的PaddlePaddle安装包
多版本whl包列表-Release¶
表格说明¶
纵轴
cpu-mkl: 支持CPU训练和预测,使用Intel mkl数学库
cuda10_cudnn7-mkl: 支持GPU训练和预测,使用Intel mkl数学库
横轴
一般是类似于“cp37-cp37m”的形式,其中:
37:python tag,指python3.7,类似的还有“36”、“38”、“39”等
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: 类似’py36’, ‘py37’, ‘py38’, ‘py39’,用于标明对应的python版本
abi tag: 类似’cp33m’, ‘abi3’, ‘none’
platform tag: 类似 ‘linux_x86_64’, ‘any’
多版本whl包列表-develop¶
在Docker中执行PaddlePaddle训练程序¶
假设您已经在当前目录(比如在/home/work)编写了一个PaddlePaddle的程序: train.py
(可以参考 PaddlePaddleBook 编写),就可以使用下面的命令开始执行训练:
cd /home/work
docker run -it -v $PWD:/work registry.baidubce.com/paddlepaddle/paddle /work/train.py
上述命令中,-it
参数说明容器已交互式运行;-v $PWD:/work
指定将当前路径(Linux中PWD变量会展开为当前路径的绝对路径)挂载到容器内部的:/work
目录: registry.baidubce.com/paddlepaddle/paddle
指定需要使用的容器; 最后/work/train.py
为容器内执行的命令,即运行训练程序。
当然,您也可以进入到Docker容器中,以交互式的方式执行或调试您的代码:
docker run -it -v $PWD:/work registry.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 registry.baidubce.com/paddlepaddle/book
国内用户可以使用下面的镜像源来加速访问:
docker run -p 8888:8888 registry.baidubce.com/paddlepaddle/book
然后在浏览器中输入以下网址:
http://localhost:8888/
使用Docker执行GPU训练¶
为了保证GPU驱动能够在镜像里面正常运行,我们推荐使用 nvidia-docker来运行镜像。 请不要忘记提前在物理机上安装GPU最新驱动。
nvidia-docker run -it -v $PWD:/work registry.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 registry.baidubce.com/paddlepaddle/paddle:latest-gpu