KR102548283B1 - 콘볼루션 신경망 컴퓨팅 장치 - Google Patents

콘볼루션 신경망 컴퓨팅 장치 Download PDF

Info

Publication number
KR102548283B1
KR102548283B1 KR1020210185342A KR20210185342A KR102548283B1 KR 102548283 B1 KR102548283 B1 KR 102548283B1 KR 1020210185342 A KR1020210185342 A KR 1020210185342A KR 20210185342 A KR20210185342 A KR 20210185342A KR 102548283 B1 KR102548283 B1 KR 102548283B1
Authority
KR
South Korea
Prior art keywords
unit
receptor
data
shift register
memory
Prior art date
Application number
KR1020210185342A
Other languages
English (en)
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 KR1020210185342A priority Critical patent/KR102548283B1/ko
Priority to PCT/KR2022/020058 priority patent/WO2023121086A1/ko
Application granted granted Critical
Publication of KR102548283B1 publication Critical patent/KR102548283B1/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
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • G06F5/015Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising having at least two separately controlled shifting levels, e.g. using shifting matrices

Landscapes

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

Abstract

본 발명은 디지털 신경망 컴퓨팅 기술 분야에 관한 것으로, 더욱 상세하게는 인공 신경망 데이터를 저장하는 분산형 메모리 구조 및 모든 뉴런을 파이프라인 회로에서 시분할로 처리하는 계산 구조를 포함하고, 전체 구성 요소가 하나의 시스템 클록에 동기화되는 동기화 회로(synchronized circuit)로서 동작하는, 콘볼루션 신경망 컴퓨팅 장치에 관한 것이다.

Description

콘볼루션 신경망 컴퓨팅 장치{CONVOLUTIONAL NEURAL NETWORK COMPUTING DEVICE}
본 발명은 디지털 신경망 컴퓨팅 기술 분야에 관한 것으로, 더욱 상세하게는 인공 신경망 데이터를 저장하는 분산형 메모리 구조 및 모든 뉴런을 파이프라인 회로에서 시분할로 처리하는 계산 구조를 포함하고, 전체 구성 요소가 하나의 시스템 클록에 동기화되는 동기화 회로(synchronized circuit)로서 동작하는, 콘볼루션 신경망 컴퓨팅 장치에 관한 것이다.
딥러닝(deep learning) 기술의 핵심 계산 모형인 콘볼루션 신경망(CNN: Convolutional Neural Network, 이하에서 "CNN"이라고 지칭함)은, 각각의 뉴런이 인간의 시각 신경계에서 중복 영역의 응답 특성과 유사한 특성을 갖도록 다중 계층으로 배치된 인공신경망의 한 종류이다.
CNN은 계층의 수가 많아질수록 복잡한 패턴의 영상 및 음성을 높은 인식률로 인식할 수 있다는 장점이 있다. 그에 따라, 오랫동안 정체 상태에 머물러 있던 영상 및 음성 인식률이 CNN 기술에 의해 극적으로 높아지고, ImageNet과 같은 각종 영상인식 벤치마킹시험에서 CNN 시스템들이 최고기록을 경신하고 있다. 그 결과, CNN은 영상인식, 음성인식, 언어번역 등 다양한 머신러닝(machine learning) 분야에서 각광받고 있다.
또한, CNN은, 다중 계층 퍼셉트론(multi-layered perceptron)과 같은 기존의 전통적인 신경망 모델과 비교하여, 별도의 특징 추출 과정이 필요하지 않고 파라미터(parameter)에 소요되는 데이터 양이 적어 제한된 메모리 용량으로도 구현할 수 있다는 장점이 있다.
도 1에 도시된 바와 같이, 사전 학습된 파라미터를 사용하여 이미지를 인식하는 CNN의 구조는 복수의 콘볼루션 계층(10-1, 10-2, …10-N)으로 이루어진다. 각각의 콘볼루션 계층들(10-1, 10-2, …10-N)은 복수의 유닛 (a, b, c, …x, y, z)을 포함한다.
각각의 유닛들(a, b, c, …x, y, z)은 이차원 행렬을 이용하여 입력 이미지의 특징을 나타낸다. 각각의 유닛 들(a, b, c, …x, y, z)은 한 콘볼루션 계층의 출력 유닛과 그 다음 콘볼루션 계층의 입력 유닛으로 이용된다. 예를 들어, 유닛들(d, e, f, g)은 콘볼루션 계층(10-1)의 출력 유닛과 콘볼루션 계층(10-2)의 입력 유닛으로 이용될 수 있다. 각각의 유닛들(a, b, c, …x, y, z)이 한 콘볼루션 계층의 입력 유닛으로 이용되면, 그 유닛을 채널(channel)이라고도 지칭하며, 각각의 유닛들(a, b, c, …x, y, z)이 한 콘볼루션 계 층의 출력 유닛으로 이용되면, 그 유닛을 특징 벡터(feature vector)라고도 지칭한다.
첫 번째 콘볼루션 계층(10-1)의 입력 유닛(a, b, c)은 인식하고자 하는 이미지를 나타내며, 통상적으로 첫 번째 콘볼루션 계층(10-1)은 입력 이미지의 적색, 녹색, 청색 성분을 각각 나타내는 세 개의 입력 유닛(a, b, c)을 포함한다.
각 콘볼루션 계층(10-1, 10-2, …10-N)에서, 각각의 입력 유닛들은 모든 출력 유닛과 콘볼루션 기능으로 완전히 연결된다. 예를 들어, 콘볼루션 계층(10-1)에서, 각각의 입력 유닛들(a, b, c)은 콘볼루션 계층(10-1)의 모든 출력 유닛(e, f, g, h)과 콘볼루션 기능으로 연결된다. 여기서 콘볼루션 기능은 입력 유닛에 n x n 크기의 필터를 적용하여 출력 유닛을 계산하는 기능이다. 구체적으로 콘볼루션 기능은 입력 유닛에 콘볼루션 계산을 적용하고, 콘볼루션 계산된 입력 유닛에 비선형 함수를 적용하여 출력 유닛을 계산하는 기능이다. 여기서 콘볼루션 계산은 입력 유닛의 전 영역에서 가능한 모든 n x n 크기의 부분 영역을 추출하고, 그 다음 입력 유닛과 출력 유닛 사이에 고유하게 지정된 필터의 각 단위요소들과 n x n 크기의 부분 영역의 각 값을 각각 곱한 후 합산하는 것(즉, 필터와 부분 영역 간의 내적의 곱의 합)을 의미한다. 여기서 비선형 함수는, 예를 들어, 시그모이드(sigmoid) 함수나 정류 선형 함수(ReLU: Rectified Linear Unit)를 의미한다. 여기서 부분 영역은 수용장(local receptive field)이라고도 지칭한다. 여기서 필터는 수용장의 크기에 대응하는 n x n 개의 파라미터로 구성되며, 커널(kernel)이라고도 지칭한다. 하나의 커널은 입력 유닛(즉, 채널)의 모든 부분 영역에 공통적으로 적용된다.
마지막 콘볼루션 계층(10-N)의 출력 유닛(x, y, z)은 전역 평균 통합(global average pooling) 또는 완전 연결 계층(fully-connected layer)이 추가로 적용된다. 그에 따라, CNN은 입력 이미지가 어떤 범주에 속하는지를 판 단할 수 있다.
상술한 바와 같은 통상적인 CNN에 있어서, 인접 수용장 사이의 간격은 스트라이드(stride)라고 지칭한다. 일반적으로 CNN은 스트라이드가 가로축 및 세로축을 기준으로 각각 1 또는 2인 경우가 많다. 스트라이드가 2이면, 출력 유닛의 가로 및 세로 길이는 각각 입력 유닛의 가로 및 세로 길이의 절반이 된다.
일반적인 컴퓨터 대신에 디지털회로를 이용하여 고속으로 CNN을 계산할 때 어려운 문제 중 하나는 메모리 접근 요구량이 폭증하여 계산회로를 효율적으로 운용하기 어렵다는 점이다. 예를 들어 C개의 입력 유닛에서 각각 n x n개의 데이터를 추출하여 C x n x n개의 곱셈기로 동시에 곱셈을 계산하고자 하면 곱셈기 전체가 한 번씩의 곱셈을 하기 위해 메모리에서 읽어야 하는 데이터의 양은 C x n x n 개이다. 일반적인 곱셈기는 매 클록주기마다 한번의 곱셈을 할 수 있으므로 곱셈기를 쉬지 않고 활용하기 위해 필요한 메모리 접근량은 클록주기 당 C x n x n개의 데이터이다. 이와 같은 메모리 접근 요구량은 충분한 병렬성을 취하기 위하여 C가 커질수록 폭증하며 메모리가 이를 수용할 수 없으면 곱셈기들이 유휴상태에서 메모리에서 데이터를 모두 읽을 때까지 대기하여야 하므로 곱셈기의 효율이 급격하게 떨어지게 된다. 곱셈기는 CNN 계산회로에서 가장 많은 자원을 필요로 하는 연산자이기 때문에 곱셈기의 효율 저하는 계산회로 전체의 효율 저하를 의미한다.
“등록특허 10-1788829”발명에서는 이 문제를 각 입력유닛에서 데이터를 하나씩만 읽어 들이고 리셉터라는 장치를 사용하여 n x n개의 수용장 데이터로 확장하여 메모리 접근 요구량을 클록주기 당 C x n x n개에서 C개로 낮추는 방법을 사용하여 해결하고 있다. 도 2에서는 메모리에서 하나씩의 데이터를 순차적으로 읽어서 3 x 3개씩의 데이터를 순차적으로 출력하는 리셉터 장치를 도시하였다. C개의 입력유닛을 동시에 처리하는 시스템에서는 C개의 리셉터 장치를 사용한다.
이 때 메모리에서 매 클록주기 당 C개의 데이터를 읽어야 하는 메모리 접근 요구사항은 C개의 온칩메모리를 병렬로 사용하여 해결할 수 있다. 상술한 발명에서 설명하는 콘볼루션 신경망 컴퓨팅 장치는 도 3에서 도시하는 바와 같이 콘볼루션 계산을 수행하는 계산부, 입력 데이터 및 상기 계산부로부터 계산된 출력 데이터를 저장하는 메모리부, 상기 메모리부로부터 입력되는 데이터를 n x n 크기의 데이터로 이루어진 수용장으로 변환하여 상기 계산부에 제공하는 리셉터부를 포함한다.
이 때 메모리에서 매 클록주기 당 C개의 데이터를 읽어야 하는 메모리 접근 요구사항은 C개의 온칩메모리를 병렬로 사용하여 해결할 수 있다. 상술한 발명에서 설명하는 콘볼루션 신경망 컴퓨팅 장치는 도 3에서 도시하는 바와 같이 콘볼루션 계산을 수행하는 계산부, 입력 데이터 및 상기 계산부로부터 계산된 출력 데이터를 저장하는 메모리부, 상기 메모리부로부터 입력되는 데이터를 n x n 크기의 데이터로 이루어진 수용장으로 변환하여 상기 계산부에 제공하는 리셉터부를 포함한다.
상술한 “등록특허 10-1788829”발명의 시스템에서 특정 CNN 계층의 전체 입력 유닛의 총 크기를 A, 계산결과로 저장하는 전체 출력 유닛의 총 크기를 B라 할 때, 메모리부의 메모리 용량의 요구량은 전체 CNN 중에서 가장 큰 A + B의 값으로 표현된다. 특정 CNN계층을 계산할 때 메모리부는 입력 유닛을 저장하는 메모리 공간과 출력 유닛을 저장하는 메모리 공간을 동시에 제공하여야 하기 때문이다.
이와 같은 메모리 용량 요구사항은 CNN알고리즘의 종류에 따라 통상 수 메가바이트에서 수십 메가바이트에 달하며 DDR (Double data rate) 메모리와 같은 중앙집중형 기억장치를 사용하는 경우에는 많은 양이 아니나 상술한 바와 같은 이유로 병렬 메모리 구현을 위하여 온칩메모리로 구현해야 하는 경우에는 하나의 칩에 구현하기 어려운 문제가 있다. 많은 양의 온칩메모리를 구현하기 위해서는 많은 비용이 수반되며 시스템의 경제성을 떨어트리는 요인이 된다. 더구나 최근에 새로 나오는 콘볼루션 알고리즘은 입력 이미지, 각 유닛의 크기 및 유닛의 수가 증가되는 추세에 있으며 이와 같은 문제는 더욱 심화되고 있다. 온칩메모리 대신에 HBM (High-Bandwidth Memory), GDDR (Graphic DDR)과 같은 고속의 중앙집중형 기억장치를 사용할 수도 있으나 그와 같은 장치들은 고가이고 소모전력 등 추가적인 문제를 수반한다.
이와 같은 문제를 해결하기 위해 각 유닛의 이차원 배열을 분할하여 계산하는 방법을 생각해 볼 수 있다
도 4는 이차원 배열을 분할하여 계산하는 시스템에서 3개의 CNN 계층으로 구성된 콘볼루션 신경망의 데이터의 인과관계를 도시하였다.
이 때 메모리 요구량을 줄이기 위해 계층 3의 출력 유닛 각각의 이차원 벡터를 두 개로 분할하여 계산할 수 있을 것이다. 이 경우 수반되는 문제는 1보다 큰 수 n인 n x n 콘볼루션이 계산되는 경우 입력 유닛의 이차원 벡터는 경계면의 수용장이 확장되면서 겹치는 영역이 발생하므로 CNN 계층 1을 계산할 때에는 이차원 벡터를 절반씩 분할할 수 없고 상당한 양의 중복 영역이 발생한다는 점이다. 이와 같은 문제는 CNN 계층이 많아지면서 더욱 심화되는 경향을 가지게 된다. 이와 같은 시스템은 전체의 이차원 벡터를 한꺼번에 처리하는 시스템에 비하여 중복영역을 계산하기 위해 더 많은 계산을 필요로 하며 그로 인하여 시스템의 효율이 떨어지는 단점이 있다.
따라서, 이와 같은 문제를 해결하여 적은 용량의 온칩메모리로도 높은 계산효율의 신경망 컴퓨팅 장치를 제공하는 것이 본 발명의 과제이다.
상기와 같은 과제를 해결하기 위하여 본 발명은,
복수의 입력 유닛과 복수의 출력 유닛을 구비하는 복수의 콘볼루션 계층으로 이루어진 콘볼루션 신경망에 있어서의 콘볼루션 신경망 컴퓨팅 장치로서,
복수의 상기 콘볼루션 계층 각각을 사전 결정된 순서대로 콘볼루션 계산을 수행하는 계산부;
외부 장치로부터의 화상 입력 데이터 및 상기 계산부로부터 계산된 출력 데이터를 저장하는 메모리부;
상기 메모리부로부터 상기 입력 데이터 및 상기 출력 데이터를 입력받아 상기 입력 데이터를 n x n 크기의 데이터로 이루어진 수용장으로 변환하여 상기 계산부에 제공하는 복수의 리셉터부(여기서 n은 사전 설정된 정수);
상기 리셉터부의 상태를 저장하는 리셉터 메모리부; 및
시스템의 타이밍을 제어하는 제어부를 포함하는 콘볼루션 신경망 컴퓨팅 장치를 제공한다.
상기 리셉터부는 n x n 시프트레지스터와 가변시프트레지스터행렬로 구성되어 콘볼루션 계산 시 입력 데이터를 수용장 데이터로 변환하는 계산모드와 상기 시프트레지스터와 상기 가변시프트레지스터행렬의 모든 상태값을 상기 리셉터메모리부에 저장하는 저장모드 및 상기 리셉터메모리부에 저장된 상태값을 복원하는 인출모드 회로를 포함한다.
상기 리셉터부는, 각각이 n x n 시프트레지스터와 n - 1개의 가변시프트레지스터행렬을 포함한다.
상기 리셉터부는 콘볼루션 계산 시 상기 입력 데이터를 수용장 데이터로 변환하는 계산모드로 작동하는 주시프트레지스터회로와 상태값을 상기 리셉터메모리부에 저장하는 저장모드 및 상기 리셉터메모리부에 저장된 상태값을 복원하는 인출모드 회로를 포함한다.
상기 리셉터부는 상기 주시프트레지스터회로와 상기 부시프트레지스터회로의 역할을 스위치하는 다중화회로를 포함한다.
상기 부시프트레지스터회로내에서, 상기 시프트레이즈터와 상기 가변시프트레지스터행렬은 순차적으로 연결되고, 상기 가변시프트레지스터행렬 각각의 출력과 마지막 열의 n개의 상기 시프트레지스터의 출력은 각각 상기 리셉터의 입력을 경유하여 상기 시프트레지스터 각 열의 입력과 연결되는 것을 특징으로 한다.
상기 리셉터메모리부는 n개의 데이터 입력 인터페이스과 n개의 데이터 출력 인터페이스를 구비하고, 상기 제어부의 지시에 따라 설정 시간에 n개의 상기 데이터 입력 인터페이스를 통해 n개의 데이터를 동시에 상기 메모리에 저장하거나, n개의 상기 데이터 출력 인터페이스를 통해 n개의 데이터를 동시에 출력하는 것을 특징으로 한다.
본 발명의 실시 예에 따르면, 중복계산에 의한 효율 저하 없이 각 유닛의 이차원 행렬을 분할하여 계산함으로써 적은 용량의 온칩메모리를 사용하여도 고속으로 CNN을 구현할 수 있으며 따라서 경제성을 크게 제고할 수 있다.
도 1은 CNN 구조의 일 예를 도시한 도면이다.
도 2는 메모리에서 하나씩의 데이터를 순차적으로 읽어서 3 x 3개씩의 데이터를 순차적으로 출력하는 리셉터 장치를 나타낸다
도 3은 종래의 콘볼루션 신경망 컴퓨팅 장치의 구성을 나타낸다.
도 4는 이차원 배열을 분할하여 계산하는 시스템에서 3개의 CNN 계층으로 구성된 콘볼루션 신경망의 데이터의 인과관계를 나타낸다.
도 5는 본 발명의 일 실시 예에 따른 콘볼루션 신경망 컴퓨팅 장치를 도시한 도면이다.
도 6은 리셉터부에서 하나의 입력 채널을 처리하는 리셉터의 구조를 상세하게 도시한 도면이다.
도 7은 부시프트레지스터 회로의 구성을 나타낸 도면이다.
도 8은 본 발명의 실시예에 따른 콘볼루션 신경망 컴퓨팅 장치에서 도 4에서 보인 바와 같은 신경망을 리셉터메모리부fmf 활용하여 적은 메모리 용량을 갖는 메모리부로도 중복 계산 없이 효율적으로 계산하는 단계를 도시한 도면이다.
본 발명의 목적들은 이상에서 언급한 목적으로 제한되지 않으며, 언급되지 않은 본 발명의 다른 목적 및 장점들은 하기의 설명에 의해서 이해될 수 있으며, 본 발명의 실시 예에 의해 보다 분명하게 알게 될 것이다. 또한, 본 발명의 목적 및 장점들은 특허 청구 범위에 나타낸 수단 및 그 조합에 의해 실현될 수 있음을 쉽게 알 수 있을 것이다.
상술한 목적, 특징 및 장점은 첨부된 도면을 참조하여 상세하게 후술되어 있는 상세한 설명을 통하여 보다 명확해질 것이며, 그에 따라 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있을 것이다. 또한, 본 발명을 설명함에 있어서 본 발명과 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에 그 상세한 설명을 생략하기로 한다.
그리고 명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때 이는 "직접적으로 연결"되어 있는 경우뿐만 아니라 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결"되어 있는 경우도 포함한다. 또한, 어떤 부분이 어떤 구성요소를 "포함" 또는 "구비"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함하거나 구비할 수 있는 것을 의미한다. 또한, 명세서 전체의 기재에 있어서 일부 구성요소들을 단수형으로 기재하였다고 해서, 본 발명이 그에 국한되는 것은 아니며, 해당 구성요소가 복수 개로 이루어질 수 있음을 알 것이다.
본 발명의 실시 예에 따른 콘볼루션 신경망 컴퓨팅 장치는 복수의 입력 유닛과 복수의 출력 유닛을 구비하는 복수의 콘볼루션 계층으로 이루어진 콘볼루션 신경망 컴퓨팅 장치로서, 상기 CNN 계층의 순서대로 콘볼루션 계산을 수행하는 계산부, 입력 데이터 및 상기 계산부로부터 계산된 출력 데이터를 저장하는 메모리부, 상기 메모리부로부터 입력되는 데이터를 n x n 크기의 데이터로 이루어진 수용장으로 변환하여 상기 계산부에 제공하는 리셉터부(여기서 n은 사전 설정된 정수)를 포함한다.
도 5는 본 발명의 일 실시 예에 따른 콘볼루션 신경망 컴퓨팅 장치(100)를 도시한 도면이다.
도 5에 도시된 바와 같이, 콘볼루션 신경망 컴퓨팅 장치(100)는 제어부(110), 메모리부(120), 리셉터부(130), 계산부(140) 및 리셉터메모리부(150)를 포함한다.
제어부(110)는 전체 시스템의 타이밍을 제어하는 역할을 한다.
메모리부(120)는 외부로부터 입력 이미지(즉, 화상 입력 데이터)를 입력받고 계산부(140)의 출력 데이터(즉, 계산 결과)를 입력받아 저장한다. 메모리부(120)는 현재 콘볼루션 계산에 사용되는 C개의 입력유닛 각각의 데이터를 순차적으로 리셉터부(130)에 제공한다.
리셉터부(130)는 C개의 리셉터(136)로 구성되며 메모리부(120)로부터 순차적으로 입력되는 C개의 데이터 각각을 각 리셉터에서 n x n 크기의 수용장으로 변환하여 계산부(140)에 제공한다.
계산부(140)는 동시 계산이 가능한 C개의 유닛 각각에 대해 n x n 크기의 수용장과 그에 대응하는 n x n 크기의 필터를 이용하여 콘볼루션 계산하고, 콘볼루션 계산된 출력 유닛(즉, 출력 데이터)을 출력하여 메모리부(120)에 제공한다.
리셉터메모리부는 제어부(110)의 지시에 따라 필요시 리셉터의 상태를 임시 메모리에 저장하고 메모리에 저장된 리셉터의 상태를 복원하기 위해 사용된다.
상술한 설명을 통해, 콘볼루션 신경망 컴퓨팅 장치(100)는 메모리부(120)에 저장된 데이터가 계산부(140)에서 콘볼루션 계산되어, 다시 메모리부(120)에 저장되는 피드백 구조임을 알 수 있다.
이하에서는, 도면을 참조하여, 리셉터부(130) 및 리셉터메모리부(150)를 보다 상세하게 설명하도록 한다.
도 6은 리셉터부(130)에서 하나의 입력 채널을 처리하는 리셉터(136)의 구조를 상세하게 도시한 도면이다.
도 6에 도시된 바와 같이, 리셉터(136)는 주 시프트레지스터 회로(134)와 부 시프트레지스터 회로(135) 및 마스크회로(133)를 포함한다. 주 시프트레지스터 회로(134)와 부 시프트레지스터 회로(135)는 각각이 n x n 개의 시프트레지스터(131)와 n - 1개의 가변 시프트레지스터 행렬(132)로 구성된다. 또한 주 시프트레지스터 회로(134)의 구성요소와 부 시프트레지스터 회로(135)의 구성요소는 다중화 회로를 이용하여 제어부(110)의 제어에 따라 역할을 스위치 (switch) 할 수 있으며, 전환 전에 주 시프트레지스터 회로(134)에 있던 시프트레지스터와 가변 시프트레지스터 행렬은 부 시프트레지스터 회로(135)에 있던 동일한 구성요소들은 전환 후에 서로 역할을 바꾸게 된다.
주 시프트레지스터 회로(134)의 역할은 상술한 “등록특허 10-1788829”발명의 시스템에서 리셉터 내의 시프트레지스터(131)와 가변 시프트레지스터 행렬(132)의 역할과 동일하다. 주 시프트레지스터 회로(134) 내에서 n 개의 시프트레지스터(131)와 한 개의 가변 시프트레지스터 행렬(132)은 서로 교번하여 직렬로 연결된 구조를 가진다. 가변 시프트레지스터 행렬(132)의 길이는 시프트레지스터(131) n 개와 한 개의 가변 시프트레지스터 행렬(132)에 포함된 시프트레지스터의 개수의 합이 총 시프트 수 m이 되도록 가변한다. 예를 들어, m=7, n=3인 경우, 가변 시프트레지스터 행렬(132)에 포함된 시프트레지스터의 길이는 4가 된다.
부 시프트레지스터 회로(135)의 구성은 도 7에 별도로 도시한 바와 같다.
부 시프트레지스터 회로(135)내에서 시프트레지스터(131)와 가변시프트레지스터행렬(132)의 기본 연결은 주 시프트레지스터 회로(134)와 동일하게 순차적으로 연결된다. 각 가변시프트레지스터행렬(132)의 출력과 마지막 열의 n개의 시프트레지스터(131)의 출력은 각각 리셉터(130)의 출력을 경유하여 리셉터메모리부(150)의 입력과 연결되고, 리셉터메모리부(150)의 n개의 출력은 리셉터(130)의 입력을 경유하여 각 시프트레지스터(131) 열의 입력과 연결된다.
리셉터메모리부는 n개의 데이터 입력과 n개의 데이터 출력 인터페이스를 구비하고, 제어부(110)의 지시에 따라 특정 시간에 n개의 데이터 입력 인터페이스를 통해 n개의 데이터를 동시에 메모리에 저장하거나, n개의 데이터 출력 인터페이스를 통해 n개의 데이터를 동시에 출력할 수 있다.
부 시프트레지스터 회로(135) 및 리셉터메모리부는 각각 저장모드와 인출모드의 두 개의 모드 중 하나로 작동하며 제어부(110)에 의해 저장모드로 작동하는 경우 각 시프트레지스터(131)와 가변시프트레지스터행렬(132)의 열의 내용은 순차적으로 출력되어 리셉터메모리부(150)에 저장된다. 부 시프트레지스터 회로(135)가 제어부(110)에 의해 인출모드로 작동하는 경우 리셉터메모리부(150)에 저장된 내용이 순차적으로 출력되며 각 시프트레지스터 열(131)의 입력을 거쳐 순차적으로 레지스터의 내용으로 저장된다. 이 때 시프트레지스터와 가변시프트레지스터행렬의 시프트 단계의 총 수를 m개라 가정하면, 저장모드와 인출모드 각각에서 저장과 인출에 걸리는 시간은 m개의 클록주기이다.
도 6에 도시된 바와 같이 리셉터부(130)는 매 클록 주기마다 메모리부(120)로부터 C개의 데이터를 입력받는다. 입력된 각 데이터는 매 클록 주기마다 시프트되어 n x n 개의 시프트레지스터(131)와 n - 1개의 가변 시프트레지스터행렬(132)에 순차적으로 입력된다.
매 클록 주기마다 n x n 개의 시프트레지스터(131)에 저장된 데이터(즉, 수용장)는 마스크부(133)로 출력된다.
마스크부(133)는 사전 결정된 순서에 따라 필요한 경우 입력된 n x n 크기 데이터의 일부를 공백값으로 설정한 후 계산부(140)에 출력한다.
상술한 구조의 리셉터부(130)는, 메모리부(120)로부터 입력 유닛의 첫 행의 첫 열부터 열 우선(또는 행 우선)으로 매 클록 주기마다 데이터가 입력되면, C x n x n 크기의 데이터를 계산부(140)에 출력할 수 있다. 이때, 출력되는 각 n x n 크기의 데이터는 m x m 크기의 입력 유닛에서 임의 n x n 수용장 (receptive field) 영역을 스캔(scan)하여 추출한 것과 같은 값을 가진다.
도 8은 본 콘볼루션 신경망 컴퓨팅 장치(100)에서 도 4에서 보인 바와 같은 신경망을 리셉터메모리부(150)을 활용하여 적은 메모리 용량을 갖는 메모리부(120)로도 중복 계산 없이 효율적으로 계산하는 단계를 도시한 것이다.
S1: 입력 유닛의 각 이차원 행렬의 A1부분을 입력으로 상술한 바와 같이 메모리부(120), 리셉터부(130), 계산부(140), 메모리부(120)로 이어지는 피드백 구조를 통해 출력유닛의 부분 이차원 행렬인 A2를 계산한다.
S2: 계산을 마치면 제어부(110)는 리셉터부(130) 내의 모든 리셉터(136) 각각의 주 시프트레지스터 회로와 부 시프트레지스터 회로를 스위치하고 저장모드로 부 시프트레지스터 회로의 모든 시프트레지스터에 저장된 내용을 리셉터메모리로 저장한다.
S3: 상기 S1과 같은 절차를 A2를 입력으로 진행하여 A3를 계산하고 메모리부에 저장한다.
S4: 상기 S2과 같은 방법으로 주 시프트레지스터 회로의 모든 상태값을 리셉터메모리로 저장한다.
S5: 상기 S1과 같은 절차를 A3를 입력으로 진행하여 A4를 계산하고 메모리부에 저장한다.
S6: 상기 S2과 같은 방법으로 주 시프트레지스터 회로의 모든 상태값을 리셉터메모리로 저장한다.
S7: 제어부(110)는 상술한 바와 같은 인출모드로 리셉터메모리와 리셉터를 운용하여 상기 S2 단계에서 리셉터메모리에 저장한 내용을 부 시프트레지스터 회로의 모든 레지스터에 복원한다. 그 다음 리셉터부(130) 내의 모든 리셉터(136) 각각의 주 시프트레지스터 회로와 부 시프트레지스터 회로를 스위치한다.
S8: B1부분을 입력으로 상술한 바와 같이 메모리부(120), 리셉터부(130), 계산부(140), 메모리부(120)로 이어지는 피드백 구조를 통해 출력유닛의 부분 이차원 행렬인 B2를 계산한다.
S9: 상기 S7과 인출모드 절차를 진행하여 S4에서 저장한 상태를 복원한다.
S10: 상기 S8과 같은 계산 절차로 B2를 입력으로 B3를 계산하고 메모리부에 저장한다.
S11: S7과 인출모드 절차를 진행하여 S6에서 저장한 상태를 복원한다.
S12: S4과 같은 계산 절차로 B3를 입력으로 B4를 계산하고 메모리부에 저장한다.
상술한 도 4에서 유닛의 2차원 벡터를 분할하여 계산할 때 중복 영역이 발생했던 이유는 두 번째 이후의 분할 영역을 계산할 때 앞 분할 영역의 마지막 부분에서 리셉터에 누적된 상태(state)가 폐기되었기 때문에 이를 다시 구축하기 위함이다. 상기 절차를 통해 리셉터의 상태를 저장하고 복원하면 리셉터의 상태를 다시 구축할 필요가 없으므로 중복영역이 발생하지 않아 불필요한 계산을 진행할 필요가 없으며 적은 메모리 용량의 메모리부를 사용하여도 계산효율이 저하되지 않는다.
상기 절차에서는 입력 유닛의 이차원 벡터를 2분할하는 방법을 설명하였으나 2보다 큰 수로 다분할 하는 것도 같은 방법으로 가능하며 메모리부의 메모리 용량 요구사항을 크게 줄일 수 있다. 적은 용량의 메모리를 사용하면 적은 비용으로 칩을 생산하여 경제성을 제고할 수 있는 장점이 있다.
주 시프트레지스터 회로와 부 시프트레지스터 회로는 독립적으로 운용이 되므로 주 시프트레지스터 회로를 이용한 콘볼루션 계산과 부 시프트레지스터 회로를 이용한 상태값의 저장과 복원은 동시에 진행될 수 있다. 따라서 상기 절차에서 절차 S1과 S2, S3과 S4, S5와 S6, S7과 S8, S9와 S10, S11과 S12는 동시에 진행될 수 있으며 통상 콘볼루션 계산 시간이 리셉터메모리 저장과 인출 시간보다 길게 걸리므로 사실상 계산시간의 합인 S1 +S3 + S5 + S8 + S10 + S12의 시간이 소요되어 계산시간을 더욱 더 단축할 수 있다.

Claims (7)

  1. 복수의 입력 유닛과 복수의 출력 유닛을 구비하는 복수의 콘볼루션 계층으로 이루어진 콘볼루션 신경망에 있어서의 콘볼루션 신경망 컴퓨팅 장치로서,
    복수의 상기 콘볼루션 계층 각각을 사전 결정된 순서대로 콘볼루션 계산을 수행하는 계산부;
    외부 장치로부터의 화상 입력 데이터 및 상기 계산부로부터 계산된 출력 데이터를 저장하는 메모리부;
    상기 메모리부로부터 상기 입력 데이터 및 상기 출력 데이터를 입력받아 상기 입력 데이터를 n x n 크기의 데이터로 이루어진 수용장으로 변환하여 상기 계산부에 제공하는 복수의 리셉터부(여기서 n은 사전 설정된 정수);
    상기 리셉터부의 상태를 저장하는 리셉터메모리부; 및
    시스템의 타이밍을 제어하는 제어부를 포함하고,
    상기 리셉터부는, 각각이 n x n 시프트레지스터와 n - 1개의 가변시프트레지스터행렬을 포함하고,
    상기 리셉터부는 콘볼루션 계산 시 상기 입력 데이터를 수용장 데이터로 변환하는 계산모드로 작동하는 주시프트레지스터회로와 상태값을 상기 리셉터메모리부에 저장하는 저장모드 및 상기 리셉터메모리부에 저장된 상태값을 복원하는 인출모드 회로를 포함하는 부시프트레지스터회로를 포함하는 콘볼루션 신경망 컴퓨팅 장치.
  2. 제 1 항에 있어서,
    상기 리셉터부는 n x n 시프트레지스터와 가변시프트레지스터행렬로 구성되어 콘볼루션 계산 시 입력 데이터를 수용장 데이터로 변환하는 계산모드와 상기 시프트레지스터와 상기 가변시프트레지스터행렬의 모든 상태값을 상기 리셉터메모리부에 저장하는 저장모드 및 상기 리셉터메모리부에 저장된 상태값을 복원하는 인출모드 회로를 포함하는 콘볼루션 신경망 컴퓨팅 장치.
  3. 삭제
  4. 삭제
  5. 제1항에 있어서,
    상기 리셉터부는 상기 주시프트레지스터회로와 상기 부시프트레지스터회로의 역할을 스위치하는 다중화회로를 포함하는 콘볼루션 신경망 컴퓨팅 장치.
  6. 삭제
  7. 제1항에 있어서,
    상기 리셉터메모리부는 n개의 데이터 입력 인터페이스와 n개의 데이터 출력 인터페이스를 구비하고, 상기 제어부의 지시에 따라 설정 시간에 n개의 상기 데이터 입력 인터페이스를 통해 n개의 데이터를 동시에 상기 메모리에 저장하거나, n개의 상기 데이터 출력 인터페이스를 통해 n개의 데이터를 동시에 출력하는 콘볼루션 신경망 컴퓨팅 장치.
KR1020210185342A 2021-12-22 2021-12-22 콘볼루션 신경망 컴퓨팅 장치 KR102548283B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020210185342A KR102548283B1 (ko) 2021-12-22 2021-12-22 콘볼루션 신경망 컴퓨팅 장치
PCT/KR2022/020058 WO2023121086A1 (ko) 2021-12-22 2022-12-09 콘볼루션 신경망 컴퓨팅 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210185342A KR102548283B1 (ko) 2021-12-22 2021-12-22 콘볼루션 신경망 컴퓨팅 장치

Publications (1)

Publication Number Publication Date
KR102548283B1 true KR102548283B1 (ko) 2023-06-27

Family

ID=86903248

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210185342A KR102548283B1 (ko) 2021-12-22 2021-12-22 콘볼루션 신경망 컴퓨팅 장치

Country Status (2)

Country Link
KR (1) KR102548283B1 (ko)
WO (1) WO2023121086A1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170023708A (ko) * 2015-08-24 2017-03-06 (주)뉴로컴즈 콘볼루션 신경망 컴퓨팅 장치
US20210019631A1 (en) * 2017-05-05 2021-01-21 Intel Corporation Optimized compute hardware for machine learning operations

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5376920B2 (ja) * 2008-12-04 2013-12-25 キヤノン株式会社 コンボリューション演算回路、階層的コンボリューション演算回路及び物体認識装置
KR102414583B1 (ko) * 2017-03-23 2022-06-29 삼성전자주식회사 머신 러닝을 수행하는 전자 장치 및 머신 러닝 수행 방법
WO2020062846A1 (en) * 2018-09-30 2020-04-02 Boe Technology Group Co., Ltd. Apparatus and method for image processing, and system for training neural network
GB2594971B (en) * 2020-05-13 2022-10-05 Advanced Risc Mach Ltd Variable position shift for matrix processing

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170023708A (ko) * 2015-08-24 2017-03-06 (주)뉴로컴즈 콘볼루션 신경망 컴퓨팅 장치
KR101788829B1 (ko) 2015-08-24 2017-10-20 (주)뉴로컴즈 콘볼루션 신경망 컴퓨팅 장치
US20210019631A1 (en) * 2017-05-05 2021-01-21 Intel Corporation Optimized compute hardware for machine learning operations

Also Published As

Publication number Publication date
WO2023121086A1 (ko) 2023-06-29

Similar Documents

Publication Publication Date Title
KR102523263B1 (ko) 하드웨어 기반 풀링을 위한 시스템 및 방법
KR101788829B1 (ko) 콘볼루션 신경망 컴퓨팅 장치
KR102555057B1 (ko) 웨이트 매트릭스를 포맷하는 방법, 포맷된 데이터를 사용하는 가속기 및 이를 포함하는 시스템
EP3469520B1 (en) Superpixel methods for convolutional neural networks
US20210224125A1 (en) Operation Accelerator, Processing Method, and Related Device
CN111897579B (zh) 图像数据处理方法、装置、计算机设备和存储介质
CN108416434B (zh) 针对神经网络的卷积层与全连接层进行加速的电路结构
US10025755B2 (en) Device and method to process data in parallel
US11907826B2 (en) Electronic apparatus for operating machine learning and method for operating machine learning
US5138695A (en) Systolic array image processing system
US20180173676A1 (en) Adaptive execution engine for convolution computing systems
CN109844738A (zh) 运算处理电路和识别系统
CN110580519B (zh) 一种卷积运算装置及其方法
US20220058486A1 (en) System and method of accelerating execution of a neural network
KR102610842B1 (ko) 뉴럴 네트워크에서의 프로세싱 엘리먼트 및 그 동작 방법
CN110766127B (zh) 神经网络计算专用电路及其相关计算平台与实现方法
US11580369B2 (en) Inference apparatus, convolution operation execution method, and program
CN108629411A (zh) 一种卷积运算硬件实现装置及方法
WO2022007265A1 (zh) 一种膨胀卷积加速计算方法及装置
CN107680028B (zh) 用于缩放图像的处理器和方法
CN114781629A (zh) 基于并行复用的卷积神经网络的硬件加速器及并行复用方法
KR20220071723A (ko) 딥러닝 연산 수행 방법 및 장치
KR102290531B1 (ko) 재조직 가능한 뉴럴 네트워크 컴퓨팅 장치
US11900577B2 (en) Processing apparatus for performing processing using a convolutional neural network
KR102548283B1 (ko) 콘볼루션 신경망 컴퓨팅 장치

Legal Events

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