附录¶
飞桨支持的 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.4.2 | 只支持 CPU 对应版本的 PaddlePaddle,具体版本请参见Pypi |
paddlepaddle-gpu==[版本号] 例如 paddlepaddle-gpu==2.4.2 | 默认安装支持 CUDA 10.2 和 cuDNN 7 的对应[版本号]的 PaddlePaddle 安装包 |
您可以在 Release History 中找到 PaddlePaddle-gpu 的各个发行版本。
其中
postXX
对应的是 CUDA 和 cuDNN 的版本,postXX
之前的数字代表 Paddle 的版本
需要注意的是,命令中 paddlepaddle-gpu==2.4.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