You are on page 1of 1

PIM for Neural Network Training using Analogue Memory

저자 : 권용환, 이규린, 최지훈 / 지도교수 : 홍상훈


경희대학교 전자정보대학 전자공학과
[반도체 전공트랙 프로젝트 발표]

서론 연구 결과
최근 Neutral networks(NNs)는 image classification, speech recognition, object 1. 모듈 구현 결과
detection, computer vision 등 많은 분야에서 광범위하게 사용되고 있다. 그러
나, NNs를 학습시키는 것은 많은 에너지와 시간 을 요구한다. 특히, Fully-
Connected Neural-Network layers는 많은 병렬 곱 연산을 요구한다. 기존의 전
통적인 디지털 메모리와 프로세서는 매우 많은 데이터의 이동이 요구되기
때문에 Energy-efficiency와 real-time training에 큰 한계를 보였다.
PIM(Processing-in-Memory)기술은 메모리 내에서 연산을 수행하고, 누적시키 Fig5. cell module Fig6. cell weight calculation Fig7. sigconv module
는 방식을 이용하여 학습을 진행한다. 이로써 power Consumption을 크게 줄
2. Top module 배치
이고, 아날로그 메모리를 이용함으로써 빠른 학습을 가능하게 할 수 있다. 우
리는 Verilog-A를 이용하여 volatile capacitors를 둔 PRAM(Phase-change RAM)
을 구현하여 feed forward를 이용한 inference와 back propagation을 이용한
weight update를 python을 바탕으로 한 모델과 비교 검증하고, 간단한 패턴
분석을 위한 데이터와 네트워크를 만들어 학습이 진행됨을 보인다.

연구 목적
본 프로젝트는 Energy-efficiency를 높이고, real-time으로 학습이 가능한
Hardware 설계를 목표로 한다. 이를 위해 volatile capacitors를 가진 PRAM Fig8. top module for 2x2x2x1 DNN model
Weight Multiplier를 설계하고, Feed forward와 Back Propagation과정을 검증한
3. Prediction 결과
다. 나아가, DNN을 구성하여 pattern recognition모델을 만들어 실제
Predicted value python Verilog-A
Applications로의 사용 가능성을 확인한다.
0.10549281 Before train 0.10549281 0.10549281
연구 방법 0.15273573
After train 0.15536617 0.15273573
Table1. python & Verilog-A updated predicted value
1. Python을 이용하여 2x2x2x1 의 간단한 DNN을 모델링 하고, Verilog-A를 이
용하여 Fig 1의 PRAM Array를 구현하여 Feed forward과 Back propagation과정 Fig9. updated predicted value time
을 검증한다. 검은 색 path는 forward 붉은 색 path는 Back propagation을 담당

Predicted value
한다. Error모듈에서 시작하여 마지막 layer의 cell부터 첫번째 layer의 cell까 4. Pattern Analysis
지 Loss function을 출력하고, Weight Update를 점진적으로 진행한다. 학습을 위해 매우 많은 data가 사용
되고 PRAM cell은 입력 조건에 따라
forward와 backward를 결정하기 때
문에 Fig 11과 같이 Memory와
Counter를 만들고, Fig 12의 State
Machine에 따라 Data Read, Back
propagation control, Finish Check and
Address generation을 반복하며 모델
Fig10. updated predicted value, 3 label time
을 학습시킨다. 이를 통해 지속적으
로 input과 label을 넣어주고 weight
가 update되고, Fig10에서 predicted
value가 계속 바뀌는 것을 확인할 수
Fig 1. Test PRAM Array 있다.
2. Python을 이용하여 Fig 2와 같은 2x2크기의 이미지를 8가지 패턴으로 분류
하여 Labeling하고, Random Training Set과 Test Set을 만든다. 임의로 만든
Data Set을 이용하여 DNN을 학습 시킨 후, Verilog-A로 구현한 PRAM Array와
그 결과를 비교한다. 모델은 4x4x4x3 구조의 DNN으로 구성하였다.

Fig11. data storage Memory Fig12. FSM

결론
Neural-Networks를 조건에 따라 변하는 non-volatile resistor의 conductance와
volatile capacitor의 conductance를 weight로 구현하여 vertical하게 연결된 cell
Fig2. Image Pattern Fig3. pattern analysis DNN model 을 통해 weigh의 accumulation이 진행되며, horizontal하게 연결된 cell을 따라
3. Verilog를 이용하여 feed-forward와 backpropagation의 반복 과정을 효율적 pipelining방식으로 forwarding과 Back-warding이 진행된다. Python model과의
으로 제어한다. 이를 위해 state machine을 활용하여 input, control 모듈을 비교 결과 Mean-Square-Error는 0.1% 미만으로 높은 정확도를 보인다. DAC,
digital로 설계한다. Control 모듈 안에 총 4가지의 상태 Initialization, Feed- ADC 그리고 CNN 에 유리한 systolic array 등과 함께 사용되어 high accuracy 와
Forward, Error-Calculation, Back-Propagation를 구현하여 학습 연산이 시행되 energy-efficiency 를 만족하는 accelerator 로 사용 가능할 것으로 기대된다.
는 이벤트를 통해 상태를 전이한다.

참고 문헌
[1] Stefano Ambrogio, Pritish Narayanan, Hsinyu Tsai, Robert M. Shelby, Irem
Boybat, Carmelo di Nolfo, …, Geoffrey W. Burr. “Equivalent-accuracy accelerated
neural-network training using analogue memory.” Nature 558, 60-67 (2018).
[2] ROBERT HECHT-NIELSEN. “Neural Networks for Perception.” ScienceDirect
Fig4. digital controller 1992.

You might also like