ai性能优化之tensorrt(1tensorrt简介及安装)(代码片段)

狂奔的CD 狂奔的CD     2023-02-14     428

关键词:

文章目录

正文

1. NVIDIA TensorRT介绍

https://developer.nvidia.com/zh-cn/tensorrt

NVIDIA TensorRT™ 是用于高性能深度学习推理的 SDK。此 SDK 包含深度学习推理优化器和运行时环境,可为深度学习推理应用提供低延迟和高吞吐量。

在推理过程中,基于 TensorRT 的应用程序的执行速度可比 CPU 平台的速度快 40 倍。借助 TensorRT,您可以优化在所有主要框架中训练的神经网络模型,精确校正低精度,并最终将模型部署到超大规模数据中心、嵌入式或汽车产品平台中。

TensorRT 以 NVIDIA 的并行编程模型 CUDA 为基础构建而成,可帮助您利用 CUDA-X 中的库、开发工具和技术,针对人工智能、自主机器、高性能计算和图形优化所有深度学习框架中的推理。

TensorRT 针对多种深度学习推理应用的生产部署提供 INT8 和 FP16 优化,例如视频流式传输、语音识别、推荐和自然语言处理。推理精度降低后可显著减少应用延迟,这恰巧满足了许多实时服务、自动和嵌入式应用的要求。

TensorRT 显著提高了 NVIDIA GPU 上的深度学习推理性能。也就是Nvidia芯片上的

2. TensorRT的安装

参考:Jetson平台安装TensorRT
官网:https://docs.nvidia.com/deeplearning/tensorrt/install-guide/index.html
cuda11.4以上可以直接下载TensorRT8.4的源码,里面有编译好的.whl文件

安装好后验证

 # 查看 python3中引入 tensorrt
python3
import tensorrt
print(tensorrt.__version__)
>>> assert tensorrt.Builder(tensorrt.Logger())

3. 开发文档

这里安装了tensorRT 7.1.3版本,查看对应的文档

3-1 开发流程

3-2 python api

Note: The TensorRT Python API is not available for all platforms. For more information, see TensorRT Support Matrix

1)工作流程

2)核心元素

Logger
Most other TensorRT classes use a logger to report errors, warnings and informative messages. TensorRT provides a basic tensorrt.Logger implementation, but you can write your own implementation by deriving from tensorrt.ILogger for more advanced functionality.

Parsers
Parsers are used to populate a tensorrt.INetworkDefinition from a model trained in a Deep Learning framework.

Network
The tensorrt.INetworkDefinition represents a computational graph. In order to populate the network, TensorRT provides a suite of parsers for a variety of Deep Learning frameworks. It is also possible to populate the network manually using the Network API.

Builder
The tensorrt.Builder is used to build a tensorrt.ICudaEngine . In order to do so, it must be provided a populated tensorrt.INetworkDefinition .

Engine and Context
The tensorrt.ICudaEngine is the output of the TensorRT optimizer. It is used to generate a tensorrt.IExecutionContext that can perform inference.

3)…其他

具体请看官方文档

3-3 PyTorch demo

查看官方demo,如何利用TensorRT推理PyTorch模型
“Hello World” For TensorRT Using PyTorch And Python

从demo可以看出,PyTorch的模型如果需要转TensorRT,需要用TensorRT的PythonAPI来一层层构建PyTorch对应的神经网络

3-4 ONNX demo

查看官方demo
Refitting An Engine Built From An ONNX Model In Python

深入github项目主流程文件

"""Takes an ONNX file and creates a TensorRT engine to run inference with"""
        builder = trt.Builder(TRT_LOGGER)
        # Set max threads that can be used by builder.
        builder.max_threads = 10
        network = builder.create_network(common.EXPLICIT_BATCH)
        parser = trt.OnnxParser(network, TRT_LOGGER)
        runtime = trt.Runtime(TRT_LOGGER)
        # Set max threads that can be used by runtime.
        runtime.max_threads = 10

        # Parse model file
        print("Loading ONNX file from path ...".format(onnx_file_path))
        with open(onnx_file_path, "rb") as model:
            print("Beginning ONNX file parsing")
            if not parser.parse(model.read()):
                print("ERROR: Failed to parse the ONNX file.")
                for error in range(parser.num_errors):
                    print(parser.get_error(error))
                return None
        print("Completed parsing of ONNX file")

可以得到结论,tensorRT具备ONNX Parser,直接读取ONNX模型,并用于推理。

ai性能优化之tensorrt(1tensorrt简介及安装)(代码片段)

文章目录正文1.NVIDIATensorRT介绍2.TensorRT的安装3.开发文档3-1开发流程3-2pythonapi1)工作流程2)核心元素3)...其他3-3PyTorchdemo3-4ONNXdemo正文1.NVIDIATensorRT介绍https://developer.nvidia.com/zh-cn/tensorrtNVIDIATensorRT™是用于高性能深度学... 查看详情

极智ai|讲解tensorrtfullyconnected算子(代码片段)

...们来看看TensorRT中FullyConnected的几种实现方式。文章目录1TensorRT原生算子实现2TensorRT矩阵乘加实现1TensorRT原生算子实现 用TensorRTFullyConnected原生算子来实现肯定是最方便的,关键的几步如下:placeHolder=np.zeros(1,dtype=np... 查看详情

游戏ai—行为树优化之

...改变行为树节点的内存分布,可以显著提高行为树的内存性能。解决办法我们可以在BehaviorT 查看详情

英伟达悄悄发布最新tensorrt8,性能提升200%!

...元报道  来源:Nvidia近日,英伟达悄悄地发布了TensorRT8,BERT-Large推理仅需1.2毫秒!同时还加入了量化感知训练和对稀疏性的支持,实现了性能200%的提升。项目已开源。2019年黄仁勋在GTCChina正式发布了TensorRT7&#... 查看详情

带有 TensorRT 的 C++ Tensorflow API

】带有TensorRT的C++TensorflowAPI【英文标题】:C++TensorflowAPIwithTensorRT【发布时间】:2018-05-0201:14:05【问题描述】:我的目标是在C++应用程序中运行tensorrt优化的tensorflow图。我正在使用tensorflow1.8和tensorrt4。使用pythonapi,我能够优化图... 查看详情

20191120-tensorrt(代码片段)

layouttitlecategoriestagsdatedescriptionpostInferenceFrameworkbasedTensorRTprojectinference优化2019-11-2015:00:00-0800在大规模服务上的推理引擎tensorrt引言视觉算法经过几年高速发展,大量的算法被提出。为了能真正将算法在实际应用场景中更好地... 查看详情

性能优化之java(android)代码优化

性能优化之Java(Android)代码优化本文为Android性能优化的第三篇——Java(Android)代码优化。主要介绍Java代码中性能优化方式及网络优化,包括缓存、异步、延迟、数据存储、算法、JNI、逻辑等优化方式。(时间仓促,后面还会... 查看详情

首个中文stablediffusion模型开源;tpu演进十年;18个pytorch性能优化技巧|ai系统前沿动态...

1.TPU演进十年:Google的十大经验教训希腊神话中,特洛伊战争的起因是两方争夺世界上最美的女人——海伦,后世诗人将海伦的美貌“令成千战舰为之起航”。TPU就像海伦,它的出现引起了“成千芯片与之竞逐”... 查看详情

性能优化之java(android)代码优化

本文为Android性能优化的第三篇——Java(Android)代码优化。主要介绍Java代码中性能优化方式及网络优化,包括缓存、异步、延迟、数据存储、算法、JNI、逻辑等优化方式。(时间仓促,后面还会继续完善^_*)目前性能优化专题... 查看详情

如何使用modelbox快速提升ai应用性能?

摘要:在开发初期开发者往往聚焦在模型的精度上,性能关注较少,但随着业务量不断增加,AI应用的性能往往成为瓶颈,此时对于没有性能优化经验的开发者来说往往需要耗费大量精力做优化性能,本文为开发者介绍一些常用... 查看详情

android性能优化之内存泄漏检测以及内存优化(下)(代码片段)

...析一下Android内存优化的相关内容。  上篇:Android性能优化之内存泄漏检测以及内存优化(上)。  中篇:Android性能优化之内存泄漏检测以及内存优化(中)。  下篇:Android性能优化之内存 查看详情

nvida-tensorrt部署(代码片段)

TensorRT是一个高性能的深度学习推理(Inference)优化器,可以为深度学习应用提供低延迟、高吞吐率的部署推理。TensorRT可用于超大规模数据中心、嵌入式平台或自动驾驶平台进行推理加速。TensorRT现已能支持TensorFlow、Caffe、Mxnet... 查看详情

tensorrt介绍

...低响应时间、低资源消耗以及简便的部署流程要求,因此TensorRT就是用来解决推理所带来的挑战以及影响的部署级的解决方案。TensorRT是nvidia自己开发的,主要作用就是对算法进行优化,然后进行了部署TensorRT部署流程:TensorRT的... 查看详情

前端性能优化之请求优化(代码片段)

...体验是一件永无止境的事情,没有最优,只有更优。前端性能优化方向有很多,今天主要讲解在网络请求上的优化。因涉及的优化方向较多,对于具体细节不再赘述。总体按以下三个方向优化:请求数据控制请求体积减少请求尽... 查看详情

前端性能优化之优化图片

...积大于代码体积,图片请求多余代码文件请求,给前端的性能带来了很大的困扰,那么应该如何解决呢?  零、认识图片  我们通常使用的图片就是gif、png和jpg了。   其中,gif格式是比较老的图片格式,它的色彩... 查看详情

在使用 TensorRT 推理服务器时指定优化策略

】在使用TensorRT推理服务器时指定优化策略【英文标题】:SpecifyingOptimizationPolicywhileusingTensorRTInferenceServer【发布时间】:2019-04-0915:21:17【问题描述】:我已成功使用TensorRT推理服务器为Tensorflow对象检测API模型提供服务,配置文件... 查看详情

极智ai|讲解tensorrt怎么实现torch.select层(代码片段)

...记分享 大家好,我是极智视界,本文讲解一下TensorRT实现torch.select层。 我们知道,有很多算子都不会在TensorRT的原生支持算子列表里,当然这里要讲的select算子也是一样。然而,大部分的算子通过一些TensorR... 查看详情

android性能优化之内存泄漏检测以及内存优化(中)(代码片段)

...,和Android的内存优化相关内容。  上篇:Android性能优化之内存泄漏检测以及内存优化(上)。  中篇:Android性能优化之内存泄漏检测以及内存优化( 查看详情