ECG는 심전도즉 심장의 전기적 활동을 기록한 그림을 의미한다. 각각 layer 설명 Conv layer는 특징을 추출하는 layer Pooling layer는 가장 중요한 정보를 유지하는 동시에, 각 피쳐의 정보량을 줄인다. 대표적으로는 max pooling으로 특징중 가장 높은 값을 가진 애가 그 영역을 대표 FC layer는 분류하는 layer로도 불리는데, 분류해주는 softmax로 전달하기 전에 여태의 모든 정보를 1차원으로 풀어준다. Conv layer는 특징을 추출하는 layer로 미리 정한 필터를 통과하면 원하는 정보의 특징이 뚜렷해지 게 된다 모든 정보를 담기 때문에 fc에는 많은 파라미터가 쓰임 FC layer에 전달하기 전에 GAP를 이용하여 차원을 줄여서 벡터로 만든 다음에 FC layer로 전달 하 면 FC Layer에서 쉽게 사이즈를 맞출 수 있기 때문 Pruning은 중요하지 않은 값들을 제외하는 것으로 생각하면 된다. Pruning의 종류를 크게 2가지로 나눌 수 있음 이 논문에서는 unstructured pruning을 사용 갈수록 골고루의 정도와 공간적 농도가 높아진다 (a)는 구조와 상관없이 특정 기준을 세워 그 weight값이 기준보다 낮게되면 제거하는 방식 보통은 0근처의 weight값들을 0으로 만듬 이후에는 그림과 같이 weight값들이 point, channel, filter 부분들끼리 묶어 전체적인 기여도에 따라 pruning 되는 것을 알 수 있다. 기여도 기준은 찾아봐도 그러기 때문에 정확도에 장점을 가진 unstructured를 사용하게 됨 T는 PE array의 개수와 같게 하여 non-zero weight가 array에 한번에 들어갈 수 있도록 여기서 compressed는 0을 다 제외시키는 것으로 의미 Weight를 압축하면서 weight의 value 값과 block에서의 Index와 개수 정보를 저장하게 된다. 이때 value는 16bit이고, index와 개수를 나타낼때는 총 5bit만 사용 그 이유는 커널의 최대 크기가 7*1이기 때문에 최대 28개를 표현해야하기 때문이라고 생각 Conv 다음에 data들을 받아서 연산이 쉽게 이루어질 수 있도록 fclayer도 같은 형태의 compressed format으로 data들을 압축하였다. 하나의 row줄을 block이라고 생각하고 그 안에서의 값, index, valid개수를 정하여 압축하였다. Conv 와 fc layer일때의 전체 크기 중에서 유효한 정보들의 크기를 각각 정리한 식이다. 각각의 식에서 전체의 크기가 커질수록 앞의 항들은 생략할 수 있다. 이를 통해서 맨밑에 있는 분수로 compression rate를 지정할 수 있다. 이를 그래프로 그리게 되면 압축률이 1일때는 sparsity가 23.8 퍼센트이므로 Sparsity가 이보다 크게되면 effective한 compression이 이루어질 수 있다는것을 알 수 있다. 이 논문에서는 data를 compress를 tile 방식으로 하여 유효한 정보의 정확한 위치 파악을 특징으로 한다. Tile-first dataflow 에는 가장 크게 두가지 방법이 적용된다. 먼저 weight에는 skipping zero operation을 적용하여 쓰이지 않는 weight는 고려하지 않는 것이다. 이를 통해 index들만 잘 매칭해주면 된다. 이는 clk cycle과 전력 소모를 줄일 수 있지만 유효한 w eight와 input 짝을 찾기 위한 HW resource가 필요하다. 두번쨰로는 power gating인데 이는 input에 적용이 되고 쓰이지 않는 인풋을 powering off 한다고 생각하시면 될것 같다. 이는 위의 방법처럼 HW는 많이 필요로 하지 않고, 전력 소모를 줄일 수 있다는 장점이 있다. 가장 처음 부분은 index matching 이다. 보시는거와 같이 먼저 채널을 고르고 위치를 고르게 된다, 채널은 low bits으로 결정이 되고, 그 안에서의 위치는 higher bit에서 고르게 된다. non-zero weights in a tile are distributed to different PEs before starting the calculation and they will remain unchanged until finishing computing with the entire length of corresponding input activations 배열된 명령어와 weight, activation이 instruction reg과 RAM에 저장되고 FSM은 decorder로 해석한 명령어에 따라 전체적인 시스템의 control과 configuration signal들을 fetch 한다. PE 배열에는 index matching 된 input activation이 들어온다.. Pe는 총 12단계로 이루어져있고, 안에서 덧셉과 곱셈이 이루어져 partial sum을 만들어낸다. Partial sum은 bias가 더해진 후 accumulate가 된다. Conv layer 이후 차원을 줄여주는 pooling은 총 4가지의 방법중에 고를 수 있게 된다. 이후에는 16bit로 quantization이 이루어진다. 이는 EGC classification에 무시할 수 있는 정도의 정확 도 손실이라고 판단되어 수행한 것이라고 합니다. 각각의 PE는 곱셈과 덧셈을 한 cycle안에 수행한다. 그 안에서 계산된 partial sum은 그 다음 PE로 이동되어 더해진다. 그때 하나이 타일이 한꺼번에 처리될 수 있도록 T이길이와 PE개수가 같다. 이때 input activation은 같은것을 share하고 각각의 PE는 다른 kernel을 가지고 계산한다. Gate control signal은 이전의 decorder에서 발생한 것으로 block number를 12bit로 바꾸어준다. 각각의 이는 tile이 계산하는 동안은 바뀌지 않다가 block number이 12보다 커지면 다 1로 바뀐다…? Ai는 input activation의 signed 16 bit 중에서 가장 높은 bit로 이용한다. 이는 불필요한 계산을 피하기 위해 사용하는데 결국 0보다 작은 값들을 걸러주는 relu함수를 대신 할 수 있다고 나와있습니다. 마지막으로 enable 신호로는 CONV와 fclayer 들의 계산이 호환될 수 있도록 control하는 신호 왼쪽에 있는 fig9는 conv layer의 PE 구조인데 이는 convolution의 sliding의 구현을 휘해 pipeline 구 조로 되어있고, 계산하는 동안 weight들은 reuse된다. 오른쪽은 fc layer의 PE들을 계산한 것으로 얘네는 stage 마다 각각 activate되어 conv보다는 효율성 이 떨어질 수 있지만 이는 GAP layer로 FC layer의 크기를 줄일 수 있다. 자세한 PE 구조는 뒤에서 또 설명드리겠습니다. 이 논문에서는 unstructured pruning을 수행하였기 때문에 유효한 input activation에 대한 정확한 index matching이 필요하다. 이를 위해 shift register이 기본으로 설계가 되었다. 각각의 PE는 총 2단계의 SR로 구성이 되어있습니다. 먼저 첫번째 SR는 input activation에서 channel을 고르는 level이라고 생각하시면 됩니다. 앞에서 설명드린거처럼 w-ind의 low 2bit를 이용하여 weight의 같은 channel을 고른다. 제가 이 논문을 읽었을때는 2번째 level에서는 convolution의 sliding 계산과 같게 하기 위해 shifting 을 한다는데….. 어떤게 shifting이 되어 계산되는건지 모르겠습니다…. 뭔가 weight는 고정이 되고, 같은 channel안에서 input이 바뀌면서 계산되는거 같은데…. 가장 높은 bit으로 conv랑 fc 구분 Conv instruction Fc는 input과 output의 사이즈만 들어있음 Storage accuracy (ACC), sensitivity (Sen), specificity (Spec) and positive pre- dictive value (Ppv) metrics F1-score that is the harmonic average of Sen and Ppv is used for comprehensive evaluation. 가장 정확도에 영향을 주지 않는 sparsity 범위를 구하기 위한 실험을 하여 결과에서 알 수 있듯 이 70% 이상의 sparsity로 진행하면 정확도가 크게 감소하여 70%로 정함을 알 수 있다. 예측모델과 실제로 돌려본 모델의 비교를 두가지로 나타낸것 같다. 색이 진해질수록 같다는 의미 VGG는 2D CONV Frequency가 커질수록 소모하는 Power도 커진다. 보통 100kHZ-25MHz까지 정함 따라서 power도 많이 안 들면서 energy efficieny도 크게 감소하지 않은 2MHZ로 정함