KR20210019917A - 뉴럴 네트워크를 위한 데이터 처리 방법 및 장치 - Google Patents

뉴럴 네트워크를 위한 데이터 처리 방법 및 장치 Download PDF

Info

Publication number
KR20210019917A
KR20210019917A KR1020190127258A KR20190127258A KR20210019917A KR 20210019917 A KR20210019917 A KR 20210019917A KR 1020190127258 A KR1020190127258 A KR 1020190127258A KR 20190127258 A KR20190127258 A KR 20190127258A KR 20210019917 A KR20210019917 A KR 20210019917A
Authority
KR
South Korea
Prior art keywords
input
plane
weight
elements
output
Prior art date
Application number
KR1020190127258A
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 US16/856,112 priority Critical patent/US20210049474A1/en
Priority to CN202010534666.0A priority patent/CN112396085A/zh
Priority to EP20187317.1A priority patent/EP3789928A3/en
Priority to JP2020134566A priority patent/JP7114659B2/ja
Publication of KR20210019917A publication Critical patent/KR20210019917A/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
    • 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)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Complex Calculations (AREA)

Abstract

뉴럴 네트워크를 위한 데이터 처리 방법 및 장치가 개시된다. 일 실시예에 따르면 데이터 처리 방법은 입력 평면 내 입력 엘리먼트들의 적어도 일부와 웨이트 평면 내 웨이트 엘리먼트들의 적어도 일부 간의 곱셈 결과들을 누적하여 누적 데이터를 생성하고, 누적 데이터에 기초하여 각각 출력 채널들에 대응하는 출력 특징 맵의 출력 평면들 중에 출력 채널에 대응하는 출력 평면을 생성하는 단계들을 포함한다.

Description

뉴럴 네트워크를 위한 데이터 처리 방법 및 장치{METHOD AND APPARATUS OF DATA PROCESSING FOR NEURAL NETWORK}
아래 실시예들은 뉴럴 네트워크를 위한 데이터 처리 방법 및 장치에 관한 것이다.
인식 프로세스의 기술적 자동화는, 예를 들어, 특수한 계산 구조로서 프로세서로 구현된 뉴럴 네트워크 모델을 통해 구현되었으며, 이는 상당한 훈련 후에 입력 패턴과 출력 패턴 사이에서 계산상 직관적인 매핑을 제공할 수 있다. 이러한 맵핑을 생성하는 훈련된 능력은 신경망의 학습 능력이라 할 수 있다. 더구나, 특화된 훈련으로 인해, 이와 같이 특화되어 훈련된 신경망은, 예를 들어, 훈련하지 않은 입력 패턴에 대하여 비교적 정확한 출력을 발생시키는 일반화 능력을 가질 수 있다.
일 실시예에 따르면, 뉴럴 네트워크를 위한 데이터 처리 방법은 각각 입력 채널들에 대응하는 입력 특징 맵의 입력 평면들 중에 제1 입력 채널에 대응하는 제1 입력 평면을 획득하는 단계; 각각 상기 입력 채널들에 대응하는 웨이트 커널의 웨이트 평면들 중에 상기 제1 입력 채널에 대응하는 제1 웨이트 평면을 획득하는 단계; 상기 제1 입력 평면 내 제1 입력 엘리먼트들의 적어도 일부와 상기 제1 웨이트 평면 내 제1 웨이트 엘리먼트들의 적어도 일부 간의 곱셈 결과들을 누적하여 제1 누적 데이터를 생성하는 단계; 및 상기 제1 누적 데이터에 기초하여 각각 출력 채널들에 대응하는 출력 특징 맵의 출력 평면들 중에 제1 출력 채널에 대응하는 제1 출력 평면을 생성하는 단계를 포함한다.
상기 제1 출력 평면을 생성하는 단계는 상기 제1 누적 데이터를 포함하는 각 입력 채널에 관한 각 누적 데이터의 합에 기초하여 상기 제1 출력 평면을 생성하는 단계를 포함할 수 있다. 상기 데이터 처리 방법은 상기 입력 평면들 중에 제2 입력 채널에 대응하는 제2 입력 평면을 획득하는 단계; 상기 웨이트 평면들 중에 상기 제2 입력 채널에 대응하는 제2 웨이트 평면을 획득하는 단계; 및 상기 제2 입력 평면 내 제2 입력 엘리먼트들의 적어도 일부와 상기 제2 웨이트 평면 내 제2 웨이트 엘리먼트들의 적어도 일부 간의 곱셈 결과들을 누적하여 제2 누적 데이터를 생성하는 단계를 더 포함할 수 있다. 상기 제1 출력 평면을 생성하는 단계는 상기 제1 누적 데이터 및 상기 제2 누적 데이터의 합에 기초하여 상기 제1 출력 평면을 생성하는 단계를 포함할 수 있다.
상기 제1 누적 데이터를 생성하는 단계는 상기 제1 입력 평면에서 상기 제1 웨이트 엘리먼트들의 상기 적어도 일부에 대응하는 제1 입력 엘리먼트 벡터들을 추출하는 단계; 상기 제1 입력 엘리먼트 벡터들과 상기 제1 웨이트 엘리먼트들의 상기 적어도 일부 간의 곱셈 결과에 대응하는 제1 가중된 입력 엘리먼트 벡터들을 생성하는 단계; 및 상기 제1 가중된 입력 엘리먼트 벡터들을 누적하여 상기 제1 누적 데이터를 생성하는 단계를 포함할 수 있다. 상기 제1 입력 엘리먼트 벡터들을 추출하는 단계는 상기 제1 웨이트 엘리먼트들의 상기 적어도 일부의 인덱스들에 기초하여 상기 제1 입력 엘리먼트 벡터들에 대응하는 오프셋들을 결정하는 단계; 및 상기 오프셋들에 기초하여 상기 제1 입력 평면에서 상기 제1 입력 엘리먼트 벡터들을 추출하는 단계를 포함할 수 있다. 상기 제1 입력 엘리먼트 벡터들 및 상기 제1 가중된 입력 엘리먼트 벡터들의 사이즈는 SIMD(single instruction multiple data) 연산 단위에 대응할 수 있다.
상기 제1 누적 데이터가 생성될 때, 상기 제1 웨이트 엘리먼트들의 상기 적어도 일부 중에 0에 대응하는 제로 웨이트 엘리먼트들과 상기 제1 입력 엘리먼트들의 상기 적어도 일부 간의 곱셈 연산은 생략될 수 있다. 상기 데이터 처리 방법은 상기 제1 웨이트 엘리먼트들 중에 0에 대응하지 않는 논-제로 웨이트 엘리먼트들의 수를 결정하는 단계; 및 각각 미리 정해진 방식의 연산을 수행하도록 설정된 연산 타입들 중에 상기 결정된 논-제로 웨이트 엘리먼트들의 수에 대응하는 연산 타입을 선택하는 단계를 더 포함할 수 있다. 상기 제1 누적 데이터를 생성하는 단계는 상기 선택된 연산 타입에 기초하여 상기 제1 입력 엘리먼트들의 상기 적어도 일부와 상기 제1 웨이트 엘리먼트들의 상기 적어도 일부에 대응하는 상기 논-제로 웨이트 엘리먼트들 간의 상기 곱셈 결과들을 누적하여 상기 제1 누적 데이터를 생성하는 단계를 포함할 수 있다. 상기 제1 누적 데이터를 생성하는 단계는 상기 논-제로 웨이트 엘리먼트들의 인덱스들에 기초하여 상기 제1 입력 평면에서 상기 논-제로 웨이트 엘리먼트들에 대응하는 제1 입력 엘리먼트 벡터들을 추출하는 단계; 상기 제1 입력 엘리먼트 벡터들과 상기 제1 웨이트 엘리먼트들의 상기 적어도 일부에 대응하는 상기 논-제로 웨이트 엘리먼트들 간의 곱셈 결과에 대응하는 제1 가중된 입력 엘리먼트 벡터들을 생성하는 단계; 및 상기 제1 가중된 입력 엘리먼트 벡터들을 누적하여 상기 제1 누적 데이터를 생성하는 단계를 포함할 수 있다.
일 실시예에 따르면, 뉴럴 네트워크를 위한 데이터 처리 장치는 프로세서; 및 상기 프로세서에서 실행가능한 명령어들을 포함하는 메모리를 포함하고, 상기 명령어들이 상기 프로세서에서 실행되면, 상기 프로세서는 각각 입력 채널들에 대응하는 입력 특징 맵의 입력 평면들 중에 제1 입력 채널에 대응하는 제1 입력 평면을 획득하고, 각각 상기 입력 채널들에 대응하는 웨이트 커널의 웨이트 평면들 중에 상기 제1 입력 채널에 대응하는 제1 웨이트 평면을 획득하고, 상기 제1 입력 평면 내 제1 입력 엘리먼트들의 적어도 일부와 상기 제1 웨이트 평면 내 제1 웨이트 엘리먼트들의 적어도 일부 간의 곱셈 결과들을 누적하여 제1 누적 데이터를 생성하고, 상기 제1 누적 데이터에 기초하여 각각 출력 채널들에 대응하는 출력 특징 맵의 출력 평면들 중에 제1 출력 채널에 대응하는 제1 출력 평면을 생성한다.
일 실시예에 따르면, 뉴럴 네트워크를 위한 데이터 처리 방법은 각각 입력 채널들에 대응하는 입력 특징 맵의 입력 평면들 중에 제1 입력 채널에 대응하는 제1 입력 평면을 획득하는 단계; 각각 상기 입력 채널들에 대응하는 웨이트 커널의 웨이트 평면들 중에 상기 제1 입력 채널에 대응하는 제1 웨이트 평면을 획득하는 단계; 상기 제1 입력 평면 내 제1 입력 엘리먼트들의 적어도 일부와 상기 제1 웨이트 평면 내 제1 웨이트 엘리먼트들의 적어도 일부 간의 곱셈 결과들을 누적하여 제1 누적 데이터를 생성하는 단계; 및 상기 제1 누적 데이터에 기초하여 각각 출력 채널들에 대응하는 출력 특징 맵의 출력 평면들 중에 제1 출력 채널에 대응하는 제1 출력 평면을 생성하는 단계를 포함한다.
상기 제1 출력 평면을 생성하는 단계는 상기 제1 누적 데이터를 포함하는 각 입력 채널에 관한 각 누적 데이터의 합에 기초하여 상기 제1 출력 평면을 생성하는 단계를 포함할 수 있다. 상기 데이터 처리 방법은 상기 입력 평면들 중에 제2 입력 채널에 대응하는 제2 입력 평면을 획득하는 단계; 상기 웨이트 평면들 중에 상기 제2 입력 채널에 대응하는 제2 웨이트 평면을 획득하는 단계; 및 상기 제2 입력 평면 내 제2 입력 엘리먼트들의 적어도 일부와 상기 제2 웨이트 평면 내 제2 웨이트 엘리먼트들의 적어도 일부 간의 곱셈 결과들을 누적하여 제2 누적 데이터를 생성하는 단계를 더 포함할 수 있다. 상기 제1 출력 평면을 생성하는 단계는 상기 제1 누적 데이터 및 상기 제2 누적 데이터의 합에 기초하여 상기 제1 출력 평면을 생성하는 단계를 포함할 수 있다.
상기 제1 누적 데이터를 생성하는 단계는 상기 제1 입력 평면에서 상기 제1 웨이트 엘리먼트들의 상기 적어도 일부에 대응하는 제1 입력 엘리먼트 벡터들을 추출하는 단계; 상기 제1 입력 엘리먼트 벡터들과 상기 제1 웨이트 엘리먼트들의 상기 적어도 일부 간의 곱셈 결과에 대응하는 제1 가중된 입력 엘리먼트 벡터들을 생성하는 단계; 및 상기 제1 가중된 입력 엘리먼트 벡터들을 누적하여 상기 제1 누적 데이터를 생성하는 단계를 포함할 수 있다. 상기 제1 입력 엘리먼트 벡터들을 추출하는 단계는 상기 제1 웨이트 엘리먼트들의 상기 적어도 일부의 인덱스들에 기초하여 상기 제1 입력 엘리먼트 벡터들에 대응하는 오프셋들을 결정하는 단계; 및 상기 오프셋들에 기초하여 상기 제1 입력 평면에서 상기 제1 입력 엘리먼트 벡터들을 추출하는 단계를 포함할 수 있다. 상기 제1 입력 엘리먼트 벡터들 및 상기 제1 가중된 입력 엘리먼트 벡터들의 사이즈는 SIMD(single instruction multiple data) 연산 단위에 대응할 수 있다.
상기 제1 누적 데이터가 생성될 때, 상기 제1 웨이트 엘리먼트들의 상기 적어도 일부 중에 0에 대응하는 제로 웨이트 엘리먼트들과 상기 제1 입력 엘리먼트들의 상기 적어도 일부 간의 곱셈 연산은 생략될 수 있다. 상기 데이터 처리 방법은 상기 제1 웨이트 엘리먼트들 중에 0에 대응하지 않는 논-제로 웨이트 엘리먼트들의 수를 결정하는 단계; 및 각각 미리 정해진 방식의 연산을 수행하도록 설정된 연산 타입들 중에 상기 결정된 논-제로 웨이트 엘리먼트들의 수에 대응하는 연산 타입을 선택하는 단계를 더 포함할 수 있다. 상기 제1 누적 데이터를 생성하는 단계는 상기 선택된 연산 타입에 기초하여 상기 제1 입력 엘리먼트들의 상기 적어도 일부와 상기 제1 웨이트 엘리먼트들의 상기 적어도 일부에 대응하는 상기 논-제로 웨이트 엘리먼트들 간의 상기 곱셈 결과들을 누적하여 상기 제1 누적 데이터를 생성하는 단계를 포함할 수 있다. 상기 제1 누적 데이터를 생성하는 단계는 상기 논-제로 웨이트 엘리먼트들의 인덱스들에 기초하여 상기 제1 입력 평면에서 상기 논-제로 웨이트 엘리먼트들에 대응하는 제1 입력 엘리먼트 벡터들을 추출하는 단계; 상기 제1 입력 엘리먼트 벡터들과 상기 제1 웨이트 엘리먼트들의 상기 적어도 일부에 대응하는 상기 논-제로 웨이트 엘리먼트들 간의 곱셈 결과에 대응하는 제1 가중된 입력 엘리먼트 벡터들을 생성하는 단계; 및 상기 제1 가중된 입력 엘리먼트 벡터들을 누적하여 상기 제1 누적 데이터를 생성하는 단계를 포함할 수 있다.
일 실시예에 따르면, 뉴럴 네트워크를 위한 데이터 처리 장치는 프로세서; 및 상기 프로세서에서 실행가능한 명령어들을 포함하는 메모리를 포함하고, 상기 명령어들이 상기 프로세서에서 실행되면, 상기 프로세서는 각각 입력 채널들에 대응하는 입력 특징 맵의 입력 평면들 중에 제1 입력 채널에 대응하는 제1 입력 평면을 획득하고, 각각 상기 입력 채널들에 대응하는 웨이트 커널의 웨이트 평면들 중에 상기 제1 입력 채널에 대응하는 제1 웨이트 평면을 획득하고, 상기 제1 입력 평면 내 제1 입력 엘리먼트들의 적어도 일부와 상기 제1 웨이트 평면 내 제1 웨이트 엘리먼트들의 적어도 일부 간의 곱셈 결과들을 누적하여 제1 누적 데이터를 생성하고, 상기 제1 누적 데이터에 기초하여 각각 출력 채널들에 대응하는 출력 특징 맵의 출력 평면들 중에 제1 출력 채널에 대응하는 제1 출력 평면을 생성한다.
아래 개시되어 있는 특정한 구조 또는 기능들은 단지 기술적 개념을 설명하기 위한 목적으로 예시된 것으로서, 아래 개시와는 달리 다른 다양한 형태로 실시될 수 있으며 본 명세서의 실시예들을 한정하지 않는다.
제1 또는 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 이해되어야 한다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
도 1은 일 실시예에 따른 뉴럴 네트워크를 위한 데이터를 처리하는 처리 장치를 나타낸 도면이다. 도 1을 참조하면, 처리 장치(100)는 뉴럴 네트워크(110)를 포함할 수 있고, 뉴럴 네트워크(110)와 관련된 동작을 처리할 수 있다. 예를 들어, 뉴럴 네트워크(110)와 관련된 동작은 객체 인식 동작 및 사용자 인증 동작을 포함할 수 있다.
뉴럴 네트워크(110)는 딥 러닝에 기반하여 비선형적 관계에 있는 입력 데이터 및 출력 데이터를 서로 매핑함으로써 객체 인식 동작이나 사용자 인증 동작을 수행할 수 있다. 딥 러닝은 빅 데이터 세트로부터 영상 또는 음성 인식과 같은 문제를 해결하기 위한 기계 학습 기법이다. 딥 러닝은 준비된 트레이닝 데이터를 이용하여 뉴럴 네트워크(110)를 트레이닝하면서 에너지가 최소화되는 지점을 찾아가는 최적화 문제 풀이 과정으로 이해될 수 있다. 딥 러닝의 지도식(supervised) 또는 비지도식(unsupervised) 학습을 통해 뉴럴 네트워크(110)의 구조, 혹은 모델에 대응하는 가중치(weight)가 구해질 수 있고, 이러한 가중치를 통해 입력 데이터 및 출력 데이터가 서로 매핑될 수 있다.
뉴럴 네트워크(110)는 복수의 레이어들을 포함하는 딥 뉴럴 네트워크(deep neural network, DNN)에 해당할 수 있다. 복수의 레이어들은 입력 레이어(input layer), 적어도 하나의 히든 레이어(hidden layer), 및 출력 레이어(output layer)를 포함할 수 있다. 도 1에 도시된 제1 레이어, 제2 레이어, 및 제n 레이어는 이러한 복수의 레이어들 중 적어도 일부일 수 있다. 뉴럴 네트워크(110)는 완전 연결 네트워크(fully connected network), 컨볼루셔널 뉴럴 네트워크(convolutional neural network, CNN), 및 리커런트 뉴럴 네트워크(recurrent neural network, RNN) 중 적어도 하나를 포함할 수 있다. 예를 들어, 뉴럴 네트워크(110) 내 복수의 레이어들 중 적어도 일부는 CNN에 해당할 수 있고, 다른 일부는 완전 연결 네트워크에 해당할 수 있다.
CNN에서 각 레이어에 입력되는 데이터는 입력 특징 맵(input feature map)으로 지칭될 수 있고, 각 레이어에서 출력되는 데이터는 출력 특징 맵(output feature map)으로 지칭될 수 있다. 입력 특징 맵 및 출력 특징 맵은 액티베이션 데이터(activation data)로 지칭될 수도 있다. 입력 레이어에서 입력 특징 맵은 입력 데이터에 대응할 수 있다.
뉴럴 네트워크(110)에 관한 동작을 처리하기 위해, 처리 장치(100)는 각 컨볼루셔널 레이어에 관해 입력 특징 맵 및 웨이트 커널(weight kernel) 간에 컨볼루션 연산을 수행할 수 있고, 컨볼루션 연산 결과에 기초하여 출력 특징 맵을 생성할 수 있다. 뉴럴 네트워크(110)의 폭과 깊이가 충분히 크면 임의의 함수를 구현할 수 있을 만큼의 용량(capacity)을 가질 수 있다. 뉴럴 네트워크(110)가 적절한 트레이닝 과정을 통해 충분히 많은 양의 트레이닝 데이터를 학습하면 최적의 성능을 달성할 수 있다.
웨이트 커널은 '미리' 결정된 것으로 표현될 수 있는데, 여기서 '미리'는 뉴럴 네트워크(110)가 '시작'되기 전을 나타낼 수 있다. 뉴럴 네트워크(110)가 '시작'되었다는 것은 뉴럴 네트워크(110)가 추론(inference)을 위한 준비가 된 것을 의미할 수 있다. 예를 들어, 뉴럴 네트워크(110)가 '시작'된 것은 뉴럴 네트워크(110)가 메모리에 로드된 것, 혹은 뉴럴 네트워크(110)가 메모리에 로드된 이후 뉴럴 네트워크(110)에 추론(inference)을 위한 입력 데이터가 입력된 것을 포함할 수 있다.
아래에서 다시 상세히 설명되겠으나, 실시예들에 따른 컨볼루션 연산은 컨볼루션 연산의 중간 결과를 출력 특징 맵에 누적시키는 방식으로 수행되고, 웨이트 커널이나 입력 특징 맵을 컨볼루션에 적합한 형태로 변형하여 버퍼에 저장하는 버퍼링 동작이 요구되지 않는다. 다시 말해, 실시예들에 따른 컨볼루션 연산은 플래너(planar) 형태로 저장되어 있는 입력 특징 맵의 데이터를 그대로 사용할 수 있다. 따라서, 컨볼루션 연산의 효율이 크게 향상될 수 있다. 또한, 실시예들에 따른 컨볼루션 연산에서 스칼라에 해당하는 하나의 웨이트 엘리먼트와 매트릭스에 해당하는 하나의 입력 평면을 곱하는 것이 하나의 단위 연산에 해당할 수 있다. 따라서, 0의 값을 갖는 웨이트 엘리먼트들에 관해, 소프트웨어를 통해 제로-스킵을 효율적으로 처리할 수 있다.
도 2는 일 실시예에 따른 컨볼루션 연산 과정을 나타낸 도면이다. 도 2를 참조하면, 웨이트 커널(210) 및 입력 특징 맵(220) 간의 컨볼루션 연산에 따라 출력 특징 맵(230)이 생성된다. 웨이트 커널(210), 입력 특징 맵(220), 및 출력 특징 맵(230)의 데이터가 메모리 공간에 저장되는 형태는 각각 평면으로 표현될 수 있다. 예를 들어, 웨이트 커널(1) 내지 웨이트 커널(D) 각각은 C개의 웨이트 평면들을 포함할 수 있고, 입력 특징 맵(220)은 C개의 입력 평면들을 포함할 수 있고, 출력 특징 맵(230)은 D개의 출력 평면들을 포함할 수 있다. C개의 웨이트 평면들 및 C개의 입력 평면들은 각각 입력 채널들에 대응할 수 있고, D개의 출력 평면들은 각각 출력 채널들에 대응할 수 있다. 또한, C는 입력 채널의 수에 대응할 수 있고, D는 출력 채널의 수에 대응할 수 있다.
각 평면은 미리 정해진 비트 폭의 엘리먼트들을 포함할 수 있다. 예를 들어, 각 웨이트 평면은 K*K의 사이즈를 가질 수 있고, 각 입력 평면 및 각 출력 평면은 W*H의 사이즈를 가질 수 있는데, 여기서 W, K, 및 H는 각각 엘리먼트들의 수를 나타낼 수 있다. 웨이트 평면의 엘리먼트는 웨이트 엘리먼트로 지칭될 수 있고, 입력 평면의 엘리먼트는 입력 엘리먼트로 지칭될 수 있고, 출력 평면의 엘리먼트는 출력 엘리먼트로 지칭될 수 있다. 실시예에 따른 컨볼루션 연산은 엘리먼트 단위로 수행될 수 있다.
설명의 편의를 위해 웨이트 평면의 폭 및 높이는 K로 동일한 것으로 가정되고, 입력 평면 출력 평면의 사이즈는 W*H로 동일한 것으로 가정된다. 다만, 실시예에 따라 웨이트 평면의 폭 및 높이는 서로 다르거나, 입력 평면 출력 평면의 사이즈는 서로 다를 수 있다.
도 3은 슬라이딩 윈도우 방식의 컨볼루션 연산을 나타낸 도면이다. 슬라이딩 윈도우 방식의 컨볼루션 연산에 따르면, 웨이트 커널(310)이 입력 특징 맵(320)에 슬라이딩되며 컨볼루션 연산이 수행되어 출력 특징 맵(330)이 생성된다.
슬라이딩 윈도우 방식은 컨볼루션 연산을 위해 기존에 일반적으로 이용되는 것이며, 실시예들에 따른 누적 방식과 구분될 수 있다. 예를 들어, 슬라이딩 윈도우 방식의 경우, 컬럼 벡터들을 생성하기 위해 입력 특징 맵(320)에 관한 버퍼링 동작이 수행될 수 있다. 실시예에 따른 누적 방식의 경우, 컨볼루션 연산의 중간 결과를 출력 특징 맵(330)에 누적시키는 방식으로 수행되므로, 슬라이딩 윈도우 방식과 같이 버퍼링 동작이 요구되지 않는다.
슬라이딩 윈도우 방식의 컨볼루션 연산에 따르면, 웨이트 커널(310)이 입력 특징 맵(320)에 슬라이딩되는 과정에서 웨이트 커널(310)은 입력 특징 맵(320)의 비연속적인 주소에 저장된 데이터와 연산이 수행되므로, 연산 처리 속도를 향상시키기 위해 입력 특징 맵(320)은 적절한 형태의 연속된 데이터로 변형될 수 있다. 예를 들어, 도 3에서 슬라이딩 스트라이드(sliding stride)는 1이고, 입력 특징 맵(320)의 가로 방향 및 세로 방향 각각에 두 줄의 제로 엘리먼트 벡터들을 통한 제로 패딩(zero padding)이 적용되는 것이 가정된다. 이 경우, 웨이트 커널(310)에 대응하는 K2*C의 로 벡터(row vector)들이 정의될 수 있고, 입력 특징 맵(320)은 K2*C의 컬럼 벡터(column vector)들로 변형될 수 있다.
컬럼 벡터는 플래너 구조(planar structure) 또는 인터리브 구조(interleaved structure)의 입력 특징 맵(320)으로부터 컬럼 버퍼에 버퍼링될 수 있다. 플래너 구조의 경우, 입력 특징 맵(320)이 컬럼 벡터로 버퍼링되는 과정에서 하나의 출력 엘리먼트를 결정하기 위해 비 연속된 최다 메모리 액세스가 커널의 높이(K)와 입력 채널의 수(C) 간의 곱만큼 발생할 수 있다. 인터리브 구조의 경우, 입력 특징 맵(320)이 컬럼 벡터로 버퍼링되는 과정에서, 하나의 출력 엘리먼트를 결정하기 위해 비 연속된 메모리 최다 액세스가 커널의 높이(K)만큼 발생할 수 있다.
실시예에 따른 누적 방식의 컨볼루션의 경우 컨볼루션 연산의 중간 결과를 출력 특징 맵(330)에 누적시키는 방식으로 수행되므로, 입력 특징 맵(320)을 플래너 또는 인터리브와 같은 구조로 변형하기 위한 별도의 버퍼링 동작이 요구되지 않는다. 따라서, 누적 방식의 컨볼루션은 메모리 액세스를 최소화하여 컨볼루션 연산의 처리 속도를 극대화할 수 있다.
도 4 및 도 5는 일 실시예에 따른 누적 방식의 컨볼루션 연산을 통해 하나의 출력 평면이 생성되는 과정을 나타낸 도면이다. 예를 들어, 출력 특징 맵은 D개의 출력 평면들을 포함할 수 있고, 도 4 및 도 5는 D개의 출력 평면들 중 하나가 생성되는 과정에 대응할 수 있다. 도 4 및 도 5에 도시된 과정이 D개의 출력 평면들에 관해 반복되어 출력 특징 맵이 생성될 수 있다.
도 4를 참조하면, 입력 특징 맵(410)과 웨이트 커널(420) 간의 컨볼루션 연산을 통해 출력 평면(430)이 생성된다. 예를 들어, 웨이트 커널(420)은 D개의 웨이트 커널들 중 d번째에 해당할 수 있고, 출력 평면(430)은 D개의 출력 평면들 중 d번째에 해당할 수 있다. 입력 특징 맵(410)은 도 5의 입력 평면들(510)을 포함할 수 있고, 웨이트 커널(420)은 도 5의 웨이트 평면들(520)을 포함할 수 있다. 출력 평면(430)은 도 5의 출력 평면(540)에 대응할 수 있다.
도 5를 참조하면, 입력 평면들(511, 512, 513)은 입력 평면들(510)에 대응한다. 입력 평면들(511, 512, 513)의 수는 입력 채널의 수(C)에 대응한다. 아래에서 입력 채널의 수(C)는 3인 것을 가정한다. 다만, 이는 설명의 편의를 위한 것으로, 입력 채널의 수(C)는 3 이외의 다양한 값을 가질 수도 있다. 웨이트 평면들(521, 522, 523)은 웨이트 평면들(520)에 대응하고, 누적 평면들(531, 532, 533)은 누적 평면들(530)에 대응한다.
입력 평면(511)과 웨이트 평면(521) 간의 MAC 연산을 통해 누적 평면(531)이 생성되고, 입력 평면(512)과 웨이트 평면(522) 간의 MAC 연산을 통해 누적 평면(532)이 생성되고, 입력 평면(513)과 웨이트 평면(523) 간의 MAC 연산을 통해 누적 평면(533)이 생성된다. MAC 연산 과정은 추후 상세히 설명된다. 누적 평면들(531, 532, 533)이 생성되면, 누적 평면들(531, 532, 533)에 기초하여 출력 평면(540)이 생성될 수 있다. 예를 들어, 누적 평면들(531, 532, 533)의 합을 통해 출력 평면(540)이 생성될 수 있다.
도 6 및 도 7은 일 실시예에 따른 누적 방식의 컨볼루션 연산을 위한 입력 평면과 웨이트 평면 간의 MAC(multiply and accumulate) 연산을 나타낸 도면이다.
도 6을 참조하면, 입력 평면(610)의 각 입력 엘리먼트와 웨이트 평면(620)의 각 웨이트 엘리먼트 간의 MAC 연산에 기초하여 누적 평면(630)이 생성된다. 웨이트 평면(620)은 w1 내지 w9의 웨이트 엘리먼트들을 포함한다. 웨이트 평면(620)은 3*3의 사이즈를 갖는 것으로 설명되지만, 이는 설명의 편의를 위한 것이며 웨이트 평면(620)은 3*3 이외의 다른 다양한 사이즈를 가질 수 있다. 도 6에는 생략되어 있으나 입력 평면(610) 및 누적 평면(630)도 각각 복수의 엘리먼트들을 포함할 수 있으며, 엘리먼트 단위로 컨볼루션 연산이 수행될 수 있다.
도 7을 참조하면, 입력 평면(711)은 도 6의 입력 평면(610)에 대응하고, 도 7의 웨이트 엘리먼트들(w1 내지 w9)은 도 6의 웨이트 평면(620)의 웨이트 엘리먼트들(w1 내지 w9)에 대응하고, 누적 평면(740)은 도 6의 누적 평면(630)에 대응한다. 슬라이딩 스트라이드에 기초하여 입력 평면(711)에 관한 제로 패딩이 수행되어 입력 평면(712)이 생성될 수 있다. 예를 들어, 입력 평면(711)의 사이즈가 W*H이고 슬라이딩 스트라이드가 1인 경우, 입력 평면(712)은 (W+2)*(H+2)의 사이즈를 가질 수 있다.
웨이트 엘리먼트들(w1 내지 w9)을 포함하는 웨이트 평면과 입력 평면(712) 간에 슬라이딩 윈도우 방식의 컨볼루션 연산이 수행되는 것을 가정하면, 입력 평면(712) 상에 각 웨이트 엘리먼트들(w1 내지 w9)이 반응하는 반응 영역들(721 내지 729)이 정의될 수 있다. 예를 들어, 슬라이딩 윈도우 방식의 컨볼루션 연산이 수행될 때, 반응 영역(721) 내 입력 엘리먼트들은 웨이트 엘리먼트(w1)에 반응하고, 반응 영역(722) 내 입력 엘리먼트들은 웨이트 엘리먼트(w2)에 반응하고, 반응 영역(729) 내 입력 엘리먼트들은 웨이트 엘리먼트(w9)에 반응할 수 있다.
반응 영역들(721 내지 729)의 사이즈는 입력 평면(711)의 사이즈와 동일하며, 반응 영역들(721 내지 729) 각각의 오프셋은 웨이트 엘리먼트들(w1 내지 w9) 각각의 인덱스에 기초하여 결정될 수 있다. 예를 들어, 입력 평면(711)의 폭이 W+2인 경우, 반응 영역들(721 내지 729) 각각의 오프셋은 (W+2)*a+b로 정의될 수 있다. 오프셋은 입력 평면(예: 패딩이 적용된 입력 평면의 원점)을 기준으로 결정될 수 있다. 여기서, a는 (i-1)을 K로 나눈 몫을 나타내고, b는 (i-1)을 K로 나눈 나머지를 나타낸다. i는 웨이트 엘리먼트들(w1 내지 w9)의 인덱스를 나타내고, K는 웨이트 커널의 폭을 나타낸다. 이에 따르면, 반응 영역(721)의 오프셋은 0, 반응 영역(722)의 오프셋은 1, 반응 영역(729)의 오프셋은 (W+2)*2+2다.
각 반응 영역(721 내지 729) 내 입력 엘리먼트들과 각 웨이트 엘리먼트들(w1 내지 w9) 간의 곱에 따라 곱셈 결과들(731 내지 739)이 생성될 수 있고, 곱셈 결과들(731 내지 739)의 누적에 따라 누적 평면(740)이 생성될 수 있다. 예를 들어, 출력 평면은 C개의 누적 평면들의 합을 통해 생성될 수 있고, 도 7은 C개의 누적 평면들 중 하나에 해당하는 누적 평면(740)이 생성되는 과정에 대응할 수 있다. 곱셈 결과들(731 내지 739) 내 각 엘리먼트는 곱셈 결과 엘리먼트로 지칭될 수 있다. 도 7 에 도시된 과정이 C개의 누적 평면들에 관해 반복되어 출력 평면이 생성될 수 있다. 또한, 출력 특징 맵이 D개의 출력 평면들을 포함하는 경우, 누적 기반으로 생성된 D개의 출력 평면들을 통해 출력 특징 맵이 결정될 수 있다.
실시예들에 따르면 컨볼루션 연산의 중간 결과에 해당하는 곱셈 결과들(731 내지 739)을 누적하여 출력 특징 맵이 생성되며, 입력 특징 맵을 연속된 데이터로 변형하여 버퍼에 저장하는 것이 요구되지 않는다. 따라서, 입력 특징 맵을 연속된 데이터로 변형하여 버퍼에 저장하는데 소요되는 시간을 절감하여 컨볼루션 연산의 고속화가 가능하고, 변형된 데이터를 저장하기 위한 메모리 공간을 절약할 수 있다.
도 8 내지 도 10은 일 실시예에 따른 SIMD(single instruction multiple data) 처리를 이용한 누적 방식의 컨볼루션 연산을 나타낸 도면이다. SIMD는 하나의 명령어로 다수의 데이터를 처리하는 프로세서의 연산 처리 방식을 의미한다. 아래에서 상세히 설명되는 것처럼, 실시예에 따른 누적 방식의 컨볼루션 연산은 SIMD를 통해 수행될 수 있다.
도 8을 참조하면, 웨이트 평면(810)이 입력 평면(820)의 슬라이딩 영역(821)에 슬라이딩되며 MAC 연산이 수행되어 누적 평면(830)의 누적 영역(831)이 결정될 수 있다. 유사하게, 웨이트 평면(810)이 슬라이딩 영역(822)에 슬라이딩되며 MAC 연산이 수행되어 누적 영역(832)이 결정되고, 웨이트 평면(810)이 슬라이딩 영역(823)에 슬라이딩되며 MAC 연산이 수행되어 누적 영역(833)이 결정될 수 있다. 슬라이딩 영역들(821 내지 823)의 높이는 웨이트 평면(810)의 높이에 대응하고, 누적 영역들(831 내지 833)의 높이는 하나의 엘리먼트에 대응한다. 이와 같은 방식으로 슬라이딩 영역들과 누적 영역들 간의 관계가 형성될 수 있다.
도 9를 참조하면, 입력 평면(900) 내 슬라이딩 영역(910)은 웨이트들(w1 내지 w9)의 반응 영역들(911 내지 919)을 포함한다. 반응 영역들(911 내지 919) 각각의 오프셋은 웨이트 엘리먼트들(w1 내지 w9) 각각의 인덱스에 기초하여 결정될 수 있다. 예를 들어, 도 7의 설명에 따라 반응 영역들(911 내지 919) 각각의 오프셋은 (W+2)*a+b로 정의될 수 있다. 오프셋은 슬라이딩 영역들(예: 각 슬라이딩 영역의 원점)을 기준으로 결정될 수 있다. 이 경우, 반응 영역들(911 내지 919) 각각의 오프셋은 0, 1, 2, (W+2), (W+2)+1, (W+2)+2, (W+2)*2, (W+2)*2+1, (W+2)*2+2가 될 수 있다.
반응 영역들(911 내지 919)로부터 입력 엘리먼트 벡터들이 추출되어 레지스터들(r1 내지 r9)에 저장된다. 예를 들어, 반응 영역(911)의 제1 입력 엘리먼트 벡터는 레지스터(r1)에 저장되고, 반응 영역(912)의 제2 입력 엘리먼트 벡터는 레지스터(r2)에 저장될 수 있다. 이와 같이, 입력 엘리먼트 벡터들은 레지스터들(r1 내지 r9)에 순차적으로 저장될 수 있다.
입력 엘리먼트 벡터들은 각각 웨이트 엘리먼트들(w1 내지 w9) 중 자신과 대응하는 엘리먼트와 엘리먼트 단위로 곱해지며, 이에 따라 가중된 입력 엘리먼트 벡터들이 생성될 수 있다. 예를 들어, 반응 영역(911)의 제1 입력 엘리먼트 벡터는 레지스터(r1)에 저장되어 웨이트 엘리먼트(w1)와 곱해질 수 있고, 이에 따라 제1 가중된 입력 엘리먼트 벡터가 생성될 수 있다. 반응 영역(912)의 제2 입력 엘리먼트 벡터는 레지스터(r2)에 저장되어 웨이트 엘리먼트(w2)와 곱해질 수 있고, 이에 따라 제2 가중된 입력 엘리먼트 벡터가 생성될 수 있다. 반응 영역들(911 내지 919), 입력 엘리먼트 벡터들, 및 가중된 입력 엘리먼트 벡터들의 사이즈는 SIMD 연산 단위에 대응할 수 있다.
이와 같은 과정을 통해 생성된 가중된 입력 엘리먼트 벡터들이 누적되어 슬라이딩 영역(910)에 대응하는 누적 벡터가 생성될 수 있다. 또한, 이와 같은 과정이 각 슬라이딩 영역에 관해 반복됨에 따라 각 슬라이딩 영역에 대응하는 누적 벡터들이 생성될 수 있고, 누적 벡터들이 모여서 누적 평면을 형성할 수 있다. 누적 평면 및 누적 벡터는 서로 다른 형태의 누적 데이터를 지칭할 수 있으며, 누적 데이터로 통칭될 수 있다.
도 10을 참조하면, 출력 평면(1010) 내 출력 영역(1011)에서 기존에 저장된 누적 벡터(이하, 제1 누적 벡터로 지칭됨)가 로드되어 레지스터(r10)에 저장된다. 레지스터들(r1 내지 r9)을 통해 새로운 누적 벡터(이하, 제2 누적 벡터로 지칭됨)가 생성되면, 레지스터(r10)에서 제1 누적 벡터와 제2 누적 벡터가 누적되어 출력 영역(1011)에 저장된다.
도 10은 출력 영역(1011)에 누적 벡터가 저장되는 과정이 적어도 한 번 수행된 것을 가정한다. 예를 들어, 도 10은 각각 제1 입력 채널에 대응하는 제1 입력 평면과 제1 웨이트 평면 간의 MAC 연산을 통해 제1 누적 벡터가 생성되어 출력 영역(1011)에 저장되고, 이후 각각 제2 입력 채널에 대응하는 제2 입력 평면과 제2 웨이트 평면 간의 MAC 연산을 통해 제2 누적 벡터가 생성되고, 제1 누적 벡터 및 제2 누적 벡터가 누적되어 출력 영역(1011)에 저장되는 상황에 대응할 수 있다. 만약, 누적 영역(1011)에 초기 값이 저장된 경우, 다시 말해 누적 벡터가 처음 생성되는 경우, 누적 영역(1011)에서 누적 벡터가 로드되는 과정은 생략될 수 있고, 새롭게 생성된 누적 벡터가 별도의 누적 동작 없이 누적 영역(1011)에 저장될 수 있다.
출력 영역(1011)에 누적 벡터들이 입력 채널의 수만큼 반복하여 저장되면(누적 횟수는 입력 채널의 수보다 하나 적음), 출력 영역(1011)에 대응하는 내 출력 엘리먼트 벡터가 결정될 수 있다. 또한, 출력 영역(1011)에 관한 과정이 출력 평면(1010) 내 나머지 출력 영역들에 관해서도 수행되면, 출력 평면(1010)이 결정될 수 있다. 따라서, SIMD를 통해 실시예에 따른 누적 방식의 컨볼루션 연산이 구현될 수 있다.
도 11은 일 실시예에 따른 누적 방식의 컨볼루션 연산의 제로-스킵 과정을 나타낸 도면이다. 실시예들에 따른 컨볼루션 연산은 입력 평면 단위(보다 상세하게는, 입력 평면 내 반응 영역 단위)로 수행되므로, 소프트웨어를 통해 제로-스킵을 효율적으로 처리할 수 있다.
도 11을 참조하면, 각 반응 영역(1121 내지 1123) 내 입력 엘리먼트들과 각 웨이트 엘리먼트들(w1 내지 w9) 간의 곱에 따라 곱셈 결과들(1141 내지 1143)이 생성될 수 있다. 도 11의 실시예에서 웨이트 엘리먼트들(w3 내지 w5, w8, w9)은 0에 대응하는 것으로 가정한다. 이하, 0에 대응하는 웨이트 엘리먼트는 제로 웨이트 엘리먼트로 지칭될 수 있고, 0에 대응하지 않는 웨이트 엘리먼트는 논-제로 웨이트 엘리먼트로 지칭될 수 있다. 이 경우, 제로 웨이트 엘리먼트에 기반한 곱셈 결과(1143)와 같은 곱셈 결과들은 누적 평면이나 출력 평면의 데이터에 영향을 주지 않으므로, 이러한 곱셈 결과들에 관한 연산은 생략될 수 있다.
도 12는 일 실시예에 따른 미리 정해진 연산 타입을 이용하여 제로-스킵을 수행하는 과정을 나타낸 도면이다. 도 12를 참조하면, 단계(1210)에서 제로 인코딩이 수행된다. 제로 인코딩을 통해 웨이트 엘리먼트들에 포함된 논-제로 웨이트 엘리먼트들의 수가 결정될 수 있다. 예를 들어, 도 12에서 제로 인코딩 결과 논-제로 웨이트 엘리먼트들의 수는 4로 결정될 수 있다.
단계(1220)에서 연산 타입들 중에 논-제로 웨이트 엘리먼트들의 수에 대응하는 연산 타입이 선택되고, 논-제로 웨이트 엘리먼트에 대응하는 데이터가 레지스터에 로드된다. 도 12에서 4의 논-제로 웨이트 엘리먼트들의 수에 대응하는 연산 타입 4가 선택된다. 연산 타입들은 논-제로 웨이트 엘리먼트들의 수에 따라 각각 미리 정해진 방식의 연산을 수행하도록 설정될 수 있다. 예를 들어, 웨이트 엘리먼트들에 논-제로 웨이트 엘리먼트가 전혀 포함되지 않은 케이스부터 웨이트 엘리먼트들 전체가 논-제로 웨이트 엘리먼트에 해당하는 케이스까지 각각의 케이스에 관해 연산 타입들이 설정될 수 있다. 연산 타입의 수를 N으로, 웨이트 엘리먼트들의 수를 K*K로 정의하면, N=K*K+1일 수 있다. 도 12는 K=3이고, N=10인 케이스를 나타낸다.
레지스터에 로드되는 데이터는 입력 평면의 적어도 일부에 해당할 수 있다. 예를 들어, 논-제로 웨이트 엘리먼트에 대응하는 입력 엘리먼트 벡터가 레지스터에 로드될 수 있다. 논-제로 웨이트 엘리먼트의 인덱스에 기초하여 입력 엘리먼트 벡터에 대응하는 오프셋이 결정될 수 있고, 결정된 오프셋을 통해 입력 평면에서 입력 엘리먼트 벡터가 추출되어 레지스터에 저장될 수 있다. 도 12에서 논-제로 웨이트 엘리먼트에 해당하는 w1, w2, w6, w7에 기초하여 0, 1, (W+2)+2, (W+2)*2의 오프셋들이 결정되며, 결정된 오프셋들에 대응하는 입력 엘리먼트 벡터들이 reg1, reg2, reg3, reg4의 레지스터에 로드될 수 있다.
미리 정해진 방식의 연산은 논-제로 웨이트 엘리먼트들과 레지스터에 로드된 데이터 간의 MAC 연산을 수행하여 누적 데이터를 생성하는 것을 포함할 수 있다. 여기서, 데이터는 논-제로 웨이트 엘리먼트들의 수 및 오프셋에 기초하여 레지스터에 로드될 수 있다. 예를 들어, 논-제로 웨이트 엘리먼트들과 레지스터에 저장된 입력 엘리먼트 벡터들 간의 MAC 연산이 수행될 수 있다. 도 12에서 논-제로 웨이트 엘리먼트들(w1, w2, w6, w7) 및 레지스터들(reg1, reg2, reg3, reg4)에 저장된 입력 엘리먼트 벡터들 간의 곱셈 결과에 대응하는 가중된 입력 엘리먼트 벡터들이 생성되고, 가중된 입력 엘리먼트 벡터들의 누적에 따라 누적 데이터가 생성될 수 있다.
단계(1230)에서 각 연산 타입에 대응하는 소스 코드가 실행될 수 있다. 예를 들어, 연산 타입 0 내지 연산 타입 9 각각에 대응하는 소스 코드가 메모리 코드 영역(memory code area)에 저장되어 있을 수 있고, 선택된 연산 타입에 대응하는 소스 코드가 메모리 코드 영역으로부터 로드되어 실행될 수 있다. 도 12에서는 연산 타입 4에 해당하는 소스 코드가 실행될 수 있다. 이러한 소스 코드는 메모리 공간을 적게 차지하므로, 소스 코드의 사용이 메모리 효율을 크게 저하시키지 않는다.
도 13은 일 실시예에 따른 누적 방식의 컨볼루션 연산 과정을 나타낸 플로우 차트이다. 도 13을 참조하면, 단계(1301)에서 웨이트 커널(wd)이 획득된다. d는 출력 채널의 인덱스를 나타내며, 1 내지 D의 자연수일 수 있고, 초기에 1일 수 있다. 웨이트 커널들은 각각 출력 채널에 대응할 수 있다. 예를 들어, 웨이트 커널(w1)은 제1 출력 채널에 대응할 수 있고, 웨이트 커널(w2)은 제2 출력 채널에 대응할 수 있다.
단계(1302)에서 입력 평면(ic)이 획득되고, 단계(1303)에서 웨이트 평면 (
Figure pat00001
)가 획득된다. c는 입력 채널의 인덱스를 나타내며, 1 내지 C의 자연수일 수 있고, 초기에 1일 수 있다. 입력 평면들 및 웨이트 평면들은 각각 입력 채널들에 대응할 수 있다. 예를 들어, 입력 평면(i1) 및 웨이트 평면(
Figure pat00002
)은 각각 제1 입력 채널에 대응할 수 있고, 입력 평면(i2) 및 웨이트 평면(
Figure pat00003
)은 각각 제2 입력 채널에 대응할 수 있다.
단계(1306)에서 MAC 연산이 수행된다. 예를 들어, 입력 평면(ic) 내 입력 엘리먼트들의 적어도 일부와 웨이트 평면 (
Figure pat00004
) 내 웨이트 엘리먼트들의 적어도 일부 간의 곱셈 결과들을 누적하여 누적 데이터가 생성될 수 있다. 예를 들어, 입력 평면(ic)에서 웨이트 엘리먼트들의 적어도 일부에 대응하는 입력 엘리먼트 벡터들이 추출되고, 입력 엘리먼트 벡터들과 웨이트 엘리먼트들의 적어도 일부 간의 곱셈 결과에 대응하는 가중된 입력 엘리먼트 벡터들이 생성되고, 가중된 입력 엘리먼트 벡터들을 누적하여 누적 데이터가 생성될 수 있다. 이 때, 웨이트 엘리먼트들의 적어도 일부의 인덱스들에 기초하여 입력 엘리먼트 벡터들에 대응하는 오프셋들이 결정되고, 오프셋들에 기초하여 입력 평면에서 입력 엘리먼트 벡터들이 추출될 수 있다.
일 실시예에 따르면, 단계들(1304, 1305)을 통해 제로-스킵이 구현될 수 있다. 단계(1304)에서 제로 인코딩이 수행되고, 단계(1305)에서 연산 타입이 선택된다. 제로 인코딩을 통해 논-제로 웨이트 엘리먼트들의 수가 결정되면, 논-제로 웨이트 엘리먼트들의 수에 대응하는 연산 타입이 선택되고, 논-제로 웨이트 엘리먼트들에 대응하는 입력 엘리먼트들이 레지스터에 로드될 수 있다. 예를 들어, 논-제로 웨이트 엘리먼트들에 대응하는 입력 엘리먼트 벡터들이 레지스터에 로드될 수 있다.
선택된 연산 타입에 따라 미리 정해진 프로세스에 따른 연산들이 수행될 수 있다. 예를 들어, 연산들은 논-제로 웨이트 엘리먼트들과 레지스터 내 입력 엘리먼트들(예: 입력 엘리먼트 벡터들) 간의 곱셈을 수행하고, 곱셈 결과를 누적하여 누적 데이터(예: 누적 벡터)를 생성하는 것을 포함할 수 있다. 따라서, 누적 데이터가 생성될 때, 제로 웨이트 엘리먼트들과 입력 엘리먼트들 간의 곱셈 연산이 생략될 수 있다.
단계(1307)에서 출력이 누적된다. 예를 들어, MAC 연산의 출력에 해당하는 누적 데이터가 누적될 수 있다. 일례로, c=1에 해당하는 첫 번째 반복이 진행되는 경우, 입력 평면(i1)이 획득되고, 웨이트 평면(
Figure pat00005
)이 획득되고, 입력 평면(i1) 내 제1 입력 엘리먼트들의 적어도 일부와 웨이트 평면(
Figure pat00006
) 내 제1 웨이트 엘리먼트들의 적어도 일부 간의 곱셈 결과들을 누적하여 제1 누적 데이터가 생성될 수 있다. c=2에 해당하는 두 번째 반복이 진행되는 경우, 입력 평면(i2)이 획득되고, 웨이트 평면(
Figure pat00007
)이 획득되고, 입력 평면(i2) 내 제2 입력 엘리먼트들의 적어도 일부와 웨이트 평면(
Figure pat00008
) 내 제2 웨이트 엘리먼트들의 적어도 일부 간의 곱셈 결과들을 누적하여 제2 누적 데이터가 생성될 수 있다. 이 때, 제1 누적 데이터 및 상기 제2 누적 데이터가 누적될 수 있다. c=C에 해당하는 C번?? 반복이 진행되는 경우, 각 입력 채널에 관한 각 누적 데이터의 합에 기초하여 출력 평면이 생성될 수 있다.
단계(1308)에서 c와 C가 비교된다. c와 C가 다른 경우, 예를 들어 c가 C보다 작은 경우, 단계(1309)에서 c가 1만큼 증가되고, 단계(1302)가 수행된다. c와 C가 같은 경우, 단계(1309)에서 d와 D가 비교된다. d와 D가 다른 경우, 예를 들어 d가 D보다 작은 경우, 단계(1311)에서 d가 1만큼 증가되고, 단계(1301)가 수행된다. 단계들(1308, 1309)를 통해 출력 채널이 고정된 상태에서 모든 입력 채널에 관해 컨볼루션이 수행될 수 있으며, 단계들(1310, 1311)을 통해 출력 채널을 바꿔가며 모든 출력 채널에 관해 컨볼루션이 수행될 수 있다.
도 14는 일 실시예에 따른 뉴럴 네트워크를 위한 데이터 처리 방법을 나타낸 도면이다. 도 14를 참조하면, 처리 장치는 단계(1410)에서 각각 입력 채널들에 대응하는 입력 특징 맵의 입력 평면들 중에 제1 입력 채널에 대응하는 제1 입력 평면을 획득하고, 각각 입력 채널들에 대응하는 웨이트 커널의 웨이트 평면들 중에 제1 입력 채널에 대응하는 제1 웨이트 평면을 획득하고, 제1 입력 평면 내 제1 입력 엘리먼트들의 적어도 일부와 제1 웨이트 평면 내 제1 웨이트 엘리먼트들의 적어도 일부 간의 곱셈 결과들을 누적하여 제1 누적 데이터를 생성하고, 제1 누적 데이터에 기초하여 각각 출력 채널들에 대응하는 출력 특징 맵의 출력 평면들 중에 제1 출력 채널에 대응하는 제1 출력 평면을 생성한다. 그 밖에, 뉴럴 네트워크를 위한 데이터 처리 방법에는 도 1 내지 도 13을 통해 설명된 내용이 적용될 수 있다.
도 15는 일 실시예에 따른 뉴럴 네트워크를 위한 데이터를 처리하는 처리 장치를 나타낸 블록도이다. 도 15를 참조하면, 처리 장치(1500)는 입력 데이터를 수신하고, 입력 데이터와 관련된 뉴럴 네트워크의 동작을 처리할 수 있다. 예를 들어, 뉴럴 네트워크의 동작은 객체 인식 동작 및 사용자 인증 동작을 포함할 수 있다. 처리 장치(1500)는 뉴럴 네트워크의 처리와 관련하여 본 명세서에 기술되거나 또는 도시된 하나 이상의 동작을 수행할 수 있고, 뉴럴 네트워크의 처리 결과를 사용자에게 제공할 수 있다. 처리 장치(1500)는 뉴럴 네트워크의 동작을 처리하는 과정에서 누적 방식의 컨볼루션을 수행할 수 있다.
처리 장치(1500)는 하나 이상의 프로세서(1510) 및 메모리(1520)를 포함할 수 있다. 메모리(1520)는 프로세서(1510)에 연결되고, 프로세서(1510)에 의해 실행가능한 명령어들, 프로세서(1510)가 연산할 데이터 또는 프로세서(1510)에 의해 처리된 데이터를 저장할 수 있다. 메모리(1520)는 비일시적인 컴퓨터 판독가능 매체, 예컨대 고속 랜덤 액세스 메모리 및/또는 비휘발성 컴퓨터 판독가능 저장 매체(예컨대, 하나 이상의 디스크 저장 장치, 플래쉬 메모리 장치, 또는 기타 비휘발성 솔리드 스테이트 메모리 장치)를 포함할 수 있다.
프로세서(1510)는 도 1 내지 도 14를 참조하여 설명된 하나 이상의 동작을 실행하기 위한 명령어들을 실행할 수 있다. 예를 들어, 메모리(1520)에 저장된 명령어가 프로세서(1510)에서 실행되면, 프로세서(1510)는 각각 입력 채널들에 대응하는 입력 특징 맵의 입력 평면들 중에 제1 입력 채널에 대응하는 제1 입력 평면을 획득하고, 각각 입력 채널들에 대응하는 웨이트 커널의 웨이트 평면들 중에 제1 입력 채널에 대응하는 제1 웨이트 평면을 획득하고, 제1 입력 평면 내 제1 입력 엘리먼트들의 적어도 일부와 제1 웨이트 평면 내 제1 웨이트 엘리먼트들의 적어도 일부 간의 곱셈 결과들을 누적하여 제1 누적 데이터를 생성하고, 제1 누적 데이터에 기초하여 각각 출력 채널들에 대응하는 출력 특징 맵의 출력 평면들 중에 제1 출력 채널에 대응하는 제1 출력 평면을 생성할 수 있다.
도 16은 일 실시예에 따른 전자 장치를 나타낸 도면이다. 도 16을 참조하면, 전자 장치(1600)는 입력 데이터를 수신하고, 입력 데이터와 관련된 뉴럴 네트워크의 동작을 처리할 수 있다. 예를 들어, 뉴럴 네트워크의 동작은 객체 인식 동작 및 사용자 인증 동작을 포함할 수 있다. 전자 장치(1600)는 뉴럴 네트워크의 동작을 처리하는 과정에서 전술된 누적 방식의 컨볼루션을 수행할 수 있다. 전자 장치(1600)는 도 1 내지 도 15를 통해 설명된 처리 장치를 포함하거나, 도 1 내지 도 15를 통해 설명된 처리 장치의 기능을 수행할 수 있다.
전자 장치(1600)는 프로세서(1610), 메모리(1620), 카메라(1630), 저장 장치(1640), 입력 장치(1650), 출력 장치(1660) 및 네트워크 인터페이스(1670)를 포함할 수 있다. 프로세서(1610), 메모리(1620), 카메라(1630), 저장 장치(1640), 입력 장치(1650), 출력 장치(1660) 및 네트워크 인터페이스(1670)는 통신 버스(1680)를 통해 서로 통신할 수 있다.
프로세서(1610)는 전자 장치(1600) 내에서 실행하기 위한 기능 및 명령어들을 실행한다. 예를 들어, 프로세서(1610)는 메모리(1620) 또는 저장 장치(1640)에 저장된 명령어들을 처리할 수 있다. 프로세서(1610)는 도 1 내지 도 15를 통하여 설명된 하나 이상의 동작을 수행할 수 있다.
메모리(1620)는 뉴럴 네트워크의 동작을 처리하기 위한 정보를 저장한다. 메모리(1620)는 컴퓨터 판독가능한 저장 매체 또는 컴퓨터 판독가능한 저장 장치를 포함할 수 있다. 메모리(1620)는 프로세서(1610)에 의해 실행하기 위한 명령어들을 저장할 수 있고, 전자 장치(1600)에 의해 소프트웨어 또는 애플리케이션이 실행되는 동안 관련 정보를 저장할 수 있다.
카메라(1630)는 정지 영상, 비디오 영상, 또는 이들 모두를 촬영할 수 있다. 카메라(1630)는 사용자가 얼굴 인증을 시도하기 위해 입력하는 얼굴 영역을 촬영할 수 있다. 카메라(1630)는 객체들에 관한 깊이 정보를 포함하는 3D 영상을 제공할 수도 있다.
저장 장치(1640)는 컴퓨터 판독가능한 저장 매체 또는 컴퓨터 판독가능한 저장 장치를 포함한다. 일 실시예에 따르면, 저장 장치(1640)는 메모리(1620)보다 더 많은 양의 정보를 저장하고, 정보를 장기간 저장할 수 있다. 예를 들어, 저장 장치(1640)는 자기 하드 디스크, 광 디스크, 플래쉬 메모리, 플로피 디스크 또는 이 기술 분야에서 알려진 다른 형태의 비휘발성 메모리를 포함할 수 있다.
입력 장치(1650)는 키보드 및 마우스를 통한 전통적인 입력 방식, 및 터치 입력, 음성 입력, 및 이미지 입력과 같은 새로운 입력 방식을 통해 사용자로부터 입력을 수신할 수 있다. 예를 들어, 입력 장치(1650)는 키보드, 마우스, 터치 스크린, 마이크로폰, 또는 사용자로부터 입력을 검출하고, 검출된 입력을 전자 장치(1600)에 전달할 수 있는 임의의 다른 장치를 포함할 수 있다.
출력 장치(1660)는 시각적, 청각적 또는 촉각적인 채널을 통해 사용자에게 전자 장치(1600)의 출력을 제공할 수 있다. 출력 장치(1660)는 예를 들어, 디스플레이, 터치 스크린, 스피커, 진동 발생 장치 또는 사용자에게 출력을 제공할 수 있는 임의의 다른 장치를 포함할 수 있다. 네트워크 인터페이스(1670)는 유선 또는 무선 네트워크를 통해 외부 장치와 통신할 수 있다.
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(Arithmetic Logic Unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(Field Programmable Gate Array), PLU(Programmable Logic Unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.

Claims (28)

  1. 뉴럴 네트워크를 위한 데이터 처리 방법에 있어서,
    각각 입력 채널들에 대응하는 입력 특징 맵의 입력 평면들 중에 제1 입력 채널에 대응하는 제1 입력 평면을 획득하는 단계;
    각각 상기 입력 채널들에 대응하는 웨이트 커널의 웨이트 평면들 중에 상기 제1 입력 채널에 대응하는 제1 웨이트 평면을 획득하는 단계;
    상기 제1 입력 평면 내 제1 입력 엘리먼트들의 적어도 일부와 상기 제1 웨이트 평면 내 제1 웨이트 엘리먼트들의 적어도 일부 간의 곱셈 결과들을 누적하여 제1 누적 데이터를 생성하는 단계; 및
    상기 제1 누적 데이터에 기초하여 각각 출력 채널들에 대응하는 출력 특징 맵의 출력 평면들 중에 제1 출력 채널에 대응하는 제1 출력 평면을 생성하는 단계
    를 포함하는 데이터 처리 방법.
  2. 제1항에 있어서,
    상기 제1 출력 평면을 생성하는 단계는
    상기 제1 누적 데이터를 포함하는 각 입력 채널에 관한 각 누적 데이터의 합에 기초하여 상기 제1 출력 평면을 생성하는 단계를 포함하는
    데이터 처리 방법.
  3. 제1항에 있어서,
    상기 입력 평면들 중에 제2 입력 채널에 대응하는 제2 입력 평면을 획득하는 단계;
    상기 웨이트 평면들 중에 상기 제2 입력 채널에 대응하는 제2 웨이트 평면을 획득하는 단계; 및
    상기 제2 입력 평면 내 제2 입력 엘리먼트들의 적어도 일부와 상기 제2 웨이트 평면 내 제2 웨이트 엘리먼트들의 적어도 일부 간의 곱셈 결과들을 누적하여 제2 누적 데이터를 생성하는 단계
    를 더 포함하는, 데이터 처리 방법.
  4. 제3항에 있어서,
    상기 제1 출력 평면을 생성하는 단계는
    상기 제1 누적 데이터 및 상기 제2 누적 데이터의 합에 기초하여 상기 제1 출력 평면을 생성하는 단계를 포함하는,
    데이터 처리 방법.
  5. 제1항에 있어서,
    상기 제1 누적 데이터를 생성하는 단계는
    상기 제1 입력 평면에서 상기 제1 웨이트 엘리먼트들의 상기 적어도 일부에 대응하는 제1 입력 엘리먼트 벡터들을 추출하는 단계;
    상기 제1 입력 엘리먼트 벡터들과 상기 제1 웨이트 엘리먼트들의 상기 적어도 일부 간의 곱셈 결과에 대응하는 제1 가중된 입력 엘리먼트 벡터들을 생성하는 단계; 및
    상기 제1 가중된 입력 엘리먼트 벡터들을 누적하여 상기 제1 누적 데이터를 생성하는 단계
    를 포함하는, 데이터 처리 방법.
  6. 제5항에 있어서,
    상기 제1 입력 엘리먼트 벡터들을 추출하는 단계는
    상기 제1 웨이트 엘리먼트들의 상기 적어도 일부의 인덱스들에 기초하여 상기 제1 입력 엘리먼트 벡터들에 대응하는 오프셋들을 결정하는 단계; 및
    상기 오프셋들에 기초하여 상기 제1 입력 평면에서 상기 제1 입력 엘리먼트 벡터들을 추출하는 단계를 포함하는,
    데이터 처리 방법.
  7. 제5항에 있어서,
    상기 제1 입력 엘리먼트 벡터들 및 상기 제1 가중된 입력 엘리먼트 벡터들의 사이즈는 SIMD(single instruction multiple data) 연산 단위에 대응하는,
    데이터 처리 방법.
  8. 제1항에 있어서,
    상기 제1 누적 데이터가 생성될 때, 상기 제1 웨이트 엘리먼트들의 상기 적어도 일부 중에 0에 대응하는 제로 웨이트 엘리먼트들과 상기 제1 입력 엘리먼트들의 상기 적어도 일부 간의 곱셈 연산은 생략되는,
    데이터 처리 방법.
  9. 제1항에 있어서,
    상기 제1 웨이트 엘리먼트들 중에 0에 대응하지 않는 논-제로 웨이트 엘리먼트들의 수를 결정하는 단계; 및
    각각 미리 정해진 방식의 연산을 수행하도록 설정된 연산 타입들 중에 상기 결정된 논-제로 웨이트 엘리먼트들의 수에 대응하는 연산 타입을 선택하는 단계
    를 더 포함하는, 데이터 처리 방법.
  10. 제9항에 있어서,
    상기 제1 누적 데이터를 생성하는 단계는
    상기 선택된 연산 타입에 기초하여 상기 제1 입력 엘리먼트들의 상기 적어도 일부와 상기 제1 웨이트 엘리먼트들의 상기 적어도 일부에 대응하는 상기 논-제로 웨이트 엘리먼트들 간의 상기 곱셈 결과들을 누적하여 상기 제1 누적 데이터를 생성하는 단계를 포함하는,
    데이터 처리 방법.
  11. 제9항에 있어서,
    상기 제1 누적 데이터를 생성하는 단계는
    상기 논-제로 웨이트 엘리먼트들의 인덱스들에 기초하여 상기 제1 입력 평면에서 상기 논-제로 웨이트 엘리먼트들에 대응하는 제1 입력 엘리먼트 벡터들을 추출하는 단계;
    상기 제1 입력 엘리먼트 벡터들과 상기 제1 웨이트 엘리먼트들의 상기 적어도 일부에 대응하는 상기 논-제로 웨이트 엘리먼트들 간의 곱셈 결과에 대응하는 제1 가중된 입력 엘리먼트 벡터들을 생성하는 단계; 및
    상기 제1 가중된 입력 엘리먼트 벡터들을 누적하여 상기 제1 누적 데이터를 생성하는 단계
    를 포함하는, 데이터 처리 방법.
  12. 하드웨어와 결합되어 제1항 내지 제11항 중 어느 하나의 항의 방법을 실행하기 위하여 매체에 저장된 컴퓨터 프로그램.
  13. 뉴럴 네트워크를 위한 데이터 처리 장치에 있어서,
    프로세서; 및
    상기 프로세서에서 실행가능한 명령어들을 포함하는 메모리
    를 포함하고,
    상기 명령어들이 상기 프로세서에서 실행되면, 상기 프로세서는 각각 입력 채널들에 대응하는 입력 특징 맵의 입력 평면들 중에 제1 입력 채널에 대응하는 제1 입력 평면을 획득하고, 각각 상기 입력 채널들에 대응하는 웨이트 커널의 웨이트 평면들 중에 상기 제1 입력 채널에 대응하는 제1 웨이트 평면을 획득하고, 상기 제1 입력 평면 내 제1 입력 엘리먼트들의 적어도 일부와 상기 제1 웨이트 평면 내 제1 웨이트 엘리먼트들의 적어도 일부 간의 곱셈 결과들을 누적하여 제1 누적 데이터를 생성하고, 상기 제1 누적 데이터에 기초하여 각각 출력 채널들에 대응하는 출력 특징 맵의 출력 평면들 중에 제1 출력 채널에 대응하는 제1 출력 평면을 생성하는,
    데이터 처리 장치.
  14. 제13항에 있어서,
    상기 프로세서는
    상기 제1 누적 데이터를 포함하는 각 입력 채널에 관한 각 누적 데이터의 합에 기초하여 상기 제1 출력 평면을 생성하는,
    데이터 처리 장치.
  15. 제13항에 있어서,
    상기 프로세서는
    상기 입력 평면들 중에 제2 입력 채널에 대응하는 제2 입력 평면을 획득하고, 상기 웨이트 평면들 중에 상기 제2 입력 채널에 대응하는 제2 웨이트 평면을 획득하고, 상기 제2 입력 평면 내 제2 입력 엘리먼트들의 적어도 일부와 상기 제2 웨이트 평면 내 제2 웨이트 엘리먼트들의 적어도 일부 간의 곱셈 결과들을 누적하여 제2 누적 데이터를 생성하는,
    데이터 처리 장치.
  16. 제15항에 있어서,
    상기 프로세서는
    상기 제1 누적 데이터 및 상기 제2 누적 데이터의 합에 기초하여 상기 제1 출력 평면을 생성하는 단계를 포함하는,
    데이터 처리 장치.
  17. 제13항에 있어서,
    상기 프로세서는
    상기 제1 입력 평면에서 상기 제1 웨이트 엘리먼트들의 상기 적어도 일부에 대응하는 제1 입력 엘리먼트 벡터들을 추출하고, 상기 제1 입력 엘리먼트 벡터들과 상기 제1 웨이트 엘리먼트들의 상기 적어도 일부 간의 곱셈 결과에 대응하는 제1 가중된 입력 엘리먼트 벡터들을 생성하고, 상기 제1 가중된 입력 엘리먼트 벡터들을 누적하여 상기 제1 누적 데이터를 생성하는,
    데이터 처리 장치.
  18. 제17항에 있어서,
    상기 프로세서는
    상기 제1 웨이트 엘리먼트들의 상기 적어도 일부의 인덱스들에 기초하여 상기 제1 입력 엘리먼트 벡터들에 대응하는 오프셋들을 결정하고, 상기 오프셋들에 기초하여 상기 제1 입력 평면에서 상기 제1 입력 엘리먼트 벡터들을 추출하는,
    데이터 처리 장치.
  19. 제17항에 있어서,
    상기 제1 입력 엘리먼트 벡터들 및 상기 제1 가중된 입력 엘리먼트 벡터들의 사이즈는 SIMD(single instruction multiple data) 연산 단위에 대응하는,
    데이터 처리 장치.
  20. 제13항에 있어서,
    상기 제1 누적 데이터가 생성될 때, 상기 제1 웨이트 엘리먼트들의 상기 적어도 일부 중에 0에 대응하는 제로 웨이트 엘리먼트들과 상기 제1 입력 엘리먼트들의 상기 적어도 일부 간의 곱셈 연산은 생략되는,
    데이터 처리 장치.
  21. 제13항에 있어서,
    상기 프로세서는
    상기 제1 웨이트 엘리먼트들 중에 0에 대응하지 않는 논-제로 웨이트 엘리먼트들의 수를 결정하고, 각각 미리 정해진 방식의 연산을 수행하도록 설정된 연산 타입들 중에 상기 결정된 논-제로 웨이트 엘리먼트들의 수에 대응하는 연산 타입을 선택하는,
    데이터 처리 장치.
  22. 제21항에 있어서,
    상기 프로세서는
    상기 선택된 연산 타입에 기초하여 상기 제1 입력 엘리먼트들의 상기 적어도 일부와 상기 제1 웨이트 엘리먼트들의 상기 적어도 일부에 대응하는 상기 논-제로 웨이트 엘리먼트들 간의 상기 곱셈 결과들을 누적하여 상기 제1 누적 데이터를 생성하는,
    데이터 처리 장치.
  23. 제21항에 있어서,
    상기 프로세서는
    상기 논-제로 웨이트 엘리먼트들의 인덱스들에 기초하여 상기 제1 입력 평면에서 상기 논-제로 웨이트 엘리먼트들에 대응하는 제1 입력 엘리먼트 벡터들을 추출하고, 상기 제1 입력 엘리먼트 벡터들과 상기 제1 웨이트 엘리먼트들의 상기 적어도 일부 에 대응하는 상기 논-제로 웨이트 엘리먼트들 간의 곱셈 결과에 대응하는 제1 가중된 입력 엘리먼트 벡터들을 생성하고, 상기 제1 가중된 입력 엘리먼트 벡터들을 누적하여 상기 제1 누적 데이터를 생성하는,
    데이터 처리 장치.
  24. 전자 장치의 프로세서에 의해 수행되는, 뉴럴 네트워크의 레이어에 관한 컨볼루션 연산 수행 방법에 있어서,
    복수의 입력 엘리먼트들을 포함하는 상기 레이어의 입력 평면을 획득하는 단계;
    복수의 웨이트 엘리먼트들을 포함하고, 상기 레이어의 상기 입력 평면에 대응하는 웨이트 평면을 획득하는 단계; 및
    상기 웨이트 평면의 각 웨이트 엘리먼트와 상기 입력 평면의 상기 복수의 입력 엘리먼트들의 대응 입력 엘리먼트들 간의 곱셈 연산을 수행하여 획득된 곱셈 결과 엘리멘트들을 누적하여 출력 평면을 획득하는 단계
    를 포함하는 컨볼루션 연산 수행 방법.
  25. 제24항에 있어서,
    상기 복수의 웨이트 엘리먼트들 중 0에 대응하는 제로 웨이트 엘리먼트가 존재하는 경우, 상기 제로 웨이트 엘리먼트와 상기 제로 웨이트 엘리먼트에 대응하는 입력 엘리먼트들 간의 곱셈 연산이 생략되는,
    컨볼루션 연산 방법.
  26. 제24항에 있어서,
    상기 뉴럴 네트워크의 레이어에 관한 컨볼루션 연산은 SIMD(single instruction multiple data) 기반으로 수행되는,
    컨볼루션 연산 방법.
  27. 제24항에 있어서,
    상기 입력 평면 및 상기 웨이트 평면은 하나의 입력 채널에 대응하고,
    상기 출력 평면은 하나의 출력 채널에 대응하는,
    컨볼루션 연산 방법.
  28. 제24항에 있어서,
    상기 입력 평면은 상기 레이어의 입력 특징 맵에 대응하는 복수의 입력 평면들 중 하나이고,
    상기 웨이트 평면은 상기 레이어의 웨이트 커널에 대응하는 복수의 웨이트 평면들 중 하나이고,
    상기 복수의 입력 평면들에서 상기 입력 평면을 제외한 적어도 하나의 다른 입력 평면, 및 상기 복수의 웨이트 평면들에서 상기 웨이트 평면을 제외한 적어도 하나의 다른 웨이트 평면에 기초하여 생성된 적어도 하나의 다른 출력 평면, 및 상기 출력 평면에 기초하여 상기 레이어의 출력 특징 맵이 결정되는,
    컨볼루션 연산 방법.
KR1020190127258A 2019-08-13 2019-10-14 뉴럴 네트워크를 위한 데이터 처리 방법 및 장치 KR20210019917A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
US16/856,112 US20210049474A1 (en) 2019-08-13 2020-04-23 Neural network method and apparatus
CN202010534666.0A CN112396085A (zh) 2019-08-13 2020-06-12 识别图像的方法和设备
EP20187317.1A EP3789928A3 (en) 2019-08-13 2020-07-23 Neural network method and apparatus
JP2020134566A JP7114659B2 (ja) 2019-08-13 2020-08-07 ニューラルネットワーク方法及び装置

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20190098810 2019-08-13
KR1020190098810 2019-08-13

Publications (1)

Publication Number Publication Date
KR20210019917A true KR20210019917A (ko) 2021-02-23

Family

ID=74688200

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190127258A KR20210019917A (ko) 2019-08-13 2019-10-14 뉴럴 네트워크를 위한 데이터 처리 방법 및 장치

Country Status (1)

Country Link
KR (1) KR20210019917A (ko)

Similar Documents

Publication Publication Date Title
KR102415508B1 (ko) 컨볼루션 신경망 처리 방법 및 장치
CN108073983B (zh) 在硬件中执行核心跨越
CN108615072B (zh) 在硬件中执行平均池化
CN108351984B (zh) 硬件高效的深度卷积神经网络
CN109871936B (zh) 用于处理神经网络中的卷积运算的方法和装置
US10896367B2 (en) Depth concatenation using a matrix computation unit
US9691019B1 (en) Depth concatenation using a matrix computation unit
KR102562320B1 (ko) 비트 연산 기반의 뉴럴 네트워크 처리 방법 및 장치
KR20180073118A (ko) 컨볼루션 신경망 처리 방법 및 장치
JP7114659B2 (ja) ニューラルネットワーク方法及び装置
KR20210079785A (ko) 뉴럴 네트워크의 컨볼루션 연산 처리 방법 및 장치
US11144291B1 (en) Loop-oriented neural network compilation
CN112598120A (zh) 数据处理的方法和设备
KR20220059194A (ko) 대상 객체에 적응적인 객체 추적 방법 및 장치
US20230196113A1 (en) Neural network training under memory restraint
KR20230069607A (ko) 셀프 어텐션 기반의 영상 인식 방법 및 장치
US11562554B1 (en) Workload reduction for non-maximum suppression operation
CN114792387A (zh) 图像恢复方法和设备
KR20210019917A (ko) 뉴럴 네트워크를 위한 데이터 처리 방법 및 장치
KR20210112834A (ko) 뉴럴 네트워크 내 레이어에 관한 컨볼루션 연산의 처리 방법 및 장치
US11636569B1 (en) Matrix transpose hardware acceleration
US10747846B2 (en) Efficient matrix property determination with pipelining and parallelism
KR20220114228A (ko) 프로세서, 프로세서의 동작 방법 및 이를 포함한 전자 장치
JP7020555B2 (ja) 情報処理装置、情報処理方法、及びプログラム
KR20220114209A (ko) 연사 영상 기반의 영상 복원 방법 및 장치

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal