当前位置: 首页 > news >正文

网站建设公司广告词wordpress 卸载插件

网站建设公司广告词,wordpress 卸载插件,广州住房和城乡建设部网站首页,wordpress爬行记录随着深度学习的飞速发展#xff0c;对处理器的性能要求也变得越来越高#xff0c;随之涌现出了很多针对神经网络加速设计的AI芯片。卷积计算是神经网络中最重要的一类计算#xff0c;本文分析了高性能卷积计算中的数据复用#xff0c;这是AI芯片设计中需要优化的重点之一对处理器的性能要求也变得越来越高随之涌现出了很多针对神经网络加速设计的AI芯片。卷积计算是神经网络中最重要的一类计算本文分析了高性能卷积计算中的数据复用这是AI芯片设计中需要优化的重点之一具体思路如下 1.数据复用的动机 2.存储-计算分离框架下针对卷积计算的优化思路 3.针对卷积计算的硬件架构设计分析 4.已经面临的挑战和解决方向 5.神经网络中数据复用的未来 1. 高性能卷积计算中数据复用的动机 深度学习的发展过程中较高的计算量是制约其应用的因素之一。卷积神经网络中主要计算为三维的卷积计算后简称为卷积现有的主流处理器难以高性能高效能的完成卷积计算。相比一般的通用计算卷积计算中存在的大量数据复用以及计算的规则性在硬件的微架构后简称为架构设计和计算优化上有很大的优化空间由此诞生了众多针对深度学习加速的AI芯片。卷积计算过程可以表示如下 for i 1 : Hofor j 1 : Wofor k 1 : Cofor l 1 : Hffor m 1 : Wffor n 1 : Ciout[i,j,k] In[i*sl.j*sm,n]*F[l,m,n];其中各参数的含义如下表 据此可推算出输入输出数据的数据复用关系如下表   可以看出卷积计算过程中对FilterInput和Output的数据均有很高的数据复用充分利用计算过程中的数据复用是达到高性能和高效能的关键这主要有以下几个方面原因 1.利用数据复用更容易达到设计的峰值性能 2.利用数据复用可以降低内存访问降低功耗 3.广义来看卷积中规则的数据复用可以降低处理器设计中缓存/控制逻辑的设计复杂度提高总体的性能   根据Roofline模型很容易解释第一点原因。Roofline模型是一种面向吞吐量的性能评价模型它指出在理想情况下处理器性能的理论上界。如下图所示在数据复用不高的情况下峰值性能受限于内存Memory-bound。   访问不同存储的归一化能耗比Ref. 6可以解释第二点原因。充分利用数据复用使得访存多发生在RF等靠近ALU的存储上可以极大降低功耗。   针对第三点以AMD ZEN系列CPU为例Die的结构如下图所示。可以看出FPU和ALU只占CPU面积的很小一部分。大部分面积是控制逻辑的缓存。这意味着如果针对卷积计算这种规则的具有时间和空间强相关性的且没有分支跳转的计算设计专门的硬件可以抛开专用处理器中复杂的控制和缓存设计减小芯片面积提升性能降低功耗。   这些特性表明卷积计算有很大的优化空间专门针对卷积计算设计的芯片能极大的提高性能和效能 。 2. 高性能卷积的计算方法 2.1 卷积即矩阵乘法 矩阵-矩阵乘法的应用已经非常广泛很多线性代数库充分结合了矩阵计算中的数据复用关系和处理器缓存的层次设计结构对矩阵-矩阵乘法进行了充分的优化GEMM通用矩阵乘法。(C AB C)的矩阵乘法可以表示为 for i 1 : mfor j 1 : nfor k 1 : tC(i,j) A(i,k)*B(k,j) C(i,j)这一形式和第1节中卷积的计算方式极其类似。实际上针对三维的Tensor进行展开即将卷积计算中的六层循环的内三层进行合并很容易将卷积计算转化为矩阵乘法计算(im2col)。 其中一种展开方式如下图   下图也给出了一个具体的例子   此时卷积计算等价为矩阵乘法计算而卷积计算中的数据复用关系等价为了矩阵计算中的数据复用关系。矩阵-矩阵乘的复杂度如下所示   现有的处理器架构从存储和计算之间的关系上来看都是类似的处理器计算性能的上限可以通过计算单元及其运行频率确定。为了高性能的完成矩阵计算即使得性能达到Roofline模型中峰值需要对矩阵计算的三层循环进行优化。在进行分析之前需要明确两点固有的特性 ·处理器的存储是分层设计的越靠近计算的单元带宽越大容量越小 ·Roofline模型和访存的带宽有关如下图所示   如果矩阵存储在内存中DDR,直接按三层循环进行矩阵计算那么每个周期需要访问(a,b,c)三个数此时性能会受限于DDR带宽。将矩阵放在片上的Cache中是一个好的选择但是片上Cache的容量往往较小。解决这一个矛盾的方法是对大的矩阵进行分块此时矩阵计算可以表示为 for i 1 : MR : m // step MRfor j 1 : NR : n // step NRfor k 1 : KC : c // step KC// block-dot product in cache// Csub_{NR*MR} Asub_{MR*KC}*B_sub(KC*NR)// opt. mirco kernelfor ir 1:MRfor jr 1:NRfor kr 1: KCCsub(ir,jr) Asub(ir,kr)*Bsub(kr,jr);采用这一分块方式假设矩阵存储在DDR分块后的矩阵存储在片上Cache完成(MR\times NR\times NC)次乘法计算只需要从DDR获取(MR\times NR NR \times NC MR\times NC) 个数据合理的分块能降低对DDR的访问。    针对具有不同存储层次的处理器以及不同大小的矩阵计算而言有不同的分块方式以达到峰值性能。虽然这一方法针对矩阵计算进行了很好的优化但对于卷积计算而言依旧存在缺陷   im2col计算过程中针对Tensor进行了Reshape和Duplicate这会增加带宽的消耗   转化得到的矩阵乘法和传统的矩阵计算维度相差较大可能无法获得好的性能   由于这些缺陷存在如果没有针对硬件架构进行特殊的设计卷积即矩阵乘法的设计思路往往无法达到峰值性能。 2.2 卷积即卷积 一维的脉动阵列FIR滤波器的一种实现方式其实现结构如下图采用这种结构每输入一个(x[n])就能计算得到一个(y[n])。这种特殊的数据复用是根据卷积计算的特殊性质得到的。   在卷积神经网络中卷积层的计算一般也存在这种数据复用关系除kernelsize stide情况外。如果能用好这一特性不再将卷积转化为矩阵乘法直接计算卷积能获得更高的性能。为了达到这一目标和分析矩阵乘法类似对卷积的六层循环进行分析。 for i 1 : Hofor j 1 : Wofor k 1 : Cofor l 1 : Hffor m 1 : Wffor n 1 : Ciout[i,j,k] In[i*sl.j*sm,n]*F[l,m,n];类似GEMM最内层循环会被并行化为了达到更好的性能可以对循环顺序进行调整。   为了提高并行性由于Co循环的各个计算之间相互独立将其放置到最内层循环   由于Wf,Hf可能会很小为了保证并行性将Wo放到Co循环外   完成调整之后对卷积计算进行分块   为了进一步提高访存的效率Input/Ouput/Filter在内存中的排布方式也需要进行相应的调整。   无论是将卷积转化为矩阵计算或者直接计算卷积都能够通过分块的方式相对高效的完成卷积计算由于将卷积转化为矩阵计算有一定开销其性能可能会受到一定影响但矩阵计算具有更高的灵活性。 3. 高性能卷积的架构设计 3.1 GEMM加速器 显然实现一个硬的GEMM加速器可以加速矩阵计算进而加速卷积计算。针对GEMM的分块矩阵即内层循环进行硬件加速是一种简单高效且相对灵活的选择其优势包括   简单计算单元实现GEMM的mirco kernel即可易于集成   灵活支持所有可用GEMM加速的算法理论上   编译器设计和调度有很多参考实现   类似设计包括Nvidia的Volta架构其加速核心被称为Tensor Core以及华为的达芬奇架构Davinci Core其卷积的计算核心被称为CUBE Core。   其中Nvidia的每个Tensor Core是一个(4\times4\times4) 的MAC阵列。计算(C AB C) 时矩阵(A,B) 中的元素广播到4个不同的MAC上同时每个四个乘法的结构累加到一起如下图所示 达芬奇中的CUBE Core是一个(16\times16\times16)的MAC阵列以Davinci Max为例如下图所示具有更高的数据复用关系。 Nvidia Volta架构中Tensor Core仅仅只是一个特殊的计算单元其地位和FP计算单元一致。   为了保证计算单元之外设计的统一性送入计算单元的数据位宽完全一致和普通的FP32计算单元比Tensor Core在算力上有很大的优势。由下表可以看出由于数据复用和精度的降低Tesnor Core的理论性能是FP32的8倍同频其中两倍受益于精度的降低。   前文提到“卷积即矩阵乘法的设计思路无法达到峰值性能”但有了硬件架构的联合设计这一结论不再成立。譬如在Davinci Core中在L0 Buffer进行Img2col可以降低由于im2col增加的访存带宽合理设计的L0 BufferA/B/C也能应对卷积操作中大量的中间结果。 3.2 脉动阵列 脉动阵列的典型代表是Google TPUGoogle TPU中设计的脉动阵列也是针对矩阵乘法设计虽然有的脉动阵列也可直接计算卷积但TPU并没有采用这一类设计。之前的文章有对Google TPU进行细致的分析动手写一个简单版的谷歌TPU并实现了一个小规模的基于VLIWVector Architecture的TPUSimpleTPUVLIW向量体系结构可以作为进一步参考。Google TPU的其计算核心为一个(256\times 256)的二维脉动阵列如下图所示   另一个类似的设计时Telsa特斯拉的Full self-driving(FSD) computer其内部的Nerual Network Accelerator(NNA)也实现了一个大规模的矩阵乘法器NNA也可能时直接采用广播的形式而非脉动形式进行输入。参考其专利中的说明其具体实现和Google TPU略有差异。   根据描述FSD NNA中的Wieght和Activation均通过DATA FORMATTER后送入到MATRIX PROCESSOR中。乘法的结果在MATRIX PROCESSOR中进行累加计算出最终结果后依次向下移位输出。FSD中有两个NNA其中MATRIX PROCESSOR的大小均为(96\times 96)和TPU1相比FSD的主要差异表现在   计算过程中TPU的weight保持不变而FSD的partial sum保持不变   TPU中的weight保持在DRAM中片外FSD保留在SRAM中   由于FSD的weight存储在片上为了满足输入的数据排布要求增加了在线的Weight Formatter模块   FSD的输入宽度为96是3的倍数这是应为在Data Formatter时对kernel进行了展开(3\times 3)的kernel中有因子3而TPU1的宽度为256是2的幂次kernel的展开很有可能是时间上隐式进行的。   针对TPU和FSD这种在数据流中的差异可以分为Weight StationaryOutput Stationary和No Local Reuse等(Ref. 6)。这种针对Dataflow的分类方法也涉及到数据复用但主要针对Register File上的复用进行分析和本文针对计算中存在的数据复用关系进行分析有所不同一个典型的差别是Ref.6中归类为no local reuse的情况在本文认为是有数据复用的。 3.3 直接卷积加速器 Eyeriss是一种直接针对卷积计算优化的加速器和其他加速器不同Eyeriss针对Convolution Reuse进行了优化。按Ref.6的分类标准是一种Row Stationary。(Ref. 7)   由于卷积神经网络计算卷积时C方向的特殊性Convolution Reuse仅在H和W方向存在。以kernelsiz3stride1为例卷积计算中row方向的数据复用如下图(Ref. 7)   此时ifmap中的元素3被利用了三次只需要从存储中访问一次元素3就能完成3次计算。当扩展为二维时有(Ref. 7)   即ifmap的row方向在不同PE之间进行复用而实际上ifmap的col方向的数据会暂存在PE内的RF上col方向的数据也在RF上进行复用。   Eyeriss利用了convolution resue同时也可以利用其他resue的手段。譬如上图中的filter在水平PE之间复用psum在垂直的若干个PE之间复用。这意味这Eyeriss相比其他结构做到了更多的数据复用可以进一步降低功耗。 3.4 基于变化域的卷积计算 一维卷积的计算复杂度为(O(n^2))由于时域卷积等于频域相乘对于离散信号而言可以通过快速傅里叶变换Fast Fourier TransformFFT及其逆变换将信号在时域和频域之间变换。而FFT的计算复杂度为(O(nlogn))当(n)取值较大时其计算复杂度会远低于直接计算一维卷积。   类似的可以考虑在其他域进行二维/三维卷积的计算针对卷积神经网络中的加速有FFT based Method (Fast training of convolutional networks through FFTs)、Winograd Method (Fast Algorithms for Convolutional Neural Networks)。但若想取得一定的加速比这些方法对卷积核的大小和步长均有要求这一类方法均难以适应卷积核日益小型化的发展趋势。 4. 轻量化网络带来的新的设计挑战 当大多数AI芯片中的神经网络加速器还在使用AlexNet/VGG/ResNet跑benchmark时新的网络层出不穷。一些为了运行在嵌入式设备上而设计的轻量化网络通过压缩卷积中各个维度的计算来降低计算量这很大程度影响了卷积计算中的数据复用关系。考虑在轻量化网络中使用的Point Wise Conv和Depth Wise Conv以及延时受限系统中Batch1的全连接层有下表 而第三节中一些典型的基于数据复用的加速其设计中若想达到最优性能对数据复用的要求是   数据复用关系的失配会让这些加速器在运行这些特定的Layer时出现严重的效率问题。譬如TPU V1在计算(3\times3) Depthwise Conv时效率不可能超过(9/2563.5%)。这样低的效率使得这些设计良好的网络带来的数量级的计算量下降变得毫无意义。   从根源上看Cube Core或者Systolic Array的优化目标都是Matrix-Matrix乘法而Batch1得FC和Depthwise Conv更贴近于Matrix-Vector乘法这在本质上就是不同的。即使在软件层面的优化上这两个运算也是分别进行优化的GEMM和GEMV。   而对于芯片设计而言已经面临的挑战是如何设计一个在多变的复用关系下均能保证较高效率的神经网络加速器。完成这一目标至少有两种不同的设计方向   具有灵活互联结构的可重构加速器   标量矢量向量的异构加速器 4.1 具有灵活互联结构的可重构加速器 上述的几乎所有的讨论和设计都能归结到降低数据带宽上。一旦数据带宽降低后其灵活性就受到了很大的限制这是无法计算GEMV的原因之一。如果需要加速器能够在各种情况下有良好的表现最直接的解决方案就是在设计上提供高的带宽和灵活性。    Eyeriss V2就采用这种思路对Eyeriss V1进行改进以高效支持MobileNet。为了提供高带宽Eyeriss设计了层次化2D Mesh的Noc。   设计中一个PE Cluster具有12个PE12个PE之间互相连接PE Cluster通过一个2D Mesh进行互联。Global Buffer到PE之间具有丰富的连线在不同计算模式下可以以Multicastbroadcast和unicast进行数据传输充分满足不同计算下的数据需求。   尽管Eyeriss V2中并没有提到可重构但其Noc在计算不同网络时有不同的选通路径和可重构的思想一致。一般谈到硬件可重构一般会想到FPGAFieldProgrammable Gate Array现场可编程大规模逻辑门阵列。通过FPGA片上丰富的的互联结构和查找表FPGA理论上可以用于实现各种形式的电路。   FPGA可以创造出各种可能但FPGA设计上有很多冗余在布局布线和加载上也会花费较多时间。究其本因是因为FPGA采用了很底层的基本单元来构建整个电路。与FPGA这种细粒度可重构相对应的是粗粒度可重构网络粗细度可重构不像FPGA一样可以控制每一个bit的选通而是提供了一系列基本的计算单元和互联结构。根据算法的需求可以采用不同的方式构建这些计算单元。譬如Plasticine中的PCU中每个FU由前向反馈等多种路径可以构建不同的计算单元。   多个PCU之间通过交换网络和其他PCU及PMUMemory相连可以配合完成不同的操作。这些都以增加片上各个单元之间的互联性为基础。 采用可重构设计的还有清华大学微电子系设计的Thinker芯片具体可参考A High Energy Efficient Reconfigurable Hybrid Neural Network Processor for Deep Learning ApplicationsRef11。这样的具有灵活互联结构的可重构加速器可以支持矩阵-矩阵乘法矩阵-向量乘法以及更多的其他计算具有较强的灵活性。 4.2 标量矢量向量的异构加速器 另一种思路是对某些运算做到极致的支持其他的运算通过CPU或者其他的Core来计算从华为达芬奇架构到Google TPU2/3的设计上都有的体现华为的达芬奇架构可参见3.1节Google V2/3的框图如下   Google的框图并没有透露太多的细节仅仅表面TPU中由于MXU和scalar/vector units华为的达芬奇架构则指出了 Vector2048bit vector with special functionsactivation functionsNMSROISORT Cube4096 FP16 MACs   虽然Vector Unit似乎并不能计算FC Layer或者Depthwise Conv Layer但这也代表了一种设计方向。当采用3D Matrix Unit进行矩阵计算时随着(N)取值的增加数据输入带宽随增长而MACs的数量随增长这表面针对特定的计算进行优化结果可能会更优。当然这样的设计也有一些缺陷。   不同计算单元之间负载可能不均衡导致计算出现瓶颈不同计算单元之间的数据传输调度会变得复杂当然这种设计思想并不意味一个加速Core只能加速很受限的计算类型依旧可以对单个的加速Core进行兼容设计本节的讨论和4.1并不完全冲突。譬如依旧有一些简单方法可以让一个三维的MAC阵列类似Cube Core同时支持GEMM和GEMV操作但依旧会有一些限制由于数据复用的不同这两类运算始终落在Roofline模型的不同位置。   但不管从哪个角度去解决面临的新的挑战暂时都没有看到一个完美的解决方案。或许我们并不需要一个真正完美的解决方案能解决一部分问题创造价值就已经足够了。这里引用Cloud TPUTPU V2/3的一些说明。 5. 神经网络中数据复用的展望 虽然在AI芯片设计过程中都针对算法进行了深度的优化同时算法也针对芯片实现进行了定点化和低比特量化等工作这些看似是一个联合优化的过程。但是归根到底既然是选择为AI应用设计芯片在设计过程中算法永远占主导地位。从长远来看还需要把握算法的发展趋势。   站在硬件设计的角度来看由于在计算机诞生之初就有了高性能并行计算的需求很多设计实际上以及出现了很长时间譬如数据并行的向量体系结构VLIW脉动阵列稀疏计算都有40年以上的历史2D Mesh互联也至少有30年。从设计上看新的东西并不是很多架构成功的关键在于是否顺应了时代的潮流包括算法/需求的发展和底层硬件技术的发展。   在发展过程中算法和现有的硬件上的分歧往往是存在的以本文讨论的卷积计算的数据复用为例这和网络稀疏化的发展方向相悖。如果以极度稀疏化为目标那么网络计算过程中的数据复用会越来越低。   神经网络中数据复用的未来如何完全取决于算法的发展。 参考 1.Hardware Accelerators for Machine Learning (CS 217) 2.volta-architecture-whitepaper.pdf 3.Scalable unified architecture for Neural Network computing (Hotchips 31) 4.In-Datacenter Performance Analysis of a Tensor Processing Unit 5.ACCELERATED MATHEMATICAL ENGINETelsaUS20190026078 6.V Sze, T.-J. Yang, Y.-H. Chen, J. Emer, “Efficient Processing of Deep Neural Networks: A Tutorial and Survey,” Proceedings of the IEEE, vol. 105, no. 12, pp. 2295-2329, December 2017 7.Y-H. Chen, T. Krishna, J. Emer, V. Sze, “Eyeriss: An Energy-Efficient Reconfigurable Accelerator for Deep Convolutional Neural Networks,” IEEE Journal of Solid State Circuits (JSSC), ISSCC Special Issue, Vol. 52, No. 1, pp. 127-138, January 2017. 8.Y.-H. Chen, T.-J Yang, J. Emer, V. Sze, “Eyeriss v2: A Flexible Accelerator for Emerging Deep Neural Networks on Mobile Devices,” to appear in IEEE Journal on Emerging and Selected Topics in Circuits and Systems (JETCAS), June 2019. 9、Zhang J , Franchetti F , Low T M . High Performance Zero-Memory Overhead Direct Convolutions[J]. 2018. 10.hotchips详细介绍了达芬奇架构 11.Prabhakar R, Zhang Y, Koeplinger D, et al. Plasticine: A Reconfigurable Architecture For Parallel Paterns[C]// Acm/ieee International Symposium on Computer Architecture. 2017. 12.A High Energy Efficient Reconfigurable Hybrid Neural Network Processor for Deep Learning Applications[J]. IEEE Journal of Solid-State Circuits, 2018, 53(4):968-982.
http://www.dnsts.com.cn/news/250163.html

相关文章:

  • 北京旗网站制作商品标题关键词优化
  • 查询网站备案进度唯品会购物商城
  • 邯郸开发网站有哪些沈阳祥云医院男科怎么样
  • 网站ui设计报价单企业网站建设的研究开发方法及技术路线
  • 网站数据分析自己写的网页怎么发布
  • 凯里哪里有做网站的修改WordPress的权限
  • 厦门网站建站公司wordpress自助广告
  • 自建网站需要什么手续市场采购贸易平台
  • 杭州网站制作公司局域网如何做视频网站
  • 安徽省建设干部学校网站首页杭州排名推广
  • 媒体门户网站建设方案有没有专门帮人推广的公司
  • 常州做网站的长沙官网优化推广
  • 哈尔滨网站建设市场分析泰州市建设局网站
  • 网站不换域名换空间免费稳定网站空间
  • 推广优化公司网站wordpress models
  • 网站在线建设方案北海做网站
  • 房屋中介网站建设方案国内html5网站
  • 网站建设观点oppo手机应用商店
  • 网站建设投资大概每年需要多少钱什么都能搜到的浏览器
  • 制作网页一般需要兼容哪些网站济南网站建设推广
  • flash网站建设dw怎么导入网站模板
  • 上海 企业网站建设网站建设的技术有哪些
  • 自已能做网站建设吗东莞网站建设优化推广
  • 哈尔滨网站设计公司最新营销模式有哪些
  • 用python做网站的多吗客户管理系统服务
  • 做的网站怎么上传到网上运行沈阳做网站公司有哪些
  • 郑州网站制作郑州网站制作站长工具国产2022
  • 泰州高端网站建设如何收费软件公司简介模板100字
  • 新闻聚合网站怎么做太平洋建设集团有限公司网站
  • 诚讯通网站兼职小时工