PIM/관련 논문

[IEEE.2018] Processing-in-memory for energy-efficient neural network training: A heterogeneous approach.

H/W engineer_ beginner 2022. 1. 14. 15:39
SMALL

출처 : Liu, Jiawen, et al. "Processing-in-memory for energy-efficient neural network training: A heterogeneous approach." 2018 51st Annual IEEE/ACM International Symposium on Microarchitecture (MICRO). IEEE, 2018.

 


Abstract : 

 Nerural Networks(NNs)는 Image classification, speech recognition, object detection, computer vision 등 다양한 분야의 application에 활용되고 있습니다. 하지만 현재 Neural Networks 를 Training하는 데에는 시간적, 에너지적 비효율성이 존재합니다. (특히 DNNs 분야) 왜냐하면 많은 데이터들이 메모리와 프로세서 사이를 이동하기 때문입니다. (예전에는 Processor의 성능 자체, Memory의 성능 자체가 프로그램 실행 속도에 큰 영향을 미쳤지만, 현재 엄청난 성장을 이룬 Processor와 Memory Architecture로 그 자체의 성능이 아니라 그 둘 사이를 이동하는 Data의 병목현상이 프로그램 실행 성능에 Critical한 요소가 되었습니다.) 또한 DNNs의 Training에는 아주 복잡한 Fine-grained operation이 처리되어야 하기 때문에 현재의 방법으로 이를 빠르게 병렬 처리하는 데에 어려움이 존재합니다. 하여, 이 논문을 통해 Software/Hardware co-design인 Heterogeneous processing-in-memory(PIM)를 제시합니다. 

 

 PIM의 H/W 모델에는 기본적으로 Heterogeneous PIM Architecture 구현을 위한 Logic layer가 존재합니다. 이 Logic layer는 3D die-stacked momory 구조로 설계되었으며 그 위에 수백개의 Fix-function을 위한 arithmetic units과 프로그래밍이 가능한 ARM based cores가 존재합니다. 3D die-stacked memory 구조란 평평한 Silicon 위에 연산을 위한 Logic layer을 쌓고 그 위에 DRAM을 순차적으로 올려 쌓는 구조를 의미합니다. (앞서 설명했듯이 Logic layer에는 Fixed-function cores와 Programmable cores가 존재합니다.) 또한 같은 Silicon 위에 CPU가 존재하기 때문에 Heterogeneous PIM Architecture라고 이름을 명명하였습니다. 

 

[Figure 1] PIM Architecture

 

 PIM의 S/W design은 프로그래밍 모델과 함께 다양한 Neural Networks를 training하기 위한 runtime system을 제공합니다. 이는 CPU와 Heterogeneous PIM compute resources를 사용하는 것을 용이하게 합니다. 또한 OpenCL 프로그래밍의 확장을 통해 간단하게 프로그래밍 할 수 있는 환경을 제공하며 높은 프로그램 이식성을 갖추고 있습니다. 또한 Heterogeneous H/W를 관리하고 최적화 하는 데에 도움이 되며 이를 통해 시스템 에너지 효율성 증대 및 H/W Utilization 증가를 도모할 수 있습니다.

 

*OpenCL : Heterogeneous(이기종) 플랫폼에서 실행되는 프로그램을 작성하기 위한 개방형 범용 병렬 컴퓨팅 Framework, 이를 통해 task-based 병렬 컴퓨팅 혹은 data-based 병렬 컴퓨팅을 할 수 있음

 


Introduction : 

 오늘날, Neural networks 연산에는 매우 많은 parameters와 data sets가 이용됩니다. 예를 들어 VGG와 AlexNet의 경우 각각 138M과 61M의 parameters를 image classification을 위해 사용합니다. 이와 같은 복잡한 model을 Training하는 경우에 엄청난 Computing resource와 Memory resource를 필요로 합니다. (많은 에너지와 시간 또한 필요합니다.) 많은 Resource를 사용하는 경우에 가장 성능에 가장 Critical한 요소 중 하나는 바로 NNs를 Training하는 경우 발생하는 Bottleneck 현상입니다. (System 안에서 많은 양의 Data 가 이동하며 발생하는 병목 현상) 현재의 NN model은 더욱 커지고 복잡해지고 있습니다. 때문에 성능을 개선하기 위한 아래 설명한 연구처럼 다양한 방면의 노력들이 있었습니다. 

 

[1] Low-precision data를 사용해 연산 성능을 개선하는 방법

[2] Prune NN models를 사용해 연산 성능을 개선하는 방법

 

 하지만 위의 연구들은 NN model의 간략화에 대한 영향을 정량화 하는 데에 어려움이 존재하며, 근본적으로 NN model을 Training 할 때 발생하는 Data의 이동을 다루지 않습니다. (데이터의 이동에 의해 발생하는 병목현상을 해결하기 위한 근본적인 해결책이라 볼 수 없음.) 따라서 이번 연구를 통해 이를 해결하기 위한 조금 더 근본적인 해결책인 Heterogeneous PIM Architecture를 제시하려합니다. 최근의 PIM 관련 연구는 다양한 app 실행시 발생하는 데이터 이동 병목 현상을 해결하기 위한 유망한 솔루션을 제시하고 있습니다. 하지만 PIM Architecture 관련 연구의 경우 Programming 방법과 System runtime과 관련하여 몇 가지 어려움이 존재하고 있습니다. 

 

 첫 번째로 NNs Training을 가속하기 위해 PIM을 programming 하는 것은 매우 어렵습니다. 오늘날의 Tensorflow같은 Machine Learning framework들은 다양한 하드웨어에서 NN 작업을 구현하기에 용이합니다. 하지만 PIM software interface의 경우 PIM Architecture에 대한 심도 있는 하드웨어적 이해를 필요로 합니다. 때문에 PIM의 programming method를 개선하여 프로그래머들의 생산성을 높이는 과정이 필요합니다.

 

 두번째로 PIM의 Fixed-function logics과 Programmable cores를 통합적으로 디자인하는 것은 매우 복잡합니다. 이 두 Core는 매우 다른 Programming model로 구현되었습니다. Fixed-function logics의 경우 Assembly-level intrinsics를 통해 ISA-level로 디자인되었습니다. 하지만 Programming cores의 경우 통상적인 프로그래밍 패러다임을 따릅니다. (Threading packages 혹은 GPGPU programming interfaces 같은) 최근의 제시된 대부분의 PIM Architecture의 경우 Homogeneous PIM 구조를 하고 있습니다. (Fixed-function 혹은 Programmable cores 중 하나의 종류만 존재) 그렇기에 더 간단한 Software interface 설계가 가능하지만 Heterogeneous PIM Architecture 설계 시 이 두 가지 요소를 모두 고려하여 설계를 진행해야 합니다. 본 연구에서 더 복잡한 Heterogeneous PIM Architecture를 제시하는 이유는 에너지 효율을 향상시키고, Parallelism과 Programmability 사이에 Balance를 제시하기 위함입니다.

 

 마지막으로 PIM에서 NN Training처럼 큰 연산 규모는 Hardware utilization의 불균형을 야기시킬 수 있습니다. 이상적으로는 Hardware utilization을 높이기 위하여 NN Training 연산의 dependency를 어기면 안되지만 (Host processor와 PIM 전반에 걸친 operation-level parallelism 방법을 통해) Heterogeneous system에서는 명확한 Hardware scheduling이 어렵기 때문에 이를 이상적으로 실현하기 어렵습니다.

 

PIM Architecture 연구에서 발생하는 위와 같은 어려움들을 개선하기 위해 본 paper에서는 몇가지 방법을 제시합니다. 먼저 PIM-based NN Training accelaration system을 효율적으로 운용하기 위해 Tensorflow처럼 널리 사용되는 Machie learning framework의 도입을 제시합니다. 위의 목표를 성취하기 위해서는 software/hardware co-design Heterogeneous PIM 설계가 필요합니다. 이번 연구의 설계는 세 가지의 요소를 포함합니다. 먼저 Fixed funcion logic과 Programmable cores를 둘 다 사용하는 Heterogeneous PIM Architecture의 도입입니다. 두 번째로 OpenCL의 기능을 확장하여 PIM programming의 어려움을 개선하려 합니다. 마지막으로 PIM의 H/W Utilization을 최대화 할 수 있는 runtime system을 제시합니다.

 

 

-------------------------------------------------------------------------------------------------------------------

작성중 - 미완성

 

 

 


 

LIST