当前位置: 首页 > news >正文

TensorRT教程(1)初探TensorRT

1. TensorRT简要介绍

        TensorRT(NVIDIA TensorRT)是 NVIDIA 开发的一个用于深度学习推理的高性能推理引擎。它可以针对 NVIDIA GPU 进行高效的深度学习推理加速,提供了许多优化技术,使得推理速度更快,并且可以在生产环境中部署。

        下面是 TensorRT 的一些主要特点和功能:

        高性能推理:TensorRT 使用了许多优化技术,包括网络剪枝、量化、层融合、内存优化等,以提高推理速度和效率。这使得 TensorRT 能够在现代 NVIDIA GPU 上实现高性能的深度学习推理。

        多平台支持:TensorRT 提供了多个版本,可以在各种 NVIDIA GPU 上运行,并且支持多种操作系统,包括 Linux 和 Windows。它还提供了 Python API 和 C++ API,以满足不同开发环境和需求。

        灵活的部署选项:TensorRT 提供了多种部署选项,可以满足不同的部署需求。它可以作为独立的推理引擎使用,也可以与其他深度学习框架集成,例如 TensorFlow、PyTorch 等。

      支持常见的深度学习模型:TensorRT 支持常见的深度学习模型,包括卷积神经网络(CNN)、循环神经网络(RNN)、长短期记忆网络(LSTM)等。它还支持各种网络层,如卷积层、池化层、全连接层等。

        优化技术:TensorRT 提供了多种优化技术,包括网络剪枝、权重量化、层融合、内存优化等。这些优化技术可以显著提高推理速度,并降低内存消耗。

2. PyTorch到TensorRT

        PyTorch已经成为最流行的训练框架之一。

        那么如何将PyTorch训练所得到的权重文件部署到TensorRT中呢?

        一般情况下有两种方式可以实现。

        一种是通过将PyTorch训练的权重转换成为ONNX格式,然后通过TensorRT的OnnxParser推理,或者经过trtexec转换成为tensorrt的engine,然后跨平台推理。

        另一种方式是使用INetworkDefinition自行构建网络,生成tensorrt的engine,然后进行推理。

        前一种方式较为简洁,后一种方式较为复杂,需要对网络非常了解,对网络构建非常明晰。

        本序列课程将基于INetworkDefinition进行网络构建,讲解基于TensorRT的神经网络推理。

3. 初始构建

        首先需要明确一点,TensorRT是基于NCHW的Tensor模式。

        TensorRT的网络推理分为两个部分,首先是构建引擎,然后才可以使用引擎进行推理。

        当然也可以分成一部分,但是为了节省推理时间,我们通常会将构建的因为那个文件序列化,保存在本地,之后在每次推理的时候,反序列化、加载引擎,进行推理。

        初始构建的时候,需要先构建一个INetworkDefinition的对象,并且构建输入数据,参考如下。

INetworkDefinition *network = builder->createNetworkV2(1U);ITensor *data = network->addInput(mInputBlobName, dt, mInputDims);

其中,

mInputBlobName是一个字符串,标识输入Tensor节点的名字。

dt是一个DataType类型的变量,顾名思义,它用来标识输入Tensor的类型。

mInputDims是一个Dims类型的数据,用来表示输入Tensor的Dimension信息。

通过以上两行代码,我们看到了构建了一个空的网络。

4. 添加一个简单的卷积层

前面我们已经知道了如何构建一个空“网络”,那么我们接着添加一个卷积层,组成一个只有一层卷积的卷积神经网络。

    IConvolutionLayer *conv1 = network->addConvolutionNd(input, outch, DimsHW{ksize, ksize}, weightMap[lname + ".conv.weight"], emptywts);assert(conv1);conv1->setName((lname+".conv").data());conv1->setStrideNd(DimsHW{s, s});conv1->setPaddingNd(DimsHW{p, p});conv1->setNbGroups(g);

以上演示了在“网络”中添加卷积层。但这样我们比较繁琐,我们最好能够将卷积层进行封装。

ILayer *convBlock(INetworkDefinition *network, std::map<std::string, Weights> &weightMap, ITensor &input, int outch, int ksize, int s, int g, std::string lname, bool act){Weights emptywts{DataType::kFLOAT, nullptr, 0};int p = ksize / 3;IConvolutionLayer *conv1 = network->addConvolutionNd(input, outch, DimsHW{ksize, ksize}, weightMap[lname + ".conv.weight"], emptywts);assert(conv1);conv1->setName((lname+".conv").data());conv1->setStrideNd(DimsHW{s, s});conv1->setPaddingNd(DimsHW{p, p});conv1->setNbGroups(g);IScaleLayer *bn1 = addBatchNorm2d(network, weightMap, *conv1->getOutput(0), lname + ".bn", 1e-3);bn1->setName((lname+".bn").data());if(!act){return bn1;}// silu = x * sigmoidauto sig = network->addActivation(*bn1->getOutput(0), ActivationType::kSIGMOID);assert(sig);auto ew = network->addElementWise(*bn1->getOutput(0), *sig->getOutput(0), ElementWiseOperation::kPROD);assert(ew);return ew;}

OK,今天主要是作为TensorRT教程的开端,并构建一个简单的,只有一层卷积的神经网络。后续我们将继续深入探索。

相关文章:

TensorRT教程(1)初探TensorRT

1. TensorRT简要介绍 TensorRT&#xff08;NVIDIA TensorRT&#xff09;是 NVIDIA 开发的一个用于深度学习推理的高性能推理引擎。它可以针对 NVIDIA GPU 进行高效的深度学习推理加速&#xff0c;提供了许多优化技术&#xff0c;使得推理速度更快&#xff0c;并且可以在生产环境…...

多表连接查询和子查询

一、连接查询 连接查询是SQL语言最强大的功能之一&#xff0c;它可以执行查询时动态的将表连接起来&#xff0c;然后从中查询数据。 1.1、连接两表的方法 在SQL中连接两表可以有两种方法&#xff0c;一种是无连接规则连接&#xff0c;另一种是有连接规则连接。 无连接规则连…...

数据挖掘与机器学习——聚类算法

目录 无监督学习 聚类算法 概念&#xff1a; 功能&#xff1a; 应用场景&#xff1a; 评判标准&#xff1a; 划分聚类&#xff1a; K-means聚类 逻辑实现&#xff1a; 聚类方式 问题&#xff1a; 解决&#xff1a; 可能存在的问题&#xff1a; 1.初始值对K-means聚…...

QT快速下载

去QT官网之后&#xff0c;如下图所示 比如要下载qt-opensource-windows-x86-5.14.2.exe&#xff0c;进入5.14对应的文件夹&#xff0c;找到对应的版本 点击Details&#xff0c; 下载对应的种子&#xff0c;然后通过迅雷下载 个人实测&#xff0c;家庭网络平均18M的速率...

最短路问题

最短路问题是图论里非常经典的一个考点 接下来着重讲述五种求最短路的算法&#xff1a;朴素版dijkstra算法、堆优化版的dijkstra算法、bellman-ford算法、spfa算法、floyd算法 总体思维导图&#xff1a; 总体思路&#xff1a; 最短路分为两大类 { 在以下给出的时间复杂度中n…...

spark MLlib 中的分类模型

理解这些机器学习模型的数学原理需要一定的数学基础&#xff0c;下面我将简要介绍每个模型的数学原理&#xff0c;并附上相关的数学公式。 1. LinearSVC&#xff08;线性支持向量机&#xff09; 数学原理&#xff1a; 线性支持向量机的目标是找到一个超平面&#xff0c;最大化…...

24上半年报考人数“不增反降”?备考下半年软考的难了......

近日&#xff0c;工信教考发布了一篇《2024年上半年计算机软件资格考试顺利举行》的文章&#xff0c;公布了2024年上半年软考报考人数共计52.77万人&#xff0c;其中&#xff0c;初级资格5.12万人、中级资格24.37万人、高级资格23.28万人。 软考高级占总报名人数的44%&#xf…...

初出茅庐的小李博客之使用立创开发板(ESP32)连接到EMQX Platform【MQTT TLS/SSL 端口连接】

介绍 手上有一块立创开发板&#xff0c;本着不吃灰的原则把它用起来&#xff0c;今天就来用它来连接上自己部署的MQTT服务器进行数据通信。 硬件&#xff1a;立创开发板 开发环境&#xff1a;Arduino IDE Win11 MQTT 平台&#xff1a;EMQX Platform 立创开发板介绍&#xff1…...

js平滑滚动元素使其可见

直接上重点&#xff1a; let xpath "//*/div[idxxx]"; document.evaluate(xpath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.scrollIntoView({ behavior: "smooth"})这段代码是JavaScript中使用XPath查询文档并执行平…...

TP6 事件绑定、监听、订阅

事件绑定与监听 命令行生成事件类 php think make:event EventDemo 命令行生成事件监听类php think make:listener ListenerDemo 事件类可作为保存与事件相关信息的容器,如没有额外需求可以不需要定义 事件系统的所有操作都通过think\facade\Event类进行静态调用 当定义…...

SpringCloud Gateway中Filters详细说明

前面 https://blog.csdn.net/J080624/article/details/139494909 我们研究了GateWay中各种路由断言的使用。SpringCloud GateWay 还提供了各种过滤器用来对请求和响应进行处理。 官网地址&#xff1a;SpringCloud Gateway Filter 【1】GatewayFilter Factories 路由过滤器允…...

力扣2156.查找给定哈希值的子串

力扣2156.查找给定哈希值的子串 rolling hash&#xff1a;求带权的值 左边是高位 右边是低位 本题要求左边低位 只要反向求即可 class Solution {public:string subStrHash(string s, int power, int modulo, int k, int hashValue) {int n s.size();long long M modulo,p…...

推荐低成本低功耗的纯数字现场可重构IC

CPLD采用CMOS EPROM、EEPROM、快闪存储器和SRAM等编程技术&#xff0c;从而构成了高密度、高速度和低功耗的可编程逻辑器件。 RAMSUN提供的型号LS98003是通用可配置的数字逻辑芯片&#xff0c;有体积小、超低功耗和高可靠性等特点。客户可以根据自己的功能需求设计芯片&#x…...

解决change事件与blur事件互不影响

<template><div style"margin-top: 40px"><el-selectv-model"form.name"placeholder"请选择名称"clearablefilterableref"selectName"allow-createblur"nameBlur($event)"visible-change"visibleNameCh…...

后端开发面经系列 -- 同程旅行C++一面

同程旅行C一面 公众号&#xff1a;阿Q技术站 文章目录 同程旅行C一面1、sizeof与strlen的区别&#xff1f;2、运算符和函数有什么区别&#xff1f;3、new和malloc&#xff1f;4、内存泄漏与规避方法&#xff1f;5、悬空指针与野指针&#xff1f;6、手撕冒泡排序&#xff1f;7、…...

推荐几个开源的c#的工作流引擎组件

以下是一个.NET Core领域可以推荐使用的流程引擎的表格&#xff1a; 名称 生产厂家 下载地址 支持二开 独立部署 ccflow 济南驰骋信息技术有限公司 https://gitee.com/opencc 是 是 Elsa Elsa Workflows GitHub - elsa-workflows/elsa-core: A .NET workflows li…...

视频汇聚EasyCVR视频监控云平台对接GA/T 1400视图库对象和对象集合XMLSchema描述

GA/T 1400协议主要应用于公安系统的视频图像信息应用系统&#xff0c;如警务综合平台、治安防控系统、交通管理系统等。在城市的治安监控、交通管理、案件侦查等方面&#xff0c;GA/T 1400协议都发挥着重要作用。 以视频汇聚EasyCVR视频监控资源管理平台为例&#xff0c;该平台…...

【JavaScript脚本宇宙】瞬息万变:探索实时Web应用的JavaScript库

鸟瞰实时Web开发&#xff1a;JavaScript库大比拼 前言 随着Web应用程序的发展&#xff0c;实时通讯已成为一个重要的需求。本篇文章将探索六个关键的JavaScript库&#xff0c;这些库为我们提供助力&#xff0c;使得实时Web应用程序的创建成为可能。 欢迎订阅专栏&#xff1a;…...

Java数据结构与算法(有向无环图)

前言 有向无环图&#xff08;Directed Graph&#xff09;是在有向图的基础上&#xff0c;增加无环的检查。 实现原理 使用邻接表表示法实现有向图相对简单明了&#xff0c;步骤也相对简单。 1:首先创建有向图 2.创建顶点 3.顶点间创建边 4.创建边的过程中检查节点是否存…...

QuanTA: 一种新的高秩高效微调范式

QuanTA方法的核心是利用张量操作来模拟量子电路中的门操作。这些张量被设计为仅在特定的轴上应用&#xff0c;类似于量子电路中的单量子比特或双量子比特门。通过这种方式&#xff0c;QuanTA能够以高秩参数化来适应LLMs的权重矩阵。 网址&#xff1a;QuanTA: 一种新的高秩高效微…...

3步掌握PinWin效率工具:让窗口置顶操作效率提升10倍

3步掌握PinWin效率工具&#xff1a;让窗口置顶操作效率提升10倍 【免费下载链接】PinWin Pin any window to be always on top of the screen 项目地址: https://gitcode.com/gh_mirrors/pin/PinWin 你是否曾在视频会议时手忙脚乱地寻找被覆盖的会议窗口&#xff1f;在多…...

基于凌科芯安加密芯片智能门锁解决方案

随着物联网产业的快速发展&#xff0c;智能网络设备对信息安全的需求与依赖日益增强。在万物互联的背景下&#xff0c;电子锁作为典型的安全防范产品&#xff0c;在重点场所安防与居民居家安全保障中发挥着关键作用。其中&#xff0c;智能门锁凭借密码、指纹、人脸识别、手机远…...

ThinkPHP8 + Swoole6 实战:从宝塔面板到进程守护,手把手搭建稳定WebSocket服务

ThinkPHP8 Swoole6 生产级WebSocket服务部署指南 当实时通信成为现代应用的标配&#xff0c;如何将WebSocket服务稳定部署到生产环境就成了开发者必须掌握的技能。不同于本地开发环境&#xff0c;线上部署需要考虑服务器配置、进程守护、负载均衡等一系列复杂因素。本文将带你…...

30行代码,就是一个完整的AI Agent——Claude Code源码精读(一)

30行代码&#xff0c;就是一个完整的AI Agent——Claude Code源码精读&#xff08;一&#xff09; 核心摘要 大多数人谈起 Claude Code&#xff0c;想到的是"能写代码的 AI 助手"。但如果你看它的源码&#xff0c;会发现最核心的机制出奇地简单&#xff1a;一个 whil…...

Qwen3.5-9B-AWQ-4bit惊艳效果展示:高清图识+中文摘要真实生成作品集

Qwen3.5-9B-AWQ-4bit惊艳效果展示&#xff1a;高清图识中文摘要真实生成作品集 1. 模型能力概览 Qwen3.5-9B-AWQ-4bit是一款让人眼前一亮的视觉理解模型&#xff0c;它能像人类一样"看懂"图片内容&#xff0c;并用流畅的中文给出专业分析。这个模型特别擅长处理各种…...

不止是打字机效果:手把手教你用SpannableStringBuilder打造Android富文本AI对话界面

超越基础文本渲染&#xff1a;用SpannableStringBuilder构建专业级AI对话界面 在移动应用开发中&#xff0c;AI对话界面的用户体验往往决定了产品的专业度。传统的TextView虽然能显示文字&#xff0c;但要实现类似DeepSeek等专业AI产品的交互效果&#xff0c;需要深入掌握Andro…...

2026届必备的五大AI辅助写作方案推荐榜单

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 在人工智能技术参与进来之后&#xff0c;学术论文写作在效率方面有了明显的大幅提升&#xf…...

LoRa网关实战:5分钟搞定MQTT通信(附Java代码示例)

LoRa网关实战&#xff1a;5分钟搞定MQTT通信&#xff08;附Java代码示例&#xff09; 在物联网项目开发中&#xff0c;LoRa网关与服务器的高效通信是确保数据可靠传输的关键环节。MQTT协议凭借其轻量级、低功耗的特性&#xff0c;成为连接LoRa设备与云端服务的首选方案。本文将…...

AI人体骨骼关键点检测:5分钟快速部署,33个关节点一键可视化

AI人体骨骼关键点检测&#xff1a;5分钟快速部署&#xff0c;33个关节点一键可视化 1. 引言&#xff1a;快速体验人体姿态检测 人体骨骼关键点检测技术正在改变我们与计算机交互的方式。想象一下&#xff0c;你的电脑能够实时理解你的每一个动作——从简单的举手到复杂的舞蹈…...

如何解决Tokio项目中Windows平台TCP性能问题的完整指南

如何解决Tokio项目中Windows平台TCP性能问题的完整指南 【免费下载链接】tokio A runtime for writing reliable asynchronous applications with Rust. Provides I/O, networking, scheduling, timers, ... 项目地址: https://gitcode.com/GitHub_Trending/to/tokio To…...