오늘은 맑음

LOA(Lower-part Or Approximation adders) 본문

Processor

LOA(Lower-part Or Approximation adders)

자전거 타는 구구 2020. 9. 4. 15:06
반응형

Mahdiani, Hamid Reza, et al. "Bio-inspired imprecise computational blocks for efficient VLSI implementation of soft-computing applications." IEEE Transactions on Circuits and Systems I: Regular Papers 57.4 (2009): 850-862.

 

2010년에 나온 논문이며 딥 러닝 가속기 관련 논문입니다.

내용이 재밌어서 소개해드립니다.

 

일반적으로 딥 러닝 가속기는 곱셈과 덧셈 연산을 반복합니다.

Convolution layer나 FC layer 과정에서 많은 연산 결과를 더해서 다음 층의 입력값으로 사용합니다.

하지만 딥 러닝 가속기에서 그 많은 데이터를 한번에 연산해서 더하는건 쉽지 않습니다.

그래서 부분 합(partial sum)을 여러번 구해서 이들을 다시 더하는 연산방식을 반복합니다.

이러한 부분 합들을 더하려면 여러가지 방법이 있지만 그 중 adder tree를 사용하는 방법과 관련된 논문입니다.

딥 러닝 알고리즘은 fault tolerance라고 해서 약간의 오차는 허용하는 성격이 있습니다.

 

쉽게 예를 들어 전체 확률이 100인 네트워크에서 숫자를 판별한다고 하겠습니다.

여기서 판별된 결과가 100%로 1이라고 하거나 80%, 60%, 51%로 1이라고 하더라도 전체가 100이므로 결과값은 1이 됩니다. 그러면 맞췄다고 볼 수 있겠죠?

 

물론 51%는 예시이므로 중요한 어플리케이션에서 그러면 안되겠지만 가능하다는 것입니다.

 

그래서 위의 논문에서 설명하는 LOA를 보게 되면 덧셈기를 만들 때 m-bit 덧셈기가 있을 때 일부 n-bit는 전가산기가 아닌 or-gate로 대체합니다.

 

만약 adder tree가 많이 사용되거나 사용하는 데이터의 정밀도가 높은경우에는 많은 이득을 볼 수 있을 거라고 생각합니다.

 

8-bit precision에서의 LeNet5 결과

 

위의 그래프는 LeNet5에서 mnist 데이터셋을 가지고 테스트 한 결과입니다.

8-bit의 입력 데이터와 5-bit의 가중치를 사용했으며 python tensorflow환경에서 테스트해봤습니다.

n=3까지는 전혀 차이가 없지만 실제로 n=4부터 차이가 나기 시작합니다.

n=6부터는 90%미만으로 떨어집니다.

지금은 사용 데이터의 정밀도가 낮아서 저렇게 됬지만 정밀도가 높은 경우 더욱 많은 full adder를 or-gate로 대체할 수 있을거라고 생각합니다

반응형

'Processor' 카테고리의 다른 글

AXI BUS 신호  (0) 2021.04.03
프로세서 설계 시 고려해야 할 점  (0) 2020.11.05
CISC와 RISC의 차이점  (0) 2020.07.14
Vivado power analysis  (0) 2020.07.10
분주기/prescaler verilog  (0) 2019.06.11
Comments