专栏首页吉浦迅科技NVDLA 深度学习推理编译器正式开源

NVDLA 深度学习推理编译器正式开源

为深度学习设计新的定制硬件加速器显然很受欢迎,但是用一种新的设计实现最先进的性能和效率是一个复杂和具有挑战性的问题。

两年前,英伟达公司为英伟达深度学习加速器(NVDLA)的硬件设计开源代码,以帮助推动在定制硬件设计中采用高效的人工智能推理。同样的NVDLA也发布在NVIDIA Jetson AGX Xavier开发工具包中,它为AI提供了7.9 TOPS/W的最佳峰值效率。随着NVDLA在GitHub上的优化编译器的开源发布,系统架构师和软件团队现在已经拥有了世界上第一个完全开放的软硬件推理平台的完整源代码。

在本文中,我们将解释网络图形编译器在实现专用硬件加速器的电源效率这一关键目标中所扮演的角色,并向您展示如何通过在云中构建和运行您自己的自定义NVDLA软件和硬件设计开始。

编译器是NVDLA软件栈的关键组件。它生成优化的执行图,将预先训练的神经网络模型层中定义的任务映射到NVDLA中的各个执行单元。它在最大限度地利用计算硬件的同时,尽可能地减少数据移动。

NVDLA核心硬件有六个专门的硬件单元,它们可以同时调度,也可以在流水线配置中调度。它还具有小型和大型硬件配置文件。大的配置文件包括先进的功能,如芯片上的SRAM接口和附加一个微控制器的能力。你可以在这里找到更多关于NVDLA的资料。硬件架构是模块化的,它的设计是可伸缩的,从小型嵌入式物联网设计到使用NVDLA单元阵列的大型数据中心类芯片。编译器可以根据各种选择的因素进行调优:NVDLA硬件配置、系统的CPU和内存控制器配置,以及应用程序的自定义神经网络用例(如果需要的话)。

编译器优化,如层融合和管道调度工作良好的大型NVDLA设计,提供了高达3倍的性能效益,跨广泛的神经网络架构。这种优化灵活性是实现跨大型网络模型(如ResNet-50)和小型网络模型(如MobileNet)的电力效率的关键。

对于较小的NVDLA设计,编译器优化(如内存平铺)对于提高电源效率至关重要。内存平铺使设计能够在重量和激活数据之间平衡片上缓冲区的使用,从而最小化片外内存流量和功耗。

此外,用户可以自由地创建完全定制的层,根据他们自己的特殊用例进行调优,或者使用研究中发表的最新前沿算法进行实验。

用户可以根据下面的性能数字来评估默认NVDLA大概要模型的预期性能。测量是使用Jetson AGX Xavier开发工具包上的两个NVDLA核心之一捕获的。

在AWS上使用RISC-V和FireSim在云中进行设计

通过这个编译器版本,NVDLA用户可以完全访问集成、增长和探索NVDLA平台所需的软件和硬件源代码。开始的最佳方法之一是直接使用NVDLA上的YOLOv3和云中的RISC-V和FireSim进行对象检测。(也就是说有了DLA的编译器, 这样就可以在没有买Xavier的情况下,先体验DLA了。AWS EC2 F1实例模拟这货集成的DLA)

要使用FireSim- nvdla,请按照FireSim的说明操作,直到能够运行单节点模拟为止。按照步骤操作,在“设置FireSim Repo”一节中,验证您正在使用FireSim -nvdla存储库,如下所示:

git clone https://github.com/CSL-KU/firesim-nvdla

cd firesim-nvdla

./build-setup.sh fast

使用NVDLA运行单节点模拟之后,按照NVDLA教程中的步骤运行YOLOv3,您应该很快就可以运行YOLOv3了。

英伟达很高兴能与SiFive这样的创新公司合作,提供开源的深度学习解决方案。

本文分享自微信公众号 - 吉浦迅科技(gpusolution)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-09-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • C++之旅-vector

    标准库类型vector表示对象集合,并且所有的对象类型相同。由于它常常“容纳”其他对象,因此常称作容器。vector也是一个类模板。编译器根据模板创建类型或函数...

    编程珠玑
  • Rust学习:如何解读函数签名?

    在Rust中,函数签名类似“讲故事”。经验丰富的Rust程序员,只需浏览一个函数的签名,就可以知道该函数大部分的行为。

    MikeLoveRust
  • vscode之Emmet语法

    Emmet (前身为 Zen Coding) 是一个能大幅度提高前端开发效率的一个工具. 在前端开发的过程中,一大部分的工作是写 HTML、CSS 代码。特别是...

    botkenni
  • vim开发环境配置

    作为编辑器之神的vim,初安装时,就像十几岁的孩子,潜力无限但能力有限。所以当我们要充分开发它的潜能时,那么就不得不对vim进行扩展,也就是安装插件。(当然了,...

    编程珠玑
  • APT对抗(二) 红蓝对抗关于后门对抗

    《APT对抗(一) 红蓝对抗关于后门对抗》做整理与补充。再深入一步细化demo notepad++。

    安恒网络空间安全讲武堂
  • 如何下载和安装Selenium WebDriver

    https://www.oracle.com/technetwork/java/javase/downloads/index.html

    软测小生
  • C语言的main函数到底该怎么写

    main函数是程序执行自定义的第一个函数。从开始学习C语言到现在,我们似乎看到了很多个版本的main函数,那么哪一种才是正确的呢?我们先来看看目前有哪些版本。

    编程珠玑
  • 使用devtools导致的类型转换异常及Spring Devtools 源码初步解析

    SpringBoot项目中的热部署引发的血的教训,报错代码如下(第6行强制转换,明确可以肯定此处Object肯定是 UserInfoDTO):

    周三不加班
  • 【vscode插件】获取当前激活的编辑器及其信息详解

    selection.active 当前光标位置 Position 类型 如果有选中的文本,这里是被选择文本的最后,细心的你会发现,选择了文本后,光标也是会存在的...

    黒之染
  • IntelliJ idea在Spring配置无错误时,装配对象出现 Could not autowire. no beans of "XXX" type found

    案例:本人在使用IntelliJ idea 2017.2 开发SSM应用,做Junit Test测试时,通过Resource注解装配DAO时出现了ERROR的错...

    chenchenchen

扫码关注云+社区

领取腾讯云代金券