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

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

Info

Publication number
KR20210039197A
KR20210039197A KR1020190121736A KR20190121736A KR20210039197A KR 20210039197 A KR20210039197 A KR 20210039197A KR 1020190121736 A KR1020190121736 A KR 1020190121736A KR 20190121736 A KR20190121736 A KR 20190121736A KR 20210039197 A KR20210039197 A KR 20210039197A
Authority
KR
South Korea
Prior art keywords
data
feature map
layer parameter
inefficiency
processing
Prior art date
Application number
KR1020190121736A
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 KR1020190121736A priority Critical patent/KR20210039197A/ko
Priority to US16/804,672 priority patent/US11188796B2/en
Priority to EP20174104.8A priority patent/EP3800585A1/en
Priority to CN202011049332.0A priority patent/CN112598120A/zh
Publication of KR20210039197A publication Critical patent/KR20210039197A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/213Feature extraction, e.g. by transforming the feature space; Summarisation; Mappings, e.g. subspace methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/217Validation; Performance evaluation; Active pattern learning techniques
    • 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/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Neurology (AREA)
  • Image Analysis (AREA)

Abstract

일 측면에 따른 데이터를 처리하는 방법은, 상기 데이터를 처리하는 하드웨어의 구성(configuration)에 기초하여 상기 데이터의 처리 중에 비 효율 구간이 존재하는지 여부를 예측하는 단계; 상기 비 효율 구간에 관련된 레이어 파라미터(layer parameter)를 조정하는 단계; 및 상기 조정된 레이어 파라미터에 기초하여 상기 데이터를 처리하는 단계;를 포함한다.

Description

데이터를 처리하는 방법 및 장치 {A method and an apparatus for processing data}
데이터를 처리하는 방법 및 장치에 관한다.
뉴럴 네트워크(neural network)는 생물학적 뇌를 모델링한 컴퓨터 과학적 아키텍쳐(computational architecture)를 참조한다. 최근 뉴럴 네트워크 기술이 발전함에 따라, 다양한 종류의 전자 시스템에서 뉴럴 네트워크 장치를 사용하여 입력 데이터를 분석하고 유효한 정보를 추출하고 있다.
뉴럴 네트워크 장치는 입력 데이터에 대한 많은 양의 연산을 수행한다. 이러한 뉴럴 네트워크 연산을 효율적으로 처리할 수 있는 기술이 연구되고 있다.
데이터를 처리하는 방법 및 장치를 제공하는데 있다. 또한, 상기 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공하는 데 있다. 해결하려는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 또 다른 기술적 과제들이 존재할 수 있다.
일 측면에 따른 데이터를 처리하는 방법은, 상기 데이터를 처리하는 하드웨어의 구성(configuration)에 기초하여 상기 데이터의 처리 중에 비 효율 구간이 존재하는지 여부를 예측하는 단계; 상기 비 효율 구간에 관련된 레이어 파라미터(layer parameter)를 조정하는 단계; 및 상기 조정된 레이어 파라미터에 기초하여 상기 데이터를 처리하는 단계;를 포함한다.
다른 측면에 따른 컴퓨터로 읽을 수 있는 기록매체는, 상술한 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체를 포함한다.
또 다른 측면에 따른 데이터를 처리하는 장치는, 메모리; 및 프로세서;를 포함하고, 상기 프로세서는, 상기 데이터를 처리하는 하드웨어의 구성(configuration)에 기초하여 상기 데이터의 처리 중에 비 효율 구간이 존재하는지 여부를 예측하고, 상기 비 효율 구간에 관련된 레이어 파라미터(layer parameter)를 조정하고, 상기 조정된 레이어 파라미터에 기초하여 상기 데이터를 처리한다.
도 1은 뉴럴 네트워크의 아키텍처를 설명하기 위한 도면이다.
도 2 및 도 3은 뉴럴 네트워크의 컨볼루션 연산의 예시들을 설명하기 위한 도면이다.
도 4는 데이터 처리 장치의 일 예를 도시한 구성도이다.
도 5는 뉴럴 네트워크 시스템의 일 예를 도시한 구성도이다.
도 6은 데이터를 처리하는 방법의 일 예를 설명하기 위한 흐름도이다.
도 7a 및 도 7b는 비 효율 구간의 일 예를 설명하기 위한 도면들이다.
도 8은 레이어 파라미터의 예들을 설명하기 위한 도면이다.
도 9는 프로세서가 커널 데이터의 사이즈를 증가시키는 일 예를 설명하기 위한 도면이다.
도 10a 및 도 10b는 출력 피처맵 데이터에 발생되는 크롭의 효과를 설명하기 위한 도면들이다.
도 11은 데이터를 처리하는 방법의 다른 예를 설명하기 위한 흐름도이다.
실시 예들에서 사용되는 용어는 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 명세서에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 명세서의 전반에 걸친 내용을 토대로 정의되어야 한다.
명세서 전체에서 어떤 부분이 어떤 구성요소를 “포함”한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다. 또한, 명세서에 기재된 “…유닛”, “…모듈” 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다.
아래에서는 첨부한 도면을 참고하여 실시 예에 대하여 상세히 설명한다. 그러나 실시 예는 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 예에 한정되지 않는다.
이하에서는 도면을 참조하여 실시 예들을 상세히 설명한다.
도 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)에 더 포함될 수 있음은 통상의 기술자에게 자명하다.
데이터 처리 장치(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)는 컨볼루션 연산을 처리하기 위해 캐시(cache) 기능을 담당하는 온-칩(on-chip) 메모리일 수 있다.
예를 들어, 내부 메모리(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) 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)는 입력 피처맵의 픽셀값들 또는 커널들의 웨이트값들과 같은 다양한 오퍼랜드(operand)들을 디스패치하기 위한 디스패처(dispatcher)를 더 포함할 수 있다. 예를 들어, 디스패처는 내부 메모리(410)에 저장되어 있는 데이터로부터 프로세싱 유닛이 수행할 연산에 필요한 픽셀값들 및 웨이트값들 등의 오퍼랜드들을 내부 메모리(410)에 디스패치한다. 그리고, 디스패처는 내부 메모리(410)에 디스패치된 오퍼랜드들을 컨볼루션 연산을 위해 프로세싱 유닛에 다시 디스패치한다.
일반적으로, 뉴럴 네트워크를 처리하기 위해서는 많은 계산량이 수반된다. 따라서, 뉴럴 네트워크를 구현하는 장치는 계산량을 줄이는 것이 중요하다. 예를 들어, 뉴럴 네트워크의 구조를 변형함으로써 계산량을 줄이거나, 보다 빠른 계산을 위하여 뉴럴 네트워크를 양자화하는 등의 뉴럴 네트워크의 경량화 기술이 연구되고 있다.
뉴럴 네트워크를 구현하는 장치의 연산의 최적화는 장치를 구현하는 하드웨어(예를 들어, GPU, NPU 등)의 이용(utilization)과 관련될 수 있다. 타일링(tiling) 방법은 장치에 포함된 캐시의 재활용을 최대화함으로써 하드웨어의 메모리 접근을 효율화하는 예이다. 그러나, 뉴럴 네트워크의 연산이 타일링의 조건에 정합되지 않아, 캐시 히트(Cache Hit)의 발생 확률이 낮아지거나 메모리의 활용이 비효율적이 되면, 하드웨어의 전체적인 이용률이 떨어져 장치의 데이터 처리에 오히려 악영향을 끼칠 수 있다.
일 실시예에 따른 데이터 처리 장치(400)는 뉴럴 네트워크를 데이터 처리 장치(400)에 적응적으로 수정한다. 예를 들어, 프로세서(420)는 데이터 처리 장치(400)에서 처리되는 데이터(예를 들어, 피처맵 데이터, 커널 데이터)의 크기(size)를 데이터 처리 장치(400)의 하드웨어의 구성(configuration)에 정합되도록 최적화할 수 있다.
프로세서(420)는 하드웨어의 구성에 기초하여 데이터의 처리 중에 비 효율 구간이 존재하는지 여부를 예측하고, 비 효율 구간에 관련된 레이어 파라미터(layer parameter)를 조정한다. 그리고, 프로세서(420)는 레이어 파라미터에 기초하여 데이터를 처리한다.
프로세서(420)가 레이어 파라미터를 조정함으로써 처리될 데이터의 크기가 하드웨어의 구성에 정합될 수 있고, 이에 따라 데이터가 처리되는 과정 중의 비 효율 구간(즉, 연산이 비 효율적으로 수행되는 구간)이 개선될 수 있다. 또한, 프로세서(420)가 레이어 파라미터를 조정함으로써 피처맵 데이터가 크롭(crop)되는 것과 동일한 효과가 발생될 수 있다.
도 5는 뉴럴 네트워크 시스템의 일 예를 도시한 구성도이다.
도 5를 참조하면, 뉴럴 네트워크 시스템(5)은 외부 메모리(510) 및 데이터 처리 장치(520)를 포함한다. 데이터 처리 장치(520)는 내부 메모리(521) 및 프로세서(522)를 포함한다. 도 5의 데이터 처리 장치(520)는 도 4의 데이터 처리 장치(400)와 대응된다. 따라서, 이하에서는 데이터 처리 장치(520)에 대한 구체적인 설명을 생략한다.
도 5에 도시된 뉴럴 네트워크 시스템(5)에는 실시예와 관련된 구성요소들만이 도시되어 있다. 따라서, 도 5에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 뉴럴 네트워크 시스템(5)에 더 포함될 수 있음을 통상의 기술자라면 이해할 수 있다.
외부 메모리(510)는 데이터 처리 장치(520) 내에서 처리되는 각종 데이터들을 저장한다. 예를 들어, 프로세서(522)는 처리될 데이터들을 소정의 크기로 외부 메모리(510)로부터 독출하고, 독출된 데이터를 내부 메모리(521)에 저장할 수 있다. 또한, 프로세서(522)는 기 처리된 데이터들을 내부 메모리(521)를 거쳐 외부 메모리(510)에 저장할 수 있다.
예를 들어, 외부 메모리(510)는 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) HDD(hard disk drive), SSD(solid state drive), 또는 플래시 메모리를 포함할 수 있다.
이하, 도 6 내지 도 11을 참조하여, 데이터 처리 장치(400, 520)가 레이어 파라미터를 조정하고, 조정된 레이어 파라미터에 기초하여 데이터를 처리하는 예를 설명한다.
도 6은 데이터를 처리하는 방법의 일 예를 설명하기 위한 흐름도이다.
도 6을 참조하면, 데이터를 처리하는 방법은 도 4 및 도 5에 도시된 데이터 처리 장치(400, 520)에서 시계열적으로 처리되는 단계들로 구성된다. 따라서, 이하에서 생략된 내용이라 하더라도 도 4 및 도 5에 도시된 데이터 처리 장치(400, 520)에 관하여 이상에서 기술된 내용은 도 6의 데이터를 처리하는 방법에도 적용됨을 알 수 있다.
610 단계에서, 프로세서(420, 522)는 데이터를 처리하는 하드웨어의 구성에 기초하여 데이터의 처리 중에 비 효율 구간이 존재하는지 여부를 예측한다.
하드웨어의 구성은 내부 메모리(410, 521)에 입력되는 데이터의 크기에 대응한다. 예를 들어, 프로세서(420, 522)는 외부 메모리(510)로부터 소정 크기의 데이터를 독출하여 내부 메모리(410, 521)에 저장할 수 있다. 여기에서, 외부 메모리(510)로부터 독출되는 소정 크기의 데이터는 타일(tile)의 크기에 대응한다.
프로세서(420, 522)가 데이터를 처리함에 있어서, 프로세서(420, 522)는 내부 메모리(410, 521)에 저장된 데이터를 이용할 수 있다. 예를 들어, 프로세서(420, 522)가 내부 메모리(410, 521)에 저장된 데이터를 재활용하는 횟수가 늘어날수록, 프로세서(420, 522)가 외부 메모리(510)에 접근하는 횟수가 감소된다. 따라서, 데이터 처리 장치(400. 520)의 연산 속도가 증가될 수 있다. 상술한 바와 같이, 프로세서(420, 522)가 내부 메모리(410, 521)에 소정 크기의 데이터를 저장하고, 저장된 데이터를 이용(재활용 포함)하는 것을 타일링(tiling) 방법이라고 한다.
프로세서(420, 522)는 데이터의 처리 중에 비 효율 구간이 존재하는지 여부를 예측한다. 여기에서, 비 효율 구간은 데이터의 처리(연산)가 비 효율적으로 수행되는 구간으로서, 내부 메모리(410, 521)에 저장된 데이터의 크기(즉, 타일의 크기)에 의존할 수 있다. 예를 들어, 프로세서(420, 522)는 데이터의 처리가 진행되는 과정 중 내부 메모리(410, 521)에 저장된 데이터의 재활용 가능성이 낮은 구간을 비 효율 구간으로 결정할 수 있다.
만약, 프로세서(420, 522)가 뉴럴 네트워크에 대응하는 데이터를 처리하는 경우, 프로세서(420, 522)는 뉴럴 네트워크를 구성하는 복수의 레이어들 각각에 대한 레이어 파라미터에 기초하여 비 효율 구간을 예측할 수 있다. 이하, 프로세서(420, 522)가 비 효율 구간의 존재 여부를 예측하는 예를 도 7 및 도 8을 참조하여 설명한다.
도 7a 및 도 7b는 비 효율 구간의 일 예를 설명하기 위한 도면들이다.
도 7a에는 데이터 처리 장치(400, 520)에 입력된 데이터(710)가 도시되어 있다. 여기에서, 데이터(710)는 프로세서(420, 522)에 의하여 처리될 데이터를 의미한다. 예를 들어, 데이터 처리 장치(400, 520)가 뉴럴 네트워크를 구현한 장치라고 가정하면, 데이터(710)는 피처맵 데이터 또는 커널 데이터일 수 있다. 또한, 도 7a에는 15개의 타일들(730)이 도시되어 있다. 예를 들어, 타일들(730)은 내부 메모리(410, 521)에 저장된 데이터로서, 데이터(710)를 처리하는데 이용되는 데이터일 수 있다.
도 7a를 참조하면, 데이터(710)의 대부분은 8개의 타일들과 겹쳐지나, 데이터(710)의 일부(711)는 8개의 타일들을 벗어나는 것으로 도시되어 있다. 따라서, 데이터(710)의 전부를 커버하기 위해서는 총 15개의 타일들이 필요하다. 즉, 데이터(710)의 일부(711)로 인하여, 프로세서(420, 522)가 데이터(710)를 처리하기 위해서는 8개가 아닌 15개의 타일들에 대응하는 데이터가 캐시에 저장되어야 한다. 만약, 내부 메모리(410, 521)에 8개의 타일들에 대응하는 데이터가 저장될 수 있다고 가정하면, 프로세서(420, 522)가 데이터(710)를 처리하기 위한 동작 사이클(operation cycle)이 증가할 수 밖에 없다.
도 7b에는 데이터 처리 장치(400, 520)에 입력된 데이터(720)가 도시되어 있고, 데이터(720)의 전부는 8개의 타일들과 겹쳐지는 것으로 도시되어 있다.
만약, 내부 메모리(410, 521)에 8개의 타일들에 대응하는 데이터가 저장될 수 있다고 가정하면, 프로세서(420, 522)가 데이터(720)를 처리하기 위한 동작 사이클은 감소될 수 있다. 즉, 데이터 처리 장치(400, 520)의 하드웨어 구성에 정합되는 데이터(720)가 입력되는 경우, 프로세서(420, 522)가 데이터(720)를 처리하는 중 비 효율 구간은 발생하지 않는다.
도 7a 및 도 7b를 참조하여 상술한 바와 같이, 데이터 처리 장치(400, 520)에 데이터(720)가 입력된 경우의 동작 사이클의 수는 데이터(710)가 입력된 경우의 동작 사이클의 수에 비하여 적다. 따라서, 프로세서(420, 522)는 데이터 처리 장치(400, 520)의 하드웨어의 구성(예를 들어, 내부 메모리(410, 521))에 정합되도록 입력 데이터를 조작(manipulation)한다. 만약 프로세서(420, 522)가 뉴럴 네트워크에 대응하는 데이터를 처리하는 경우, 프로세서(420, 522)는 입력 데이터에 대응하는 레이어 파라미터를 조정함으로써, 입력 데이터를 조정할 수 있다.
이하, 도 8을 참조하여, 프로세서(420, 522)가 조정하는 레이어 파라미터의 예들을 설명한다.
도 8은 레이어 파라미터의 예들을 설명하기 위한 도면이다.
도 8에는 뉴럴 네트워크(800)의 일 예가 도시되어 있다. 설명의 편의를 위하여, 뉴럴 네트워크(800)는 n개의 입력 데이터가 t개의 레이어들을 통과함으로써 m개의 출력 데이터가 생성되는 것으로 도시되어 있다(n, t, m은 자연수). 예를 들어, 뉴럴 네트워크(800)에 의하면, 최초의 입력 피처맵 데이터(i0, …, in)(즉, 입력 데이터)가 적어도 하나의 레이어를 거치면서 연산이 수행됨에 따라 최종의 출력 피처맵 데이터(o0, … ,om)(즉, 출력 데이터)가 생성될 수 있다. 여기에서, 연산은 각 레이어에서의 입력 피처맵 데이터와 커널 데이터의 곱의 합 연산 및 곱의 합 연산 결과에 ReLU 활성 함수를 적용함으로써 출력 피처맵 데이터를 생성하는 과정을 포함할 수 있다.
예를 들어, 최초의 입력 피처맵 데이터(i0, …, in)는 커널 데이터와의 연산을 통하여 중간의 출력 피처맵 데이터(a0, …, ak)가 생성된다. 중간의 출력 피처맵 데이터(a0, …, ak)는 그 다음 레이어에서의 입력 피처맵 데이터가 되며, 상술한 연산이 재차 수행된다. 이러한 과정을 거쳐, 최종적으로, 최종의 출력 피처맵 데이터(o0, … ,om)가 생성된다.
뉴럴 네트워크(800)를 구성하는 제1 레이어 내지 제t 레이어 각각은 적어도 하나의 레이어 파라미터를 포함한다. 예를 들어, 레이어 파라미터는 해당 레이어에서의 커널 데이터(kernel data)의 크기, 패딩(padding)의 수 및 스트라이드(stride)의 수 중 적어도 하나를 포함할 수 있다.
레이어 파라미터는 뉴럴 네트워크(800)의 설계에 따라 기 설정되어 있다. 다시 말해, 제1 레이어 내지 제t 레이어 각각에 대한 커널 데이터(kernel data)의 크기, 패딩(padding)의 수 및 스트라이드(stride)의 수는 기 설정되어 있다. 따라서, 프로세서(420, 522)는 기 설정된 레이어 파라미터를 이용하여 뉴럴 네트워크(800)에서의 비 효율 구간을 예측할 수 있다.
도 7a 및 도 7b를 참조하여 상술한 바와 같이, 입력 데이터(예를 들어, 입력 피처맵 데이터)의 크기가 데이터 처리 장치(400, 520)의 하드웨어의 구성(예를 들어, 8개의 타일들의 크기)와 정합되는 경우, 입력 데이터를 처리하기 위한 동작 사이클이 최소화될 수 있다.
따라서, 프로세서(420, 522)는 기 설정된 레이어 파라미터 및 데이터 처리 장치(400, 520)의 하드웨어의 구성(예를 들어, 8개의 타일들의 크기)을 고려하여, 레이어들(제1 레이어 내지 제t 레이어)에 비 효율 구간이 존재하는지 여부를 예측한다. 다시 말해, 프로세서(420, 522)는 레이어들(제1 레이어 내지 제t 레이어) 각각의 동작 사이클의 수에 기초하여 비 효율 구간이 존재하는지 여부를 판단한다.
다시 도 6을 참조하면, 620 단계에서, 프로세서(420, 522)는 비 효율 구간에 관련된 레이어 파라미터를 조정한다.
일 예로서, 프로세서(420, 522)는 비 효율 구간에 관련된 커널 데이터의 크기를 증가시키는 방향으로 레이어 파라미터를 조정할 수 있다. 다른 예로서, 프로세서(420, 522)는 비 효율 구간에 관련된 피처맵 데이터의 패딩의 수를 감소시키는 방향으로 레이어 파라미터를 조정할 수 있다. 또 다른 예로서, 프로세서(420, 522)는 비 효율 구간에 관련된 피처맵 데이터의 스트라이드의 수를 증가시키는 방향으로 레이어 파라미터를 조정할 수 있다.
도 8을 참조하여 상술한 바와 같이, 레이어 파라미터는 해당 레이어에서의 커널 데이터의 크기, 패딩의 수 및/또는 스트라이드의 수를 포함한다. 예를 들어, 프로세서(420, 522)는 기 설정된 레이어 파라미터를 이용하여 뉴럴 네트워크를 구성하는 레이어들 각각에 대하여 출력 피처맵 데이터를 확인할 수 있다. 예를 들어, 프로세서(420, 522)는 아래의 수학식 1에 따라 출력 피처맵 데이터를 확인할 수 있다.
Figure pat00001
상술한 수학식 1에서, Oconv는 출력 피처맵 데이터를 의미한다. 또한, K는 커널 데이터의 크기를 의미하고, P는 패딩의 수를 의미하고, S는 스트라이드의 수를 의미한다.
특정 레이어의 출력 피처맵 데이터의 크기가 하드웨어의 구성에 비하여 크기 때문에 비 효율 구간이 발생될 수 있다. 예를 들어, 특정 레이어의 출력 피처맵 데이터는 다음 레이어의 입력 피처맵 데이터가 되므로, 특정 레이어의 출력 피처맵 데이터가 하드웨어의 구성에 비하여 큰 경우에 비 효율 구간이 발생될 수 있다.
이 경우, 프로세서(420, 522)는 레이어 파라미터를 조정함으로써, 출력 피처맵 데이터의 크기를 줄일 수 있다. 상술한 수학식 1을 참조하면, 프로세서(420, 522)는 커널 데이터의 크기를 증가시키거나, 패딩의 수를 감소시키거나, 스트라이드의 수를 증가시킴으로써 출력 피처맵 데이터의 크기를 줄일 수 있다.
예를 들어, 프로세서(420, 522)는 커널 데이터에 제로 패딩(zero padding)을 수행함으로써 커널 데이터의 사이즈를 증가시킬 수 있다. 이하, 도 9를 참조하여, 프로세서(420, 522)가 커널 데이터의 사이즈를 증가시키는 예를 설명한다.
도 9는 프로세서가 커널 데이터의 사이즈를 증가시키는 일 예를 설명하기 위한 도면이다.
도 9에는 입력 피처맵 데이터(910) 및 커널 데이터(920)의 일 예가 도시되어 있다. 한편, 도 9에 도시된 입력 피처맵 데이터(910), 출력 피처맵 데이터(930) 및 제로 패딩된 커널 데이터(921)는 일 예에 불과하다. 즉, 제로 패딩의 요지를 벗어나지 않는 범위 내에서 입력 피처맵 데이터(910), 출력 피처맵 데이터(930) 및 제로 패딩된 커널 데이터(921)는 변경될 수 있다.
프로세서(420, 522)는 비 효율 구간에서의 커널 데이터(920)의 크기를 증가시킬 수 있다. 이에 따라, 출력 피처맵 데이터(930)의 크기가 감소될 수 있다.
프로세서(420, 522)는 커널 데이터(920)에 제로 패딩을 수행함으로써 커널 데이터(920)의 크기를 증가시킬 수 있다. 여기에서, 제로 패딩은 커널 데이터(920)에 0을 삽입하는 것을 의미한다.
도 9의 입력 피처맵 데이터(910)가 8ⅹ8 매트릭스이고, 커널 데이터(920)가 3ⅹ3 매트릭스라고 가정하면, 출력 피처맵 데이터(930)는 6ⅹ6 매트릭스로 생성된다.
프로세서(420, 522)는 커널 데이터(920)에 x좌표 성분 및 y좌표 성분으로 각각 2개씩 0을 삽입함으로써, 5ⅹ5 매트릭스인 커널 데이터(921)을 생성할 수 있다. 이 경우, 입력 피처맵 데이터(910)과 제로 패딩된 커널 데이터(921)의 곱의 합 연산이 수행되면, 출력 피처맵 데이터(931)는 4ⅹ4 매트릭스로 출력된다. 따라서, 출력 피처맵 데이터(931)의 크기가 출력 피처맵 데이터(930)의 크기보다 감소된다. 즉, 프로세서(420, 522)는 커널 데이터(920)의 크기를 증가시킴으로써, 결과적으로 출력 피처맵 데이터(931)의 크기를 감소시킬 수 있다.
도 9에서는 설명의 편의를 위하여, 커널 데이터(920)에 x좌표 성분 및 y좌표 성분으로 각각 2개씩 0이 삽입되는 것으로 기술하였다. 그러나, 커널 데이터(920)에 0이 삽입되는 수는 데이터 처리 장치(400, 520)의 하드웨어의 구성에 따라 달라질 수 있다. 다시 말해, 제로 패딩된 커널 데이터(921)의 크기는 비 효율 구간이 제거될 수 있도록 조정될 수 있다.
또한, 뉴럴 네트워크의 적절한 출력 데이터가 확보되기 위하여, 입력 피처맵 데이터(910)에도 제로 패딩이 수행될 수 있음은 통상의 기술자라면 쉽게 이해할 수 있다.
630 단계에서, 프로세서(420, 522)는 조정된 레이어 파라미터에 기초하여 데이터를 처리한다.
예를 들어, 프로세서(420, 522)는 조정된 커널 데이터와 입력 피처맵 데이터의 곱의 합 연산을 수행할 수 있다. 이에 따라, 뉴럴 네트워크가 처리되는 과정에서의 동작 사이클이 최소화되고, 데이터 처리 장치(400, 520)의 동작 효율이 증가할 수 있다.
한편, 조정된 커널 데이터와 입력 피처맵 데이터가 연산됨에 따라, 출력 피처맵 데이터가 크롭(crop)되는 것과 동일한 효과가 발생될 수 있다. 여기에서, 크롭은 출력 피처맵 데이터에서 불필요한 데이터가 제거되는 것을 의미한다. 이하, 도 10을 참조하여, 출력 피처맵 데이터가 크롭되는 효과를 구체적으로 설명한다.
도 10a 및 도 10b는 출력 피처맵 데이터에 발생되는 크롭의 효과를 설명하기 위한 도면들이다.
도 10a에는 입력 피처맵 데이터(1010), 커널 데이터(1020) 및 출력 피처맵 데이터(1030)가 도시되어 있다. 뉴럴 네트워크의 적절한 출력 데이터가 확보되기 위하여, 입력 피처맵 데이터(1010)는 제로 패딩이 수행된 것일 수도 있다.
입력 피처맵 데이터(1010)와 커널 데이터(1020)가 연산됨에 따라 출력 피처맵 데이터(1030)가 생성될 수 있다. 예를 들어, 8ⅹ8 매트릭스의 입력 피처맵 데이터(1010)와 3ⅹ3 매트릭스의 커널 데이터(1020)의 곱의 합 연산이 수행됨에 따라 6ⅹ6 매트릭스의 출력 피처맵 데이터(1030)가 생성될 수 있다.
이 경우, 출력 피처맵 데이터(1030)에는 불필요한 정보가 포함되어 있을 수 있다. 예를 들어, 입력 피처맵 데이터(1010)가 제로 패딩이 수행된 것일 경우, 출력 피처맵 데이터(1030)의 최외각 엘리먼트들은 불필요한 정보에 해당될 수 있다. 따라서, 일반적으로, 출력 피처맵 데이터(1030)의 최외각 엘리먼트들을 삭제하는 크롭이 수행됨으로써, 진정한 출력 피처맵 데이터(1031)가 생성될 수 있다.
한편, 도 10b에는 입력 피처맵 데이터(1010)와 조정된 커널 데이터(1040)가 도시되어 있다. 예를 들어, 조정된 커널 데이터(1040)는 커널 데이터(1020)에 제로 패딩이 수행될 것일 수 있다. 도 10b를 참조하면, 8ⅹ8 매트릭스의 입력 피처맵 데이터(1010)와 5ⅹ5 매트릭스의 조정된 커널 데이터(1040)의 곱의 합 연산이 수행됨에 따라 4ⅹ4 매트릭스의 출력 피처맵 데이터(1050)가 생성될 수 있다.
도 10a와 도 10b를 참조하면, 진정한 출력 피처맵 데이터(1031)와 출력 피처맵 데이터(1050)가 동일한 것을 확인할 수 있다. 다시 말해, 커널 데이터(1040)의 사이즈를 조정하고, 조정된 커널 데이터(1040)와 입력 피처맵 데이터(1010)가 연산됨에 따라, 출력 피처맵 데이터가 크롭된 결과(1031)와 동일한 데이터가 생성될 수 있다.
도 11은 데이터를 처리하는 방법의 다른 예를 설명하기 위한 흐름도이다.
도 11을 참조하면, 데이터를 처리하는 방법은 도 4 및 도 5에 도시된 데이터 처리 장치(400, 520)에서 시계열적으로 처리되는 단계들로 구성된다. 따라서, 이하에서 생략된 내용이라 하더라도 도 4 및 도 5에 도시된 데이터 처리 장치(400, 520)에 관하여 이상에서 기술된 내용은 도 11의 데이터를 처리하는 방법에도 적용됨을 알 수 있다.
1110 단계에서, 프로세서(420, 522)는 뉴럴 네트워크를 구성하는 레이어 별로 데이터 처리 시간을 연산한다.
예를 들어, 프로세서(420, 522)는 레이어 별로 기 설정된 레이어 파라미터를 이용하여 데이터의 처리 시간을 연산할 수 있다. 프로세서(420, 522)는 내부 메모리(410, 521)에 저장된 데이터(예를 들어, 타일)를 활용하여 출력 피처맵 데이터를 연산할 수 있다. 이때, 내부 메모리(410, 521)에 저장된 데이터의 활용률(재활용 포함)이 감소될수록, 프로세서(420, 522)가 외부 메모리(510)에 접속하는 횟수가 증가한다. 이는, 프로세서(420, 522)의 데이터 처리 시간의 증가를 야기한다.
따라서, 프로세서(420, 522)가 기 설정된 레이어 파라미터를 이용하여 뉴럴 네트워크에 대응하는 데이터를 처리하는 시간을 연산함으로써, 비 효율 구간이 존재하는지 여부가 확인될 수 있다. 다시 말해, 프로세서(420, 522)는 데이터 처리 장치(400, 520)의 하드웨어의 구성에 기초하여, 데이터의 처리 중에 비 효율 구간이 존재하는지 여부를 확인할 수 있다.
1120 단계에서, 프로세서(420, 522)는 데이터의 처리 중에 비 효율 구간이 존재하는지 여부를 판단한다. 만약, 비 효율 구간이 존재하는 경우에는 1130 단계로 진행하고, 그렇지 않은 경우에는 1160 단계로 진행한다.
1130 단계에서, 프로세서(420, 522)는 비 효율 구간의 레이어 파라미터를 조정한다.
1110 단계에서 확인되는 비 효율 구간은 데이터가 처리됨에 있어서 불필요한 동작 사이클이 발생되는 구간일 수 있다. 또한, 도 7a 및 도 7b를 참조하여 상술한 바와 같이, 입력 데이터(예를 들어, 입력 피처맵 데이터)의 크기가 데이터 처리 장치(400, 520)의 하드웨어의 구성(타일들의 크기)와 정합되는 경우, 입력 데이터를 처리하기 위한 동작 사이클의 수가 최소화될 수 있다.
프로세서(420, 522)는 입력 데이터의 크기가 데이터 처리 장치(400, 520)의 하드웨어의 구성에 정합되도록 레이어 파라미터를 조정한다. 일 예로서, 프로세서(420, 522)는 비 효율 구간에 관련된 커널 데이터의 크기를 증가시키는 방향으로 레이어 파라미터를 조정할 수 있다. 다른 예로서, 프로세서(420, 522)는 비 효율 구간에 관련된 피처맵 데이터의 패딩의 수를 감소시키는 방향으로 레이어 파라미터를 조정할 수 있다. 또 다른 예로서, 프로세서(420, 522)는 비 효율 구간에 관련된 피처맵 데이터의 스트라이드의 수를 증가시키는 방향으로 레이어 파라미터를 조정할 수 있다.
1140 단계에서, 프로세서(420, 522)는 조정된 레이어 파라미터에 기초하여 비 효율 구간에서의 데이터의 처리가 개선되는지 여부를 판단한다.
프로세서(420, 522)는 조정된 레이어 파라미터에 기초하여 데이터의 처리 시간을 연산한다. 그리고, 프로세서(420, 522)는 1110 단계에서 연산된 처리 시간과 1140 단계에서 연산된 처리 시간을 비교함으로써 비 효율 구간에서의 데이터의 처리가 개선되는지 여부를 판단할 수 있다. 예를 들어, 1110 단계의 동작 사이클의 수에 비하여 1140 단계의 동작 사이클의 수가 감소된 경우, 프로세서(420, 522)는 비 효율 구간에서의 데이터의 처리가 개선되었다고 판단할 수 있다.
만약, 비 효율 구간에서의 데이터의 처리가 개선된 경우에는 1150 단계로 진행하고, 그렇지 않은 경우에는 1130 단계로 진행한다.
1150 단계에서, 프로세서(420, 522)는 조정된 레이어 파라미터로 데이터를 처리한다. 예를 들어, 프로세서(420, 522)는 조정된 커널 데이터와 입력 피처맵 데이터의 곱의 합 연산을 수행할 수 있다. 이에 따라, 뉴럴 네트워크가 처리되는 과정에서의 동작 사이클이 최소화되고, 데이터 처리 장치(400, 520)의 동작 효율이 증가할 수 있다. 또한, 조정된 커널 데이터와 입력 피처맵 데이터가 연산됨에 따라, 출력 피처맵 데이터가 크롭되는 것과 동일한 효과가 발생될 수 있다.
1160 단계에서, 프로세서(420, 522)는 기 설정된 레이어 파라미터로 데이터를 처리한다. 예를 들어, 프로세서(420, 522)는 기 설정된 레이어 파라미터와 입력 피처맵 데이터의 곱의 합 연산을 수행할 수 있다.
상술한 바에 따르면, 데이터 처리 장치(400, 520)가 레이어 파라미터를 조정함으로써 처리될 데이터의 크기가 하드웨어의 구성에 정합될 수 있고, 이에 따라 데이터가 처리되는 과정 중의 비 효율 구간(즉, 연산이 비 효율적으로 수행되는 구간)이 개선될 수 있다. 또한, 데이터 처리 장치(400, 520)가 레이어 파라미터를 조정함으로써 피처맵 데이터가 크롭되는 것과 동일한 효과가 발생될 수 있다.
한편, 상술한 방법은 컴퓨터에서 실행될 수 있는 프로그램으로 작성 가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 또한, 상술한 방법에서 사용된 데이터의 구조는 컴퓨터로 읽을 수 있는 기록매체에 여러 수단을 통하여 기록될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 램, USB, 플로피 디스크, 하드 디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등)와 같은 저장매체를 포함한다.
본 실시예와 관련된 기술 분야에서 통상의 지식을 가진 자는 상기된 기재의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 방법들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 하며, 권리 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점을 포함하는 것으로 해석되어야 할 것이다.
400: 데이터 처리 장치
410: 내부 메모리
420: 프로세서

Claims (23)

  1. 데이터를 처리하는 방법에 있어서,
    상기 데이터를 처리하는 하드웨어의 구성(configuration)에 기초하여 상기 데이터의 처리 중에 비 효율 구간이 존재하는지 여부를 예측하는 단계;
    상기 비 효율 구간에 관련된 레이어 파라미터(layer parameter)를 조정하는 단계; 및
    상기 조정된 레이어 파라미터에 기초하여 상기 데이터를 처리하는 단계;를 포함하는, 방법.
  2. 제 1 항에 있어서,
    상기 하드웨어의 구성은 메모리(memory)에 저장되는 데이터의 크기에 대응하는, 방법.
  3. 제 1 항에 있어서,
    상기 레이어 파라미터는 커널 데이터(kernel data)의 크기, 패딩(padding)의 수 및 스트라이드(stride)의 수 중 적어도 하나를 포함하는, 방법.
  4. 제 1 항에 있어서,
    상기 조정하는 단계는 상기 비 효율 구간에 관련된 상기 커널 데이터의 크기를 증가시킴으로써 상기 레이어 파라미터를 조정하는, 방법.
  5. 제 4 항에 있어서,
    상기 조정하는 단계는 상기 커널 데이터에 제로 패딩(zero padding)을 수행함으로써 상기 커널 데이터의 크기를 증가시키는, 방법.
  6. 제 1 항에 있어서,
    상기 조정하는 단계는 상기 비 효율 구간에 관련된 피처맵 데이터의 상기 패딩의 수를 감소시킴으로써 상기 레이어 파라미터를 조정하는, 방법.
  7. 제 1 항에 있어서,
    상기 조정하는 단계는 상기 비 효율 구간에 관련된 피처맵 데이터의 상기 스트라이드의 수를 증가시킴으로써 상기 레이어 파라미터를 조정하는, 방법.
  8. 제 1 항에 있어서,
    상기 예측하는 단계는 상기 데이터가 처리될 복수의 레이어(layer)들 각각에 대응하는 기 설정된 파라미터에 기초하여 상기 비 효율 구간이 존재하는지 여부를 판단하는, 방법.
  9. 제 8 항에 있어서,
    상기 예측하는 단계는 상기 복수의 레이어들 각각의 동작 사이클(operation cycle)의 수에 기초하여 상기 비 효율 구간이 존재하는지 여부를 판단하는, 방법.
  10. 제 1 항에 있어서,
    상기 조정된 레이어 파라미터에 기초하여 상기 비 효율 구간에서의 상기 데이터의 처리가 개선되는지 여부를 판단하는 단계;를 더 포함하는 방법.
  11. 제 1 항에 있어서,
    상기 데이터는 뉴럴 네트워크(neural network)에 대응하는 데이터를 포함하는, 방법.
  12. 제 1 항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  13. 데이터를 처리하는 장치에 있어서,
    메모리; 및
    프로세서;를 포함하고,
    상기 프로세서는,
    상기 데이터를 처리하는 하드웨어의 구성(configuration)에 기초하여 상기 데이터의 처리 중에 비 효율 구간이 존재하는지 여부를 예측하고, 상기 비 효율 구간에 관련된 레이어 파라미터(layer parameter)를 조정하고, 상기 조정된 레이어 파라미터에 기초하여 상기 데이터를 처리하는, 장치.
  14. 제 13 항에 있어서,
    상기 하드웨어의 구성은 상기 메모리에 저장되는 데이터의 크기에 대응하는, 장치.
  15. 제 13 항에 있어서,
    상기 레이어 파라미터는 커널 데이터(kernel data)의 크기, 패딩(padding)의 수 및 스트라이드(stride)의 수 중 적어도 하나를 포함하는, 장치.
  16. 제 13 항에 있어서,
    상기 프로세서는 상기 비 효율 구간에 대응하는 커널 데이터의 사이즈를 늘림으로써 상기 레이어 파라미터를 조정하는, 장치.
  17. 제 16 항에 있어서,
    상기 프로세서는 상기 커널 데이터에 제로 패딩(zero padding)을 수행함으로써 상기 커널 데이터의 사이즈를 증가시키는, 장치.
  18. 제 13 항에 있어서,
    상기 프로세서는 상기 비 효율 구간에 대응하는 피처맵 데이터의 패딩의 수를 감소시킴으로써 상기 레이어 파라미터를 조정하는, 장치.
  19. 제 13 항에 있어서,
    상기 프로세서는 상기 비 효율 구간에 대응하는 피처맵 데이터의 스트라이드의 수를 증가시킴으로써 상기 레이어 파라미터를 조정하는, 장치.
  20. 제 13 항에 있어서,
    상기 프로세서는 상기 데이터가 처리될 복수의 레이어(layer)들 각각에 대응하는 기 설정된 파라미터에 기초하여 상기 비 효율 구간이 존재하는지 여부를 판단하는, 장치.
  21. 제 20 항에 있어서,
    상기 프로세서는 상기 복수의 레이어들 각각의 동작 사이클(operation cycle)의 수에 기초하여 상기 비 효율 구간이 존재하는지 여부를 판단하는, 장치.
  22. 제 13 항에 있어서,
    상기 프로세서는 상기 조정된 레이어 파라미터에 기초하여 상기 비 효율 구간에서의 상기 데이터의 처리가 개선되는지 여부를 판단하는, 장치.
  23. 제 13 항에 있어서,
    상기 장치는 뉴럴 네트워크(neural network)에 대응하는 데이터를 처리하는, 장치.
KR1020190121736A 2019-10-01 2019-10-01 데이터를 처리하는 방법 및 장치 KR20210039197A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020190121736A KR20210039197A (ko) 2019-10-01 2019-10-01 데이터를 처리하는 방법 및 장치
US16/804,672 US11188796B2 (en) 2019-10-01 2020-02-28 Method and apparatus with data processing
EP20174104.8A EP3800585A1 (en) 2019-10-01 2020-05-12 Method and apparatus with data processing
CN202011049332.0A CN112598120A (zh) 2019-10-01 2020-09-29 数据处理的方法和设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190121736A KR20210039197A (ko) 2019-10-01 2019-10-01 데이터를 처리하는 방법 및 장치

Publications (1)

Publication Number Publication Date
KR20210039197A true KR20210039197A (ko) 2021-04-09

Family

ID=70682591

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190121736A KR20210039197A (ko) 2019-10-01 2019-10-01 데이터를 처리하는 방법 및 장치

Country Status (4)

Country Link
US (1) US11188796B2 (ko)
EP (1) EP3800585A1 (ko)
KR (1) KR20210039197A (ko)
CN (1) CN112598120A (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111222561B (zh) * 2019-12-31 2023-06-09 深圳云天励飞技术股份有限公司 图像识别神经网络处理方法、装置与系统
US11227207B1 (en) * 2021-03-29 2022-01-18 SambaNova Systems, Inc. Lossless tiling in convolution networks—section boundaries
US11250061B1 (en) 2021-03-29 2022-02-15 SambaNova Systems, Inc. Lossless tiling in convolution networks—read-modify-write in backward pass
US11263170B1 (en) 2021-03-29 2022-03-01 SambaNova Systems, Inc. Lossless tiling in convolution networks—padding before tiling, location-based tiling, and zeroing-out
US11195080B1 (en) 2021-03-29 2021-12-07 SambaNova Systems, Inc. Lossless tiling in convolution networks—tiling configuration

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008067676A1 (en) * 2006-12-08 2008-06-12 Medhat Moussa Architecture, system and method for artificial neural network implementation
US9786036B2 (en) * 2015-04-28 2017-10-10 Qualcomm Incorporated Reducing image resolution in deep convolutional networks
KR102631381B1 (ko) 2016-11-07 2024-01-31 삼성전자주식회사 컨볼루션 신경망 처리 방법 및 장치
KR102642853B1 (ko) 2017-01-05 2024-03-05 한국전자통신연구원 컨볼루션 회로, 그것을 포함하는 어플리케이션 프로세서 및 그것의 동작 방법
KR102457463B1 (ko) 2017-01-16 2022-10-21 한국전자통신연구원 희소 파라미터를 사용하는 압축 신경망 시스템 및 그것의 설계 방법
KR102606825B1 (ko) 2017-09-13 2023-11-27 삼성전자주식회사 뉴럴 네트워크 모델을 변형하는 뉴럴 네트워크 시스템, 이를 포함하는 어플리케이션 프로세서 및 뉴럴 네트워크 시스템의 동작방법
US10482337B2 (en) 2017-09-29 2019-11-19 Infineon Technologies Ag Accelerating convolutional neural network computation throughput
US20190311258A1 (en) * 2018-04-05 2019-10-10 Microsoft Technology Licensing, Llc Data dependent model initialization
CN109002885A (zh) 2018-07-24 2018-12-14 济南浪潮高新科技投资发展有限公司 一种卷积神经网络池化单元及池化计算方法
US11379713B2 (en) * 2018-12-08 2022-07-05 Apical Limited Neural network processing
US11687761B2 (en) * 2018-12-11 2023-06-27 Amazon Technologies, Inc. Improper neural network input detection and handling
US20200226451A1 (en) * 2019-01-11 2020-07-16 Samsung Electronics Co., Ltd. Method and apparatus with neural network layer contraction
US11048935B2 (en) * 2019-01-28 2021-06-29 Adobe Inc. Generating shift-invariant neural network outputs
US11698529B2 (en) * 2019-07-09 2023-07-11 Meta Platforms Technologies, Llc Systems and methods for distributing a neural network across multiple computing devices
KR20210032140A (ko) * 2019-09-16 2021-03-24 삼성전자주식회사 뉴럴 네트워크에 대한 프루닝을 수행하는 방법 및 장치

Also Published As

Publication number Publication date
US11188796B2 (en) 2021-11-30
US20210097347A1 (en) 2021-04-01
CN112598120A (zh) 2021-04-02
EP3800585A1 (en) 2021-04-07

Similar Documents

Publication Publication Date Title
JP7132824B2 (ja) ニューラルネットワークにおいてデコンボルーション演算を実行する装置及びその方法
KR20210039197A (ko) 데이터를 처리하는 방법 및 장치
KR102315346B1 (ko) 하드웨어에서의 평균 풀링의 수행
JP7329533B2 (ja) 演算を加速するための方法および加速器装置
KR102452953B1 (ko) 뉴럴 네트워크의 컨볼루션 연산을 수행하는 방법 및 장치
JP7304148B2 (ja) ニューラルネットワークにおいてコンボリューション演算を処理する方法及びその装置
CN108073981B (zh) 处理卷积神经网络的方法和设备
JP7234185B2 (ja) データを処理する方法及びその装置
CN111357017A (zh) 低功率卷积神经网络推理应用程序的存储器带宽减少技术
US11630997B2 (en) Method and apparatus with bit-serial data processing of a neural network
KR102452951B1 (ko) 뉴럴 네트워크의 컨볼루션 연산을 수행하는 방법 및 장치
EP3528181B1 (en) Processing method of neural network and apparatus using the processing method
US11836971B2 (en) Method and device with convolution neural network processing
KR20200072307A (ko) 뉴럴 네트워크에서의 부하 균형을 위한 장치 및 방법
KR20200081044A (ko) 뉴럴 네트워크의 컨볼루션 연산을 처리하는 방법 및 장치
KR20200095300A (ko) 뉴럴 네트워크의 컨볼루션 연산을 처리하는 방법 및 장치
EP3839832A1 (en) Method and apparatus with neural network convolution operation
US12014505B2 (en) Method and apparatus with convolution neural network processing using shared operand
US11681915B2 (en) Neural network method and apparatus
KR20210071472A (ko) 데이터를 처리하는 방법 및 장치
US20200250842A1 (en) Method and apparatus with convolution neural network processing
KR20230059726A (ko) 심층 신경망 연산을 수행하는 방법 및 전자 장치
KR20220050013A (ko) 전자 장치 및 전자 장치의 제어 방법

Legal Events

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