TensorRT宏碁自建云(BYOC, BuildYourOwnCloud)上集成
TensorRT宏碁自建云(BYOC, BuildYourOwnCloud)上集成
这个PR增加了对分区、编译和运行TensorRT BYOC目标的支持。
Building
有两个新的cmake标志:
USE_TENSORRT=ON/OFF:启用TENSORRT代码生成-这不需要TENSORRT库 USE_TENSORRT_GRAPH_RUNTIME=ON/OFF/"path/to/TensorRT":
启用TENSORRTruntime-这需要TENSORRT库。从deb包或JetPack在系统范围内安装TensorRT时,可以通过“ON”来检测,但是.tar.gz安装要求提供提取的TensorRT归档文件的路径。
Usage
编译目标应该是“cuda”,以确保将TensorRT函数的输入和输出参数放在GPU上。
# Compilation
from tvm.relay.op.contrib import tensorrt
mod = tensorrt.partition_for_tensorrt(mod, params)
with relay.build_config(opt_level=3):
graph, lib, params = relay.build(mod, target="cuda", params=params)
# Running inference is unchanged
mod = graph_runtime.create(graph, lib, ctx=tvm.gpu(0))
mod.run(...)
High level components
Partitioning
TensorRT的注释规则根据目标的TensorRT版本以及“批处理模式”而变化。这可以用trt_version进行配置,并使用use_implicit_batch分区的partition_for_tensorrt批处理参数。
如果TVM是针对TensorRT库构建的,则链接版本将用于分区。
Codegen
此实现使用codegen的JSONRuntime JSONSerializer基类将中继表达式序列化为json格式。
Runtime
runtime由tensorrt中的runtime模块类处理tensorrt_runtime.cc。在runtime,它首先使用TensorRTBuilder类(tensorrt_builder.cc)用于使用TensorRT API将json图转换为TensorRT INetworkDefinition。它使用tensorrt中的converterconverter classes算子tensorrt_ops.cc。然后,构建TensorRT引擎,此过程可能需要几分钟时间,因为TensorRT将在此时执行优化。引擎被缓存以备进一步的推理调用。
如果guards,runtime可以针对许多TensorRT版本进行编译。它适用于TensorRT 5、6和7。编译后的模型必须为TensorRT版本<=runtime使用的版本进行分区。编译后的模型可能需要更新的TensorRT版本的算子可用。
Problem
TensorRT有一些参数,比如max_workspace_size和use_implicit_batch,希望用户能够在分区_中为partition_for_tensorrt提供这些参数。这些参数需要传递给codegen并存储在序列化图中,直到运行时为止。使用“隐式”批处理也会影响分区规则。使用环境变量将这些从Python传递到C++中的代码生成。想知道有没有更好的方法来做这个?
我在python/tvm/relay/op/contrib/tensorrt.py中实现了一个名为prune_tensorrt_subgraphs()的转换/tensorrt.py. 这是在分区之后运行的,决定是保留子图还是将其返回到典型的TVM编译路径。之所以需要这样做,是因为有些子图可能是无效的——例如当输入具有不同的批处理大小时,或者为了优化目的,如果子图没有乘法累加。在C++中实现了一个通用版本,但使用全局注册表来允许每个代码对象定义自己的is_invalid_subgraph回调。将来,如果找到更好的方法来注册回调,可以切换到泛型版本。
需要在注释时介入目标tensorrt版本。把它放在一个全局变量中。
TensorRT宏碁自建云(BYOC, BuildYourOwnCloud)上集成的更多相关文章
- 宏碁宣布Liquid Jade智能机和Leap袖口
据科技网站Android Community 4月29日覆盖,宏碁29公布的新智能机Liquid Jade而随着智能手镯部署Liquid Leap.尽管宏碁已经宣布了一项新的外部基本信息.但价格格和商 ...
- Go -- FileManage 自建云盘
一.介绍 Caddy,用Go写的一款相当优秀的Web服务器软件,它有不少很有特色的功能,国内目前来说用的不多,不过也逐渐有越来越多的人知道了,它有个特色的插件功能,其中一款插件是FileManager ...
- 中小企业自建云WAF有多难?只需20分钟!而且:全程免费!
以往,运营型的web为了安全目的,才使用WAF进行安全防护. 而现如今,WAF对企业web来说,已然成了刚需.为何?等保.网络安全法的硬性要求! 当然,这样要求显然是对的:没有网络安全,就没有国家安全 ...
- 宏碁发布两款全A平台笔记本:良心价
导读 8月3日消息,在全球数码互动娱乐盛会ChinaJoy上,宏碁推出全新两款全A平台笔记本——暗影骑士4 锐龙版酷冷游戏本和蜂鸟Swift3锐龙版金属轻薄本. 此次发布的宏碁暗影骑士4 锐龙版笔记本 ...
- JAE京东云引擎Git上传管理代码教程和京东云数据库导入导出管理
文章目录 Git管理准备工作 Git工具上传代码 发布代码装程序 mywebsql管理 京东云引擎小结 JAE京东云引擎是京东推出的支持Java.Ruby.Python.PHP.Node.js多语 ...
- 码云git使用一(上传本地项目到码云git服务器上)
主要讲下如果将项目部署到码云git服务器上,然后使用studio导入git项目,修改本地代码后,并同步到码云git上面. 首先:我们在码云上注册账号并登陆.官网(https://git.oschina ...
- 一个空行引起的阿里云负载均衡上部署https证书的问题
今天在阿里云上购买了WoSign的https证书,在证书签发后,在控制台下载证书文件,一共有2个文件,一个是.key文件(私钥文件),一个是.pem文件(证书文件). 然后在阿里云负载均衡“证书管理” ...
- 视频云SDK iOS持续集成项目实践
1. 前言 2016年, 我们维护的 iOS推流播放融合SDK KSYLive_iOS 在github上发布了40多个版本, 平均两周发布一个新版本, 经历了最初痛苦的全手动版本构建和维护, 到后来慢 ...
- Thinkphp整合阿里云OSS图片上传实例
Thinkphp3.2整合阿里云OSS图片上传实例,图片上传至OSS可减少服务器压力,节省宽带,安全又稳定,阿里云OSS对于做负载均衡非常方便,不用传到各个服务器了 首先引入阿里云OSS类库 < ...
随机推荐
- DVWA之Reflected XSS(反射型XSS)
目录 Low Medium High Impossible Low 源代码: <?php header ("X-XSS-Protection: 0"); // Is ther ...
- DVWA之CSRF(跨站请求伪造攻击)
目录 Low Middle High Impossible Low 源代码: <?php if( isset( $_GET[ 'Change' ] ) ) { // Get input $pas ...
- Windows核心编程 第九章 线程与内核对象的同步(上)
第9章 线程与内核对象的同步 上一章介绍了如何使用允许线程保留在用户方式中的机制来实现线程同步的方法.用户方式同步的优点是它的同步速度非常快.如果强调线程的运行速度,那么首先应该确定用户方式的线程同步 ...
- HTTP自定义Header-(SOCKET-TCP)
HTTP自定义Header-TCP 前几天弄一些东西,需要在发送http请求的时候自定义http头,找了几个库用着很不爽.有的把Cookie直接干掉了,还自己在头里加了版权,最后终于忍不了了.在网 ...
- Day002 Java三大版本
Java三大版本 Write Once .Run Anywhere JavaSE: 标准版(桌面程序,控制台开发......) JavaME:嵌入式开发(手机,小家电.......) JavaEE:E ...
- 利用cm压缩包手动安装cm和cdh
安装准备: 1.操作系统为centos6.9 CentOS-6.9-x86_64-bin-DVD1to2 2.安装Oracle JDK (1.8u121) 下载jdk-8u121-linux-x64. ...
- Windows server 2003域控迁移到2012
1: windows server 2003 额外域控升级为 windows server 2003主域控 (因为原域控制器某些服务损坏,于是采用将备用域控升级为主域控的方法) https://we ...
- 痞子衡嵌入式:恩智浦i.MX RTxxx系列MCU启动那些事(6.B)- FlexSPI NOR连接方式大全(RT500)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RT500的FlexSPI NOR启动的连接方式. 这个i.MXRT FlexSPI NOR启动连接方式系列文章,痞子衡 ...
- Day015 Error和Exception
Error和Exception 什么是异常 实际工作中,遇到的情况不可能是非常完美的.比如:你写的某个模块,用户输入不一定符合你的要求.你的程序要打开某个文件,这个文件可能不存在或者文件的格式不对,你 ...
- Codeforces Round #661 (Div. 3)
A. Remove Smallest 题意:数组是否满足任意i,j保证|ai-aj|<=1,如果都可以满足,输出YES,否则输出NO 思路:直接排序遍历即可 代码: 1 #include< ...