96SEO 2026-02-20 04:49 0
。

卷积计算是神经网络中最重要的一类计算#xff0c;本文分析了高性能卷积计算中的数据复用#xff0c;这是AI芯片设计中需要优化的重点之一对处理器的性能要求也变得越来越高随之涌现出了很多针对神经网络加速设计的AI芯片。
卷积计算是神经网络中最重要的一类计算本文分析了高性能卷积计算中的数据复用这是AI芯片设计中需要优化的重点之一具体思路如下
深度学习的发展过程中较高的计算量是制约其应用的因素之一。
卷积神经网络中主要计算为三维的卷积计算后简称为卷积现有的主流处理器难以高性能高效能的完成卷积计算。
相比一般的通用计算卷积计算中存在的大量数据复用以及计算的规则性在硬件的微架构后简称为架构设计和计算优化上有很大的优化空间由此诞生了众多针对深度学习加速的AI芯片。
卷积计算过程可以表示如下
In[i*sl.j*sm,n]*F[l,m,n];其中各参数的含义如下表
可以看出卷积计算过程中对FilterInput和Output的数据均有很高的数据复用充分利用计算过程中的数据复用是达到高性能和高效能的关键这主要有以下几个方面原因
3.广义来看卷积中规则的数据复用可以降低处理器设计中缓存/控制逻辑的设计复杂度提高总体的性能
根据Roofline模型很容易解释第一点原因。
Roofline模型是一种面向吞吐量的性能评价模型它指出在理想情况下处理器性能的理论上界。
如下图所示在数据复用不高的情况下峰值性能受限于内存Memory-bound。
6可以解释第二点原因。
充分利用数据复用使得访存多发生在RF等靠近ALU的存储上可以极大降低功耗。
ZEN系列CPU为例Die的结构如下图所示。
可以看出FPU和ALU只占CPU面积的很小一部分。
大部分面积是控制逻辑的缓存。
这意味着如果针对卷积计算这种规则的具有时间和空间强相关性的且没有分支跳转的计算设计专门的硬件可以抛开专用处理器中复杂的控制和缓存设计减小芯片面积提升性能降低功耗。
这些特性表明卷积计算有很大的优化空间专门针对卷积计算设计的芯片能极大的提高性能和效能
矩阵-矩阵乘法的应用已经非常广泛很多线性代数库充分结合了矩阵计算中的数据复用关系和处理器缓存的层次设计结构对矩阵-矩阵乘法进行了充分的优化GEMM通用矩阵乘法。
(C
C(i,j)这一形式和第1节中卷积的计算方式极其类似。
实际上针对三维的Tensor进行展开即将卷积计算中的六层循环的内三层进行合并很容易将卷积计算转化为矩阵乘法计算(im2col)。
此时卷积计算等价为矩阵乘法计算而卷积计算中的数据复用关系等价为了矩阵计算中的数据复用关系。
矩阵-矩阵乘的复杂度如下所示
现有的处理器架构从存储和计算之间的关系上来看都是类似的处理器计算性能的上限可以通过计算单元及其运行频率确定。
为了高性能的完成矩阵计算即使得性能达到Roofline模型中峰值需要对矩阵计算的三层循环进行优化。
在进行分析之前需要明确两点固有的特性
如果矩阵存储在内存中DDR,直接按三层循环进行矩阵计算那么每个周期需要访问(a,b,c)三个数此时性能会受限于DDR带宽。
将矩阵放在片上的Cache中是一个好的选择但是片上Cache的容量往往较小。
解决这一个矛盾的方法是对大的矩阵进行分块此时矩阵计算可以表示为
Asub(ir,kr)*Bsub(kr,jr);采用这一分块方式假设矩阵存储在DDR分块后的矩阵存储在片上Cache完成(MR\times
针对具有不同存储层次的处理器以及不同大小的矩阵计算而言有不同的分块方式以达到峰值性能。
虽然这一方法针对矩阵计算进行了很好的优化但对于卷积计算而言依旧存在缺陷
im2col计算过程中针对Tensor进行了Reshape和Duplicate这会增加带宽的消耗
转化得到的矩阵乘法和传统的矩阵计算维度相差较大可能无法获得好的性能
由于这些缺陷存在如果没有针对硬件架构进行特殊的设计卷积即矩阵乘法的设计思路往往无法达到峰值性能。
一维的脉动阵列FIR滤波器的一种实现方式其实现结构如下图采用这种结构每输入一个(x[n])就能计算得到一个(y[n])。
这种特殊的数据复用是根据卷积计算的特殊性质得到的。
在卷积神经网络中卷积层的计算一般也存在这种数据复用关系除kernelsize
stide情况外。
如果能用好这一特性不再将卷积转化为矩阵乘法直接计算卷积能获得更高的性能。
为了达到这一目标和分析矩阵乘法类似对卷积的六层循环进行分析。
In[i*sl.j*sm,n]*F[l,m,n];类似GEMM最内层循环会被并行化为了达到更好的性能可以对循环顺序进行调整。
为了提高并行性由于Co循环的各个计算之间相互独立将其放置到最内层循环
为了进一步提高访存的效率Input/Ouput/Filter在内存中的排布方式也需要进行相应的调整。
无论是将卷积转化为矩阵计算或者直接计算卷积都能够通过分块的方式相对高效的完成卷积计算由于将卷积转化为矩阵计算有一定开销其性能可能会受到一定影响但矩阵计算具有更高的灵活性。
显然实现一个硬的GEMM加速器可以加速矩阵计算进而加速卷积计算。
针对GEMM的分块矩阵即内层循环进行硬件加速是一种简单高效且相对灵活的选择其优势包括
类似设计包括Nvidia的Volta架构其加速核心被称为Tensor
中的元素广播到4个不同的MAC上同时每个四个乘法的结构累加到一起如下图所示
Core是一个(16\times16\times16)的MAC阵列以Davinci
为了保证计算单元之外设计的统一性送入计算单元的数据位宽完全一致和普通的FP32计算单元比Tensor
Core在算力上有很大的优势。
由下表可以看出由于数据复用和精度的降低Tesnor
Core的理论性能是FP32的8倍同频其中两倍受益于精度的降低。
前文提到“卷积即矩阵乘法的设计思路无法达到峰值性能”但有了硬件架构的联合设计这一结论不再成立。
譬如在Davinci
Buffer进行Img2col可以降低由于im2col增加的访存带宽合理设计的L0
TPU中设计的脉动阵列也是针对矩阵乘法设计虽然有的脉动阵列也可直接计算卷积但TPU并没有采用这一类设计。
之前的文章有对Google
TPU进行细致的分析动手写一个简单版的谷歌TPU并实现了一个小规模的基于VLIWVector
Architecture的TPUSimpleTPUVLIW向量体系结构可以作为进一步参考。
Accelerator(NNA)也实现了一个大规模的矩阵乘法器NNA也可能时直接采用广播的形式而非脉动形式进行输入。
参考其专利中的说明其具体实现和Google
PROCESSOR中进行累加计算出最终结果后依次向下移位输出。
FSD中有两个NNA其中MATRIX
计算过程中TPU的weight保持不变而FSD的partial
TPU中的weight保持在DRAM中片外FSD保留在SRAM中
由于FSD的weight存储在片上为了满足输入的数据排布要求增加了在线的Weight
3)的kernel中有因子3而TPU1的宽度为256是2的幂次kernel的展开很有可能是时间上隐式进行的。
6)。
这种针对Dataflow的分类方法也涉及到数据复用但主要针对Register
File上的复用进行分析和本文针对计算中存在的数据复用关系进行分析有所不同一个典型的差别是Ref.6中归类为no
Eyeriss是一种直接针对卷积计算优化的加速器和其他加速器不同Eyeriss针对Convolution
由于卷积神经网络计算卷积时C方向的特殊性Convolution
Reuse仅在H和W方向存在。
以kernelsiz3stride1为例卷积计算中row方向的数据复用如下图(Ref.
此时ifmap中的元素3被利用了三次只需要从存储中访问一次元素3就能完成3次计算。
当扩展为二维时有(Ref.
即ifmap的row方向在不同PE之间进行复用而实际上ifmap的col方向的数据会暂存在PE内的RF上col方向的数据也在RF上进行复用。
resue同时也可以利用其他resue的手段。
譬如上图中的filter在水平PE之间复用psum在垂直的若干个PE之间复用。
这意味这Eyeriss相比其他结构做到了更多的数据复用可以进一步降低功耗。
一维卷积的计算复杂度为(O(n^2))由于时域卷积等于频域相乘对于离散信号而言可以通过快速傅里叶变换Fast
TransformFFT及其逆变换将信号在时域和频域之间变换。
而FFT的计算复杂度为(O(nlogn))当(n)取值较大时其计算复杂度会远低于直接计算一维卷积。
类似的可以考虑在其他域进行二维/三维卷积的计算针对卷积神经网络中的加速有FFT
Networks)。
但若想取得一定的加速比这些方法对卷积核的大小和步长均有要求这一类方法均难以适应卷积核日益小型化的发展趋势。
当大多数AI芯片中的神经网络加速器还在使用AlexNet/VGG/ResNet跑benchmark时新的网络层出不穷。
一些为了运行在嵌入式设备上而设计的轻量化网络通过压缩卷积中各个维度的计算来降低计算量这很大程度影响了卷积计算中的数据复用关系。
考虑在轻量化网络中使用的Point
而第三节中一些典型的基于数据复用的加速其设计中若想达到最优性能对数据复用的要求是
数据复用关系的失配会让这些加速器在运行这些特定的Layer时出现严重的效率问题。
譬如TPU
Conv时效率不可能超过(9/2563.5%)。
这样低的效率使得这些设计良好的网络带来的数量级的计算量下降变得毫无意义。
Array的优化目标都是Matrix-Matrix乘法而Batch1得FC和Depthwise
Conv更贴近于Matrix-Vector乘法这在本质上就是不同的。
即使在软件层面的优化上这两个运算也是分别进行优化的GEMM和GEMV。
而对于芯片设计而言已经面临的挑战是如何设计一个在多变的复用关系下均能保证较高效率的神经网络加速器。
完成这一目标至少有两种不同的设计方向
上述的几乎所有的讨论和设计都能归结到降低数据带宽上。
一旦数据带宽降低后其灵活性就受到了很大的限制这是无法计算GEMV的原因之一。
如果需要加速器能够在各种情况下有良好的表现最直接的解决方案就是在设计上提供高的带宽和灵活性。
V1进行改进以高效支持MobileNet。
为了提供高带宽Eyeriss设计了层次化2D
Buffer到PE之间具有丰富的连线在不同计算模式下可以以Multicastbroadcast和unicast进行数据传输充分满足不同计算下的数据需求。
V2中并没有提到可重构但其Noc在计算不同网络时有不同的选通路径和可重构的思想一致。
一般谈到硬件可重构一般会想到FPGAFieldProgrammable
Array现场可编程大规模逻辑门阵列。
通过FPGA片上丰富的的互联结构和查找表FPGA理论上可以用于实现各种形式的电路。
FPGA可以创造出各种可能但FPGA设计上有很多冗余在布局布线和加载上也会花费较多时间。
究其本因是因为FPGA采用了很底层的基本单元来构建整个电路。
与FPGA这种细粒度可重构相对应的是粗粒度可重构网络粗细度可重构不像FPGA一样可以控制每一个bit的选通而是提供了一系列基本的计算单元和互联结构。
根据算法的需求可以采用不同的方式构建这些计算单元。
譬如Plasticine中的PCU中每个FU由前向反馈等多种路径可以构建不同的计算单元。
多个PCU之间通过交换网络和其他PCU及PMUMemory相连可以配合完成不同的操作。
这些都以增加片上各个单元之间的互联性为基础。
采用可重构设计的还有清华大学微电子系设计的Thinker芯片具体可参考A
ApplicationsRef11。
这样的具有灵活互联结构的可重构加速器可以支持矩阵-矩阵乘法矩阵-向量乘法以及更多的其他计算具有较强的灵活性。
另一种思路是对某些运算做到极致的支持其他的运算通过CPU或者其他的Core来计算从华为达芬奇架构到Google
TPU2/3的设计上都有的体现华为的达芬奇架构可参见3.1节Google
Google的框图并没有透露太多的细节仅仅表面TPU中由于MXU和scalar/vector
Unit进行矩阵计算时随着(N)取值的增加数据输入带宽随增长而MACs的数量随增长这表面针对特定的计算进行优化结果可能会更优。
当然这样的设计也有一些缺陷。
不同计算单元之间负载可能不均衡导致计算出现瓶颈不同计算单元之间的数据传输调度会变得复杂当然这种设计思想并不意味一个加速Core只能加速很受限的计算类型依旧可以对单个的加速Core进行兼容设计本节的讨论和4.1并不完全冲突。
譬如依旧有一些简单方法可以让一个三维的MAC阵列类似Cube
Core同时支持GEMM和GEMV操作但依旧会有一些限制由于数据复用的不同这两类运算始终落在Roofline模型的不同位置。
但不管从哪个角度去解决面临的新的挑战暂时都没有看到一个完美的解决方案。
或许我们并不需要一个真正完美的解决方案能解决一部分问题创造价值就已经足够了。
这里引用Cloud
虽然在AI芯片设计过程中都针对算法进行了深度的优化同时算法也针对芯片实现进行了定点化和低比特量化等工作这些看似是一个联合优化的过程。
但是归根到底既然是选择为AI应用设计芯片在设计过程中算法永远占主导地位。
从长远来看还需要把握算法的发展趋势。
站在硬件设计的角度来看由于在计算机诞生之初就有了高性能并行计算的需求很多设计实际上以及出现了很长时间譬如数据并行的向量体系结构VLIW脉动阵列稀疏计算都有40年以上的历史2D
Mesh互联也至少有30年。
从设计上看新的东西并不是很多架构成功的关键在于是否顺应了时代的潮流包括算法/需求的发展和底层硬件技术的发展。
在发展过程中算法和现有的硬件上的分歧往往是存在的以本文讨论的卷积计算的数据复用为例这和网络稀疏化的发展方向相悖。
如果以极度稀疏化为目标那么网络计算过程中的数据复用会越来越低。
2.volta-architecture-whitepaper.pdf
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback