【ISCA'18】 Prediction based execution on Deep Neural Networks
该系统实现了基于预测机制的深度神经网络执行方案,并确保了与传统方法持平的精度水平。具体实现中,在计算过程中对输入矩阵I或权重矩阵W进行高精度与低精度部分的分离,在此基础上分别进行相应的处理,并通过高精度部分进行核心推理工作,在处理低精度部分时则采用相应的简化算法以降低计算复杂度
- USPE:单一的线性PE架构能够应对不同精度的数据格式问题,并且降低了电路布局的面积。
- scale-out设计的核心在于通过优化资源复用策略来提高整体系统的资源利用率,并确保内存访问成为系统性能的主要瓶颈。

图1:理论上可被省略的数值为0。我对这一现象感到不解,在分析过程中发现当前层能够被省略的输出对应于下一层的输入,并没有比直接跳过更为合理的选择。此外,在进行跳跃时需要承担一定的计算成本
Contributions:
- 发现了跳过了输出的可能性
- 设计了一种基于预测的两阶段执行方案并等价于跳过了输出
- 作为支持上述预测方法的核心机制被提出USPE
- 提出了scale-out设计用于提高吞吐量通过优化数据流的方式改进数据复用模式并采用预取和错位填空的方法填充操作流水线中的空闲环节

基本方案:两步,第一步预测,第二步执行剩下的操作。

单纯的mapping方式会产生空闲。

乘加应支持 prediction 和 execution 两个阶段,在 bit 数不同时:改用串行乘法器。改造后即为右侧的 USPE 统一串行 PE,并可同时应用于两个阶段且无需增加额外面积消耗。

在将输入或权重进行分解时(即对输入或权重进行细化),选择哪种方式更为高效?当将输入分解为高低位时(即分别提取输入的不同层次特征),则计算量较小且采用CONV策略;而当将权重分解为高低位时(即分别优化权重的不同层次),则权重访存减少且采用FC策略。
Fig8:拆过之后的speed up 和memory问题

纵坐标:MAC_prediction/MAC_execution

预测阶段时的映射关系:横向排列了PL个输入端,并按列方向布置了PO个权重系数;同时引入OS操作;每个PE单元负责一个输出点
然而,在执行阶段(Execution stage),EON(Effective Output Neurons)被随机分配。

图11作为一个示例,该示例聚焦于max_pooling操作的具体实现过程。在这一过程中,图(b)采用了原始方案,而图(c)则采用仅基于weight共享的方式进行处理,这可能会影响计算效率的提升效果。具体而言,覆盖上下文区域需要两个cycle周期,受限于broadcast机制的限制,每个周期只能完成一定范围内的信息传递;然而恰好这两个cycle周期足以完成整个计算流程所需的全部操作
下面是对原文的具体分析:
(1)CONV模块中发现,在通道方向上的端到端运算次数大致相当。同时,在输入通道数与输出通道数相等的情况下,默认策略下采用了输入共享的方式进行设计,并且在实际应用中发现卷积核尺寸是可以灵活配置的。每一行中的计算过程都是基于同一输入通道的不同行进行的,并且由于各个通道具有相似数量的有效运算次数(EON),因此计算时间差异不大。(2)在应用最大池化层时发现,在每个面上仅有大约25%的有效点参与运算。基于上述观察结果选择了权重共享的设计方案以减少计算开销
访存怎么解决?两个(原文中是三个)步骤
- Ping-Pong Buffering:交替loading
- 根据Table信息进行assignment
需要注意的是,在赋值时间和加载时间上必须满足小于计算时间(执行位数)的要求。遗憾的是,在这里还不是很清楚。
