KR20190013162A - 컨볼루션 뉴럴 네트워크를 위한 하드웨어 가속기 및 컨볼루션 연산량 감소 방법 - Google Patents
컨볼루션 뉴럴 네트워크를 위한 하드웨어 가속기 및 컨볼루션 연산량 감소 방법 Download PDFInfo
- Publication number
- KR20190013162A KR20190013162A KR1020170097323A KR20170097323A KR20190013162A KR 20190013162 A KR20190013162 A KR 20190013162A KR 1020170097323 A KR1020170097323 A KR 1020170097323A KR 20170097323 A KR20170097323 A KR 20170097323A KR 20190013162 A KR20190013162 A KR 20190013162A
- Authority
- KR
- South Korea
- Prior art keywords
- output value
- convolution
- input
- hardware accelerator
- setting range
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 49
- 238000013527 convolutional neural network Methods 0.000 claims description 40
- 238000004590 computer program Methods 0.000 claims description 8
- 230000002194 synthesizing effect Effects 0.000 claims description 4
- 238000013528 artificial neural network Methods 0.000 abstract description 21
- 230000009467 reduction Effects 0.000 description 24
- 238000004364 calculation method Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 5
- 238000003491 array Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 238000009795 derivation Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 230000001151 other effect Effects 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000013403 standard screening design Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Image Analysis (AREA)
- Complex Calculations (AREA)
Abstract
본 명세서에서 개시되는 실시예들은 컨볼루션 뉴럴 네트워크를 위한 하드웨어 가속기 및 컨볼루션 연산량 감소 방법에 관한 것으로서, 보다 구체적으로는 각 컨볼루션의 출력값이 설정범위에 포함될 것으로 예측되면 진행 중인 컨볼루션 연산을 중단하고, 후순위 컨볼루션을 수행함으로써 컨볼루션 연산량을 감소시키는 방법 및 그를 수행하는 하드웨어 가속기에 관한 것이다.
Description
본 명세서에서 개시되는 실시예들은 컨볼루션 뉴럴 네트워크를 위한 하드웨어 가속기 및 컨볼루션 연산량 감소 방법에 관한 것으로서, 보다 구체적으로는 출력값이 설정범위에 포함될 것으로 예측되는 컨볼루션 연산을 중단하고, 후순위 컨볼루션을 수행함으로써 컨볼루션 연산량을 감소시키는 방법 및 그를 수행하는 하드웨어 가속기에 관한 것이다.
딥뉴럴네트워크는 일반적으로 컨볼루션을 사용하는 CNN (convolutional neural network)과 행렬과 벡터의 곱을 주된 계산으로하는 RNN (recurrent neural network)으로 나뉜다. CNN은 영상처리에, RNN은 연속된 데이터처리에 적합한 것으로 알려져 있다. CNN에서 대부분의 계산시간은 컨볼루션 동작이 차지한다. CNN의 각 레이어(layer)에서는 입력데이터와 커널간의 컨볼루션으로 출력을 구한 후 활성함수(일반적으로는 ReLU)를 적용하여 해당 레이어의 출력을 구한다.
CNN의 경우 컨볼루션이 연산의 대부분을 차지하므로, 전체적인 연산 시간을 단축하기 위하여 컨볼루션 연산의 효율 개선이 필요하다.
관련하여 선행기술 문헌인 한국 등록특허 제10-1563569호에서는 일례의 패턴 세트의 사전 훈련을 통해 다이내믹 시각 이미지 패턴을 인식하는 시스템 및 방법을 개시하고 있다. 그러나 선행문헌에 개시된 것과 같은 컨볼루션 방식은 컨볼루션 연산의 효율을 향상시키는 데에서는 미흡하여 개선의 필요가 있다.
한편, 전술한 배경기술은 발명자가 본 발명의 도출을 위해 보유하고 있었거나, 본 발명의 도출 과정에서 습득한 기술 정보로서, 반드시 본 발명의 출원 전에 일반 공중에게 공개된 공지기술이라 할 수는 없다.
본 명세서에서 개시되는 실시예들은, 컨볼루션 뉴럴 네트워크를 위한 하드웨어 가속기 및 컨볼루션 연산량 감소 방법을 개시하는 데에 목적이 있다.
또한 실시예들은, 컨볼루션 뉴럴 네트워크를 수행함에 있어서, 컨볼루션 연산의 출력값을 미리 예측하여 무의미한 컨볼루션 연산을 중단함으로써 컨볼루션 연산량을 감소시키고자 한다.
또한 실시예들은, 컨볼루션 뉴럴 네트워크를 수행함에 있어서, 컨볼루션 연산을 조기에 예측하여 컨볼루션 연산량을 감소시키고자 한다.
또한 실시예들은, 컨볼루션 뉴럴 네트워크를 수행함에 있어서, 출력값의 정확도와 연산량 감소율의 적정점을 찾아 컨볼루션 연산량을 효과적으로 감소시키고자 한다.
상술한 기술적 과제를 달성하기 위한 기술적 수단으로서, 일 실시예에 따르면, 컨볼루션 뉴럴 네트워크(CNN)를 위한 하드웨어 가속기가 수행하는 것으로서, 입력 데이터에 대한 복수의 컨볼루션을 수행함에 있어서, 각 컨볼루션의 출력값이 설정범위에 포함될지 여부를 예측하는 단계; 출력값이 상기 설정범위에 포함될 것으로 예측되는 컨볼루션 연산을 중단하고, 후순위 컨볼루션을 수행하는 단계를 포함하는 컨볼루션 연산량 감소 방법이 개시된다.
다른 실시예에 따르면, 컨볼루션 뉴럴 네트워크(CNN)를 위한 하드웨어 가속기에 있어서, 입력 데이터에 대한 복수의 컨볼루션을 수행함에 있어서, 각 컨볼루션의 출력값이 설정범위에 포함될지 여부를 예측하고, 출력값이 상기 설정범위에 포함될 것으로 예측되는 컨볼루션 연산을 중단하고, 후순위 컨볼루션을 수행하는 것을 특징으로 하는 컨볼루션 뉴럴 네트워크를 위한 하드웨어 가속기가 개시된다.
또 다른 실시예에 따르면, 컨볼루션 연산량 감소 방법을 수행하는 프로그램이 기록된 컴퓨터 판독 가능한 기록매체가 개시된다. 이때 컨볼루션 연산량 감소 방법은, 컨볼루션 뉴럴 네트워크(CNN)를 위한 하드웨어 가속기가 수행하는 것으로서, 입력 데이터에 대한 복수의 컨볼루션을 수행함에 있어서, 각 컨볼루션의 출력값이 설정범위에 포함될지 여부를 예측하는 단계; 출력값이 상기 설정범위에 포함될 것으로 예측되는 컨볼루션 연산을 중단하고, 후순위 컨볼루션을 수행하는 단계를 포함할 수 있다.
또 다른 실시예에 따르면, 뉴럴 네트워크를 위한 하드웨어 가속기에 의해 수행되며, 컨볼루션 연산량 감소 방법을 수행하기 위해 매체에 저장된 컴퓨터 프로그램이 개시된다. 이때 컨볼루션 연산량 감소 방법은, 컨볼루션 뉴럴 네트워크(CNN)를 위한 하드웨어 가속기가 수행하는 것으로서, 입력 데이터에 대한 복수의 컨볼루션을 수행함에 있어서, 각 컨볼루션의 출력값이 설정범위에 포함될지 여부를 예측하는 단계; 출력값이 상기 설정범위에 포함될 것으로 예측되는 컨볼루션 연산을 중단하고, 후순위 컨볼루션을 수행하는 단계를 포함할 수 있다.
전술한 과제 해결 수단 중 어느 하나에 의하면, 본 명세서에서 개시되는 실시예들은, 컨볼루션 뉴럴 네트워크를 위한 하드웨어 가속기 및 컨볼루션 연산량 감소 방법을 개시할 수 있다.
또한 실시예들은, 컨볼루션 뉴럴 네트워크를 수행함에 있어서, 컨볼루션 연산의 출력값을 미리 예측하여 무의미한 컨볼루션 연산을 중단함으로써 컨볼루션 연산량을 감소시킬 수 있다.
또한 실시예들은, 컨볼루션 뉴럴 네트워크를 수행함에 있어서, 컨볼루션 연산을 조기에 예측하여 컨볼루션 연산량을 감소시킬 수 있다.
또한 실시예들은, 컨볼루션 뉴럴 네트워크를 수행함에 있어서, 출력값의 정확도와 연산량 감소율의 적정점을 찾아 컨볼루션 연산량을 효과적으로 감소시킬 수 있다.
이와 같은 컨볼루션 뉴럴 네트워크를 위한 하드웨어 가속기 및 컨볼루션 연산량 감소 방법은 딥러닝 기반의 서버 및 모바일 시스템 등의 연산량을 효과적으로 감소시킬 수 있다.
개시되는 실시예들에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 개시되는 실시예들이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도 1은 일 실시예에 따른 뉴럴 네트워크를 설명하기 위한 예시도이다.
도 2는 일 실시예에 따른 뉴럴 네트워크 시스템의 구성을 도시한 블록도이다.
도 3 은 일 실시예에 따른 하드웨어 가속기를 설명하기 위한 구성도이다.
도 4 및 도 5는 일 실시예데 따른 하드웨어 가속기에서 수행되는 컨볼루션 연산을 설명하기 위한 예시도이다.
도 6 및 도 7은 일 실시예에 따른 컨볼루션 연산량 감소 방법에 대해 설명하기 위한 순서도이다.
도 2는 일 실시예에 따른 뉴럴 네트워크 시스템의 구성을 도시한 블록도이다.
도 3 은 일 실시예에 따른 하드웨어 가속기를 설명하기 위한 구성도이다.
도 4 및 도 5는 일 실시예데 따른 하드웨어 가속기에서 수행되는 컨볼루션 연산을 설명하기 위한 예시도이다.
도 6 및 도 7은 일 실시예에 따른 컨볼루션 연산량 감소 방법에 대해 설명하기 위한 순서도이다.
아래에서는 첨부한 도면을 참조하여 다양한 실시예들을 상세히 설명한다. 아래에서 설명되는 실시예들은 여러 가지 상이한 형태로 변형되어 실시될 수도 있다. 실시예들의 특징을 보다 명확히 설명하기 위하여, 이하의 실시예들이 속하는 기술분야에서 통상의 지식을 가진 자에게 널리 알려져 있는 사항들에 관해서 자세한 설명은 생략하였다. 그리고, 도면에서 실시예들의 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 구성이 다른 구성과 "연결"되어 있다고 할 때, 이는 '직접적으로 연결'되어 있는 경우뿐 아니라, '그 중간에 다른 구성을 사이에 두고 연결'되어 있는 경우도 포함한다. 또한, 어떤 구성이 어떤 구성을 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한, 그 외 다른 구성을 제외하는 것이 아니라 다른 구성들을 더 포함할 수도 있음을 의미한다.
이하 첨부된 도면을 참고하여 실시예들을 상세히 설명하기로 한다.
도 1은 일 실시예에 따른 뉴럴 네트워크 시스템(Neural Network System)에서 수행되는 뉴럴 네트워크를 설명하기 위한 예시도이다.
컨볼루션 뉴럴 네트워크는 입력 데이터를 각 커널과 컨볼루션하는 과정을 거쳐 출력 데이터를 도출한다. 이때 컨볼루션은, 입력 데이터를 처리함에 있어서 각 커널에 대응하는 가중치(w; weight)를 적용하는 과정을 포함한다.
도 1을 참고하면, 컨볼루션은 복수의 입력데이터과 복수의 커널에 대하여 수행되는 곱연산과 이로 인한 복수의 결과들을 합성하는 과정을 포함한다.
한편, 도 1에 도시된 것과 같은 컨볼루션은 각 레이어마다 반복될 수 있다. 즉, 컨볼루션을 통해 도출된 출력 데이터가 다음 레이어의 입력 데이터로 입력되어 다시 한 번 컨볼루션이 수행된다. 이와 같은 컨볼루션은 최종 출력값이 도출될 때까지 복수의 레이어에서 반복된다. 보다 구체적인 실시예들은 관련 부분에서 후술한다.
도 2는 일 실시예에 따른 뉴럴 네트워크 시스템(100)의 구성을 도시한 블록도이다.
본 명세서에서 개시되는 일 실시예에 따른 뉴럴 네트워크 시스템(100)은, 특히 컨볼루션 뉴럴 네트워크(CNN; Convolution Neural Network)를 구동하기 위한 시스템으로서, 하드웨어 가속기를 포함할 수 있다. 구체적인 구성은 도 2를 참고하여 설명한다.
도 2를 참고하면, 일 실시예에 따른 뉴럴 네트워크 시스템(100)은 입출력장치(110), 저장장치(120) 및 연산장치(130)를 포함할 수 있다.
일 실시예에 따른 입출력장치(110)는 유저로부터 입력을 수신하기 위한 입력장치와, 작업의 수행 결과 또는 뉴럴 네트워크 시스템(100)의 상태 등의 정보를 표시하기 위한 출력장치를 포함할 수 있다. 예를 들어, 입출력장치(110)는 데이터 처리의 명령을 수신하기 위한 입력장치와 수신한 명령에 따라 처리된 결과를 출력하는 출력장치를 포함할 수 있다.
한편, 저장장치(120)는 뉴럴 네트워크를 수행하기 위한 데이터를 저장할 수 있다. 가령 컨볼루션 뉴럴 네트워크의 대상이 되는 입력 데이터를 저장할 수 있고, 컨볼루션 뉴럴 네트워크의 수행 결과로서 출력 데이터를 저장할 수 있다.
이때 저장장치(120)는 SSD(solid state drive), 플래시 메모리 (flash memory), MRAM(magnetic random access memory), PRAM(phase change RAM), FeRAM(ferroelectric RAM) 하드디스크, 플래시 메모리 등을 포함할 수 있으며, SRAM(synchronous random access memory), DRAM(dynamic random access memory)등을 포함할 수도 있다.
또한, 연산장치(130)는 뉴럴 네트워크 시스템(100)의 전체적인 동작을 제어하며, CPU 등과 같은 프로세서를 포함할 수 있다. 또한, 연산장치(130)는 하드웨어 가속기를 포함할 수 있다. 이때, 하드웨어 가속기는 컨볼루션 뉴럴 네트워크를 위하여 컨볼루션 연산을 수행할 수 있으며, GPU로 구현될 수 있다.
다음으로 도 3을 참조하면, 뉴럴 네트워크 시스템(100)의 일부 구성의 실시예를 도시한 구성도이다.
도 3에 따르면, 뉴럴 네트워크 시스템(100)은 저장장치(120)로서 off-chip DRAM(121)을 포함할 수 있으며, 연산장치(130)로서 하드웨어 가속기(131)를 포함할 수 있다. off-chip DRAM(121)과 하드웨어 가속기(131)의 사이는 DMA 유닛(DMA unit, 141)과 광역 버퍼(Global Buffer, 142)로 연결될 수 있다. off-chip DRAM(121)과 하드웨어 가속기(131)는 DMA 유닛(141)을 통해 DMA 방식으로 데이터를 송수신하며, 송수신된 데이터를 광역 버퍼(142)에 임시적으로 보관할 수 있다.
또한, 도 3의 실시예에 따르면, 하드웨어 가속기(131)는 복수의 계산단위(PE; processing element, 132)의 배열(PE Arrays)로 구성될 수 있다. 이때, 하드웨어 가속기(131)는 각 계산단위(132)를 통해 상술한 광역 버퍼(142)에 저장된 데이터를 읽고, 컨볼루션을 수행할 수 있다.
관련하여 도 4를 참조하면, 각 계산단위에서 컨볼루션을 수행하는 실시예에 대한 예시도가 도시되어 있다. 도 3의 실시예에 따르면, 각 계산단위는 RF(Register File)에 컨볼루션의 대상이 되는 입력 데이터를 저장할 수 있다. 또한, Fetch Controller는 RF에서 입력 데이터를 선택하여 커널의 가중치(Kernel weight) 및 활성함수(act.; activation function)를 적용하여 컨볼루션을 수행한 후, 다시 RF에 저장할 수 있다. 이때 Fetch Controller는 이와 같은 컨볼루션 과정을 반복하여 수행할 수 있다.
한편, 실시예에 따른 하드웨어 가속기(131)는, 상술한 바와 같은 컨볼루션을 수행함에 있어서, 컨볼루션의 연산량을 감소시키기 위하여 컨볼루션 연산량 감소 방법을 수행할 수 있다. 하드웨어 가속기(131)는 복수의 레이어에 대하여 컨볼루션을 수행할 수 있고, 실시예에 따른 연산량 감소 방법은 각각의 레이어에 적용될 수 있다. 이하에서는 하나의 레이어를 기준으로 하여 설명하되, 필요에 따라 복수의 레이어를 가정하여 설명한다.
실시예에 따르면, 컨볼루션 뉴럴 네트워크를 위한 하드웨어 가속기(131)는 입력 데이터와 커널에 대한 복수의 컨볼루션을 수행함에 있어서, 각 컨볼루션의 출력값이 설정범위에 포함될지 여부를 예측할 수 있다. 이때, 하드웨어 가속기(131)는 출력값이 설정범위에 포함될 것으로 예측되는 컨볼루션의 연산을 중단하고, 나머지 컨볼루션을 수행할 수 있다. 이때 설정범위는 음수로 설정될 수 있다.
관련하여, 컨볼루션 뉴럴 네트워크에서는 컨볼루션 수행 후 활성함수(activation function)로 ReLU (rectified linear unit)를 적용할 수 있다. 이때 컨볼루션 출력값이 음수이면, ReLU 연산의 결과는 0으로 출력된다.
따라서 하드웨어 가속기(131)는 컨볼루션 출력값이 음수로 예측되면, 컨볼루션을 중단하고, ReLU 연산의 출력값을 0으로 출력하고, 후순위 컨볼루션을 수행함으로써 컨볼루션 연산량을 감소시킬 수 있다.
한편, 하드웨어 가속기(131)는 컨볼루션의 출력값이 설정범위에 포함될지 여부를 예측함에 있어서, 출력값의 중간결과를 도출하고, 도출한 중간결과에 기초하여 출력값이 설정범위에 포함될지 여부를 예측할 수 있다. 예를 들어, 중간결과를 임계값과 비교하여 출력값이 설정범위에 포함될지 여부를 예측할 수 있다.
관련하여, 입력 데이터는 복수의 입력 특성 지도(input feature map)를 포함할 수 있다. 이때, 하드웨어 가속기(131)는 복수의 입력 특성 지도와 커널의 곱연산을 순차적으로 수행하고, 각 곱연산의 결과를 합성함으로써 컨볼루션의 출력값을 도출할 수 있다.
즉, 커널에 대하여 복수의 입력 특성 지도와의 곱연산을 수행함으로써 곱연산이 수회 이루어질 수 있는데, 이 경우 각 곱연산의 종료 시까지 수행된 곱연산의 결과를 합성하여 중간결과를 도출할 수 있다.
가령, 1번째 곱연산의 종료 시에는 1번째 곱연산의 결과가 중간결과로, 2번째 곱연산의 종료 시에는 1번째 곱연산의 결과와 2번째 곱연산의 결과의 합성이 중간결과로 도출될 수 있고, N번째 곱연산의 종료 시에 1번째 곱연산부터 N번째 곱연산까지의 결과를 합성한 값을 해당 입력 특성 지도에 대한 컨볼루션의 중간결과로 도출할 수 있다.
이때, 하드웨어 가속기(131)는 상기와 같이 도출된 중간결과에 기초하여 컨볼루션의 출력값이 설정범위에 포함되는지 여부, 예를 들어 음수인지 여부를 예측하고, 만약 컨볼루션의 출력값이 음수인 것으로 예측되면, 해당 컨볼루션을 중단할 수 있다.
또한, 입력 데이터가 복수의 입력 특성 지도를 포함할 때, 하드웨어 가속기(131)는 복수의 입력 특성 지도와 커널의 곱연산을 순차적으로 수행하되, 복수의 입력 특성 지도의 연산 순서를 정렬할 수 있다. 이때, 하드웨어 가속기(131)는 복수의 입력 특성 지도에 대응되는 커널의 가중치(weight)에 기초하여 입력 특성 지도의 연산 순서를 정렬할 수 있다.
이와 관련하여, 실시예에 따르면, 하드웨어 가속기(131)는 복수의 입력 특성 지도를 컨볼루션 연산으로부터 얻을 수 있다. 다시 말해, 하드웨어 가속기(131)가 컨볼루션 뉴럴 네트워크를 수행함에 있어서 복수의 레이어를 가질 때, 하나의 레이어에 입력되는 입력 특성 지도는 이전의 레이어에서 수행된 컨볼루션 연산의 출력 특성 지도(output feature map)일 수 있다.
또한, 각 레이어에서 컨볼루션을 수행함에 있어서, 각각의 레이어에서 입력 데이터와 연산할 커널이 하나 이상 존재할 수 있다. 즉, 하드웨어 가속기(131)는 복수의 입력 특성 지도와 복수의 커널에 대하여 다대다의 컨볼루션 연산을 수행하고, 이를 합성하여 출력 특성 지도를 도출할 수 있다. 따라서 각 출력 특성 지도는 대응하는 커널에 따라 가중치를 가질 수 있다. 즉, 소정 레이어에 대한 입력 특성 지도 각각은, 이전 단계의 레이어에서 수행된 컨볼루션 연산에 따라 대응하는 가중치를 가질 수 있다.
이를 이용하여 하드웨어 가속기(131)는 입력 특성 지도에 대응되는 선행 레이어의 커널의 가중치에 기초하여 입력 특성 지도의 연산 순서를 정렬할 수 있다.
이때, 하드웨어 가속기(131)는 대응되는 커널의 가중치에 따라 입력 특성 지도의 연산 순서를 정렬하되, 가중치의 절대값이 큰 순서대로 입력 특성 지도의 연산 순서를 정렬할 수 있다. 가중치의 절대값이 클 수록 컨볼루션의 출력값에 미치는 영향력이 커지므로, 이와 같이 연산 순서를 정렬하면, 출력값을 조기에 예측하여 무의미한 연산을 조기에 중단할 수 있다.
한편, 실시예에 따르면 하드웨어 가속기(131)는 임계값을 설정할 수 있다. 연산의 감소량과 출력값의 정확도는 음의 상관관계를 갖는다. 즉, 연산량을 많이 줄이면 정확도가 떨어지고, 정확도를 높이면 연산량이 늘어나게 된다. 따라서 하드웨어 가속기(131)는 정확도의 허용치 내에서 최대한 연산량을 줄일 수 있는 임계값을 설정할 수 있다.
예를 들어, 하드웨어 가속기(131)는 임계값의 역할을 하는 샘플값을 다양하게 대입하여 컨볼루션을 수행함으로써 도출된 출력값의 정확도 및 연산의 감소량을 분석하고, 정확도와 연산의 감소량의 상관관계에 기초하여 임계값을 설정할 수 있다.
가령, 학습된 N개의 레이어를 가진 뉴럴 네트워크를 하드웨어 가속기(131)가 수행할 때, N-1개의 레이어들은 컨볼루션을 중단하지 않고 모두 수행하도록 설정하고, 하나의 레이어에 대하여 임계값에 대응하는 샘플값을 작은 값에서 큰 값까지 다양하게 변경하며 컨볼루션을 수행한다. 이때, 출력값을 분석하여 출력값의 정확도(quality) 및 임계값의 상관관계(A)를 연산할 수 있다. 이때, 정확도에 대하여 허용치를 설정하면, 허용된 정확도 중 가장 낮은 정확도일 때의 임계값을 얻을 수 있다. 또한 같은 방법으로 연산의 감소량과 임계값의 상관관계(B)를 연산할 수 있다. 이와 같은 과정을 각 레이어에서 수행할 수 있다.
이때, A 및 B의 상관관계에 기초하여 정확도와 연산의 감소량의 상관관계(C)를 얻을 수 있다.
또한, 모든 레이어에서 컨볼루션을 수행하여 얻은 뉴럴 네트워크의 최종 출력값에 대하여 손실의 허용치를 설정할 수 있다. 이때, 허용된 손실을 각 레이어에 분배하여 각 레이어에서 가장 효과적인 임계값을 구할 수 있다.
구체적으로는, 정확도 대비 감소량의 효율이 가장 좋은 레이어에 대하여 허용된 손실의 일부 값을 분배한다. 이때, 정확도와 감소량의 상관관계(C)에 기초하여, 분배된 레이어의 감소량을 연산하고, 감소량에 기초하여 임시 임계값을 연산한다.
그 상태에서 가장 효율이 좋은 레이어에 대하여 허용된 손실의 소정 값을 분배하고, 같은 방법으로 임시 임계값을 연산한다. 이 같은 과정을 반복하여 허용된 손실이 모두 분배되면, 그때의 각 레이어에 설정된 임시 임계값을, 적용할 임계값으로 설정할 수 있다.
한편, 도 5를 참고하면, 연산의 감소량(가로축)과 정확도의 손실(세로축)에 대한 예시도가 도시되어 있다. 도 5와 같이 연산의 감소량이 클수록 정확도의 손실은 늘어나게 된다. 상술한 실시예에 따르면 허용된 손실에 대하여 가장 효과적인 임계값을 도출하여 적용할 수 있다.
한편, 도 6 및 도 7은 하드웨어 가속기(131)가 수행하는 컨볼루션 연산량 감소 방법을 설명하기 위한 순서도들이다. 도 6 및 도 7에 도시된 실시예에 따른 컨볼루션 연산량 감소 방법은 도 1 내지 도 5와 관련한 실시예에 따른 하드웨어 가속기(131)에서 시계열적으로 처리되는 단계들을 포함한다. 따라서, 이하에서 생략된 내용이라고 하더라도 도 1 내지 도 5와 관련한 실시예에 따른 하드웨어 가속기(131)에 관하여 이상에서 기술한 내용은 도 6 및 도 7에 도시된 실시예들에 따른 컨볼루션 연산량 감소 방법에도 적용될 수 있다.
도 6을 참고하면, 컨볼루션 뉴럴 네트워크를 위한 하드웨어 가속기(131)는 입력 데이터에 대한 컨볼루션의 출력값이 설정범위에 포함될지 여부를 예측하고(S61), 출력값이 설정범위에 포함될 것으로 예측되면 컨볼루션 연산을 중단할 수 있다(S62).
다시 말해, 하드웨어 가속기(131)는 입력 데이터에 대한 복수의 컨볼루션을 수행함에 있어서, 각 컨볼루션의 출력값이 설정범위에 포함될지 여부를 예측하고, 출력값이 설정범위에 포함될 것으로 예측되는 컨볼루션 연산을 중단할 수 있다. 또한, 중단한 컨볼루션의 후순위 컨볼루션을 수행할 수 있다. 실시예에 따르면, 설정범위는 음수일 수 있다.
도 7에는 상술한 S61단계를 구체화한 순서도를 도시하였다. 도 7을 참고하면, 하드웨어 가속기(131)는 출력값을 예측하되, 출력값의 중간값을 도출하고(S71), 도출한 중간결과에 기초하여 출력값이 설정범위에 포함될지 여부를 예측할 수 있다(S72).
이때, 하드웨어 가속기(131)는, 중간결과에 기초하되, 중간결과와 임계값을 비교하여 출력값이 설정범위에 포함될지 여부를 예측할 수 있다.
실시예에 따라 입력 데이터가 복수의 입력 특성 지도를 포함할 때, 하드웨어 가속기(131)는 출력값의 중간결과를 도출함에 있어서, 복수의 입력 특성 지도와 커널의 곱연산을 순차적으로 수행하되, 각 곱연산의 종료시까지 수행된 곱연산의 결과를 합성하여 중간결과를 도출할 수 있다. 하드웨어 가속기(131)는 이와 같이 도출된 중간결과에 기초하여 출력값이 설정범위에 포함될지 여부를 예측할 수 있다.
또한, 입력 데이터가 복수의 입력 특성 지도를 포함할 때, 하드웨어 가속기(131)는 출력값을 예측함에 있어서, 복수의 입력 특성 지도와 커널의 곱연산을 순차적으로 수행하되, 복수의 입력 특성 지도의 연산 순서를 정렬하여 곱연산을 순차적으로 수행할 수 있다.
이때 하드웨어 가속기(131)는 각각의 입력 특성 지도에 대응되는 커널의 가중치(weight)에 기초하여 입력 특성 지도의 연산 순서를 정렬할 수 있다. 그리고 하드웨어 가속기(131)는 가중치 또는 가중치의 절대값이 큰 순서대로 연산 순서를 정렬할 수 있다. 가중치 또는 가중치의 절대값이 클수록 출력값에 영향을 크게 미치므로, 가중치 또는 가중치의 절대값이 큰 순서대로 컨볼루션을 수행함으로써 출력값이 설정범위에 포함되는지 여부를 조기에 판단할 수 있다.
이상의 실시예들은 다양한 뉴럴 네트워크 모델에 적용될 수 있다. 이때, 커널의 웨이트, 레이어의 수에 따라 그에 적합한 레이어별 임계값을 도출하여 연산량 감소 방법을 수행할 수 있다.
이상의 실시예들에서 사용되는 '~장치'라는 용어는 소프트웨어 또는 FPGA(field programmable gate array) 또는 ASIC 와 같은 하드웨어 구성요소를 의미하며, '~장치'는 어떤 역할들을 수행한다. 그렇지만 '~장치'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '~장치'는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 '~장치'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램특허 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다.
구성요소들과 '~장치'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '~장치'들로 결합되거나 추가적인 구성요소들과 '~장치'들로부터 분리될 수 있다.
뿐만 아니라, 구성요소들 및 '~장치'들은 디바이스 또는 보안 멀티미디어카드 내의 하나 또는 그 이상의 CPU 들을 재생시키도록 구현될 수도 있다.
도 6 및 도 7을 통해 설명된 실시예에 따른 컨볼루션 연산량 감소 방법은 컴퓨터에 의해 실행 가능한 명령어 및 데이터를 저장하는, 컴퓨터로 판독 가능한 매체의 형태로도 구현될 수 있다. 이때, 명령어 및 데이터는 프로그램 코드의 형태로 저장될 수 있으며, 프로세서에 의해 실행되었을 때, 소정의 프로그램 모듈을 생성하여 소정의 동작을 수행할 수 있다. 또한, 컴퓨터로 판독 가능한 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터로 판독 가능한 매체는 컴퓨터 기록 매체일 수 있는데, 컴퓨터 기록 매체는 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함할 수 있다.예를 들어, 컴퓨터 기록 매체는 HDD 및 SSD 등과 같은 마그네틱 저장 매체, CD, DVD 및 블루레이 디스크 등과 같은 광학적 기록 매체, 또는 네트워크를 통해 접근 가능한 서버에 포함되는 메모리일 수 있다.
또한 도 6 및 도 7을 통해 설명된 실시예에 따른 컨볼루션 연산량 감소 방법은 컴퓨터에 의해 실행 가능한 명령어를 포함하는 컴퓨터 프로그램(또는 컴퓨터 프로그램 제품)으로 구현될 수도 있다. 컴퓨터 프로그램은 프로세서에 의해 처리되는 프로그래밍 가능한 기계 명령어를 포함하고, 고레벨 프로그래밍 언어(High-level Programming Language), 객체 지향 프로그래밍 언어(Object-oriented Programming Language), 어셈블리 언어 또는 기계 언어 등으로 구현될 수 있다. 또한 컴퓨터 프로그램은 유형의 컴퓨터 판독가능 기록매체(예를 들어, 메모리, 하드디스크, 자기/광학 매체 또는 SSD(Solid-State Drive) 등)에 기록될 수 있다.
따라서 도 6 및 도 7을 통해 설명된 실시예에 따른 컨볼루션 연산량 감소 방법은 상술한 바와 같은 컴퓨터 프로그램이 컴퓨팅 장치에 의해 실행됨으로써 구현될 수 있다. 컴퓨팅 장치는 프로세서와, 메모리와, 저장 장치와, 메모리 및 고속 확장포트에 접속하고 있는 고속 인터페이스와, 저속 버스와 저장 장치에 접속하고 있는 저속 인터페이스 중 적어도 일부를 포함할 수 있다. 이러한 성분들 각각은 다양한 버스를 이용하여 서로 접속되어 있으며, 공통 머더보드에 탑재되거나 다른 적절한 방식으로 장착될 수 있다.
여기서 프로세서는 컴퓨팅 장치 내에서 명령어를 처리할 수 있는데, 이런 명령어로는, 예컨대 고속 인터페이스에 접속된 디스플레이처럼 외부 입력, 출력 장치상에 GUI(Graphic User Interface)를 제공하기 위한 그래픽 정보를 표시하기 위해 메모리나 저장 장치에 저장된 명령어를 들 수 있다. 다른 실시예로서, 다수의 프로세서 및(또는) 다수의 버스가 적절히 다수의 메모리 및 메모리 형태와 함께 이용될 수 있다. 또한 프로세서는 독립적인 다수의 아날로그 및(또는) 디지털 프로세서를 포함하는 칩들이 이루는 칩셋으로 구현될 수 있다.
또한 메모리는 컴퓨팅 장치 내에서 정보를 저장한다. 일례로, 메모리는 휘발성 메모리 유닛 또는 그들의 집합으로 구성될 수 있다. 다른 예로, 메모리는 비휘발성 메모리 유닛 또는 그들의 집합으로 구성될 수 있다. 또한 메모리는 예컨대, 자기 혹은 광 디스크와 같이 다른 형태의 컴퓨터 판독 가능한 매체일 수도 있다.
그리고 저장장치는 컴퓨팅 장치에게 대용량의 저장공간을 제공할 수 있다. 저장 장치는 컴퓨터 판독 가능한 매체이거나 이런 매체를 포함하는 구성일 수 있으며, 예를 들어 SAN(Storage Area Network) 내의 장치들이나 다른 구성도 포함할 수 있고, 플로피 디스크 장치, 하드 디스크 장치, 광 디스크 장치, 혹은 테이프 장치, 플래시 메모리, 그와 유사한 다른 반도체 메모리 장치 혹은 장치 어레이일 수 있다.
상술된 실시예들은 예시를 위한 것이며, 상술된 실시예들이 속하는 기술분야의 통상의 지식을 가진 자는 상술된 실시예들이 갖는 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 상술된 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
본 명세서를 통해 보호 받고자 하는 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태를 포함하는 것으로 해석되어야 한다.
100: 뉴럴 네트워크 시스템
110: 입출력장치
120: 저장장치 130: 연산장치
131: 하드웨어 가속기
120: 저장장치 130: 연산장치
131: 하드웨어 가속기
Claims (16)
- 컨볼루션 뉴럴 네트워크(CNN)를 위한 하드웨어 가속기가 수행하는 것으로서,
입력 데이터에 대한 복수의 컨볼루션을 수행함에 있어서, 각 컨볼루션의 출력값이 설정범위에 포함될지 여부를 예측하는 단계; 및
출력값이 상기 설정범위에 포함될 것으로 예측되는 컨볼루션 연산을 중단하고, 후순위 컨볼루션을 수행하는 단계를 포함하는, 컨볼루션 연산량 감소 방법. - 제1항에 있어서,
상기 설정범위는 음수인 것을 특징으로 하는, 컨볼루션 연산량 감소 방법. - 제1항에 있어서,
상기 예측하는 단계는,
상기 출력값의 중간결과를 도출하는 단계; 및
상기 중간결과에 기초하여 상기 출력값이 설정범위에 포함될지 여부를 예측하는 단계를 포함하는, 컨볼루션 연산량 감소 방법. - 제3항에 있어서,
상기 중간결과에 기초하여 상기 출력값이 설정범위에 포함될지 여부를 예측하는 단계는,
상기 중간결과와 임계값을 비교하여 상기 출력값이 설정범위에 포함될지 여부를 예측하는 것을 특징으로 하는, 컨볼루션 연산량 감소 방법. - 제3항에 있어서,
상기 입력 데이터는,
복수의 입력 특성 지도(input feature map)를 포함하고,
상기 출력값의 중간결과를 도출하는 단계는,
상기 복수의 입력 특성 지도와 커널의 곱연산을 순차적으로 수행하되, 각 곱연산의 종료 시까지 수행된 곱연산의 결과를 합성하여 중간결과를 도출하는 것을 특징으로 하는, 컨볼루션 연산량 감소 방법. - 제1항에 있어서,
상기 입력 데이터는,
복수의 입력 특성 지도(input feature map)를 포함하고,
상기 예측하는 단계는,
상기 복수의 입력 특성 지도와 커널의 곱연산을 순차적으로 수행하되, 상기 복수의 입력 특성 지도의 연산 순서를 정렬하여 상기 곱연산을 순차적으로 수행하는 것을 특징으로 하는, 컨볼루션 연산량 감소 방법. - 제6항에 있어서,
상기 예측하는 단계는,
상기 복수의 입력 특성 지도의 연산 순서를 정렬하되, 각각의 입력 특성 지도에 대응되는 커널의 가중치(weight)에 기초하여 상기 입력 특성 지도의 연산 순서를 정렬하는 것을 특징으로 하는, 컨볼루션 연산량 감소 방법. - 제1항에 기재된 방법을 수행하는 프로그램이 기록된 컴퓨터 판독 가능한 기록 매체.
- 컨볼루션 뉴럴 네트워크(CNN)를 위한 하드웨어 가속기에 의해 수행되며, 제1항에 기재된 방법을 수행하기 위해 매체에 저장된 컴퓨터 프로그램.
- 컨볼루션 뉴럴 네트워크(CNN)를 위한 하드웨어 가속기에 있어서,
입력 데이터에 대한 복수의 컨볼루션을 수행함에 있어서, 각 컨볼루션의 출력값이 설정범위에 포함될지 여부를 예측하고, 출력값이 상기 설정범위에 포함될 것으로 예측되는 컨볼루션 연산을 중단하고, 후순위 컨볼루션을 수행하는 것을 특징으로 하는, 컨볼루션 뉴럴 네트워크를 위한 하드웨어 가속기. - 제10항에 있어서,
상기 설정범위는 음수인 것을 특징으로 하는, 컨볼루션 뉴럴 네트워크를 위한 하드웨어 가속기. - 제10항에 있어서,
상기 출력값이 설정범위에 포함될지 여부를 예측하되,
상기 출력값의 중간결과를 도출하고, 상기 중간결과에 기초하여 상기 출력값이 설정범위에 포함될지 여부를 예측하는 것을 특징으로 하는, 컨볼루션 뉴럴 네트워크를 위한 하드웨어 가속기. - 제12항에 있어서,
상기 중간결과에 기초하여 상기 출력값이 설정범위에 포함될지 여부를 예측하되,
상기 중간결과와 임계값을 비교하여 상기 출력값이 설정범위에 포함될지 여부를 예측하는 것을 특징으로 하는, 컨볼루션 뉴럴 네트워크를 위한 하드웨어 가속기. - 제12항에 있어서,
상기 입력 데이터는,
복수의 입력 특성 지도(input feature map)를 포함하고,
상기 복수의 입력 특성 지도와 커널의 곱연산을 순차적으로 수행하여 각 곱연산의 종료 시까지 수행된 곱연산의 결과를 합성하여 중간결과를 도출하는 것을 특징으로 하는, 컨볼루션 뉴럴 네트워크를 위한 하드웨어 가속기. - 제10항에 있어서,
상기 입력 데이터는,
복수의 입력 특성 지도(input feature map)를 포함하고,
상기 복수의 입력 특성 지도와 커널의 곱연산을 순차적으로 수행하되, 상기 복수의 입력 특성 지도의 연산 순서를 정렬하여 상기 곱연산을 순차적으로 수행하는 것을 특징으로 하는, 컨볼루션 뉴럴 네트워크를 위한 하드웨어 가속기. - 제15항에 있어서,
상기 복수의 입력 특성 지도의 연산 순서를 정렬하되, 각각의 입력 특성 지도에 대응되는 커널의 가중치(weight)에 기초하여 상기 입력 특성 지도의 연산 순서를 정렬하는 것을 특징으로 하는, 컨볼루션 뉴럴 네트워크를 위한 하드웨어 가속기.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170097323A KR102034659B1 (ko) | 2017-07-31 | 2017-07-31 | 컨볼루션 뉴럴 네트워크를 위한 하드웨어 가속기 및 컨볼루션 연산량 감소 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170097323A KR102034659B1 (ko) | 2017-07-31 | 2017-07-31 | 컨볼루션 뉴럴 네트워크를 위한 하드웨어 가속기 및 컨볼루션 연산량 감소 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20190013162A true KR20190013162A (ko) | 2019-02-11 |
KR102034659B1 KR102034659B1 (ko) | 2019-10-21 |
Family
ID=65370057
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020170097323A KR102034659B1 (ko) | 2017-07-31 | 2017-07-31 | 컨볼루션 뉴럴 네트워크를 위한 하드웨어 가속기 및 컨볼루션 연산량 감소 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102034659B1 (ko) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190062481A (ko) * | 2016-10-04 | 2019-06-05 | 매직 립, 인코포레이티드 | 콘볼루션 뉴럴 네트워크들을 위한 효율적인 데이터 레이아웃들 |
CN111967579A (zh) * | 2020-02-24 | 2020-11-20 | 北京爱芯科技有限公司 | 使用卷积神经网络对图像进行卷积计算的方法和装置 |
CN112488296A (zh) * | 2020-11-25 | 2021-03-12 | 苏州浪潮智能科技有限公司 | 基于硬件环境的数据操作方法、装置、设备及存储介质 |
CN112734827A (zh) * | 2021-01-07 | 2021-04-30 | 京东鲲鹏(江苏)科技有限公司 | 一种目标检测方法、装置、电子设备和存储介质 |
WO2021100900A1 (ko) * | 2019-11-20 | 2021-05-27 | 전자부품연구원 | 적응형 딥러닝 가속 장치 및 방법 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102647178B1 (ko) | 2023-12-28 | 2024-03-13 | 주식회사 모빌린트 | 합성곱 연산을 위한 방법 및 장치 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20160143505A (ko) * | 2015-06-04 | 2016-12-14 | 삼성전자주식회사 | 신경망의 연산량을 줄이는 방법 및 시스템 |
-
2017
- 2017-07-31 KR KR1020170097323A patent/KR102034659B1/ko active IP Right Grant
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20160143505A (ko) * | 2015-06-04 | 2016-12-14 | 삼성전자주식회사 | 신경망의 연산량을 줄이는 방법 및 시스템 |
Non-Patent Citations (2)
Title |
---|
Albericio, Jorge, et al. Cnvlutin: Ineffectual-neuron-free deep neural network computing. 2016 ACM/IEEE 43rd Annual International Symposium on Computer Architecture (ISCA). 2016.6.22.* * |
Teerapittayanon, Surat, Bradley McDanel, and Hsiang-Tsung Kung. Branchynet: Fast inference via early exiting from deep neural networks. 2016 23rd ICPR. IEEE. 2016.12.8. * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190062481A (ko) * | 2016-10-04 | 2019-06-05 | 매직 립, 인코포레이티드 | 콘볼루션 뉴럴 네트워크들을 위한 효율적인 데이터 레이아웃들 |
US11182645B2 (en) | 2016-10-04 | 2021-11-23 | Magic Leap, Inc. | Efficient data layouts for convolutional neural networks |
US11720800B2 (en) | 2016-10-04 | 2023-08-08 | Magic Leap, Inc. | Efficient data layouts for convolutional neural networks |
WO2021100900A1 (ko) * | 2019-11-20 | 2021-05-27 | 전자부품연구원 | 적응형 딥러닝 가속 장치 및 방법 |
KR20210061583A (ko) * | 2019-11-20 | 2021-05-28 | 한국전자기술연구원 | 적응형 딥러닝 가속 장치 및 방법 |
CN111967579A (zh) * | 2020-02-24 | 2020-11-20 | 北京爱芯科技有限公司 | 使用卷积神经网络对图像进行卷积计算的方法和装置 |
CN112488296A (zh) * | 2020-11-25 | 2021-03-12 | 苏州浪潮智能科技有限公司 | 基于硬件环境的数据操作方法、装置、设备及存储介质 |
CN112488296B (zh) * | 2020-11-25 | 2022-12-02 | 苏州浪潮智能科技有限公司 | 基于硬件环境的数据操作方法、装置、设备及存储介质 |
CN112734827A (zh) * | 2021-01-07 | 2021-04-30 | 京东鲲鹏(江苏)科技有限公司 | 一种目标检测方法、装置、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
KR102034659B1 (ko) | 2019-10-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102034659B1 (ko) | 컨볼루션 뉴럴 네트워크를 위한 하드웨어 가속기 및 컨볼루션 연산량 감소 방법 | |
US10942673B2 (en) | Data processing using resistive memory arrays | |
US20220172060A1 (en) | Modifying machine learning models to improve locality | |
US9747527B2 (en) | Performing object detection operations via random forest classifier | |
KR20190053262A (ko) | 신경망 계산 유닛에서 입력 데이터의 희소성 이용 | |
JP2019102084A (ja) | ニューラルネットワークにおいてコンボリューション演算を処理する方法及びその装置 | |
WO2020101948A1 (en) | Dynamic precision scaling at epoch granularity in neural networks | |
US20200183833A1 (en) | Virtual space memory bandwidth reduction | |
KR20200081044A (ko) | 뉴럴 네트워크의 컨볼루션 연산을 처리하는 방법 및 장치 | |
KR20200072307A (ko) | 뉴럴 네트워크에서의 부하 균형을 위한 장치 및 방법 | |
CN111008040A (zh) | 缓存装置及缓存方法、计算装置及计算方法 | |
CN111465943A (zh) | 芯片上计算网络 | |
JP7562265B2 (ja) | ニューラルネットワークのコンボルーション演算を処理する方法及び装置 | |
KR20190085444A (ko) | 딥 뉴럴 네트워크를 위한 gpu 메모리 관리 방법 및 그를 수행하는 연산 장치 | |
KR20220059194A (ko) | 대상 객체에 적응적인 객체 추적 방법 및 장치 | |
KR20210045225A (ko) | 뉴럴 네트워크에서 연산을 수행하는 방법 및 장치 | |
CN113010099A (zh) | 有效地利用存储器空间的神经网络处理设备及其操作方法 | |
CN113032007A (zh) | 一种数据处理方法及装置 | |
TWI775210B (zh) | 用於卷積運算的資料劃分方法及處理器 | |
WO2016208260A1 (ja) | 画像認識装置および画像認識方法 | |
CN112396085B (zh) | 识别图像的方法和设备 | |
JP2020201939A (ja) | Mlモデルおよびaiモデルのために敵対的サンプルを軽減するためのシステム | |
KR102559036B1 (ko) | 음수값을 갖는 활성화 함수에서 제로 스키핑을 제공하는 방법 및 장치 | |
JP7410961B2 (ja) | 演算処理装置 | |
US12014505B2 (en) | Method and apparatus with convolution neural network processing using shared operand |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |