[TOC]
introduction
install
可以使用三种方式进行安装,包括
- container 形式进行安装,下载NGC container;
- debian 形式安装
- pip 形式进行安装
container 形式安装
下载https://github.com/NVIDIA/TensorRT/blob/main/docker/ubuntu-18.04.Dockerfiledocker build -f ubuntu-18.04.Dockerfile --build-arg CUDA_VERSION=11.4.3 --tag=tensorrt-ubuntu .
debian 形式安装
pip形式进行安装
与TensorRT包里面wheel包安装形式不同,这种方式是自己管理TensorRT安装,不需要提前安装TensorRT包。目前只支持Python 3.6~3.9和CUDA 11.4。
安装前的准备
1 | python3 -m pip install nvidia-pyindex |
pip install时需要额外指定--extra-index-url https://pypi.ngc.nvidia.com
安装TensorRT wheel包
1 | python3 -m pip install --upgrade nvidia-tensorrt |
进行验证
1 | python3 |
TensorRT生态
basic workflow
convert
- 使用TF-TRT
- 使用Torch-TensorRT
- onnx转换器转换.onnx模型
- 使用TensorRT API进行组网
deploy
使用 TensorFlow
使用 TensorFflow 模型部署即可,TensorRT不支持的OP,会fall back到TensorFlow实现。
使用 TRT Runtime API
开销最小,能实现细粒度控制。对于不是原生支持的OP,需要使用plugin进行实现
使用 Nvidia Triton Inference Server
能支持多种框架,包括 TensorFlow, TensorRT, PyTorch, ONNX Runtime, 或者自定义框架。
TensorRT 基础介绍
创建引擎
1 | Logger gLogger; |
构建推理
1 | IBuilderConfig* config = builder->createBuilderConfig(); |
1 | void* buffers[n]; |
dynamic shape
createNetwork()与createNetworkV2()的区别有两处,一是前者处理的维度为(C,H,W), 后者为(B,C,H,W);二是后者支持dynamic shapes。
plugin
- createNetwork()
- createNetworkV2()
TensorRT 优化
https://blog.csdn.net/qq_33287871/article/details/117201271 - Weight &Activation Precision Calibration
- Layer & Tensor Fusion
- Kernel Auto-Tuning
- Dynamic Tensor Memory
- Multi-Stream Execution
TensorRT API
1 | bool reshapeWeights( |