오늘은 맑음

Study note : Efficient Processing of Deep Neural Networks(2) 본문

NPU

Study note : Efficient Processing of Deep Neural Networks(2)

자전거 타는 구구 2021. 11. 13. 02:00
반응형

5.2 KEY PROPERTIES OF DNN TO LEVERAGE

 5.2에서는 5.1에서 이야기 한 내용에 이어서 어떻게 하면 DNN의 특성을 이용해서 hardware의 performance와 energy efficiency를 높일 수 있을지에 대해서 설명합니다.

 5.1에서는 주로 data locality를 이용하거나, data의 bitwidth를 줄여 전체적인 transfer cost를 낮추는 방법을 이야기 했다면, 5.2에서는 연산기 내부에서 어떻게 하면 data transfer cost를 줄일 수 있을지에 대해서 이야기합니다.

 DNN의 연산 특성상(예를 들면 convolution layer) 각 convolution 연산 사이에는 data dependancy가 없습니다. 즉, kernel이 stride단위로 sliding하면서 convolution 연산을 수행하는데, 이 때 각 convolution 연산은 서로 다른 연산기에서 수행되어도 상관이 없다는 의미입니다. 이러한 DNN 알고리즘의 특성으로 DNN hardware accelerator는 많은 PE(Processing Element)를 배치해 병렬처리 하게 되어 높은 throughput을 낼 수 있습니다.

 

https://wh00300.tistory.com/151?category=780793 

 

Convolution연산과 수식

 CNN(Convolutinal Neural Network)에서 주를 이루는 Convolution layer에서 입력 데이터의 크기, 커널의 크기, 패딩, 보폭(stride)가 어떤 상관관계를 갖는지 수식을 통해 알아보자.  기본적인 Convolutoin의..

wh00300.tistory.com

 

 PE들을 병렬로 처리하게 되면 PE의 개수만큼 많은 데이터들을 보내주어야 하는데 이 때 소모되는 data transfer cost 역시 줄일 수 있을까요?

 답은 DNN 알고리즘 안에 있습니다. 알고리즘의 특성으로 인해 많은 MAC 연산기에서 동일한 데이터를 가지고 연산하는 상황이 발생하게 되며 이를 이용해서 많은 PE들을 병렬로 사용하면서 data transfer cost를 줄일 수 있습니다.

 

Data reuse opportunities in a CONV or FC layers of DNNs, "Efficient Processing of Deep Neural Networks"

  1. Input Featuremap Reuse
     현재 layer의 Input fmap을 Filter 1과 2를 이용해서 다음 layer의 Input fmap을 만들 때 Filter 1과 Filter 2에는 동일한 Input fmap을 사용하게 됩니다. 따라서 Input featuremap reuse에서는 서로 다른 dimension(M)의 Filter와 연산하는 Input featuremap을 재사용할 수 있습니다.
  2. Filter Reuse
     입력 데이터가 batch(한 번에 여러장의 입력이 들어오는 경우)로 들어오는 경우, Filter는 각 입력 데이터 1번과 2번에서 동일하게 사용될 수 있습니다. 즉, Filter는 input feature map 1과 2가 들어올 때 재사용 될 수 있습니다.
  3. Convolutional Reuse
     Convolution연산에서는 하나의 Input featuremap을 연산할 때 처음부터 끝까지 sliding하면서 연산되는 Filter가 동일하게 사용됩니다. 

  이 책에서는 3가지 타입으로 데이터 재사용을 정리합니다.

 이런식으로 데이터를 재사용 하게 되면 data transfer cost를 더욱 아낄 수 있습니다. 그 방법은 다음과 같습니다.

  1. 재사용 되는 데이터를 더욱 transfer cost가 낮은 memory에 담아둔다.
  2. 해당 memory에 있는 데이터를 사용하는 모든 PE에 같은 데이터를 전송한다.

 추가적으로 input activation 혹은 filter weight를 재사용 하면서 data movement cost를 줄일 수 있는 방법으로는 spatial sum을 이용하는 방법이 있습니다. 만약 일반적인 adder tree를 사용하게 되면 추가적인 memory를 필요로 합니다. 중간중간 partial sum들을 잠시 담아둘 register가 필요하지요? 하지만 같은 사이클에 나온 출력 값들을 더할 수 있습니다.

 하지만 spatial sum을 이용한다면, 즉 output activation이 나올 때 마다 가산 연산을 수행한다면 adder tree에서 필요로 하는 memory를 줄일 수 있습니다.

adder tree(좌)와 spatial sum(우)

 간단히 그려보면 위와 같은 모양이 되겠네요. 왼쪽과 같이 adder tree를 사용하면 1과 2를 더한 3을 저장할 memory와 3과 4를 더한 7을 저장할 memory가 필요합니다. 또한 3과 7을 더한 10을 저장할 memory까지 추가적으로 필요로 하죠. 하지만 오른쪽과 같이 spatial sum을 이용하게 되면 하나의 memory에서 최종 출력인 10까지 계산을 하고 출력할 수 있게 됩니다. 물론 여러 cycle이 소요되겠지만 많은 PE로부터 나오는 값들을 모두 adder tree로 처리하게 되면 많은 memory가 추가적으로 필요하게 될 것입니다.

 추가적으로 중간에 3과 6으로 더한 과정에서는 RBR(redundant binary representation)을 사용하면 기존의 two-input adder보다 더욱 아낄 수 있다고 하는데, 자세한 내용은 wiki 링크를 걸어두겠습니다.

https://en.wikipedia.org/wiki/Redundant_binary_representation

 

Redundant binary representation - Wikipedia

A redundant binary representation (RBR) is a numeral system that uses more bits than needed to represent a single binary digit so that most numbers have several representations. An RBR is unlike usual binary numeral systems, including two's complement, whi

en.wikipedia.org

 RBR을 사용하면 중간 덧셈 과정에서 carry를 전파하지 않아도 되어서 계산할때 필요한 cost가 줄어든다는 내용인 것 같은데 저도 처음 보는지라 조금 더 찾아봐야 할 것 같습니다.

 

 이런 식으로 data transfer cost를 더욱 줄여보았지만 아직 제한사항이 있습니다. 위의 설명을 보게 되면 input feature map을 재사용 하거나, filter를 재사용 할 수 있습니다. 즉 한 타입의 데이터만을 재사용 할 수 있다는 것입니다. 이렇게 되면 DNN은 각 layer마다 다른 특성을 가질 수 있으므로, hardware가 input feature map/filter 둘 중 하나를 재사용하게끔 고정되어 버리면 큰 효과를 보지 못 할 수도 있습니다.

 따라서 다음 5.3부터는 하드웨어가 고정 된 상태에서 서로 다른 DNN layer를 효율적으로 처리하기 위한 방법을 설명합니다. 

 

https://wh00300.tistory.com/246

 

Study note : Efficient Processing of Deep Neural Networks(3)

5.3 DNN HARDWARE DESIGN CONSIDERATIONS  5.3절에서는 DNN hardware design을 할 때의 고려사항에 대해서 설명합니다.  DNN hardware를 design할 때 중요한 점으로는 "최적의 성능(performance, energy efficie..

wh00300.tistory.com

 

Reference
https://www.morganclaypool.com/doi/abs/10.2200/S01004ED1V01Y202004CAC050

 

Efficient Processing of Deep Neural Networks | Synthesis Lectures on Computer Architecture

Efficient Processing of Deep Neural Networks Vivienne Sze​‌ Massachusetts Institute of Technology Yu-Hsin Chen​‌ Massachusetts Institute of Technology Tien-Ju Yang​‌ Massachusetts Institute of Technology Joel S. Emer​‌ Massachusetts Institu

www.morganclaypool.com

 

반응형
Comments