体系结构论文导读(三十):FSA: An Efficient Fault-tolerant Systolic Array-based DNN Accelerator Architecture

FSA: An Efficient Fault-tolerant Systolic Array-based DNN Accelerator Architecture
FSA:一种高效的容错脉动阵列 DNN 加速器架构


一、文章简析

在深度神经网络(DNN)加速器中,永久性故障尤其具有挑战性,因为它们可能导致推理错误和性能下降。为了解决这些问题,FSA架构提出了统一的重新计算模块(RCM),通过动态重新计算故障处理单元(PEs)应完成的计算,来保持DNN推理的准确性和性能。

注意:这篇文章关注点在于永久性故障

二、Intro

  • 永久性故障的影响

    • 在基于Systolic阵列的DNN加速器中,永久性故障会显著影响DNN推理的准确性。
  • 现有的解决方案

    • 软件解决方案:一些解决方案通过重新训练整个DNN模型来更新每一层的权重矩阵,另一些则避免使用有缺陷的PE进行关键计算。
      • 缺点:重新训练的模型和新的映射策略在添加约束条件后(如避免多个故障PE带来的不规则数据流)不太可能收敛。

这里文章里说重新训练,其实我个人有点不理解,有些PE不能用了,直接告诉操作系统 或者发送指令的时候不用这些PE不就好了吗?
一些可能的猜测是,在某些研究中,重新训练DNN模型是为了调整模型参数,使其能够适应由于硬件故障(如PEs故障)引起的计算资源变化

    • 硬件解决方案:通过增加冗余硬件组件(如MAC单元、PEs和链接)来避免永久性故障的负面影响。
      • 缺点:这些技术不可避免地会增加显著的成本、过多的功耗和延迟。
  • FSA架构的目标

    • 本文提出的FSA设计旨在在存在永久性故障的情况下保持DNN推理的准确性,且带来最小的开销。
    • FSA的核心是一个统一的重新计算模块(RCM),它可以重新计算故障PE应完成的计算,且相比之前的工作具有更低的延迟和更高的能效。

三、 FSA架构设计

A. FSA设计概述
  1. 架构组成

    • FSA设计包括一个基于Systolic的中央阵列(CA),片上缓冲器和一个统一的重新计算模块(RCM)。
    • Systolic阵列由256×256个处理单元(PEs)组成,并部署了多种数据流:输出固定(OS),权重固定(WS),输入固定(IS)。
  2. 数据流的选择

    • 数据流的选择揭示了在空间和时间上数据操作数(输入、权重或输出)的重用类型。
    • 在DNN推理阶段,输入(激活值和权重)预先从片外存储器加载到输入缓冲器中,然后流入CA的PE阵列。
    • 输入缓冲器由多个先进先出缓冲器(FIFO)构成,每个FIFO分配给CA的某一行或某一列。存储在FIFO缓冲器中的输入数据被组织为Systolic阵列。
  3. PE的架构

    • 传统PE的架构包括一个乘加单元(MAC)和一个本地寄存器,用于本地存储数据(激活值、权重和部分和)。
    • 根据应用的数据流,PE需要在本地寄存器中存储不同类型的数据。
  4. 数据流详细说明

    • OS数据流:PE在当前周期从前一PE接收数据(激活值和权重),将其存储在寄存器文件中,并在下一周期同时将数据传输到本地MAC单元和下游PE。部分和存储并累积在每个PE内,直到整个计算阵列的计算完成。
    • IS和WS数据流:输入和权重矩阵分别预加载到每个PE的寄存器中,进行本地存储后执行必要的计算。部分和在同一列的PE中流动以获得所需的累积值。
  5. 统一RCM模块

    • FSA设计利用统一的RCM模块来维持在永久性故障下的DNN推理准确性。
    • 在系统检测到故障PE后,这些故障PE的部分和会被直接设置为零,而其余PE的工作状态设置为正常,以确保CA内部的数据同步和数据流不中断。
    • 故障PE的输出被设置为零后,这些PE的正确结果将由RCM计算并替换,保证最终的DNN推理结果。
B. 重新计算模块(RCM)设计
  1. RCM模块功能

    • RCM模块重新计算原本映射到故障PE的激活值和权重矩阵的乘积。
    • RCM由一个RCM缓冲控制器和重新计算单元(RUs)组成。
  2. RCM缓冲控制器

    • 假设使用内建自测试(BIST)检测CA内部的故障PE,并将其位置存储在BIST模块中的故障检测表中。
    • RCM缓冲控制器接收来自BIST模块的故障PE地址,包括X和Y坐标。
    • 输入缓冲器由多个FIFO组成,每个FIFO映射到CA的一行或一列。因此,使用故障PE的坐标,RCM缓冲控制器可以轻松找到相应的FIFO,直接读取所需的激活值和权重。
    • 不同于之前的设计(需要通过整个CA传输激活值和权重数据给冗余PEs),提出的设计消除了过多的数据传输,从而减少了重新计算的延迟。
  3. 重新计算单元(RU)

    • RU的目的是重新计算给定故障PE所需的部分和。
    • 每个RU集成了一个MAC单元(包括一个加法器和一个乘法器)、一个本地寄存器和一组多路复用/解复用器(MUX/DEMUX)。
    • MAC单元的乘法器计算权重和激活值的乘积,并将结果传递给加法器,后者再计算部分和。
    • 寄存器用于本地存储部分和,并将其传输到CA的寄存器,以替代故障PE的结果。
    • 为了处理多个故障PE,RU可以扩展为RU阵列。MUX和DEMUX用于将当前RU连接到相邻的RU,并选择输出部分和的链路。
    • 本地寄存器从上游RU接收部分和,并将其传输到下游RU,然后传输到Systolic阵列的寄存器中。
    • 该设计还可以通过简单地停用和绕过RU阵列中的故障RU来容忍RCM中的故障RU。相关的停用和绕过逻辑未显示以保持清晰。

后续的设计是对之前思路的扩充,有兴趣可自行查看原文

  • 31
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

D了一天bug忘了编译

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值