附录

飞桨支持的 Nvidia GPU 架构及安装方式

GPU 架构 Compute Capability 对应 GPU 硬件型号 请下载以下 CUDA 版本的飞桨安装包
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.8、CUDA12.x(推荐)
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.8、CUDA12.x(推荐)
Hopper sm_90 NVIDIA H100, H800 CUDA12.6、CUDA12.9(推荐)、CUDA13.0
Blackwell sm_100 NVIDIA B100, B200, GB200, NVIDIA DGX-B200 CUDA12.9(推荐)、CUDA13.0
Blackwell sm_120 NVIDIA RTX 5090, RTX 5080, RTX 5070 CUDA12.9(推荐)、CUDA13.0



编译依赖表

依赖包名称 版本 说明 安装命令
CMake 3.18、3.19(推荐)、4.0
GCC (Linux Only) 8.2 / 12.2
Clang (macOS Only) 9.0 及以上 通常使用 macOS 10.11 及以上的系统对应的 Clang 版本即可
Python(64 bit) 3.9 3.10 3.11 3.12 3.13 依赖 libpython3.9+.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.21.0 pip install numpy
httpx pip install httpx
Pillow pip install Pillow
networkx pip install networkx
typing_extensions pip install typing_extensions
safetensors pip install safetensors >=0.6.0
opt_einsum pip install opt_einsum==3.3.0
protobuf >=3.20.2 pip install protobuf
patchELF any apt install patchelf 或参见 github patchELF 官方文档
go >=1.8 可选
setuptools 在 python3.12 及以上需要
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 支持 MKLOpenBlAS 两种 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 )后,再指定。



安装包列表

您可以在以下飞桨官方路径中根据您的 CUDA 环境查找并下载对应的 PaddlePaddle-gpu 发行版本:



多版本 whl 包列表-Release

版本说明 cp39-cp39 cp310-cp310 cp311-cp311 cp312-cp312 cp313-cp313
cpu-mkl-avx paddlepaddle-3.3.0-cp39-cp39-linux_x86_64.whl paddlepaddle-3.3.0-cp310-cp310-linux_x86_64.whl paddlepaddle-3.3.0-cp311-cp311-linux_x86_64.whl paddlepaddle-3.3.0-cp312-cp312-linux_x86_64.whl paddlepaddle-3.3.0-cp313-cp313-linux_x86_64.whl
cuda11.8-cudnn8.6-mkl-gcc8.2-avx paddlepaddle_gpu-3.3.0-cp39-cp39-linux_x86_64.whl paddlepaddle_gpu-3.3.0-cp310-cp310-linux_x86_64.whl paddlepaddle_gpu-3.3.0-cp311-cp311-linux_x86_64.whl paddlepaddle_gpu-3.3.0-cp312-cp312-linux_x86_64.whl paddlepaddle_gpu-3.3.0-cp313-cp313-linux_x86_64.whl
cuda12.6-cudnn9.0-mkl-gcc12.2-avx paddlepaddle_gpu-3.3.0-cp39-cp39-linux_x86_64.whl paddlepaddle_gpu-3.3.0-cp310-cp310-linux_x86_64.whl paddlepaddle_gpu-3.3.0-cp311-cp311-linux_x86_64.whl paddlepaddle_gpu-3.3.0-cp312-cp312-linux_x86_64.whl paddlepaddle_gpu-3.3.0-cp313-cp313-linux_x86_64.whl
cuda12.9-cudnn9.9-mkl-gcc12.2-avx paddlepaddle_gpu-3.3.0-cp39-cp39-linux_x86_64.whl paddlepaddle_gpu-3.3.0-cp310-cp310-linux_x86_64.whl paddlepaddle_gpu-3.3.0-cp311-cp311-linux_x86_64.whl paddlepaddle_gpu-3.3.0-cp312-cp312-linux_x86_64.whl paddlepaddle_gpu-3.3.0-cp313-cp313-linux_x86_64.whl
cuda13.0-cudnn9.13-mkl-gcc13.1-avx paddlepaddle_gpu-3.3.0-cp39-cp39-linux_x86_64.whl paddlepaddle_gpu-3.3.0-cp310-cp310-linux_x86_64.whl paddlepaddle_gpu-3.3.0-cp311-cp311-linux_x86_64.whl paddlepaddle_gpu-3.3.0-cp312-cp312-linux_x86_64.whl paddlepaddle_gpu-3.3.0-cp313-cp313-linux_x86_64.whl
macos-cpu-arm paddlepaddle-3.3.0-cp39-cp39-macosx_11_0_arm64.whl paddlepaddle-3.3.0-cp310-cp310-macosx_11_0_arm64.whl paddlepaddle-3.3.0-cp311-cp311-macosx_11_0_arm64.whl paddlepaddle-3.3.0-cp312-cp312-macosx_11_0_arm64.whl paddlepaddle-3.3.0-cp313-cp313-macosx_11_0_arm64.whl
win-cpu-mkl-avx paddlepaddle-3.3.0-cp39-cp39-win_amd64.whl paddlepaddle-3.3.0-cp310-cp310-win_amd64.whl paddlepaddle-3.3.0-cp311-cp311-win_amd64.whl paddlepaddle-3.3.0-cp312-cp312-win_amd64.whl paddlepaddle-3.3.0-cp313-cp313-win_amd64.whl
win-cuda11.8-cudnn8.6-mkl-vs2019-avx paddlepaddle_gpu-3.3.0-cp39-cp39-win_amd64.whl paddlepaddle_gpu-3.3.0-cp310-cp310-win_amd64.whl paddlepaddle_gpu-3.3.0-cp311-cp311-win_amd64.whl paddlepaddle_gpu-3.3.0-cp312-cp312-win_amd64.whl paddlepaddle_gpu-3.3.0-cp313-cp313-win_amd64.whl
win-cuda12.6-cudnn9.0-mkl-vs2019-avx paddlepaddle_gpu-3.3.0-cp39-cp39-win_amd64.whl paddlepaddle_gpu-3.3.0-cp310-cp310-win_amd64.whl paddlepaddle_gpu-3.3.0-cp311-cp311-win_amd64.whl paddlepaddle_gpu-3.3.0-cp312-cp312-win_amd64.whl paddlepaddle_gpu-3.3.0-cp313-cp313-win_amd64.whl
win-cuda12.9-cudnn9.9-mkl-vs2019-avx paddlepaddle_gpu-3.3.0-cp39-cp39-win_amd64.whl paddlepaddle_gpu-3.3.0-cp310-cp310-win_amd64.whl paddlepaddle_gpu-3.3.0-cp311-cp311-win_amd64.whl paddlepaddle_gpu-3.3.0-cp312-cp312-win_amd64.whl paddlepaddle_gpu-3.3.0-cp313-cp313-win_amd64.whl

表格说明

  • 纵轴

cpu-mkl: 支持 CPU 训练和预测,使用 Intel mkl 数学库

cuda10_cudnn7-mkl: 支持 GPU 训练和预测,使用 Intel mkl 数学库

  • 横轴

一般是类似于“cp310-cp310”的形式,其中:

310:python tag,指 python3.10,类似的还有“39”、“311”、“312”、 “313”等

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: 类似'py39', 'py310', 'py311', 'py312','py313',用于标明对应的 python 版本

abi tag: 类似'cp33m', 'abi3', 'none'

platform tag: 类似 'linux_x86_64', 'any'



在 Docker 中执行 PaddlePaddle 训练程序

假设您已经在当前目录(比如在/home/work)编写了一个 PaddlePaddle 的程序: train.py (可以参考 PaddlePaddleBook 编写),就可以使用下面的命令开始执行训练:

cd /home/work
docker run -it -v $PWD:/work ccr-2vdh3abv-pub.cnc.bj.baidubce.com/paddlepaddle/paddle:3.3.0-gpu-cuda12.9-cudnn9.9 /work/train.py

上述命令中,-it 参数说明容器已交互式运行;-v $PWD:/work 指定将当前路径(Linux 中 PWD 变量会展开为当前路径的绝对路径)挂载到容器内部的:/work 目录: ccr-2vdh3abv-pub.cnc.bj.baidubce.com/paddlepaddle/paddle:3.3.0-gpu-cuda12.9-cudnn9.9 指定需要使用的容器,此处以 cuda12.9 为例; 最后/work/train.py为容器内执行的命令,即运行训练程序。

当然,您也可以进入到 Docker 容器中,以交互式的方式执行或调试您的代码:

docker run -it -v $PWD:/work ccr-2vdh3abv-pub.cnc.bj.baidubce.com/paddlepaddle/paddle:3.3.0-gpu-cuda12.9-cudnn9.9 /bin/bash
cd /work
python train.py

注:PaddlePaddle Docker 镜像为了减小体积,默认没有安装 vim,您可以在容器中执行 apt-get install -y vim 安装后,在容器中编辑代码。



使用 Docker 执行 GPU 训练

为了保证 GPU 驱动能够在镜像里面正常运行,我们推荐使用 nvidia-docker来运行镜像。 请不要忘记提前在物理机上安装 GPU 最新驱动,驱动要求可以参考这里

nvidia-docker run -it -v $PWD:/work ccr-2vdh3abv-pub.cnc.bj.baidubce.com/paddlepaddle/paddle:3.3.0-gpu-cuda12.9-cudnn9.9 /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 ccr-2vdh3abv-pub.cnc.bj.baidubce.com/paddlepaddle/paddle:latest-gpu