KR20180012439A - 회선 신경망에서 가속기 및 이의 동작 방법 - Google Patents

회선 신경망에서 가속기 및 이의 동작 방법 Download PDF

Info

Publication number
KR20180012439A
KR20180012439A KR1020160095246A KR20160095246A KR20180012439A KR 20180012439 A KR20180012439 A KR 20180012439A KR 1020160095246 A KR1020160095246 A KR 1020160095246A KR 20160095246 A KR20160095246 A KR 20160095246A KR 20180012439 A KR20180012439 A KR 20180012439A
Authority
KR
South Korea
Prior art keywords
buffer
data
output data
pes
accelerator
Prior art date
Application number
KR1020160095246A
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 KR1020160095246A priority Critical patent/KR20180012439A/ko
Priority to EP17183554.9A priority patent/EP3276539A1/en
Priority to CN201710625400.5A priority patent/CN107665365A/zh
Priority to US15/662,225 priority patent/US11120330B2/en
Publication of KR20180012439A publication Critical patent/KR20180012439A/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/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • 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/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • 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
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

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)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)
  • Image Analysis (AREA)
  • Memory System (AREA)

Abstract

본 발명의 실시예에 따른 회선 신경망(convolutional neural network) 가속기 내부에 구현되는 프로세싱 엘리먼트(processing element, PE)는, 입력 데이터를 다른 PE로 전달하는 제1 버퍼, 상기 입력 데이터에 기반하여 처리된 출력 데이터를 외부로 전송하는 제2 버퍼, 및 상기 입력 데이터에 제1 연산을 수행하여 중간 데이터를 생성하고, 상기 중간 데이터를 상기 제2 버퍼에 저장하고, 상기 제2 버퍼로부터 피드백되는 상기 중간 데이터에 제2 연산을 수행하여 상기 출력 데이터를 생성하고, 상기 출력 데이터를 상기 제2 버퍼에 저장하는 연산부를 포함한다.

Description

회선 신경망에서 가속기 및 이의 동작 방법{ACCELERATOR IN CONVOLUTIONAL NEURAL NETWORK AND OPERATION METHOD THEREOF}
본 발명은 회선 신경망(convolutional neural network) 전용 가속기에 관한 것으로, 특히 외부 메모리로의 접근을 최소화하기 위해 멀티-레이어(multi-layer)를 통합 처리할 수 있는 방법 및 장치에 관한 것이다.
최근 비전(vision) 기반 객체 인식 및 음성 인식 분야에서 높은 성능을 제공하는 딥 러닝(deep learning)의 한 분야인 회선 신경망(convolutional neural network)에서 요구되는 메모리 사용량과 메모리 접근을 대폭 줄일 수 있는 방법 및 구조에 대한 연구가 활발히 진행되고 있다.
딥 러닝 기반 인식 애플리케이션들은 3D 그래픽 처리에 특화된 GPU(graphic processing unit)에서 수행되어왔다. GPU의 메모리 사용 방법에 있어서, 가령, 프로세서가 내부 레지스터 파일(register file, RF)을 액세스(access)하는데 '1'이라는 에너지가 필요하다고 가정하면 내부 버퍼(예컨대, on-chip SRAM)로의 액세스에 '10'의 에너지가 소요되고, 외부 메모리(예컨대, off-chip DRAM)에 '500'의 에너지가 소요될 수 있다. 즉, GPU의 메모리 사용 방법에 있어서 에너지를 줄이기 위해서는 외부 메모리로의 접근을 최소화하는 것이 관건이다.
GPU는 딥 러닝에 필요한 병렬처리 효율을 향상시키기 위해 잘 알려진 GEMM(GEneral Matrix to Matrix Multiplication) 기법을 사용한다. 이는, 3D 어레이(array) 형태의 입력 영상을 매트릭스(matrix) 연산으로 처리하기 위한 2D 어레이 형태로 변환하고, 각 커널의 상수 값과 매트릭스의 곱셈 연산을 수행하게 된다. 이 과정에서 입력 영상의 중복(overlap)되는 부분이 메모리에 복제되어 반복 저장되고 메모리 저장공간의 낭비 및 불필요한 메모리 접근이 발생하게 된다. 이와 같은 외부 메모리 접근이 결국 에너지의 낭비를 가져오게 된다.
최근 제안되고 있는 회선 신경망 전용 가속기는 에너지 소비가 상대적으로 큰 외부 메모리로부터 읽어들인 입력 영상 데이터를 가속기 내부에서 최대한 재사용하여 외부 메모리에 대한 접근을 최소화하는 방법 및 구조를 제안하고 있다.
본 발명이 이루고자 하는 기술적인 과제는, 회선 신경망(convolutional neural network)에서 멀티-레이어(multi-layer)를 통합 처리하여 각 레이어 별 발생하는 중간 결과값의 읽기 및 쓰기를 위한 외부 메모리 접근을 감소시킴으로써 전체 전력 소모를 감소시킬 수 있는 방법 및 장치를 제공하는 것이다.
본 발명의 실시예에 따른 회선 신경망(convolutional neural network) 가속기 내부에 구현되는 프로세싱 엘리먼트(processing element, PE)는, 입력 데이터를 다른 PE로 전달하는 제1 버퍼, 상기 입력 데이터에 기반하여 처리된 출력 데이터를 외부로 전송하는 제2 버퍼, 및 상기 입력 데이터에 제1 연산을 수행하여 중간 데이터를 생성하고, 상기 중간 데이터를 상기 제2 버퍼에 저장하고, 상기 제2 버퍼로부터 피드백되는 상기 중간 데이터에 제2 연산을 수행하여 상기 출력 데이터를 생성하고, 상기 출력 데이터를 상기 제2 버퍼에 저장하는 연산부를 포함한다.
이때, 상기 제1 연산과 상기 제2 연산 각각은 회선 레이어(convolution layer), 비선형 레이어(non-linear layer), 및 정규화 레이어(normalization layer) 중에서 적어도 하나에 관련될 수 있다.
본 발명의 실시예에 따른 회선 신경망에서 가속기는 복수의 프로세싱 엘리먼트(processing element, PE)들을 포함한다. 상기 복수의 PE들 각각은, 입력 데이터를 다른 PE로 전달하는 제1 버퍼, 상기 입력 데이터에 기반하여 처리된 출력 데이터를 외부로 전송하는 제2 버퍼, 및 상기 입력 데이터에 제1 연산을 수행하여 중간 데이터를 생성하고, 상기 중간 데이터를 상기 제2 버퍼에 저장하고, 상기 제2 버퍼로부터 피드백되는 상기 중간 데이터에 제2 연산을 수행하여 상기 출력 데이터를 생성하고, 상기 출력 데이터를 상기 제2 버퍼에 저장하는 연산부를 포함한다.
상기 가속기는 제3 버퍼, 및 상기 복수의 PE들로부터 전송되는 복수의 출력 데이터를 수신하고, 상기 복수의 출력 데이터에 통합(pooling) 연산을 수행하여 상기 제3 버퍼로 전송하는 통합부(pooling unit)를 더 포함할 수 있다.
상기 가속기는 상기 제3 버퍼에 누적되는 최종 데이터가 미리 설정된 크기 이상이면 상기 제3 버퍼가 상기 최종 데이터를 외부 메모리로 전송하도록 제어하는 버퍼 컨트롤러를 더 포함할 수 있다.
상기 복수의 PE들은 미리 설정된 매트릭스(matrix) 형태로 그룹화될 수 있다. 실시예에 따라, 상기 그룹화된 PE들마다 하나의 통합부를 공유할 수 있다.
실시예에 따라, 상기 복수의 PE들 중에서 적어도 하나는, 인접하는 PE들로부터 인접 출력 데이터를 수신하고, 상기 인접 출력 데이터 및 상기 제2 버퍼에 저장되는 상기 출력 데이터에 통합(pooling) 연산을 수행하는 통합부를 더 포함할 수 있다.
상기 가속기는 외부의 프로세서(processor)의 명령에 따라 제어될 수 있다.
상기 출력 데이터는 상기 복수의 PE들 중에서 어느 하나, 통합부(pooling unit), 및 외부 메모리 중에서 어느 하나로 전송될 수 있다.
본 발명의 실시예에 따른 회선 신경망에서 복수의 PE들을 포함하는 가속기의 동작 방법은, 입력 데이터를 제1 버퍼에 저장하고, 상기 입력 데이터를 다른 PE로 전달하는 단계와, 상기 입력 데이터에 제1 연산을 수행하여 중간 데이터를 생성하고, 상기 중간 데이터를 제2 버퍼에 저장하는 단계와, 상기 제2 버퍼로부터 피드백되는 상기 중간 데이터에 제2 연산을 수행하여 출력 데이터를 생성하고, 상기 출력 데이터를 상기 제2 버퍼에 저장하는 단계와, 상기 출력 데이터를 상기 제2 버퍼로부터 외부로 출력하는 단계를 포함한다.
본 발명의 실시예에 따른 회선 신경망(convolutional neural network)에서 가속기 및 이의 동작 방법은, 멀티-레이어(multi-layer)를 통합 처리하여 각 레이어 별로 발생하는 중간 결과값의 읽기 및 쓰기를 위한 외부 메모리 접근을 감소시킴으로써 전체 전력 소모를 감소시킬 수 있다.
도 1은 회선 신경망(convolutional neural network)에서 가속기의 레이어 별 동작 및 메모리 입출력을 설명하기 위한 도면이다.
도 2는 본 발명의 실시예에 따른 전자 장치를 나타내는 블록도이다.
도 3은 본 발명의 실시예에 따른 회선 신경망에서 가속기의 레이어 별 동작 및 메모리 입출력을 설명하기 위한 도면이다.
도 4는 본 발명의 실시예에 따른 회선 신경망에서 가속기의 구조를 나타내는 블록도이다.
도 5는 본 발명의 실시예에 따른 회선 신경망에서 가속기의 동작을 설명하기 위한 도면이다.
도 6은 본 발명의 실시예에 따라 프로세싱 엘리먼트(processing element, PE)가 통합(pooing) 연산을 수행하는 방법을 설명하는 도면이다.
도 7은 본 발명의 다른 실시예에 따라 PE가 통합 연산을 수행하는 방법을 설명하는 도면이다.
도 8은 본 발명의 실시예에 따른 회선 신경망에서 가속기의 동작 방법을 설명하기 위한 플로우 차트이다.
도 9는 본 발명의 실시예에 따른 PE가 통합 연산을 수행하는 방법을 설명하기 위한 플로우 차트이다.
도 10은 본 발명의 실시예에 따라 풀링 사이즈와 스트라이드가 동일한 경우 PE가 통합 연산을 수행하는 방법을 설명하는 도면이다.
도 11은 본 발명의 다른 실시예에 따라 풀링 사이즈가 스트라이드보다 큰 경우 PE가 통합 연산을 수행하는 방법을 설명하는 도면이다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시 예들을 상세히 설명한다. 이 때, 첨부된 도면에서 동일한 구성 요소는 가능한 동일한 부호로 나타내고 있음에 유의해야 한다. 또한 본 발명의 요지를 흐리게 할 수 있는 공지 기능 및 구성에 대한 상세한 설명은 생략할 것이다.
본 명세서에서 실시 예를 설명함에 있어서 본 발명이 속하는 기술 분야에 익히 알려져 있고 본 발명과 직접적으로 관련이 없는 기술 내용에 대해서는 설명을 생략한다. 이는 불필요한 설명을 생략함으로써 본 발명의 요지를 흐리지 않고 더욱 명확히 전달하기 위함이다.
마찬가지 이유로 첨부 도면에 있어서 일부 구성요소는 과장되거나 생략되거나 개략적으로 도시되었다. 또한, 각 구성요소의 크기는 실제 크기를 전적으로 반영하는 것이 아니다. 각 도면에서 동일한 또는 대응하는 구성요소에는 동일한 참조 번호를 부여하였다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시 예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시 예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
이 때, 처리 흐름도 도면들의 각 블록과 흐름도 도면들의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수 있음을 이해할 수 있을 것이다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 흐름도 블록(들)에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 흐름도 블록(들)에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 흐름도 블록(들)에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
또한, 각 블록은 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실행 예들에서는 블록들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
이 때, 본 실시 예에서 사용되는 '~부'라는 용어는 소프트웨어 또는 FPGA또는 ASIC과 같은 하드웨어 구성요소를 의미하며, '~부'는 어떤 역할들을 수행한다. 그렇지만 '~부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '~부'는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 '~부'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다. 구성요소들과 '~부'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '~부'들로 결합되거나 추가적인 구성요소들과 '~부'들로 더 분리될 수 있다. 뿐만 아니라, 구성요소들 및 '~부'들은 디바이스 또는 보안 멀티미디어카드 내의 하나 또는 그 이상의 CPU들을 재생시키도록 구현될 수도 있다.
도 1은 회선 신경망(convolutional neural network)에서 가속기의 레이어 별 동작 및 메모리 입출력을 설명하기 위한 도면이다.
최근 제안되고 있는 회선 신경망 전용 가속기는 에너지 소비가 상대적으로 큰 외부 메모리로부터 읽어들인 입력 영상 데이터를 가속기 내부에서 최대한 재사용하여 외부 메모리에 대한 접근을 최소화하는 방법 및 구조를 제안하고 있다.
회선 신경망 전용 가속기는 입력 데이터에 대한 연산을 수행하는 프로세싱 엘리먼트(processing element, 이하 PE라 한다)를 2D-어레이(array) 형태로 배치하는 특징을 갖는다. 상기 PE를 2D-어레이 형태로 배치함으로써 상기 입력 데이터는 상하 혹은 좌우의 PE 간에 전달되어 재사용될 수 있다.
상기 PE는 회선(Convolution) 연산 시 입력 영상 또는 피쳐 맵(feature map) 데이터가 중복 사용(data reuse)되는 특성을 최대한 이용하여 데이터 레벨의 병렬 처리를 하기 위한 연산을 수행할 수 있다.
각각의 PE는 주로 회선(convolution) 연산 수행을 위한 MAC(multiplication and accumulation) 기능을 수행할 수 있고, 누적(accumulate)된 중간값의 저장 및 이웃한 PE의 데이터 전송 시 데이터의 임시저장을 위한 내부 버퍼를 포함한다.
도 1에서는 신경망 전용 가속기가 레이어 내의 데이터를 재활용하는 방법을 설명한다.
도 1을 참조하면, 전형적인 회선 신경망 구조는 회선(convolution) 레이어(110), 비선형(non-linear) 레이어(120), 정규화(normalization) 레이어(130), 및 통합(pooling) 레이어(140)의 반복 수행으로 이루어져 있고, 각 레이어의 처리 시 외부 메모리(100)로부터 입력 데이터를 읽어와 해당 레이어의 연산 수행 후 결과 값을 외부 메모리(100)에 쓰는 동작을 반복하게 된다. 이 과정 중 불필요한 외부 메모리(100)로의 입/출입이 반복 발생하게 된다. 이때, 정규화 레이어(130)는 ReLU(rectified linear unit), Tanh(hyperbolic tangent), Sigmoid 함수 등으로 구현될 수 있다.
이와 같이 처리하는 이유는, 회선 신경망 학습 시 역 전달(back propagation)이라는 기법을 통해 결과 오차를 최소화하는 방향으로 상수 값을 계속 조절하게 되는데 이 과정 중 중간값이 메모리에 저장되어야 하므로 레이어 간의 분리가 필수적이다. 만약 레이어를 통합한다면 중간값의 정보가 사라져 학습을 할 수 없다. 따라서, GPU 기반 개발된 툴(tool) 및 라이브러리(library)는 각 레이어 별 분리 처리를 하는 것으로 개발되었다.
도 2는 본 발명의 실시예에 따른 전자 장치를 나타내는 블록도이다.
도 2를 참조하면, 전자 장치는 CPU(central processing unit, 200), 회선 신경망 가속기(convolutional neural network accelerator, 210), 메모리(220), 및 버스(230)를 포함한다.
버스(230)를 통해, CPU(200)는 회선 신경망 가속기(210), 및 메모리(220) 중에서 적어도 하나의 동작을 제어할 수 있다. CPU(200)는 프로세서 또는 멀티 코어 프로세서로 구현될 수 있다.
회선 신경망 가속기(210)는 CPU의 제어에 따라 입력 데이터에 대한 특징을 추출하여 피쳐 맵(feature map)을 생성하고, 상기 피쳐 맵의 크기를 축소하여 상기 입력 데이터에 대한 판단(inference)을 수행할 수 있는 장치를 의미한다. 특히, 회선 신경망 가속기(210)는 피쳐 맵(feature map)을 생성하기 위한 회선onvolution) 연산을 반복 수행한다.
회선 신경망 가속기(210)는 입력 데이터에 대한 연산을 수행하는 프로세싱 엘리먼트(processing element, 이하 PE라 한다)를 2D-어레이(array) 형태로 배치하여 구성될 수 있다. 상기 PE는 주로 회선(convolution) 연산 수행을 위한 MAC(multiplication and accumulation) 기능을 수행할 수 있고, 누적(accumulate)된 중간값의 저장 및 이웃한 PE의 데이터 전송 시 데이터의 임시저장을 위해 내부 버퍼를 포함한다.
메모리(220)는 DRAM(dynamic random access memory), 플래시 메모리 장치 등으로 구현될 수 있다.
도 3은 본 발명의 실시예에 따른 회선 신경망에서 가속기의 레이어 별 동작 및 메모리 입출력을 설명하기 위한 도면이다.
도 3에서는 신경망 전용 가속기가 레이어 간 데이터를 재활용하는 방법을 설명한다.
도 3을 참조하면, 본 발명의 실시예에 따른 회선 신경망에서 가속기는 회선(convolution) 레이어(310), 비선형(non-linear) 레이어(320), 및 정규화(normalization) 레이어(330)를 통합 처리하고, 모든 연산결과 처리가 끝난 이후에 통합(pooling) 연산(340)을 수행한 후 출력값 저장을 위해 외부 메모리(300)에 접근함으로써 외부 메모리(300)로의 접근을 최소화하는 방식을 제안한다. 이때, 통합 연산은 피쳐 맵(feature map)의 사이즈를 줄이기 위한 연산 특성상 입력데이터 대비 메모리에 써넣을 데이터 사이즈를 대폭 줄이게 된다.
이와 같은 레이어 통합 처리(layer fusion)를 위해서 가속기 내부의 프로세싱 엘리먼트(PE)가 각각의 레이어 처리를 할 수 있도록 해당 연산 기능을 포함하고 계산된 중간값을 외부 메모리(300)가 아닌 내부 버퍼(buffer)에 임시로 저장함으로써 불필요한 외부 메모리(300) 입/출입을 제거한 처리가 가능하다.
이때, 통합(pooling) 연산은 주어진 입력 영상의 사이즈를 줄이는 것으로서, 미리 설정된 매트릭스 형태(예컨대, 2x2)의 복수의 PE들에서 최대(max) 연산 값을 갖는 PE를 선택하는 맥스 풀링 연산, 또는 미리 설정된 매트릭스 형태(예컨대, 2x2)의 복수의 PE들의 평균(avergae) 연산 값을 계산하는 애버리지 풀링 연산 등을 의미할 수 있다.
예컨대, PE 내부에 구현되는 통합부(pooling unit 또는 pooler)는 입력된 4개의 데이터 중 내부 트리(tree) 형태로 구성된 비교기(Comparator)를 통해 최대(또는 평균) 결과값을 출력한다. 이렇게 통합 처리된 값은 아웃 버퍼(out buffer)에 차례로 쌓이게 되고 정해진 크기(size)가 채워지면 외부 메모리에 전송되어 불필요한 메모리 접근을 최소화하게 된다. 여기서, 각 레이어를 통합 처리 시 학습(training)이 불가한 문제가 발생하므로 이러한 레이어 통합 처리 기술을 적용하기 위해 학습(training)과 추론(inference)을 위한 라이브러리(library) 및 툴(tool)의 분리가 필요하게 된다.
도 4는 본 발명의 실시예에 따른 회선 신경망에서 가속기의 구조를 나타내는 블록도이다.
도 4를 참조하면, 회선 신경망에서 가속기(400)는 복수의 프로세싱 타일(processing tile(PT), 410), 아웃 버퍼(440), 및 버퍼 컨트롤러(450)를 포함한다. 이때, 복수의 PT들 각각은 복수의 프로세싱 엘리먼트(processing element(PE), 420), 및 통합부(pooler, 430)를 포함하고, 복수의 PE들 각각은 MAC(multiplication and accumulation) 유닛(421), 비선형(non-linear) 유닛(423), 정규화(normalization) 유닛(425), 및 PE 버퍼(427)를 포함할 수 있다.
즉, 본 발명에서 제안하는 신경망 가속기의 구조는 도 4에서 도시된 바와 같이 내부에 PT(410)를 2D-어레이(array) 형태로 배치하고 결과값을 임시로 저장하는 아웃 버퍼(440), 아웃 버퍼(440)에 저장된 결과값을 외부 메모리(460)로 전송하는 버퍼 컨트롤러(450)로 구성된다.
PT(410) 내부는 복수의 PE들(예컨대, 4개)을 클러스팅(clustering)하여 이루어지고 풀링(pooling) 연산 처리를 위한 별도의 통합부(430)을 포함한다. 다만, 다른 실시예에 따라 통합부(430)는 PE(420) 내부에 구현되어 통합(pooling) 연산을 수행할 수도 있다.
각각의 PE(420)는 회선 신경망의 대부분의 레이어 처리에 필요한 연산부(421, 423, 425), 및 PE 버퍼(427)를 포함한다. 즉, PE(420)는 컨볼루션(convolution) 연산을 위한 MAC 유닛(421), 비선형(non-linear) 연산을 위한 비선형 유닛(423), 정규화(normalization) 연산을 위한 정규화 유닛(425)을 포함할 수 있다. 또한, PE(420)는 데이터 누적 및 데이터 내부 재활용을 위한 PE 버퍼(427)를 포함할 수 있다.
MAC 유닛(421)은 입력 영상 데이터와 상수 값을 곱한 뒤 이를 모두 누적해서 더하는 컨볼루션(convolution) 연산을 수행할 수 있다.
비선형 유닛(423)은 회선 신경망의 비선형 액티베이션(non-linear activation) 연산을 수행할 수 있다. 비선형 액티베이션 연산으로서 ReLU(rectified linear unit), Tanh(hyperbolic tangent), Sigmoid 함수 등이 이에 해당하고, 최근 연산의 단순함과 여러 장점으로 인해 ReLU가 가장 널리 사용된다. 따라서, 나머지 Tanh와 Sigmoid 연산기는 경우에 따라 제거 가능하다.
정규화 유닛(425)은 정규화 레이어(normalization layer)의 연산 처리를 담당하나, 실시예들에 따라 정규화 유닛(425)은 생략(또는 제거)될 수 있다.
통합부(430)는 PT(410)를 구성하는 복수의 PE들로부터 제공받은 데이터 중에서 최대값(max pooling)을 선택하거나, PT(410)를 구성하는 복수의 PE들로부터 제공받은 데이터의 평균값(average pooling)을 연산하여 출력할 수 있다.
PE(420)에 의해 연산이 수행된 결과값은 아웃 버퍼(440)에 임시로 저장되었다가 미리 정한 데이터 사이즈가 채워지면 버퍼 컨트롤러(450)의 제어에 따라 외부 메모리(460)로 전송된다.
도 5는 본 발명의 실시예에 따른 회선 신경망에서 가속기의 동작을 설명하기 위한 도면이다.
회선 신경망(convolutional neural network)에서 가속기는 복수의 프로세싱 엘리먼트(processing element, PE)들을 포함할 수 있다. 상기 가속기는 외부의 프로세서(processor)의 명령에 따라 제어될 수 있다. 또한, 상기 복수의 PE들은 미리 설정된 매트릭스 형태(예컨대, 2
Figure pat00001
2, 3
Figure pat00002
3 매트릭스)로 그룹화될 수 있다.
상기 복수의 PE들 중에서 어느 하나인 PE(500)는 제1 버퍼(510), 연산부(520), 및 제2 버퍼(530)를 포함한다. 다른 실시예에 따라, 제1 버퍼(510) 및 제2 버퍼(530)는 도 4의 PE 버퍼(427)와 같이 하나의 버퍼로서 구현될 수 있다.
제1 버퍼(510)는 입력 데이터(input data)를 외부 메모리 또는 인접하는 다른 PE로부터 수신하여 저장하고, 상기 입력 데이터를 인접하는 또 다른 PE로 전송할 수 있다.
연산부(520)는 상기 입력 데이터에 제1 연산을 수행하여 중간 데이터를 생성하고, 상기 중간 데이터를 제2 버퍼(530)에 저장할 수 있다. 연산부(520)는 제2 버퍼(530)로부터 피드백되는 상기 중간 데이터에 제2 연산을 수행하여 출력 데이터를 생성하고, 상기 출력 데이터를 제2 버퍼(530)에 저장할 수 있다.
이때, 상기 제1 연산과 상기 제2 연산 각각은 회선 레이어(convolution layer), 비선형 레이어(non-linear layer), 및 정규화 레이어(normalization layer) 중에서 적어도 하나에 관련될 수 있다.
실시예에 따라, 연산부(520)는 입력 데이터에 대한 회선 레이어(convolution layer)를 처리하고 처리 결과로서 중간 데이터를 생성하고, 상기 중간 데이터를 제2 버퍼(530)에 저장할 수 있다. 연산부(520)는 제2 버퍼(530)로부터 피드백되는 상기 중간 데이터에 대한 비선형 레이어(non-linear layer)를 처리하고 처리 결과로서 출력 데이터를 생성하고, 상기 출력 데이터를 제2 버퍼(530)에 저장할 수 있다. 이때, 연산부(520)는 정규화 레이어(normalization layer)의 처리를 생략할 수 있다.
다른 실시예에 따라, 연산부(520)는 입력 데이터에 대한 회선 레이어(convolution layer)를 처리하고 처리 결과로서 제1 중간 데이터를 생성하고, 상기 중간 데이터를 제2 버퍼(530)에 저장할 수 있다. 연산부(520)는 제2 버퍼(530)로부터 피드백되는 상기 제1 중간 데이터에 대한 비선형 레이어(non-linear layer)를 처리하고 처리 결과로서 제2 중간 데이터를 생성하고, 상기 제2 중간 데이터를 제2 버퍼(530)에 저장할 수 있다. 연산부(520)는 제2 버퍼(530)로부터 피드백되는 상기 제2 중간 데이터에 대한 정규화 레이어(normalization layer)를 처리하고 처리 결과로서 출력 데이터를 생성하고, 상기 출력 데이터를 제2 버퍼(530)에 저장할 수 있다.
제2 버퍼(530)는 상기 출력 데이터를 상기 복수의 PE들 중에서 어느 하나, 통합부(pooling unit), 및 외부 메모리 중에서 어느 하나로 출력할 수 있다.
상기 가속기는, 상기 복수의 PE들로부터 전송되는 복수의 출력 데이터를 수신하고, 상기 복수의 출력 데이터에 통합(pooling) 연산을 수행하여 제3 버퍼로 전송하는 통합부(pooling unit)를 더 포함할 수 있다.
이때, 상기 제3 버퍼는 상기 통합부로부터 전송되는 최종 데이터가 미리 설정된 크기 이상이면 버퍼 컨트롤러의 제어에 따라 상기 최종 데이터를 외부 메모리로 전송할 수 있다.
실시예에 따라, 상기 복수의 PE들은 미리 설정된 형태로 그룹화되고, 상기 그룹화된 PE들마다 하나의 통합부를 공유할 수 있다.
다른 실시예에 따라, 상기 복수의 PE들 중에서 적어도 하나는, 인접하는 PE들로부터 인접 출력 데이터를 수신하고, 상기 인접 출력 데이터 및 상기 제1 버퍼에 저장되는 상기 출력 데이터에 통합(pooling) 연산을 수행하는 통합부를 더 포함할 수 있다. 즉, 상기 복수의 PE들 중에서 일부는 내부에 통합부를 더 포함함으로써 통합(pooling) 연산을 더 수행할 수 있다.
도 6은 본 발명의 실시예에 따라 프로세싱 엘리먼트(processing element, PE)가 통합(pooing) 연산을 수행하는 방법을 설명하는 도면이다.
도 6은 복수의 PE들 각각이 내부에 통합부(pooling unit 또는 pooler)을 포함하지 않고, 외부에 구현된 별도의 통합부를 통해 통합 연산을 수행하는 방법을 설명하는 도면이다.
복수의 PE들(600 ~ 600-3)이 2×2 매트릭스의 형태로 그룹화된 경우, 복수의 PE들(600 ~ 600-3)로부터 전송되는 복수의 출력 데이터는 외부에 구현된 통합부(610)로 전송되고, 통합부(610)는 상기 복수의 출력 데이터에 대한 통합 연산을 수행할 수 있다.
이때, 통합 연산은 상기 복수의 출력 데이터의 사이즈를 줄이는 것으로서, 2x2 매트릭스 형태의 복수의 PE들에서 최대(max) 연산 값을 갖는 PE를 선택하는 맥스 풀링 연산, 또는 2x2 매트릭스 형태의 복수의 PE들의 평균(avergae) 연산 값을 계산하는 애버리지 풀링 연산 등을 의미할 수 있다.
또한, 복수의 PE들(620 ~ 620-8)이 3×3 매트릭스의 형태로 그룹화된 경우, 복수의 PE들(620 ~ 620-8)로부터 전송되는 복수의 출력 데이터는 외부에 구현된 통합부(630)로 전송되고, 통합부(630)는 상기 복수의 출력 데이터에 대한 통합 연산을 수행할 수 있다.
이때, 통합 연산은 상기 복수의 출력 데이터의 사이즈를 줄이는 것으로서, 3x3 매트릭스 형태의 복수의 PE들에서 최대(max) 연산 값을 갖는 PE를 선택하는 맥스 풀링 연산, 또는 3x3 매트릭스 형태의 복수의 PE들의 평균(avergae) 연산 값을 계산하는 애버리지 풀링 연산 등을 의미할 수 있다.
본 발명에서는 스트라이드(stride)가 풀링 사이즈(pooling size)보다 작을 경우에도 인접하는 PE 간 중간 연산 값을 공유함으로써 모든 풀링 사이즈, 모든 스트라이드에 대해서 통합 연산을 수행할 수 있다.
도 7은 본 발명의 다른 실시예에 따라 PE가 통합 연산을 수행하는 방법을 설명하는 도면이다.
도 7은 복수의 PE들 중에서 어느 하나의 PE가 내부에 통합부(pooling unit 또는 pooler)을 포함하여 이를 통해 통합 연산을 수행하는 방법을 설명하는 도면이다. 이때, 상기 복수의 PE들 중에서 미리 설정된 개수의 PE들을 포함하는 PT(도 4의 410)는 별도의 통합부를 포함하지 않을 수 있다.
복수의 PE들(700 ~ 710)이 2×2 매트릭스의 형태로 그룹화되고 특정 PE(710) 내부에 통합부가 구현된 경우, 나머지 PE들(700 ~ 700-2)로부터 전송되는 복수의 출력 데이터는 특정 PE(710) 내부에 구현된 통합부로 전송되고, 상기 통합부는 상기 복수의 출력 데이터에 대한 통합 연산을 수행할 수 있다.
또한, 복수의 PE들(720 ~ 730)이 3×3 매트릭스의 형태로 그룹화되고 특정 PE(730) 내부에 통합부가 구현된 경우, 나머지 PE들(720 ~ 720-7)로부터 전송되는 복수의 출력 데이터는 특정 PE(730) 내부에 구현된 통합부로 전송되고, 상기 통합부는 상기 복수의 출력 데이터에 대한 통합 연산을 수행할 수 있다.
도 8은 본 발명의 실시예에 따른 회선 신경망에서 가속기의 동작 방법을 설명하기 위한 플로우 차트이다.
회선 신경망에서 가속기는 입력 데이터를 상기 가속기의 특정 PE(processing element) 내부에 구현된 제1 버퍼에 저장하고, 상기 입력 데이터를 다른 PE로 전달할 수 있다(S800).
상기 가속기는 상기 입력 데이터에 제1 연산을 수행하여 중간 데이터를 생성하고, 상기 중간 데이터를 상기 특정 PE 내부에 구현된 제2 버퍼에 저장할 수 있다(S810).
상기 가속기는 상기 제2 버퍼로부터 피드백되는 상기 중간 데이터에 제2 연산을 수행하여 출력 데이터를 생성하고, 상기 출력 데이터를 상기 제2 버퍼에 저장할 수 있다(S820).
상기 제1 연산과 상기 제2 연산 각각은 회선 레이어(convolution layer), 비선형 레이어(non-linear layer), 및 정규화 레이어(normalization layer) 중에서 적어도 하나에 관련된 것일 수 있다.
상기 가속기는 상기 출력 데이터를 상기 제2 버퍼로부터 복수의 PE들 중에서 어느 하나, 통합부(pooling unit), 및 외부 메모리 중에서 어느 하나로 전송할 수 있다. 이때, 상기 통합부는 상기 복수의 PE들 중에서 적어도 하나에 구현되거나 PE 외부에 구현될 수 있다.
도 9는 본 발명의 실시예에 따른 PE가 통합 연산을 수행하는 방법을 설명하기 위한 플로우 차트이다.
회선 신경망에서 가속기 내부에 구현된 PE(processing element)는 입력 데이터를 기반으로 출력 데이터를 생성할 수 있다(S900).
상기 PE는 상기 PE 내부에 통합부(pooling unit 또는 pooler)를 포함하는지 여부를 판단하여(S910), 서로 다른 방법으로 통합 연산을 수행할 수 있다.
상기 PE가 내부에 통합부를 포함하면, 상기 PE는 인접하는 PE들로부터 인접 출력 데이터를 수신하고, 상기 인접 출력 데이터 및 상기 출력 데이터에 통합(pooling) 연산을 수행할 수 있다(S920).
상기 PE가 내부에 통합부를 포함하지 않으면, 상기 PE는 상기 출력 데이터를 다른 PE 또는 외부에 구현되는 통합부로 전송할 수 있다(S930).
도 10은 본 발명의 실시예에 따라 풀링 사이즈와 스트라이드가 동일한 경우 PE가 통합 연산을 수행하는 방법을 설명하는 도면이다.
풀링 사이즈(pooling size)가 2×2이고 스트라이드(stride)가 2인 경우, 복수의 PE들 각각은 통합부를 포함하는 특정 PE로 출력 데이터를 전달할 수 있다. 이때, 복수의 PE들 각각은 최소 1회부터 최대 2회까지 출력 데이터를 인접하는 PE로 전달할 수 있다(1, 2/ 1-1, 2-1/ 1-2, 2-2/ 1-3, 2-3). 상기 특정 PE는 복수의 출력 데이터에 대한 통합(pooling) 연산을 수행하여 하나의 출력 데이터를 생성할 수 있다. 상기 통합 연산은 복수의 출력 데이터에서 최대 값을 선택하거나, 상기 복수의 출력 데이터의 평균 값을 산출하는 연산을 의미할 수 있다.
또한, 풀링 사이즈(pooling size)가 3×3이고 스트라이드(stride)가 3인 경우, 복수의 PE들 각각은 통합부를 포함하는 특정 PE로 출력 데이터를 전달할 수 있다. 이때, 복수의 PE들 각각은 최소 1회부터 최대 4회까지 출력 데이터를 인접하는 PE로 전달할 수 있다(1, 2, 3, 4/ 1-1, 2-1, 3-1, 4-1/ 1-2, 2-2, 3-2, 4-2/ 1-3, 2-3, 3-3, 4-3). 상기 특정 PE는 복수의 출력 데이터에 대한 통합(pooling) 연산을 수행하여 하나의 출력 데이터를 생성할 수 있다.
도 11은 본 발명의 다른 실시예에 따라 풀링 사이즈가 스트라이드보다 큰 경우 PE가 통합 연산을 수행하는 방법을 설명하는 도면이다.
도 11에서는 도 10과 달리 풀링 사이즈가 스트라이드보다 크기 때문에 통합 연산이 중복되어 수행되는 것을 방지해야 한다. 따라서, 이 경우 복수의 PE들은 인접하는 중간 연산 값을 공유함으로써 통합 연산의 중복 수행을 방지할 수 있다.
풀링 사이즈(pooling size)가 3×3이고 스트라이드(stride)가 2인 경우, 복수의 PE들 각각은 통합부를 포함하는 특정 PE로 출력 데이터를 전달할 수 있다. 이때, 복수의 PE들 각각은 최소 1회부터 최대 4회까지 출력 데이터를 인접하는 PE로 전달할 수 있다(1, 2, 3, 4/ 1-1, 2-1, 3-1, 4-1/ 1-2, 2-2, 3-2, 4-2/ 1-3, 2-3, 3-3, 4-3).
풀링 사이즈(pooling size)가 3×3이고 스트라이드(stride)가 2인 경우, 중복되는 통합 연산을 방지하기 위해 복수의 PE들 간 경계에서 중간 연산 값을 1회 공유할 수 있다.
또한, 풀링 사이즈(pooling size)가 3×3이고 스트라이드(stride)가 1인 경우, 복수의 PE들 각각은 통합부를 포함하는 특정 PE로 출력 데이터를 전달할 수 있다. 이때, 복수의 PE들 각각은 최소 1회부터 최대 4회까지 출력 데이터를 인접하는 PE로 전달할 수 있다(1, 2, 3, 4/ 1-1, 2-1, 3-1, 4-1/ 1-2, 2-2, 3-2, 4-2/ 1-3, 2-3, 3-3, 4-3).
풀링 사이즈(pooling size)가 3×3이고 스트라이드(stride)가 2인 경우, 중복되는 통합 연산을 방지하기 위해 복수의 PE들 간 경계에서 중간 연산 값을 복수 회 공유할 수 있다.
한편, 본 명세서와 도면에는 본 발명의 바람직한 실시예에 대하여 개시하였으며, 비록 특정 용어들이 사용되었으나, 이는 단지 본 발명의 기술 내용을 쉽게 설명하고 발명의 이해를 돕기 위한 일반적인 의미에서 사용된 것이지, 본 발명의 범위를 한정하고자 하는 것은 아니다. 여기에 개시된 실시예 외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형 예들이 실시 가능하다는 것은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 자명한 것이다.
200: CPU
210, 400: 회선신경망 가속기
220: 메모리
420: 프로세싱 엘리먼트(PE)
421: MAC 유닛
423: 비선형 유닛
425:정규화 유닛
427: PE 버퍼
430: 통합부

Claims (17)

  1. 회선 신경망(convolutional neural network) 가속기 내부에 구현되는 프로세싱 엘리먼트(processing element, PE)에 있어서,
    입력 데이터를 다른 PE로 전달하는 제1 버퍼;
    상기 입력 데이터에 기반하여 처리된 출력 데이터를 외부로 전송하는 제2 버퍼; 및
    상기 입력 데이터에 제1 연산을 수행하여 중간 데이터를 생성하고, 상기 중간 데이터를 상기 제2 버퍼에 저장하고, 상기 제2 버퍼로부터 피드백되는 상기 중간 데이터에 제2 연산을 수행하여 상기 출력 데이터를 생성하고, 상기 출력 데이터를 상기 제2 버퍼에 저장하는 연산부를 포함하는 것을 특징으로 하는 가속기.
  2. 제1항에 있어서,
    상기 제1 연산과 상기 제2 연산 각각은 회선 레이어(convolution layer), 비선형 레이어(non-linear layer), 및 정규화 레이어(normalization layer) 중에서 적어도 하나에 관련되는 것을 특징으로 하는 PE.
  3. 회선 신경망(convolutional neural network)에서 복수의 프로세싱 엘리먼트(processing element, PE)들을 포함하는 가속기에 있어서,
    상기 복수의 PE들 각각은,
    입력 데이터를 다른 PE로 전달하는 제1 버퍼;
    상기 입력 데이터에 기반하여 처리된 출력 데이터를 외부로 전송하는 제2 버퍼; 및
    상기 입력 데이터에 제1 연산을 수행하여 중간 데이터를 생성하고, 상기 중간 데이터를 상기 제2 버퍼에 저장하고, 상기 제2 버퍼로부터 피드백되는 상기 중간 데이터에 제2 연산을 수행하여 상기 출력 데이터를 생성하고, 상기 출력 데이터를 상기 제2 버퍼에 저장하는 연산부를 포함하는 것을 특징으로 하는 가속기.
  4. 제3항에 있어서,
    상기 제1 연산과 상기 제2 연산 각각은 회선 레이어(convolution layer), 비선형 레이어(non-linear layer), 및 정규화 레이어(normalization layer) 중에서 적어도 하나에 관련되는 것을 특징으로 하는 가속기.
  5. 제3항에 있어서,
    제3 버퍼; 및
    상기 복수의 PE들로부터 전송되는 복수의 출력 데이터를 수신하고, 상기 복수의 출력 데이터에 통합(pooling) 연산을 수행하여 상기 제3 버퍼로 전송하는 통합부(pooling unit)를 더 포함하는 것을 특징으로 하는 가속기.
  6. 제5항에 있어서,
    상기 제3 버퍼에 누적되는 최종 데이터가 미리 설정된 크기 이상이면 상기 제3 버퍼가 상기 최종 데이터를 외부 메모리로 전송하도록 제어하는 버퍼 컨트롤러를 더 포함하는 것을 특징으로 하는 가속기.
  7. 제3항에 있어서,
    상기 복수의 PE들은 미리 설정된 매트릭스(matrix) 형태로 그룹화되는 것을 특징으로 하는 가속기.
  8. 제7항에 있어서,
    상기 그룹화된 PE들마다 하나의 통합부를 공유하는 것을 특징으로 하는 가속기.
  9. 제3항에 있어서, 상기 복수의 PE들 중에서 적어도 하나는,
    인접하는 PE들로부터 인접 출력 데이터를 수신하고, 상기 인접 출력 데이터 및 상기 제2 버퍼에 저장되는 상기 출력 데이터에 통합(pooling) 연산을 수행하는 통합부를 더 포함하는 것을 특징으로 하는 가속기.
  10. 제3항에 있어서,
    상기 가속기는 외부의 프로세서(processor)의 명령에 따라 제어되는 것을 특징으로 하는 가속기.
  11. 제3항에 있어서,
    상기 출력 데이터는 상기 복수의 PE들 중에서 어느 하나, 통합부(pooling unit), 및 외부 메모리 중에서 어느 하나로 전송되는 것을 특징으로 하는 가속기.
  12. 회선 신경망(convolutional neural network)에서 복수의 프로세싱 엘리먼트(processing element, PE)들을 포함하는 가속기의 동작 방법에 있어서,
    입력 데이터를 제1 버퍼에 저장하고, 상기 입력 데이터를 다른 PE로 전달하는 단계;
    상기 입력 데이터에 제1 연산을 수행하여 중간 데이터를 생성하고, 상기 중간 데이터를 제2 버퍼에 저장하는 단계;
    상기 제2 버퍼로부터 피드백되는 상기 중간 데이터에 제2 연산을 수행하여 출력 데이터를 생성하고, 상기 출력 데이터를 상기 제2 버퍼에 저장하는 단계; 및
    상기 출력 데이터를 상기 제2 버퍼로부터 외부로 출력하는 단계를 포함하는 것을 특징으로 하는 방법.
  13. 제12항에 있어서,
    상기 제1 연산과 상기 제2 연산 각각은 회선 레이어(convolution layer), 비선형 레이어(non-linear layer), 및 정규화 레이어(normalization layer) 중에서 적어도 하나에 관련되는 것을 특징으로 하는 방법.
  14. 제12항에 있어서,
    상기 복수의 PE들로부터 전송되는 복수의 출력 데이터를 수신하고, 상기 복수의 출력 데이터에 통합(pooling) 연산을 수행하여 제3 버퍼로 전송하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  15. 제12항에 있어서,
    상기 복수의 PE들을 미리 설정된 매트릭스(matrix) 형태로 그룹화하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  16. 제12항에 있어서,
    인접하는 PE들로부터 인접 출력 데이터를 수신하고, 상기 인접 출력 데이터 및 상기 제2 버퍼에 저장되는 상기 출력 데이터에 통합(pooling) 연산을 수행하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  17. 제12항에 있어서, 상기 외부는,
    상기 복수의 PE들 중에서 어느 하나, 통합부(pooling unit), 및 외부 메모리 중에서 어느 하나인 것을 특징으로 하는 방법.

KR1020160095246A 2016-07-27 2016-07-27 회선 신경망에서 가속기 및 이의 동작 방법 KR20180012439A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020160095246A KR20180012439A (ko) 2016-07-27 2016-07-27 회선 신경망에서 가속기 및 이의 동작 방법
EP17183554.9A EP3276539A1 (en) 2016-07-27 2017-07-27 Accelerator in convolutional neural network and method for operating the same
CN201710625400.5A CN107665365A (zh) 2016-07-27 2017-07-27 卷积神经网络中的加速器及其操作方法
US15/662,225 US11120330B2 (en) 2016-07-27 2017-07-27 Accelerator in convolutional neural network and method for operating the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160095246A KR20180012439A (ko) 2016-07-27 2016-07-27 회선 신경망에서 가속기 및 이의 동작 방법

Publications (1)

Publication Number Publication Date
KR20180012439A true KR20180012439A (ko) 2018-02-06

Family

ID=59558187

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160095246A KR20180012439A (ko) 2016-07-27 2016-07-27 회선 신경망에서 가속기 및 이의 동작 방법

Country Status (4)

Country Link
US (1) US11120330B2 (ko)
EP (1) EP3276539A1 (ko)
KR (1) KR20180012439A (ko)
CN (1) CN107665365A (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190134308A (ko) * 2018-05-25 2019-12-04 서강대학교산학협력단 합성곱 신경망을 활용한 데이터 확장방법 및 장치
CN110555512A (zh) * 2019-07-30 2019-12-10 北京航空航天大学 一种二值卷积神经网络数据重用方法及装置
CN111178519A (zh) * 2019-12-27 2020-05-19 华中科技大学 卷积神经网络加速引擎、卷积神经网络加速***及方法
KR20210106222A (ko) * 2020-02-20 2021-08-30 한국과학기술원 딥러닝 강화학습 가속기
US11494623B2 (en) 2017-12-01 2022-11-08 Electronics And Telecommunications Research Institute Processing element and operating method thereof in neural network

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018160180A (ja) * 2017-03-23 2018-10-11 富士通株式会社 情報処理システム、情報処理装置および情報処理システムの制御方法
US11227214B2 (en) 2017-11-14 2022-01-18 Advanced Micro Devices, Inc. Memory bandwidth reduction techniques for low power convolutional neural network inference applications
JP6961640B2 (ja) * 2018-03-22 2021-11-05 南京地平▲線▼机▲器▼人技▲術▼有限公司 データ処理のシステムおよび方法
US20190303757A1 (en) * 2018-03-29 2019-10-03 Mediatek Inc. Weight skipping deep learning accelerator
US11256979B2 (en) * 2018-03-30 2022-02-22 Intel Corporation Common factor mass multiplication circuitry
US10853034B2 (en) * 2018-03-30 2020-12-01 Intel Corporation Common factor mass multiplication circuitry
CN110321998B (zh) * 2018-03-31 2022-06-14 赛灵思公司 卷积神经网络实现方法、装置、加速设备、存储介质
US11948073B2 (en) 2018-04-20 2024-04-02 Advanced Micro Devices, Inc. Machine learning inference engine scalability
US20190392287A1 (en) 2018-06-22 2019-12-26 Samsung Electronics Co., Ltd. Neural processor
CN109146072B (zh) * 2018-08-01 2021-03-23 上海天数智芯半导体有限公司 基于卷积神经网络加速器的数据重用方法
US11775799B2 (en) 2018-08-02 2023-10-03 Advanced Micro Devices, Inc. Runtime extension for neural network training with heterogeneous memory
US11367498B2 (en) * 2018-09-07 2022-06-21 Black Sesame Technologies Inc. Multi-level memory hierarchy
US11138135B2 (en) 2018-09-20 2021-10-05 Samsung Electronics Co., Ltd. Scale-out high bandwidth memory system
CN109409511B (zh) * 2018-09-25 2020-07-28 西安交通大学 一种用于动态可重构阵列的卷积运算数据流调度方法
CN112703511B (zh) * 2018-09-27 2023-08-25 华为技术有限公司 运算加速器和数据处理方法
US11467973B1 (en) * 2018-09-28 2022-10-11 Amazon Technologies, Inc. Fine-grained access memory controller
US11769041B2 (en) 2018-10-31 2023-09-26 Advanced Micro Devices, Inc. Low latency long short-term memory inference with sequence interleaving
US11354888B2 (en) * 2018-11-16 2022-06-07 GM Global Technology Operations LLC Method and apparatus for a neural network
CN109598338B (zh) * 2018-12-07 2023-05-19 东南大学 一种基于fpga的计算优化的卷积神经网络加速器
TWI696961B (zh) 2018-12-12 2020-06-21 財團法人工業技術研究院 深度神經網路硬體加速器與其操作方法
CN111338974A (zh) 2018-12-19 2020-06-26 超威半导体公司 用于矩阵数学指令集的图块化算法
CN111353575A (zh) * 2018-12-20 2020-06-30 超威半导体公司 用于卷积神经网络的图块化格式
CN111723918A (zh) 2019-03-18 2020-09-29 超威半导体公司 用于卷积内核的自动生成和调谐工具
US11211944B2 (en) 2019-04-17 2021-12-28 Samsung Electronics Co., Ltd. Mixed-precision compression with random access
US11671111B2 (en) 2019-04-17 2023-06-06 Samsung Electronics Co., Ltd. Hardware channel-parallel data compression/decompression
US11036642B2 (en) * 2019-04-26 2021-06-15 Intel Corporation Architectural enhancements for computing systems having artificial intelligence logic disposed locally to memory
US11880760B2 (en) 2019-05-01 2024-01-23 Samsung Electronics Co., Ltd. Mixed-precision NPU tile with depth-wise convolution
US11610142B2 (en) 2019-05-28 2023-03-21 Ati Technologies Ulc Safety monitor for image misclassification
US11210199B2 (en) 2019-05-31 2021-12-28 Ati Technologies Ulc Safety monitor for invalid image transform
CN110474716B (zh) * 2019-08-14 2021-09-14 安徽大学 基于降噪自编码器的scma编解码器模型的建立方法
JP7462140B2 (ja) 2019-10-29 2024-04-05 国立大学法人 熊本大学 ニューラルネットワーク回路及びニューラルネットワーク演算方法
CN111626403B (zh) * 2020-05-14 2022-05-10 北京航空航天大学 一种基于cpu-fpga内存共享的卷积神经网络加速器
CN111401543B (zh) * 2020-06-08 2020-11-10 深圳市九天睿芯科技有限公司 一种全片上存储的神经网络加速器及其实现方法
CN112118066A (zh) * 2020-11-23 2020-12-22 西南交通大学 一种基于改进卷积神经网络的fbmc-pon解调方法
CN113207127B (zh) * 2021-04-27 2022-04-12 重庆邮电大学 一种noma***中基于分层深度强化学习的动态频谱接入方法
CN115001937B (zh) * 2022-04-11 2023-06-16 北京邮电大学 面向智慧城市物联网的故障预测方法及装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7219085B2 (en) 2003-12-09 2007-05-15 Microsoft Corporation System and method for accelerating and optimizing the processing of machine learning techniques using a graphics processing unit
US8442927B2 (en) 2009-07-30 2013-05-14 Nec Laboratories America, Inc. Dynamically configurable, multi-ported co-processor for convolutional neural networks
CN104077233B (zh) 2014-06-18 2017-04-05 百度在线网络技术(北京)有限公司 多通道卷积层处理方法和装置
US10291813B2 (en) * 2015-04-23 2019-05-14 Google Llc Sheet generator for image processor
US20160379109A1 (en) * 2015-06-29 2016-12-29 Microsoft Technology Licensing, Llc Convolutional neural networks on hardware accelerators
US11055063B2 (en) * 2016-05-02 2021-07-06 Marvell Asia Pte, Ltd. Systems and methods for deep learning processor
US10671349B2 (en) * 2017-07-24 2020-06-02 Tesla, Inc. Accelerated mathematical engine

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11494623B2 (en) 2017-12-01 2022-11-08 Electronics And Telecommunications Research Institute Processing element and operating method thereof in neural network
KR20190134308A (ko) * 2018-05-25 2019-12-04 서강대학교산학협력단 합성곱 신경망을 활용한 데이터 확장방법 및 장치
CN110555512A (zh) * 2019-07-30 2019-12-10 北京航空航天大学 一种二值卷积神经网络数据重用方法及装置
CN110555512B (zh) * 2019-07-30 2021-12-03 北京航空航天大学 一种二值卷积神经网络数据重用方法及装置
CN111178519A (zh) * 2019-12-27 2020-05-19 华中科技大学 卷积神经网络加速引擎、卷积神经网络加速***及方法
CN111178519B (zh) * 2019-12-27 2022-08-02 华中科技大学 卷积神经网络加速引擎、卷积神经网络加速***及方法
KR20210106222A (ko) * 2020-02-20 2021-08-30 한국과학기술원 딥러닝 강화학습 가속기

Also Published As

Publication number Publication date
US11120330B2 (en) 2021-09-14
US20180032859A1 (en) 2018-02-01
CN107665365A (zh) 2018-02-06
EP3276539A1 (en) 2018-01-31

Similar Documents

Publication Publication Date Title
KR20180012439A (ko) 회선 신경망에서 가속기 및 이의 동작 방법
US10990410B2 (en) Systems and methods for virtually partitioning a machine perception and dense algorithm integrated circuit
US11915119B2 (en) Convolutional neural network (CNN) processing method and apparatus performing high speed and precision convolution operations
US11568258B2 (en) Operation method
EP3557485B1 (en) Method for accelerating operations and accelerator apparatus
US11467969B2 (en) Accelerator comprising input and output controllers for feeding back intermediate data between processing elements via cache module
US10394929B2 (en) Adaptive execution engine for convolution computing systems
CN109871936B (zh) 用于处理神经网络中的卷积运算的方法和装置
GB2601664A (en) Processor and system to convert tensor operations in machine learning
US7447720B2 (en) Method for finding global extrema of a set of bytes distributed across an array of parallel processing elements
US11880768B2 (en) Method and apparatus with bit-serial data processing of a neural network
CN109190758B (zh) 用于展开卷积神经网络的张量数据的方法和装置
EP3528181B1 (en) Processing method of neural network and apparatus using the processing method
US11164032B2 (en) Method of performing data processing operation
JP6955598B2 (ja) 複数の畳み込みウィンドウ内の画像データの並行抽出方法、装置、機器及びコンピュータ可読記憶媒体
CN108875914B (zh) 对神经网络数据进行预处理和后处理的方法和装置
KR20190089685A (ko) 데이터를 처리하는 방법 및 장치
US10963775B2 (en) Neural network device and method of operating neural network device
US10990388B2 (en) Semiconductor device
US20230195836A1 (en) One-dimensional computational unit for an integrated circuit
CN111507456A (zh) 具有卷积神经网络处理的方法和装置
US20240135677A1 (en) Method, system and storage media for training a graphics processing neural network with a patch-based approach
CN112732638B (zh) 基于ctpn网络的异构加速***及方法
US11663446B2 (en) Data reuse and efficient processing scheme in executing convolutional neural network
CN114595811A (zh) 用于执行深度学习操作的方法和设备