TensorRT学习-yolov3

参考文献

https://github.com/NVIDIA/TensorRT
https://docs.nvidia.com/deeplearning/sdk/tensorrt-developer-guide/index.html
https://docs.nvidia.com/deeplearning/sdk/tensorrt-archived/
https://developer.nvidia.com/tensorrt

https://github.com/NVIDIA-AI-IOT/torch2trt

特性

  1. 量化的时候不损失精度, 量化的过程中做精度校正,通过将模型量化到INT8或FP16来最大化吞吐量,同时保持准确性。
  2. Layer以及Tensor之间相互融合,减少inference过程中的计算量。
  3. 根据GPU平台的不同,定制专属的Engine.
  4. 提高内存利用率
  5. 多流并行计算

融合机制

  1. 垂直融合
    1. 将一些Convolution, bia和激活等层合在一起计算
  2. 水平融合
    1. 将一些非常相似的操作合在一起同时计算

图示

原始网络:
在这里插入图片描述

  1. 垂直层融合
    在这里插入图片描述
  2. 水平融合
    在这里插入图片描述

操作步骤

Environment:
  Drive: 418.87 <> Cuda: 10.1 <> Cudnn: 7.6.5 <> tensorrt: 6.0.1.5

Install:

  1. 官网上下载tensorRT压缩包
  2. tar -xvzf TensorRT-.Ubuntu-16.04.x86_64-gnu.cuda-10.1.cudnn7.6.tar.gz
  3. export TRT_RELEASE=pwd/TensorRT-< version>
  4. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH: $TRT_RELEASE/lib
  5. cd TensorRT-< version>/python/
  6. pip install tensorrt-< version>-cp37-none-linux_x86_64.whl

Pseudocode(伪代码):
  TensorRT-API

  1. 创建builder
    trt_logger = trt.Logger(trt.Logger.WARNING)
    builder = trt.Builder(trt_logger)
  2. 通过builder创建一个空的TensorRT网络(Net)
    network = builder.create_network()
  3. 为这个空的Net添加组件
    network.add_input()
    network.add_convolution()
  4. 为builder设置参数
    builder.max_workspace_size = 1 << 20
    builder.fp16_mode = True
    builder.max_batch_size = 16
  5. 通过这个builder将Net打包成一个engine
    engine = builder.build_cuda_engine(network)
    如果要是有engine的时候,可以通过以下方式load:
    with open(engine_name, “rb”) as f, trt.Runtime(trt_logger) as runtime:
      engine = runtime.deserialize_cuda_engine(f.read())
  6. 通过engine创建上下文执行环境
    context = engine.create_execution_context()
  7. 定义自己的output, 用于接收tensorRT的输出结果
  8. code

结果

yolov3 <> Drive: 418.87 <> Cuda: 10.1 <> Cudnn: 7.6.5
在这里插入图片描述在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值