开发工具:
文件大小: 499kb
下载次数: 0
上传时间: 2019-08-31
详细说明:翻译的NVDLA 加速引擎的文档,学习交流,一块进步!PU
cPU
Microcontroller
DRAM
AVULA
NVD_A
DODI
SFAMI
Small NVDLA system
Large"NVDLA system
小NDLA模型
小型 NVDLA模型在以前不可行的领域开辟了深度学习技术。此模型非常适合对成本因素
比较敏感的物联网(IoT)类设备、A丨以及面向自动化的系统领域。这些系统具有明确的应
用方向,其成本、面积和功率是主要注意事项。通过N√DLA可配置实现资源节约(在成本、
面积和功率方面〕,对神经网络模型进行预编译和性能优化,从而可以“减少”大型模型并
降低负载复杂性;反过来,这可以实现按比例缩小的NDLA实施,其中模型消耗更少的存
储并且花费更少的时间来加载和处理系统软件。
这些专用系统通常一次只执行一项任务,因此,在 NVDLA运行时牺牲一定的系统性能通
常不是个主要的问题。与这些系统相关的相对容易的上下文切换(有时,由于处理器架构
的选择,有时,由于使用像 FreeRtos这样的系统进行任务管理),使得主处理器不用负担大
量的 NVDLA中断,消除了对额外徵控制器的需求,并且主处理器执行粗调度和存储器分配,
以及分细 NVDLA管理。
通常,遵循小 NVDLA模型的系统将不包括可选的第二存储器接口。当整体系统性能不是
优先级时,没有高速内存跻径不是关键。在这样的系统中,系统存储器(通常是DRAM)可
能比sRAM消耗更少的功率,利用系统存储作为计算缓存是更高效的。
大型NDLA模型
当系统需要髙性能和多玏能性时,大型NDLA模型是更好的选择。高性能的物联网系统
可以对许多不同的网络拓扑进行推断;囚此,重要的是要保持系统高度的灵活性。另外,
这些系统可能同时执行多个任务,而不是序列化推断操作,因此推断操作不得在主机上消耗
过多的资源。为了满足这些需求, NVDLA使件包含了用于专用高带宽SRAM的第二(可选)
存储器接口,并且能够与专用控制协处理器(微控制器)连接,以减轻主处理器上的中断负
载。
运行时,髙带宽SRAM连接到 NVDLA上的快速存储器总线接口端口,该SRAM用作 NVDLA
的缓存;它还可以与系统上的其他高性能计算机视觉相关组件共享(可选),以进一步分沇
到主系统存储器( Sys DRAM)的流量。
NVDLA协办处理器是一个相当典型的需求;因此,有许多适用的通用处理器(例如,基于
RsSC的 PicONⅣV32处理器, ARM Cortex-M或 Cortex-R处理器,甚至是内核微控制器设计)
使用专用协处理器时,主处理器仍然处理与管理 NVDLA相关的一些任务。例如,玍然协处
理器负责 NVDLA硬件的调度和细粒度编程,但主机仍将负责 NVDLA硬件上的粗粒度调度,
NVDLA内存访问的0MMU映射(必要时),用于内存分配 NVDLA上的输入数据和固定权重
数组,以及在 NVDLA上运行的其他系统组件和任务之间的同步。
硬件架构
NVDLA架构有两个执行模式:独立模式和融合模式
独立:独立操作时,每个功能块都配置为执行的时间和内容,每个块处理其分配的任务
类似于深度学习框架中的独ν层)。将指定块执行存储器到存储器操作和任务的开始和结
束操作独立,例如,进出主系统存储器或专用SRAM存储器。
融合:融合揲作类似于独立操作,但是,一些块可以组装成流水线。这通过绕过存储器
的往返来改善性能,而不是通过小FFO将块连接(即,卷积核心可以将数据传递到单数据
点处理器,其可以将数据传递到平面数据处理器,相反则到 Cross-Channe|数据处理器)
Headless nvda core
Configuration interface block
Convolution bufter
Convolution己re
H Activation engine(SDP)
DEE eTE+E
Pooling engine (PDP)
Memory
interface block
H Local resp. norm(CDP)
3800=8
heroe (op,ionar)
Reshape rubik
Bridge DMA
图2-NDLA核心的内部架构
连接
NVDLA与系统其余部分的三个主要连接
配置空间总线(CSB)接口:该接口是一个同步,低带宽,低功耗,32位控制总线。设
计用于CPU访问 NVDLA的配置寄存器。 NVDLA在CSB接∏上充当从属设各。CSB实现了
个非常简单的接口协议,因此可以通过简单的垫片层( a simple shim layer,这个不知道这么
翻译行不行)轻松转换为AMBA,OCP或任何其他系统总线
中断接口: NVDLA硬件包括1位电平驱动的中断。任务完成或发生错误时,中断线被置
Data backbone(DBB)接口:DBB接口连接 NVDLA和主系统内存子系统。它是一和同
步,高速,高度可配置的数据总线。它可以指定地址大小、数据大小,并且根据系统的要求
确定不同大小。这个接口是一种简单的接口协议,类似于AX1(可以很容易地在符合AX的
系统中使用)。
DBB接口具有可选的第二连接,可在有第二个可用存储器路径时使用。此连接在设计上
与主DBB接口完全相同,旨在与片上SRAM一起使用,有更高的吞吐量和更低的访问延迟
NVDLA无需第二个DBB接口即可运行,不需要此存储器接口的系统可以通过删除它来节省
面积。
组件
NVDLA体系结枃中的每个组件都支持特定的操作,这些操作对于深度神经內络的计算来
说是必须的。下面描述了每个块的简要功能,包括映射到它们的 Tensor flow操作。虽然提
供了 Tensor flow操作作为示例,但 NVDLA也支持其他深度学习的计算棰架。
卷积〔 Convolution)
卷积运算处理两组数据:一组离线训练的“权重( weights)”(在每次推断运行期间保持
不变)和一组输入“特征( feature)”数据(随网络输入而变化)。卷积引擎公开了参数,为
了将很多不同大小的卷积操作高效地映射到硬件上。 NVDLA卷积引擎包括优化,以提高原
始卷积实现的性能。支持稀疏权重压缩可节省内存带宽。内置的 Winograd卷积可提高某些
固定大小滤波器的计算效率。批量卷积,可以在并行运行多个推理时重( chong)用权重
从而节省额外的内存带宽。
为避免重复访问系统内存, NVDLA卷积引擎有一个内部RAM保留用于权重和输入功能
存储,称为“卷积缓冲区”。在每一个权重或侍征运算的独立时间中,该设计大大提高了向
系统存储控制器发送请求的存储效率
卷积单元映射到 Tensor f|ow操作,例如tnn.conv2d。
单数据点处理器( Single Data Point Processor)
单数据点处理器(SDP)允许将线性和非线性函数应用于各个数据点。通常在CNN系统
运算完卷积之后立即使用。SDP的查找表用于实现非线性函数的运算,或者用于线性两数的
简单偏置和缩放。这种组合可以用于大多数常见的激活函数,以及其他元素操作,包括ReLU,
PRe凵U,精确缩放,批量归一化,偏置加法或其他复杂的非线性函数运算,例如S形或双曲
正切
SDP映射到 Tensor flow操作,包括tn. batch normalization,tnn. bias add,tfnn.elu
tfnn, relu, tf sigmoid,t;tanh等等。
平面数据处理器(二维数据处理器) Planer data processor
平面数据处理器(PDP)支持CNN应用中常见的特定空间操作。它在运行时可配置为支
持不同的池组大小( pooling group sizes),并支持三种池功能:最大池,最小池和平均池。
PDP映射到了tnn.avg_pool, tf. nn. max_poo和tnn,pool操作
跨渠道数据处理器( Cross-channel data processor)
跨通道数据处理器(CDP)是个专门用于应用局部响应归化(LRN)功能的单元(
种特殊的归一化功能,它对通道维度进行操作,而不是空间维度)。
各注:LRN是一种应用于防止数据过度拟合的一种方法,就是一种数据处理函数(译者注);
CDP映射在 tf. nn. local response normalization函数上
数据重塑引擎( Data Reshape engine)
数据重塑引擎执行数据格式转换(例如:拆分或分层,合并,收缩,重新转置)。存储器
中的数据通常需要在卷积计算网的执行推断过程中重新配置或重新整形。例如,“分层
sing)”操作可用于分离图像的不同特征或空间区域,并且“重塑-转置
( reshape- - transpose)”操作(在去卷积网络中常见)作用是生成比输入数据集更大尺寸的
输出数据。
数据重塑引擎映射到 Tensor f|ow操作:例如tn,conv2 d transpose,t; concat, tt. slice,
和
tftranspose o
桥( Bridge DMA)
桥DMA(BDMA)模块提倛数据复制引擎,用于在系统DRAM和专用髙性能存储器接口
之间移动数据(如果有的话〕;这是在两个非连接的存储器系统之间移动数据的快速路径。
配置
NVDLA具有多和硬件参数,用来平衡面积,功耗和性能。
以下是参数的简短列表
数据类型: NVDLA本身支持每个功能单元的各种数据类型;可以选择应用的子集来节
省面积。可以选择的数据类型包括 binary;NT4;|NT8;|NT6;NT32;FP16;FP32;和fp64
输入图像存储格式: NVDLA可以支持半面图像,半半面图像或其他打包存储格式。可
以启用或禁用这些不同的模式以节省面积
权重压缩: NVDLA具有通过稀疏存储卷积权重来减少存储器带宽的机制。可以禁用此
功能以节省面积。
Winograd卷积: Winograd算法是对卷积的某些维度的优化。用户可以选择性构建。
批量卷积:批处理是种可以节省内存带宽的功能。用户可以选择性构建。
卷积缓冲区大小:卷积缓冲尜由许多存储体组成。可以调整库的数量(从2到32)和
每个库的大小(从4KiB到8KiB)。(数量乘以大小,可以确定将实例化的卷积缓冲存储器的
总量。)
MAc阵列大小:乘法累加引擎以二维数组形式组成。宽度(“C”维度)可以在8到64
之间调整,深度(“K”维度)可以在4到64之间调整。(创建的乘法累加总数可以山下式确
定:KXC。)
第二个内存接口: NVDLA可以支持两个用于高速访问的存储器接∏,或者它可以仅使用
一个存储器接口构建。
非线性激活功能:为了节省面积,可以删除支持非线性激活函数(如 sigmoid或tanh)
的查找表。
激活引擎大小:每个周期产生输出激活的数量可以从1到16进行调整
桥DMA引擎:可以删除桥DMA引擎以节省面积。
数据重塑引擎:可以删除数据重塑引擎以节省面积
池化引擎:可以栘除池化引擎以节省面积。
池化引擎大小:可以调整池化引擎以在每个周期产生1到4个输出
局部响应归一化引擎:可以删除局部响应归一化引擎以节省面积。
局部响应归一化引擎大小:可以调整局部响应归一化引擎以在每个周期产生1到4个
输出。
内存接口位宽:可以杖据外部存储器接口的宽度调整存储器接口位宽,以适当调整内部
缓冲区的大小。
内存读取延迟容忍度:内存延迟时间定义为从读取请求到读取数据返回的周期数。可以
调整对此的容差,这会影响每个读取DMA引擎的内部延迟缓冲区大小。
软件设计
NVDLA拥有完整的软件生态系统支持。该生态系统的一部分包括设备上的软件堆栈,这
是 NVDLA开源版本旳一部分;此外,NⅥDIA将提供完整的培训基础设施,以构建包含深度
学习的新模型,并将现有模型转换为 NVDLA软件可使用的形式。通常,与 NVDLA关联的软
件分为两组:编译工具(模型转换)和运行环境(在 NVDLA上加载和执行网络的运行时软
件)。一般流程如下图所示
DL li dirtily
ParserCompiler
出
Use -TiU
Ke riel-lrlude
software
driver(U
k0 driver(KM)「两
NVDLA
Optimizer
③-NLA系统软件内部的效据流妥
编译工具:模型创建和编译
编译工具包括编译器和解析器。编译器负责创建系刎针对给定 NVDLA配置进行优化的
哽件层;拥有优化的硬件层网络可以减亼模型大小、负载和运行时间来提高性能。编译可以
分解为两个基本组件:解析和编译。解析器可以相对简单;在最基本的版本中,它可以读
取预先训练的cafe模型并创建网络的“ intermediate representation(中间表示)”以传递到
下一步编译。编译器将解析的中闫表示和 NVDLA实现的硬件配置作为其输入,并生成硬件
层网络。
∫解 NVDLA实现的特定使件配置非常重要,它使编详器能够为可用的功能生成适当的层。
例如,这可能包括在不同的卷积操作模式(例如 Winograd卷积或基本卷积)之间进行选择
或者根据可用的卷积缓冲器大小将卷积操作分戊多个较小的小型操作。此阶段还负责将模型
量化为较低的精度,例如8位或16位整数或16位浮点,以及为权重分配存储区域。可以使
用相同的编译器工具生成多个不同 NVDLA配置的操作列表。
运行时环境:模型推断驱动
运行时环境需要仁兼容的NDLA硬件上运行模型。它实际上分为两层:
●用户模式驱动:用户模式程序的主界面。解析神经网络后,编译器逐层编译网络并
将其转换为名为 NVDLA Loadable的文件格式。用户模式运行时驱动程序加载此可加
载项并将此推断任务提交给内核模式驱动程序
●内核模式驱动:驱动程序和固件组成调度层,来操作 NVDLA寄冇器并配置每个功能
块
运行时,执行以存储的网络( network)表示开始;这种存储的格式称为“ NVDLA可加载
( nVda oadable)”图像。在可加载的视图中, NVDLA实现中的每个功能块,由软件中的
“层”表示;每一层都包含有关其依赖关系的信息以及它在内存中用作输入和输出的
tensors,以及操作的每个块的特定配置。图层通过依赖关系图链接在一起,KMD根据它来
安排每个操作。可加载 NVDLA的格式在编译器实现和UMD实现之间是标准化的。所有符合
NVDLA标准的所有应用,应该至少能够解析任何 NVDLA可加载图像。
υMD具有标准应用程序编程接凵(AP),用于处坦可加载图像,将输入和输出 tensors
绑定到存储器位置运行摧断。该层将网络加载到一组定义的数据结构的内存中,并以合适的
格式传递给KMD。例如,在 Linux上,这可能是一个ioct(),将数据从用户模式驱动程序传
递到內核模式驱动程序;在相同的运行环境中,KMD在与UMD运行的单进程系统上,这是
个简单的函数调用。
KMD的主要入口点是在内存中接收推断任务,从多个可用任务中进行选择,以进行调度
如果在多进程系统上),并将其提交给核心引擎调度程序。核心引擎调度程序负责处理来
白 NVDLA的中断,在每个单独功能块的调度层上,基于来白前一层的任务的完成来更新该
层的任何依赖度。调度程序使用来自依赖关系图的信息来确定后续层何时准备好进行调度
编译器以优化的方式决定层的周度,并消除与KMD的性能差异。
User application software
Porta blit layer
written by integrator〕
DLA core
〔 rom NVdA github
regularly update d)
Porta bility layer
(written by integrator
DLA
LA
core
hardware
〔 rom NVDA Github;
reqularly update d
Operating system kernel
4- NVDLA系统中的可移植层
UMD堆栈和KMD堆栈都是定乂的AP,并且包含在系统可移植层中。在可移植性层中维
护核心应用,预计需要相对较少的更改,并加快需要在多个平台上运行 NVDLA软件堆栈的
饪务处理;在可移植性层确定的情况下,相应得核心操作能在Linμκ和 FreeRτoS上轻松编译
实现。类似地,在具有与 NVDLA紧密耦合的微控制器的“ headed"实现中,可移植层的存在
使得可以在微控制器上运行,在主CPU上运行的“ headless"应用中没有这样的协处理器。
NVDLA系统集成
NVDLA可配置的范围很广;选择这些参数取决于将要执行的卷积神经网络(CNN)的要
求。本节介绍了影响这些参数选择的一些因素,以及它们对系统区域和性能影响的一些考虑
因素。运行每一层所需的时间是数据输入、输出和执行乘法累加(MAC)操作所需时间所需
的最长时间。运行整个网络所需的吋间等于所有层的总和。选择正确数量的MAC单元,卷
积缓冲区大小和片上SRAM大小以获得所需性能是调整大小的最关键步骤。 NVDLA有更多配
置参数用于额外的性能调整,需要仔细考虑,这些参数对总面积的影响较小;它们的配置不
会成为影响性能的因素。
调整问题
对于任何给定的实例化,预期的工作负载需要什么样的数学精度?
较大配置的大部分 NVDLA区域由卷积缓冲器和MAC单元组成,因此在初始性能/面积权
衡分析中这些参数是最重要的。深度学习训练通常以32位浮点精度完成,但生成的络通
常可以减少到8位整数,而不会显着降低推断质量;但是,在某些情况下,仍然需要使用
16位整数或浮点数。
MAC单元的数量和所需的内存带宽是多少?
精确度、性能和面积的下两个关键参数是MAC单元的数量和所需的内存带宽。配置
NVDLA时,应仔细考虑这些。处理是逐层进行的,因此性能估计最好逐层进行。对于任何
给定的层,通常情况是MAC吞吐量或内存带宽将成为制约因素
所需的MAC单元数量相对容易确定。例如,卷积层只有已知的输入和输出分辦率,以及
已知数量的输入和输出特征;卷积核大小也是已知的。将这些相乘得出处理该层的MAC操
作总数。可以将硬件定义为具有一·定数量的MAC单元,除以MAC单元数所需的操作数给
出了可以处理层的时钟周期数的下限
计算所需的内存带宽不是那么简单。在理想情况下,只需要读取输入图像一次,输出图
像一次,权重一次,最小周期数除以可读取的样本数。但是,如果卷积缓冲区太小而不能保
持输入和权重集的支持区域,则需要多次通过。例如,如果卷积缓冲区只能容纳四分之一的
权重数据,则必须将计算分成四个步骤,将输入带宽相乘(即,10MB的输入内存流量将乘
以40MB)。类似地,如果缓冲器不能为卷积的支撑区域保持足够的线程,则卷积也必须分
解为 horizontal strips(线程)。
是否需要片上SRAM?
如果外部存储器带宽因功耗或性能原因而非常重要,那么添加片上SRAM可能会有所帮
(系统自动生成,下载前可以参看下载内容)
下载文件列表
相关说明
- 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
- 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度。
- 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
- 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
- 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
- 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.