KR20210024865A - 데이터를 처리하는 방법 및 장치 - Google Patents

데이터를 처리하는 방법 및 장치 Download PDF

Info

Publication number
KR20210024865A
KR20210024865A KR1020190104578A KR20190104578A KR20210024865A KR 20210024865 A KR20210024865 A KR 20210024865A KR 1020190104578 A KR1020190104578 A KR 1020190104578A KR 20190104578 A KR20190104578 A KR 20190104578A KR 20210024865 A KR20210024865 A KR 20210024865A
Authority
KR
South Korea
Prior art keywords
data
processor
input
rule
input data
Prior art date
Application number
KR1020190104578A
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 KR1020190104578A priority Critical patent/KR20210024865A/ko
Priority to US16/803,342 priority patent/US11875255B2/en
Priority to CN202010145984.8A priority patent/CN112434803A/zh
Priority to JP2020109945A priority patent/JP7234185B2/ja
Priority to EP20187569.7A priority patent/EP3789892A1/en
Publication of KR20210024865A publication Critical patent/KR20210024865A/ko
Priority to US18/522,982 priority patent/US20240095532A1/en

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/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • 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/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions

Landscapes

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

Abstract

일 측면에 따른 데이터를 처리하는 방법은, 입력 데이터에 포함된 유효 정보에 기초하여 상기 입력 데이터의 성김(sparsity)을 확인하는 단계; 상기 성김의 형태에 기초하여 상기 입력 데이터를 재배열(rearrangement)하는 단계; 및 상기 재배열된 데이터를 처리하여 출력 데이터를 생성하는 단계;를 포함한다.

Description

데이터를 처리하는 방법 및 장치 {A method and an apparatus for processing data}
데이터를 처리하는 방법 및 장치에 관한다.
뉴럴 네트워크(neural network)는 생물학적 뇌를 모델링한 컴퓨터 과학적 아키텍쳐(computational architecture)를 참조한다. 최근 뉴럴 네트워크 기술이 발전함에 따라, 다양한 종류의 전자 시스템에서 뉴럴 네트워크 장치를 사용하여 입력 데이터를 분석하고 유효한 정보를 추출하고 있다.
뉴럴 네트워크 장치는 입력 데이터에 대한 많은 양의 연산을 수행한다. 이러한 뉴럴 네트워크 연산을 효율적으로 처리할 수 있는 기술이 연구되고 있다.
데이터를 처리하는 방법 및 장치를 제공하는데 있다. 또한, 상기 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공하는 데 있다. 해결하려는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 또 다른 기술적 과제들이 존재할 수 있다.
일 측면에 따른 데이터를 처리하는 방법은, 입력 데이터에 포함된 유효 정보에 기초하여 상기 입력 데이터의 성김(sparsity)을 확인하는 단계; 상기 성김의 형태에 기초하여 상기 입력 데이터를 재배열(rearrangement)하는 단계; 및 상기 재배열된 데이터를 처리하여 출력 데이터를 생성하는 단계;를 포함한다.
다른 측면에 따른 비휘발성 기록매체는, 상술한 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 포함한다.
또 다른 측면에 따른 데이터를 처리하는 장치는, 적어도 하나의 프로그램이 저장된 메모리; 및 상기 적어도 하나의 프로그램을 실행하는 프로세서;를 포함하고, 상기 프로세서는, 입력 데이터에 포함된 유효 정보에 기초하여 상기 입력 데이터의 성김(sparsity)을 확인하고, 상기 성김의 형태에 기초하여 상기 입력 데이터를 재배열하고, 상기 재배열된 데이터를 처리하여 출력 데이터를 생성한다.
도 1은 뉴럴 네트워크의 아키텍처를 설명하기 위한 도면이다.
도 2 및 도 3은 뉴럴 네트워크의 컨볼루션 연산의 예시들을 설명하기 위한 도면이다.
도 4는 데이터 처리 장치의 일 예를 도시한 구성도이다.
도 5는 데이터를 처리하는 방법의 일 예를 설명하기 위한 흐름도이다.
도 6a 및 도 6b는 프로세서가 입력 데이터의 성김을 확인하는 일 예를 설명하기 위한 도면들이다.
도 7은 프로세서가 입력 데이터를 재배열하는 일 예를 설명하기 위한 도면이다.
도 8은 프로세서가 입력 데이터를 재배열하는 다른 예를 설명하기 위한 도면이다.
도 9는 프로세서가 입력 데이터를 재배열하는 또 다른 예를 설명하기 위한 도면이다.
도 10은 프로세서가 입력 데이터를 재배열하는 또 다른 예를 설명하기 위한 도면이다.
도 11은 프로세서가 재배열된 데이터를 처리하여 출력 데이터를 생성하는 예를 도시한 흐름도이다.
도 12는 프로세서가 재배열된 데이터에 제2 규칙을 적용하는 예를 설명하기 위한 도면이다.
도 13은 프로세서가 재배열된 데이터에 제3 규칙을 적용하는 예를 설명하기 위한 도면이다.
실시 예들에서 사용되는 용어는 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 명세서에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 명세서의 전반에 걸친 내용을 토대로 정의되어야 한다.
명세서 전체에서 어떤 부분이 어떤 구성요소를 “포함”한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다. 또한, 명세서에 기재된 “…유닛”, “…모듈” 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다.
아래에서는 첨부한 도면을 참고하여 실시 예에 대하여 상세히 설명한다. 그러나 실시 예는 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 예에 한정되지 않는다.
이하에서는 도면을 참조하여 실시 예들을 상세히 설명한다.
도 1은 뉴럴 네트워크의 아키텍처를 설명하기 위한 도면이다.
도 1을 참고하면, 뉴럴 네트워크(1)는 딥 뉴럴 네트워크(Deep Neural Network, DNN) 또는 n-계층 뉴럴 네트워크(n-layers neural networks)의 아키텍처일 수 있다. DNN 또는 n-계층 뉴럴 네트워크는 컨볼루션 뉴럴 네트워크(Convolutional Neural Networks, CNN), 리커런트 뉴럴 네트워크(Recurrent Neural Networks, RNN), Deep Belief Networks, Restricted Boltzman Machines 등에 해당될 수 있다. 예를 들어, 뉴럴 네트워크(1)는 컨볼루션 뉴럴 네트워크(CNN)로 구현될 수 있으나, 이에 제한되지 않는다. 도 1에서는 뉴럴 네트워크(1)의 예시에 해당하는 컨볼루션 뉴럴 네트워크에서 일부의 컨볼루션 레이어가 도시되었지만, 컨볼루션 뉴럴 네트워크는 도시된 컨볼루션 레이어 외에도, 풀링 레이어(pooling layer), 풀리 커넥티드(fully connected) 레이어 등을 더 포함할 수 있다.
뉴럴 네트워크(1)는 입력 이미지, 피처맵들(feature maps) 및 출력을 포함하는 복수 레이어들을 갖는 아키텍처로 구현될 수 있다. 뉴럴 네트워크(1)에서 입력 이미지는 커널(kernel)이라 불리는 필터와의 컨볼루션 연산이 수행되고, 그 결과 피처맵들이 출력된다. 이때 생성된 출력 피처맵들은 입력 피처맵들로서 다시 커널과의 컨볼루션 연산이 수행되고, 새로운 피처맵들이 출력된다. 이와 같은 컨볼루션 연산이 반복적으로 수행된 결과, 최종적으로는 뉴럴 네트워크(1)를 통한 입력 이미지의 특징들에 대한 인식 결과가 출력될 수 있다.
예를 들어, 도 1의 뉴럴 네트워크(1)에 24x24 픽셀 크기의 이미지가 입력된 경우, 입력 이미지는 커널과의 컨볼루션 연산을 통해 20x20 픽셀 크기를 갖는 4채널의 피처맵들로 출력될 수 있다. 이후에도, 20x20 피처맵들은 커널과의 반복적인 컨볼루션 연산을 통해 크기가 줄어들면서, 최종적으로는 1x1 픽셀 크기의 특징들이 출력될 수 있다. 뉴럴 네트워크(1)는 여러 레이어들에서 컨볼루션 연산 및 서브-샘플링(또는 풀링) 연산을 반복적으로 수행함으로써 입력 이미지로부터 이미지 전체를 대표할 수 있는 강인한 특징들을 필터링하여 출력하고, 출력된 최종 특징들을 통해 입력 이미지의 인식 결과를 도출할 수 있다.
도 2 및 도 3은 뉴럴 네트워크의 컨볼루션 연산의 예시들을 설명하기 위한 도면이다.
도 2를 참조하면, 입력 피처맵(210)은 6x6 픽셀 크기이고, 커널(220)은 3x3 픽셀 크기이고, 출력 피처맵(230)은 4x4 픽셀 크기인 것으로 가정하나, 이에 제한되지 않는다. 뉴럴 네트워크는 다양한 크기의 피처맵들 및 커널들로 구현될 수 있다. 또한, 입력 피처맵(210), 커널(220) 및 출력 피처맵(230)에 정의된 값들은 모두 예시적인 값들일 뿐이고, 본 실시예들은 이에 제한되지 않는다.
커널(220)은 입력 피처맵(210)에서 3x3 픽셀 크기의 영역(또는 타일) 단위로 슬라이딩하면서 컨볼루션 연산을 수행한다. 컨볼루션 연산은 입력 피처맵(210)의 어느 영역의 각 픽셀 값과 대응되는 커널(220)의 엘리먼트인 웨이트(weight) 간의 곱셈이 수행되고, 곱셈으로 획득된 값들을 모두 합산하여, 출력 피처맵(230)의 각 픽셀 값을 구하는 연산을 의미한다.
먼저, 커널(220)은 입력 피처맵(210)의 제 1 영역(211)와 컨볼루션 연산을 수행한다. 즉, 제 1 영역(211)의 픽셀 값 1, 2, 3, 4, 5, 6, 7, 8, 9는 각각 커널(220)의 엘리먼트들인 웨이트 -1, -3, +4, +7, -2, -1, -5, +3, +1과 각각 곱해지고, 그 결과로서 -1, -6, 12, 28, -10, -6, -35, 24, 9가 획득된다. 다음으로, 획득된 값들 1, -6, 12, 28, -10, -6, -35, 24, 9를 모두 더한 결과인 15가 계산되고, 출력 피처맵(230)의 1행 1열의 픽셀 값(231)은 15로 결정된다. 여기서, 출력 피처맵(230)의 1행 1열의 픽셀 값(231)은 제 1 영역(211)에 대응된다.
상술한 바와 동일한 방식으로, 입력 피처맵(210)의 제 2 영역(212)과 커널(220) 간의 컨볼루션 연산이 수행됨으로써 출력 피처맵(230)의 1행 2열의 픽셀 값(232)인 4가 결정된다. 최종적으로, 입력 피처맵(210)의 마지막 윈도우인 제 16 영역(213)과 커널(220) 간의 컨볼루션 연산이 수행됨으로써 출력 피처맵(230)의 4행 4열의 픽셀 값(233)인 11이 결정된다.
한편, 도 2에서는 2차원 컨볼루션 연산에 대하여 설명되었으나, 컨볼루션 연산은 복수의 채널들의 입력 피처맵들, 커널들, 출력 피처맵들이 존재하는 3차원 컨볼루션 연산에 해당될 수 있다. 이에 대해서는 도 3을 참고하여 설명하도록 한다.
도 3을 참고하면, 입력 피처맵(201)은 3차원의 크기를 가질 수 있으며, X개의 입력 채널들이 존재하고, 각 입력 채널의 2차원 입력 피처맵은 H행 W열의 크기를 가질 수 있다(X, W, H는 자연수). 커널(202)은 4차원의 크기를 가질 수 있으며, R행 S열의 크기를 갖는 2차원의 커널이 X개의 입력 채널 및 Y개의 출력 채널 만큼 존재할 수 있다.(R, S, Y는 자연수). 다시 말해, 커널(202)은 입력 피처맵(201)의 입력 채널 수(X) 및 출력 피처맵(203)의 출력 채널 수(Y)에 대응하는 개수의 채널들을 가질 수 있으며, 각 채널의 2차원 커널은 R행 S열의 크기를 가질 수 있다. 출력 피처맵(203)은 3차원 입력 피처맵(201)과 4차원 커널(202) 간의 3차원 컨볼루션 연산을 통해 생성되고, 3차원 컨볼루션 연산 결과에 따라 Y개의 채널들이 존재할 수 있다.
하나의 2차원 입력 피처맵과 하나의 2차원 커널 간의 컨볼루션 연산을 통해 출력 피처맵이 생성되는 과정은 도 2를 참조하여 상술한 바와 같으며, 도 2에서 설명된 2차원 컨볼루션 연산이, X개의 입력 채널들의 입력 피처맵(201)과 X개의 입력 채널들 및 Y개의 출력 채널들의 커널(202) 간에 반복적으로 수행됨으로써, Y개의 출력 채널들의 출력 피처맵(203)이 생성될 수 있다.
도 4는 데이터 처리 장치의 일 예를 도시한 구성도이다.
도 4를 참조하면, 데이터 처리 장치(400)는 메모리(410) 및 프로세서(420)를 포함한다. 또한, 도 4에는 도시되지 않았으나, 데이터 처리 장치(400)는 외부 메모리와 연결될 수도 있다. 도 4의 데이터 처리 장치(400)에는 본 실시예와 관련된 구성요소들 만이 도시되어 있다. 따라서, 도 4에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 데이터 처리 장치(400)에 더 포함될 수 있음은 통상의 기술자에게 자명하다.
데이터 처리 장치(400)는 도 1 내지 도 3을 참조하여 상술한 뉴럴 네트워크가 구현된 장치일 수 있다. 예를 들어, 데이터 처리 장치(400)는 PC(personal computer), 서버 디바이스, 모바일 디바이스, 임베디드 디바이스 등의 다양한 종류의 디바이스들로 구현될 수 있다. 구체적인 예로서, 데이터 처리 장치(400)는 뉴럴 네트워크를 이용한 음성 인식, 영상 인식, 영상 분류 등을 수행하는 스마트폰, 태블릿 디바이스, AR(Augmented Reality) 디바이스, IoT(Internet of Things) 디바이스, 자율주행 자동차, 로보틱스, 의료기기 등에 포함될 수 있으나, 이에 제한되지 않는다. 또한, 데이터 처리 장치(400)는 상술한 디바이스에 탑재되는 전용 하드웨어 가속기(HW accelerator)에 해당될 수 있고, 뉴럴 네트워크 구동을 위한 전용 모듈인 NPU(neural processing unit), TPU(Tensor Processing Unit), Neural Engine 등과 같은 하드웨어 가속기일 수도 있다.
메모리(410)는 데이터 처리 장치(400) 내에서 처리되는 각종 데이터들을 저장한다. 예를 들어, 메모리(410)는 데이터 처리 장치(400)에서 처리된 데이터들 및 처리될 데이터들을 저장할 수 있다. 또한, 메모리(410)는 데이터 처리 장치(400)에 의해 구동될 애플리케이션들, 드라이버들 등을 저장할 수 있다.
예를 들어, 메모리(410)는 DRAM(dynamic random access memory), SRAM(static random access memory) 등과 같은 RAM(random access memory), ROM(read-only memory), EEPROM(electrically erasable programmable read-only memory), CD-ROM, 블루레이 또는 다른 광학 디스크 스토리지, HDD(hard disk drive), SSD(solid state drive), 또는 플래시 메모리를 포함할 수 있다.
프로세서(420)는 데이터 처리 장치(400)에서 뉴럴 네트워크를 구동하기 위한 전반적인 기능들을 제어하는 역할을 한다. 예를 들어, 프로세서(420)는 메모리(410)에 저장된 프로그램들을 실행함으로써, 데이터 처리 장치(400)를 전반적으로 제어한다. 프로세서(420)는 데이터 처리 장치(400) 내에 구비된 CPU(central processing unit), GPU(graphics processing unit), AP(application processor) 등으로 구현될 수 있으나, 이에 제한되지 않는다.
프로세서(420)는 메모리(410)로부터 데이터(예를 들어, 이미지 데이터, 피처맵 데이터, 커널 데이터 등)를 리드/라이트(read/write)하고, 리드/라이트된 데이터를 이용하여 뉴럴 네트워크를 실행한다. 뉴럴 네트워크가 실행될 때, 프로세서(420)는 내부에 포함된 프로세싱 유닛들을 구동시켜, 출력 피처맵에 관한 데이터를 생성하기 위한 입력 피처맵과 커널 간의 컨볼루션 연산을 반복적으로 수행한다. 이때, 입력 피처맵의 채널 수, 커널의 채널 수, 입력 피처맵의 크기, 커널의 크기, 값의 정밀도(precision) 등의 다양한 팩터들에 의존하여 컨볼루션 연산의 연산량이 결정될 수 있다.
예를 들어, 프로세싱 유닛은 컨볼루션 연산을 위한 로직 회로를 포함할 수 있다. 구체적으로, 프로세싱 유닛은 곱셈기(multiplier), 덧셈기(adder) 및 누산기(accumulator)의 조합으로 구현된 연산기를 포함할 수 있다. 또한, 곱셈기는 다수의 서브-곱셈기들의 조합으로 구현될 수 있고, 덧셈기도 다수의 서브-덧셈기들의 조합으로 구현될 수 있다.
프로세서(420)는 컨볼루션 연산을 처리하기 위해 캐시(cache) 기능을 담당하는 온-칩(on-chip) 메모리, 및 입력 피처맵의 픽셀값들 또는 커널들의 웨이트값들과 같은 다양한 오퍼랜드(operand)들을 디스패치하기 위한 디스패처(dispatcher)를 더 포함할 수 있다. 예를 들어, 디스패처는 메모리(410)에 저장되어 있는 데이터로부터 프로세싱 유닛이 수행할 연산에 필요한 픽셀값들 및 웨이트값들 등의 오퍼랜드들을 온-칩 메모리에 디스패치한다. 그리고, 디스패처는 온-칩 메모리에 디스패치된 오퍼랜드들을 컨볼루션 연산을 위해 프로세싱 유닛에 다시 디스패치한다.
프로세서(420)가 입력 피처맵 데이터 및 커널 데이터 간의 컨볼루션 연산을 수행하기 때문에, 연산의 대상인 데이터에 유효하지 않은 정보가 포함되면, 해당 연산은 불필요한 연산이 된다. 예를 들어, 연산의 대상인 데이터가 0인 경우, 해당 데이터 간의 컨볼루션 연산은 0으로 출력되므로, 이러한 연산은 프로세서(420)의 연산량을 증가시킬 뿐 불필요하다.
한편, 입력 피처맵 데이터 및 커널 데이터는 M행 N열의 매트릭스로 표현될 수 있다(M, N은 자연수). 즉, 입력 피처맵 매트릭스와 커널 매트릭스는 복수의 엘리먼트들을 포함하고, 복수의 엘리먼트들 중 0이 포함된 수와 불필요한 연산의 횟수는 비례한다.
데이터 처리 장치(400)는 입력 데이터(예를 들어, 입력 피처맵 데이터 및 커널 데이터)에 포함된 유효 정보(예를 들어, 0이 아닌 데이터)에 기초하여 입력 데이터를 재배열(rearrangement)한다. 여기에서, 입력 데이터를 재배열하는 것은 매트릭스에 포함된 일부 엘리먼트들의 위치를 변경하거나, 매트릭스에 포함된 일부 행 또는 일부 열을 생략(skip)하는 등 매트릭스의 최초 구성을 변경하는 작업을 의미한다.
이에 따라, 데이터 처리 장치(400)는 불필요한 연산을 수행하지 않고서도 유효한 결과를 출력할 수 있는바, 원하는 결과가 출력되면서도 전체 연산량이 감소될 수 있다.
이하, 도 5 내지 도 13을 참조하여, 데이터 처리 장치(400)가 입력 데이터를 재배열하고, 재배열된 데이터를 처리하여 출력 데이터를 생성하는 예를 설명한다.
도 5는 데이터를 처리하는 방법의 일 예를 설명하기 위한 흐름도이다.
도 5를 참조하면, 데이터를 처리하는 방법은 도 4에 도시된 데이터 처리 장치(400)에서 시계열적으로 처리되는 단계들로 구성된다. 따라서, 이하에서 생략된 내용이라 하더라도 도 4에 도시된 데이터 처리 장치(400)에 관하여 이상에서 기술된 내용은 도 5의 데이터를 처리하는 방법에도 적용됨을 알 수 있다.
510 단계에서, 프로세서(420)는 입력 데이터에 포함된 유효 정보에 기초하여 입력 데이터의 성김(sparsity)을 확인한다.
입력 데이터는 프로세서(420)가 컨볼루션 연산을 수행하는 대상을 의미한다. 예를 들어, 입력 데이터는 이미지 데이터, 피처맵 데이터 또는 커널 데이터가 포함될 수 있다. 이 때, 피처맵 데이터는 입력 피처맵 데이터 또는 출력 피처맵 데이터일 수 있다. 프로세서(420)가 복수의 레이어들에서 컨볼루션 연산을 수행하고, 이전 레이어에서의 출력 피처맵 데이터가 다음 레이어에서의 입력 피처맵 데이터가 된다. 따라서, 510 단계의 입력 데이터는 입력 피처맵 데이터일 수도 있고, 또는 출력 피처맵 데이터일 수도 있다. 입력 데이터는, 데이터들이 엘리먼트들로 포함된 매트릭스가 될 수 있음은 도 4를 참조하여 상술한 바와 같다.
유효 정보는 유의미한 컨볼루션 연산이 수행될 수 있는 데이터를 의미한다. 일반적으로, 정보는 숫자로 표현될 수 있기에, 유효 정보는 0이 아닌 숫자인 데이터를 의미할 수 있다. 바꾸어 말하면, 무의미한 정보는 그 데이터가 0으로 표현될 수 있다.
프로세서(420)는 입력 데이터의 성김을 확인한다. 여기에서, 성김은 데이터에 공백이 있는지 여부 또는 공백이 포함된 데이터의 상태를 의미한다. 상술한 바에 따르면, 유효 정보는 0이 아닌 숫자인 데이터로 표현될 수 있다. 따라서, 0인 데이터는 무의미한 정보를 의미하며, 이는 해당 데이터가 공백인 것(즉, 데이터가 없는 것)으로도 해석될 수 있다. 따라서, 프로세서(420)가 입력 데이터의 성김을 확인하는 것은, 프로세서(420)가 입력 데이터 내의 0의 분포를 확인하는 것과 동일하다.
이하, 도 6a 및 도 6b를 참조하여, 프로세서(420)가 입력 데이터의 성김을 확인하는 예를 설명한다.
도 6a 및 도 6b는 프로세서가 입력 데이터의 성김을 확인하는 일 예를 설명하기 위한 도면들이다.
도 6a 및 도 6b에는 프로세서(420)가 수행하는 컨볼루션 연산을 도식화되어 있다. 프로세서(420)는 입력 데이터(610, 620, 630, 640) 간의 컨볼루션 연산을 수행하여 출력 데이터를 생성한다. 예를 들어, 입력 데이터(610, 620, 630, 640)는 매트릭스로 표현될 수 있으며, 프로세서(420)는 매트릭스에 포함된 채널의 엘리먼트들 간의 곱의 합(sum of product)을 수행하여 출력 데이터를 생성할 수 있다.
도 6a에는 입력 데이터로서 입력 피처맵 데이터(610)와 커널 데이터(620)가 도시되어 있고, 도 6b에는 입력 데이터로서 입력 피처맵 데이터(630)와 커널 데이터(640)가 도시되어 있다. 이하에서는, 설명의 편의를 위하여, 입력 피처맵 데이터(610, 630)에 포함된 엘리먼트를 액티베이션(activation)이라 하고, 커널 데이터(620, 640)에 포함된 엘리먼트를 웨이트(weight)라고 한다.
커널 데이터(620)와 커널 데이터(640)를 비교하면, 커널 데이터(640)의 일부에는 공백들이 포함되어 있다. 여기에서, 공백은 웨이트가 0인 것으로 해석될 수 있다. 즉, 커널 데이터(640)는 커널 데이터(620)에 비하여 성김(sparsity)이 크고, 이는 커널 데이터(620)에 포함된 웨이트들 보다 커널 데이터(640)에 포함된 웨이트들에 0이 많다는 것을 의미한다.
한편, 도 6a 및 도 6b에는, 커널 데이터(640)에만 0이 포함되어 있는 것으로 도시되어 있으나, 이에 제한되지 않는다. 다시 말해, 입력 데이터(610, 620, 630, 640) 중 적어도 하나에는 0이 포함될 수 있으며, 입력 데이터(610, 620, 630, 640)에 포함된 0의 개수 및 0이 분포된 형태는 다양할 수 있다.
프로세서(420)는 입력 데이터(610, 620, 630, 640)에 포함된 유효 정보(예를 들어, 0이 아닌 수)에 기초하여 입력 데이터(610, 620, 630, 640)의 성김을 확인한다. 다시 말해, 프로세서(420)는 입력 데이터(610, 620, 630, 640) 내의 0의 분포를 확인한다.
다시 도 5를 참조하면, 520 단계에서, 프로세서(420)는 입력 데이터의 성김의 형태에 기초하여 입력 데이터를 재배열한다.
프로세서(420)는 입력 데이터 내의 0의 분포에 기초하여 입력 데이터를 재배열 할 수 있다. 일 예로서, 프로세서(420)는 입력 데이터의 복수의 행들 각각에 포함된 0의 개수에 기초하여 복수의 행들을 재배열 할 수 있다. 다른 예로서, 프로세서(420)는 입력 데이터의 복수의 열들 각각의 엘리먼트들을 제1 규칙에 따라 이동할 수 있다. 또 다른 예로서, 프로세서(420)는 입력 데이터의 복수의 열들 중 0만 포함하는 적어도 하나의 열에 대한 처리가 생략되도록 복수의 열들을 재배열 할 수 있다. 또 다른 예로서, 프로세서(420)는 입력 데이터의 제1 열의 첫 번째 엘리먼트를 제1 열과 인접한 제2 열의 마지막 엘리먼트의 위치로 이동할 수 있다.
프로세서(420)가 입력 데이터를 재배열하는 예들은 도 7 내지 도 10을 참조하여 후술한다.
도 7은 프로세서가 입력 데이터를 재배열하는 일 예를 설명하기 위한 도면이다.
도 7에는 입력 데이터로서 입력 피처맵 데이터(710) 및 커널 데이터(720)가 도시되어 있다. 입력 피처맵 데이터(710)는 6행 6열의 매트릭스, 커널 데이터(720)는 6행 4열의 매트릭스인 것으로 도시되어 있으나, 이에 제한되지 않는다.
입력 피처맵 데이터(710)의 일부에는 공백들이 포함되어 있다. 여기에서, 공백은 유효 정보가 없는 것으로 해석될 수 있고, 예를 들어 공백에 대응하는 액티베이션이 0일 수 있다. 또한, 도 7에는 공백이 입력 피처맵 데이터(710)에만 포함되어 있는 것으로 도시되어 있으나, 이에 제한되지 않는다. 다시 말해, 커널 데이터(720)에 포함된 웨이트들 중 적어도 하나에도 0이 포함될 수 있다.
프로세서(420)는 입력 피처맵 데이터(710)의 성김의 형태에 기초하여 입력 미쳐맵 데이터(710)를 재배열 할 수 있다. 예를 들어, 프로세서(420)는 입력 피처맵 데이터(710)에 포함된 복수의 행들(row 0-5) 각각에 포함된 0의 개수에 기초하여, 복수의 행들(row 0-5)을 재배열할 수 있다.
예를 들어, 피처맵 데이터(710)과 재배열된 피처맵 데이터(711)를 참조하면, 프로세서(420)는 입력 피처맵 데이터(710)의 복수의 행들(row 0-5) 중 0이 가장 많이 포함된 행(row 2)과 0이 가장 적게 포함된 행(row 0)을 서로 인접하도록 배열할 수 있다. 또한, 프로세서(420)는 입력 피처맵 데이터(710)의 복수의 행들(row 0-5) 중 0이 두 번째로 많이 포함된 행(row 4)과 0이 두 번째로 적게 포함된 행(row 3)을 서로 인접하도록 배열할 수 있다. 이러한 방식으로, 프로세서(420)는, 0이 포함된 개수를 기준으로, 입력 피처맵 데이터(710)의 복수의 행들(row 0-5)을 재배열하여 피처맵 데이터(711)를 생성할 수 있다.
재배열된 피처맵 데이터(711)에 의하여, 프로세서(420)는 불필요한 연산의 수행을 최소화 할 수 있다. 예를 들어, 커널 데이터(720)와의 컨볼루션 연산을 위하여, 프로세서(420)는 재배열된 피처맵 데이터(711)를 부분별로 로직 회로(730)에 입력할 수 있다. 예를 들어, 프로세서(420)는 재배열된 피처맵 데이터(711) 중 윈도우(740) 내에 포함된 액티베이션들을 로직 회로(730)에 입력할 수 있다.
또한, 프로세서(420)는 커널 데이터(720)에도 동일한 크기의 윈도우(750)를 적용하여, 윈도우(750)에 포함된 웨이트들을 로직 회로(730)에 입력할 수 있다. 이 때, 프로세서(420)는 재배열된 피처맵 데이터(711)에 대응되도록 커널 데이터(720)도 재배열한다. 재배열된 피처맵 데이터(711)에서 로직 회로(730)에 입력되는 액티베이션들의 순서와 입력 피처맵 데이터(710)에서 로직 회로(730)에 입력되는 액티베이션들의 순서는 서로 다르다. 따라서, 커널 데이터(720)의 재배열 없이, 웨이트들이 로직 회로(730)에 입력되면 부정확한 연산 결과가 출력될 수 있다.
프로세서(420)는 로직 회로(730)에 입력된 액티베이션들과 연산되어야 하는 웨이트들이 로직 회로(730)에 정확하게 입력되도록, 커널 데이터(720)를 재배열한다. 그리고, 프로세서(420)는 재배열된 커널 데이터에 따라 웨이트들을 로직 회로(730)에 입력한다. 따라서, 재배열된 피처맵 데이터(711)에 의하더라도 로직 회로(730)로부터 정확한 연산 결과가 출력될 수 있다.
만약, 커널 데이터(720)가 재배열되는 경우, 프로세서(420)는 상술한 방식과 동일하게 입력 피처맵 데이터(710)를 재배열하여 로직 회로(730)에 입력한다.
프로세서(420)는 윈도우(740) 내에 포함된 액티베이션들의 위치를 조정하여 불필요한 컨볼루션 연산이 수행되는 것을 방지할 수 있다. 프로세서(420)가 윈도우(740) 내에 포함된 액티베이션들의 위치를 조정하여 컨볼루션 연산을 수행하는 예는 도 11 내지 도 13을 참조하여 후술한다.
도 8은 프로세서가 입력 데이터를 재배열하는 다른 예를 설명하기 위한 도면이다.
도 8에는 입력 데이터로서 입력 피처맵 데이터(810) 및 커널 데이터(820)가 도시되어 있다. 입력 피처맵 데이터(810)의 일부에는 공백들이 포함되어 있다. 또한, 도 8에는 공백이 입력 피처맵 데이터(810)에만 포함되어 있는 것으로 도시되어 있으나, 이에 제한되지 않는다. 다시 말해, 커널 데이터(820)에 포함된 웨이트들 중 적어도 하나에도 0이 포함될 수 있다.
프로세서(420)는 입력 피처맵 데이터(810)의 성김의 형태에 기초하여 입력 미쳐맵 데이터(810)를 재배열 할 수 있다. 예를 들어, 프로세서(420)는 입력 피처맵 데이터(810)에 포함된 복수의 열들(col 0-5) 각각의 엘리먼트들을 제1 규칙에 따라 이동할 수 있다.
제1 규칙은 복수의 열들(col 0-5) 각각의 엘리먼트들을 동일한 방향으로 소정의 크기만큼 이동하는 규칙일 수 있다. 여기에서, 소정의 크기는, 입력 피처맵 데이터(810)의 성김의 형태에 따라, 프로세서(420)가 적응적으로 변경할 수 있고, 복수의 열들(col 0-5) 각각에 적용될 이동의 크기는 모두 다를 수 있다. 예를 들어, 피처맵 데이터(810)과 재배열된 피처맵 데이터(811)를 참조하면, 프로세서(420)는 피처맵 데이터(810)의 두 번째 열(col 1)에 포함된 액티베이션들을 한 칸씩 이동시켜, 재배열된 피처맵 데이터(811)의 두 번째 열(col 1)을 생성할 수 있다. 또한, 프로세서(420)는 피처맵 데이터(810)의 다섯 번째 열(col 4)에 포함된 액티베이션들을 두 칸씩 이동시켜, 재배열된 피처맵 데이터(811)의 다섯 번째 열(col 4)을 생성할 수 있다. 또한, 피처맵 데이터(810)의 성김의 형태에 따라, 프로세서(420)는 피처맵 데이터(810)의 다른 열들(col 0, 2, 3, 5)에 대해서는 액티베이션들을 이동시키지 않을 수 있다.
또한, 제1 규칙은 복수의 열들(col 0-5)에 대하여 주기적으로 적용될 수 있다. 도 8에 도시된 바와 같이, 프로세서(420)는 '0-1-0-0-2-0'의 이동 규칙을 피처맵 데이터(810)의 다음에 입력될 피처맵 데이터들에 주기적으로 적용할 수 있다. 예를 들어, 주기는 커널 데이터(820)의 크기와 동일할 수 있으나, 이에 한정되지 않는다. 이러한 과정을 통하여, 프로세서(420)는 불필요한 컨볼루션 연산이 수행되는 것을 방지할 수 있다.
또한, 프로세서(420)는 재배열된 피처맵 데이터(811)에 대응되도록 커널 데이터(820)도 재배열한다. 예를 들어, 프로세서(420)는 로직 회로에 입력된 액티베이션들과 연산되어야 하는 웨이트들이 정확하게 로직 회로에 입력되도록, 커널 데이터(820)를 재배열한다. 그리고, 프로세서(420)는 재배열된 커널 데이터에 따라 웨이트들을 로직 회로에 입력한다. 따라서, 재배열된 피처맵 데이터(811)에 의하더라도 로직 회로로부터 정확한 연산 결과가 출력될 수 있다.
만약, 커널 데이터(720)가 재배열되는 경우, 프로세서(420)는 상술한 방식과 동일하게 입력 피처맵 데이터(710)를 재배열하여 로직 회로(730)에 입력한다.
프로세서(420)가 재배열된 피처맵 데이터(811)와 커널 데이터(820)를 처리하여 출력 데이터를 생성하는 예는 도 11 내지 도 13을 참조하여 후술한다.
도 9는 프로세서가 입력 데이터를 재배열하는 또 다른 예를 설명하기 위한 도면이다.
도 9에는 입력 데이터로서 입력 피처맵 데이터(910) 및 커널 데이터(920)가 도시되어 있다. 입력 피처맵 데이터(910)의 일부에는 공백들이 포함되어 있다. 또한, 도 9에는 공백이 입력 피처맵 데이터(910)에만 포함되어 있는 것으로 도시되어 있으나, 이에 제한되지 않는다. 다시 말해, 커널 데이터(920)에 포함된 웨이트들 중 적어도 하나에도 0이 포함될 수 있다.
프로세서(420)는 입력 피처맵 데이터(910)의 성김의 형태에 기초하여 입력 피처맵 데이터(910)를 재배열 할 수 있다. 예를 들어, 프로세서(420)는 입력 피처맵 데이터(910)에 포함된 열(col 1)의 첫 번째 엘리먼트(액티베이션)을 열(col 1)과 인접한 열(col 0)의 마지막 엘리먼트(액티베이션)의 위치로 이동시킬 수 있다.
구체적으로, 열(col 1) 및 열(col 0)의 첫 번째 위치에는 모두 유효 정보가 포함되어 있다. 또한, 열(col 0)의 마지막 위치에는 유효 정보가 포함되어 있지 않다. 이 경우, 프로세서(420)는 열(col 1)의 첫 번째 위치의 엘리먼트를 열(col 0)의 마지막 위치로 이동시킬 수 있다. 이러한 과정을 통하여, 프로세서(420)는 불필요한 컨볼루션 연산이 수행되는 것을 방지할 수 있다.
한편, 입력 피처맵 데이터(910)가 재배열되는 경우, 커널 데이터(920)도 재배열될 수 있음은 도 7 및 도 8을 참조하여 상술한 바와 같다.
도 10은 프로세서가 입력 데이터를 재배열하는 또 다른 예를 설명하기 위한 도면이다.
도 10에는 입력 피처맵 데이터(1010)가 도시되어 있다. 입력 피처맵 데이터(1010)의 일부에는 공백들이 포함되어 있다. 특히, 입력 피처맵 데이터(1010)의 일부 열들(col 1-3)은 모두 공백으로만 구성되어 있다.
프로세서(420)는 입력 피처맵 데이터(1010)의 성김의 형태에 기초하여 입력 미쳐맵 데이터(1010)를 재배열 할 수 있다. 예를 들어, 프로세서(420)는 입력 피처맵 데이터(1010)에 포함된 복수의 열들(col 0-5) 중 0만 포함하는 열들(col 1-3)에 대한 처리가 생략되도록 입력 피처맵 데이터(1010)를 재배열할 수 있다.
예를 들어, 프로세서(420)는 입력 피처맵 데이터(1010)에서 열들(col 1-3)을 생략하고, 나머지 열들(col 0, 4, 5) 만으로 재배열된 피처맵 데이터(1020)를 생성할 수 있다. 그리고, 프로세서(420)는 열들(col 1-3)이 생략되었음을 메모리(410)에 기록한다. 이러한 과정을 통하여, 프로세서(420)는 불필요한 컨볼루션 연산이 수행되는 것을 방지할 수 있다.
한편, 입력 피처맵 데이터(1010)가 재배열되는 경우, 커널 데이터도 재배열될 수 있음은 도 7 및 도 8을 참조하여 상술한 바와 같다.
다시 도 5를 참조하면, 530 단계에서, 프로세서(420)는 재배열된 데이터를 처리하여 출력 데이터를 생성한다.
예를 들어, 프로세서(420)는 재배열된 데이터를 이용하여 컨볼루션 연산을 수행함으로써 출력 데이터를 생성할 수 있다. 다만, 프로세서(420)는 불필요한 연산을 감소시키기 위하여, 520 단계의 재배열된 데이터에 추가로 제2 규칙 또는 제3 규칙을 적용할 수 있다.
이하, 도 11 내지 도 13을 참조하여, 프로세서(420)가 출력 데이터를 생성하는 예를 설명한다.
도 11은 프로세서가 재배열된 데이터를 처리하여 출력 데이터를 생성하는 예를 도시한 흐름도이다.
1110 단계에서, 프로세서(420)는 재배열된 데이터에 제2 규칙 또는 제3 규칙 중 적어도 하나를 적용한다.
도 7을 참조하여 상술한 바와 같이, 프로세서(420)는 재배열된 데이터를 순차적으로 로직 회로에 입력할 수 있다. 예를 들어, 프로세서(420)는 재배열된 데이터에 소정의 크기를 갖는 윈도우를 적용하고, 윈도우 내에 포함된 엘리먼트들을 로직 회로에 입력할 수 있다. 만약, 윈도우 내에 포함된 엘리먼트들 중 일부에 유효하지 않은 정보(예를 들어, 0)가 포함될 경우, 프로세서(420)는 제2 규칙 또는 제3 규칙을 적용하여 윈도우 내에 포함된 엘리먼트들을 재배열할 수 있다.
1120 단계에서, 프로세서(420)는 적어도 하나의 규칙이 적용된 데이터와 다른 데이터의 컨볼루션 연산을 수행한다. 예를 들어, 프로세서(420)는 로직 회로에 재배열된 액티베이션들 또는 재배열된 웨이트들을 입력함으로써, 컨볼루션 연산을 수행할 수 있다.
이하, 도 12를 참조하여 프로세서(420)가 재배열된 데이터에 제2 규칙을 적용하는 예를 설명하고, 도 13을 참조하여 프로세서(420)가 재배열된 데이터에 제3 규칙을 적용하는 예를 설명한다.
도 12는 프로세서가 재배열된 데이터에 제2 규칙을 적용하는 예를 설명하기 위한 도면이다.
도 12에는 피처맵 데이터(1210) 및 커널 데이터(1220)가 도시되어 있다. 이하에서는, 피처맵 데이터(1210)는 520 단계의 재배열이 수행된 데이터인 것으로 가정한다.
프로세서(420)는 피처맵 데이터(1210) 중 일부를 로직 회로(1230)에 입력한다. 예를 들어, 프로세서(420)는 피처맵 데이터(1210) 중 윈도우(1240) 내에 포함된 액티베이션들을 로직 회로(1230)에 입력할 수 있다. 이 때, 프로세서(420)는 윈도우(1240) 내에 포함된 액티베이션들에 대하여 제2 규칙을 적용하여, 로직 회로(1230)에 최대의 액티베이션들을 입력할 수 있다. 다시 말해, 프로세서(420)는 로직 회로(1230)의 입력 레이어(1231)에 공백이 최소화 되도록, 윈도우(1240) 내에 포함된 액티베이션들에 대하여 제2 규칙을 적용할 수 있다. 여기에서, 제2 규칙은 열들(col 0, 1)의 액티베이션들이 인접한 열의 동일한 위치로 이동하는 규칙을 의미한다.
예를 들어, 프로세서(420)는 윈도우(1240) 내의 열들(col 0, 1)의 공백을 확인하고, 열(col 1)의 액티베이션들을 열(col 0)의 공백에 할당할 수 있다. 도 12를 참조하면, 열(col 1)의 액티베이션 2 및 액티베이션 4가 열(col 0)의 동일한 위치로 이동할 수 있다.
프로세서(420)는 제2 규칙이 적용된 액티베이션들을 로직 회로(1230)의 입력 레이어(1231)에 입력한다. 열(col 0) 및 입력 레이어(1231)를 비교하면, 열(col 0)의 공백의 수보다 입력 레이어(1231)의 공백의 수가 더 작다. 공백에는 데이터 0이 포함된 것과 동일하므로, 공백에 대응하는 웨이트가 어떤 값을 갖는지를 불문하고 출력은 0이 된다. 따라서, 입력 레이어(1231)에 포함된 공백의 수가 많을수록(즉, 입력 레이어(1231)에 0이 많이 포함될 수록), 불필요한 연산의 수가 증가한다.
상술한 바와 같이, 프로세서(420)는 제2 규칙을 적용하여 입력 레이어(1231)에 포함된 0의 수를 최소화 한다. 따라서, 프로세서(420)는 로직 회로(1230)에서 불필요한 연산이 수행되는 횟수를 최소화할 수 있다.
도 13은 프로세서가 재배열된 데이터에 제3 규칙을 적용하는 예를 설명하기 위한 도면이다.
도 13에는 피처맵 데이터(1310) 및 커널 데이터(1320)가 도시되어 있다. 이하에서는, 피처맵 데이터(1310)는 520 단계의 재배열이 수행된 데이터인 것으로 가정한다.
프로세서(420)는 윈도우(1340) 내에 포함된 액티베이션들에 대하여 제3 규칙을 적용하여, 로직 회로(1330)에 최대의 액티베이션들을 입력할 수 있다. 여기에서, 제3 규칙은 열들(col 0, 1)의 액티베이션들이 인접한 열의 가로지른 위치로 이동하는 규칙을 의미한다.
예를 들어, 프로세서(420)는 윈도우(1340) 내의 열들(col 0, 1)의 공백을 확인하고, 열(col 1)의 액티베이션들을 열(col 0)의 공백에 할당할 수 있다. 도 13을 참조하면, 열(col 1)의 액티베이션 0, 1 및 3이 열(col 0)의 가로지른 위치로 이동할 수 있다.
프로세서(420)는 제3 규칙이 적용된 액티베이션들을 로직 회로(1330)의 입력 레이어(1331)에 입력한다. 열(col 0) 및 입력 레이어(1331)를 비교하면, 열(col 0)에는 공백이 존재하나, 입력 레이어(1331)에는 공백이 없다. 따라서, 프로세서(420)는 로직 회로(1230)에서 불필요한 연산이 수행되는 횟수를 최소화할 수 있다.
도 12 및 도 13을 참조하여 상술한 바에 따르면, 프로세서(420)가 제2 규칙과 제3 규칙을 별도로 적용하는 것으로 도시되어 있으나, 이에 제한되지 않는다. 프로세서(420)는 피처맵 데이터(1210, 1310) 및 커널 데이터(1220, 1320)의 성김을 확인하고, 적응적으로 제2 규칙 및 제3 규칙 중 적어도 하나를 피처맵 데이터(1210, 1310) 및/또는 커널 데이터(1220, 1320)에 적용할 수 있다.
상술한 바에 따르면, 데이터 처리 장치(400)는 컨볼루션 연산이 수행되는 로직 회로에 입력되는 0의 수가 최소화 되도록, 입력 피처맵 데이터 및/또는 커널 데이터를 재배열한다. 따라서, 데이터 처리 장치(400)는 불필요한 연산이 수행되는 수를 최소화할 수 있다.
한편, 상술한 방법은 컴퓨터에서 실행될 수 있는 프로그램으로 작성 가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 또한, 상술한 방법에서 사용된 데이터의 구조는 컴퓨터로 읽을 수 있는 기록매체에 여러 수단을 통하여 기록될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 램, USB, 플로피 디스크, 하드 디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등)와 같은 저장매체를 포함한다.
본 실시예와 관련된 기술 분야에서 통상의 지식을 가진 자는 상기된 기재의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 방법들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 하며, 권리 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점을 포함하는 것으로 해석되어야 할 것이다.
400: 데이터 처리 장치
410: 메모리
420: 프로세서

Claims (20)

  1. 데이터를 처리하는 방법에 있어서,
    입력 데이터에 포함된 유효 정보에 기초하여 상기 입력 데이터의 성김(sparsity)을 확인하는 단계;
    상기 성김의 형태에 기초하여 상기 입력 데이터를 재배열(rearrangement)하는 단계; 및
    상기 재배열된 데이터를 처리하여 출력 데이터를 생성하는 단계;를 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 재배열하는 단계는,
    상기 입력 데이터 내의 0(zero)의 분포에 기초하여 상기 입력 데이터를 재배열하는, 방법.
  3. 제 1 항에 있어서,
    상기 재배열하는 단계는,
    상기 입력 데이터에 포함된 복수의 행들 각각에 포함된 0(zero)의 개수에 기초하여 상기 행들을 재배열하는, 방법.
  4. 제 3 항에 있어서,
    상기 재배열하는 단계는,
    상기 복수의 행들 중 0이 가장 많이 포함된 제1 행 및 상기 복수의 행들 중 0이 가장 적게 포함된 제2 행을 서로 인접하도록 상기 행들을 재배열하는, 방법.
  5. 제 1 항에 있어서,
    상기 재배열하는 단계는,
    상기 입력 데이터에 포함된 복수의 열들 각각의 엘리먼트들을 제1 규칙(rule)에 따라 이동(shift)하는, 방법.
  6. 제 5 항에 있어서,
    상기 제1 규칙은, 상기 복수의 열들 각각의 엘리먼트들을 동일한 방향으로 소정의 크기만큼 이동하는 규칙을 포함하고,
    상기 제1 규칙은 상기 복수의 열들에 대하여 주기적으로 적용되는, 방법.
  7. 제 1 항에 있어서,
    상기 재배열하는 단계는,
    상기 입력 데이터에 포함된 복수의 열들 중 0만 포함하는 적어도 하나의 열에 대한 처리가 생락되도록 상기 복수의 열들을 재배열하는, 방법.
  8. 제 1 항에 있어서,
    상기 재배열하는 단계는,
    상기 입력 데이터에 포함된 제1 열(column)의 첫 번째 엘리먼트(element)를 상기 제1 열과 인접한 제2 열의 마지막 엘리먼트의 위치로 이동하는, 방법.
  9. 제 1 항에 있어서,
    상기 생성하는 단계는,
    상기 재배열된 데이터에 제2 규칙 및 제3 규칙 중 적어도 하나를 적용하는 단계; 및
    상기 적어도 하나의 규칙이 적용된 데이터와 다른 데이터의 컨볼루션(convolution) 연산을 수행하는 단계;를 포함하는, 방법.
  10. 제 1 항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 비휘발성(non-transitory)의 기록매체.
  11. 데이터를 처리하는 장치에 있어서,
    적어도 하나의 프로그램이 저장된 메모리; 및
    상기 적어도 하나의 프로그램을 실행하는 프로세서;를 포함하고,
    상기 프로세서는,
    입력 데이터에 포함된 유효 정보에 기초하여 상기 입력 데이터의 성김(sparsity)을 확인하고, 상기 성김의 형태에 기초하여 상기 입력 데이터를 재배열하고, 상기 재배열된 데이터를 처리하여 출력 데이터를 생성하는, 장치.
  12. 제 11 항에 있어서,
    상기 프로세서는,
    상기 입력 데이터 내의 0(zero)의 분포에 기초하여 상기 입력 데이터를 재배열하는, 장치.
  13. 제 11 항에 있어서,
    상기 프로세서는,
    상기 입력 데이터에 포함된 복수의 행들 각각에 포함된 0(zero)의 개수에 기초하여 상기 행들을 재배열하는, 장치.
  14. 제 13 항에 있어서,
    상기 프로세서는,
    상기 복수의 행들 중 0이 가장 많이 포함된 제1 행 및 상기 복수의 행들 중 0이 가장 적게 포함된 제2 행을 서로 인접하도록 상기 행들을 재배열하는, 장치.
  15. 제 11 항에 있어서,
    상기 프로세서는,
    상기 입력 데이터에 포함된 복수의 열들 각각의 엘리먼트들을 제1 규칙(rule)에 따라 이동(shift)하는, 장치.
  16. 제 15 항에 있어서,
    상기 제1 규칙은, 상기 복수의 열들 각각의 엘리먼트들을 동일한 방향으로 소정의 크기만큼 이동하는 규칙을 포함하고,
    상기 제1 규칙은 상기 복수의 열들에 대하여 주기적으로 적용되는, 장치.
  17. 제 11 항에 있어서,
    상기 프로세서는,
    상기 입력 데이터에 포함된 복수의 열들 중 0만 포함하는 적어도 하나의 열에 대한 처리가 생락되도록 상기 복수의 열들을 재배열하는, 장치.
  18. 제 11 항에 있어서,
    상기 프로세서는,
    상기 입력 데이터에 포함된 제1 열(column)의 첫 번째 엘리먼트(element)를 상기 제1 열과 인접한 제2 열의 마지막 엘리먼트의 위치로 이동하는, 장치.
  19. 제 11 항에 있어서,
    상기 프로세서는,
    상기 재배열된 데이터에 제2 규칙 및 제3 규칙 중 적어도 하나를 적용하고, 상기 적어도 하나의 규칙이 적용된 데이터와 다른 데이터의 컨볼루션(convolution) 연산을 수행하는, 장치.
  20. 제 11 항에 있어서,
    상기 장치는 뉴럴 네트워크 장치를 포함하는, 장치.
KR1020190104578A 2019-08-26 2019-08-26 데이터를 처리하는 방법 및 장치 KR20210024865A (ko)

Priority Applications (6)

Application Number Priority Date Filing Date Title
KR1020190104578A KR20210024865A (ko) 2019-08-26 2019-08-26 데이터를 처리하는 방법 및 장치
US16/803,342 US11875255B2 (en) 2019-08-26 2020-02-27 Method and apparatus for processing data
CN202010145984.8A CN112434803A (zh) 2019-08-26 2020-03-05 用于识别图像的方法和设备
JP2020109945A JP7234185B2 (ja) 2019-08-26 2020-06-25 データを処理する方法及びその装置
EP20187569.7A EP3789892A1 (en) 2019-08-26 2020-07-24 Method and apparatus for processing data
US18/522,982 US20240095532A1 (en) 2019-08-26 2023-11-29 Method and apparatus for processing data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190104578A KR20210024865A (ko) 2019-08-26 2019-08-26 데이터를 처리하는 방법 및 장치

Publications (1)

Publication Number Publication Date
KR20210024865A true KR20210024865A (ko) 2021-03-08

Family

ID=71786774

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190104578A KR20210024865A (ko) 2019-08-26 2019-08-26 데이터를 처리하는 방법 및 장치

Country Status (5)

Country Link
US (2) US11875255B2 (ko)
EP (1) EP3789892A1 (ko)
JP (1) JP7234185B2 (ko)
KR (1) KR20210024865A (ko)
CN (1) CN112434803A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11681915B2 (en) 2019-12-26 2023-06-20 Samsung Electronics Co., Ltd. Neural network method and apparatus

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11676068B1 (en) 2020-06-30 2023-06-13 Cadence Design Systems, Inc. Method, product, and apparatus for a machine learning process leveraging input sparsity on a pixel by pixel basis
US11687831B1 (en) 2020-06-30 2023-06-27 Cadence Design Systems, Inc. Method, product, and apparatus for a multidimensional processing array for hardware acceleration of convolutional neural network inference
US11651283B1 (en) * 2020-06-30 2023-05-16 Cadence Design Systems, Inc. Method, product, and apparatus for a machine learning process using dynamic rearrangement of sparse data and corresponding weights
US11823018B1 (en) 2020-06-30 2023-11-21 Cadence Design Systems, Inc. Method, product, and apparatus for a machine learning process using weight sharing within a systolic array having reduced memory bandwidth
US11615320B1 (en) 2020-06-30 2023-03-28 Cadence Design Systems, Inc. Method, product, and apparatus for variable precision weight management for neural networks
US11544213B2 (en) * 2021-03-04 2023-01-03 Samsung Electronics Co., Ltd. Neural processor
JP2024514374A (ja) * 2021-04-09 2024-04-02 エヌビディア コーポレーション データ・セットにおけるスパース性を増大させること

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7127435B2 (en) * 2001-07-03 2006-10-24 Honeywell International Inc. Distribution theory based enrichment of sparse data for machine learning
US7543010B2 (en) * 2003-11-03 2009-06-02 Board Of Regents, The University Of Texas System Modular pipeline fast Fourier transform
US10817312B2 (en) * 2013-03-14 2020-10-27 Microsoft Technology Licensing, Llc Programming model for performant computing in document-oriented storage services
KR101590896B1 (ko) 2014-11-26 2016-02-02 경북대학교 산학협력단 일반화 성능을 갖는 심화학습 장치 및 방법, 그 방법을 수행하기 위한 기록 매체 및 장치
US10846362B2 (en) 2016-03-09 2020-11-24 Nec Corporation Information processing apparatus, information processing method, data structure and program
US20180046898A1 (en) 2016-08-11 2018-02-15 Vivante Corporation Zero Coefficient Skipping Convolution Neural Network Engine
US10360163B2 (en) 2016-10-27 2019-07-23 Google Llc Exploiting input data sparsity in neural network compute units
KR20180052069A (ko) 2016-11-07 2018-05-17 한국전자통신연구원 콘볼루션 신경망 시스템 그리고 콘볼루션 신경망의 시냅스 데이터를 압축하는 방법
US20180131946A1 (en) 2016-11-07 2018-05-10 Electronics And Telecommunications Research Institute Convolution neural network system and method for compressing synapse data of convolution neural network
CN109146073B (zh) * 2017-06-16 2022-05-24 华为技术有限公司 一种神经网络训练方法和装置
US20190087713A1 (en) 2017-09-21 2019-03-21 Qualcomm Incorporated Compression of sparse deep convolutional network weights
US11693662B2 (en) * 2018-05-04 2023-07-04 Cornami Inc. Method and apparatus for configuring a reduced instruction set computer processor architecture to execute a fully homomorphic encryption algorithm
US10572409B1 (en) * 2018-05-10 2020-02-25 Xilinx, Inc. Sparse matrix processing circuitry
US11257254B2 (en) * 2018-07-20 2022-02-22 Google Llc Data compression using conditional entropy models
US11442889B2 (en) 2018-09-28 2022-09-13 Intel Corporation Dynamic deep learning processor architecture
US11341414B2 (en) * 2018-10-15 2022-05-24 Sas Institute Inc. Intelligent data curation
US20200151569A1 (en) * 2018-11-08 2020-05-14 International Business Machines Corporation Warping sequence data for learning in neural networks
US11126690B2 (en) * 2019-03-29 2021-09-21 Intel Corporation Machine learning architecture support for block sparsity

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11681915B2 (en) 2019-12-26 2023-06-20 Samsung Electronics Co., Ltd. Neural network method and apparatus

Also Published As

Publication number Publication date
JP7234185B2 (ja) 2023-03-07
CN112434803A (zh) 2021-03-02
US11875255B2 (en) 2024-01-16
EP3789892A1 (en) 2021-03-10
US20210064992A1 (en) 2021-03-04
US20240095532A1 (en) 2024-03-21
JP2021034024A (ja) 2021-03-01

Similar Documents

Publication Publication Date Title
JP7132824B2 (ja) ニューラルネットワークにおいてデコンボルーション演算を実行する装置及びその方法
KR20210024865A (ko) 데이터를 처리하는 방법 및 장치
KR102452953B1 (ko) 뉴럴 네트워크의 컨볼루션 연산을 수행하는 방법 및 장치
CN108229655B (zh) 卷积神经网络(cnn)处理方法和设备
US20200285887A1 (en) Neural network method and apparatus
KR102261768B1 (ko) 대안적인 루프 제한
JP7304148B2 (ja) ニューラルネットワークにおいてコンボリューション演算を処理する方法及びその装置
KR102452951B1 (ko) 뉴럴 네트워크의 컨볼루션 연산을 수행하는 방법 및 장치
KR20200066952A (ko) 확장 컨벌루션 연산을 수행하는 장치 및 방법
KR20200095300A (ko) 뉴럴 네트워크의 컨볼루션 연산을 처리하는 방법 및 장치
KR20210039197A (ko) 데이터를 처리하는 방법 및 장치
KR20200081044A (ko) 뉴럴 네트워크의 컨볼루션 연산을 처리하는 방법 및 장치
US11899744B2 (en) Apparatus and method of performing matrix multiplication operation of neural network
KR20220051242A (ko) 고속 희소 신경망
KR20200072307A (ko) 뉴럴 네트워크에서의 부하 균형을 위한 장치 및 방법
JP6955598B2 (ja) 複数の畳み込みウィンドウ内の画像データの並行抽出方法、装置、機器及びコンピュータ可読記憶媒体
CN112651485A (zh) 识别图像的方法和设备以及训练神经网络的方法和设备
EP3690757A1 (en) Method and apparatus with convolution neural network processing
KR20220161339A (ko) 기계 학습 작업시 개선된 메모리 압축 전달을 위한 유사도에 기초한 특징 재정렬
KR20220134035A (ko) 컨볼루션 연산을 위한 프로세싱 인 메모리 방법
KR20200072308A (ko) 뉴럴 네트워크에서 컨볼루션 연산을 수행하는 방법 및 장치
KR20210071472A (ko) 데이터를 처리하는 방법 및 장치
KR102372869B1 (ko) 인공 신경망을 위한 행렬 연산기 및 행렬 연산 방법
KR20210082970A (ko) 컨볼루션 연산을 수행하는 방법 및 장치
US11842273B2 (en) Neural network processing