KR102627800B1 - 바이너리 뉴럴 네트워크 제어 방법 및 바이너리 뉴럴 네트워크 장치 - Google Patents

바이너리 뉴럴 네트워크 제어 방법 및 바이너리 뉴럴 네트워크 장치 Download PDF

Info

Publication number
KR102627800B1
KR102627800B1 KR1020210060745A KR20210060745A KR102627800B1 KR 102627800 B1 KR102627800 B1 KR 102627800B1 KR 1020210060745 A KR1020210060745 A KR 1020210060745A KR 20210060745 A KR20210060745 A KR 20210060745A KR 102627800 B1 KR102627800 B1 KR 102627800B1
Authority
KR
South Korea
Prior art keywords
ether
neural network
stage
mode
binary neural
Prior art date
Application number
KR1020210060745A
Other languages
English (en)
Other versions
KR20220153311A (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 KR1020210060745A priority Critical patent/KR102627800B1/ko
Publication of KR20220153311A publication Critical patent/KR20220153311A/ko
Application granted granted Critical
Publication of KR102627800B1 publication Critical patent/KR102627800B1/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
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/527Multiplying only in serial-parallel fashion, i.e. one operand being entered serially and the other in parallel
    • G06F7/5272Multiplying only in serial-parallel fashion, i.e. one operand being entered serially and the other in parallel with row wise addition of partial products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • 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

Landscapes

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

Abstract

본 발명은 바이너리 뉴럴 네트워크 제어 방법 및 재구성가능한 컬럼 에디션 구조(Reconfigurable column addtion structure)를 가진 바이너리 뉴럴 네트워크 장치에 관한 것으로, 상기 제어 방법은 각 IA(Input Activation) 및 가중치 페어에 대해 빗와이즈 곱셈 (bitwise multiplication) 연산을 수행하여 부분곱(partial product)들을 생성하는 제1 단계; N개의 스테이지로 배치된 복수의 에더 트리에서 각 스테이지에 배치된 상기 부분곱들을 임의로 그룹화하여 각 그룹을 각 스테이지의 에더 트리에 입력하며, 이때 상기 N ≥ 2 이며, N은 정수인 제2 단계; 및 상기 에더 트리에서 컬럼 에디션(Column Addition)을 수행하며, 상기 에더 트리 중 M 개 스테이지를 통과하여 상기 에더 트리의 중간 출력 값을 추출하거나, 또는 상기 에더 트리를 모두 통과하여 최종 N 번째 스테이지에서 상기 에더 트리의 최종 출력 값을 추출하여 복수의 출력 값을 획득하며, 이때 상기 M은 N>M≥1이며, M은 정수인 제3 단계;를 포함할 수 있다.

Description

바이너리 뉴럴 네트워크 제어 방법 및 바이너리 뉴럴 네트워크 장치{BINARY NEURAL NETWORK CONTROL METHOD AND BINARY NEURAL NETWORK DEVICE}
본 발명은 빠른 연산을 수행하기 위한 바이너리 뉴럴 네트워크 제어 방법 및 바이너리 뉴럴 네트워크 장치에 관한 것이다.
도 1에 도시된 바와 같이, 종래의 바이너리 뉴럴 네트워크(Binary Neural Network, BNN)는 효율적인 연산 수행을 위해 컬럼 에디션(Column addition)을 적용한 하드웨어를 이용하여, 빗와이즈 곱셈(bitwise muliplication)을 수행하고 상기 빗와이즈 곱셈 연산 결과들(부분곱, partial products)을 한꺼번에 합산하여 어큐뮬레이션하는 이너 프로덕트(Inner product) 연산을 수행하였다.
도 1(a)에 도시된 바와 같이, 종래의 컬럼 에디션은 복수의 스테이지를 갖도록 전가산기(full adder)가 배치되며, 첫 번째 스테이지에 배치된 전가산기(full adder)에 입력값을 넣고 출력된 연산 결과를 다시 다음 스테이지의 전가산기에 입력하는 과정을 반복하여 최종 출력 값을 출력할 수 있다.
따라서, 종래의 BNN은 컬럼 에디션을 적용한 기존 하드웨어를 이용하여 0 또는 1의 바이너리 입력을 받아 연산을 수행하며, 도 1(b)에 도시된 바와 같이, BNN 연산을 수행할 때, 컨벌루션 뉴럴 네트워크(CNN)에서와 같이 합성곱을 이용하여 연산을 수행하는 것이 아니라, 곱셈을 대체하는 XNOR 또는 AND 게이트들을 포함하는 빗와이즈 곱셈기(Bitwise multiplier)(1)를 이용하여 연산을 수행하고, 또한 연산 결과 출력된 0 또는 1을 리덕션(2)을 통해 합산하는 팝 카운트(POP COUNT)를 수행함으로써 간단한 연산을 통해 연산 효율을 상승시킬 수 있었다.
즉, BNN은 가중치 래치 RF(Weight Latch RF)에 가중치 전부를 배치하고 IA와 함께 빗와이즈 곱셈기(1)에 입력하며, 빗와이즈 곱셈 결과인 부분곱들(partial products)을 리덕션(2)을 통해 한꺼번에 합산함으로써 하나의 OA(Output Activation)를 출력할 수 있고, XNOR 또는 AND 게이트들을 이용하여 곱셈 연산에서는 거의 시간 소모가 없는 대신 리덕션(2)을 이용한 팝 카운트 수행에서 소모되는 시간이 곧 전체 시간 소모로 이어지게 된다.
그러나, BNN 연산은 바이너리 입력을 이용하여 연산을 수행하는데, 일반 이미지를 입력할 경우 첫 번째 레이어와 마지막 레이어에서는 컬러 이미지의 복수 비트를 바이너리로 표현할 수 없다. 따라서 BNN을 기존 하드웨어에 적용하였을 때, 예를 들어, 이미지의 IA 및 가중치가 8 비트일 경우, 8 비트와 8 비트를 XNOR 또는 AND 게이트 연산하기 위하여 1비트씩 64번 연산을 수행하는 방식(빗 시리얼 곱셈 연산방식)으로 레이어를 처리하여야 했다.
즉, 상기 구조에서 도 1(b)에 도시된 BNN은 한번에 하나의 OA만 출력할 수 있는 바, 멀티 비트를 가진 이미지에 대해 BNN 연산을 수행하기 위하여 도 1(b)에 도시된 연산을 64번 반복 수행해야 하는 것이다.
따라서, 멀티 비트를 처리해야 할 경우, BNN은 64번의 연산을 수행하여 어큐뮬레이터(3)에 저장하고, 모든 연산을 완료해야지만 시프트(4)를 통해 부분 연산 결과를 합산하여 최종 OA를 출력할 수 있었다.
다만, CNN에서 첫 번째 레이어, 즉 인풋 이미지는 채널 사이즈가 나머지 레이어들에 비해 매우 작은 편이다. 구체적으로, 첫 번째 레이어의 필터사이즈는 RGB 세 가지 색깔을 나타내기 위해 보통 X*Y*3, 예를 들어, 11*11*3 또는 3*3*3 또는 7*7*3으로 되어 있으며, 즉, 채널 사이즈가 3이 된다. 이는 출력될 아웃풋 이미지도 동일하며, 반면 중간 레이어들은 채널 사이즈가 매우 크다.
따라서, 필터 사이즈가 작아서, 도 2에 도시된 바와 같이 XNOR 또는 AND 게이트를 포함하는 빗와이즈 곱셈기(1)와 1024개의 리덕션(2)을 연산에 사용할 때, 예를 들어 필터 사이즈가 11*11*3이면 빗와이즈 곱셈기(1)와 리덕션(2) 각각 1024개 중에서 363개 밖에 연산에 사용할 수 없어 곱셈기(1) 및 리덕션(2)을 거의 사용할 수 없는 바, 사용되는 연산기(10)가 미사용되는 연산기(11)보다 훨씬 적어 이용률(UTILIZATION)이 매우 떨어지게 된다.
즉, 복수의 레이어에서 수행되는 연산 중에서 첫 번째 레이어의 연산 수가 적을지라도, 한 번에 하나의 OA만 출력할 수 있는 기존 하드웨어에서의 BNN 연산에서는, 연산에 사용될 빗와이즈 곱셈기(1)를 거의 쓸 수 없어 첫 번째 레이어의 연산에서 많은 시간과 비용을 소모하게 되며, 더하여, 첫번째 레이어의 인풋 이미지는 바이너리가 아니어서 1 빗 곱셈을 여러 번 수행해야 하는 바 더 많은 시간이 필요하게 되어서 문제가 더 심각해지게 된다.
따라서, 연산 수는 가장 적은 첫 번째 레이어의 연산 비중이 전체 연산 비중에서 도미넌트되지만, 종래의 하드웨어에서는 리덕션(2)을 통해 나온 결과 값을 모두 더해야 최종 OA를 도출할 수 있어 첫 번째 레이어 또는 마지막 레이어에서의 심각한 효율 저하를 해결할 수 없었다.
CMOS VLSI Design A Circuits and Systems Perspective, Weste, Neil / Harris, David Money Knag, Phil C., et al. "A 617-TOPS/W All-Digital Binary Neural Network Accelerator in 10-nm FinFET CMOS." IEEE Journal of Solid-State Circuits, April 2021.
상술한 문제점을 해결하기 위하여, 본 발명은 1 빗(bit) 합산을 수행하는 모드와 복수의 하이 빗(high-bit) 합산을 수행하는 모드를 동시에 수행하도록 하여 빠른 연산을 수행하는 바이너리 뉴럴 네트워크 제어 방법 및 바이너리 뉴럴 네트워크 장치를 제공하고자 한다.
본 발명의 일 실시예에 따른 바이너리 뉴럴 네트워크 제어 방법은 각 IA(Input Activation) 및 가중치 페어에 대해 빗와이즈 곱셈 (bitwise multiplication) 연산을 수행하여 부분곱(partial product)들을 생성하는 제1 단계, N개의 스테이지로 배치된 복수의 에더 트리에서 각 스테이지에 배치된 상기 부분곱들을 임의로 그룹화하여 각 그룹을 각 스테이지의 에더 트리에 입력하며, 이때 상기 N ≥ 2 이며, N은 정수인 제2 단계; 및 상기 에더 트리에서 컬럼 에디션(Column Addition) 연산을 수행하며, 상기 에더 트리 중 M 개 스테이지를 통과하여 상기 에더 트리의 중간 출력 값을 추출하거나, 또는 상기 에더 트리를 모두 통과하여 최종 N 번째 스테이지에서 상기 에더 트리의 최종 출력 값을 추출하여 복수의 출력 값을 획득하며, 이때 상기 M은 N>M≥1이며, M은 정수인 제3 단계;를 포함할 수 있다.
본 발명의 일 실시예에 따르면, 상기 제2 단계는 각 스테이지에 배치된 상기 부분곱들을 임의로 그룹화할 때, 동일한 스테이지에 배치된 부분곱들을 n개씩 묶어 그룹화 가능한 최대 개수로 그룹화할 수 있다. 이때 상기 n은 n≤3 이며, n은 양의 정수이다.
또한, 본 발명의 일 실시예에 따르면, 상기 제3 단계에서 N 개의 스테이지 중 랜덤으로 선택된 연속된 M개의 스테이지를 묶으며, 묶인 M개 스테이지를 통과하여 상기 에더 트리로부터 출력된 복수의 중간 출력 값을 저장할 수 있다.
이때, 상기 제1 단계에서 IA 또는 가중치는 CNN(Convolution Neural Network)의 첫 번째 레이어 또는 마지막 레이어이거나, 또는 멀티 비트 데이터일 수 있으며,
상기 M 개는 네트워크로부터 미리 설정된 값일 수 있다.
더하여, 본 발명의 일 실시에에 따른 바이너리 뉴럴 네트워크 제어 방법은 상기 제3 단계에서 획득한 중간 출력 값을 모두 합산하여 OA(Output Activation)를 획득하는 제4 단계를 더 포함할 수 있다.
본 발명의 일 실시예에 따른 바이너리 뉴럴 네트워크 장치는, 상술한 바이너리 뉴럴 네트워크 제어 방법을 수행하는 프로세서를 포함할 수 있으며, 이를 통해 재구성가능한 컬럼 에디션 구조(Reconfigurable column addtion structure)를 가질 수 있다.
또한, 본 발명의 일 실시예에 따르면 CNN 연산을 수행할 때 첫 번째와 마지막 레이어를 제외한 중간 레이어의 IA 또는 가중치에 대해 바이너리 연산을 수행하도록 1 클럭 사이클을 생성하고, CNN 연산을 수행할 때 첫 번째 또는 마지막 레이어의 IA 또는 가중치에 대해 빗 시리얼 곱셈 연산을 수행하도록 멀티 클럭 사이클을 생성하는 클럭 신호부를 포함할 수 있다.
한편, 컴퓨터에 상술한 실시예에 따른 바이너리 뉴럴 네트워크 제어 방법을 실행시키는 컴퓨터 프로그램을 저장하는 컴퓨터 판독 가능한 저장 매체를 제공할 수 있다.
본 발명의 일 실시예에 따르면, 전체 스테이지를 통과하는 1 빗(bit) 합산(addition)뿐만 아니라 중간 스테이지에서 여러 개의 하이 비트 합산이 동시에 가능하여 BNN 연산을 수행할 때 1 빗 연산을 수행하는 중간 레이어들뿐만 아니라 첫 번째 레이어를 연산할 때도 높은 MAC 활용도를 유지할 수 있어 첫 번째 또는 마지막 레이어에서의 성능 저하를 방지하고, BNN 연산 효율을 향상시킬 수 있다.
도 1은 종래의 컬럼 에디션 구조 및 종래의 BNN 연산 하드웨어 구조를 간략하게 도시한 것이다.
도 2는 종래의 BNN 연산 하드웨어에서 입력 이미지의 첫 번째 레이어를 처리하는 개념도를 도시한 것이다.
도 3은 본 발명의 일 실시예에 따른 바이너리 뉴럴 네트워크 제어 방법의 플로우 차트를 도시한 것이다.
도 4는 본 발명의 일 실시예에 따른 바이너리 뉴럴 네트워크 장치의 재구성가능한 컬럼 에디션 모듈을 간략하게 도시한 것이다.
도 5는 본 발명의 일 실시예에 따른 바이너리 뉴럴 네트워크 장치에서 수행되는 바이너리 뉴럴 네트워크 제어 방법의 모드 1 및 모드 2 개념도를 간략하게 도시한 것이다.
이하에서, 각 단계의 시간적 선후는 나열한 순서에 국한되지 않으며, 각 단계의 시간적 순서를 통상의 기술자에게 자명한 정도로 대체, 변경, 생략 가능하다.
도 3은 본 발명의 일 실시예에 따른 바이너리 뉴럴 네트워크 제어 방법의 플로우 차트를 도시한 것이며, 도 4는 도 3의 제어 방법이 수행되는 재구성가능한 컬럼 에디션 모듈을 간략하게 도시한 것이다.
도 3에 도시된 바와 같이, 본 발명의 일 실시예에 따른 바이너리 뉴럴 네트워크 제어 방법은 각 IA(Input Activation) 및 가중치 페어에 대해 빗와이즈 곱셈 (bitwise multiplication) 연산을 수행하여 부분곱(partial product)들을 생성하는 단계(S310), N개의 스테이지로 배치된 복수의 에더 트리에서 각 스테이지에 배치된 상기 부분곱(partial product)들을 임의로 그룹화하여 각 그룹을 각 스테이지의 에더 트리에 입력하며, 이때 상기 N ≥ 2 이며, N은 정수인 단계(S320) 및 상기 에더 트리에서 컬럼 에디션(Column Addition) 연산을 수행하며, 상기 에더 트리 중 M 개 스테이지를 통과하여 상기 에더 트리의 중간 출력 값을 추출하거나, 또는 상기 에더 트리를 모두 통과하여 최종 N 번째 스테이지에서 상기 에더 트리의 최종 출력 값을 추출하여 복수의 출력 값을 획득하며, 이때 상기 M은 N>M≥1이며, M은 정수인 단계(S330)를 포함할 수 있다.
S310에서, 입력된 이미지 등의 입력 데이터에서 IA(Input Activation) 및 가중치를 짝지어 빗와이즈 곱셈 연산을 수행할 수 있다.
예를 들면, IA가 입력되는 인풋 버스와 가중치가 저장된 가중치 래치 RF에서 추출된 각 IA 및 가중치를 XOR 게이트 또는 AND 게이트에 입력하여 XNOR/AND 게이트 연산을 수행하는 빗와이즈 곱셈(bitwise multiplication)을 수행할 수 있다.
S320에서, N개의 스테이지로 배치된 복수의 에더 트리는, 스테이지 0, 스테이지 1, ..., 스테이지 N-1 이 배치된 전가산기(full adder) 또는 반가산기(half adder)일 수 있다. 도 1(a)에 도시된 바와 같이, 각 가중치 또는 IA 페어에 대한 빗와이즈 곱셈 결과인 부분곱(partial product)들을 각 에더(adder)에 입력하여 출력한 값을, 다시 다음 스테이지의 각 에더에 입력하여 출력하는 과정을 반복할 때, 상기 부분곱들을 입력하여 출력하는 에더(전가산기 또는 반가산기)를 하나의 스테이지라고 할 수 있다. N 개의 스테이지는, 가중치 또는 IA를 입력 받아 출력하는 과정을 N 번 반복한다는 의미이다.
또한, S320에서, 각 에더 트리에 입력될 부분곱들을 그룹화할 수 있다.
본 발명의 일 실시예에 따르면, 각 스테이지에 배치된 부분곱들을 임의로 그룹화할 때, 동일한 스테이지에 배치된 부분곱들을 n개씩 묶어 그룹화 가능한 최대 개수로 그룹화할 수 있다. 이때 상기 n은 n≤3 이며, n은 양의 정수이다. 그룹화 가능한 최대 개수로 그룹화한다는 것은, 예를 들어, 12개의 부분곱을 3개씩 묶어 그룹화할 때 총 4개의 그룹을 생성한다는 의미이다.
구체적으로 예를 들면, 각 에더 트리에 배치된 에더가 전가산기(Full adder)일 경우, 총 3 개의 입력을 받을 수 있는 바, n=3으로 하여, 3개씩 부분곱들을 묶고, 전가산기에 입력할 수 있다.
또는, 각 에더 트리에 배치된 에더가 반가산기(half adder)일 경우, 총 2 개의 입력을 받을 수 있는 바, n=2로 하여, 2개씩 부분곱들을 묶고 반가산기에 입력할 수 있다.
즉, 에더 트리에 배치된 에더의 종류에 따라 n을 다르게 하여 부분곱들과 같은 입력을 그룹화할 수 있다.
더하여, 본 발명의 일 실시예에 따르면, N은 네트워크로부터 미리 설정된 값을 수 있으며, 또는 사용자로부터 입력 받은 값일 수 있다. 부분곱들을 묶는 n의 값에 따라 입력을 n개씩 묶고 최종적으로 하나의 OA(Output Activation)를 출력 받을 수 있도록 N의 값을 설정할 수 있다.
즉, 예를 들면, 9개의 부분곱이 존재할 때 최종적으로 redundant와 output을 획득하기 위해서 4개의 스테이지가 필요한 바, N=4로 설정할 수 있다.
한편, S330에서, 컬럼 에디션 방식으로 연산을 수행하는 에더 트리는, 전체 스테이지를 통과하여 최종 OA를 출력하는 모드 1과, 일부 스테이지만 통과하여 중간 결과 값을 출력하는 모드 2를 포함할 수 있다.
구체적으로, 도 4에 도시된 바와 같이, 재구성가능한 컬럼 에디션 모듈(100)은 각 에더를 스테이지 0, 스테이지 1, ..., 스테이지 N-1로 분류할 수 있다. 이때, 모드 1에서만 입력 값이 통과하는 스테이지(110)와 모드 1 및 모드 2에서 입력 값이 통과하는 스테이지(120)를 포함할 수 있다.
일 실시예로서, 모드 1에서는 스테이지 0, 스테이지 1, ..., 스테이지 N-1 로 N개 스테이지의 에더를 전부 통과하여 OA를 출력할 수 있다. 이때, 상기 OA는 최종 OA 값으로 1 비트 합산 결과 값(1 bit addition result)이다.
모드 1의 경우, CNN에서 중간 레이어를 입력 받는 경우에 BNN에서 수행될 수 있으며, BNN이 바이너리 입력으로 연산을 수행하여 1 비트 덧셈 연산 결과 값(1 bit addition MAC result)을 도출할 수 있다. 이 때 에더트리에 입력되는 모든 부분곱들은 반드시 전부 함께 더해져 1개의 OA(Output Activation) 값으로 출력된다.
또한, 모드 2에서, 부분곱들은 N개 스테이지(110) 중 일부인 스테이지 K, ..., 스테이지 L의 재구성가능한(reconfigurable) 에더트리를 통과하며, 여러 개의 OA로 나뉘어 출력된다. 이 때, 재구성가능한 에더트리란 모드 1에서 부분곱들을 전부 함께 더하는 하나의 큰 에더트리가 여러 개의 에더트리로 쪼개져 각각 분산되어 여러 개의 리덕션이 수행되도록 모드를 변경한 것을 의미한다. 에더트리 중 일부가 나누어져 분산되어 리덕션을 수행하게 되는 바 복수의 OA를 획득할 수 있다. 즉, 빗시리얼(bit-serial) 방법으로 여러 클럭 사이클(clock cycle)에 걸쳐 이 과정을 반복하여 멀티비트(multi-bit) 즉 복수의 하이비트(High-bit) 덧셈 연산 결과 값(multiple high-bit addition MAC result)를 갖는 복수의 OA들을 출력할 수 있다. 즉, 전체 스테이지에 배치된 에더 트리를 통해 1 bit addition을 수행하는 모드 1뿐 아니라, 연속으로 배치된 스테이지 일부에 배치된 에더 트리를 통해 추출된 부분합을 이용하여 여러 개의 high-bit addition을 수행하는 모드 2가 동시에 가능하도록 로직을 구현하는 것이다.
BNN 본래의 1 빗 에디션(1 bit addition)을 모드 1을 통해 수행하거나(그 결과, 1 개의 OA 생성)하면서, 또는 하이 빗 에디션(high bit addition)을 모드 2를 통해 수행할 수 있어(그 결과, 여러 개의 OA 생성), 복수의 비트 또는 작은 필터 사이즈를 가진 IA 또는 가중치를 입력 받더라도 빗와이즈 곱셈기(1) 및 리덕션(2)의 활용률을 높여 동시에 다른 비트의 연산을 각자 수행할 수 있게 된다.
따라서, 이때, S310에서 입력되는 인풋 데이터의 IA 또는 가중치는 CNN(Convolution Neural Network)의 첫 번째 레이어 또는 마지막 레이어이거나, 또는 멀티 비트 데이터일 수 있다.
즉, S310에서 입력된 IA 또는 가중치가 갖는 필터 사이즈가 작은 상황 및 이로 인한 빗와이즈 곱셈기(1) 및 리덕션(2)의 에더 트리의 활용률이 멀티빗에서 심각히 감소하는 상황에서 기존 BNN 연산을 위한 모드 1 대신에 모드 2를 수행하여 에더트리 및 스테이지를 쪼개고 미사용되는 빗와이즈 곱셈기(1)와 리덕션(2)를 동시에 사용할 수 있어 필터의 작은 채널 사이즈를 보완하고 MAC 활용도를 높일 수 있다.
따라서, 채널 사이즈가 작아 한꺼번에 연산을 수행할 수 없는 경우, 모드 2를 활용하여 스테이지를 쪼개고 상기 일부 스테이지에서 추출한 중간 OA 값을 활용하여 MAC 활용도를 높게 유지하고 멀티 빗 연산 부담을 낮출 수 있다.
또한, 본 발명의 일 실시예에 따르면, 상기 M 개는 네트워크로부터 미리 설정된 값일 수 있다.
몇 개의 스테이지를 묶을지 사전에 네트워크로부터 미리 설정하거나 사용자로부터 입력 받을 수 있다. 몇 개의 스테이지를 그룹화할 지는 기설정될 수 있으나 어떤 스테이지를 묶을지는 랜덤으로 결정할 수 있다.
더하여, 도 2에 도시된 바와 같이, 본 발명의 일 실시에에 따른 바이너리 뉴럴 네트워크 제어 방법은 상기 S330에서 획득한 중간 출력 값을 모두 합산하여 OA를 획득하는 S340을 더 포함할 수 있다.
도 5는 본 발명의 일 실시예에 따른 바이너리 뉴럴 네트워크 장치에서 수행되는 바이너리 뉴럴 네트워크 제어 방법의 모드 1 및 모드 2 개념도를 간략하게 도시한 것이다.
상술한 모드 1 및 모드 2의 재구성가능한 컬럼 에디션 모듈(100)을 도 5에서 구체적으로 설명하기로 한다.
도 5에 도시된 바와 같이, 재구성가능한 컬럼 에디션 모듈(100) 내에 스테이지 0부터 스테이지 N-1개까지 총 N개의 스테이지가 있을 수 있으며, 예를 들어, N=5일 경우, 스테이지 0, 스테이지 1, 스테이지 2, 스테이지 3, 스테이지 4 로 에더가 배치될 수 있다.
하나의 에더에 부분곱을 입력하는 개수가 n이라고 하면, 도 5의 경우, 일 실시예로서 전가산기로 구성된 에더 트리이며, n=3이고, 예를 들어, 27 개의 1 비트 입력이 존재할 때, 9 개의 에더에 3개씩 입력할 수 있다.
따라서, 가중치 또는 IA를 이진법으로 표현하였을 때 같은 비트 포지션을 가지는 위치에 있는 부분곱들을 3개씩 묶어 스테이지 별로 계산해야 할 값을 줄여나갈 수 있으며, 도 5에 도시된 바와 같이, 같은 비트 포지션에 있는 부분곱들을 에더 트리에 입력하면 하나의 에더에서는 같은 비트 포지션을 가지는 출력 값과, 한 단계 높은 비트 포지션을 가지는 출력 값을 얻을 수 있다.
따라서, 하나의 에더 당 두 개의 출력 값을 출력하여, 다음 단계인 스테이지 1에서는, 각 에더에서 출력된 두 개의 출력 값들을 다시 3개씩 묶을 수 있으며, 이를 총 6 개의 에더 각각에 입력할 수 있다
또한, 스테이지 1의 에더를 통과하여 각각 두 개의 출력 값을 출력할 수 있으며, 스테이지 2에서는 상기 두 개의 출력 값들을 다시 3개씩 묶어 총 4 개의 에더 각각에 입력을 할 수 있고, 이를 스테이지 3 및 스테이지 4에서 반복하여 수행하여 6 개의 1 비트를 출력할 수 있다. 이는 모드 1을 수행할 때의 출력 값이다.
한편, 모드 2를 수행할 경우, 본 발명의 일 실시예에 따르면, 상기 S320에서 N 개의 스테이지 중 랜덤으로 선택된 연속된 M개의 스테이지를 묶으며, 묶인 M개 스테이지를 통과하여 상기 에더 트리로부터 출력된 복수의 중간 출력 값을 저장할 수 있다.
즉, 상기 에더 트리 중 M 개 스테이지를 통과하여 상기 에더 트리의 중간 출력 값을 추출할 때, N 개의 스테이지 중 연속된 스테이지 일부를 M 개씩 랜덤으로 묶으며, 묶인 스테이지로부터 출력된 복수의 중간 출력 값을 저장할 수 있다.
도 5에 도시된 바와 같이, 일 실시예로서 M=2이며, 랜덤으로 스테이지 2 및 스테이지 3을 선택하여 스테이지 2 및 스테이지 3을 통과하여 추출되는 멀티 비트의 중간 출력 값을 획득할 수 있다.
모드 2 에서는, 스테이지 1에서 획득한 멀티 비트의 부분곱들을 스테이지 2의 에더에 입력하여 출력함으로써, 4 비트의 중간 출력 값 3 개를 획득할 수 있다.
따라서, 모드 2를 통하여 멀티 비트를 연산할 수 있으며, 복수의 아웃풋을 획득할 수 있다.
즉, 모드 1 만을 사용할 경우, 리덕션(2)을 일부밖에 쓸 수 없으며, 1024X리덕션일 경우, 각 1024개를 모두 더해서 하나의 아웃풋으로 가게끔 하드웨어가 구성될 수밖에 없다.
그러나, 모드 2를 사용할 경우, 1024개의 리덕션(2) 중 일부를 여러 개로 쪼개서 여러 어큐뮬레이터(3)로 가게 만들면, 각 채널의 복수의 멀티비트 가중치 또는 IA에 대한 부분곱 연산을 나눠서 동시에 수행하도록 할 수 있다. 즉, 바이너리 입력에서 모든 리덕션(2)을 통과한 출력 값을 한꺼번에 더하는 모드 1뿐만 아니라, 리덕션(2)을 쪼개서 각자 더하는 모드 2까지 수행하도록 한다.
상술한 바이너리 뉴럴 네트워크 제어 방법은, 부분곱들을 n개씩 묶기 위한 전가산기 또는 반가산기를 배치하고, 모드 1 또는 모드 2를 수행하도록 구성된 재구성가능한 컬럼에디션 구조는 멀티플렉서(multiplexer)들을 배치한 하드웨어 구조에서 수행될 수 있으며, 이를 통해 빠른 BNN 연산을 수행하는 하드웨어에 제공될 수 있다.
즉, 본 발명의 일 실시예에 따른 바이너리 뉴럴 네트워크 장치는, 상술한 바이너리 뉴럴 네트워크 제어 방법을 수행하는 프로세서를 포함할 수 있으며, 이를 통해 재구성가능한 컬럼 에디션 구조(Reconfigurable column addtion structure)를 가질 수 있다.
본 발명의 일 실시예에 따르면, 모드 2를 수행할 수 있어 M 개의 스테이지를 선택하여 별도로 복수의 아웃풋을 획득하도록 재구성가능하며, 상기 M개의 스테이지 선택을 랜덤으로 수행하도록 하여 상황에 따라 MAC 활용도를 조절할 수 있다.
또한, 본 발명의 일 실시예에 따르면 CNN 연산을 수행할 때 첫 번째와 마지막 레이어를 제외한 중간 레이어의 IA 및 가중치에 대해 컬럼 에디션 연산을 수행하도록 1 클럭 사이클을 생성하고, CNN 연산을 수행할 때 첫 번째 또는 마지막 레이어의 IA 및 가중치에 대해 빗 시리얼 곱셈 연산 처리를 위한 컬럼 에디션 연산을 수행하도록 멀티 클럭 사이클을 생성하는 클럭 신호부를 포함할 수 있다.
중간 레이어와 같이 채널 사이즈가 커서 높은 MAC utilization이 가능하여 모드 1을 수행할 경우, 모든 스테이지를 통과한 출력 값 하나를 획득하는 바, 모든 스테이지에 배치된 에더 트리를 이용한 연산이 1 클럭 사이클 안에 처리되도록 1 클럭을 구동하면 되며, 첫 번째 또는 마지막 레이어와 같이 채널 사이즈가 작아 낮은 MAC utilization을 보완하기 위해 모드 2를 수행할 경우, 일부 스테이지를 통과하는 멀티 비트를 추출하여 연산을 수행해야 하는 바, 스테이지를 여러 개로 쪼개고, 쪼개진 일부 스테이지에 배치된 에더 트리들로부터 추출된 멀티 비트의 각 비트가 각각의 사이클에서 처리되도록 각 빗에 대한 멀티 클럭 사이클을 구동할 수 있다.
또한, 본 발명의 일 실시예에 따르면, 컴퓨터에 상술한 바이너리 뉴럴 네트워크 제어 방법을 실행시키는 컴퓨터 프로그램을 저장하는 컴퓨터 판독 가능한 저장 매체를 제공할 수 있다.
상기 기능이 만약 소프트웨어 기능 유닛의 형태로 구현되어 독립적인 제품으로서 판매되거나 사용될 경우, 하나의 컴퓨터 판독 가능 저장매체에 저장될 수 있다. 이러한 이해에 기반하여, 본 출원의 기술방안에서 본질적으로 또는 선행기술에 대해 기여한 부분 또는 상기 기술방안의 일부분은 소프트웨어 제품의 형태로 구현될 수 있고, 상기 컴퓨터 소프트웨어 제품은 하나의 저장매체에 저장되며, 약간의 인스트럭션을 포함하여 하나의 컴퓨터 장치(개인 컴퓨터, 서버 또는 네트워크 기기 등일 수 있음)로 하여금 본 출원의 각 실시예에서 설명하는 방법의 전부 또는 일부 단계를 수행하도록 한다. 상술한 저장매체는 USB 메모리, 모바일 하드디스크, 읽기 전용 메모리(Read-Only Memory, ROM), 랜덤 액세스 메모리(Random Access Memory, RAM), 자기 디스크 또는 시디롬 등과 같은 프로그램 코드를 저장할 수 있는 다양한 매체를 포함한다.
또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 상기 방법을 구현하기 위한 기능적인(function) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술분야의 프로그래머들에 의해 용이하게 추론될 수 있다.
상술한 내용은 단지 본 출원의 구체적인 실시형태일 뿐, 본 출원의 보호범위는 이에 한정되지 않으며, 본 기술분야의 통상의 지식을 가진 자라면 본 출원이 밝히는 기술범위 내에서 변화 또는 대체를 쉽게 생각해 낼 수 있고, 이러한 변화 또는 치환 또한 본 출원의 보호범위에 속한다. 따라서, 본 출원의 보호범위는 청구범위의 보호 범위에 준한다.
1: 빗와이즈 곱셈기
2: 리덕션
3: 어큐뮬레이터
4:시프트
100: 재구성가능한 컬럼 에디션 모듈
110: 모드 1에 사용되는 스테이지
120: 모드 2에 사용되는 스테이지

Claims (9)

  1. N 개의 스테이지에 대해 복수의 각 스테이지마다 상이한 개수의 복수의 에더 트리가 배치된 바이너리 뉴럴 네트워크에서,
    각 IA(Input Activation) 및 가중치 페어에 대해 빗와이즈 곱셈(bitwise multiplication) 연산을 수행하여 부분곱(partial product)들을 생성하는 제1 단계;
    각 스테이지 내의 에더의 종류에 따라 상기 각 스테이지에 배치된 상기 부분곱들을 임의의 개수로 그룹화하여 각 그룹을 상기 에더 트리에 입력하며, 이때 상기 N ≥ 2 이며, N은 정수인 제2 단계;
    상기 에더 트리에서 컬럼 에디션(Column Addition) 연산을 수행하며, 상기 N개의 스테이지에 배치된 에더 트리를 모두 통과하여 최종 N 번째 스테이지에서 최종 출력 값을 추출하는 모드 1 또는 상기 N개의 스테이지 중 일부인 M 개 스테이지에 배치된 에더 트리만을 통과하여 중간 출력 값을 추출하는 모드 2를 수행하여, 상기 모드 1 및 상기 모드 2를 통해 복수의 중간 출력 값 및 최종 출력 값을 포함하는 복수의 출력 값을 획득하며, 이때 상기 M은 N>M≥1이며, M은 정수인 제3 단계; 및
    상기 제3 단계에서 획득한 복수의 중간 출력 값을 모두 합산하여 OA(Output Activation)를 획득하는 제4 단계를 포함하며,
    상기 제3 단계는 입력될 IA 및 가중치의 채널 사이즈가 작아 전체 에더 트리에서 한번에 연산을 수행할 수 없는 경우, 상기 N개의 스테이지에 배치된 에더 트리 중 일부를 쪼개서 쪼개진 복수의 에더 트리에서 상기 모드 2를 동시에 수행하고,
    상기 모드 2는 N 개의 스테이지 중 랜덤으로 선택된 연속된 M개의 스테이지를 묶으며, 묶인 M개 스테이지에 배치된 복수의 에더 트리를 통과시키며 출력된 복수의 중간 출력 값을 저장하는- 상기 M개는 상기 바이너리 뉴럴 네트워크의 구성에 따라 대응되는 값으로 기설정된 값임-
    바이너리 뉴럴 네트워크 제어 방법.
  2. 제1 항에 있어서,
    상기 제2 단계는,
    각 스테이지에 배치된 상기 부분곱들을 임의로 그룹화할 때, 동일한 스테이지에 배치된 부분곱들을 n개씩 묶어 그룹화 가능한 최대 개수로 그룹화하며, 이때 상기 n은 n≤3 이며, n은 양의 정수인,
    바이너리 뉴럴 네트워크 제어 방법.
  3. 삭제
  4. 제1 항에 있어서,
    상기 방법이 수행되는 레이어는 CNN(Convolution Neural Network)의 첫 번째 레이어 또는 마지막 레이어이거나, 또는 멀티 비트 데이터를 사용하는 레이어인,
    바이너리 뉴럴 네트워크 제어 방법.
  5. 삭제
  6. 삭제
  7. 바이너리 뉴럴 네트워크 장치로서,
    컬럼 에디션 연산을 수행하는 에더 트리;
    제1 항, 제2 항 및 제4 항 중 어느 한 항에 따른 바이너리 뉴럴 네트워크 제어 방법을 수행하는 프로세서; 및
    CNN 연산을 수행할 때 첫 번째와 마지막 레이어를 제외한 중간 레이어의 IA 및 가중치에 대해 컬럼 에디션 연산을 수행하도록 1 클럭 사이클을 생성하고, CNN 연산을 수행할 때 첫 번째 또는 마지막 레이어의 IA 및 가중치의 멀티 비트에 대해 컬럼 에디션 연산을 수행하도록 멀티 클럭 사이클을 생성하는 클럭 신호부를 포함하며,
    상기 에더 트리에 상기 클럭 신호부가 1클럭 사이클 또는 멀티 클럭 사이클을 생성하여 동일한 하드웨어를 상기 모드 1 또는 모드 2로 사용가능한,
    재구성가능한 컬럼 에디션 구조(Reconfigurable column addition structure)를 가진 바이너리 뉴럴 네트워크 장치.
  8. 삭제
  9. 컴퓨터에 제1 항, 제2 항 및 제4 항 중 어느 한 항에 따른 바이너리 뉴럴 네트워크 제어 방법을 실행시키는 컴퓨터 프로그램을 저장하는, 컴퓨터 판독 가능한 저장 매체.

KR1020210060745A 2021-05-11 2021-05-11 바이너리 뉴럴 네트워크 제어 방법 및 바이너리 뉴럴 네트워크 장치 KR102627800B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020210060745A KR102627800B1 (ko) 2021-05-11 2021-05-11 바이너리 뉴럴 네트워크 제어 방법 및 바이너리 뉴럴 네트워크 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210060745A KR102627800B1 (ko) 2021-05-11 2021-05-11 바이너리 뉴럴 네트워크 제어 방법 및 바이너리 뉴럴 네트워크 장치

Publications (2)

Publication Number Publication Date
KR20220153311A KR20220153311A (ko) 2022-11-18
KR102627800B1 true KR102627800B1 (ko) 2024-01-23

Family

ID=84234572

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210060745A KR102627800B1 (ko) 2021-05-11 2021-05-11 바이너리 뉴럴 네트워크 제어 방법 및 바이너리 뉴럴 네트워크 장치

Country Status (1)

Country Link
KR (1) KR102627800B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20240095659A (ko) * 2022-12-16 2024-06-26 서울대학교산학협력단 차세대 고속 경량 객체인식 fpga npu 시스템을 위한 계산유닛, 버퍼 및 데이터 이동 최적화 방법론

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112513885B (zh) * 2018-06-22 2024-02-27 三星电子株式会社 神经处理器
EP3674982A1 (en) * 2018-12-27 2020-07-01 IMEC vzw Hardware accelerator architecture for convolutional neural network

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
S. Yin 등. "An Energy-Efficient Reconfigurable Processor for Binary-and Ternary-Weight Neural Networks With Flexible Data Bit Width". (2019.04.) 1부.*

Also Published As

Publication number Publication date
KR20220153311A (ko) 2022-11-18

Similar Documents

Publication Publication Date Title
Kang Accelerator-aware pruning for convolutional neural networks
US11301213B2 (en) Reduced latency multiplier circuitry for very large numbers
CN107977191B (zh) 一种低功耗并行乘法器
US10528325B2 (en) Efficient modulo calculation
KR102627800B1 (ko) 바이너리 뉴럴 네트워크 제어 방법 및 바이너리 뉴럴 네트워크 장치
CN107992283B (zh) 一种基于降维实现有限域乘法的方法和装置
Akila et al. Implementation of high speed Vedic multiplier using modified adder
Kahri et al. Efficient FPGA hardware implementation of secure hash function SHA-256/Blake-256
Hossain et al. Efficient fpga implementation of modular arithmetic for elliptic curve cryptography
CN118034643B (zh) 一种基于sram的无进位乘法存算阵列
US7818361B1 (en) Method and apparatus for performing two's complement multiplication
CN106682258A (zh) 一种高层次综合工具中的多操作数加法优化方法及系统
CN116205244B (zh) 一种数字信号处理结构
US11960857B2 (en) Adder circuit using lookup tables
CN116155481A (zh) 一种sm3算法的数据加密实现方法和装置
US7765249B1 (en) Use of hybrid interconnect/logic circuits for multiplication
Mironov et al. Analysis of multiplier architectures for neural networks hardware implementation
Kahri et al. An FPGA implementation of the SHA-3: The BLAKE hash function
Baba et al. Design and implementation of advanced modified booth encoding multiplier
Mandal et al. A comparative study of Arithmetic Multipliers
US8868634B2 (en) Method and apparatus for performing multiplication in a processor
Kumar et al. Power efficient approximate multiplier architectures for error resilient applications
US8117507B2 (en) Decompressing method and device for matrices
GB2538102B (en) Performing constant modulo arithmetic
Hafizullah et al. An Efficient Hardware Implementation of Walsh Hadamard Transform for JPEG XR

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant