KR102655950B1 - 뉴럴 네트워크의 고속 처리 방법 및 그 방법을 이용한 장치 - Google Patents

뉴럴 네트워크의 고속 처리 방법 및 그 방법을 이용한 장치 Download PDF

Info

Publication number
KR102655950B1
KR102655950B1 KR1020180094311A KR20180094311A KR102655950B1 KR 102655950 B1 KR102655950 B1 KR 102655950B1 KR 1020180094311 A KR1020180094311 A KR 1020180094311A KR 20180094311 A KR20180094311 A KR 20180094311A KR 102655950 B1 KR102655950 B1 KR 102655950B1
Authority
KR
South Korea
Prior art keywords
output
layer
maps
current layer
input
Prior art date
Application number
KR1020180094311A
Other languages
English (en)
Other versions
KR20190098671A (ko
Inventor
손창용
손진우
정상일
최창규
한재준
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to US16/273,662 priority Critical patent/US20190251436A1/en
Priority to EP19156720.5A priority patent/EP3528181B1/en
Priority to CN201910113798.3A priority patent/CN110163240A/zh
Publication of KR20190098671A publication Critical patent/KR20190098671A/ko
Application granted granted Critical
Publication of KR102655950B1 publication Critical patent/KR102655950B1/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/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)
  • Image Analysis (AREA)

Abstract

경량화된 데이터에 기초하여 뉴럴 네트워크를 처리하는 방법 및 장치가 개시된다. 일 실시예에 따르면, 뉴럴 네트워크를 이용한 처리 방법은 뉴럴 네트워크의 현재 레이어의 입력 맵들 및 현재 레이어의 웨이트 커널들 간의 컨볼루션 연산을 수행하여 현재 레이어의 출력 맵들을 생성하고, 뉴럴 네트워크 내에서 처리되는 적어도 일부의 액티베이션 데이터의 분포에 기초하여 현재 레이어의 출력 맵들에 관한 경량화 포맷을 결정하고, 결정된 경량화 포맷에 기초하여 현재 레이어의 출력 맵들에 대응하는 액티베이션 데이터를 로우 비트 폭(low bit width)으로 경량화하는 단계들을 포함한다.

Description

뉴럴 네트워크의 고속 처리 방법 및 그 방법을 이용한 장치{HIGH SPEED PROCESSING METHOD OF NEURAL NETWORK AND APPARATUS USING THEREOF}
뉴럴 네트워크의 고속 처리 방법 및 그 방법을 이용한 장치에 관한 것이다.
최근 들어, 입력 패턴을 특정 그룹으로 분류하는 문제를 해결하는 방안으로써, 인간이 지니고 있는 효율적인 패턴 인식 방법을 실제 컴퓨터에 적용시키려는 연구가 활발히 진행되고 있다. 이러한 연구 중 하나로, 인간의 생물학적 신경 세포의 특성을 수학적 표현에 의해 모델링한 인공 뉴럴 네트워크(artificial neural network)에 대한 연구가 있다. 입력 패턴을 특정 그룹으로 분류하는 문제를 해결하기 위해, 인공 뉴럴 네트워크는 인간이 가지고 있는 학습이라는 능력을 모방한 알고리즘을 이용한다. 이 알고리즘을 통하여 인공 뉴럴 네트워크는 입력 패턴과 출력 패턴들 간의 사상(mapping)을 생성해낼 수 있는데, 이를 인공 뉴럴 네트워크가 학습 능력이 있다고 표현한다. 또한, 인공 뉴럴 네트워크는 학습된 결과에 기초하여 학습에 이용되지 않았던 입력 패턴에 대하여 비교적 올바른 출력을 생성할 수 있는 일반화 능력을 가지고 있다.
일 실시예에 따르면, 뉴럴 네트워크를 이용한 처리 방법은 뉴럴 네트워크의 현재 레이어의 입력 맵들 및 상기 현재 레이어의 웨이트 커널들 간의 컨볼루션 연산을 수행하여 상기 현재 레이어의 출력 맵들을 생성하는 단계; 상기 뉴럴 네트워크 내에서 처리되는 적어도 일부의 액티베이션 데이터의 분포에 기초하여, 상기 현재 레이어의 출력 맵들에 관한 경량화 포맷을 결정하는 단계; 및 상기 결정된 경량화 포맷에 기초하여, 상기 현재 레이어의 출력 맵들에 대응하는 액티베이션 데이터를 로우 비트 폭(low bit width)으로 경량화하는 단계를 포함한다.
상기 경량화 포맷을 결정하는 단계는 상기 현재 레이어의 출력 맵들의 최대 값에 기초하여 상기 출력 맵들에 관한 경량화 포맷을 결정하는 단계를 포함할 수 있다.
상기 경량화하는 단계는 상기 결정된 경량화 포맷에 기초하여, 상기 현재 레이어의 출력 맵들에 대응하는 다음 레이어의 입력 맵들을 상기 로우 비트 폭으로 경량화하는 단계를 포함할 수 있다.
상기 경량화하는 단계는 상기 경량화 포맷에 대응하는 값으로 상기 다음 레이어의 입력 맵들에 관한 쉬프트 연산을 수행하여, 상기 현재 레이어의 출력 맵들에 대응하는 다음 레이어의 입력 맵들을 상기 로우 비트 폭(low bit width)으로 경량화하는 단계를 포함할 수 있다.
상기 뉴럴 네트워크를 이용한 처리 방법은 상기 현재 레이어의 출력 맵들을 메모리에서 로드하는 단계; 및 상기 로드된 상기 현재 레이어의 출력 맵들에 기초하여 상기 현재 레이어의 출력 맵들의 최대 값을 저장하는 레지스터를 업데이트하는 단계를 더 포함할 수 있고, 상기 경량화 포맷을 결정하는 단계는 상기 레지스터에 저장된 값에 기초하여 수행될 수 있다.
상기 경량화 포맷을 결정하는 단계는 상기 뉴럴 네트워크의 이전 레이어의 출력 맵들의 최대 값에 기초하여, 상기 현재 레이어의 출력 맵들의 최대 값을 예측하는 단계; 및 상기 예측된 현재 레이어의 출력 맵들의 최대 값에 기초하여 상기 현재 레이어의 출력 맵들에 관한 경량화 포맷을 결정하는 단계를 포함할 수 있다.
상기 경량화하는 단계는 상기 결정된 경량화 포맷에 기초하여 상기 현재 레이어의 출력 맵들을 상기 로우 비트 폭으로 경량화하는 단계를 포함할 수 있다.
상기 경량화하는 단계는 상기 경량화 포맷에 대응하는 값으로 상기 현재 레이어의 출력 맵들에 관한 쉬프트 연산을 수행하여, 하이 비트 폭(high bit width)의 상기 현재 레이어의 출력 맵들을 상기 로우 비트 폭(low bit width)으로 경량화하는 단계를 포함할 수 있다.
상기 뉴럴 네트워크를 이용한 처리 방법은 상기 컨볼루션 연산에 의해 생성된 상기 현재 레이어의 출력 맵들에 기초하여 상기 현재 레이어의 출력 맵들의 최대 값을 저장하는 레지스터를 업데이트하는 단계를 더 포함할 수 있고, 상기 뉴럴 네트워크의 다음 레이어의 출력 맵들의 최대 값은 상기 레지스터에 저장된 값에 기초하여 예측될 수 있다.
상기 뉴럴 네트워크를 이용한 처리 방법은 웨이트 커널들을 레이어 및 출력 채널 별로 포함하는 데이터베이스를 참조하여, 상기 현재 레이어 내 현재 처리 중인 제1 출력 채널에 대응하는 제1 웨이트 커널을 획득하는 단계를 더 포함할 수 있고, 상기 현재 레이어의 출력 맵들을 생성하는 단계는 상기 현재 레이어의 입력 맵들 및 상기 제1 웨이트 커널 간의 컨볼루션 연산을 수행하여 상기 제1 출력 채널에 대응하는 제1 출력 맵을 생성하는 단계를 포함할 수 있다. 상기 제1 웨이트 커널은 상기 현재 레이어의 제2 채널에 대응하는 제2 웨이트 커널과 독립적으로 결정될 수 있다.
상기 현재 레이어의 입력 맵들 및 상기 현재 레이어의 웨이트 커널들은 상기 로우 비트 폭(low bit width)을 가지고, 상기 현재 레이어의 출력 맵들은 하이 비트 폭(high bit width)을 가질 수 있다.
일 실시예에 따르면, 뉴럴 네트워크를 이용한 처리 장치는 프로세서; 및 상기 프로세서에서 읽을 수 있는 명령어를 포함하는 메모리를 포함하고, 상기 명령어가 상기 프로세서에서 실행되면, 상기 프로세서는 뉴럴 네트워크의 현재 레이어의 입력 맵들 및 상기 현재 레이어의 웨이트 커널들 간의 컨볼루션 연산을 수행하여 상기 현재 레이어의 출력 맵들을 생성하고, 상기 뉴럴 네트워크 내에서 처리되는 적어도 일부의 액티베이션 데이터의 분포에 기초하여, 상기 현재 레이어의 출력 맵들에 관한 경량화 포맷을 결정하고, 상기 결정된 경량화 포맷에 기초하여, 상기 현재 레이어의 출력 맵들에 대응하는 액티베이션 데이터를 로우 비트 폭(low bit width)으로 경량화한다.
다른 실시예에 따르면, 뉴럴 네트워크를 이용한 처리 방법은 복수의 레이어를 포함하는 뉴럴 네트워크를 시작하는 단계; 상기 뉴럴 네트워크의 현재 레이어의 입력 맵들 및 상기 현재 레이어의 웨이트 커널들 간의 컨볼루션 연산을 수행하여 상기 현재 레이어의 출력 맵들을 생성하는 단계; 상기 뉴럴 네트워크가 시작되기 전에 결정되지 않았던, 상기 현재 레이어의 출력 맵들에 관한 경량화 포맷을 결정하는 단계; 및 상기 결정된 경량화 포맷에 기초하여, 상기 현재 레이어의 출력 맵들에 대응하는 액티베이션 데이터를 경량화하는 단계를 포함한다.
상기 뉴럴 네트워크를 시작하는 단계는 입력 데이터에 관한 추론(inference)을 위해, 상기 뉴럴 네트워크에 상기 입력 데이터를 입력하는 단계를 포함할 수 있다.
도 1은 일 실시예에 따른 처리 장치 및 뉴럴 네트워크를 나타낸 도면.
도 2는 일 실시예에 따른 3D 컨볼루셔널 뉴럴 네트워크의 구조를 나타낸 도면.
도 3은 일 실시예에 따른 경량화 포맷을 나타낸 도면.
도 4는 일 실시예에 따른 웨이트 커널의 경량화를 나타낸 도면.
도 5는 일 실시예에 따른 경량화 데이터를 포함하는 룩 업 테이블을 나타낸 도면.
도 6은 일 실시예에 따른 액티베이션 데이터의 동적 경량화 프로세스를 나타낸 도면.
도 7은 다른 실시예에 따른 액티베이션 데이터의 동적 경량화 프로세스를 나타낸 도면.
도 8은 일 실시예에 따른 입력 맵의 최대 값 분포를 나타낸 그래프.
도 9는 일 실시예에 따른 트레이닝 장치를 나타낸 블록도.
도 10은 일 실시예에 따른 처리 장치를 나타낸 블록도.
도 11은 일 실시예에 따른 처리 방법을 나타낸 플로우 차트.
도 12는 다른 실시예에 따른 처리 방법을 나타낸 플로우 차트.
아래 개시되어 있는 특정한 구조 또는 기능들은 단지 기술적 개념을 설명하기 위한 목적으로 예시된 것으로서, 아래 개시와는 달리 다른 다양한 형태로 실시될 수 있으며 본 명세서의 실시예들을 한정하지 않는다.
제1 또는 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 이해되어야 한다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
도 1은 일 실시예에 따른 처리 장치 및 뉴럴 네트워크를 나타낸 도면이다. 도 1을 참조하면, 처리 장치(100)는 뉴럴 네트워크(neural network, 110)를 위한 데이터를 로우 비트 폭(low bit width)으로 경량화(lightening)하여 표현하고, 경량화된 데이터를 이용하여 뉴럴 네트워크(110)의 동작을 처리할 수 있다. 예를 들어, 뉴럴 네트워크(110)의 동작은 입력 영상 내 객체를 인식하거나 인증하는 것을 포함할 수 있다. 아래에서 설명되는 경량화를 포함하는 뉴럴 네트워크(110)와 관련된 처리 동작의 적어도 일부는 소프트웨어로 구현되거나, 혹은 뉴럴 프로세서(neural processor)를 포함하는 하드웨어로 구현되거나, 소프트웨어 및 하드웨어의 조합으로 구현될 수 있다.
뉴럴 네트워크(110)는 컨볼루셔널 뉴럴 네트워크(convolutional neural network, CNN)를 포함할 수 있다. 뉴럴 네트워크(110)는 딥 러닝에 기반하여 비선형적 관계에 있는 입력 데이터 및 출력 데이터를 서로 매핑함으로써 객체 인식 및 객체 인증 등을 수행할 수 있다. 딥 러닝은 빅 데이터 세트로부터 영상 또는 음성 인식과 같은 문제를 해결하기 위한 기계 학습 기법이다. 딥 러닝은 준비된 트레이닝 데이터를 이용하여 뉴럴 네트워크(110)를 트레이닝하면서 에너지가 최소화되는 지점을 찾아가는 최적화 문제 풀이 과정으로 이해될 수 있다. 딥 러닝의 지도식(supervised) 또는 비지도식(unsupervised) 학습을 통해 뉴럴 네트워크(110)의 구조, 혹은 모델에 대응하는 가중치(weight)가 구해질 수 있고, 이러한 가중치를 통해 입력 데이터 및 출력 데이터가 서로 매핑될 수 있다.
뉴럴 네트워크(110)는 복수의 레이어들을 포함할 수 있다. 복수의 레이어들은 입력 레이어(input layer), 적어도 하나의 히든 레이어(hidden layer), 및 출력 레이어(output layer)를 포함할 수 있다. 제1 레이어(111) 및 제2 레이어(112)는 상기 복수의 레이어들 중 적어도 일부일 수 있다. 아래에서는 제2 레이어(112)는 제1 레이어(111)의 다음 레이어이며, 제1 레이어(111)가 처리된 이후에 제2 레이어(112)가 처리되는 것으로 가정한다. 도 1에는 두 레이어들(111, 112)이 도시되어 있으나, 이는 설명의 편의를 위한 것으로, 뉴럴 네트워크(110)는 두 레이어들(111, 112) 외에 더 많은 레이어들을 포함할 수 있다.
CNN에서 각 레이어에 입력되는 데이터는 입력 특징 맵(input feature map)으로 지칭될 수 있고, 각 레이어에서 출력되는 데이터는 출력 특징 맵(output feature map)으로 지칭될 수 있다. 아래에서 입력 특징 맵은 간단히 입력 맵으로 지칭될 수 있고, 출력 특징 맵은 간단히 출력 맵으로 지칭될 수 있다. 실시예에 따라 출력 맵은 각 레이어 내의 컨볼루션 연산 결과, 혹은 각 레이어 내의 활성화 함수(activation function) 처리 결과에 대응할 수 있다. 입력 맵 및 출력 맵은 액티베이션 데이터(activation data)로 지칭될 수 있다. 예를 들어, 각 레이어 내의 컨볼루션 연산 결과, 혹은 각 레이어 내의 활성화 함수 처리 결과는 액티베이션 데이터로 지칭될 수 있다. 입력 레이어에서 입력 맵은 입력 영상의 영상 데이터에 대응할 수 있다.
뉴럴 네트워크(110)에 관한 동작을 처리하기 위해, 처리 장치(100)는 각 레이어에 관해 입력 맵 및 웨이트 커널(weight kernel) 간에 컨볼루션 연산(convolution operation)을 수행할 수 있고, 컨볼루션 연산 결과에 기초하여 출력 맵을 생성할 수 있다. CNN에서는 컨볼루셔널 계층에 관해 딥 러닝이 수행될 수 있다. 처리 장치(100)는 컨볼루션 연산 결과에 활성화 함수를 적용하여 출력 맵을 생성할 수 있다. 활성화 함수는 시그모이드(sigmoid), 하이퍼볼릭 탄젠트(hyperbolic tangent, tanh) 및 렐루(rectified linear unit, ReLU)를 포함할 수 있으며, 활성화 함수에 의해 뉴럴 네트워크(110)에 비선형성이 부여될 수 있다. 뉴럴 네트워크(110)의 폭과 깊이가 충분히 크면 임의의 함수를 구현할 수 있을 만큼의 용량(capacity)을 가질 수 있다. 뉴럴 네트워크(110)가 적절한 트레이닝 과정을 통해 충분히 많은 양의 트레이닝 데이터를 학습하면 최적의 성능을 달성할 수 있다.
CNN은 영상과 같은 2D 데이터를 처리하는데 적합할 수 있다. CNN에서는 2D 데이터를 처리하기 위해 입력 맵 및 웨이트 커널 간에 컨볼루션 연산이 수행될 수 있는데, 모바일 단말과 같이 자원이 제한된 환경에서 이러한 컨볼루션 연산을 수행하는데 시간 및 자원이 크게 소요될 수 있다.
실시예에 따르면, 처리 장치(100)는 경량화된 데이터를 이용하여 컨볼루션 연산을 수행할 수 있다. 경량화는 하이 비트 폭(high bit width)의 데이터를 로우 비트 폭(low bit width)의 데이터로 변환하는 과정을 의미한다. 로우 비트 폭은 하이 비트 폭에 비해 상대적으로 적은 비트 수를 가질 수 있다. 예를 들어 하이 비트 폭이 32 비트인 경우 로우 비트 폭은 16 비트, 8 비트 혹은 4비트일 수 있고, 하이 비트 폭이 16 비트인 경우 로우 비트 폭은 8 비트 혹은 4 비트일 수 있다. 하이 비트 폭 및 로우 비트 폭의 구체적인 수치는 앞선 예시에 한정되는 것은 아니며, 실시예에 따라 다양한 수치가 활용될 수 있다.
처리 장치(100)는 고정 소수점(fixed point) 변환에 기초하여 데이터를 경량화할 수 있다. 고정 소수점 변환 과정에서 부동 소수점의 변수에 일정한 지수를 곱하면 해당 변수는 정수(integer)화될 수 있다. 이때 곱해지는 지수는 Q-포맷(Q-format)으로 정의될 수 있고, 하이 비트 폭의 데이터를 로우 비트 폭으로 변환하기 위한 Q-포맷은 경량화 포맷으로 정의될 수 있다. 경량화 포맷에 관해서는 추후 상세히 설명한다.
뉴럴 네트워크(110)는 트레이닝 단계에서 트레이닝 데이터에 기초하여 트레이닝될 수 있고, 추론(inference) 단계에서 입력 데이터에 관한 분류, 인식, 검출과 같은 추론 동작을 수행할 수 있다. 트레이닝 단계를 거쳐 웨이트 커널이 결정되면, 웨이트 커널은 로우 비트 폭의 포맷으로 경량화되어 저장될 수 있다. 트레이닝은 오프라인 단계 혹은 온라인 단계에서 수행될 수 있다. 최근 뉴럴 프로세서와 같은 트레이닝 가속이 가능한 하드웨어의 등장으로 인해, 온라인 단계의 트레이닝이 가능하다. 웨이트 커널은 '미리' 결정된 것으로 표현될 수 있는데, 여기서 '미리'는 뉴럴 네트워크(110)에 추론을 위한 입력 데이터가 입력되기 전을 의미할 수 있다.
실시예에 따르면, 웨이트 커널은 레이어 및 채널 별로 경량화될 수 있다. 뉴럴 네트워크(110)는 복수의 레이어들을 포함할 수 있고, 각 레이어는 웨이트 커널의 수에 따라 복수의 채널들을 포함할 수 있다. 웨이트 커널은 레이어 및 채널 별로 경량화될 수 있고, 경량화된 웨이트 커널은 데이터베이스를 통해 레이어 및 채널 별로 저장될 수 있다. 일례로, 데이터베이스는 룩 업 테이블을 포함할 수 있다.
i번째 레이어에서 웨이트 커널의 사이즈가 Ki * Ki이고, 입력 채널의 수가 Ci이고, 출력 채널의 수가 Di라고 하면, i번째 레이어의 웨이트 커널은 ((Ki * Ki) * Ci * Di)로 표현될 수 있다. CNN에 포함된 레이어의 수가 I라고 하면, CNN의 웨이트 커널은 ((Ki * Ki) * Ci * Di) * I로 표현될 수 있다. 컨볼루션 연산을 위해 입력 맵과 웨이트 커널 간의 매트릭스 곱을 하는 경우, 단일 출력 맵을 생성하기 위한 연산에 필요한 웨이트 커널은 (K * K) * C로 나타낼 수 있다. (K * K) * C의 웨이트 커널에 기초하여 단일 출력 채널이 결정되므로, 웨이트 커널이 (K * K) * C 단위로 경량화되는 것은 웨이트 커널이 출력 채널 별로 경량화되는 것으로 표현될 수 있다.
최소 단위의 웨이트 커널 내 값들은 동일한 경량화 포맷을 갖도록 하는 것이 바람직하다. 웨이트 커널이 최소 단위인 채널 별로 경량화됨에 따라, 동일한 비트 수로 표현할 수 있는 해상도(resolution)가 최대화될 수 있다. 예를 들어, 레이어 단위로 웨이트 커널이 경량화되는 경우, 오버플로(overflow)를 방지하기 위해 경량화 포맷이 낮게 설정될 수 있고, 이에 따라 수치 오차(numerical error)가 발생할 수 있다. 웨이트 커널을 채널 단위로 경량화하는 경우 웨이트 커널을 레이어 단위로 경량화 경우보다 더 작은 단위의 데이터 분포가 고려되므로 정보 손실이 줄어들 수 있다. 실시예에 따르면 채널 별 웨이트 커널의 데이터 분포를 고려하여 경량화 포맷이 결정되고, 이에 따라 웨이트 커널이 최소 단위 별로 경량화된다. 따라서, 낭비되는 비트가 최소화되고 정보 손실이 최소화될 수 있다.
컨볼루션 연산은 MAC(Multiplication and Accumulation) 연산에 해당하므로 레지스터를 통한 덧셈을 누적해서 처리되는 범위 내에서 데이터(특히, 웨이트 커널)의 Q-포맷 또는 경량화 포맷이 서로 동일하게 맞춰질 필요가 있다. 만약 누적 덧셈이 처리되는 데이터의 Q-포맷 또는 경량화 포맷이 맞춰져 있지 않은 경우 Q-포맷 또는 경량화 포맷을 맞추기 위한 쉬프트 연산(shift operation)이 추가로 필요할 수 있다. 실시예에 따르면 특정 채널에서 웨이트 커널의 Q-포맷 또는 경량화 포맷이 동일한 경우에는, 상기 채널의 입력 맵과 상기 채널의 웨이트 커널 간의 컨볼루션 연산 시 Q-포맷 또는 경량화 포맷을 맞추기 위한 쉬프트 연산이 생략될 수 있다.
입력 맵 및 출력 맵을 위한 경량화 포맷이 오프라인 단계에서 미리 결정된다면, 온라인 단계에서 입력 맵 및 출력 맵을 표현하기 위한 데이터의 해상도(resolution)가 크게 감소할 수 있다. 입력 맵 및 출력 맵은 동적 범위(dynamic range)가 매우 커서, 데이터 표현의 제한된 길이(length) 및 연산 결과의 오버플로를 방지하기 위해 낮은 경량화 포맷이 고정적으로 사용될 수 있는데, 낮은 경량화 포맷이 고정적으로 사용됨에 따라 데이터를 표현할 수 있는 비트 수가 제한될 수 있기 때문이다.
처리 장치(100)는 해상도(resolution)를 높이고, 수치 오차(numerical error)를 억제하기 위해, 입력 맵 및 출력 맵을 위한 경량화 포맷을 적응적으로(adaptively) 결정할 수 있다. 경량화 포맷을 적응적으로 결정한다는 것은 뉴럴 네트워크(110)가 시작되기 전에는 결정되지 않았던 경량화 포맷을 뉴럴 네트워크(110)가 시작된 이후에 결정하는 것을 의미할 수 있다. 뉴럴 네트워크(110)가 시작되었다는 것은 뉴럴 네트워크(110)가 추론(inference)을 위한 준비가 된 것을 의미할 수 있다. 예를 들어, 뉴럴 네트워크(110)가 시작된 것은 뉴럴 네트워크(110)가 메모리에 로드된 것, 혹은 뉴럴 네트워크(110)가 메모리에 로드된 이후 뉴럴 네트워크(110)에 추론(inference)을 위한 입력 데이터가 입력된 것을 포함할 수 있다.
도 1에서 그래프(131)는 입력 영상(130)의 픽셀 값들의 데이터 분포를 나타내고, 그래프(141)는 입력 영상(140)의 픽셀 값들의 데이터 분포를 나타내고, 그래프(151)는 입력 영상(150)의 픽셀 값들의 데이터 분포를 나타낸다. 입력 영상(130)은 상대적으로 작은 값들의 데이터를 포함하고, 입력 영상(150)은 상대적으로 큰 값들의 데이터를 포함한다. 처리 장치(100)는 뉴럴 네트워크(110)를 이용하여 입력 영상들(130 내지 150)을 각각 처리할 때, 입력 영상들(130 내지 150)에 관해 각각 다른 경량화 포맷을 적응적으로 설정할 수 있다. 예를 들어, 처리 장치(100)는 입력 영상(130)과 같이 작은 값의 데이터 집합에 관해서는 높은 경량화 포맷을 적용할 수 있고, 입력 영상(150)과 같이 큰 값의 데이터 집합에 관해서는 낮은 경량화 포맷을 적용할 수 있다.
예를 들어, 그래프(161)에 대응하는 데이터 집합은 16비트로 표현될 경우 경량화 포맷 Q6에서 1/64 스텝의 해상도가 확보될 수 있다. 경량화 포맷 Q6 및 1/64 스텝의 해상도는 소수 점 여섯 자리까지 활용 가능한 해상도를 의미한다. 경량화 포맷이 클수록, 스텝이 작아질수록 높은 해상도의 표현이 가능하다. 그래프(131)에 대응하는 데이터 집합은 그 값이 작기 때문에 8비트로 표현되어도 경량화 포맷 Q6에서 1/64 스텝의 해상도가 확보될 수 있다. 이와 같이 데이터는 그 분포에 따라 로우 비트 폭으로도 비교적 정확하게 표현될 수 있다. 그래프(141)의 데이터는 그래프(131)의 데이터에 비해 값이 크므로 8비트로 표현 시 경량화 포맷 Q4 및 1/16 스텝의 해상도가 적용될 수 있고, 그래프(151)의 데이터는 그래프(141)의 데이터에 비해 값이 크므로 8비트로 표현 시 경량화 포맷 Q3 및 1/8 스텝의 해상도가 적용될 수 있다. 이러한 적응적 경량화는 뉴럴 네트워크(110)의 레이어 별로 적용될 수 있다.
동적 경량화를 위해, 처리 장치(100)는 뉴럴 네트워크(110)의 현재 레이어의 입력 맵들 및 현재 레이어의 웨이트 커널들 간의 컨볼루션 연산을 수행하여 현재 레이어의 출력 맵들을 생성하고, 뉴럴 네트워크(110) 내에서 처리되는 적어도 일부의 액티베이션 데이터의 분포에 기초하여, 상기 현재 레이어의 출력 맵들에 관한 경량화 포맷을 결정할 수 있다. 처리 장치(100)는 결정된 경량화 포맷에 기초하여, 현재 레이어의 출력 맵들에 대응하는 액티베이션 데이터를 로우 비트 폭으로 경량화할 수 있다.
일 실시예에 따르면, 처리 장치(100)는 현재 레이어의 출력 맵들의 최대 값에 기초하여 현재 레이어의 출력 맵들에 관한 경량화 포맷을 결정하고, 결정된 경량화 포맷에 기초하여 현재 레이어의 출력 맵들에 대응하는 다음 레이어의 입력 맵들을 로우 비트 폭으로 경량화할 수 있다. 다른 실시예에 따르면, 처리 장치(100)는 이전 레이어의 출력 맵들의 최대 값에 기초하여 현재 레이어의 출력 맵들의 최대 값을 예측하고, 예측된 현재 레이어의 출력 맵들의 최대 값에 기초하여 현재 레이어의 출력 맵들에 관한 경량화 포맷을 결정하고, 결정된 경량화 포맷에 기초하여 현재 레이어의 출력 맵들을 로우 비트 폭으로 경량화할 수 있다.
입력 맵 및 출력 맵에 관한 적응적 경량화(adaptive lightening)는 트레이닝 단계 및 추론 단계에서 수행될 수 있다. 트레이닝 단계에서는 트레이닝 데이터에 기초한 입력 맵 및 출력 맵이 경량화될 수 있고, 추론 단계에서는 추론 대상인 입력 데이터에 기초한 입력 맵 및 출력 맵이 경량화될 수 있다. 뉴럴 네트워크(110)의 트레이닝은 오프라인 단계 및 온라인 단계 중 적어도 하나에서 수행될 수 있다. 다시 말해, 실시예에 따른 적응적 경량화(adaptive lightening)는 오프라인 트레이닝 및 온라인 트레이닝에서 사용되는 트레이닝 데이터, 및 추론 단계에서 사용되는 입력 데이터에 관해 적용될 수 있다.
입력 맵 및 출력 맵과 같은 데이터 집합을 경량화하기 위해서는 데이터 집합의 최대 값을 검출하기 위한 제1 메모리 접근 동작 및, 검출된 최대 값에 기초하여 데이터 집합에 경량화 포맷을 적용하기 위한 제2 메모리 접근 동작이 추가로 요구될 수 있다. 데이터 집합의 경량화를 위해 이와 같은 추가적인 동작이 수행된다면 추가적인 컴퓨팅 자원이 소모되고 데이터 처리 속도가 저하될 수 있다. 실시예에 따르면 입력 맵 및 출력 맵을 경량화할 때 이러한 추가적인 동작이 최소화될 수 있다.
일 실시예에 따르면, 처리 장치(100)는 제1 레이어(111)의 하이 비트 폭의 출력 맵을 레지스터에서 메모리로 저장할 때 제1 레이어(111)의 하이 비트 폭의 출력 맵의 최대 값을 구하고, 제2 레이어(112)의 컨볼루션 연산 전에 제2 레이어(112)의 하이 비트 폭의 입력 맵을 로드하여 상기 구한 최대 값을 기초로 이를 로우 비트 폭의 입력 맵으로 경량화할 수 있다. 이러한 동작에 따라 전술된 제1 메모리 접근 동작이 생략될 수 있다.
다른 실시예에 따르면, 처리 장치(100)는 제1 레이어(111)의 출력 맵의 최대 값을 이용하여 제2 레이어(112)의 출력 맵의 최대 값을 예측하고, 예측된 최대 값으로 제2 레이어(112)의 출력 맵을 경량화할 수 있다. 이러한 동작에 따라 전술된 제1 메모리 접근 동작 및 제2 메모리 접근 동작이 생략될 수 있다.
실시예들은 스마트폰 등의 제한된 임베디드 환경에서, 처리 속도나 메모리 활용을 극대화하여 인식 및 인증 기술을 효과적으로 구현할 수 있다. 또한, 실시예들은 딥 뉴럴 네트워크의 성능 저하를 최소화하면서 딥 뉴럴 네트워크를 고속화할 수 있고, 효과적인 하드웨어 가속기의 구조를 설계하는데 활용될 수 있다.
도 2는 일 실시예에 따른 3D 컨볼루셔널 뉴럴 네트워크의 구조를 나타낸 도면이다. 도 2의 3D 컨볼루셔널 뉴럴 네트워크는 도 1의 뉴럴 네트워크(110) 내 어느 하나의 레이어에 대응할 수 있다.
도 2를 참조하면, 웨이트 커널들(210) 및 입력 맵들(220) 간의 컨볼루션 연산에 기초하여 출력 맵들(230)이 생성된다. 웨이트 커널들(211)에서 단일 웨이트 커널의 사이즈는 K*K이고, 하나의 출력 채널에 대응하는 웨이트 커널 그룹(211)은 C 개의 서브 커널들로 구성된다. 예를 들어, 첫 번째 레이어에서 C 개의 서브 커널은 각각 빨강(red, R) 성분, 초록(green, G) 성분 및 파랑(blue, B) 성분에 대응할 수 있다. C는 입력 채널의 수에 대응할 수 있다. 웨이트 커널들(210)에서 웨이트 커널 그룹의 수는 D이다. D는 출력 채널의 수에 대응할 수 있다. 웨이트 커널 그룹(211) 및 입력 맵들(220)의 영역(221) 간의 컨볼루션 연산에 기초하여 출력 맵(232) 내 영역(231)이 결정되며, 출력 맵(232)의 나머지 영역에 대해 웨이트 커널 그룹(211) 및 입력 맵들(220) 간의 컨볼루션 연산이 순차적으로 수행됨에 따라 출력 맵(232)이 생성된다. 입력 맵의 사이즈는 W1*H1이고, 출력 맵의 사이즈는 W2*H2이다. 출력 맵의 사이즈는 입력 맵의 사이즈보다 작을 수 있다. 입력 맵들(220)은 C 개의 입력 맵을 포함하고, 출력 맵들(230)은 D 개의 출력 맵을 포함한다.
입력 맵들(220)은 매트릭스(225)로 나타낼 수 있다. 매트릭스(225)에서 하나의 열은 영역(221)에 대응하며, K^2*C로 나타낼 수 있다. 매트릭스(225)의 열의 개수 W1*H1는 스캔 동작이 수행되는 입력 맵들(220)의 전체 면적을 나타낸다. 매트릭스(225)를 전치(transpose)하여 입력 맵들(240)을 나타낼 수 있다. 입력 맵들(240)에서 벡터(241)의 길이는 K^2*C이고, N은 하나의 출력 맵을 생성하는데 필요한 컨볼루션 연산의 횟수를 나타낸다. 입력 맵들(240) 및 웨이트 커널들(250) 간의 컨볼루션 연산에 기초하여 출력 맵들(260)이 생성된다. 웨이트 커널들(250)은 웨이트 커널들(210)에 대응하고, 출력 맵들(260)은 출력 맵들(230)에 대응한다. 웨이트 커널 그룹(251)의 사이즈는 K^2*C에 대응하고, 웨이트 커널들(250)은 D개의 웨이트 커널 그룹을 포함한다. 출력 맵(261)의 사이즈는 W2*H2에 대응하고, 출력 맵들(260)은 D개의 출력 맵을 포함한다. 따라서, D개의 웨이트 커널 그룹으로 D개의 출력 채널이 형성될 수 있으며, 하나의 출력 맵을 생성하기 위한 웨이트 커널 그룹의 사이즈는 K^2*C이다.
도 3은 일 실시예에 따른 경량화 포맷을 나타낸 도면이다. 일반적으로 뉴럴 네트워크에서 사용되는 데이터는 32비트 부동 소수점(floating point) 타입으로 표현될 수 있고, 이를 처리하기 위한 컨볼루션 연산은 32bit*32bit의 부동 소수점MAC(Multiplication and Accumulation) 연산이 수행될 수 있다. 임베디드 시스템은 데이터 처리 속도와 메모리 절감을 위해 부동 소수점 데이터 타입을 고정 소수점 데이터 타입으로 변환하여 연산을 수행할 수 있다. 이러한 변환은 고정 소수점 변환으로 지칭될 수 있다. 고정 소수점 변환은 소수(decimal)를 사용하여 구현된 함수들을 정수 연산에 관한 함수로 재정의한 후, 부동 소수점의 소스 코드의 모든 소수점 연산을 정수화하는 과정을 나타내는 것이다. 부동 소수점 변수에 적당한 값을 곱해 정수로 만들면 정수 연산자를 이용한 정수 연산이 수행될 수 있다. 결과 값에 앞서 곱해준 값을 나누면 다시 부동 소수점 변수로 변환될 수 있다.
실시예에 따른 처리 장치는 고정 소수점 변환에 기초하여 데이터를 경량화할 수 있다. 고정 소수점 변환 과정에서 부동 소수점의 변수에 일정한 지수를 곱하면 해당 변수는 정수(integer)화될 수 있고, 이 때 곱해지는 지수는 경량화 포맷으로 정의될 수 있다. 일 실시예에 따르면, 컴퓨터는 2진수로 데이터를 처리하기 때문에, 부동 소수점의 변수를 정수화하기 위해 2의 지수가 곱해질 수 있다. 이 경우, 2의 지수는 경량화 포맷으로 지칭될 수 있다. 예를 들어, 변수 X를 정수화하기 위해 2^q가 곱해진 경우, 변수 X의 경량화 포맷은 q이다. 경량화 포맷으로 2의 지수를 사용함에 따라 경량화 포맷이 쉬프트 연산에 대응하게 되며, 이에 따라 연산 속도가 증가할 수 있다.
도 3을 참조하면, 데이터(300)는 정수 비트들 및 가수 비트들을 포함한다. 데이터(300)는 웨이트 커널, 입력 맵 및 출력 맵에 대응할 수 있다. 데이터(300)에 따라 적절한 경량화 포맷을 결정함으로써 데이터가 나타낼 수 있는 해상도가 증가할 수 있다. 실시예에 따르면 레이어 및 채널 별로 웨이트 커널의 경량화 포맷이 결정되고, 입력 맵 및 출력 맵의 경량화 포맷이 적응적으로 결정되므로, 데이터의 표현이 최적화될 수 있다. 경량화 포맷이 결정됨에 있어서 데이터 집합의 최대 값 및 데이터 집합의 분포가 고려될 수 있다. 데이터 집합의 분포는 데이터 집합의 분산을 포함할 수 있다. 예를 들어, 경량화 포맷은 원소들의 최대 값을 기준으로 결정될 수 있고, 데이터 집합의 분포에 따라 데이터 간의 연산 결과에 오버플로가 발생하지 않는 범위에서 결정될 수 있다.
도 4는 일 실시예에 따른 웨이트 커널의 경량화를 나타낸 도면이다. 도 4를 참조하면, 뉴럴 네트워크(410)의 트레이닝에 따라 트레이닝 결과가 획득될 수 있다. 트레이닝 결과는 각 레이어 및 각 채널 별 웨이트 커널을 포함할 수 있다. 웨이트 커널의 경량화에 따른 경량화 데이터는 메모리(420)에 저장될 수 있다. 경량화 데이터는 웨이트 커널의 경량화 포맷 및 경량화된 웨이트 커널을 포함할 수 있다. 경량화 데이터는 레이어 및 채널 별로 저장될 수 있다. 일 실시예에 따르면, 경량화 데이터는 룩 업 테이블과 같은 데이터베이스로 메모리(420)에 저장될 수 있다.
도 5는 일 실시예에 따른 경량화 데이터를 포함하는 룩 업 테이블을 나타낸 도면이다. 도 5를 참조하면, 룩 업 테이블(500)은 레이어 및 채널 별로 경량화 데이터를 포함한다. 경량화 데이터는 경량화 포맷 및 경량화된 웨이트 커널을 나타낸다. 전술된 것처럼, 실시예에 따른 뉴럴 네트워크는 복수의 레이어들을 포함할 수 있고, 각 레이어는 복수의 채널들을 포함할 수 있다. 룩 업 테이블(500)에서 Lu는 레이어를 나타내고, Cuv는 채널을 나타낸다. u는 레이어의 인덱스를 나타내고, v는 채널의 인덱스를 나타낸다. n은 레이어의 수를 나타내고, m은 레이어(L1)에 포함된 채널의 수를 나타낸다. 예를 들어, 레이어(L1)는 복수의 채널들(C11 내지 C1m)을 포함할 수 있다.
뉴럴 네트워크의 학습 결과에 따라 레이어 및 채널 별로 웨이트 커널이 결정될 수 있고, 결정된 웨이트 커널에 관한 경량화 데이터가 결정될 수 있다. 경량화된 웨이트 커널(WK11)은 레이어(L1)의 채널(C11)에 대응하고, 경량화된 웨이트 커널(WK12)은 레이어(L1)의 채널(C12)에 대응한다. 이때 경량화된 웨이트 커널(WK11) 및 경량화된 웨이트 커널(WK12)은 독립적으로 결정될 수 있다. 예를 들어, 채널(C11)에 관해 웨이트 커널이 결정되면, 결정된 웨이트 커널은 경량화 포맷(Q11) 및 경량화된 웨이트 커널(WK11)로 변환되어 룩 업 테이블(500)에 기록될 수 있다. 유사하게, 채널(C12)에 관해 경량화 포맷(Q12) 및 경량화된 웨이트 커널(WK12)이 기록될 수 있고, 채널(C1m)에 관해 경량화 포맷(Q1m) 및 경량화된 웨이트 커널(WK1m)이 기록될 수 있다. 나머지 레이어들 및 나머지 레이어들의 채널들에 관해 경량화 포맷 및 경량화된 웨이트 커널이 결정된 후 룩 업 테이블(500)에 저장될 수 있다.
룩 업 테이블(500)은 실시예에 따른 처리 장치의 메모리에 저장될 수 있고, 처리 장치는 룩 업 테이블(500)을 이용하여 컨볼루션 연산을 수행할 수 있다. 처리 장치는 룩 업 테이블(500)에서 경량화 포맷(Quv) 및 경량화된 웨이트 커널(WKuv)을 획득하여 레이어(Lu)의 채널(Cuv)에 관한 컨볼루션 연산을 수행할 수 있다.
도 6은 일 실시예에 따른 액티베이션 데이터의 동적 경량화 프로세스를 나타낸 도면이다. 아래에서는 제1 레이어 및 제2 레이어에 관해서 설명하지만, 제2 레이어 이후의 레이어들에 관해서는 제2 레이어에 대응하는 동작이 수행될 수 있다. 이하 ALU(602)의 동작은 처리 장치의 동작으로 이해될 수도 있다.
이하, 제1 레이어에 관련된 동작들을 설명한다.
메모리(601)는 영상 데이터(611), 웨이트 커널(612) 및 웨이트 커널(612)의 경량화 포맷(613)을 저장한다. 영상 데이터(611) 및 웨이트 커널(612)은 모두 로우 비트 폭을 가질 수 있다. 제1 레이어는 뉴럴 네트워크의 입력 레이어에 대응할 수 있다. 이 경우, 촬영 장치를 통해 획득된 입력 영상의 영상 데이터(611)가 입력 맵 대신에 처리될 수 있다. 처리 장치는 영상 데이터(611) 및 웨이트 커널(612)을 로우 비트 폭에 대응하는 사이즈를 갖는 레지스터(603)에 로드할 수 있다. 도 6에서 LD는 데이터를 메모리에서 로드(load)하는 동작을 나타내고, ST는 데이터를 메모리에 저장(store)하는 동작을 나타낸다.
웨이트 커널들 및 경량화 포맷들은 레이어 및 출력 채널 별로 메모리(601)에 존재할 수 있다. 예를 들어, 메모리(601)는 도 5에서 설명된 룩 업 테이블을 저장할 수 있다. 처리 장치는 현재 처리 중인 채널에 맞는 웨이트 커널 및 경량화 포맷을 메모리(601)에서 로드할 수 있다. 예를 들어, 현재 제1 레이어의 제1 출력 채널을 처리 중인 경우, 제1 출력 채널에 대응하는 제1 웨이트 커널이 메모리(601)에서 로드될 수 있고, 영상 데이터(611) 및 제1 웨이트 커널 간의 컨볼루션 연산이 수행될 수 있다. 만약, 현재 제1 레이어의 제2 출력 채널을 처리 중인 경우, 제2 출력 채널에 대응하는 제2 웨이트 커널이 메모리(601)에서 로드될 수 있고, 영상 데이터(611) 및 제2 웨이트 커널 간의 컨볼루션 연산이 수행될 수 있다.
블록(614)에서 ALU(arithmetic logic unit, 602)는 영상 데이터(611) 및 웨이트 커널(612) 간의 컨볼루션 연산을 처리하여 출력 맵(615)을 생성할 수 있다. 데이터가 8 비트로 경량화된 경우 컨볼루션 연산은 8*8 연산이 되고, 데이터가 4 비트로 경량화된 경우 컨볼루션 연산은 4*4 연산이 될 수 있다. 컨볼루션 연산 결과, 다시 말해 출력 맵(615)은 하이 비트 폭으로 표현될 수 있다. 예를 들어, 8*8 연산이 수행된 경우 컨볼루션 연산 결과는 16비트로 표현될 수 있다. 처리 장치는 출력 맵(615)을 하이 비트 폭에 대응하는 사이즈를 갖는 레지스터(604)를 통해 메모리(601)에 저장할 수 있다. 처리 장치는 메모리(601)에서 출력 맵(615)을 로드하고, ALU(602)는 블록(616)에서 출력 맵(615)을 활성화 함수에 대입하여 출력 맵(618)을 생성한다. 처리 장치는 하이 비트 폭의 출력 맵(618)을 하이 비트 폭의 레지스터(604)를 통해 메모리(601)에 저장할 수 있다.
처리 장치는 블록(617)에서 제1 레이어의 출력 맵의 최대 값을 업데이트한다. 예를 들어, 특정 레이어의 출력 맵의 최대 값을 저장하기 위한 레지스터가 존재할 수 있다. 처리 장치는 활성화 함수 출력을 레지스터에 저장된 기존의 최대 값과 비교하고, 활성화 함수 출력이 레지스터에 저장된 기존의 최대 값보다 큰 경우 레지스터를 활성화 함수 출력으로 업데이트할 수 있다. 이와 같은 방식으로 제1 레이어의 출력 맵들이 모두 처리되면 제1 레이어의 출력 맵의 최대 값(630)이 최종적으로 결정될 수 있다. 활성화 함수 출력이 레지스터 값과 비교되는 것이므로, 처리 장치는 최대 값(630)을 결정하기 위해 별도로 메모리(601)에 접근하지 않고도 최대 값(630)을 결정할 수 있다. 최대 값(630)은 제2 레이어에서 입력 맵을 경량화하는데 이용될 수 있다.
이하, 제2 레이어에 관련된 동작들을 설명한다.
ALU(602)는 입력 맵(619)을 메모리(601)에서 로드한다. 블록(620)에서 ALU(602)는 제1 레이어의 출력 맵의 최대 값(630)에 기초하여 입력 맵(619)을 경량화한다. 예를 들어, 처리 장치는 최대 값(630)에 기초하여 입력 맵(619)의 경량화 포맷을 결정하고, 결정된 경량화 포맷에 기초하여 하이 비트 폭의 입력 맵(619)을 로우 비트 폭으로 경량화하여 입력 맵(621)을 생성할 수 있다. 다시 말해, 입력 맵(621)은 입력 맵(619)의 경량화된 버전을 나타낸다. 처리 장치는 결정된 경량화 포맷에 대응하는 값으로 하이 비트 폭의 입력 맵(619)에 관한 쉬프트 연산을 수행하여 하이 비트 폭의 입력 맵(619)을 로우 비트 폭으로 경량화할 수 있다. 혹은, 처리 장치는 입력 맵(619)에 경량화 포맷에 대응하는 지수를 곱하거나 나누어서 입력 맵(619)을 입력 맵(621)으로 경량화할 수 있다.
제1 레이어 출력이 제2 레이어의 입력이 되므로, 출력 맵(618) 및 입력 맵(619)은 동일한 액티베이션 데이터를 지시할 수 있다. 따라서, 입력 맵(619)에 관한 경량화 과정은 출력 맵(618)에 관한 경량화 과정으로 표현될 수도 있다.
블록들(624, 626, 627)에서는 전술된 블록들(614, 616, 617)에 관해 설명된 동작의 대응 동작이 수행될 수 있다.
메모리(601)는 입력 맵(621), 웨이트 커널(622) 및 웨이트 커널(622)의 경량화 포맷(623)을 저장한다. 입력 맵(621) 및 웨이트 커널(622)은 모두 로우 비트 폭을 가질 수 있다. 제2 레이어는 제1 레이어의 출력을 수신하므로, 영상 데이터 대신 입력 맵(621)을 처리할 수 있다. 처리 장치는 입력 맵(621) 및 웨이트 커널(622)을 로우 비트 폭에 대응하는 사이즈를 갖는 레지스터(603)에 로드할 수 있다.
블록(624)에서 ALU(602)는 입력 맵(621) 및 웨이트 커널(622) 간의 컨볼루션 연산을 처리하여 출력 맵(625)을 생성할 수 있다. 처리 장치는 출력 맵(625)을 하이 비트 폭에 대응하는 사이즈를 갖는 레지스터(604)를 통해 메모리(601)에 저장할 수 있다. 처리 장치는 메모리(601)에서 출력 맵(625)을 로드하고, ALU(602)는 블록(626)에서 출력 맵(625)을 활성화 함수에 대입하여 출력 맵(628)을 생성한다. 처리 장치는 하이 비트 폭의 출력 맵(628)을 하이 비트 폭의 레지스터(604)를 통해 메모리(601)에 저장할 수 있다.
처리 장치는 블록(627)에서 제2 레이어의 출력 맵의 최대 값을 업데이트한다. 제2 레이어의 출력 맵들이 모두 처리되면 제2 레이어 출력 맵의 최대 값(631)이 결정될 수 있고, 최대 값(631)은 제2 레이어의 다음 레이어인 제3 레이어에서 입력 맵을 경량화하는데 이용될 수 있다.
도 7은 다른 실시예에 따른 액티베이션 데이터의 동적 경량화 프로세스를 나타낸 도면이다. 아래에서는 제2 레이어 및 제3 레이어에 관해서 설명하지만, 제3 레이어 이후의 레이어들에 관해서는 제2 레이어 제3 레이어에 대응하는 동작이 수행될 수 있다. 이하 ALU(702)의 동작은 처리 장치의 동작으로 이해될 수도 있다.
이하, 제2 레이어에 관련된 동작들을 설명한다.
메모리(701)는 입력 맵(711), 웨이트 커널(712) 및 웨이트 커널(712)의 경량화 포맷(713)을 저장한다. 입력 맵(711) 및 웨이트 커널(712)은 모두 로우 비트 폭을 가질 수 있다. 처리 장치는 입력 맵(711) 및 웨이트 커널(712)을 로우 비트 폭에 대응하는 사이즈를 갖는 레지스터(703)에 로드할 수 있다. 웨이트 커널들 및 경량화 포맷들은 레이어 및 출력 채널 별로 메모리(701)에 존재할 수 있다. 예를 들어, 메모리(701)는 도 5에서 설명된 룩 업 테이블을 저장할 수 있다. 도 7에서 LD는 데이터를 메모리에서 로드(load)하는 동작을 나타내고, ST는 데이터를 메모리에 저장(store)하는 동작을 나타낸다.
블록(714)에서 ALU(702)는 입력 맵(711) 및 웨이트 커널(712) 간의 컨볼루션 연산을 처리한다. 컨볼루션 연산 결과, 다시 말해 출력 맵은 하이 비트 폭으로 표현될 수 있고, 하이 비트 폭에 대응하는 사이즈를 갖는 레지스터(704)에 저장될 수 있다. 블록(715)에서 ALU(702)는 제2 레이어의 출력 맵의 최대 값을 업데이트한다. 예를 들어, 특정 레이어의 출력 맵의 최대 값을 저장하기 위한 레지스터가 존재할 수 있고, ALU(702)는 컨볼루션 연산 결과 및 레지스터에 저장된 기존의 최대 값 간의 비교에 기초하여 제2 레이어의 출력 맵의 최대 값을 업데이트할 수 있다. 이와 같은 방식으로 제2 레이어의 출력 맵들이 모두 처리되면 제2 레이어의 출력 맵의 최대 값(731)이 최종적으로 결정될 수 있다. 최대 값(731)은 제3 레이어에서 출력 맵을 예측 기반으로 경량화하는데 이용될 수 있다.
블록(716)에서 ALU(702)는 컨볼루션 연산 결과를 활성화 함수에 대입하여 활성화 함수 출력을 생성한다. 블록(717)에서 ALU(702)는 예측 기반 경량화를 수행한다. 예를 들어, ALU(702)는 제1 레이어의 출력 맵의 최대 값(730)에 기초하여 제2 레이어 출력 맵의 최대 값을 예측하고, 예측된 제2 레이어 출력 맵의 최대 값에 기초하여 제2 레이어 출력 맵에 관한 경량화 포맷을 결정하고, 결정된 제2 레이어 출력 맵에 관한 경량화 포맷에 기초하여 하이 비트 폭의 활성화 함수 출력을 로우 비트 폭으로 경량화할 수 있다.
출력 맵의 경량화를 위해서는 출력 맵의 최대 값을 알아야 하는데, 모든 출력 채널에 관한 처리 결과를 기다려서 출력 맵의 최대 값을 결정할 경우, 출력 맵의 최대 값을 결정하기 위한 추가적인 메모리 접근이 요구된다. 실시예에 따르면 이전 레이어의 출력 맵의 최대 값에 기초하여 현재 레이어의 출력 맵의 최대 값을 예측함으로써, 모든 출력 채널에 관한 처리 결과를 기다릴 필요 없이 활성화 함수 출력, 다시 말해 출력 맵을 즉시 경량화할 수 있다.
경량화된 활성화 함수 출력은 로우 비트 폭을 가지며, 로우 비트 폭에 대응하는 사이즈를 갖는 레지스터(703)에 저장된다. 처리 장치는 경량화된 활성화 함수 출력을 출력 맵(718)으로서 메모리(701)에 저장한다.
이하, 제3 레이어에 관련된 동작들을 설명한다.
메모리(701)는 입력 맵(719), 웨이트 커널(720) 및 웨이트 커널(720)의 경량화 포맷(721)을 저장한다. 입력 맵(719) 및 웨이트 커널(720)은 모두 로우 비트 폭을 가질 수 있다. 출력 맵(718)은 제2 레이어에서 이미 경량화된 상태이고, 입력 맵(719)은 출력 맵(718)에 대응하기 때문이다. 처리 장치는 입력 맵(719) 및 웨이트 커널(720)을 로우 비트 폭에 대응하는 사이즈를 갖는 레지스터(703)에 로드할 수 있다.
블록(722)에서 ALU(702)는 입력 맵(719) 및 웨이트 커널(720) 간의 컨볼루션 연산을 처리한다. 컨볼루션 연산 결과, 다시 말해 출력 맵은 하이 비트 폭으로 표현될 수 있고, 하이 비트 폭에 대응하는 사이즈를 갖는 레지스터(704)에 저장될 수 있다. 블록(723)에서 ALU(702)는 제3 레이어의 출력 맵의 최대 값을 업데이트한다. 제3 레이어의 출력 맵들이 모두 처리되면 제3 레이어의 출력 맵의 최대 값(732)이 최종적으로 결정될 수 있다. 최대 값(732)은 제4 레이어에서 출력 맵을 예측 기반으로 경량화하는데 이용될 수 있다. 제4 레이어는 제3 레이어의 다음 레이어를 나타낸다. 다음 레이어에서 다음 레이어의 출력 맵의 최대 값을 예측할 때, 이전 레이어의 출력 맵의 정확한 최대 값이 이용되므로, 예측 에러가 하나의 레이어 이상 전파되지 않을 수 있다.
블록(724)에서 ALU(702)는 컨볼루션 연산 결과를 활성화 함수에 대입하여 활성화 함수 출력을 생성한다. 블록(725)에서 ALU(702)는 제2 레이어의 출력 맵의 최대 값(731)에 기초하여 제3 레이어 출력 맵의 최대 값을 예측하고, 예측된 제3 레이어 출력 맵의 최대 값에 기초하여 활성화 함수 출력을 경량화한다. 경량화된 활성화 함수 출력은 로우 비트 폭을 가지며, 로우 비트 폭에 대응하는 사이즈를 갖는 레지스터(703)에 저장된다. 처리 장치는 경량화된 활성화 함수 출력을 출력 맵(726)으로서 메모리(701)에 저장한다.
추가로, 제1 레이어의 출력 맵의 최대 값(730)은 다양한 실시예에 따라 결정될 수 있다. 일 실시예에 따르면, 제1 레이어의 출력 맵의 최대 값(730)은 트레이닝 단계에서 다양한 트레이닝 데이터에 기초하여 미리 결정될 수 있다. 다른 실시예에 따르면, 도 6에 따른 실시예의 제1 레이어가 도 7에 따른 실시예의 제1 레이어일 수 있고, 이 경우 도 6의 제1 레이어의 출력 맵의 최대 값(630)이 도 7의 제1 레이어의 출력 맵의 최대 값(730)에 대응할 수 있다.
도 8은 일 실시예에 따른 입력 맵의 최대 값 분포를 나타낸 그래프이다. 도 8을 참조하면, 입력 맵의 최대 값은 일정한 패턴을 가질 수 있다. 특정 레이어의 출력 맵은 다음 레이어의 입력 맵에 대응하므로 출력 맵도 입력 맵과 동일한 패턴을 갖는 것으로 이해될 수 있다. 제1 영상의 데이터들은 비교적 큰 값을 갖는, 예를 들어 고조도의 영상일 수 있으며 제2 영상의 데이터들은 비교적 작은 값을 갖는, 예를 들어 저조도의 영상일 수 있다. 제1 영상의 입력 맵 및 제2 영상의 입력 맵은 모두 유사한 패턴을 가질 수 있다.
이전 레이어의 출력 맵의 최대 값에 기초한 참조 범위 내에서 현재 레이어의 출력 맵의 최대 값이 결정될 수 있다. 참조 범위는 수치 오차와 같은 위험을 최소화하기 위해 보수적으로 설정되거나, 해상도와 같은 성능을 최대화하기 위해 적극적으로 설정될 수도 있다. 예를 들어, 참조 범위가 설정되는 기준은 현재 레이어가 몇 번째 레이어인지에 기초할 수 있다. 일례로, 입력 쪽의 레이어들에서는 데이터의 변화가 출력 쪽에 비해 상대적으로 크므로 참조 범위가 상대적으로 보수적으로 설정될 수 있고, 출력 쪽의 레이어들에서는 데이터의 변화가 입력 쪽에 비해 작으므로 참조 범위가 상대적으로 적극적으로 설정될 수 있다. 일례로, 제2 레이어 및 제3 레이어에서는 현재 레이어의 출력 맵의 최대 값이 이전 레이이의 출력 맵의 최대 값의 +10%로 설정될 수 있고, 제4 레이어에서는 현재 레이어의 출력 맵의 최대 값이 이전 레이이의 출력 맵의 최대 값의 -20~30%로 설정될 수 있고, 제5 레이어 이후에서는 현재 레이어의 출력 맵의 최대 값이 이전 레이이의 출력 맵의 최대 값과 동일하게 설정될 수 있다.
도 9는 일 실시예에 따른 트레이닝 장치를 나타낸 블록도이다. 도 9를 참조하면, 트레이닝 장치(900)는 메모리(910) 및 프로세서(920)를 포함한다. 메모리(910)는 뉴럴 네트워크(911), 경량화 데이터(912) 및 프로세서(920)에서 읽을 수 있는 명령어를 포함한다. 명령어가 프로세서(920)에서 실행되면, 프로세서(920)는 뉴럴 네트워크(911)를 위한 트레이닝 동작을 수행할 수 있다. 여기서 뉴럴 네트워크(911)를 위한 트레이닝 동작은 트레이닝 단계로 나타낼 수 있다. 예를 들어, 프로세서(920)는 트레이닝 데이터를 뉴럴 네트워크(911)에 입력하고, 뉴럴 네트워크(911)의 웨이트 커널을 트레이닝할 수 있다. 프로세서(920)는 트레이닝된 웨이트 커널을 레이어 및 채널 별로 경량화할 수 있고, 경량화 데이터(912)를 메모리(910)에 저장할 수 있다. 경량화 데이터는 경량화된 웨이트 커널 및 경량화된 웨이트 커널의 경량화 포맷을 포함할 수 있다. 경량화 데이터는 메모리(910)에 룩 업 테이블의 형태로 저장될 수 있다. 그 밖에, 트레이닝 장치(900)에 관해서는 도 1 내지 도 8을 통해 설명된 사항이 적용될 수 있다.
도 10은 일 실시예에 따른 처리 장치를 나타낸 블록도이다. 도 10을 참조하면, 처리 장치(1000)는 메모리(1010) 및 프로세서(1020)를 포함한다. 메모리(1010)는 뉴럴 네트워크(1011), 경량화 데이터(1012) 및 프로세서(1020)에서 읽을 수 있는 명령어를 포함한다. 명령어가 프로세서(1020)에서 실행되면, 프로세서(1020)는 뉴럴 네트워크(1011)를 이용한 처리 동작을 수행할 수 있다. 여기서 뉴럴 네트워크(1011)를 이용한 처리 동작은 추론 단계로 나타낼 수 있다. 예를 들어, 프로세서(1020)는 입력 영상을 뉴럴 네트워크(1011)에 입력하고, 뉴럴 네트워크(1011)의 출력에 기초하여 처리 결과를 출력할 수 있다. 처리 결과는 인식 결과 혹은 인증 결과를 포함할 수 있다.
명령어가 프로세서(1020)에서 실행되면, 프로세서(1020)는 뉴럴 네트워크의 현재 레이어의 입력 맵들 및 현재 레이어의 웨이트 커널들 간의 컨볼루션 연산을 수행하여 현재 레이어의 출력 맵들을 생성하고, 뉴럴 네트워크 내에서 처리되는 적어도 일부의 액티베이션 데이터의 분포에 기초하여, 현재 레이어의 출력 맵들에 관한 경량화 포맷을 결정하고, 결정된 경량화 포맷에 기초하여, 현재 레이어의 출력 맵들에 대응하는 액티베이션 데이터를 로우 비트 폭(low bit width)으로 경량화할 수 있다. 그 밖에, 처리 장치(1000)에 관해서는 도 1 내지 도 9를 통해 설명된 사항이 적용될 수 있다.
도 11은 일 실시예에 따른 처리 방법을 나타낸 플로우 차트이다. 도 11을 참조하면, 처리 장치는 단계(1110)에서 뉴럴 네트워크의 현재 레이어의 입력 맵들 및 현재 레이어의 웨이트 커널들 간의 컨볼루션 연산을 수행하여 현재 레이어의 출력 맵들을 생성하고, 단계(1120)에서 뉴럴 네트워크 내에서 처리되는 적어도 일부의 액티베이션 데이터의 분포에 기초하여, 현재 레이어의 출력 맵들에 관한 경량화 포맷을 결정하고, 단계(1130)에서 결정된 경량화 포맷에 기초하여, 현재 레이어의 출력 맵들에 대응하는 액티베이션 데이터를 로우 비트 폭(low bit width)으로 경량화한다. 그 밖에, 처리 방법에 관해서는 도 1 내지 도 10을 통해 설명된 사항이 적용될 수 있다.
도 12는 다른 실시예에 따른 처리 방법을 나타낸 플로우 차트이다. 도 12를 참조하면, 처리 장치는 단계(1210)에서 복수의 레이어를 포함하는 뉴럴 네트워크를 시작하고, 단계(1220)에서 뉴럴 네트워크의 현재 레이어의 입력 맵들 및 현재 레이어의 웨이트 커널들 간의 컨볼루션 연산을 수행하여 현재 레이어의 출력 맵들을 생성하고, 단계(1230)에서 뉴럴 네트워크가 시작되기 전에 결정되지 않았던, 현재 레이어의 출력 맵들에 관한 경량화 포맷을 결정하고, 단계(1240)에서 결정된 경량화 포맷에 기초하여, 현재 레이어의 출력 맵들에 대응하는 액티베이션 데이터를 경량화한다. 그 밖에, 처리 방법에 관해서는 도 1 내지 도 11을 통해 설명된 사항이 적용될 수 있다.
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, 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 (25)

  1. 입력 레이어, 적어도 하나의 히든 레이어, 및 출력 레이어를 포함하는 복수의 레이어들을 포함하는 뉴럴 네트워크를 이용하여 입력 영상 내 객체를 인식하기 위한 프로세서의 처리 방법에 있어서,
    입력 영상을 상기 뉴럴 네트워크의 상기 입력 레이어에 입력하는 단계;
    상기 복수의 레이어들의 이전 레이어의 출력 맵들에 대응하는 상기 뉴럴 네트워크의 상기 복수의 레이어들의 현재 레이어의 입력 맵들, 및 상기 현재 레이어의 웨이트 커널들 간의 컨볼루션 연산을 수행하여, 상기 현재 레이어의 출력 맵들을 생성하는 단계;
    상기 뉴럴 네트워크 내에서 처리되는 적어도 일부의 액티베이션 데이터의 분포에 기초하여, 상기 현재 레이어의 출력 맵들에 관한 경량화 포맷을 결정하는 단계;
    상기 결정된 경량화 포맷에 기초하여, 상기 현재 레이어의 출력 맵들에 대응하는 액티베이션 데이터를 로우 비트 폭(low bit width)으로 경량화하는 단계; 및
    상기 객체의 인식 결과를 포함하는 상기 뉴럴 네트워크의 출력에 기초하여 결과를 출력하는 단계
    를 포함하고,
    상기 경량화 포맷을 결정하는 단계는
    상기 뉴럴 네트워크의 상기 이전 레이어의 출력 맵들의 최대 값에 기초하여, 상기 현재 레이어의 출력 맵들의 최대 값을 예측하는 단계; 및
    상기 예측된 현재 레이어의 출력 맵들의 최대 값에 기초하여 상기 현재 레이어의 출력 맵들에 관한 경량화 포맷을 결정하는 단계
    를 포함하는, 처리 방법.
  2. 제1항에 있어서,
    상기 경량화 포맷을 결정하는 단계는
    상기 현재 레이어의 출력 맵들의 최대 값에 기초하여 상기 출력 맵들에 관한 경량화 포맷을 결정하는 단계
    를 포함하는, 처리 방법.
  3. 제1항에 있어서,
    상기 경량화하는 단계는
    상기 결정된 경량화 포맷에 기초하여, 상기 현재 레이어의 출력 맵들에 대응하는 상기 복수의 레이어들의 다음 레이어의 입력 맵들을 상기 로우 비트 폭으로 경량화하는 단계
    를 포함하는, 처리 방법.
  4. 제1항에 있어서,
    상기 경량화하는 단계는
    상기 경량화 포맷에 대응하는 값으로 상기 복수의 레이어들의 다음 레이어의 입력 맵들에 관한 쉬프트 연산을 수행하여, 상기 현재 레이어의 출력 맵들에 대응하는 다음 레이어의 입력 맵들을 상기 로우 비트 폭(low bit width)으로 경량화하는 단계
    를 포함하는, 처리 방법.
  5. 제1항에 있어서,
    상기 현재 레이어의 출력 맵들을 메모리에서 로드하는 단계; 및
    상기 로드된 상기 현재 레이어의 출력 맵들에 기초하여 상기 현재 레이어의 출력 맵들의 최대 값을 저장하는 레지스터를 업데이트하는 단계
    를 더 포함하고,
    상기 경량화 포맷을 결정하는 단계는 상기 레지스터에 저장된 값에 기초하여 수행되는,
    처리 방법.
  6. 삭제
  7. 제1항에 있어서,
    상기 경량화하는 단계는
    상기 결정된 경량화 포맷에 기초하여 상기 현재 레이어의 출력 맵들을 상기 로우 비트 폭으로 경량화하는 단계
    를 포함하는, 처리 방법.
  8. 제1항에 있어서,
    상기 경량화하는 단계는
    상기 경량화 포맷에 대응하는 값으로 상기 현재 레이어의 출력 맵들에 관한 쉬프트 연산을 수행하여, 하이 비트 폭(high bit width)의 상기 현재 레이어의 출력 맵들을 상기 로우 비트 폭(low bit width)으로 경량화하는 단계
    를 포함하는, 처리 방법.
  9. 제1항에 있어서,
    상기 컨볼루션 연산에 의해 생성된 상기 현재 레이어의 출력 맵들에 기초하여 상기 현재 레이어의 출력 맵들의 최대 값을 저장하는 레지스터를 업데이트하는 단계
    를 더 포함하고,
    상기 뉴럴 네트워크의 다음 레이어의 출력 맵들의 최대 값은 상기 레지스터에 저장된 값에 기초하여 예측되는,
    처리 방법.
  10. 제1항에 있어서,
    웨이트 커널들을 레이어 및 출력 채널 별로 포함하는 데이터베이스를 참조하여, 상기 현재 레이어 내 현재 처리 중인 제1 출력 채널에 대응하는 제1 웨이트 커널을 획득하는 단계
    를 더 포함하고,
    상기 현재 레이어의 출력 맵들을 생성하는 단계는
    상기 현재 레이어의 입력 맵들 및 상기 제1 웨이트 커널 간의 컨볼루션 연산을 수행하여 상기 제1 출력 채널에 대응하는 제1 출력 맵을 생성하는 단계를 포함하는, 처리 방법.
  11. 제10항에 있어서,
    상기 제1 웨이트 커널은 상기 현재 레이어의 제2 채널에 대응하는 제2 웨이트 커널과 독립적으로 결정되는, 처리 방법.
  12. 제1항에 있어서,
    상기 현재 레이어의 입력 맵들 및 상기 현재 레이어의 웨이트 커널들은 상기 로우 비트 폭(low bit width)을 가지고, 상기 현재 레이어의 출력 맵들은 하이 비트 폭(high bit width)을 가지는, 처리 방법.
  13. 제1항 내지 제5항 및 제7항 내지 제12항 중 어느 한 항의 방법을 수행하기 위한 명령어들을 포함하는 하나 이상의 프로그램을 저장한 컴퓨터 판독 가능 저장매체.
  14. 입력 레이어, 적어도 하나의 히든 레이어, 및 출력 레이어를 포함하는 복수의 레이어들을 포함하는 뉴럴 네트워크를 이용하여 입력 영상 내 객체를 인식하기 위한 처리 장치에 있어서,
    프로세서; 및
    상기 프로세서에서 읽을 수 있는 명령어를 포함하는 메모리
    를 포함하고,
    상기 명령어가 상기 프로세서에서 실행되면, 상기 프로세서는
    입력 영상을 상기 뉴럴 네트워크의 상기 입력 레이어에 입력하고,
    상기 복수의 레이어들의 이전 레이어의 출력 맵들에 대응하는 상기 뉴럴 네트워크의 상기 복수의 레이어들의 현재 레이어의 입력 맵들 및 상기 현재 레이어의 웨이트 커널들 간의 컨볼루션 연산을 수행하여 상기 현재 레이어의 출력 맵들을 생성하고,
    상기 뉴럴 네트워크 내에서 처리되는 적어도 일부의 액티베이션 데이터의 분포에 기초하여, 상기 현재 레이어의 출력 맵들에 관한 경량화 포맷을 결정하고,
    상기 결정된 경량화 포맷에 기초하여, 상기 현재 레이어의 출력 맵들에 대응하는 액티베이션 데이터를 로우 비트 폭(low bit width)으로 경량화하고,
    상기 객체의 인식 결과를 포함하는 상기 뉴럴 네트워크의 출력에 기초하여 결과를 출력하고,
    상기 프로세서는
    상기 뉴럴 네트워크의 이전 레이어의 출력 맵들의 최대 값에 기초하여, 상기 현재 레이어의 출력 맵들의 최대 값을 예측하고, 상기 예측된 현재 레이어의 출력 맵들의 최대 값에 기초하여 상기 현재 레이어의 출력 맵들에 관한 경량화 포맷을 결정하는,
    처리 장치.
  15. 제14항에 있어서,
    상기 프로세서는
    상기 현재 레이어의 출력 맵들의 최대 값에 기초하여 상기 출력 맵들에 관한 경량화 포맷을 결정하는, 처리 장치.
  16. 제14항에 있어서,
    상기 프로세서는
    상기 현재 레이어의 출력 맵들에 기초하여 상기 뉴럴 네트워크의 다음 레이어의 입력 맵들을 획득하고, 상기 결정된 경량화 포맷에 기초하여 상기 다음 레이어의 입력 맵들을 상기 로우 비트 폭으로 경량화하는, 처리 장치.
  17. 제14항에 있어서,
    상기 프로세서는
    상기 현재 레이어의 출력 맵들에 기초하여 상기 뉴럴 네트워크의 다음 레이어의 입력 맵들을 획득하고, 상기 경량화 포맷에 대응하는 값으로 상기 다음 레이어의 입력 맵들에 관한 쉬프트 연산을 수행하여, 하이 비트 폭(high bit width)의 상기 다음 레이어의 입력 맵들을 상기 로우 비트 폭(low bit width)으로 경량화하는, 처리 장치.
  18. 삭제
  19. 제14항에 있어서,
    상기 프로세서는
    상기 결정된 경량화 포맷에 기초하여 상기 현재 레이어의 출력 맵들을 상기 로우 비트 폭으로 경량화하는, 처리 장치.
  20. 제14항에 있어서,
    상기 프로세서는
    상기 경량화 포맷에 대응하는 값으로 상기 현재 레이어의 출력 맵들에 관한 쉬프트 연산을 수행하여, 하이 비트 폭(high bit width)의 상기 현재 레이어의 출력 맵들을 상기 로우 비트 폭(low bit width)으로 경량화하는, 처리 장치.
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
KR1020180094311A 2018-02-14 2018-08-13 뉴럴 네트워크의 고속 처리 방법 및 그 방법을 이용한 장치 KR102655950B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US16/273,662 US20190251436A1 (en) 2018-02-14 2019-02-12 High-speed processing method of neural network and apparatus using the high-speed processing method
EP19156720.5A EP3528181B1 (en) 2018-02-14 2019-02-12 Processing method of neural network and apparatus using the processing method
CN201910113798.3A CN110163240A (zh) 2018-02-14 2019-02-14 对象识别方法及设备

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
KR1020180018818 2018-02-14
KR20180018818 2018-02-14
KR1020180031511 2018-03-19
KR20180031511 2018-03-19

Publications (2)

Publication Number Publication Date
KR20190098671A KR20190098671A (ko) 2019-08-22
KR102655950B1 true KR102655950B1 (ko) 2024-04-11

Family

ID=67767172

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180094311A KR102655950B1 (ko) 2018-02-14 2018-08-13 뉴럴 네트워크의 고속 처리 방법 및 그 방법을 이용한 장치

Country Status (1)

Country Link
KR (1) KR102655950B1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111008701A (zh) * 2019-12-03 2020-04-14 杭州嘉楠耘智信息科技有限公司 一种基于神经网络的数据量化方法、装置及计算机可读存储介质
CN111652308B (zh) * 2020-05-13 2024-02-23 三峡大学 基于超轻量级全卷积神经网络的花卉识别方法
WO2022003657A1 (en) * 2020-06-30 2022-01-06 Samsung Electronics Co., Ltd. A method and system for processing data efficiently in a model inference phase in a communication device
CN111898751B (zh) * 2020-07-29 2022-11-25 苏州浪潮智能科技有限公司 一种数据处理的方法、系统、设备及可读存储介质
KR102511225B1 (ko) * 2021-01-29 2023-03-17 주식회사 노타 인공지능 추론모델을 경량화하는 방법 및 시스템
KR102621263B1 (ko) * 2022-12-19 2024-01-05 한국전자기술연구원 경량 딥러닝 하드웨어 장치를 위한 데이터 프루닝 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160328646A1 (en) 2015-05-08 2016-11-10 Qualcomm Incorporated Fixed point neural network based on floating point neural network quantization

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102554149B1 (ko) * 2015-11-16 2023-07-12 삼성전자주식회사 오브젝트 인식 방법 및 장치, 인식 모델 학습 방법 및 장치
KR102608467B1 (ko) * 2016-07-28 2023-12-04 삼성전자주식회사 뉴럴 네트워크의 경량화 방법, 이를 이용한 인식 방법, 및 그 장치

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160328646A1 (en) 2015-05-08 2016-11-10 Qualcomm Incorporated Fixed point neural network based on floating point neural network quantization

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Jacob, Benoit, et al. Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference. arXiv preprint arXiv:1712.05877. 2017.12.15.*
Lin, Darryl D., Sachin S. Talathi, and V. Sreekanth Annapureddy. Fixed Point Quantization of Deep Convolutional Networks. arXiv preprint arXiv:1511.06393v3. 2016.6.2.*

Also Published As

Publication number Publication date
KR20190098671A (ko) 2019-08-22

Similar Documents

Publication Publication Date Title
KR102655950B1 (ko) 뉴럴 네트워크의 고속 처리 방법 및 그 방법을 이용한 장치
CN108701250B (zh) 数据定点化方法和装置
KR102562320B1 (ko) 비트 연산 기반의 뉴럴 네트워크 처리 방법 및 장치
EP3788559A1 (en) Quantization for dnn accelerators
US20170061279A1 (en) Updating an artificial neural network using flexible fixed point representation
WO2019212878A1 (en) Design flow for quantized neural networks
CN111507993A (zh) 一种基于生成对抗网络的图像分割方法、装置及存储介质
KR20180073118A (ko) 컨볼루션 신경망 처리 방법 및 장치
US20200117981A1 (en) Data representation for dynamic precision in neural network cores
EP3528181B1 (en) Processing method of neural network and apparatus using the processing method
US10579334B2 (en) Block floating point computations using shared exponents
US11783200B2 (en) Artificial neural network implementation in field-programmable gate arrays
US20200389182A1 (en) Data conversion method and apparatus
CN112771547A (zh) 通信系统中的端到端学习
US20240095522A1 (en) Neural network generation device, neural network computing device, edge device, neural network control method, and software generation program
JP2022512211A (ja) 画像処理方法、装置、車載演算プラットフォーム、電子機器及びシステム
US11551087B2 (en) Information processor, information processing method, and storage medium
CN113407747A (zh) 硬件加速器执行的方法、硬件加速器和神经网络装置
WO2023215658A1 (en) Implementing monotonic constrained neural network layers using complementary activation functions
KR20210116182A (ko) 소프트맥스 연산 근사화 방법 및 장치
EP4170547A1 (en) Method for extracting data features, and related apparatus
WO2021120036A1 (zh) 数据处理装置和数据处理方法
Wisayataksin et al. A Programmable Artificial Neural Network Coprocessor for Handwritten Digit Recognition
KR102653107B1 (ko) 연산 방법 및 장치
US20230008856A1 (en) Neural network facilitating fixed-point emulation of floating-point computation

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)