NNVM Compiler,AI框架的开放式编译器
NNVM Compiler,AI框架的开放式编译器
深度学习已变得无处不在且不可或缺。在多种平台(例如手机,GPU,IoT设备和专用加速器)上部署深度学习工作负载的需求不断增长。宣布了TVM堆栈,以弥合深度学习框架与面向性能或效率的硬件后端之间的鸿沟。TVM堆栈使为深度学习框架轻松构建端到端编译变得容易。拥有适用于所有框架的统一解决方案甚至会更好。
威斯康星大学艾伦分校和AWS AI团队以及其他贡献者,宣布NNVM编译器的发布,NNVM编译器是一种开放式深度学习编译器,用于将前端框架工作负载直接编译到硬件后端。使用TVM堆栈中的两级中间表示(IR)来构建它。欢迎读者参考原始的TVM公告,以获取有关TVM堆栈的更多技术细节。借助TVM堆栈,NNVM编译器可以:
- 在高级图IR中表示并优化常见的深度学习工作负载
- 转换计算图以最大程度地减少内存利用率,优化数据布局并融合不同硬件后端的计算模式。
- 提出从前端深度学习框架到裸机硬件的端到端编译管道。

NNVM编译器可以直接从深度学习框架(例如Apache MXNet)中获取模型。支持模型交换格式,例如ONNX和CoreML。ONNX支持使NNVM能够从PyTorch,Caffe2和CNTK编译深度学习模型。CoreML前端支持将CoreML模型部署到非iOS设备。

优化与部署分离

NNVM编译器应用图级和张量级优化,共同优化以获得最佳性能。采用与现有深度学习框架不同的方法,后者将图形优化与部署运行时打包在一起。NNVM编译器采用了编译器的传统知识,将优化与实际部署运行时分开。这种方法提供了实质性的优化,但仍保持运行时的轻量级。编译后的模块仅取决于最小的TVM运行时,部署在Raspberry Pi或移动设备上时仅需300KB左右。
Performance
NNVM编译器仍在积极开发中,可以期待会有更多的改进,已经开始看到可喜的结果。对性能进行了基准测试,在两种典型的硬件配置上,与Apache MXNet进行了比较:Raspberry PI上的ARM CPU和AWS上的Nvidia GPU。尽管这两款芯片在架构上存在根本差异,可以使用相同的基础架构,只需要更改每种硬件的调度即可。
Nvidia GPU
GPU基准和调度,将NNVM编译器与Apache MXNet与CUDA8和cuDNN7作为Nvidia K80的后端进行了比较。这是一个非常强的基准,因为Apache MXNet会打开自动调整功能以从CuDNN中选择最佳内核。还使用了MXNet中优化的深度智能内核来优化MobileNet工作负载。

可以看出,NNVM编译器生成的代码胜过K80上的Apache MXNet。这些改进归因于联合图级别和内核级别的优化。值得注意的是,NNVM编译器无需依赖CuDNN等外部库,即可自行生成所有优化的GPU内核。
Raspberry Pi 3b
Rasberry Pi编译堆栈,将NNVM编译器与带有OpenBLAS和NNPack的Apache MXNet进行了比较。探索了使MXNet发挥最佳性能的设置:为3x3卷积打开了NNPACK中的Winograd卷积,启用了多线程,并禁用了其他调度程序线程(因此,所有线程都被NNPack使用)。

可以看出,在ResNet18上,NNVM编译器生成的代码快两倍。MobileNet上的差距,现有CPU DNN库中缺乏深度卷积。NNVM编译器利用直接生成有效的ARM代码的优势。
NNVM Compiler,AI框架的开放式编译器的更多相关文章
- NNVM AI框架编译器
NNVM AI框架编译器 深度学习已变得无处不在且不可或缺.看到对在多种平台(例如手机,GPU,IoT设备和专用加速器)上部署深度学习工作负载的需求不断增长.TVM堆栈弥合深度学习框架与面向性能或效率 ...
- AI框架中图层IR的分析
摘要:本文重点分析一下AI框架对IR有什么特殊的需求.业界有什么样的方案以及MindSpore的一些思考. 本文分享自华为云社区<MindSpore技术专栏 | AI框架中图层IR的分析> ...
- 昇思MindSpore全场景AI框架 1.6版本,更高的开发效率,更好地服务开发者
摘要:本文带大家快速浏览昇思MindSpore全场景AI框架1.6版本的关键特性. 全新的昇思MindSpore全场景AI框架1.6版本已发布,此版本中昇思MindSpore全场景AI框架易用性不断改 ...
- AI框架精要:设计思想
AI框架精要:设计思想 本文主要介绍飞桨paddle平台的底层设计思想,可以帮助用户理解飞桨paddle框架的运作过程,以便于在实际业务需求中,更好的完成模型代码编写与调试及飞桨paddle框架的二次 ...
- 中国人工智能AI框架自主研发
中国人工智能AI框架自主研发 中国AI界争相构建AI开源框架的背后,技术和业务层面的考量因素当然重要,但也不应忽视国家层面的政策支持.对于AI基础设施的建设,中国政府在<新一代人工智能发展规划& ...
- 针对深度学习(神经网络)的AI框架调研
针对深度学习(神经网络)的AI框架调研 在我们的AI安全引擎中未来会使用深度学习(神经网络),后续将引入AI芯片,因此重点看了下业界AI芯片厂商和对应芯片的AI框架,包括Intel(MKL CPU). ...
- 在windows上极简安装GPU版AI框架(Tensorflow、Pytorch)
在windows上极简安装GPU版AI框架 如果我们想在windows系统上安装GPU版本的AI框架,比如GPU版本的tesnorflow,通常我们会看到类似下面的安装教程 官方版本 安装CUDA 安 ...
- 通过 DLPack 构建跨框架深度学习编译器
通过 DLPack 构建跨框架深度学习编译器 深度学习框架,如Tensorflow, PyTorch, and ApacheMxNet,快速原型化和部署深度学习模型提供了强大的工具箱.不幸的是,易用性 ...
- AI框架类FAQ
AI框架类FAQ 数据处理 问题:如何在训练过程中高效读取数量很大的数据集? 答复:当训练时使用的数据集数据量较大或者预处理逻辑复杂时,如果串行地进行数据读取,数据读取往往会成为训练效率的瓶颈.这种情 ...
随机推荐
- hdu4585 STL水题
题意: 成立少林寺,刚开始有一个大师,id是1,攻击力是10E,现在陆续来人,每个人有自己的id,和自己的攻击力,但是每一个新来的要和之前的和尚pk,他必须选择和他攻击力差值最小的那个,如 ...
- 手动脱ORiEN壳实战
作者:Fly2015 ORiEN这种壳之前没有接触,到底是压缩壳还是加密壳也不知道,只能试一试喽.需要脱壳的程序是吾爱破解脱壳练习第7期的题目. 首先对加壳程序进行查壳,这一步也是程序脱壳的必要的一步 ...
- LA3029最大子矩阵
题意: 给你一个n*m的矩阵<每个格子不是'F'就是'R'>,让你找一个最大的'F'矩阵,输出他的面积*3. 思路: 比较经典的题目了,现在想起来比较好想,以前的话 ...
- hdu3706基础的单调队列
题意: 解释题意不如直接把这个题粘贴过来,因为题目很短题意很容易懂. Give you three integers n, A and B. Then we define Si = Ai mod B ...
- Win64 驱动内核编程-12.回调监控进线程创建和退出
回调监控进线程创建和退出 两个注册回调的函数:PsSetCreateProcessNotifyRoutine 进程回调PsSetCreateThreadNotifyRoutine 线程回调分 ...
- Day003 变量、常量、作用域
变量 变量:就是可以变化的量 Java是一种强类型语言,每个变量都必须声明其类型. Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域 变量的定义 数据类型 变量名 = 值:可以 ...
- Spring的配置文件 (SSM maven项目)
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- 免费JS甘特图组件dhtmlxgantt
安装 参考:https://docs.dhtmlx.com/gantt/desktop__install_with_bower.html 可使用NuGet.Bower.npm包管理器安装(应用在asp ...
- [BUAA2021软工]结对第一阶段博客作业小结
作业链接 结对项目-第一阶段 优秀作业推荐 本次博客作业虽然是简单总结,但是以下作业中都不乏有思考.有亮点的精彩内容,推荐给同学们阅读学习. 山鸣谷应,相得益彰--杰对项目-第一阶段总结 该组对于可能 ...
- 常用加密算法学习总结之数字证书与TLS/SSL
数字证书 对于一个安全的通信,应该有以下特征: 完整性:消息在传输过程中未被篡改 身份验证:确认消息发送者的身份 不可否认:消息的发送者无法否认自己发送了信息 显然,数字签名和消息认证码是不符合要求的 ...