构建新的云原生系统或是将遗留系统云原生化,如何少走弯路?点击查看 了解详情
写点什么

全球首个软硬件推理平台 NVDLA 编译器正式开源,可在云端自主设计推理用 AI 芯片

  • 2019 年 9 月 12 日
  • 本文字数:1272 字

    阅读完需:约 4 分钟

全球首个软硬件推理平台NVDLA编译器正式开源,可在云端自主设计推理用AI芯片

全球首个软硬件推理平台 NVDLA 编译器正式开源,用户可凭借其源代码在云端自主设计推理用 AI 芯片。


为深度学习设计专用硬件加速器愈加受到欢迎,但如果想要使用新的设计方法来实现最先进的性能和效率,这无疑是一个复杂且具有挑战性的问题。


2017 年,为促进推理用深度学习加速器的设计,英伟达开源了NVDLA(全称 NVIDIA DeepLearning Accelerator),其中包括完整的源代码:Verilog 代码、C_Model 代码等。而且在英伟达 Jetson AGX Xavier开发套件中,也可以找到 NVDLA,它为 AI 提供了 7.9 TOPS / W 的最佳峰值效率。


近期,英伟达又在GitHub上开源了 NVDLA 编译器的源代码,这是世界上首个软硬件推理平台的完整开源代码,也是为系统架构师和软件团队提供的一个用于深度学习加速器设计的起点。


本篇文章将主要介绍网络图形编译器在实现专用硬件加速器能效这一关键目标中所扮演的角色,以及展示如何在云端构建和运行自定义 NVDLA 软硬件设计。



NVDLA 架构图



使用 NVDLA 进行物体检测


NVDLA 编译器性能和效率

NVDLA 核心具有六个专用硬件单元,可以同时调度,也可以在流水线配置中调度。它还具有小型和大型硬件配置文件,其中大型配置文件包括部分高级功能,如芯片上的 SRAM 接口、连接微控制器的能力等。


硬件架构采用模块化设计,可以从小型嵌入式物联网设计扩展到使用 NVDLA 阵列的大型数据中心级芯片。编译器可以根据各种选择因素进行调优:NVDLA 硬件配置、系统的 CPU、内存控制器配置、应用程序的自定义神经网络用例等。


更多有关 NVDLA 的详细信息请点击这里



NVDLA 小型配置文件模型


编译器优化(如层融合和流水线调度)适用于较大的 NVDLA 设计,可在各种神经网络架构中提供高达 3 倍的性能优势。这种优化是实现大型网络模型(如 ResNet-50)和小型网络模型(如 MobileNet)能效的关键。



对于较小的 NVDLA 设计,编译器优化(如 Memory tiling )对于提高能效至关重要。Memory tiling 是一种在权重和激活数据之间,平衡芯片内缓冲器使用的设计,能够减少芯片外存储器的流量和功耗。


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


用户还可以根据下面的性能数字,评估 NVDLA 大型模型的预期性能。这里的测试结果是使用 Jetson AGX Xavier 开发工具包上的两个 NVDLA 核心之一捕获的。



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

通过这个编译器版本,NVDLA 用户可以访问、集成、增添和探索 NVDLA 平台所需的软件和硬件源代码。设计深度学习加速器入门的最佳方法之一是:直接使用 NVDLA 上的 YOLOv3 和云端的 RISC-V、 FireSim 进行对象检测。


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


git clone https://github.com/CSL-KU/firesim-nvdlacd firesim-nvdla./build-setup.sh fast
复制代码


使用 NVDLA 运行单节点模拟之后,请按照 NVDLA 上运行 YOLOv3 教程中的步骤操作,YOLOv3 会很快运行。



SiFive 使用 NVDLA 进行深度学习推理


2019 年 9 月 12 日 15:372797
用户头像
张之栋 前InfoQ编辑

发布了 91 篇内容, 共 39.2 次阅读, 收获喜欢 155 次。

关注

评论

发布
暂无评论
发现更多内容

Linux上安装Mycat和配置连接MySQL 8,三年经验月薪50k我是怎么做到的

Java 程序员 后端

Mybatis Generator最完整配置详解,Java面试

Java 程序员 后端

mybatis-plus代码生成器,一键生成代码,springcloud教程百度云

Java 程序员 后端

Linux系统:第十一章:常用命令,华为java面试面经

Java 程序员 后端

Maven相关知识点整理,java基础语法的格式

Java 程序员 后端

mybatis-plus使用教程,java面试题基础篇

Java 程序员 后端

Linux云服务器搭建SFTP服务器图片服务器,java线程原理

Java 程序员 后端

MyBatis(四):参数处理器,linux运维架构师

Java 程序员 后端

MyBatis的jdbcType和javaType详解,spring框架入门教程

Java 程序员 后端

MyBatis详解(一),实战java高并发程序设计

Java 程序员 后端

MyCat教程【分库分表】,java教程pdf百度网盘

Java 程序员 后端

Kubernetes教程之新手安装必看(快速浏览少走弯路),java集合详解和集合面试题目

Java 程序员 后端

KubeVela + KEDA:为应用带来,kafka入门

Java 程序员 后端

linux安装oracle XE,详解Java架构进阶面试题

Java 程序员 后端

Mybatis一二级缓存实现原理与使用指南,java后端技术梳理

Java 程序员 后端

MyBatis详解(二)(1),轻松拿到了阿里Java高级开发工程师的offer

Java 程序员 后端

Linux系统:第十章:服务器环境搭建,附Java面经

Java 程序员 后端

Log4j使用指南,java入门视频教程

Java 程序员 后端

markdown编辑器的使用教程,Java成长路线图

Java 程序员 后端

Maven的核心概念,java面试高频知识点

Java 程序员 后端

Mybatis 传参的各种姿势,看这一篇就足够,java使用教程下载

Java 程序员 后端

Mybatis学习笔记--Mybatis实现CRUD,springboot注解面试题

Java 程序员 后端

Linux内核结构组成之进程调度,java开发直播系统相关教程

Java 程序员 后端

Myabtis源码分析六-代理对象Mapper的创建流程分析,死锁全详解,一文带你搞定

Java 程序员 后端

mybatis常用注解(绝对经典),java程序设计教程张延军课后答案

Java 程序员 后端

Kubernetes官方java客户端之八:fluent style,mysql入门视频教程

Java 程序员 后端

MongoDB :第六章:Java程序操作MongoDB,mysql复合索引面试题

Java 程序员 后端

mybatis开发要点-insert主键ID获取和多参数传递,mybatis原理详解

Java 程序员 后端

MyCat:第四章:Mycat中的概念,linux内核编译教程

Java 程序员 后端

MyBatis详解(二),java开发岗高频面试题全解析祖国的花朵

Java 程序员 后端

MyBatis详解:spring和mybatis整合,linux视频格式转换

Java 程序员 后端

全球首个软硬件推理平台NVDLA编译器正式开源,可在云端自主设计推理用AI芯片_语言 & 开发_Nvidia Developer_InfoQ精选文章