19、高性能稀疏卷积神经网络计算核心Phantom与Phantom - 2D架构解析

高性能稀疏卷积神经网络计算核心Phantom与Phantom - 2D架构解析

1. Phantom核心概述

Phantom核心的计算引擎包含多个处理单元(PE),每个PE有多个线程(th),并且有对应的配置位。在计算过程中,不同的周期会进行不同的操作,例如在某些周期内进行数据的映射和加法运算。

1.1 计算引擎

计算引擎的结构如下:
| PE编号 | 线程编号 | 配置位 |
| ---- | ---- | ---- |
| PE0 | th2,0
th1,0
th0,0 | 01
10
01
10
00
00
01
00
10 |
| PE1 | th2,1
th1,1
th0,1 | 未详细给出 |
| PE2 | th1,2
th2,2
th0,2 | 未详细给出 |

在计算过程中,数据会进行映射和加法操作,例如在不同的周期内,会有不同的数据参与计算,如 map31 map32 等。在第三个周期,计算引擎的利用率为66%,这是因为输入处于边界,LAM块没有更多数据可供前瞻。

1.2 输出缓冲区

输出缓冲区(OB)是Phantom核心的最后一个模块,负责缓冲计算引擎(CE)的输出,并使用L2加法器对数据进行累加以生成最终输出。OB使用m个先进先出(FIFO)缓冲区进行缓冲,其中m等于CE中乘法器线程的总数(这里为9)。

以下是输出缓冲区的示例:
| FIFO编号 | 数据 | 标签位 |
| ---- | ---- | ---- |
| F1 | d2wa2 | (1) |
| F2 | a1wa1 + a2wa2 | (1) |
| F3 | e1wa + e2w2 | (1) |
|… |… |… |

L2加法器的累加过程分为两个阶段:
1. 第一阶段 :将之前累加的部分输出与FIFO中的新条目相加,通过检查部分输出的标签位并添加新值中缺失的标签1,将部分输出转换为有效输出。
2. 第二阶段 :将第一阶段中使用的标签1值替换为0,并累加其余标签1值,生成新的部分值。当输入耗尽且所有标签1值都已累加生成有效输出时,该过程结束。

1.3 输出编码

输出激活的稀疏性是动态的,需要实时生成稀疏掩码。生成过程如下:
1. 第一步 :基于全零检查,将各个LAM输出缩减为单个位(LAMxr),生成ReLU之前输出的稀疏掩码。
2. 第二步 :在ReLU之后,将负输出及其对应的稀疏掩码位置转换为零,最终的稀疏掩码直接存储,而输出先进行移位以省略零数据条目,然后存储。

graph TD
    A[LAM输出] --> B[全零检查]
    B --> C[生成LAMxr]
    C --> D[ReLU前稀疏掩码]
    D --> E[ReLU]
    E --> F[负输出处理]
    F --> G[最终稀疏掩码]
    F --> H[输出移位存储]

2. Phantom - 2D架构

为了计算完整的输出特征图,设计了二维加速器Phantom - 2D,它由多个Phantom核心组成。Phantom - 2D加速器连接到内存总线,接受来自CPU的数据和指令,包含片上SRAM(权重、输入和输出)、核心间平衡器和调度器、R × C计算矩阵以及累加器电路。

2.1 R × C计算矩阵

计算单元由R × C矩阵的Phantom核心和R个加法器组成,用于通道累加。R和C的选择基于以下设计目标:
- G1 :最大化多个输入子部分之间的数据重用(权重和输入)。
- G2 :优化各个Phantom核心之间的数据调度,以最大化理论硬件利用率。
- G3 :支持CNN的所有层,包括各种卷积层和全连接层。

考虑到流行CNN模型的通道计数通常是4的倍数,将C值设置为4;输入层大小(宽度或高度)S通常是7的倍数,将R值设置为7。这样可以确保核心大部分时间都处于工作状态,满足G2目标。

2.2 负载均衡

由于权重的静态性质和输入的动态稀疏性,数据重用会加剧不同处理单元(PE)之间的计算不平衡。为了解决这个问题,Phantom - 2D架构采用了两级负载均衡策略:

2.2.1 核心间平衡器

核心间平衡器用于支持滤波器重用的层(如常规和深度可分离卷积层),根据权重矩阵的密度动态平衡计算负载。在数据流动过程中,滤波器以低延迟、高密度和高延迟、低密度的方式进行调度,确保各列处理完成时间均匀,减少单个Phantom核心的空闲时间。

2.2.2 核心内平衡器

核心内平衡器位于每个核心内部,对权重矩阵进行列平衡。它始终处于启用状态,显著改善了TDS对单个乘法器线程的调度。

2.3 不同卷积层和全连接层的数据流动

2.3.1 常规/深度卷积

以3 × 3深度可分离卷积为例,4个3 × 3滤波器与9 × 5 × 4输入进行卷积,生成7 × 3 × 4输出。输入沿行分割成n个块,n等于输出的行数,这些块按R × C矩阵的行进行调度。每个Phantom核心处理3 × 5输入块,生成1 × 3输出块。每列处理不同的通道,并且滤波器在行方向上进行重用。由于高效的数据流动和R × C维度的选择,所有Phantom核心在处理特定块时都能获得数据,实现了100%的核心间利用率。

graph LR
    A[输入9×5×4] --> B[分割成n个块]
    B --> C[按行调度到R×C矩阵]
    D[滤波器F0 - F3] --> C
    C --> E[Phantom核心处理]
    E --> F[输出7×3×4]
2.3.2 逐点卷积

以一组1 × 1 × 36 × 7稀疏滤波器与3 × 3 × 36稀疏输入进行逐点卷积为例,生成3 × 3 × 7输出。7个滤波器沿Phantom核心的7行进行调度,每行处理相等数量的通道。通道根据每个Phantom核心中组合乘法器线程的数量平均分配,这里每个核心有3个PE,每个PE包含3个乘法器,因此通道平均分成9个批次并按列调度,以最大化硬件利用率。为了增强数据重用,每个权重矩阵存储在特定核心中,输入在其上进行扫描。L3加法器电路收集核心沿列的部分输出以生成所需输出。

2.3.3 全连接层

全连接层是现代CNN设计的重要组成部分,在CNN加速器设计中需要考虑。以长度为36的稀疏输入向量与36 × 49的稀疏权重矩阵进行元素卷积为例,生成长度为49的输出向量。输入和权重通道被分成4个长度为9的批次并按列调度。输入向量在行方向上保持静止,单个权重向量在输入向量上扫描以生成部分输出,L3加法器进行类似的累加以生成最终输出。

2.4 核心内平衡的重要性

核心内平衡器在每个Phantom核心内部进行线程级平衡。由于TDS按列操作,TDS延迟受最高密度列的限制。例如,在一个测试示例中,权重矩阵的第一列密度最高,导致该列处理周期最多,而第二和第三列只需一个周期即可完成选择,这会使核心停滞,显著降低核心的线程利用率(如在该示例中为33%)。核心内平衡器通过在TDS操作之前对LAM2和LAM3值进行右循环移位,有效地重新分配负载,改善了这种情况。

综上所述,Phantom核心和Phantom - 2D架构通过合理的设计和负载均衡策略,在处理稀疏CNN时能够实现高效的数据重用和高硬件利用率,为CNN的推理过程提供了强大的支持。

2.4 核心内平衡的详细分析

2.4.1 不平衡产生的原因

TDS(Thread Distribution Scheduler)在工作时按列对LAM输出进行评估,且每列所选的1的总数小于或等于每个PE的乘法器线程数(这里是3)。这种列选择方式使得TDS的延迟会被密度最高的列所限制。

以下通过一个具体示例来说明:
| LAM列 | 原始LAM值 | 密度 | 处理周期 |
| ---- | ---- | ---- | ---- |
| LAM1 | [1, 1, 1] | 高 | 3 |
| LAM2 | [1, 0, 0] | 低 | 1 |
| LAM3 | [1, 0, 0] | 低 | 1 |

从这个表格可以看出,第一列的密度最高,需要3个周期才能完成处理,而第二列和第三列只需要1个周期。这就导致核心必须等待第一列完成所有3个周期后才能处理下一个块,从而降低了核心的线程利用率。

2.4.2 核心内平衡器的解决方案

核心内平衡器通过对LAM2和LAM3值进行右循环移位来重新分配负载。具体操作如下:
- 原始LAM2值:[1, 0, 0]
- 右循环移位后LAM2值:[0, 1, 0]
- 原始LAM3值:[1, 0, 0]
- 右循环移位后LAM3值:[0, 0, 1]

通过这样的移位操作,原本集中在第一列的负载被分散到了其他列,使得各列的处理周期更加均衡,从而提高了核心的线程利用率。

graph LR
    A[原始LAM值] --> B[右循环移位操作]
    B --> C[调整后的LAM值]
    C --> D[更均衡的负载分配]

3. 性能评估与优势总结

3.1 性能评估

  • 利用率方面 :在常规/深度卷积中,由于高效的数据流动和R × C维度的合理选择,实现了100%的核心间利用率。在其他卷积层和全连接层的处理中,通过核心间平衡器和核心内平衡器的协同工作,也能有效提高硬件利用率,减少核心的空闲时间。
  • 数据重用方面 :在各个卷积层和全连接层的处理中,都充分考虑了数据重用,如在常规/深度卷积中滤波器在行方向上的重用,逐点卷积中权重矩阵的本地存储和输入的扫描操作,以及全连接层中输入向量的静止和权重向量的扫描等,这些都有助于减少内存访问次数,提高计算效率。

3.2 优势总结

  • 高效处理稀疏数据 :Phantom核心和Phantom - 2D架构针对稀疏CNN进行了专门设计,能够有效处理输入和权重的稀疏性,通过TDS、输出编码等机制,减少了不必要的计算和存储开销。
  • 灵活支持多种层类型 :能够支持CNN的各种层,包括常规/深度卷积、逐点卷积和全连接层,满足了现代CNN设计的多样化需求。
  • 负载均衡策略有效 :核心间平衡器和核心内平衡器的两级负载均衡策略,能够有效解决因数据稀疏性和计算不平衡带来的问题,提高了整体的硬件利用率和处理效率。

4. 实际应用与未来展望

4.1 实际应用

Phantom - 2D架构在实际的CNN推理过程中具有广泛的应用前景。例如,在图像识别、目标检测等领域,CNN模型通常包含大量的卷积层和全连接层,Phantom - 2D架构能够高效地处理这些层的计算,提高推理速度和效率。同时,其对稀疏数据的有效处理能力,也能够降低硬件资源的消耗,减少能源开销。

4.2 未来展望

  • 进一步优化架构 :可以通过研究更高效的数据流动策略和负载均衡算法,进一步提高Phantom - 2D架构的性能和硬件利用率。
  • 支持更多的CNN模型 :随着CNN技术的不断发展,新的CNN模型不断涌现。未来可以对Phantom - 2D架构进行扩展,以支持更多类型的CNN模型,提高其通用性和适应性。
  • 与其他技术结合 :可以将Phantom - 2D架构与其他技术,如人工智能芯片技术、云计算技术等相结合,构建更加高效的计算平台,为人工智能应用提供更强大的支持。

总之,Phantom核心和Phantom - 2D架构为稀疏CNN的处理提供了一种高效、灵活的解决方案,在未来的人工智能领域具有广阔的应用前景和发展潜力。通过不断的优化和扩展,相信其能够在更多的实际应用中发挥重要作用。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值