NVIDIA-GPU部署¶
Paddle Inference 支持通过以下两种方式在Nvidia-GPU上运行推理任务:
(1)GPU 原生推理 : PaddlePaddle 深度学习开源框架中存在大量用 CUDA 实现的算子,如果您选择用 GPU 原生推理,那么用于部署的模型会在一系列内部优化之后直接调用这些原生算子实现;
(2)GPU TensorRT 加速推理 : TensorRT 是一个针对 NVIDIA GPU 及 Jetson 系列硬件的高性能机器学习推理 SDK,可以使得深度学习模型在这些硬件上的部署获得更好的性能。Paddle Inference 采用子图的方式对 TensorRT 进行了集成,即我们可以使用该模块来提升 Paddle Inference 的推理性能。TensorRT 接入方式支持 fp32,fp16,int8 精度的推理,除了 CUDA 和 cuDNN,使用前您还需确保您的机器上已经安装了 TensoRT 。这通常会带给您比 GPU 原生推理更好的性能;
Note
目前Paddle Inference可以支持绝大多数的 NVIDIA-GPU平台,如果您不确定您的GPU平台是否被支持,请查阅本篇文档附录中的硬件支持列表
本章节为您详细介绍了如何实现基于原生推理和TensorRT推理,并提供了可参考的示例代码,主要分为以下四个部分:
GPU 原生推理 : 介绍如何使用 GPU 原生推理将模型部署在 GPU 硬件上,包括根据示例代码介绍 Paddle Inference C++/Python API 的使用流程,如何安装 Paddle Inference 推理库,以及如何在 Ubuntu、Windows 等操作系统上编译和执行示例代码。
Note
GPU 原生混合精度推理目前支持 fp32、fp16 和 bfp16。使用前,您需要确保您的机器上已经安装了 CUDA 和 cuDNN。
GPU 混合精度推理 : 介绍如何使用 Paddle-GPU 原生混合精度推理。
GPU TensorRT 加速推理(NV-GPU/Jetson) : 介绍如何使用 TensorRT 加速模型推理,根据示例代码介绍启用 TensorRT 加速的 API、 保存优化后的模型降低首帧耗时、支持动态 shape 的 API 等内容。还会介绍 Paddle Inference 接入 TensorRT 的原理。
GPU TensorRT 低精度或量化推理 : 介绍 Paddle Inference 使用 TensorRT情况下,实现对低精度和量化推理的支持。
附录:硬件支持列表¶
Paddle Inference 对 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 | 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(推荐) | 
Paddle Inference 对 NVIDIA Jetson平台 的支持能力请参考下表:
| GPU架构 | Compute Capability | 对应Jetson硬件型号 | 
| Maxwell | SM53 | CTegra (Jetson) TX1 / Tegra X1C /Jetson Nano | 
| Pascal | SM62 | Tegra (Jetson) TX2 | 
| Volta | SM72 | Jetson AGX Xavier |