오늘은 맑음

Systolic array를 이용한 NPU에 대한 이해(2) 본문

NPU

Systolic array를 이용한 NPU에 대한 이해(2)

자전거 타는 구구 2021. 4. 18. 18:32
반응형

 이전 글에서는 Systolic array에서 사용하는 processing element의 구조를 보았습니다.

 이번에는 systolic array를 사용해서 Deep Learning Algorithm을 연산하는 대표적인 NPU인 TPU의 구조를 보도록 하겠습니다.

 

TPU Block Diagram(“In-Datacenter Performance Analysis of a Tensor Processing Unit,” ISCA, 2017)

 

 TPU의 구조는 위와 같습니다. 많은 block diagram이 있지만 우측을 살펴보도록 하겠습니다.

가장 우측 중간에 MMU(Matrix Multiply Unit)라는 block이 있습니다.

MMU의 좌측에는 Systolic Data setup block이, 위에는 Weight FIFO, 아래로는 Accumulator가 있습니다.

Syatolic Array Data Path ("In-Datacenter Performance Analysis of a Tensor Processing Unit,” ISCA, 2017)

 MMU를 보면 위와 같습니다. 화살표는 데이터의 흐름을 의미합니다.

Row 단위로 Data가 전달 되고, Column단위로 partiam sum이 전달됩니다.

그리고 마지막에는 Accumulator에 의해 Partial Sum들이 더해지는 모양입니다. 

 

 MAC(Multiplication and Accumulation)

지난 글에서도 그렸지만 이번 그림이 더 마음에 드네요. 실력이 늘었나요?

MMU 내부에는 MAC유닛이 총 256x256개가 들어갑니다. 256Byte의 width를 가지고 데이터 통신을 합니다.

TPU는 8-bit 연산을 수행하기 때문에 한 번에 256개의 MAC 연산기에 activation을 공급할 수 있습니다.

 

이렇게 연산된 데이터들은 Activation과 Normalization을 통해 다시 Unified Buffer에 들어가고, 그 feature들은 다시 systolic array의 입력으로 사용 될 것입니다.

 

자세한 내용이 궁금하시면 아래의 논문을 읽어보시는 것을 추천드립니다.

 

그나저나 이걸 어떻게 만들어 보는게 좋을까요...

 

그림 출처 

"In-Datacenter Performance Analysis of a Tensor Processing Unit,” ISCA, 2017

반응형
Comments