tensorrt

使用TensorRT对caffe和pytorch onnx模型进行fp32和fp16推理

老子叫甜甜 提交于 2019-12-05 01:52:09
本文首发于个人博客 https://kezunlin.me/post/bcdfb73c/ ,欢迎阅读最新内容! tensorrt fp32 fp16 tutorial with caffe pytorch minist model Series Part 1: install and configure tensorrt 4 on ubuntu 16.04 Part 2: tensorrt fp32 fp16 tutorial Part 3: tensorrt int8 tutorial Code Example include headers #include <assert.h> #include <sys/stat.h> #include <time.h> #include <iostream> #include <fstream> #include <sstream> #include <iomanip> #include <cmath> #include <algorithm> #include <cuda_runtime_api.h> #include "NvCaffeParser.h" #include "NvOnnxConfig.h" #include "NvOnnxParser.h" #include "NvInfer.h" #include "common.h"

C++ Tensorflow API with TensorRT

点点圈 提交于 2019-12-03 21:25:59
My goal is to run a tensorrt optimized tensorflow graph in a C++ application. I am using tensorflow 1.8 with tensorrt 4. Using the python api I am able to optimize the graph and see a nice performance increase. Trying to run the graph in c++ fails with the following error: Not found: Op type not registered 'TRTEngineOp' in binary running on e15ff5301262. Make sure the Op and Kernel are registered in the binary running in this process. Other, non tensorrt graphs work. I had a similar error with the python api, but solved it by importing tensorflow.contrib.tensorrt. From the error I am fairly

TensorRT 加速 Keras 模型在 Jetson 上的推理

匿名 (未验证) 提交于 2019-12-03 00:13:02
将一个训练好的 Keras 模型通过 TensorRT 加速并 Push 到 Jetson TX2 上的流程框图如下: 下面对一些关键代码及步骤进行解释: Keras model to Tensorflow frozen graph 这一步可以在任意一台机器上完成,不限于 Jetson TX2 或者其 Host PC 上,只要配置了 tensorflow 和 keras 即可。 1234567891011121314151617181920212223242526272829303132333435 import tensorflow as tf from keras . models import model_from_jsonfrom keras import backend as Kimport os def ( model_file , weights_file ): with open ( model_file , 'r' ) as f : json_string = f . read () K . set_learning_phase ( 0 ) model = model_from_json ( json_string ) model . load_weights ( weights_file ) # rename output nodes output_node

TensorRT安装 &amp; 环境配置

匿名 (未验证) 提交于 2019-12-02 23:42:01
TensorRT安装&环境配置 环境: ubuntu14.04, Tesla P4, Python3.4, Cuda8.0, Cudnn7.1.3 概述: 从装有Ubuntu14.04和Python3.4的服务器上实现环境的配置。本文记录了在配置各个必要组件的环节中遇到的问题。 1. 配置Nvidia驱动 服务器显卡是Tesla的P4显卡,在2019.6.13这一天Nivida官网适用Linux-64bit,cuda tookit 8.0的对应驱动(这里指的只有runfile方式) 也只有一个可以下载,即NVIDIA-Linux-x86_64-384.66.run。在下载安装过程中遇到了以下几个问题。 第一个问题是下载问题。 Nvidia-Linux-~.run文件下载下来后,显示的文件大小和官网那个上标识的97m不同,我下载了两次都是95.55m和103m,在安装的时候都遇到了错误。 这里的解决办法就是重新下载驱动,这里的问题就是驱动受损,我重新下载第三次后成功。 第二个问题是意外。 如果lspci | grep NVIDIA 没有显示NVIDIA卡,又确定把卡插在了电脑里,那就说明,插卡的卡槽出了问题或者卡出了问题。 第三个问题是驱动瓦特问题 如果前面的步骤都没有问题,就是驱动瓦特了,重装一遍即可。 #卸载原来的驱动(残留在服务器里,还没办法用) $sudo apt-get

TensorFlow 笔记03-TensoeFlow 和 TensorRT 调试的一些方法

大城市里の小女人 提交于 2019-12-02 02:39:54
▶ TensoeFlow 和 TensorRT 调试的一些方法,用于输出中间层的情况方便观察 ● Tensorflow 中的方法 1 sess = tf.Session() # 新开会话用于调试 2 sess.run(tf.global_variables_initializer()) 3 temp = sess.run(h1,feed_dict = {'input:0':X}) # 获取指定节点,并给输入节点喂进数据 4 16 print(i, "-shape: ", np.shape(temp)) 5 17 print(temp) 6 18 sess.close() ● Keras 中的两种方法 1 from keras.models import Model 2 from keras import backend as K 3 4 ... # 建图 5 model = Model(inputs=x, outputs=y) 6 7 i = 1 # 指定需要输出的中间层序号(0 为 输入层) 8 kFun = K.function([model.layers[0].input],[model.layers[i].output]) # 建立 K.function 用来提取中间层输出,后面喂上输入数据 9 temp = kFun(X) # 喂进指定层输入数据,获取指定层输出 10

《二》TensorRT之C++接口使用

对着背影说爱祢 提交于 2019-12-01 10:20:11
以下内容根据个人理解整理而成,如有错误,欢迎指出,不胜感激。 0. 写在前面 本文首先根据 TensorRT开发者指南 梳理TensorRT的C++接口使用流程,然后基于TensorRT的官方例程 “Hello World” For TensorRT 来了解其具体使用方式。 1. C++接口使用 由 上一篇Blog 中的内容可知,模型从导入TensorRT到执行Inference大致经过下面三个阶段: Network Definition Builder Engine 这三个阶段分别对应着TensorRT中一些重要的类和方法,下面分别来叙述。 ILogger 首先说明一个必须但不是很重要的类 ILogger ,它用于记录一些日志信息。 在编程时,我们需要声明一个全局的 ILogger 对象gLogger,TensorRT中很多方法都需要它作为参数 (貌似需要继承 ILogger 类来编写自己的Logger类) IBuilder IBuilder 类应该算是最重要的一个类,在使用时,首先要使用TensorRT的全局方法 createInferBuilder() 来创建一个 IBuilder 类指针,然后由该指针调用 IBuilder 类方法创建Network和Engine类的指针。 INetworkDefinition INetworkDefinition 类即为网络定义,可通过

TensorRT入门

时光怂恿深爱的人放手 提交于 2019-12-01 06:09:07
本文转载于: 子棐之GPGPU 的 TensorRT系列入门篇 学习一下加深印象 Why TensorRT 训练对于深度学习来说是为了获得一个性能优异的模型,其主要的关注点在与模型的准确度、精度等指标。推理(inference)则不一样,其没有了训练中的反向迭代过程,是针对新的数据进行预测,而我们日常生活中使用的AI服务都是推理服务。相较于训练,推理的关注点不一样,从而也给现有的技术带来了新的挑战。 需求 现有框架的局限性 影响 高吞吐率 无法处理大量和高速的数据 增加了单次推理的开销 低响应时间 应用无法提供实时的结果 损害了用户体验(语音识别、个性化推荐和实时目标检测) 高效的功耗以及显存消耗控制 非最优效能 增加了推理的开销甚至无法进行推理部署 部署级别的解决方案 非专用于部署使用 框架复杂度和配置增加了部署难度以及生产率 根据上图可知,推理更关注的是高吞吐率、低响应时间、低资源消耗以及简便的部署流程,而TensorRT就是用来解决推理所带来的挑战以及影响的部署级的解决方案。 TensorRT的部署流程 TensorRT的部署分为两个部分:   1. 优化训练好的模型并生成计算流图   2. 使用TensorRT Runtime部署计算流图 那么我们很自然的就会想到下面几个问题?   1. TensorRT支持什么框架训练出来的网络模型呢?   2.

Swap a TensorFlow Dataset input pipeline with a placeholder after training

三世轮回 提交于 2019-11-30 14:48:44
I'm working with the new tf.data.Dataset API and I can't seem to figure out how to perform inference. Ultimately, I want to convert my model to a TensorRT graph and run it on the TX2, and all of the examples I have found assume you have a tf.placeholder for the input. Here is pseudocode for how I am training. The [...] is just meant to be a placeholder since I didn't actually run the code. Let's not debate the model, as it is just suppose to give an example: import tensorflow as tf # Setup iterator datain = tf.data.FixedLengthRecordDataset(datafiles, record_bytes1) labels = tf.data

TensorRT 的 C++ API 使用详解

两盒软妹~` 提交于 2019-11-30 00:26:52
原文链接:https://blog.csdn.net/u010552731/article/details/89501819 1. TensorRT 的 C++ API 使用示例 进行推理,需要先创建IExecutionContext对象,要创建这个对象,就需要先创建一个ICudaEngine的对象(engine)。 两种创建engine的方式: 使用模型文件创建engine,并可把创建的engine序列化后存储到硬盘以便后面直接使用; 使用之前已经序列化存储的engine,这种方式比较高效些,因为解析模型并生成engine还是挺慢的。 无论哪种方式,都需要创建一个全局的iLogger对象,并被用来作为很多TensorRT API方法的参数使用。如下是一个logger创建示例: class Logger : public ILogger { void log(Severity severity, const char* msg) override { // suppress info-level messages if (severity != Severity::kINFO) std::cout << msg << std::endl; } } gLogger; 2. 用 C++ API 创建TensorRT网络 2.1. 使用 C++ 的 parser API 导入模型 1.