KR102023095B1 - 확률적 컴퓨팅 곱셈 알고리즘을 이용한 신경망 가속 방법 및 신경망 가속기 - Google Patents

확률적 컴퓨팅 곱셈 알고리즘을 이용한 신경망 가속 방법 및 신경망 가속기 Download PDF

Info

Publication number
KR102023095B1
KR102023095B1 KR1020170059986A KR20170059986A KR102023095B1 KR 102023095 B1 KR102023095 B1 KR 102023095B1 KR 1020170059986 A KR1020170059986 A KR 1020170059986A KR 20170059986 A KR20170059986 A KR 20170059986A KR 102023095 B1 KR102023095 B1 KR 102023095B1
Authority
KR
South Korea
Prior art keywords
multiplier
present
input
stochastic
number generator
Prior art date
Application number
KR1020170059986A
Other languages
English (en)
Other versions
KR20180125283A (ko
Inventor
이종은
심현욱
Original Assignee
울산과학기술원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 울산과학기술원 filed Critical 울산과학기술원
Priority to KR1020170059986A priority Critical patent/KR102023095B1/ko
Publication of KR20180125283A publication Critical patent/KR20180125283A/ko
Application granted granted Critical
Publication of KR102023095B1 publication Critical patent/KR102023095B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)

Abstract

본 발명은 확률적 컴퓨팅 곱셈 알고리즘을 이용한 SC(Stochastic Computing) 곱셈기로서, 제1 입력(x)을 획득하여 이진수(Binary Number)를 확률수(Stochastic Number)로 변환하는 확률수 생성기(Stochastic Number Generator); 제2 입력(w)을 획득하며 0 에 도달하면 정지되는 다운 카운터(Down Counter); 상기 확률수 생성기로부터의 입력에 기초하여 x·w을 출력하는 카운터; 를 포함하고, 상기 SC 곱셈기는 상기 제2 입력(w)에 기초하여 변동 지연 시간(variable latency)을 갖는, SC 곱셈기를 제공한다.

Description

확률적 컴퓨팅 곱셈 알고리즘을 이용한 신경망 가속 방법 및 신경망 가속기{METHOD AND APPARATUS FOR NEURAL NETWORK USING STOCHASTIC COMPUTIC MULTIPLIE ALGORITHM}
본 발명은 확률적 컴퓨팅 곱셈 알고리즘을 이용한 신경망 가속 방법 및 신경망 가속기에 관한 것이다.
확률적 컴퓨팅(Stochastic computing, SC)은 랜덤 비트의 스트림(stream)에 의해 연속적인 값을 표현하는 기법에 관한 것으로서, 스트림에 대한 간단한 비트 단위 연산에 의해 복잡한 연산을 가능하게 한다. SC은 일반적으로 산술 연산에 대한 비용이 매우 낮고 저전력 구현을 가능하게 하는 장점이 존재한다. 그러나, SC 의 고유한 랜덤 변동 에러 및 긴 대기 시간은 합성곱 신경망 네트워크(Convolutional Neural Network, CNN)에 적용될 때 정확성 및 에너지 효율의 저하로 이어진다.
본 발명은 정확한 결과를 산출할 수 있고, 면적 비용이나 전력 소모량을 절감시킨 확률적 컴퓨팅 방법을 제공하는 것을 일 목적으로 한다.
본 발명의 일 실시예에 따르면, 확률적 컴퓨팅 곱셈 알고리즘을 이용한 SC(Stochastic Computing) 곱셈기로서, 제1 입력(x)을 획득하여 이진수(Binary Number)를 확률수(Stochastic Number)로 변환하는 확률수 생성기(Stochastic Number Generator); 제2 입력(w)을 획득하며 0 에 도달하면 정지되는 다운 카운터(Down Counter); 상기 확률수 생성기로부터의 입력에 기초하여 x·w을 출력하는 카운터; 를 포함하고, 상기 SC 곱셈기는 상기 제2 입력(w)에 기초하여 변동 지연 시간(variable latency)을 갖는 SC 곱셈기가 제공된다.
본 발명의 SC 곱셈기; 상기 SC 곱셈기를 벡터화 형태로 변환하는 매트릭스 벡터 곱셈기; 상기 매트릭스 벡터 곱셈기를 사용하여 컨볼루션 신경망(convolutional neural network)을 가속화하는 가속기; 를 포함하는, 신경망 가속기가 제공된다.
본 발명에 있어서, 상기 SC 곱셈기는 유니폴라 인코딩(unipolar encoding)에서 기본적으로 동작하며, 바이폴라 인코딩(bipolar encoding)으로 확장 가능할 수 있다.
본 발명에 있어서, 상기 SC 곱셈기의 카운터는 곱셈 결과를 누적할 수 있다.
본 발명에 있어서, 상기 확률수 생성기는 이는 N 비트 유한상태기계(Finite-State Machine) 및 하나의 멀티플렉서(MUX)로 이루어질 수 있다.
본 발명에 있어서, 상기 유한상태기계는 비트너비(bitwidth) N 마다 2N 개의 상태(state)를 가질 수 있다.
본 발명에 있어서, 상기 SC 곱셈기는 상기 제1 입력(x)에 대해 결정적(deterministic)일 수 있다.
본 발명에 있어서, 상기 확률수 생성기는 변환된 확률수의 비트 스트림에서 1 이 균일하게 분포되도록 설계될 수 있다.
본 발명에 있어서, 상기 확률수 생성기는 비트 병렬 처리를 지원할 수 있다.
본 발명의 일 실시예에 따르면, 확률적 컴퓨팅 곱셈 알고리즘을 이용한 신경망 가속 방법으로서, 제1 입력(x) 및 제2 입력(w)를 획득하여 확률적 컴퓨팅으로 x·w를 출력하는 SC 곱셈기를 제공하는 SC 곱셈 단계; 상기 SC 곱셈기를 벡터화 형태로 변환하는 매트릭스 벡터 곱셈 단계; 상기 매트릭스 벡터 곱셈 단계의 결과를 사용하여 컨볼루션 신경망(convolutional neural network)을 가속화하는 가속 단계; 를 포함하고, 상기 SC 곱셈기는, 상기 제1 입력(x)을 획득하여 이진수(Binary Number)를 확률수(Stochastic Number)로 변환하는 확률수 생성기(Stochastic Number Generator); 상기 제2 입력(w)을 획득하며 0 에 도달하면 정지되는 다운 카운터(Down Counter); 상기 확률수 생성기로부터의 입력에 기초하여 x·w을 출력하는 카운터; 를 포함할 수 있다.
본 발명에 있어서, 상기 SC 곱셈기는 유니폴라 인코딩(unipolar encoding)에서 기본적으로 동작하며, 바이폴라 인코딩(bipolar encoding)으로 확장 가능할 수 있다.
본 발명에 있어서, 상기 SC 곱셈기의 카운터는 곱셈 결과를 누적할 수 있다.
본 발명에 있어서, 상기 확률수 생성기는 이는 N 비트 유한상태기계(Finite-State Machine) 및 하나의 멀티플렉서(MUX)로 이루어질 수 있다.
본 발명에 있어서, 상기 유한상태기계는 비트너비(bitwidth) N 마다 2N 개의 상태(state)를 가질 수 있다.
본 발명에 있어서, 상기 SC 곱셈기는 상기 제1 입력(x)에 대해 결정적(deterministic)인, 신경망 가속기.
본 발명에 있어서, 상기 확률수 생성기는 변환된 확률수의 비트 스트림에서 1 이 균일하게 분포되도록 설계될 수 있다.
본 발명에 있어서, 상기 확률수 생성기는 비트 병렬 처리를 지원할 수 있다.
본 발명에 따른 방법을 실행하기 위한 컴퓨터 프로그램을 기록하는 컴퓨터 판독 가능한 기록 매체가 제공된다.
본 발명에 의하면, 본 발명은 오류 범위가 제한된 BISC((Binary-Interfaced Stochastic Computing) 용 저지연, 저비용 및 고정밀 SC 곱셈기와, 대기 시간이 짧은 BISC-MVM(Matrix-Vector Multiplier) 및 DCNN(deep convolutional neural network) 에의 적용을 제공할 수 있다.
도 1 은 본 발명의 일 실시예에 따른 신경망 네트워크의 프로세서의 내부 구성을 도식화한 도면이다.
도 2a 는 기존의 SC곱셈기 및 본 발명의 SC 곱셈기를 비교 설명하기 위한 도면이다.
도 2b 는 본 발명의 일 실시예에 따른 SC 곱셈기를 나타낸다.
도 3 은 본 발명의 일 실시예에 따른 확률수 생성기를 보다 상세히 설명하기 위한 도면이다.
도 4 는 본 발명의 일 실시예에 따른 BISC-MVM 을 설명하기 위한 도면이다.
도 5 는 본 발명의 일 실시예에 따른 컨볼루션 레이어를 설명하기 위한 것이다.
도 6 은 여러가지 SC 곱셈기의 오류 통계를 나타낸 것이다.
도 7 은 본 발명의 일 실시예에 따른 정확도 실험 결과를 나타낸 그래프이다.
도 8 은 본 발명의 일 실시예에 따른 MAC 배열의 비교를 나타낸다.
후술하는 본 발명에 대한 상세한 설명은, 본 발명이 실시될 수 있는 특정 실시예를 예시로서 도시하는 첨부 도면을 참조한다. 이러한 실시예는 당업자가 본 발명을 실시할 수 있기에 충분하도록 상세히 설명된다. 본 발명의 다양한 실시예는 서로 다르지만 상호 배타적일 필요는 없음이 이해되어야 한다. 예를 들어, 본 명세서에 기재되어 있는 특정 형상, 구조 및 특성은 본 발명의 정신과 범위를 벗어나지 않으면서 일 실시예로부터 다른 실시예로 변경되어 구현될 수 있다. 또한, 각각의 실시예 내의 개별 구성요소의 위치 또는 배치도 본 발명의 정신과 범위를 벗어나지 않으면서 변경될 수 있음이 이해되어야 한다. 따라서, 후술하는 상세한 설명은 한정적인 의미로서 행하여지는 것이 아니며, 본 발명의 범위는 특허청구범위의 청구항들이 청구하는 범위 및 그와 균등한 모든 범위를 포괄하는 것으로 받아들여져야 한다. 도면에서 유사한 참조부호는 여러 측면에 걸쳐서 동일하거나 유사한 구성요소를 나타낸다.
이하에서는, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있도록 하기 위하여, 본 발명의 여러 실시예에 관하여 첨부된 도면을 참조하여 상세히 설명하기로 한다.
도 1 은 본 발명의 일 실시예에 따른 신경망 네트워크의 프로세서의 내부 구성을 도식화한 도면이다.
본 발명의 일 실시예에 따른 신경망 가속기는 도 1 에 도시된 프로세서(100)에 의해 동작할 수 있으며, 프로세서(100)는 SC 곱셈기(110), 매트릭스 벡터 곱셈기(120) 및 가속기(130)를 포함하고, SC 곱셈기(110)는 확률수 생성기(111), 다운 카운터(112) 및 업-다운 카운터(113)를 포함할 수 있다.
본 발명의 프로세서(100)는 비록 도시되지 않았지만, 물리적 서버 혹은 컴퓨터에 의해 동작될 수 있으며, 본 발명의 실시예에 따른 신경망 가속 방법을 실행하는 명령을 포함할 수 있다. 이하의 명세서에서는, 프로세서(100)의 내부 구성을 중심으로 본 발명의 신경망 가속기를 설명하고자 한다.
먼저, 본 발명의 SC 곱셈기(110)는 제1 입력(x) 및 제2 입력(w)를 획득하여 확률적 컴퓨팅으로 x·w를 출력하는 SC 곱셈기를 제공한다. 다음으로, 매트릭스 벡터 곱셈기(120)는 SC 곱셈기(110)를 벡터화 형태로 변환한다. 다음으로, 가속기(130)는 매트릭스 벡터 곱셈기(120)를 사용하여 컨볼루션 신경망(convolutional neural network)을 가속화한다. 이때, SC 곱셈기(110)는, 제1 입력(x)을 획득하여 이진수(Binary Number)를 확률수(Stochastic Number)로 변환하는 확률수 생성기(Stochastic Number Generator, 111), 제2 입력(w)을 획득하며 0 에 도달하면 정지되는 다운 카운터(Down Counter, 112), 확률수 생성기로부터의 입력에 기초하여 x·w을 출력하는 카운터(113)을 포함할 수 있다.
기존 확률 컴퓨팅의 가장 큰 문제점은 계산 정확도와 계산 시간 사이의 트레이드 오프이다. 높은 정확도를 위해서는 계산 시간이 길어지고, 계산 시간이 짧아지면 계산 정확도가 낮아진다. 또 하나의 큰 문제점은 기존 이진 스킴(binary scheme)으로 되어있는 시스템과의 전환 오버헤드(conversion overhead)이다. 이를 줄이기 위해 첫 레이어와 마지막 레이어를 제외하고 전환 없이 모두 확률 컴퓨팅으로 가속하는 종래 방법이 있지만 이 역시 정확도가 현저히 낮아짐에 따라 더욱 긴 계산 시간을 필요로 한다. 즉, 확률 컴퓨팅은 에러 내성(error-tolerant)이 존재하고 저비용이라는 장점이 있음에도 불구하고 정확도가 낮고, 계산 시간이 긴 이유로 딥 러닝(Deep learning)에 적용 시, 그 장점이 크지 않았다. 본 발명은 종래 기술보다 훨씬 정확한 결과를 산출할 뿐만 아니라 면적비용이나 전력소모량을 절감시킴으로써 실시간 저비용 CNN가속에 매우 효과적으로 사용될 수 있다.
본 발명은 CNN 구성에서 가장 많은 계산 비용(Computation effort)를 필요로 하는 컨볼루션 레이어(Convolutional Layer)를 가속하기 위한 방법으로 확률적 컴퓨팅(Stochastic Computing, 이하 SC)을 적용하고자 한다. 본 발명은 SC의 고유한 랜덤 변동 에러(random fluctuation error) 및 긴 대기시간의 문제점을 해결하기 위하여, 새로운 SC 곱셈 알고리즘과 그것의 벡터 확장(vector extension)으로서 SC-MVM(Matrix-Vector Multiplier)을 제안함으로써 SC 기반의 합성곱 신경 네트워크(이하, CNN)을 제안한다. 본 발명의 SC-MVM(Matrix-Vector Multiplier)에 의하면, SC 곱셈이 단지 몇 사이클 만 소요되고, 보다 정확한 결과를 얻을 수 있으며, 종래의 SC 방법에 비해 상당히 저렴한 비용으로 실현될 수 있다.
보다 상세히, SC의 장치 신뢰성이 더 이상 보장되지 않을 때 숫자를 나타내는 것에 대한 오류를 방지할 수 있는 대체 방법을 제공한다. 동시에 곱셈과 덧셈 연산뿐만 아니라 다른 기존의 복잡한 연산의 SC 버전은 기존의 바이너리(binary) 버전에 비해 매우 낮은 비용과 낮은 전력으로 설계 할 수 있다. 결과적으로 SC는 정확한 계산이 요구되지 않는 에지 검출과 LDPC 디코딩을 포함한 몇몇 어플리케이션에 성공적으로 적용되고 있다.
또한, SC는 조기 결정 종료(Decision Termination), 저비용 및 고 에너지 효율성과 같은 고유한 이점을 보여 심-신경망 네트워크(deep neural networks, DNN)에도 적용되고 있다. 또한, SC DNN은 스파이크 혹은 펄스 기반 신경망과 퍼셉트론(perceptron) 기반 사이의 간격을 메우기 위한 방법을 제공할 수도 있다. 그러나 가장 높은 에너지 효율성을 달성하기 위한 SC DNN 에 대한 기존의 발명은 완전 병렬 아키텍처(fully-parallel architecture)를 가정하며, 목표 DNN이 완전히 지정되고 설계가 면적 예산을 충족시킬 때만 설계될 수 있다. 대형 DNN이거나 또는 타겟 DNN을 알 수 없는 경우, 중간 결과를 위해 온/오프 칩 메모리에 동시에 액세스하는 동시에 MAC(multiply accumulate) 배열 작업을 반복적으로 실행하는 데에 필수적인 보다 일반적인 아키텍처를 사용해야 한다.
그러나 상술한 종류의 아키텍처는 계산뿐만 아니라 메모리로/메모리에서 많은 양의 데이터 전송을 포함하므로 SC에서 수행되는 경우 매우 높은 오버 헤드를 발생시킨다. 이는 SC가 컴퓨팅에 효율적임에 따라 스토리지에 비효율적이기 때문이며, 근본적으로 SC는 동등한 이진수(equivalent binary number)라기 보다 기하 급수적으로 긴 확률수(stochastic number, SN) 비트 스트림 때문이다. (본 명세서에서, 이진수(binary number, BN)는 radix-2의 의미로 사용되며, 확률적 비트스트림은 radix-1 또는 단항수(unary number)이다.)
SC의 기하 급수적 오버 헤드는 모든 SC 프로세스 전후에 SN-to-BN 및 BN-to-SN 변환을 추가하는 것을 포함하는, BN 을 메모리 액세스로 사용하는 방법을 통해 극복할 수 있으며, 본 발명은 이러한 방법을 BISC (Binary-Interfaced Stochastic Computing)이라 칭한다. 측정 가능한 SC DNN의 주요 과제는 변환 오버 헤드에도 불구하고 BISC를 위한 에너지 효율성을 유지하는 방법이다. 본 발명의 일 실시예에 따르면 BISC의 큰 오버 헤드를 최소화하기 위한 일 방법은 변환 회로(conversion circuitry)를 공유하는 것이다. 그러나 변환 회로의 작은 부분만 공유하는 경우에도 SC의 정확성에 큰 영향을 줄 수 있다. SC의 정확성과 효율성 간의 기본적인 균형은 더 나은 SC 설계를 달성하기 위해 개선되어야 한다.
본 발명에서는 BISC를 위한 새로운 SC 곱셈 알고리즘을 제공하고, 이를 BISC-MVM(Matrix Vector Multiplier)이라는 벡터화 된 형태로 변환하며, 새로운 SC 곱셈 알고리즘의 DCNN(deep convolutional neural network) 적용 가능성을 설명한다. 기존의 SC와 비교할 때 본 발명의 SC 곱셈 알고리즘과 BISC-MVM 아키텍처는 SC의 효율성과 정확성을 크게 향상시킬 수 있다. 효율성은 BN-to-SN 변환에서 SC 프로세스로, 그리고 SN-to-BN으로의 변환에서 전체 계산 체인을 단순화하고 재구성함으로써 향상된다. 정리하자면, i) 본 발명의 새로운 SC 곱셈 알고리즘에 의해, 그리고 ii) 본 발명의 새로운 저차이(low-discrepancy) SNG(Stochastic Number Generator) 스킴의 사용에 의해 이전의 작업보다 정확도가 향상되었다. 기존의 SC와 대조적으로 본 발명의 벡터화 버전인 BISC-MVM은 SNG의 오버 헤드를 최소화하면서도 정확성을 저하시키지 않는다.
도 2a 는 기존의 SC곱셈기 및 본 발명의 SC 곱셈기를 비교 설명하기 위한 도면이다.
도 2a 의 (a)는 기존의 SC 곱셈을 설명하기 위한 것이다. SC에서 수(확률 론적 수 또는 SN이라고 불리는)는 비트 스트림으로 표현되며 신호의 확률 또는 빈도는 선험적으로 알려진 범위에 따라 값을 결정한다. 범위에 대한 일반적인 선택에는 unipolar(유니폴라)라고 불리는 [0,1]과 bipolar(바이폴라)라고 불리는 [-1,1]이 있다. BN-SN 변환기인 확률수 생성기(Stochastic Number Generator, SNG)는 N 비트 2 진수(BN)를 취하여 SN 비트 스트림을 생성하고, 일반적으로 N 비트 LFSR(Linear Feedback Shift Register)과 같은 난수 생성기와, 난수가 입력 BN보다 작으면 1을 생성하고 아니면 0을 반환하는 N 비트 비교기를 포함한다. AND 게이트는 입력 SN 비트 스트림이 통계적으로 서로 상관되지 않은 경우 유니폴라 인코딩을 위해 곱셈을 수행할 수 있다. XNOR 게이트는 양극성 인코딩과 동일하다. 마지막으로 비트 카운터는 유니 폴라 SN을 BN으로 변환한다. 업-다운 카운터는 바이폴라에 대해서도 동일하다.
이하에서는 본 발명의 SC-MAC(multiply accumulate) 에 대해 설명하기로 한다. 도 2a 의 (b) 는 (a) 에 도시된 w의 비트들을 재정렬한 것이다. 도 2a 의 (b)에서는, 모든 1 이 처음으로 나타나도록 한 입력 w의 비트를 재정렬한다고 가정한다. 두 개의 SN이 여전히 통계적으로 상관 관계가 없는 경우에는 AND 연산 후 결과 SN의 값에 영향을 미치지 않는다. 따라서 도 2a 의 (b)의 BN 결과는 도 2a 의 (a)의 결과와 동일할 것으로 예상된다. 다른 입력 x에 대한 SN 비트의 순서는 무작위화된 한 결과에도 영향을 미치지 않는다. w에 대한 SN 비트 스트림의 모든 0과 x에 해당하는 비트는 최종 결과에 영향을 미치지 않기 때문에, 이 비트들을 모두 건너뛸 수 있다. 상술한 방법에 의해 도 2a 의 (c)에 설명된 대체 방법을 도출할 수 있으며, 이 대체 방법은 SNG를 w·2N 사이클에만 활성화되는 비트 카운터에 직접 연결할 수 있다.
도 2a 의 (c) 에는 본 발명의 SC 곱셈기(110)가 예시되어 있다. 도 2a 의 (c) 를 참조하면, 본 발명의 SC 곱셈기(110)는 확률수 생성기(Stochastic Number Generator, SNG, 111), 다운 카운터(Down Counter, 112) 및 업-다운 카운터(Counter, 113)를 포함함을 알 수 있다. 본 발명의 SC 곱셈기(110)는 입력값에 기초하여 변동 지연 시간(variable latency)을 갖는 것을 특징으로 한다.
도 2a (c)에서 나타난 본 발명의 새로운 SC 곱셈기는 유니폴라 인코딩에서만 작동하며 BISC(Binary-Interfaced SC)와 관련이 있지만, 다음과 같은 중요한 이점이 있다. 첫째, SNG보다 훨씬 적은 다운 카운터 대신 SNG 및 AND 게이트를 제거하므로 설계가 간단하다. 둘째, 후술하는 것처럼 정확성을 잃지 않고 어레이 버전에서 일부 회로를 공유 할 수 있다. 셋째, 기존 방법에 비해 정확도를 잃지 않고 평균 대기 시간이 짧다. 넷째, 본 발명의 SC 곱셈기는 x에 대해 결정적이다. 마지막으로 본 발명의 SC 곱셈 방법은 w에 대한 무작위성이 제거되어 보다 정확한 결과를 생성할 수 있다.
도 2a 의 (c)에 나와있는 SC 곱셈은 카운터가 자연스럽게 연속 곱셈 결과를 누적하기 때문에 SC-MAC(multiply accumulate)이라고도 칭할 수 있다. 본 발명에서는 카운터는 너비가 더 넓기만 하면 된다.
도 2b 는 본 발명의 일 실시예에 따른 SC 곱셈기를 나타낸다.
도 2b 의 회로는 본 발명의 도 2a 의 (c) 의 SC 곱셈기(110) 회로를 단순화한 것으로서, 작은 값의 w를 받았을 때 x·w를 확률 컴퓨팅 기법으로 짧은 계산 시간에 높은 정확도로 계산할 수 있다.
이하에서는, 본 발명의 SC 곱셈기가 낮은 불일치 코드를 통해 정확성을 향상시키는 점을 설명한다. 도 2a 의 (c) 의 BN 출력의 정확도는 1이 SN 비트 스트림에 얼마나 균일하게 분포되어 있는지에 따라 다르므로 불일치가 적은 코드를 사용하고 있다. 낮은 불일치 코드(Low-Discrepancy Code)가 기존 기술의 SC 에서 이미 사용되었지만, 기존 기술에서 불일치 코드는 SN 연산의 정확도를 향상시키는 것으로 제한되어 있으며 SC 연산의 출력 정확도에 대한 보장은 없는 문제점이 존재하였다. 그러나 본 발명의 SN의 가치는 SC의 출력이므로, 따라서 낮은 불일치 코드를 사용하면 본 발명의 SC 곱셈기의 정확성을 직접 향상시킬 수 있다.
본 발명은 SC 곱셈기 자체의 정확성에 대한 강력한 보증을 제공할 뿐만 아니라, 본 발명의 SC 곱셈 결과는 순서가 아닌 비트 분포에만 의존하며, 이는 N 비트 FSM(Finite-State Machine)과 하나의 멀티플렉서(MUX)를 통해 간단하고 결정론적인 비트 분할 방식을 사용할 수 있도록 한다. 이는 실제로 기존의 LFSR- 비교기 기반 SNG보다 간단하다.
N 비트 분수 w ∈ [0,1) 이 주어 졌을 때 k = 2Nw 라고 하자. 도 2a 의 (c) 의 SC 곱셈에 대한 정확도 목표는 x 에 대한 SN 시퀀스 {Xi}의 부분 합 Pk가 다음의 [수학식 1] 을 만족해야 함을 나타낸다.
Figure 112017045904767-pat00001
[수학식 1]
상기 [수학식 1] 에서 x는 N 비트 BN 인 xN - 1 ... x0이므로, 하기 [수학식 2] 를 가지며, 때 참조 출력 xk 를 다음의 [수학식 2]와 같이 쓸 수 있다. 또한, xk의 근사치는 하기 [수학식 4]가 될 수 있다.
Figure 112017045904767-pat00002
[수학식 2]
Figure 112017045904767-pat00003
[수학식 3]
Figure 112017045904767-pat00004
[수학식 4]
도 3 은 본 발명의 일 실시예에 따른 확률수 생성기를 보다 상세히 설명하기 위한 도면이다.
보다 상세히, 도 3 은 본 발명의 일 실시예에 따른 FSM 을 사용하여 간단하고 명료한 낮은 불일치(low-discrepancy) 코드 생성법을 설명하기 위한 도면이다.
본 발명의 일 실시예에 따르면, 도 3 의 (a) 에서와 같이 부분 합계가 항상 근사치와 같도록 FSM-MUX 회로를 설계 할 수 있다. FSM-MUX 회로에 의해 생성된 패턴의 핵심은, N=4이고 사이클을 1부터라고 가정하면 xN -i이 사이클 2i-1에서 나타나고 그 이후에 매 2i 사이클에서 나타난다는 것이다. 비록 도 3 에서는 생략되었지만, 이 패턴으로 xN -1이 첫 번째 k 사이클 내에 나타나는 횟수가 round (k / 2i)와 동일함이 증명 될 수 있다. SC 곱셈의 이론상 최대 오차는 xk 에 대해
Figure 112017045904767-pat00005
, 또는 wx에 대해 N / 2N + 1 이다. 그러나 이 오차 범위는 엄격하지 않다. 대신, 본 발명은 후술하는 실험 결과에서 나타난 바와 같이, 경험적으로 최대 오차를 보여준다.
FSM 기반 비트 셔플링(shuffling) 아이디어는 본 발명의 새로운 SC 곱셈 알고리즘과 직각을 이루지만, 본 발명의 SC 곱셈기의 정확도 및 효율성에 있어 중요하다. 반면에 FSM 기반 비트 셔플링을 사용하면 SC-MAC 이 결정적일 수 있다. 그러나 엄격한 의미에서 LFSR 기반의 기존 SC 는 또한 결정론적이다. 본 발명의 회로는 SC의 단일 인코딩(unary encoding) 특성을 공유한다(즉, 모든 비트가 동일할 수 있다). 이는 높은 오류 복원력뿐만 아니라 효과적인 대기 시간 감소에도 중요하다. 또한 SC-MAC 의 대기 시간 감소는 점진적 정밀도를 뜻할 수 있다.
이하에서는, 본 발명의 SC 곱셈기가 부호 있는 곱셈을 지원하도록 확장되는 구성을 설명하기로 한다.
본 발명은 부호 있는(signed), 즉 SC 에서의 바이폴라(bipolar) 곱셈을 지원하도록 확장될 수 있는데, 여기서 x와 w와 출력은 2의 보수로 표현될 수 있다. 유일한 주요 변경 사항은 비트 스트림 카운터가 이제 업-다운(up-down) 카운터가되어 '1'입력에 대해 카운트 업되고 '0'에 대해 카운트 다운된다. 입력 x의 부호 비트는 부호 가중 표현으로 변환된 후 다른 입력 w의 부호 비트와 함께 플립되고 XOR 처리되며, 크기 부분은 이전과 같이 다운 카운터에 공급될 수 있다. FSM 기반 비트 스트림 생성기는 수정없이 사용할 수 있다.
이것이 어떻게 작동 하는지를 알기 위해 하기의 [표 1] 에 열거 된 x와 w의 값을 참조할 수 있다. [표 1] 의 예시에서 N, 승수 정밀도라고 부르는 부호 비트를 포함한 각 피연산자의 비트 수는 4이다. 따라서 예제는 w의 최대 / 최소 값에 대한 것이다. 본 발명의 SC 곱셈기는 N 비트 2의 보수를 출력으로 생성한다. 2번째 열은 x의 2 진 표현이다. 부호 비트 플립핑(flipping) 후에, MUX 출력은 업다운 카운터에 공급되는 w의 부호 비트와 XOR되고, w는 업-다운 카운터로 입력되고, 그 값은 곱셈 결과로서 사이클 |2N-1w|에서 읽혀진다. 마지막 열의 충분한 정밀도를 갖는 실제 곱셈 결과와 비교할 때, 매우 가깝다는 것을 알 수 있다.
Figure 112017045904767-pat00006
[표 1]
이하에서, 본 발명의 SC 곱셈기가 비트 병렬 처리를 최적화하는 방법을 설명한다. 본 발명의 SC 곱셈기의 대기 시간을 줄이기 위해, 비트 병렬 처리가 제안될 수 있다. 도 3 의 (b) 의 예를 비트 병렬 처리의 정도 b 가 4 인 것으로 가정할 때, 이 비트 스트림은 16 비트 대신 4 사이클로 처리된다. 먼저 2N 비트 시퀀스를 b 행으로 재배열하고, 2N/ b 열 행렬을 계산하고 각 열을 한 주기로 처리한다. w 를 이 곱셈의 다른 피연산자 (즉, 곱셈기) 라 하면, w ≥ b이면 현재 열에 포함된 개수가 몇 개인지 알면된다. 그렇지 않으면 최상위 비트의 수를 계산해야 한다. 그리고 w를 b만큼 감소시킨 후 다음 열에 대해이 작업을 반복한다.
(i) 열과 (ii) 서브-열의 수를 계산하는 것은 삽입된 수식(수 카운터라고 함)의 수식을 사용하여 수행할 수 있다. 그 이유를 이해하기 위해 비트의 절반은 x3이고 나머지 절반은 x2 인 점을 참조할 수 있다. 따라서 (i)의 경우, 유일한 변형은 마지막 행에 존재하며, 이는 2N/b 상태의 작은 FSM을 사용하여 쉽게 제공 할 수 있다. ()의 경우, 칼럼에 있는 것들의 수에 w를 곱할 필요가 있고, 이를 위해 상술한 낮은 불일치 코드를 통한 정확성 향상에서 유도된 근사 공식을 사용한다. 따라서 비트-병렬 계산 결과는 비트-직렬 결과와 정확하게 동일할 수 있다.
증가하는 비트-병렬 처리는 하드웨어 오버 헤드를 희생시키면서 멀티 플라이어 대기 시간을 줄일 수 있다. 따라서 비트-병렬 처리의 정도는 신중하게 선택되어야 한다.
이하에서는, 본 발명의 메트릭스 벡터 (BISC-MVM, 120) 및 가속기(SC-CNN 가속기, 130)에 대해 설명하기로 한다. 먼저, BISC-MVM 는 상술한 SC 곱셈기의 벡터화일 수 있다.
도 4 는 본 발명의 일 실시예에 따른 BISC-MVM 을 설명하기 위한 도면이다.
도 4 의 (a)는 N 비트 승수 정밀도의 p 병렬 SC-MAC을 포함하는 BISC-MVM 을 나타내고 있다. 각각의 SC-MAC은 너비가 N+A 비트인 mux 및 업-다운 (up-down) 카운터를 필요로 한다. (추가 비트는 축적을 위해 사용된다) 모든 멀티플렉서는 동일한 제어 입력을 공유하므로, 동일한 FSM을 사용한다. BISC-MVM 의 경우처럼 다른 피연산자 w가 모두에게 공통적인 경우 다운 카운터를 공유할 수 있다. 본 발명의 SC 곱셈기 배열은 | 2N-1w | 의 사이클에 있는 하나의 스칼라 벡터 곱
Figure 112017045904767-pat00007
을 수행 할 수 있다. 또한 그것은
Figure 112017045904767-pat00008
와 wi의 시퀀스를 공급함으로써 축적
Figure 112017045904767-pat00009
을 추가적인 하드웨어 없이 계산하는 데 사용될 수 있다. 그 후 주기
Figure 112017045904767-pat00010
에서 업-다운 카운터 배열에서 누적 결과를 읽을 수 있다.
 수학적으로 이는 도 4 의 (b) 형태의 행렬-벡터 곱셈이다. 본 발명의 BISC-MVM 에는 다음과 같은 기능이 존재한다.
· 모든 SC 곱셈기는 다운 카운터와 FSM을 공유하지만 이는 정확도 저하를 일으키지 않는다는 점에서 이는 기존 SC와는 차이점이 존재한다.
· w를 공유함으로써, 모든 SC 곱셈이 동시에 완성되므로 BISC-MVM이 단일 SC 곱셈기의 대기 시간 감소 기능을 유지할 수 있다.
BISC-MVM의 높은 정확도는 다음에 기인한다. 첫번째로, 본 발명의 SC 곱셈기 자체가 매우 정확하다. 둘째, 업다운 카운터가 충분히 넓으면 축적으로 인한 오류가 발생하지 않는다. 셋째, FSM 및 다운 카운터를 공유해도 오류가 발생하지 않는다. 동시에, 특정 리소스를 공유하면 BISC-MVM이 SC 곱셈기보다 비용 효율성이 향상된다.
본 발명의 BISC-MVM의 한가지 잠재적인 단점은 도 4 의 (b) 의 형태의 특정 행렬 - 벡터 곱셈이 신경망 레이어가 일반적으로 수학적으로 설명되는 방식이 아닐 수 있다는 것이다.
다음으로, 본 발명의 BISC-MVM을 사용하여 DCNN을 가속화하는 방법을 설명한다.
도 5 는 본 발명의 일 실시예에 따른 컨볼루션 레이어를 설명하기 위한 것이다.
도 5 는 3 개의 루프(loop) 레벨에 따른 타일링된(tiled) 컨볼루션(convolution) 레이어를 나타내는 것이며, 어레이 A, B, 및 W 는 각각 입력 피처 맵(feature amp), 출력 피처 맵 및 가중치 파라미터를 나타내고, S 는 스트라이드(stride)이다. 컨볼루션 레이어의 계산은 일반적으로 MAC 연산의 6-깊이 루프(6-deep nested loop)로 표시된다. 루프 네스트(loop nest)를 위한 가속기를 설계하는 다른 방법이 존재하지만, 출력 특성 맵(M), 출력 너비(C) 및 출력 높이(R)을 포함하여 세 차원을 따라 가속화함으로써 우수한 성능을 달성 할 수 있다. 이는 도 5 에 도시된 바와 같이 루프를 타일링(tiling)하는 것과 동일하며, 여기서 3 개의 가장 안쪽의 루프는 하드웨어 가속기에 의해 완전히 풀린 상태 (즉, 동시에)로 실행된다.
이 가속기는 모든 TRTC MAC 이 r 또는 c에 의존하지 않는 동일한 가중치 파라미터 W[m][z][i][j]를 사용하는 MAC 유닛의 TMTRTC 번호를 필요로하다. 따라서 BISC-MVM은 이러한 종류의 아키텍처에 적합하며 p=TRTC 및 d=K2Z 로 구성 할 수 있으며 하기와 같은 [수학식 5]에서 매 t 사이클마다 p 출력 피처 맵 값을 생성할 수 있다.
Figure 112017045904767-pat00011
[수학식 5]
기존의 SC(각 곱셈에 2N 사이클을 요구하는)와 비교할 때 실제 대기 시간 감소는 가중치 매개 변수의 값에 따라 다르다. 그러나 컨볼루션 층을 포함하는 전형적인 신경 네트워크 층에서의 가중치 파라미터 값은 평균(절대 값)이 최대 값보다 훨씬 작은 종 모양의 형태로 분포되어 있다는 사실은 잘 알려져 있다. 이는 DCNN 가속화를 위한 BISC-MVM의 적합성을 강화하는 실험에서 입증된 바와 같이 상당한 대기 시간 감소를 가져올 수 있다.
이하에서는, SC-CNN 가속기 아키텍처에 대해 설명한다. 본 발명의 SC-CNN 가속기 구조는 기존의 CNN 가속기와 유사하게 디자인될 수 있다. 사실, 중첩 된 루프에 대해 동일한 병렬화 체계를 사용하기 때문에 특히 기존 CNN 가속기의 최상위 아키텍처와 차이가 없어야 하다. 입력/출력/가중치 버퍼의 온칩 메모리 크기조차 정확히 동일하므로 바이너리 구현과의 비교가 더 신뢰할 수 있어야 한다. 이전 연구에서와 같이 본 발명은 DCNN 계산의 90 ~ 99 %를 차지하는 컨볼루션 레이어만을 대상으로 하며 다른 레이어의 구현 방법에 대한 제한은 없다.
이하에서는, CNN 가속기의 관점에서, 본 발명의 SC를 기존 MAC 배열에서 대부분의 계산이 이루어지는 고정 소수점 바이너리(short-handed binary) 및 기존 SC 와 비교한 결과를 이하에서 설명한다.
먼저, 본 발명의 SC- 곱셈 알고리즘의 정확도 분석 결과를 설명한다. 기존의 SC는 SNG에 따라 (1) LFSR과 비교기, (2) Halton(A. Alaghi et al., "Fast and accurate computation using stochastic circuits," in DATE '14, 2014, pp. 76:1-76:4.), 그리고 (3) ED(Even-Distributionbased Low-Discrepancy Code)(K. Kim et al., "An energy-efficient random number generator for stochastic circuits," in ASP-DAC '16, Jan 2016, pp. 256-261) 이 있으며, 서로 다른 특징을 가지고 있다. 정확도를 평가하기 위해 소프트웨어에서 다양한 SC 곱셈 알고리즘을 시뮬레이션하고 5 및 10 비트 고정 소수점 이진수에서 모든 입력 조합을 테스트하였다.
도 6 은 여러가지 SC 곱셈기의 오류 통계를 나타낸 것이다.
보다 상세히, 도 6 은 반올림하지 않고(따라서 2 배의 정확도를 나타내는) 고정 소수점 곱하기 결과와의 차이로 정의되는 오류 통계를 나타낸다. 그래프는 사이클 2x 에서 에러의 실행 통계를 보여준다. 여기서 x는 x 좌표 값이다(본 발명에서, 사이클은 |w|/25-x 또는 |w|/210- x 이다.). 따라서 비트 스트림 끝의 통계뿐만 아니라 출력이 얼마나 빨리 수렴되는지 보여준다. ED 는 주기당 32 비트를 생성하기 때문에 10 비트의 경우에만 적용된다. 본 발명의 비트-병렬 버전 및 벡터 버전(즉, BISC-MVM)은 SC 배율과 동일한 출력을 생성하는 속도가 빠르다.
도 6 의 그래프는 일반적인 SC 방법들 중에서 Halton 방법이 가장 정확하고 빠르게 수렴함을 나타낸다. 그러나, 본 발명은 항상 Halton 보다 오류가 1/3 정도 적은 에러를 가진다. 또한 도 6 은 본 발명의 최대 절대 오차를 보여 주며, 이는 본 발명은 LFSR 에 의존하지 않기 때문에 쉽게 계산 될 수 있다. 본 발명의 최대 오차는 Halton의 오차의 표준 편차와 대략 일치하며, 이는 본 발명의 높은 정확성을 명확하게 보여준다. 마지막으로 평균 그래프는 본 발명의 바이어스가 0 임을 나타낸다.
다음으로, 본 발명의 SC-CNN의 인식 정확도 실험 결과를 설명한다. 본 발명의 SC 기반 CNN의 인식 성능을 평가하기 위해 Caffe 프레임 워크(Y. Jia et al., "Caffe: Convolutional architecture for fast feature embedding,"arXiv preprint arXiv:1408.5093, 2014.) 를 사용하는데, 여기서 컨볼루션 레이어는 고정 소수점과 SC를 위해 확장된다. 실험을 위해, MNIST와 CIFAR-10 데이터 세트를 위해 2 개의 CNN을 사용하여 (1) 고정 소수점 바이너리, (2) LFSR을 기반으로하는 기존 SC 및 (3) 제안 된 SC를 비교한다. 실험을 위해, Caffe 배포판에 포함된 네트워크 정의 및 교육 매개 변수를 사용하다. CIFAR-10 net의 경우 컨볼루션 전후의 입력 특성 맵을 128로 스케일링하여 값이 대부분 [-1,1] 범위가 되도록 한다. 실험을 위해, 누적 값 (A = 2)을 위해 2 비트를 추가하여 배수 정밀도 (N)를 5에서 10으로 변경한다. 실험을 위해, 포화 누산기/업다운 카운터를 사용한다. 이진 경우에 대해 곱셈 결과는 누적되기 전에 잘릴 수 있다.
도 7 은 본 발명의 일 실시예에 따른 정확도 실험 결과를 나타낸 그래프이다.
보다 상세히, 도 7 은 x 축이 부호 피트를 포함하는 곱셈 정확도일 때 MNIST, CIFAR-10 인식 정확도를 나타낸다. 도 7 의 상단 그래프는 MNIST net의 테스트 정확도를 보여준다. 왼쪽은 원래 유출 지점망(floating-point net) 훈련으로 얻은 가중치 파라미터를 사용할 때의 정확도이다. 오른쪽은 10,000 번의 반복 작업을 수행하는 원래의 교육 과정에서 5,000 번의 반복 (동일한 학습 속도)을 위한 미세 조정 이후이다. 미세 조정 중에 고정점 또는 SC 기반 컨볼루션이 순방향 통과에서 사용된다.
도 7 의 그래프는 이하의 점을 보여줄 수 있다. 첫 번째로, 고정 소수점 바이너리는 매우 우수한 인식 성능을 보여 주며, 미세 조율이 이루어 졌는지에 따라 MNIST에 5 비트 또는 7 비트 정밀도로 충분할 것으로 보인다. 둘째, 미세 조정없이 기존의 LFSR 기반 SC는 정밀도가 훨씬 낮을 수 있지만, 미세 튜닝은 대부분의 정확도 손실을 복구할 수 있다. 세 번째, 동일한 정밀도 설정에서 SCCNN은 고정 소수점 바이너리와 거의 동일한 정확도를 달성한다. 이것은 중요하지만, MNIST는 비교적 쉽고 이전 연구에서도 비슷한 결과가 얻어졌다.
본 발명은 CIFAR-10 로 비슷한 실험을 실행하는데, 그 결과는 도 7 의 (c) 및 (d)에 요약되어 있다. 다시 여러 가지 방법에 걸쳐 동일한 정밀도 설정을 사용한다. 고정 소수점의 경우 부동 소수점 인식 속도를 얻으려면 미세 조정 없이 9 ~ 10 비트 정밀도 또는 미세 조정이 필요한 8 ~ 9 비트 정밀도가 필요하다. 반면에, 기존의 LFSR 기반 SC는 미세 조정을 하더라도 성능이 매우 떨어지는 반면 제안된 SC는 이진 성능과 거의 동일한 성능을 보여준다. 특히, SC-CNN이 9-10 비트의 미세 조정 없이도 근단(near-fixed-point) 기록 성능을 달성할 수 있다는 사실은 BISC-MVM의 높은 정확성을 나타낸다. 그러나 재교육을 하지 않고도 SC 배율기의 작은 오차는 7 ~ 8 비트에서 성능 차이를 만든다. 그럼에도 불구하고 재교육을 통해 성공적으로 채워지므로 본 발명의 SC-CNN 을 정확도의 관점에서 고정 소수점 버전과 구별할 수 없게 한다.
다음으로, 본 발명의 SC-CNN의 구현 효율성의 실험 결과를 설명한다. 구현 효율성(implementation efficiency)을 평가하기 위해, 본 발명의 (i) BISC-MVM, (ii) LFSR 기반 SC 및 (iii) 고정 소수점 바이너리를 기반으로 Verilog RTL에서 MAC 어레이를 설계하고, 이를 Synopsys Design Compiler vD- 2010 년 3 월 TSMC 45nm 기술과 합성하였다. 세 가지 경우는 크기(256MAC), 입력/출력 데이터 표현(2의 보수) 및 승수/누산기 정밀도를 포함하여 가능한 많이 공통 설정을 사용하도록 설계되었다. 구체적으로 승수 정밀도 N은 MNIST의 경우 5 비트로 설정되고 CIFAR-10의 경우 8-9 비트로 변경된다. 누산기는 포화 상태이고 A는 이전처럼 2 비트이다. 세 가지 경우 모두 1GHz의 동일한 클록 주파수로 합성된다.
SC 경우에는 SNG 공유가 활성화된다. 특히, 종래의 SC 경우에서, 가중치 파라미터에 대한 SNG는 MAC 어레이 내의 모든 SC-MAC에 걸쳐 공유된다. 마찬가지로 BISC-MVM의 경우 FSM과 다운 카운터가 모든 SC-MAC에서 공유된다.
도 8 은 본 발명의 일 실시예에 따른 MAC 배열의 비교를 나타낸다.
보다 상세히, 도 8 은 구현 효율성 평가의 결과를 나타내고 있으며 이는 CIFAR-10 실험을 위한 비트 병렬 처리 옵션과 8 비트의 병렬 처리를 포함한다.
1) Area-Delay Product : 예상대로 SC 디자인은 바이너리보다 작은 영역을 필요로하며 본 발명의 방식(특히 비트율 버전)이 가장 작다. 또한 정밀도가 높을수록 SC와 이진 간의 영역 차이가 더 커지며 이는 정밀도와 이진수 배수 복잡성 간의 이차 관계 때문이다. 또한, 영역 차이가 SC와 바이너리 간의 대기 시간 차이만큼 높지 않다. 이것은 하기 [표 2]의 영역 분석으로 확인된 바와 같이 BN에서 SN까지의 큰 전환 오버 헤드와 뒤에서 발생하기 때문이다.
Figure 112017045904767-pat00012
[표 2]
[표 2]는 5 비트와 9 비트의 두 배율 (MP) 설정에 대한 단일 MAC의 상세한 영역 분석을 보여준다. 우리는 CNN 레벨 비교에 포함되지 않은 많은 다른 디자인을 추가하지만, 이 숫자는 영역에만 해당되며 다른 디자인을 비교할 때 대기 시간을 고려해야 한다. 예를 들어, 9 비트 정밀도 설정에 대해서만 평가된 ED 케이스는 사이클 당 32 비트를 생성하는 32 비트 XNOR 게이트와 병렬 카운터 (열 7)를 필요로 하는 비트 병렬 SNG를 사용하며 동시에 대기 시간을 32 배 단축할 수 있다. 유사하게 본 발명의 SC-MAC은 비트 직렬 버전의 경우에도 기존 SC에 비해 매우 낮은 대기 시간을 가진다 (도 8 참조).
[표 2] 에서 다음과 같은 관찰을 할 수 있다. 첫째, ED는 비용면에서 매우 효율적이다. ED 는 기존의 SC 방법 중에서 가장 낮은 면적 지연 제품(ADP, area-delay product)을 가지고 있다. 그러나 ED는 곱셈 정확도 측면에서 가장 낮은 품질을 가지고 있다 (도 6 (c) 참조). 둘째, Halton은 매우 높은 정확도를 가지지 만 처리량 당 가장 높은 영역을 가지고 있다. 셋째, 이전의 연구는 작업 정확도와 ADP 가 트레이드 오프 관계인 반면, 본 발명은 동시에 두 가지를 향상시킬 수 있다. 본 발명의 평균 지연 시간은 데이터에 따라 다르지만 도 7 에 나타난 바와 같이 매우 작다. 특히 비트 직렬 버전은 CIFAR-10에 대해 최대 7.7 사이클의 대기 시간을 갖지만 비트 병렬 버전에 의해 효과적으로 억제된다. 넷째, 9 비트 정밀도 설정에서 본 발명의 SC-MAC에 대한 비트 병렬 처리를 높이면 총 영역이 조금씩 증가한다. 그러나 8 비트 병렬 처리는 이미 평균 대기 시간이 매우 낮으므로 ADP가 가장 낮다(그래프에 표시되지 않음). 마지막으로 바이너리의 경우와 달리 FSM과 다운 카운터의 공유로 인해 벡터화될 때 본 발명의 기법은 비용면에서 효율적이다. 이것은 [표 2]에서보다 도 8 의 제안된 디자인 사이의 바이너리와 본 발명의 디자인 간의 더 큰 차이를 설명하는 데 도움이 된다.
요약하면 본 발명의 BISC-MVM은 평균 MAC 대기 시간이 매우 낮기 때문에 같은 정확도의 고정 소수점 이진 설계에 비해 29 ~ 44 % 더 낮은 ADP를 달성 할 수 있다.
2) 전력 및 에너지 효율 : 모든 설계에 동일한 클록 주파수를 사용하기 때문에, 합성 도구에 의해 보고된 전력 손실은 한 가지 예외를 제외하고 면적 결과에 크게 비례하다. 본 출원인은 LFSR의 면적당 전력 소모량이 비정상적으로 많아 기존 SC 사례의 전력 효율성에 부정적인 영향을 미친다는 사실을 발견했다. 결과적으로 기존의 SC 사례는 대기 시간이 길다는 것을 고려하기 전에 바이너리의 경우와 마찬가지로 높은 전력 소모를 나타낸다. 물론 기존 SC의 약점은 대부분 SN과 BN 간의 변환 오버 헤드 때문이며 궁극적으로는 BISC를 목표로 삼고 있기 때문에 이러한 오버 헤드를 제외하면 완전히 병렬 아키텍처와 관련이 있다.
본 발명의 SC-CNN은 전력 소비가 가장 적고 대기 시간이 매우 짧기 때문에 MAC 어레이에서 약 40 배(MNIST의 경우) 및 300 배 ~ 490 배(CIFAR-10의 경우)만큼 기존 SC보다 에너지 효율이 높다. 같은 시간이 더 정확하다. 본 발명의 솔루션은 CIFAR-10의 경우 23 %에서 29 %로 약간 더 에너지 효율적이다. 이 비교는 동적 에너지-품질 트레이드 오프 (dynamic energy-quality tradeoff)와 오류 허용 오차(error tolerance)와 같은 SC의 고유한 이점을 고려하지 않은 것이다. 변동성과 소음이 증가할 것으로 예상되는 향후 응용의 경우 SC의 장점이 더 클 수 있다.
3) 이전 DNN 가속기와의 비교 : 하기의 [표 3]은 이전의 신경망 가속기와의 간단한 비교를 제공한다. 목표 신경망 네트워크를 포함한 많은 다른 측면으로 인해, 1 MAC 을 2 연산으로 비교하여, GOPS 에서의 성능을 비교한다. SC의 (긴) 대기 시간은 GOPS를 계산할 때 고려된다. SNG는 ArXiv'15를 제외한 면적 및 전력 계산에 포함된다. 또한 첫 번째 두 경우 (MWSCAS'12 및 ISSCC'15)는 면적 및 전력을 지배해야하는 대형 온 - 칩 버퍼를 포함하기 때문에 나머지와 직접 비교할 수 없다는 점에 유의해야 한다.
Figure 112017045904767-pat00013
[표 3]
기존의 SC 설계와 비교할 때 본 발명은 영역 효율은 훨씬 높지만 더 많은 전력을 소비한다. 그러나 이전 연구는 완전한 병렬 아키텍처였으므로 최고의 에너지 효율을 가질 수 있다. 대신, 본 발명은 이전 기술에서는 제공할 수 없는 확장성이 존재한다. 다른 기술과 비교할 때, 본 발명의 아키텍처는 가장 높은 영역 효율을 갖는 것 외에도 에너지 효율이 더 크다.
SC와 유사한 개념을 기반으로하는 DNN뿐만 아니라 영역/전력 수치 (정확도에 집중하거나 FPGAs를 타겟팅하는)를 제공하지 않는 최근의 SC 기반 DNN 이 존재한다. 특히 XNOR-Net은 학습 트릭을 통해 유동 소수점 네트워크(floating-point network)와 동일한 인식 정확도가 XNOR 계산을 통해서만 달성 될 수 있음을 보여준다. 이러한 훈련 방법은 본 발명과 직각을 이루며 일반적으로 SC-CNN의 경우를 보강 할 수 있다.
본 발명은 입/출력이 일반적인 바이너리 형식으로 표현되어야 하는 바이너리 인터페이스 SC에 대해 매우 정확하고 지연 시간이 적으며 비용 효율적인 SC 곱셈 알고리즘과 벡터 버전인 BISC-MVM을 제공한다. 이진 인터페이스 SC는 확장 가능한 아키텍처에 필수적일 뿐만 아니라 SC 기반 CNN 가속기와 평범한 이진 구성 요소를 쉽게 비교할 수 있다. 본 발명은 하기의 점에서 SC-CNN에 대한 이전 연구와 구별된다. 첫째, 본 발명의 SC-CNN 아키텍처는 BISC를 목표로 하므로 CNN의 하이퍼 파라미터(hyper-parameters)의 제조 후 변경에 있어보다 유연하다. 두 번째로, SC-CNNs는 CIFAR-10과 같은 벤치 마크에서 고정 소수점 구현과 동일한 인식 정확도를 기본적으로 갖지만 동시에 에너지 소비는 적음을 보여준다. 셋째, 본 발명의 BISC를 목표로하는 공격적 최적화가 SC-MAC에서 SNG와 SC 프로세스 간의 경계를 흐리게 만들었으나, 단일 인코딩(unary encoding)은 매우 효율적인 작업(즉, 평균 대기 시간 낮음)을 실현하는 데 핵심적이다.
정리하면, 본 발명에서는 제안된 구성을 이용하여 Verilog RTL에서 제안 된 BISC-MVM을 구현 및 평가했으며, MNIST 및 CIFAR10 데이터 세트 용으로 설계된 DCNN을 사용하여 본 발명의 정확성을 평가했다. 본 발명을 이용한 실험 결과는 CNN 가속화를 위해 본 발명의 SC 계산 기법이 계산 어레이에서 기존의 SC보다 40 ~ 490 배 더 에너지가 높고 더 정확한 결과를 생성하며 비트 폭 최적화된 알고리즘보다 더 낮은 영역 지연 곱 및 에너지를 얻을 수 있음을 보여준다. 즉, 본 발명은 오류 범위가 제한된 BISC 용 저지연, 저비용 및 고정밀 SC 곱셈기와, 대기 시간이 짧은 BISC-MVM 및 DCNN 에의 적용을 제공할 수 있다.
본 발명에서 설명하는 특정 실행들은 일 실시 예들로서, 어떠한 방법으로도 본 발명의 범위를 한정하는 것은 아니다. 명세서의 간결함을 위하여, 종래 전자적인 구성들, 제어 시스템들, 소프트웨어, 상기 시스템들의 다른 기능적인 측면들의 기재는 생략될 수 있다. 또한, 도면에 도시된 구성 요소들 간의 선들의 연결 또는 연결 부재들은 기능적인 연결 및/또는 물리적 또는 회로적 연결들을 예시적으로 나타낸 것으로서, 실제 장치에서는 대체 가능하거나 추가의 다양한 기능적인 연결, 물리적인 연결, 또는 회로 연결들로서 나타내어질 수 있다. 또한, “필수적인”, “중요하게” 등과 같이 구체적인 언급이 없다면 본 발명의 적용을 위하여 반드시 필요한 구성 요소가 아닐 수 있다.
본 발명의 명세서(특히 특허청구범위에서)에서 “상기”의 용어 및 이와 유사한 지시 용어의 사용은 단수 및 복수 모두에 해당하는 것일 수 있다. 또한, 본 발명에서 범위(range)를 기재한 경우 상기 범위에 속하는 개별적인 값을 적용한 발명을 포함하는 것으로서(이에 반하는 기재가 없다면), 발명의 상세한 설명에 상기 범위를 구성하는 각 개별적인 값을 기재한 것과 같다. 마지막으로, 본 발명에 따른 방법을 구성하는 단계들에 대하여 명백하게 순서를 기재하거나 반하는 기재가 없다면, 상기 단계들은 적당한 순서로 행해질 수 있다. 반드시 상기 단계들의 기재 순서에 따라 본 발명이 한정되는 것은 아니다. 본 발명에서 모든 예들 또는 예시적인 용어(예들 들어, 등등)의 사용은 단순히 본 발명을 상세히 설명하기 위한 것으로서 특허청구범위에 의해 한정되지 않는 이상 상기 예들 또는 예시적인 용어로 인해 본 발명의 범위가 한정되는 것은 아니다. 또한, 당업자는 다양한 수정, 조합 및 변경이 부가된 특허청구범위 또는 그 균등물의 범주 내에서 설계 조건 및 팩터에 따라 구성될 수 있음을 알 수 있다.
이상 설명된 본 발명에 따른 실시예는 다양한 컴퓨터 구성요소를 통하여 실행될 수 있는 프로그램 명령어의 형태로 구현되어 컴퓨터 판독 가능한 기록 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능한 기록 매체는 프로그램 명령어, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 컴퓨터 판독 가능한 기록 매체에 기록되는 프로그램 명령어는 본 발명을 위하여 특별히 설계되고 구성된 것이거나 컴퓨터 소프트웨어 분야의 당업자에게 공지되어 사용 가능한 것일 수 있다. 컴퓨터 판독 가능한 기록 매체의 예에는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM 및 DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical medium), 및 ROM, RAM, 플래시 메모리 등과 같은, 프로그램 명령어를 저장하고 실행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령어의 예에는, 컴파일러에 의하여 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용하여 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드도 포함된다. 하드웨어 장치는 본 발명에 따른 처리를 수행하기 위하여 하나 이상의 소프트웨어 모듈로 변경될 수 있으며, 그 역도 마찬가지이다.
이상에서 본 발명이 구체적인 구성요소 등과 같은 특정 사항과 한정된 실시예 및 도면에 의하여 설명되었으나, 이는 본 발명의 보다 전반적인 이해를 돕기 위하여 제공된 것일 뿐, 본 발명이 상기 실시예에 한정되는 것은 아니며, 본 발명이 속하는 기술분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정과 변경을 꾀할 수 있다.
따라서, 본 발명의 사상은 상기 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등한 또는 이로부터 등가적으로 변경된 모든 범위는 본 발명의 사상의 범주에 속한다고 할 것이다.

Claims (18)

  1. 확률적 컴퓨팅 곱셈 알고리즘을 이용한 SC(Stochastic Computing) 곱셈기로서,
    제1 입력(x)을 획득하여 이진수(Binary Number)를 확률수(Stochastic Number)로 변환하는 확률수 생성기(Stochastic Number Generator);
    제2 입력(w)을 이진수 형태로 획득하며 0 에 도달하면 연산완료 신호를 출력하는 다운 카운터(Down Counter);
    상기 다운 카운터의 연산완료 신호 전까지 상기 확률수 생성기의 출력을 입력받고, 상기 다운 카운터의 연산완료 신호에 이진수인 x·w을 출력하는 카운터;
    를 포함하고,
    상기 SC 곱셈기는 상기 제2 입력(w)에 기초하여 변동 지연 시간(variable latency)을 갖는, SC 곱셈기.
  2. 제 1 항의 SC 곱셈기;
    상기 SC 곱셈기를 벡터 형태의 구조로 배열하여 생성되는 매트릭스 벡터 곱셈기;
    상기 매트릭스 벡터 곱셈기를 사용하여 컨볼루션 신경망(convolutional neural network)의 평균 연산 시간을 경감하는 가속기;
    를 포함하는, 신경망 가속기.
  3. 제 1 항에 있어서,
    상기 SC 곱셈기는 유니폴라 인코딩(unipolar encoding)에서 기본적으로 동작하며, 바이폴라 인코딩(bipolar encoding)으로 확장 가능한, SC 곱셈기.
  4. 제 1 항에 있어서,
    상기 SC 곱셈기의 카운터는 x·w를 출력하거나 연속된 곱셈 결과들을 누적하여 출력하는, SC 곱셈기.
  5. 제 1 항에 있어서,
    상기 확률수 생성기는 이는 N 비트 유한상태기계(Finite-State Machine) 및 하나의 멀티플렉서(MUX)로 이루어지는, SC 곱셈기.
  6. 제 5 항에 있어서,
    상기 유한상태기계는 비트너비(bitwidth) N 마다 2N 개의 상태(state)를 가지는, SC 곱셈기.
  7. 제 1 항에 있어서,
    상기 SC 곱셈기는 상기 제1 입력(x)에 대해 결정적(deterministic)인, SC 곱셈기.
  8. 제 1 항에 있어서,
    상기 확률수 생성기는 변환된 확률수의 비트 스트림에서 1 이 균일하게 분포되도록 설계되는, SC 곱셈기.
  9. 제 1 항에 있어서,
    상기 확률수 생성기는 비트 병렬 처리를 지원하는, SC 곱셈기.
  10. 확률적 컴퓨팅 곱셈 알고리즘을 이용한 신경망 가속기에 의해 수행되는 신경망 가속 방법으로서,
    SC 곱셈기를 이용하여 제1 입력(x) 및 제2 입력(w)를 획득하여 확률적 컴퓨팅으로 x·w를 출력하는 SC 곱셈 단계;
    상기 SC 곱셈기를 벡터 형태의 구조로 배열하여 매트릭스 벡터 곱셈기를 생성하는 매트릭스 벡터 곱셈 단계;
    상기 매트릭스 벡터 곱셈기를 사용하여 컨볼루션 신경망(convolutional neural network)의 평균 연산 시간을 경감하는 가속 단계;
    를 포함하고,
    상기 SC 곱셈기는,
    상기 제1 입력(x)을 획득하여 이진수(Binary Number)를 확률수(Stochastic Number)로 변환하는 확률수 생성기(Stochastic Number Generator);
    상기 제2 입력(w)을 이진수 형태로 획득하며 0 에 도달하면 연산완료 신호를 출력하는 다운 카운터(Down Counter);
    상기 다운 카운터의 연산완료 신호 전까지 상기 확률수 생성기의 출력을 입력받고, 상기 다운 카운터의 연산완료 신호에 이진수인 x·w을 출력하는 카운터;
    를 포함하는, 신경망 가속 방법.
  11. 제 10 항에 있어서,
    상기 SC 곱셈기는 유니폴라 인코딩(unipolar encoding)에서 기본적으로 동작하며, 바이폴라 인코딩(bipolar encoding)으로 확장 가능한, 신경망 가속 방법.
  12. 제 10 항에 있어서,
    상기 SC 곱셈기의 카운터는 x·w를 출력하거나 연속된 곱셈 결과들을 누적하여 출력하는, 신경망 가속 방법.
  13. 제 10 항에 있어서,
    상기 확률수 생성기는 이는 N 비트 유한상태기계(Finite-State Machine) 및 하나의 멀티플렉서(MUX)로 이루어지는, 신경망 가속 방법.
  14. 제 13 항에 있어서,
    상기 유한상태기계는 비트너비(bitwidth) N 마다 2N 개의 상태(state)를 가지는, 신경망 가속 방법.
  15. 제 10 항에 있어서,
    상기 SC 곱셈기는 상기 제1 입력(x)에 대해 결정적(deterministic)인, 신경망 가속 방법.
  16. 제 10 항에 있어서,
    상기 확률수 생성기는 변환된 확률수의 비트 스트림에서 1 이 균일하게 분포되도록 설계되는, 신경망 가속 방법.
  17. 제 10 항에 있어서,
    상기 확률수 생성기는 비트 병렬 처리를 지원하는, 신경망 가속 방법.
  18. 제10항 내지 제16항 중 어느 한 항에 따른 방법을 실행하기 위한 컴퓨터 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체.
KR1020170059986A 2017-05-15 2017-05-15 확률적 컴퓨팅 곱셈 알고리즘을 이용한 신경망 가속 방법 및 신경망 가속기 KR102023095B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170059986A KR102023095B1 (ko) 2017-05-15 2017-05-15 확률적 컴퓨팅 곱셈 알고리즘을 이용한 신경망 가속 방법 및 신경망 가속기

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170059986A KR102023095B1 (ko) 2017-05-15 2017-05-15 확률적 컴퓨팅 곱셈 알고리즘을 이용한 신경망 가속 방법 및 신경망 가속기

Publications (2)

Publication Number Publication Date
KR20180125283A KR20180125283A (ko) 2018-11-23
KR102023095B1 true KR102023095B1 (ko) 2019-09-19

Family

ID=64565586

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170059986A KR102023095B1 (ko) 2017-05-15 2017-05-15 확률적 컴퓨팅 곱셈 알고리즘을 이용한 신경망 가속 방법 및 신경망 가속기

Country Status (1)

Country Link
KR (1) KR102023095B1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102263694B1 (ko) 2019-04-26 2021-06-10 울산과학기술원 확률컴퓨팅 회로의 정확도를 높이기 위한 장치
US11531893B2 (en) 2019-06-03 2022-12-20 Samsung Electronics Co., Ltd. Method and apparatus with neural network parameter quantization
KR102414582B1 (ko) * 2020-04-29 2022-06-28 한국항공대학교산학협력단 신경망 모델의 추론 속도 향상 장치 및 방법
KR20220010362A (ko) 2020-07-17 2022-01-25 삼성전자주식회사 뉴럴 네트워크 장치 및 그의 동작 방법

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Ren, Ao, et al. Sc-dcnn: Highly-scalable deep convolutional neural network using stochastic computing. ASPLOS 2017. ACM. 2017.4.12.
Sim, Hyeonuk, et al. Scalable stochastic-computing accelerator for convolutional neural networks. 2017 22nd Asia and South Pacific Design Automation Conference (ASP-DAC). IEEE, 2017.1.19.

Also Published As

Publication number Publication date
KR20180125283A (ko) 2018-11-23

Similar Documents

Publication Publication Date Title
Sim et al. A new stochastic computing multiplier with application to deep convolutional neural networks
KR102023095B1 (ko) 확률적 컴퓨팅 곱셈 알고리즘을 이용한 신경망 가속 방법 및 신경망 가속기
Kim et al. Dynamic energy-accuracy trade-off using stochastic computing in deep neural networks
US11429692B2 (en) Processing matrix vector multiplication
Sim et al. Scalable stochastic-computing accelerator for convolutional neural networks
Moss et al. A two-speed, radix-4, serial–parallel multiplier
US10379816B2 (en) Data accumulation apparatus and method, and digital signal processing device
Hojabr et al. SkippyNN: An embedded stochastic-computing accelerator for convolutional neural networks
Sim et al. Cost-effective stochastic MAC circuits for deep neural networks
Maor et al. An FPGA implementation of stochastic computing-based LSTM
CN107967132B (zh) 一种用于神经网络处理器的加法器和乘法器
Kyriakos et al. High performance accelerator for cnn applications
Wang et al. Randomness meets feedback: Stochastic implementation of logistic map dynamical system
Abed et al. High‐performance low‐power approximate Wallace tree multiplier
Miao et al. A parallel stochastic computing system with improved accuracy
Liu et al. Stochastic dividers for low latency neural networks
Neugebauer et al. On the limits of stochastic computing
Chen et al. Hybrid stochastic-binary computing for low-latency and high-precision inference of CNNs
Nobari et al. FPGA-based implementation of deep neural network using stochastic computing
Amin-Nejad et al. Floating point versus fixed point tradeoffs in FPGA Implementations of QR Decomposition Algorithm
Alaghi et al. Accuracy and correlation in stochastic computing
Braun et al. Algorithm-based fault tolerance for many-core architectures
Yuan et al. Vlsi architectures for the restricted boltzmann machine
Lin et al. Cascading deep pipelines to achieve high throughput in numerical reduction operations
Zhao et al. OverQ: Opportunistic Outlier Quantization for Neural Network Accelerators

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right