KR20190049593A - 콘볼루션 신경망에서의 연산들을 수행하는 방법 및 장치 - Google Patents

콘볼루션 신경망에서의 연산들을 수행하는 방법 및 장치 Download PDF

Info

Publication number
KR20190049593A
KR20190049593A KR1020180132001A KR20180132001A KR20190049593A KR 20190049593 A KR20190049593 A KR 20190049593A KR 1020180132001 A KR1020180132001 A KR 1020180132001A KR 20180132001 A KR20180132001 A KR 20180132001A KR 20190049593 A KR20190049593 A KR 20190049593A
Authority
KR
South Korea
Prior art keywords
parameter
partial
arithmetic
array
weight parameter
Prior art date
Application number
KR1020180132001A
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 난징 호리존 로보틱스 테크놀로지 코., 엘티디.
Publication of KR20190049593A publication Critical patent/KR20190049593A/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/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/31Indexing; Data structures therefor; Storage structures
    • 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
    • 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/0495Quantised networks; Sparse networks; Compressed networks

Landscapes

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

Abstract

본 출원은 콘볼루션 신경망에서의 연산을 수행하기 위한 방법 및 기구에 관한 것이다. 일 실시예에서, 콘볼루션 신경망에서의 연산을 수행하기 위한 방법은 복수의 연산 파라미터를 포함하는 연산 파라미터 어레이를 얻기 위해 콘볼루션 신경망에서 선택된 층의 웨이트 파라미터를 분할하는 단계, 복수의 부분적인 연산 결과를 포함하는 부분적인 연산 결과 어레이를 얻기 위해 연산 파라미터 어레이에서의 각각의 연산 파라미터를 사용함으로써 선택된 층에서의 연산을 수행하는 단계, 및 부분적인 연산 결과 어레이에 기초한 선택된 층의 하나 이상의 출력 데이터를 발생시키는 단계를 포함할 수 있다. 이러한 방법에 의해, 콘볼루션 신경망이 개선된 실행 효율을 달성할 수 있다.

Description

콘볼루션 신경망에서의 연산들을 수행하는 방법 및 장치{METHOD AND APPARATUS FOR PERFORMING OPERATIONS IN CONVOLUTIONAL NEURAL NETWORK}
본 출원은 일반적으로 인공 콘볼루션 신경망에 관한 것으로, 더 구체적으로는 콘볼루션 신경망에서의 연산들을 수행하기 위한 방법 및 장치에 관한 것이다.
콘볼루션 신경망에 기초한 딥 러닝(deep learning) 기술이 영상 인식, 비디오 분석, 자연어 처리, 보조 드라이빙 등과 같은 다양한 분야에서 널리 사용되어 왔다.
콘볼루션 신경망은 다수의 층을 포함할 수 있다. 각각의 층에서, 이러한 층의 콘볼루션 연산은 대응하는 출력 데이터(액티베이션 값 또는 출력 특징 데이터라고도 불리는)를 얻기 위해 그러한 층의 웨이트 파라미터(weight parameter)를 사용하는 층에 관한 입력 데이터(입력 특징 데이터라고도 부르는)에 대해 수행된다.
콘볼루션 신경망에서는, 각각의 특징 데이터가 일정한 폭과 높이를 가질 수 있고, 하나 이상의 채널을 가질 수 있다. 각각의 채널은 특징 데이터의 한 종류의 정보를 운반할 수 있다. 각 층의 웨이트 파라미터는 하나 이상의 커널(kernel)(콘볼루션 커널이라고도 하는)을 포함할 수 있고, 모든 종류의 커널이 동일한 폭, 동일한 높이, 및 동일한 폭(채널들의 개수라고도 하는)을 가질 수 있다. 다시 말해, 각 층의 웨이트 파라미터는, 예를 들면 폭, 높이, 깊이, 커널의 종류와 같은 치수(dimension)들을 가질 수 있다.
콘볼루션 신경망에서의 연산들은 일반적인 중앙 처리 유닛(CPU) 또는 그래픽 처리 유닛(GPU) 또는 전용 가속기 등과 같은 하드웨어를 사용함으로써 효율적으로 수행될 수 있는 것이 바람직하다. 하지만, 콘볼루션 신경망에서 전향 추론(forward reasoning) 프로세스가 진행됨에 따라, 각 층의 웨이트 파라미터의 사이즈가 점점 더 커질 수 있다. 예를 들면, 그것은 더 많은 개수의 채널 및/또는 더 많은 개수의 커널을 가질 수 있다. 만약 특정 층의 웨이트 파라미터가 신경망(예컨대, 프로세서와 연관되거나 프로세서 내의 캐시(cache))에서의 연산들을 수행하기 위해 사용된 프로세서와 연관된 고속 메모리에서 완전히 완충되기에 너무 크다면, 그러한 층의 연산들은 올바르게 및/또는 효율적으로 수행될 수 없다.
본 개시물의 일 양태는 콘볼루션 신경망에서의 연산들을 수행하기 위한 방법에 관한 것으로, 복수의 연산 파라미터를 포함하는 연산 파라미터 어레이(array)를 얻기 위해, 콘볼루션 신경망에서의 선택된 층의 웨이트 파라미터를 깊이의 치수들 중 적어도 하나와 다수의 커널들로 분할하는 단계로서, 연산 파라미터 어레이의 각각의 행(row)에서의 각각의 연산 파라미터들은 가중(weighted) 파라미터의 커널들의 한 세트의 동일한 서브세트(subset)로부터의 것이고 각각 상이한 채널을 가지며, 연산 파라미터의 각각의 열(column)에서의 각각의 연산 파라미터들은 각각 웨이트 파라미터의 커널들의 세트의 상이한 서브세트들로부터의 것이고 하나 이상의 동일한 채널을 가지는, 상기 분할하는 단계; 연산 파라미터 어레이에서의 각각의 연산 파라미터를 사용함으로써, 복수의 부분 연산 결과들을 포함하는 부분적인 연산 결과 어레이를 얻기 위해, 사용중인 연산 파라미터의 채널에 대응하는 채널에 있는 선택된 층에 대한 입력 데이터의 데이터에 관해 선택된 층의 연산을 수행하는 단계; 및 부분적인 연산 결과 어레이에 기초한 선택된 층의 하나 이상의 출력 데이터를 발생시키는 단계를 포함한다.
본 개시물의 또 다른 양태는 콘볼루션 신경망에서의 연산들을 수행하기 위한 장치에 관한 것으로, 이러한 장치는 하나 이상의 프로세서에 의해 실행될 때 하나 이상의 프로세서가 수행하는 명령어(instruction)들을 저장하는 메모리와 하나 이상의 프로세서를 포함하고, 복수의 연산 파라미터를 포함하는 연산 파라미터 어레이를 얻기 위해, 콘볼루션 신경망에서의 선택된 층의 웨이트 파라미터를 깊이의 치수들 중 적어도 하나와 다수의 커널들로 분할하며, 이 경우 연산 파라미터 어레이의 각각의 행에서의 각각의 연산 파라미터들은 가중 파라미터의 커널들의 한 세트의 동일한 서브세트로부터의 것이고, 각각 상이한 채널을 가지며, 연산 파라미터의 각각의 열에서의 각각의 연산 파라미터들은 각각 웨이트 파라미터의 커널들의 세트의 상이한 서브세트들로부터의 것이고 하나 이상의 동일한 채널을 가지며, 연산 파라미터 어레이에서의 각각의 연산 파라미터를 사용함으로써, 복수의 부분 연산 결과들을 포함하는 부분적인 연산 결과 어레이를 얻기 위해, 사용중인 연산 파라미터의 채널에 대응하는 채널에 있는 선택된 층에 대한 입력 데이터의 데이터에 관해 선택된 층의 연산을 수행하고; 부분적인 연산 결과 어레이에 기초한 선택된 층의 하나 이상의 출력 데이터를 발생시킨다.
본 개시물의 또 다른 양태는 콘볼루션 신경망에서의 연산들을 수행하기 위한 장치에 관한 것으로, 이러한 장치는 스플리터(splitter)를 포함하는데, 이러한 스플리터는 복수의 연산 파라미터를 포함하는 연산 파라미터 어레이를 얻기 위해, 콘볼루션 신경망에서의 선택된 층의 웨이트 파라미터를 깊이의 치수들 중 적어도 하나와 커널들로 분할하도록 구성되며, 이 경우 연산 파라미터 어레이의 각각의 행에서의 각각의 연산 파라미터들은 가중 파라미터의 커널들의 한 세트의 동일한 서브세트로부터의 것이고, 각각 상이한 채널을 가지며, 연산 파라미터의 각각의 열에서의 각각의 연산 파라미터들은 각각 웨이트 파라미터의 커널들의 세트의 상이한 서브세트들로부터의 것이고 하나 이상의 동일한 채널을 가지며, 상기 장치는 연산 파라미터 어레이에서의 각각의 연산 파라미터를 사용함으로써, 복수의 부분 연산 결과들을 포함하는 부분적인 연산 결과 어레이를 얻기 위해, 사용중인 연산 파라미터의 채널에 대응하는 채널에 있는 선택된 층에 대한 입력 데이터의 데이터에 관해 선택된 층의 연산을 수행하도록 구성되고, 상기 장치는 그러한 부분 연산 결과 어레이에 기초한 선택된 층의 하나 이상의 출력 데이터를 발생시키도록 구성된 발생기(generator)를 포함한다.
본 개시물의 또 다른 양태는 콘볼루션 신경망에서의 연산들을 수행하기 위해 구성되는 프로세서에 의해 실행될 때, 그러한 프로세서가 복수의 연산 파라미터를 포함하는 연산 파라미터 어레이를 얻기 위해, 콘볼루션 신경망에서의 선택된 층의 웨이트 파라미터를 깊이의 치수들 중 적어도 하나와 커널들로 분할하는 것으로서, 이 경우 연산 파라미터 어레이의 각각의 행에서의 각각의 연산 파라미터들은 가중 파라미터의 커널들의 한 세트의 동일한 서브세트로부터의 것이고, 각각 상이한 채널을 가지며, 연산 파라미터의 각각의 열에서의 각각의 연산 파라미터들은 각각 웨이트 파라미터의 커널들의 세트의 상이한 서브세트들로부터의 것이고 하나 이상의 동일한 채널을 가지는, 상기 분할하는 것, 연산 파라미터 어레이에서의 각각의 연산 파라미터를 사용함으로써, 복수의 부분 연산 결과들을 포함하는 부분적인 연산 결과 어레이를 얻기 위해, 사용중인 연산 파라미터의 채널에 대응하는 채널에 있는 선택된 층에 대한 입력 데이터의 데이터에 관해 선택된 층의 연산을 수행하는 것; 및 부분적인 연산 결과 어레이에 기초한 선택된 층의 하나 이상의 출력 데이터를 발생시키는 것을 수행하게 하는 명령어들을 저장하는 비일시적(non-temporary) 저장 매체에 관한 것이다.
본 개시물의 실시예에 따른 방법을 통해, 하드웨어의 작동 효율 또는 활용이 향상될 수 있고, 파라미터 사이즈에 관한 하드웨어의 제한(limitation)이 또한 회피될 수 있다.
도 1은 본 개시물의 일 실시예에 따른 전형적인 방법의 흐름 차트를 보여주는 도면.
도 2는 본 개시물의 일 실시예에 따른 대응하는 어레이 표현과 웨이트 파라미터의 일 예를 보여주는 도면.
도 3은 본 개시물의 일 실시예에 따른 웨이트 파라미터를 분할하는 전형적인 방식을 보여주는 도면.
도 4는 본 개시물의 일 실시예에 따른 입력 데이터에 따른 웨이트 파라미터를 뽀개는 예를 보여주는 도면.
도 5는 본 개시물의 일 실시예에 따른 분할된 연산 파라미터들을 사용하여 연산들을 수행하는 예를 보여주는 도면.
도 6은 본 개시물의 일 실시예에 따른 출력 데이터를 발생시키는 예를 보여주는 도면.
도 7은 본 개시물의 일 실시예에 따른 출력 데이터를 발생시키는 예를 보여주는 도면.
도 8은 본 개시물의 일 실시예에 따른 출력 데이터를 발생시키는 예를 보여주는 도면.
도 9는 본 개시물의 일 실시예에 따른 출력 데이터를 발생시키는 예를 보여주는 도면.
도 10은 본 개시물의 일 실시예에 따른 출력 데이터를 발생시키는 예를 보여주는 도면.
도 11은 본 개시물의 일 실시예에 따른, 본 개시물의 실시예에 따른 방법을 구현하기 위한 장치의 블록도를 보여주는 도면.
도 12는 본 개시물의 일 실시예에 따른, 본 개시물의 실시예에 따른 방법을 구현하기 위한 장치의 블록도를 보여주는 도면.
도 1은 본 개시물의 일 실시예에 따른 전형적인 방법의 흐름 차트를 보여준다. 도 1에 도시된 것처럼, 단계(S101)에서는, 콘볼루션 신경망에서의 선택된 층에 대해서, 그러한 콘볼루션 신경망에서의 선택된 층의 웨이트 파라미터는 복수의 여산 파라미터를 담고 있는 연산 파라미터 어레이를 얻기 위해, 깊이의 치수들 중 적어도 하나와 다수의 커널로 분할된다. 그런 다음, 단계(S105)에서는 단계(S101)에서 얻어진 연산 파라미터 어레이에서의 각각의 연산 파라미터가, 복수의 부분 연산 결과들을 포함하는 부분 연산 결과 어레이를 얻기 위해, 사용중인 연산 파라미터의 채널에 대응하는 채널에서 선택된 층에 대한 입력 데이터에서의 데이터에 관한 선택된 층의 연산들을 수행하기 위해 사용된다. 그런 다음, 단계(S110)에서는 단계(S105)에서 얻어진 부분적인 연산 결과에 기초한 선택된 층의 하나 이상의 출력 데이터가 발생될 수 있다.
일 실시예에서, 콘볼루션 신경망의 각각의 층에서 수행될 연산들, 각 층에서 사용될 웨이트 파라미터의 각각의 치수들에 있어서의 사이즈 및 크기가, 콘볼루션 신경망이 설계될 때 사전에 결정되거나 알려질 수 있고, 각 층들에서의 웨이트 파라미터들을 캐싱(caching)하기 위한 고속 메모리의 용량(capacity) 또는 콘볼루션 신경망을 실행시 다수의 층의 웨이트 파라미터들에 대한 또는 각 층의 웨이트 파라미터에 대한 고속 메모리에서 마련된 용량이 사전에 결정되거나 알려질 수 있거나, 또는 콘볼루션 신경망에서의 곱하기 연산과 더하기 연산을 지원하기 위해 하드웨어 회로에서 곱셈기(multiplier) 및 덧셈기(adder)의 배치가 알려진 경우에 더 양호하거나 바람직한 하드웨어 활용 또는 실행 효율을 얻도록 얼마나 많은 커널 연산들의 세트 또는 얼마나 많은 채널 연산들의 세트가 동시에 처리될 필요가 있는지가 사전에 결정되거나 알려질 수 있다.
그러므로 콘볼루션 신경망에서 분할될 필요가 있는 층들, 즉 다시 말해 단계(S101)에서 선택된 층으로서 선택될 필요가 있는, 콘볼루션 신경망에서의 층들의 웨이트 파라미터들은 고속 메모리에서의 용량, 웨이트 파라미터들에 대해 마련된 고속 메모리에서의 용량, 곱셈기 및 덧셈기들의 배치, 병렬 연산(operation parallelism)에 관한 요구 사항, 콘볼루션 신경망의 설계, 그러한 콘볼루션 신경망의 연산을 수행하기 위한 프로세스들 또는 쓰레드(thread)들의 상한 또는 하한, 특정 애플리케이션 시나리오(들)에 대한 경험 데이터 등과 같은 하나 이상의 양태(aspect)에 따라 사전에 결정될 수 있다.
몇몇 다른 실시예들에서는, 예를 들면 특정 중간층의 연산들을 실제로 수행하기 전에 콘볼루션 신경망의 연산들 동안에, 고속 메모리의 용량, 웨이트 파라미터에 대해 마련된 고속 메모리에서의 용량, 이러한 층의 웨이트 파라미터에 대해 일반적으로 이용 가능한 고속 메모리에서의 용량, 곱셈기 및 덧셈기들의 배치, 병렬 연산에 관한 요구 사항, 콘볼루션 신경망의 설계, 프로세서 및/또는 연산 시스템의 일반적인 성능 등과 같은 하나 이상의 양태들에 따라 이러한 층의 웨이트 파라미터들이 분할될 필요가 있다고 결정될 수 있다. 만약 필요하다면, 이러한 층은 단계(S101)에서 선택된 층으로서 간주될 수 있다.
몇몇 다른 실시예들에서는, 예를 들면 일정한 중간층의 연산을 실제로 수행하기 전에 콘볼루션 신경망이 작동하는 동안, 중간층으로부터 시작하는 복수의 층에서 웨이트 파라미터(들)가 분할될 필요가 있는 층이 어느 층(들)이고, 고속 메모리에서의 용량, 웨이트 파라미터(들)에 대해 마련된 고속 메모리에서의 용량, 이러한 층(들)의 웨이트 파라미터(들)에 대해 일반적으로 이용 가능한 고속 메모리에서의 용량, 곱셈기 및 덧셈기들의 배치, 병렬 연산에 관한 요구 사항, 콘볼루션 신경망의 설계, 프로세서 및/또는 연산 시스템의 일반적인 성능 등과 같은 하나 이상의 양태들에 따라 어느 층(들)이 선택된 층으로서 간주될 수 있는지가 또한 결정될 수 있다.
몇몇 다른 실시예에서는, 콘볼루션 신경망에서 보통 하나 이상의 뒤쪽 층들이 더 큰 웨이트 파라미터들을 가지고, 따라서 콘볼루션 신경망에서 하나 이상의 뒤쪽 층들이 콘볼루션 신경망을 설계하는 동안에 단계(S101)에서 선택된 층으로서 간주될 수 있다.
몇몇 다른 실시예에서는, 콘볼루션 신경망의 특정 층이 만약 그것이 집합적으로 완전한 입력 데이터를 구성하는 복수의 부분적인 입력 데이터를 받고, 그러한 부분적인 입력 데이터 중 임의의 2개가 동일한 채널을 공유하지 않는다면, 즉 다시 말해 입력 특징 데이터가 깊이 방향으로 복수의 부분적인 입력 데이터로 분할된다면 단계(S101)에서 선택된 층으로서 간주될 수 있고, 그러한 복수의 부분적인 입력 데이터는 각각 그러한 층에 제공된다.
몇몇 다른 실시예에서는, 콘볼루션 신경망에서의 각각의 층의 웨이트 파라미터가 전술한 바와 같은 임의의 사전 결정 또는 실시간 결정 없이, 분할될 수 있다. 다시 말해, 콘볼루션 신경망에서의 각각의 층은 단계(S101)에서 선택된 층으로서 간주될 수 있다.
또한, 단계(S101)에서는 콘볼루션 신경망에서의 특정 층(들)이 선택된 층으로서 간주될 수 있는지를 결정하는 것이 이루어질 수 있다.
연산 결과들이 분할(splitting)이 있거나 없는 경우와 일치되도록 유지하기 위해, 선택된 층의 웨이트 파라미터는 깊이의 치수들 중 적어도 하나(즉, 채널 방향)와 커널의 개수로 분할될 수 있다. 만약 각각의 행이 각각의 커널의 상이한 채널에 대응하고, 각각의 열이 동일한 채널에서의 각각의 커널들의 한 부분에 대응하는, 웨이트 파라미터가 깊이의 치수와 다수의 커널의 치수로 하나의 어레이로서 고려된다면, 선택된 층의 웨이트 파라미터를 깊이의 치수 중 적어도 하나와 다수의 커널로 분할하는 것은 행 방향 및/또는 열 방향에서의 몇몇 부분들로 이러한 어레이를 나누는 것으로 간주될 수 있다.
도 2는 본 개시물의 일 실시예에 따른 대응하는 어레이 표현과 웨이트 파라미터의 일 예를 보여준다.
3개의 커널(K1 내지 K3)을 가지는 웨이트 파라미터가 도 2에서 화살표의 좌측에 도시되어 있고, 각각의 커널(K1 또는 K2 또는 K3)은 3개의 채널(C1 내지 C3)을 가진다. 커널(K1)의 3개의 채널은 각각 K1_C1, K1_C2, 및 K1_C3로서 표현되고, 커널(K2)의 3개의 채널은 각각 K2_C1, K2_C2, 및 K2_C3로서 표현되며, 커널(K3)의 3개의 채널은 각각 K3_C1, K3_C2, 및 K3_C3로서 표현된다.
깊이의 2개의 치수와 커널의 개수로 표현한 어레이 표현은 도 2에서 화살표의 우측에 도시되어 있다. 이러한 어레이는 3개의 행과 3개의 열을 가진다. 커널(K1)의 3개의 채널(K1_C1, K1_C2, 및 K1_C3)은 어레이의 제1 행에 대응하고, 커널(K2)의 3개의 채널(K2_C1, K2_C2, 및 K2_C3)은 어레이의 제2 행에 대응하며, (K3)의 3개의 채널(K3_C1, K3_C2, 및 K3_C3)은 어레이의 제3 행에 대응한다. 채널(C1)에 대응하는 커널(K1 내지 K3)의 부분들(K1_C1, K2_C1, 및 K3_C1)은 어레이의 제1 열에 대응하고, 채널(C2)에 대응하는 커널(K1 내지 K3)의 부분들(K1_C2, K2_C2, 및 K3_C2)은 어레이의 제2 열에 대응하며, 채널(C3)에 대응하는 커널(K1 내지 K3)의 부분들(K1_C3, K2_C3, 및 K3_C3)은 어레이의 제3 열에 대응한다.
콘볼루션 신경망에서의 웨이트 파라미터들은 도 2에 도시된 예에 국한되지는 않지만, 임의의 다수의 커널과 임의의 다수의 채널을 가질 수 있다는 점이 이해되어야 한다.
그러므로 전술한 바와 같이, 선택된 층의 웨이트 파라미터를 깊이의 치수들 중 적어도 하나와 다수의 커널로 분할하는 것은 행 방향 및/또는 열 방향에서 대응하는 어레이를 나누는 것으로 간주될 수 있다.
도 3은 본 개시물의 일 실시예에 대응하는 웨이트 파라미터를 분할하는 전형적인 방식을 보여준다.
일 예에서, 도 2에서의 어레이는 도 3(a)에서 도시된 것과 같은 열들에 따라 3개의 부분으로 나누어질 수 있고(즉, 웨이트 파라미터는 깊이 치수에서 3개의 부분으로 나누어진다), 따라서 채널(C1)에 대응하는 커널들(K1 내지 K3)의 부분들, 채널(C2)에 대응하는 커널들(K1 내지 K3)의 부분들, 및 채널(C3)에 대응하는 커널들(K1 내지 K3)의 부분들에 각각 대응하는 3개의 연산 파라미터를 포함하는, 3개의 열과 1개의 행을 가지는 연산 파라미터들의 어레이를 형성한다.
일부 다른 예에서는, 도 2에서의 어레이가 도 3(b)에 도시된 행들에 따른 3개의 부분으로 나누어질 수 있고(즉, 웨이트 파라미터는 다수의 커널의 치수에서 3개의 부분으로 나누어진다), 따라서 커널들(K1 내지 K3)에 각각 대응하는 3개의 연산 파라미터를 포함하는 1개의 열과 3개의 행을 가지는 연산 파라미터들의 어레이를 형성한다.
몇몇 다른 예들에서는, 도 2에서의 어레이가 도 3(c)에 도시된 바와 같이 3개의 행 및 3개의 열로 나누어질 수 있고(즉, 웨이트 파라미터는 9개의 부분으로 된 깊이의 치수들과 다수의 커널로 나누어진다), 따라서 각각의 커널의 각각의 채널에 각각 대응하는 9개의 연산 파라미터를 포함하는, 3개의 행 및 3개의 열을 가지는 연산 파라미터들의 어레이를 형성한다.
몇몇 다른 예들에서는, 도 2에서의 어레이가 도 3(d)에 도시된 바와 같이 1개의 행과 2개의 열을 가지는 연산 파라미터들의 어레이를 형성하기 위해 나누어질 수 있고(즉, 웨이터 파라미터는 깊이 치수에서 2개의 부분으로 나누어진다), 이는 2개의 연산 파라미터를 포함한다. 제1 열에서의 연산 파라미터는 채널(C1)에서의 커널들(K1 내지 K3)의 부분들(도 3에서 KI_C1, K2_C1, K2_C1으로 표현된)에 대응하고, 제2 열에서의 연산 파라미터는 채널(C1, C2)에서의 커널들(K1 내지 K3)의 부분들(도 3에서 K1_(C2-C3), K2_(C2-C3), K3_(C2-C3)으로 표현된)에 대응한다.
몇몇 다른 예에서는, 도 2에서의 어레이가 6개의 연산 파라미터를 포함하는, 도 3(e)에 도시된 바와 같은 2개의 열과 3개의 열을 가지는 연산 파라미터들의 어레이(즉, 웨이트 파라미터는 깊이의 치수들과 다수의 커널 모두에서 6개의 부분으로 나누어진다)를 형성하기 위해 나누어질 수 있다. 제1 행에서의 연산 파라미터들은 채널(C1, C2, C3)에서의 커널들(K1, K2)의 부분들에 각각 대응하고, 제2 행에서의 연산 파라미터들은 채널(C1, C2, C3)에서의 커널(K3)의 부분들에 각각 대응한다.
몇몇 다른 예에서는, 도 2에서의 어레이가 4개의 연산 파라미터를 포함하는, 도 3(f)에 도시된 바와 같은 2개의 행과 2개의 열을 가지는 연산 파라미터들의 어레이(즉, 웨이트 파라미터는 깊이의 치수들과 다수의 커널 모두에서 4개의 부분으로 나누어진다)를 형성하기 위해 나누어질 수 있다. 제1 행과 제1 열에서의 연산 파라미터들은 채널들(C1, C2)에서의 커널(K1)의 부분들(도 3에서 K1_(C1-C2)로 나타낸)에 대응하고, 제1 행과 제2 열에서의 연산 파라미터는 채널(C3)에서의 커널(K1)의 부분에 대응하며, 제1 행과 제2 열에서의 연산 파라미터는 채널들(C1, C2)에서의 커널들(K2, K3)의 부분들에 대응하고, 제2 행과 제2 열에서의 연산 파라미터는 채널(C3)에서의 커널들(K2, K3)의 부분들에 대응한다.
깊이와 커널 번호의 치수들 중 적어도 하나에서의 웨이트 파라미터의 분할은 도 3에 도시된 예들에 국한되지 않는다는 점이 이해되어야 한다. 이러한 웨이트 파라미터는 복수의 연산 파라미터를 담고 있는 연산 파라미터들의 어레이를 얻기 위해 깊이 및 커널 번호의 치수들 중 적어도 하나에서 임의의 적절한 방식으로 분할될 수 있어서, 그러한 연산 파라미터 어레이의 각각의 행에서의 각각의 연산 파라미터들은 웨이트 파라미터의 커널들의 세트의 동일한 서브세트로부터의 것이고, 각각 상이한 채널을 가지며, 그러한 연산 파라미터 어레이의 각각의 열에서의 각각의 연산 파라미터들은 각각 웨이트 파라미터의 커널들의 세트의 상이한 서브세트들로부터의 것이고, 동일한 하나 이상의 채널을 가진다.
전술한 바와 같이, 단계(S101)에서는 선택된 층의 웨이트 파라미터를 분할할지 여부는 다양한 기준에 따라 결정될 수 있고, 따라서 또한 그러한 기준에 따라서 분할에 의해 얻어진 연산 파라미터 어레이가 관련 요구 사항을 충족시키는지 여부가 결정될 수 있다.
일 실시예에서, 단계(S101)에서 웨이트 파라미터는, 분할에 의해 얻어진 연산 파라미터 어레이에서의 각각의 연산 파라미터의 사이즈가 제1 임계치(threshold) 이하일 수 있도록, 그러한 웨이트 파라미터의 사이즈가 제1 임계치를 초과할 때 분할될 수 있다.
일 예에서, 제1 임계치는 웨이트 파라미터의 캐싱을 위한 고속 메모리의 용량 또는 그러한 웨이트 파라미터를 저장하기 위해 이용 가능한 고속 메모리의 용량에 따라 설정될 수 있다.
몇몇 다른 예에서는, 제1 임계치가 고속 메모리의 용량의 1/5, 1/2, 2/3로서 설정될 수 있거나, 그러한 제1 임계치는 고속 메모리의 용량과 같게 설정될 수 있다.
몇몇 다른 예에서는, 제1 임계치가 콘볼루션 신경망의 적용 시나리오들에 관련되는 고려 사항(consideration)들과 결합한 경험적 또는 통계적 데이터에 기초한 콘볼루션 신경망의 설계 절차(procedure)에서 그러한 콘볼루션 신경망의 설계자에 의해 설정될 수 있다. 예를 들면, 그러한 제1 임계치는 32kb, 64kb, 128kb 등으로 설정될 수 있다.
제1 임계치의 설정은 전술한 바와 같은 예들에 국한되지 않는다는 점이 이해되어야 한다. 그러한 제1 임계치는 필요시 임의의 알맞거나 바람직한 값으로서 설정될 수 있다. 또, 제1 임계치가 전체 콘볼루션 신경망에 대해 설정될 수 있고, 각 층에 적용될 수 있거나 제1 임계치들이 각각의 선택된 층들에 대해 설정될 수 있다. 또, 제1 임계치는 고정된 값을 가질 수 있거나, 시스템(하드웨어 및/또는 소프트웨어를 포함하는)의 상태(예컨대, 성능, 이용 가능한 자원 등) 및/또는 학습 상태(예컨대, 콘볼루션 신경망에서의 각 층의 파라미터들은 전향 추론 프로세스에서 학습에 의해 역동적으로 조정될 수도 있다)에 따라 콘볼루션 신경망의 전향 추론 프로세스에서 갱신(update)될 수 있다.
몇몇 다른 실시예에서는, 단계(S101)에서 웨이트 파라미터의 커널들의 개수가 제2 임계치를 초과할 때 웨이트 파라미터가 분할될 수 있어서, 분할에 의해 얻어진 연산 파라미터 어레이에서의 각각의 연산 파라미터의 커널들의 개수가 제2 임계치 이하일 수 있다.
일 예에서, 제2 임계치는 콘볼루션 신경망의 적용 시나리오들에 관련된 고려 사항과 결합한 경험적 또는 통계적 데이터에 기초한 콘볼루션 신경망의 설계 절차에서 그러한 콘볼루션 신경망의 설계자에 의해 설정될 수 있다. 예를 들면, 그러한 제2 임계치는 8kb, 32kb, 64kb 등으로 설정될 수 있다.
몇몇 다른 예에서는, 제2 임계치가 고속 메모리의 용량과 각각의 커널의 사이즈에 따라 설정될 수 있다. 예를 들면, 제2 임계치는 각 커널의 사이즈에 대한 웨이트 파라미터를 저장하기 위해 이용 가능한 고속 메모리의 용량의 비 이하인 값으로 설정될 수 있다.
몇몇 다른 예에서는, 예를 들면 덧셈기들에 대한 선택/인에이블링(enabling) 회로가 제거될 수 있거나 비교적으로 양호한 병렬 처리가 달성될 수 있는 것과 같은 N개의 콘볼루션 커널의 경우 소프트웨어 및/또는 하드웨어의 비용 및 성능이 비교적으로 양호한 신경망의 연산을 지원하기 위한 하드웨어에 관련되는 파라미터들에 기초한 결정이 이루어진다면, 제2 임계치는 N으로 설정될 수 있다. 예를 들면, 웨이트 파라미터의 커널들의 개수가 K이고, 제2 임계치가 N이라고 가정하면, 연산 파라미터 어레이는 K/N개의 행을 가지도록 만들어질 수 있고, 각 행에서의 각각의 연산 파라미터는 N개 이하인 커널을 가지며, 이는 병렬 모드에서 각각의 연산 파라미터에 대한 연산들을 수행할 때 병렬 계산 또는 자원 활용을 개선하는 데 있어서 유익할 수 있다.
제2 임계치의 설정은 위 예들에 국한되지 않는다는 점이 이해되어야 한다. 제2 임계치는 필요시 알맞거나 바람직한 값으로서 설정될 수 있다. 또, 제2 임계치는 전체 콘볼루션 신경망에 대해 설정될 수 있고, 그러한 제2 임계치는 서로에 적용될 수 있거나, 제2 임계치들이 각각의 선택된 층들에 대해 설정될 수 있다. 또, 제2 임계치는 고정된 값을 가질 수 있거나, 시스템(하드웨어 및/또는 소프트웨어를 포함하는)의 상태(예컨대, 성능, 이용 가능한 자원 등) 및/또는 학습 상태(예컨대, 콘볼루션 신경망에서의 각 층의 파라미터들은 전향 추론 프로세스에서 학습에 의해 역동적으로 조정될 수도 있다)에 따라 콘볼루션 신경망의 전향 추론 프로세스에서 갱신(update)될 수 있다.
몇몇 다른 실시예들에서는 단계(S101)에서, 웨이트 파라미터의 커널들의 개수가 제1의 미리 결정된 개수 이상인 경우 웨이트 파라미터가 분할될 수 있어서, 분할에 의해 얻어진 연산 파라미터 어레이의 행들의 개수는 제1의 미리 결정된 개수의 배수와 같을 수 있다.
일 예에서, 제1의 미리 결정된 개수는 콘볼루션 신경망에서의 연산들을 처리하기 위해 사용된 프로세서들(CPU, GPU, 또는 전용 가속기 등과 같은) 또는 프로세서 코어(core)들의 개수에 따라 설정될 수 있다.
몇몇 다른 예에서는, 제1의 미리 결정된 개수가 콘볼루션 신경망에서 특정 웨이트 파라미터(예를 들면, 가장 큰 사이즈를 갖는 웨이트 파라미터 또는 가장 작은 사이즈를 갖는 웨이트 파라미터)의 커널들의 사이즈에 대한 고속 메모리의 용량(예를 들면, 웨이트 파라미터를 저장하기 위해 마련된 용량 또는 총 용량)의 비에 따라 설정될 수 있다.
몇몇 다른 예에서는, 예를 들면 덧셈기들에 대한 선택/인에이블링 회로가 제거될 수 있거나 비교적으로 양호한 병렬 처리가 달성될 수 있는 것과 같은, N개의 콘볼로션 커널의 경우에 소프트웨어 및/또는 하드웨어의 비용 및 성능이 비교적으로 양호한 신경망의 연산들을 지원하기 위한 하드웨어에 관련되는 파라미터들에 기초하여 결정이 이루어진다면, 제1의 미리 결정된 개수가 N으로 설정될 수 있다. 그러한 설정은 각각의 연산 파라미터에 대한 연산들을 병렬 모드에서 수행할 때 병렬 계산 또는 자원 활용을 향상시키기 위해 유익할 수 있다.
제1의 미리 결정된 개수의 설정이 위 예들에 국한되지 않는다는 점이 이해되어야 한다. 제1의 미리 결정된 개수는 필요시 임의의 알맞거나 바람직한 값으로서 설정될 수 있다. 또, 제1의 미리 결정된 개수는 전체 콘볼루션 신경망에 대해 설정될 수 있고, 제1의 미리 결정된 개수는 서로에 적용될 수 있거나, 제1의 미리 결정된 개수들이 각각의 선택된 층들에 대해 설정될 수 있다. 또, 제1의 미리 결정된 개수는 고정된 값을 가질 수 있거나, 시스템(하드웨어 및/또는 소프트웨어를 포함하는)의 상태(예컨대, 성능, 이용 가능한 자원 등) 및/또는 학습 상태(예컨대, 콘볼루션 신경망에서의 각 층의 파라미터들은 전향 추론 프로세스에서 학습에 의해 역동적으로 조정될 수도 있다)에 따라 콘볼루션 신경망의 전향 추론 프로세스에서 갱신될 수 있다.
몇몇 다른 실시예에서는 단계(S101)에서, 분할에 의해 얻어진 연산 파라미터에서의 각각의 연산 파라미터가 제3 임계치 또는 더 적은 개수의 채널을 가지도록, 웨이트 파라미터의 채널들의 개수가 제3 임계치를 초과하는 경우 그러한 웨이트 파라미터가 분할될 수 있다.
일 예에서, 제3 임계치는 콘볼루션 신경망의 적용 시나리오들에 관련되는 고려 사항과 결합하여 경험적 또는 통계적 데이터에 기초한 콘볼루션 신경망의 설계 절차에서 콘볼루션 신경망의 설계자에 의해 설정될 수 있다. 예를 들면, 그러한 제3 임계치는 8, 32, 64 등으로 설정될 수 있다.
몇몇 다른 예에서는, 콘볼루션 신경망에서 특정 웨이트 파라미터(예를 들면, 가장 큰 사이즈를 갖는 웨이트 파라미터 또는 가장 작은 사이즈를 갖는 웨이트 파라미터)의 단일 채널 내의 사이즈에 대한 고속 메모리의 용량(예를 들면, 웨이트 파라미터를 저장하기 위해 마련된 용량 또는 총 용량)의 비에 따라 설정될 수 있다.
몇몇 다른 실시예에서는, 신경망의 곱셈 연산과 덧셈 연산을 지원하기 위한 하드웨어 회로는 곱셈기와 덧셈기의 하나 이상의 그룹의 배치를 포함할 수 있고, 곰셈기들과 덧셈기들의 각 그룹의 배치는 하나 이상의 곱셈기 또는 하나 이상의 덧셈기를 포함할 수 있다. 만약 웨이트 파라미터가 깊이(M)를 가질 때 곱셈기들과 덧셈기들이 가장 높은(또는 비교적 높은) 사용 효율을 가지고, 예를 들면 선택/인에이블링 회로의 설계/배치가 제거될 수 있는 곱셈기 및 덧셈기의 각각의 그룹의 배치에 기초하여 결정된다면, 제3 임계치가 M으로 설정될 수 있다. 예를 들면, 웨이트 파라미터가 깊이(D)를 가지고 제3 임계치가 M이라고 가정하면, 연산 파라미터 어레이는 D/M개의 열을 가지게 만들어질 수 있고, 각 열에서의 각각의 연산 파라미터는 M 이하인 깊이를 가지며, 이는 각각의 연산 파라미터에 대한 연산들을 병렬 모드에서 수행할 때 병렬 계산 또는 자원 활용을 향상시키기 위해 유익할 수 있다.
제3 임계치를 설정하는 것은 위 예들에 국한되지 않는다는 점이 이해되어야 한다. 이러한 제3 임계치는 필요시 임의의 알맞거나 바람직한 값으로서 설정될 수 있다. 또, 제3 임계치는 전체 콘볼루션 신경망에 대해 설정될 수 있고, 그러한 제3 임계치는 서로에 대해 적용될 수 있거나, 제3 임계치들이 각각의 선택된 층들에 대해 설정될 수 있다. 또, 제3 임계치는 고정된 값을 가질 수 있거나, 시스템(하드웨어 및/또는 소프트웨어를 포함하는)의 상태(예컨대, 성능, 이용 가능한 자원 등) 및/또는 학습 상태(예컨대, 콘볼루션 신경망에서의 각 층의 파라미터들은 전향 추론 프로세스에서 학습에 의해 역동적으로 조정될 수도 있다)에 따라 콘볼루션 신경망의 전향 추론 프로세스에서 갱신될 수 있다.
몇몇 다른 실시예에서, 단계(S101)에서는 분할에 의해 얻어진 연산 파라미터 어레이의 열들의 개수가 다수의 제2의 미리 결정된 개수와 같을 수 있도록, 웨이트 파라미터의 채널들의 개수가 제2의 미리 결정된 개수 이상인 경우에 웨이트 파라미터가 분할될 수 있다.
일 예에서, 제2의 미리 결정된 개수는 프로세서들(CPU, GPU 또는 전용 가속기 등과 같은) 또는 콘볼루션 신경망에서의 연산들을 처리하기 위해 사용된 프로세서 코어들의 개수에 따라 설정될 수 있다.
몇몇 다른 예에서는, 제2의 미리 결정된 개수가 콘볼루션 신경망에서 특정 웨이트 파라미터(예를 들면, 가장 큰 사이즈를 갖는 웨이트 파라미터 또는 가장 작은 사이즈를 갖는 웨이트 파라미터)의 깊이에 대한 고속 메모리의 용량(예를 들면, 웨이트 파라미터를 저장하기 위해 마련된 용량 또는 전체 용량)의 비에 따라 설정될 수 있다.
몇몇 다른 예에서는, 신경망의 곱셈 연산과 덧셈 연산을 지원하기 위한 하드웨어 회로가 곱셈기와 덧셈기의 하나 이상의 그룹의 배치를 포함할 수 있고, 곱셈기들과 덧셈기들의 각각의 그룹의 배치는 하나 이상의 곱셈기와 하나 이상의 덧셈기를 포함할 수 있다. 만약 그것의 웨이트 파라미터가 깊이(M)를 가질 때 곱셈기와 덧셈기가 가장 높은(또는 비교적 높은) 사용 효율을 가지고, 예를 들면 선택/인에이블링 회로의 설계/배치가 제거될 수 있는 곱셈기 및 덧셈기의 각각의 그룹의 배치에 기초하여 결정된다면, 제2의 미리 결정된 개수가 M으로서 설정될 수 있다. 그러한 설정은 각각의 연산 파라미터에 대한 연산들을 병렬 모드에서 수행할 때 병렬 계산 또는 자원 활용을 개선하는데 있어서 유익할 수 있다.
제2의 미리 결정된 개수의 설정이 위 예들에 국한되지 않는다는 점이 이해되어야 한다. 제2의 미리 결정된 개수는 필요시 임의의 알맞거나 바람직한 값으로서 설정될 수 있다. 또, 제2의 미리 결정된 개수는 전체 콘볼루션 신경망에 대해 설정될 수 있고, 제2의 미리 결정된 개수는 서로에 대해 적용될 수 있거나, 제2의 미리 결정된 개수가 각각의 선택된 층들에 대해 설정될 수 있다. 또, 제2의 미리 결정된 개수는 고정된 값을 가질 수 있거나, 시스템(하드웨어 및/또는 소프트웨어를 포함하는)의 상태(예컨대, 성능, 이용 가능한 자원 등) 및/또는 학습 상태(예컨대, 콘볼루션 신경망에서의 각 층의 파라미터들은 전향 추론 프로세스에서 학습에 의해 역동적으로 조정될 수도 있다)에 따라 콘볼루션 신경망의 전향 추론 프로세스에서 갱신될 수 있다.
몇몇 다른 실시예에서, 콘볼루션 신경망의 특정 층이 완전한 입력 데이터를 집합적으로 구성하는 복수의 부분적인 입력 데이터를 받고, 부분적인 입력 데이터 중 임의의 2개가 동일한 채널을 공유하지 않거나, 즉 다시 말해 입력 특징 데이터가 복수의 부분적인 입력 데이터로 깊이 방향에서 분할되고 복수의 부분적인 입력 데이터가 층에 각각 제공하면, 단계(S101)에서 분할에 의해 얻어진 연산 파라미터 어레이가 받은 복수의 부분적인 입력 데이터의 개수와 같은 다수의 열을 가지고, 각 열에서의 모든 연산 파라미터가 받은 복수의 부분적인 입력 데이터 중 하나와 동일한 하나 이상의 채널에 대응하도록 이러한 층의 웨이트 파라미터는 각각의 부분적인 입력 데이터에 따라 분할될 수 있다.
예를 들면, 도 4에 도시된 것처럼 2개의 입력 데이터(FD1, FD2)가 콘볼루션 신경망에서 특정 층에서 수신된다고 가정하면, 입력 데이터(FD1, FD2)가 실제로 완전한 특징 데이터(FD)(도 4에서 화살표 A1에 의해 표시된 것처럼)의 2개의 부분에 대응한다고 판단될 수 있다. 입력 데이터(FD1)는 채널(C1, C2)에서 특징 데이터(FD)의 부분(도 4에서 각각 FD_C1과 FD_C2로서 도시된)에 대응하고, 입력 데이터(FD2)는 채널 C3 내지 C5에서의 특징 데이터(FD)의 부분(도 4에서 각각 FD_C3, FD_C4, 및 FD_C5로서 도시된)에 대응한다. 전술한 바와 같이, 이러한 층은 단계(S101)에서 선택된 층으로서 사용될 수 있거나, 위 판단은 수행될 수 있고 이러한 층은 단계(S101)에서 선택된 층으로서 취해질 수 있다.
그러한 경우, 이러한 층의 2개의 커널(K1, K2)을 포함하는 웨이트 파라미터는 수신된 입력 데이터(FD1, FD2)에 따른 2개의 부분으로 깊이 치수에서 분할될 수 있고(도 4에서 화살표 A2에 의해 표시된 것처럼), 이러한 2개의 부분 중 하나는 입력 데이터(FD1)에 대응하고, 부분적인 커널인 FD1_K1(커널(K1)의 채널(C1, C2)을 포함하는)과 FD1_K2(커널(K2)의 채널(C1, C2)을 포함하는)을 포함하며, 2개의 부분 중 나머지 하나는 입력 데이터(FD2)에 대응하고, 부분적인 커널인 FD2_K1(커널(K1)의 채널(C3 내지 C5)을 포함하는)과 FD1_K2(커널(K2)의 채널(C3 내지 C5)을 포함하는)을 포함한다. 즉, 웨이트 파라미터에 대응하는 어레이는 2개의 부분으로 수직으로 나누어지고(도 4에서 화살표 A3로 표시된 것처럼), 그로 인해 1개의 행과 2개의 열(즉, 2개의 연산 파라미터)을 포함하는 연산 파라미터 어레이(도 4에서 화살표 A4에 의해 가리켜진 부분)를 발생시킨다. 제1 행과 제1 열에서의 연산 파라미터는 입력 데이터(FD1)와 동일한 복수의 채널(즉, C1과 C2)에 대응하고, 제1 행과 제2 열에서의 연산 파라미터는 입력 데이터(FD2)와 동일한 복수의 채널(즉, C3 내지 C5)에 대응한다.
몇몇 다른 실시예에서, 단계(S101)에서는 웨이트 파라미터를 분할할지 여부는 복수의 기준에 따라 결정될 수 있고, 연산 파라미터들의 얻어진 어레이는 동시에 복수의 조건을 만족시킬 수 있다.
일 예에서, 웨이트 파라미터는 얻어진 연산 파라미터 어레이에서의 각각의 연산 파라미터가 제1 임계치 이하인 사이즈를 가지고, 제2 임계치 이하인 다수의 커널을 포함하도록 분할될 수 있다.
몇몇 다른 예에서는, 얻어진 연산 파라미터 어레이가 제1의 미리 결정된 개수의 배수와 같은 다수의 행을 가지고, 연산 파라미터 어레이들에서의 각각의 연산 파라미터가 제3 임계치 이하인 다수의 채널을 가지도록 웨이트 파라미터가 분할될 수 있다.
몇몇 다른 예에서는, 얻어진 연산 파라미터 어레이가 제1의 미리 결정된 개수의 배수와 같은 다수의 행을 가지고, 제2의 미리 결정된 개수의 배수와 같은 다수의 열을 가지도록 웨이트 파라미터가 분할될 수 있다.
몇몇 다른 예에서는, 얻어진 연산 파라미터 어레이가 제1 임계치를 초과하는 사이즈를 가지는 연산 파라미터를 포함한다면, 적어도 제1 임계치를 초과하는 사이즈를 가지는 연산 파라미터의 행 및/또는 열이, 세분된 연산 파라미터에서의 각각의 연산 파라미터가 제1 임계치 이하인 사이즈를 가지도록 깊이의 치수들 중 적어도 하나의 다수의 커널로 세분될 수 있다.
단계(S101)에서 복수의 연산 파라미터를 담고 있는 연산 파라미터 어레이를 얻은 후에는, 방법(100)이 단계(S105)로 진행할 수 있고, 이러한 단계(S105)에서는 얻어진 연산 파라미터 어레이에서의 각각의 연산 파라미터가 사용중인 연산 파라미터의 채널(들)에 대응하는 채널(들)에 있는 선택된 층에 대한 입력 데이터에서의 데이터에 선택된 층의 연산을 수행하기 위해 각각 사용될 수 있어서, 복수의 부분적인 연산 결과를 포함하는 부분적인 연산 결과 어레이를 만들어낸다.
도 5는 본 개시물의 일 실시예에 따른 분할된 연산 파라미터들을 사용하여 연산을 수행하는 일 예를 보여준다. 도 5에 도시된 것처럼, 입력 데이터(FD)에 콘볼루션 연산을 수행하기 위해 3개의 커널(K1 내지 K3)이 사용되고, 입력 데이터(FD)는 5개의 채널(FD_C1 내지 FD_C5)을 가지며, 커널(K1 내지 K3) 각각은 또한 5개의 채널, 즉 K1_C1 내지 K1_C5, K2_C1 내지 K2_C5, 및 K3_C1 내지 K3_C5를 각각 가진다고 가정한다.
도 5를 참조하면, 웨이트 파라미터는 단계(S101)에서 깊이의 치수들과 다수의 커널 모두에서 4개의 부분으로 분할된다고 가정하고, 따라서 2개의 행과 2개의 열을 포함하는 연산 파라미터 어레이가 얻어진다. 연산 파라미터 어레이의 제1 행 및 제1 열에서의 연산 파라미터는 채널(C1, C2)에서 커널(K1, K2)의 부분들에 대응하고, 제1 행 및 제2 열에서의 연산 파라미터는 채널(C3 내지 C5)에서의 커널(K1, K2)의 부분들에 대응하며, 제2 행 및 제1 열에서의 연산 파라미터는 채널(C1, C2)에서의 커널들(K3 내지 K5)의 부분들에 대응하고, 제2 행 및 제2 열에서의 연산 파라미터는 채널들(C3 내지 C5)에서의 커널들(K3 내지 K5)의 부분들에 대응한다.
단계(S105)에서는, 연산 파라미터 어레이의 제1 행 및 제1 열에서의 연산 파라미터가 채널들(C1, C2)에서 입력 데이터(FD)의 부분들에 콘볼루션 연산을 수행하기 위해 사용됨으로써, 부분적인 연산 결과인 FD'_(C1-C2)_1을 발생시키고, 연산 파라미터 어레이의 제1 행 및 제2 열에서의 연산 파라미터가 채널들(C3 내지 C5)에서 입력 데이터(FD)의 부분들에 콘볼루션 연산을 수행하기 위해 사용됨으로써, 부분적인 연산 결과인 FD'_(C3-C5)_1을 발생시키며, 연산 파라미터 어레이의 제2 행 및 제1 열에서의 연산 파라미터가 채널들(C1, C2)에서 입력 데이터(FD)의 부분들에 콘볼루션 연산을 수행하기 위해 사용됨으로써, 부분적인 연산 결과인 FD'_(C1-C2)_2를 발생시키고, 연산 파라미터 어레이의 제2 행 및 제2 열에서의 연산 파라미터가 채널들(C3 내지 C5)에서 입력 데이터(FD)의 부분들에 콘볼루션 연산을 수행하기 위해 사용됨으로써, 부분적인 연산 결과인 FD'_(C3-C5)_2를 발생시킨다.
도 5에 도시된 것처럼, 발생된 4개의 부분적인 연산 결과들은 2개의 행과 2개의 열을 가지는 부분적인 연산 결과 어레이를 형성할 수 있다. 발생된 부분적인 연산 결과 어레이는 도 5에서 양방향 화살표 밑에 도시되어 있고, 부분적인 연산 결과 어레이에서의 각각의 부분적인 연산 결과의 좀더 직관적인 표현이 도 5에서 양방향 화살표들 위에 도시되어 있다.
도 5는 콘볼루션 층의 일 예를 보여준다. 하지만, 본 개시물의 실시예들에 따른 방법의 원리들은 또한 콘볼루션 신경망에서 다른 타입의 층에 적용 가능하다. 예를 들면, 도 5에서의 특징 데이터(FD)가 나머지 층에 대한 입력 데이터로서의 역할을 하면, 복수의 연산 파라미터를 담고 있는 연산 파라미터 어레이를 얻기 위해, 단계(S101)에서 나머지 층의 웨이트 파라미터가 깊이의 치수들 중 적어도 하나와 다수의 커널로 분할될 수 있다. 그런 다음 단계(S105)에서는 연산 파라미터 어레이에서의 각각의 연산 파라미터가 대응하는 채널(들)에서의 입력 데이터에서의 데이터와 각각의 연산 파라미터를 사용함으로써 계산된 부분적인 결과들에 점대점(point-to-point) 더하기 연산들을 수행하는 것을 포함하여, 사용중인 연산 파라미터의 채널(들)에 대응하는 채널(들)에 있는 나머지 층에 대한 입력 데이터에서의 데이터에 연산을 수행하기 위해 각각 사용될 수 있다. 그러므로 복수의 부분적인 연산 결과들을 포함하는 부분적인 연산 결과 어레이가 얻어질 수 있다.
단계(S105)는 연산 파라미터들에 대해 직렬로 또는 병렬로 수행될 수 있거나, 연산 파라미터들의 행 또는 열에 대해 병렬로 수행될 수 있다.
부분적인 연산 결과 어레이를 얻은 후에는, 방법(100)이 단계(S110)로 진행하여 얻어진 부분적인 연산 결과 어레이에 기초한 하나 이상의 출력 데이터를 발생시킬 수 있다. 만약 선택된 층이 콘볼루션 신경망의 최종 출력층이라면, 전체 콘볼루션 신경망의 최종 출력으로서 얻어진 부분적인 연산 결과 어레이에 기초하여 출력 데이터가 발생될 수 있다. 만약 선택된 층이 콘볼루션 신경망의 입력층이거나 중간층(숨겨진 층)이라면, 필요시 다음의 방식 중 임의의 방식으로 발생될 수 있고, 발생된 출력 데이터가 다음 층에 제공될 수 있다.
- 선택된 층의 출력 데이터로서 그 다음 층에 부분적인 연산 결과 어레이에서의 각각의 부분적인 연산 결과를 제공하는 것;
- 얻어진 부분적인 연산 결과 어레이에 기초한 출력 데이터를 발생시키고 발생된 출력 데이터를 그 다음 층에 제공하는 것; 및
- 부분적인 연산 결과 어레이를 더 적은 수의 행 및/또는 열을 가지는 부분적인 연산 결과 어레이로 압축하도록 부분적인 연산 결과 어레이에서의 인접한 행들 및/또는 열들에서의 일부 부분적인 연산 결과들을 결합한 다음, 압축된 부분적인 연산 결과 어레이에서의 각각의 부분적인 연산 결과를 선택된 층의 출력 데이터로서 그 다음 층에 제공하는 것.
일 실시예에서, 복수의 열을 가지는 부분적인 연산 결과 어레이는 부분적인 연산 결과 어레이의 각각의 행에서의 모든 부분적인 연산 결과들에 점대점 더하기 연산을 수행함으로써 1개의 열로 압축될 수 있고, 그런 다음 압축된 부분적인 연산 결과에서의 각각의 부분적인 연산 결과는 선택된 층의 하나의 출력 데이터로서 그 다음 층에 제공될 수 있다.
예를 들면, 도 5에서 부분적인 연산 결과 어레이(FD')에 대해서는 도 6에 도시된 것처럼, 부분적인 연산 결과 어레이(FD')의 제1 행에서 모든 부분적인 연산 결과들(FD'_(C1-C2)_1 및 FD'_(C1-C2)_2)은 점대점 방식으로 더해질 수 있고, 부분적인 연산 결과 어레이(FD')의 제2 행에서 모든 부분적인 연산 결과들(FD'_(C3-C5)_1 및 FD'_(C3-C5)_2)은 점대점 방식으로 더해질 수 있으며 그로 인해 압축된 부분적인 연산 결과 어레이(FD")를 발생시킨다. 압축된 부분적인 연산 결과 어레이(FD")는 2개의 행과 1개의 열을 포함하고, 이 경우 제1 행에서의 부분적인 연산 결과(FD'_(C1-C2))는 채널들(C1, C2)에서의 부분적인 연산 결과들에 대응하고, 제2 행에서의 부분적인 연산 결과(FD'_(C3-C5))는 채널들(C3 내지 C5)에서의 부분적인 연산 결과들에 대응한다. 그런 다음, 부분적인 연산 결과들(FD'_(C1-C2)와 FD'_(C3-C5))은 2개의 출력 데이터로서 그 다음 층에 제공될 수 있다.
그런 다음, 방법(100)은 그 다음 층에 다시 적용될 수 있다. 예를 들면 전술한 바와 같이, 단계(S101)에서는 복수의 부분적인 입력 데이터를 수신하는 것에 반응하여, 분할에 의해 얻어진 연산 파라미터 어레이가 이러한 층에 의해 수신된 복수의 부분적인 입력 데이터의 개수와 같은 다수의 열을 가지도록 각각의 부분적인 입력 데이터에 따라 이러한 층의 웨이트 파라미터가 분할될 수 있고, 각 열에서의 모든 연산 파라미터는 이러한 층에 의해 수신된 복수의 부분적인 입력 데이터 중 하나와 동일한 하나 이상의 채널에 대응한다.
몇몇 다른 실시예에서는, 복수의 행을 포함하는 부분적인 연산 결과 어레이가 깊이 방향에서 부분적인 연산 결과 어레이의 각각의 열에서의 모든 부분적인 연산 결과를 함께 결합함으로써 1개의 행으로 압축될 수 있고, 그런 다음 압축된 부분적인 연산 결과 어레이에서의 각각의 부분적인 연산 결과가 선택된 층의 1개의 출력 데이터로서 그 다음 층에 각각 제공될 수 있다.
예를 들면, 도 5에서의 부분적인 연산 결과 어레이(FD')에 대해서는 도 7에 도시된 것처럼, 부분적인 연산 결과 어레이(FD')의 제1 열에서 모든 부분적인 연산 결과들(FD'_(C1-C2)_1 및 FD'_(C3-C5)_1)은 깊이 방향에서 함께 결합된 그것들 각각의 채널을 가질 수 있고, 부분적인 연산 결과 어레이(FD')의 제1 열에서의 모든 부분적인 연산 결과들(FD'_(C1-C2)_2 및 FD'_(C3-C5)_2)은 깊이 방향에서 함께 결합된 그것들 각각의 채널을 가질 수 있어서 압축된 부분적인 연산 결과 어레이(FD")를 발생시킨다. 압축된 부분적인 연산 결과 어레이(FD")는 1개의 행과 2개의 열을 포함하고, 이 경우 제1 열에서의 부분적인 연산 결과(FD'_1)와 제2 열에서의 부분적인 연산 결과(FD'_2)는 각각 채널들(C1 내지 C5)을 가진다. 그런 다음, 부분적인 연산 결과들(FD'_1, FD'_2)이 2개의 출력 데이터로서 그 다음 층에 제공될 수 있다.
그런 다음 그 다음 층에서는, 예를 들면 이러한 층의 웨이트 파라미터가 각각의 부분적인 입력 데이터에 연산을 수행하기 위해 사용될 수 있고, 그런 다음 그러한 연산에 의해 얻어진 결과들이 점대점 방식으로 더해질 수 있다. 예를 들면, 도 8에 도시된 것처럼, 도 7에 도시된 바와 같은 2개의 부분적인 입력 데이터(FD'_1, FD'_2)가 그 다음 층에서 수신되고, 그 다음 층의 웨이트 파라미터가 3개의 커널(K1 내지 K3)을 가지며, 각각의 커널은 5개의 채널(C1 내지 C5)를 포함한다. 그런 다음, 그러한 웨이트 파라미터는 2개의 부분적인 출력 데이터(FD"_1, FD"_2)를 얻도록 각각 부분적인 입력 데이터(FD'_1, FD'_2) 각각에 관한 연산을 수행하기 위해 사용될 수 있고, 2개의 부분적인 출력 데이터(FD"_1, FD"_2)가 점대점 방식으로 서로에 더해질 수 있으며, 결국에는 그 다음 층의 출력 데이터(FD'")를 얻는다. 도 8에 도시된 예에서, 2개의 부분적인 출력 데이터(FD"_1, FD"_2)는 점대점 더하기 연산 없기 또 다른 다음 층에 직접 제공될 수 있다. 몇몇 다른 예에서는, 그 다음 층에서 수신된 2개의 부분적인 입력 데이터가 완전한 입력 데이터를 얻기 위해 점대점 방식으로 먼저 더해질 수 있고, 그런 다음 완전한 입력 데이터에 콘볼루션 연산이 수행될 수 있거나, 본 개시물의 실시예들에 따른 방법들을 사용하여 연산들이 수행될 수 있다. 다른 예에서는 그 다음 층에서 본 개시물의 실시예들에 따른 방법들이 직접 적용될 수 있고, 그 다음 층의 웨이트 파라미터가 먼저 분할될 수 있다.
몇몇 다른 실시예에서는, 복수의 행 및 복수의 열을 담고 있는 부분적인 연산 결과 어레이에 대해서는, 부분적인 연산의 각각의 행에서의 부분적인 연산 결과들을 점대점 방식으로 더하고, 깊이 방향에서 압축된 부분적인 연산 결과 어레이의 각각의 열에서의 모든 부분적인 연산 결과들을 함께 결합함으로써, 또는 깊이 방향에서 부분적인 연산 결과 어레이의 각 열에서의 모든 부분적인 연산 결과들을 함께 결합하고, 압축된 부분적인 연산 결과 어레이의 각각의 행에서의 부분적인 연산 결과들을 점대점 방식으로 더함으로써 출력 데이터가 발생될 수 있다.
예를 들면, 도 6과 도 7에 도시된 예들은 출력 데이터(FD')를 발생시키도록 도 9 또는 도 10에 도시된 바와 같이 결합될 수 있다. 도 9에 도시된 예에서는 도 10에 도시된 예에서처럼 최종 출력 데이터가 동일한 것이 보여질 수 있다.
몇몇 다른 실시예에서는, 더 적은 개수의 행 및/또는 더 적은 개수의 열을 가지는 부분적인 연산 결과 어레이를 얻기 위해, 복수의 행 및 복수의 열을 담고 있는 부분적인 연산 결과 어레이가 전술한 바와 같은 압축 방법들과 비슷한 방식으로 행들 및/또는 열들에서 압축될 수 있고, 압축된 부분적인 연산 결과 어레이에서의 각각의 부분적인 연산 결과는 그 다음 층에 출력 데이터로서 각각 제공될 수 있다.
예를 들면, 3개의 행과 3개의 열을 가지는 부분적인 연산 결과 어레이에 대해서는, 제1 행 및 제1 열에서의 부분적인 연산 결과와 제1 행 및 제2 열에서의 부분적인 연산 결과가 점대점 방식으로 더해질 수 있어서, 3개의 행과 2개의 열을 가지는 부분적인 연산 결과 어레이를 만들어낸다. 그런 다음, 압축된 부분적인 연산 결과 어레이의 제2 행 및 제1 열에서의 부분적인 연산 결과와, 제3 행 및 제2 열에서의 부분적인 연산 결과는 2개의 행 및 2개의 열을 가지는 또 다른 더 작은 부분적인 연산 결과 어레이를 얻기 위해 깊이 방향으로 함께 결합된 그것들 각각의 채널을 가질 수 있다. 그런 다음, 2개의 행 및 2개의 열을 가지는 또 다른 더 작은 부분적인 연산 결과에서의 각각의 부분적인 연산 결과가 출력 데이터로서 그 다음 층에 제공될 수 있다.
도 11 및 도 12는 본 개시물의 실시예들에 따른 위 방법들을 수행하기 위한 장치들의 블록도를 보여준다.
도 11에 도시된 것처럼, 전형적인 장치(1100)는 하나 이상의 프로세서(1110)를 포함할 수 있다. 이러한 프로세서(1110)는 CPU, GPU, 또는 신경망 전용 프로세서 또는 가속기와 같이, 데이터를 처리하는 것 및/또는 명령어를 실행하는 것을 행할 수 있는 임의의 처리 유닛일 수 있다. 예를 들면, 프로세서(1110)는 본 개시물의 실시예들에 따른 방법들을 수행할 수 있다. 게다가, 프로세서(1110)는 또한 바라는 기능들을 수행하기 위해 장치(1100)에서 다른 성분들을 제어할 수 있다.
프로세서(1110)는 버스 시스템 및/또는 다른 상호연결 메커니즘(미도시)을 통해 메모리(1120)와 I/O(입력/출력) 인터페이스(1130)에 연결될 수 있다.
메모리(1120)는 예를 들면 휘발성 메모리 및/또는 비휘발성 메모리와 같은 다양한 형태를 갖는 컴퓨터 판독 가능하고 쓰기 가능한 저장 매체를 포함할 수 있다. 휘발성 메모리는, 예를 들면 RAM(random access memory) 및/또는 캐시(cache) 등을 포함할 수 있다. 비휘발성 메모리는 예를 들면 ROM(read only memory), 하드 디스크, 플래시 메모리 등을 포함할 수 있다. 판독 가능하고 쓰기 가능한 저장 매체는 전기식, 자기식, 광학식, 전자기식, 적외선 방식, 또는 반도체 시스템, 기구, 또는 장치, 또는 이들의 임의의 결합물을 포함할 수 있지만 이들에 국한되는 것은 아니다. 예를 들면, 신경망 전용 프로세서와 함께 사용되는 경우에, 메모리(1120)는 전용 프로세서를 운반하는 칩(chip) 상의 ROM일 수도 있다. 메모리(1120)는 본 개시물의 실시예들에 따른 신경망의 특징 데이터를 적합하게 하기 위한 방법들을 수행할 것을 장치(1100)에게 명령하기 위한 프로그램 명령어들을 포함할 수 있다.
I/O 인터페이스(1130)는 프로세서(1110)에 파라미터들 또는 데이터를 제공하고 프로세서(1110)에 의해 처리된 결과 데이터를 출력하도록 구성될 수 있다.
또, 도 12에 도시된 것처럼, 전형적인 기구(1200)는 스플리터(1210), 연산기(1220), 및 발생기(1230)를 포함할 수 있다.
스플리터(1210)는 복수의 연산 파라미터를 담고 있는 연산 파라미터 어레이를 얻도록 깊이의 치수들 중 적어도 하나의 다수의 커널로 콘볼루션 신경망에서 선택된 층의 웨이트 파라미터를 분할하도록 구성될 수 있다. 연산 파라미터의 각각의 행에서의 모든 연산 파라미터는 웨이트 파라미터의 커널들이 세트의 동일한 서브세트로부터의 것이고 상이한 채널들을 가지며, 각각의 열에서의 각각의 연산 파라미터는 웨이트 파라미터의 커널들의 세트의 상이한 서브세트로부터의 것이고 동일한 하나 이상의 채널을 가진다. 일 실시예에서, 스플리터(1210)는 예를 들면 전형적인 방법(100)에서 단계(S101)를 수행하도록 구성될 수 있다.
연산자(1220)는 복수의 부분적인 연산 결과들을 포함하는 부분적인 연산 결과 어레이를 얻도록, 연산 파라미터 어레이에서의 각각의 연산 파라미터를 사용하여 사용중인 연산 파라미터의 채널(들)에 대응하는 채널(들)에 있는 선택된 층에 대한 입력 데이터에서의 데이터에 관해 선택된 층의 연산들을 수행하도록 구성될 수 있다. 일 실시예에서, 연산자(1220)는 예를 들면 전형적인 방법(100)에서 단계(S105)를 수행하도록 구성될 수 있다.
발생기(1230)는 부분적인 연산 결과 어레이에 기초한 선택된 층의 하나 이상의 출력 데이터를 발생시키도록 구성될 수 있다. 일 실시예에서, 발생기(1230)는 예를 들면 전형적인 방법(100)에서 단계(S110)를 수행하도록 구성될 수 있다.
도 11에 도시된 기구(1100)와 도 12에 도시된 기구(1200)는 예들일 뿐이고, 어떤 식으로든 본 발명의 범주를 제한하는 것이 아니라는 점이 이해되어야 한다. 본 개시물의 실시예에 따른 기구는 필요시 다른 성분들 및/또는 구조물을 가질 수 있다.
본 개시물의 실시예들에 따른 방법 및/또는 기구에 의해, 콘볼루션 신경망에서의 큰 파라미터의 콘볼루션 연산들은 여러 개의 더 작은 콘볼루션 연산들로 분할될 수 있고, 그 결과들은 분할 전후에 일관되게 유지되며, 이는 연산 병렬 계산 및/또는 실행 효율을 향상시키는 데 유익하다. 게다가, 하드웨어(전용 하드웨어 가속기와 같은)의 한계가 회피될 수 있고, 따라서 그러한 하드웨어는 임의의 사이즈를 갖는 웨이트 파라미터들의 콘볼루션 연산들을 위해 사용될 수 있다. 게다가, 큰 웨이트 파라미터를 여러 개의 더 작은 웨이트 파라미터들로 분할됨으로써, 고속 메모리가 각각의 연산에 대한 웨이트 파라미터를 완전히 캐시하기 위해 보장될 수 있고, 그로 인해 그러한 연산들의 보정(correction)이 보장될 수 있으며, 데이터 이송이 감소될 수 있으며, 이는 하드웨어의 실행 효율을 향상시키기 위해 유익하다.
문맥상 명확하게 달리 요구되지 않는 한, 설명부와 청구항 전반에 걸쳐, "포함한다(comprise)"와 "함유한다(include)"와 같은 어구들은 한정적인(exclusive) 것과는 반대인 총괄적인 의미 또는 총망라한다는 의미로 해석되어야 하는데, 즉 "포함하지만 국한되지 않는(including but not limited to)"다는 의미로 해석되어야 한다. 추가로, 본 개시물에서 사용될 때, "여기에(herein)", "위(above)", "아래(below)"와 같은 어구들과 비슷한 어구들은, 전체로서 본 개시물을 가리키고 본 개시물의 임의의 특정 부분을 가리키는 것이 아니다. 문맥상 허용될 때, 위 설명에서 사용된 단수 또는 복수로 표현된 어구들은 또한 각각 복수 또는 단수를 포함할 수 있다. 2개 이상의 항목의 목록을 참조시 사용되는 "또는(or)"이라는 어구는 그러한 어구의 후속하는 해석 전부, 즉 목록에서의 임의의 항목, 목록에서의 항목 전부, 및 목록에서의 항목들이 임의로 결합된 것을 망라하는 것이다.
본 개시물의 실시예들의 상술한 설명은 위에서 개시된 특정 형태로 본 개시물을 국한하거나 총망라하는 것으로 의도되지 않는다. 비록 본 개시물의 특정 실시예 및 예들이 예시 목적으로 위에서 설명되지만, 당업자라면 알게 되듯이 본 개시물의 범위 내에서 다양한 동등한 수정예가 가능하다. 예를 들면, 공정들 또는 블록들이 주어진 순서대로 제시되었지만, 대안적인 실시예들이 상이한 순서대로 이들 단계를 포함하는 공정을 실행하거나 상이한 순서대로 이들 블록을 포함하는 시스템을 이용할 수 있고, 몇몇 실시예 또는 블록은 삭제, 이동, 추가, 세분화, 결합, 및/또는 수정될 수 있다. 이들 공정들 또는 블록들 각각은 다양한 상이한 방식으로 구현될 수 있다. 또, 비록 이러한 공정들 또는 블록들이 때로는 직렬로 실행되는 것으로 도시되지만, 이들 공정 또는 블록은 대신 병렬로 실행될 수 있거나, 상이한 시각에 실행될 수 있다.
본 명세서에서 제공된 개시물의 가르침은 다른 시스템에 적용될 수 있지만, 반드시 전술한 시스템에만 적용되는 것은 아니다. 전술한 다양한 실시예의 요소들과 행위들은 추가 실시예들을 제공하기 위해 결합될 수 있다.
비록 본 개시물의 몇몇 실시예가 설명되었지만, 이들 실시예는 단지 예로서 제시된 것이고, 본 개시물의 범위를 제한하려고 의도된 것은 아니다. 실제로, 본 명세서에서 설명된 새로운 방법 및 시스템은 다양한 다른 형태로 구현될 수 있다. 또한, 본 개시물의 취지로부터 벗어나지 않으면서 본 명세서에서 설명된 방법 및 시스템의 형태로 다양한 생략, 치환 및 변경이 이루어질 수 있다.

Claims (15)

  1. 콘볼루션 신경망에서의 연산(operation)들을 수행하기 위한 방법으로서,
    복수의 연산 파라미터를 포함하는 연산 파라미터 어레이(array)를 얻기 위해, 콘볼루션 신경망에서의 선택된 층의 웨이트 파라미터를 깊이의 치수 중 적어도 하나와 커널의 개수로 분할하는 단계(splitting)로서, 연산 파라미터 어레이의 각각의 행(row)에서의 각각의 연산 파라미터들은 가중(weighted) 파라미터의 커널들의 한 세트의 동일한 서브세트(subset)로부터의 것이고 각각 상이한 채널을 가지며, 상기 연산 파라미터 어레이의 각각의 열(column)에서의 각각의 연산 파라미터들은 각각 웨이트 파라미터의 커널들의 세트의 상이한 서브세트들로부터의 것이고 동일한 하나 이상의 채널을 가지는, 상기 분할하는 단계;
    상기 연산 파라미터 어레이에서의 각각의 연산 파라미터를 사용함으로써, 복수의 부분적인 연산 결과들을 포함하는 부분적인 연산 결과 어레이를 얻기 위해, 사용중인 연산 파라미터의 채널에 대응하는 채널에 있는 선택된 층에 대한 입력 데이터의 데이터에 관해 선택된 층의 연산을 수행하는 단계; 및
    부분적인 연산 결과 어레이에 기초한 선택된 층의 하나 이상의 출력 데이터를 발생시키는 단계를 포함하는, 방법.
  2. 제1 항에 있어서,
    상기 웨이트 파라미터를 분할하는 단계는, 분할에 의해 얻어진 연산 파라미터 어레이에서의 각각의 연산 파라미터가 제1 임계치(threshold) 이하인 사이즈를 가지도록, 상기 웨이트 파라미터의 사이즈가 제1 임계치를 초과하는 경우에 상기 웨이트 파라미터를 분할하는 단계를 포함하는, 방법.
  3. 제1 항에 있어서,
    상기 웨이트 파라미터를 분할하는 단계는, 상기 웨이트 파라미터의 커널의 개수가 제2 임계치를 초과하는 경우에, 분할에 의해 얻어진 연산 파라미터 어레이에서의 각각의 연산 파라미터가 제2 임계치 이하인 커널의 개수를 가지도록, 상기 웨이트 파라미터를 분할하는 단계를 포함하는, 방법.
  4. 제1 항에 있어서,
    상기 웨이트 파라미터를 분할하는 단계는, 상기 웨이트 파라미터가 제1의 미리 결정된 개수 이상인 커널의 개수를 가지는 경우에, 분할에 의해 얻어진 연산 파라미터 어레이가 상기 제1의 미리 결정된 개수의 배수와 같은 행들의 개수를 가지도록 상기 웨이트 파라미터를 분할하는 단계를 포함하는, 방법.
  5. 제1 항에 있어서,
    상기 웨이트 파라미터를 분할하는 단계는, 상기 웨이트 파라미터가 제3 임계치를 초과하는 채널의 개수를 가지는 경우에, 분할에 의해 얻어진 연산 파라미터 어레이에서의 각각의 연산 파라미터가 상기 제3 임계치 이하인 채널의 개수를 가지도록 상기 웨이트 파라미터를 분할하는 단계를 포함하는, 방법.
  6. 제1 항에 있어서,
    상기 웨이트 파라미터를 분할하는 단계는, 상기 웨이트 파라미터가 제2의 미리 결정된 개수 이상인 채널의 개수를 가지는 경우에, 분할에 의해 얻어진 연산 파라미터 어레이가 상기 제2의 미리 결정된 개수의 배수와 같은 열의 개수를 가지도록 상기 웨이트 파라미터를 분할하는 단계를 포함하는, 방법.
  7. 제1 항에 있어서,
    상기 웨이트 파라미터를 분할하는 단계는, 선택된 층이 복수의 부분적인 입력 데이터를 수신하고, 그러한 부분적인 입력 데이터 중 임의의 2개가 동일한 채널을 가지지 않으며, 상기 복수의 부분적인 입력 데이터가 집합적으로 선택된 층의 완전한 입력 데이터에 대응할 때, 분할에 의해 얻어진 연산 파라미터 어레이가 수신된 복수의 입력 데이터의 개수와 같은 열의 개수를 가지도록 각각의 부분적인 입력 데이터에 따라 상기 웨이트 파라미터가 분할되고, 각각의 열에서의 모든 연산 파라미터는 상기 복수의 부분적인 입력 데이터 중 하나와 동일한 하나 이상의 채널에 대응하는, 방법.
  8. 제1 항에 있어서,
    상기 웨이트 파라미터를 분할하는 단계는, 깊이의 치수들 중 하나와 커널의 개수로 상기 연산 파라미터 어레이의 적어도 행 및/또는 열을 세분하는 단계를 더 포함하고, 이는 상기 세분에 의해 얻어진 연산 파라미터 어레이에서의 각각의 연산 파라미터가 제1 임계치 이하인 사이즈를 가지도록 제1 임계치를 초과하는 사이즈를 가지는 연산 파라미터를 상기 행 및/또는 열이 포함할 때 이루어지는, 방법.
  9. 제1 항에 있어서,
    상기 부분적인 연산 결과 어레이에서의 각각의 부분적인 연산 결과는 선택된 층의 하나의 출력 데이터에 대응하는, 방법.
  10. 제1 항에 있어서,
    상기 출력 데이터를 발생시키는 단계는, 부분적인 연산 결과 어레이가 복수의 열을 포함할 때 점대점(point-to-point) 방식으로 부분적인 연산 결과 어레이의 각각의 행에서의 모든 부분적인 연산 결과를 더함으로써 하나의 열로 부분적인 연산 결과 어레이를 압축하는 단계를 포함하고, 압축된 부분적인 연산 결과 어레이에서의 각각의 부분적인 연산 결과는 선택된 층의 출력 데이터에 대응하는, 방법.
  11. 제1 항에 있어서,
    상기 출력 데이터를 발생시키는 단계는, 부분적인 연산 결과 어레이가 복수의 행을 포함할 때 깊이 방향에서 부분적인 연산 결과 어레이의 각각의 열에서의 모든 부분적인 연산 결과를 결합함으로써 하나의 행으로 부분적인 연산 결과 어레이를 압축하는 단계를 포함하고, 압축된 부분적인 연산 결과 어레이에서의 각각의 부분적인 연산 결과는 선택된 층의 출력 데이터에 대응하는, 방법.
  12. 제1 항에 있어서,
    상기 출력 데이터를 발생시키는 단계는, 부분적인 연산 결과 어레이의 각각의 행에서의 부분적인 연산 결과들 모두를 점대점 방식으로 더한 다음, 더하는 것에 의해 압축된 부분적인 연산 결과 어레이의 각각의 열에서의 모든 부분적인 연산 결과를 깊이 방향에서 결합하거나, 부분적인 연산 결과 어레이의 각각의 열에서의 모든 부분적인 연산 결과를 깊이 방향에서 결합한 다음, 부분적인 연산 결과 어레이가 복수의 행과 복수의 열을 포함할 때 점대점 방식으로 결합함으로써 압축된 부분적인 연산 결과 어레이의 각각의 행에서의 부분적인 연산 결과 모두를 더함으로써 선택된 층의 출력 데이터를 발생시키는 단계를 포함하는, 방법.
  13. 콘볼루션 신경망에서의 연산들을 수행하기 위한 장치(apparatus)로서,
    하나 이상의 프로세서와, 명령어가 저장된 메모리를 포함하고,
    상기 명령어는, 하나 이상의 프로세서에 의해 실행될 때 상기 하나 이상의 프로세서로 하여금,
    복수의 연산 파라미터를 포함하는 연산 파라미터 어레이를 얻기 위해, 콘볼루션 신경망에서의 선택된 층의 웨이트 파라미터를 깊이의 치수 중 적어도 하나와 커널의 개수로 분할시키는 것으로서, 이 경우 연산 파라미터 어레이의 각각의 행에서의 각각의 연산 파라미터는 가중 파라미터의 커널들의 한 세트의 동일한 서브세트로부터의 것이고 각각 상이한 채널을 가지며, 연산 파라미터 어레이의 각각의 열에서의 각각의 연산 파라미터는 각각 웨이트 파라미터의 커널들의 세트의 상이한 서브세트들로부터의 것이고 동일한 하나 이상의 채널을 가지는, 상기 분할시키는 것;
    연산 파라미터 어레이에서의 각각의 연산 파라미터를 사용함으로써, 복수의 부분적인 연산 결과를 포함하는 부분적인 연산 결과 어레이를 얻기 위해, 사용중인 연산 파라미터의 채널에 대응하는 채널에 있는 선택된 층에 대한 입력 데이터의 데이터에 관해 선택된 층의 연산을 수행하는 것; 및
    부분적인 연산 결과 어레이에 기초한 선택된 층의 하나 이상의 출력 데이터를 발생시키는 것을 수행하게 하는, 장치.
  14. 콘볼루션 신경망에서의 연산들을 수행하기 위한 장치로서,
    스플리터(splitter), 연산자, 및 발생기를 포함하고,
    상기 스플리터는 복수의 연산 파라미터를 포함하는 연산 파라미터 어레이를 얻기 위해, 콘볼루션 신경망에서의 선택된 층의 웨이트 파라미터를 깊이의 치수 중 적어도 하나와 커널의 개수로 분할하도록 구성되며, 이 경우 연산 파라미터 어레이의 각각의 행에서의 각각의 연산 파라미터는 가중 파라미터의 커널들의 한 세트의 동일한 서브세트로부터의 것이고 각각 상이한 채널을 가지며, 연산 파라미터 어레이의 각각의 열에서의 각각의 연산 파라미터들은 각각 웨이트 파라미터의 커널들의 세트의 상이한 서브세트들로부터의 것이고 동일한 하나 이상의 채널을 가지며,
    상기 연산자는 연산 파라미터 어레이에서의 각각의 연산 파라미터를 사용함으로써, 복수의 부분적인 연산 결과들을 포함하는 부분적인 연산 결과 어레이를 얻기 위해, 사용중인 연산 파라미터의 채널에 대응하는 채널에 있는 선택된 층에 대한 입력 데이터의 데이터에 관해 선택된 층의 연산을 수행하도록 구성되고,
    상기 발생기는 상기 부분적인 연산 결과 어레이에 기초한 선택된 층의 하나 이상의 출력 데이터를 발생시키도록 구성되는, 장치.
  15. 명령어들을 저장하는 비일시적(non-temporary) 저장 매체로서,
    상기 명령어들은, 콘볼루션 신경망에서의 연산들을 수행하기 위해 구성되는 프로세서에 의해 실행될 때, 상기 프로세서로 하여금
    복수의 연산 파라미터를 포함하는 연산 파라미터 어레이를 얻기 위해, 콘볼루션 신경망에서의 선택된 층의 웨이트 파라미터를 깊이의 치수 중 적어도 하나와 커널의 개수로 분할하는 것으로서, 이 경우 연산 파라미터 어레이의 각각의 행에서의 각각의 연산 파라미터들은 가중 파라미터의 커널들의 한 세트의 동일한 서브세트로부터의 것이고 각각 상이한 채널을 가지며, 연산 파라미터의 각각의 열에서의 각각의 연산 파라미터는 각각 웨이트 파라미터의 커널들의 세트의 상이한 서브세트들로부터의 것이고 동일한 하나 이상의 채널을 가지는, 상기 분할하는 것,
    연산 파라미터 어레이에서의 각각의 연산 파라미터를 사용함으로써, 복수의 부분적인 연산 결과들을 포함하는 부분적인 연산 결과 어레이를 얻기 위해, 사용중인 연산 파라미터의 채널에 대응하는 채널에 있는 선택된 층에 대한 입력 데이터의 데이터에 관해 선택된 층의 연산을 수행하는 것; 및
    부분적인 연산 결과 어레이에 기초한 선택된 층의 하나 이상의 출력 데이터를 발생시키는 것을 수행하게 하는, 비일시적 저장 매체.
KR1020180132001A 2017-10-31 2018-10-31 콘볼루션 신경망에서의 연산들을 수행하는 방법 및 장치 KR20190049593A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201711041806.5 2017-10-31
CN201711041806.5A CN107832839B (zh) 2017-10-31 2017-10-31 执行卷积神经网络中的运算的方法和装置

Publications (1)

Publication Number Publication Date
KR20190049593A true KR20190049593A (ko) 2019-05-09

Family

ID=61650154

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180132001A KR20190049593A (ko) 2017-10-31 2018-10-31 콘볼루션 신경망에서의 연산들을 수행하는 방법 및 장치

Country Status (5)

Country Link
US (1) US20190130265A1 (ko)
EP (1) EP3477556A1 (ko)
JP (1) JP6726246B2 (ko)
KR (1) KR20190049593A (ko)
CN (1) CN107832839B (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190035556A (ko) * 2017-09-25 2019-04-03 난징 호라이즌 로보틱스 테크놀로지 컴퍼니 리미티드 신경 네트워크의 파라미터들을 적응시키기 위한 방법 및 장치
KR20210014897A (ko) * 2019-07-31 2021-02-10 한양대학교 산학협력단 인공 신경망을 위한 행렬 연산기 및 행렬 연산 방법
WO2022045448A1 (ko) * 2020-08-25 2022-03-03 오픈엣지테크놀로지 주식회사 하드웨어 가속기의 출력 데이터를 압축하는 방법, 하드웨어 가속기로의 입력 데이터를 디코딩하는 방법, 및 이를 위한 하드웨어 가속기

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10387740B2 (en) * 2016-10-10 2019-08-20 Gyrfalcon Technology Inc. Object detection and recognition apparatus based on CNN based integrated circuits
KR102548718B1 (ko) * 2017-06-07 2023-06-28 삼성전자주식회사 전자 장치 및 그 제어 방법
US10902318B2 (en) * 2017-11-06 2021-01-26 Neuralmagic Inc. Methods and systems for improved transforms in convolutional neural networks
US11715287B2 (en) 2017-11-18 2023-08-01 Neuralmagic Inc. Systems and methods for exchange of data in distributed training of machine learning algorithms
CN108647773B (zh) * 2018-04-20 2021-07-23 复旦大学 一种可重构卷积神经网络的硬件互连系统
US11210586B1 (en) 2018-04-20 2021-12-28 Perceive Corporation Weight value decoder of neural network inference circuit
KR20190136431A (ko) * 2018-05-30 2019-12-10 삼성전자주식회사 뉴럴 네트워크 시스템, 이를 포함하는 어플리케이션 프로세서 및 뉴럴 네트워크 시스템의 동작방법
US11449363B2 (en) 2018-05-31 2022-09-20 Neuralmagic Inc. Systems and methods for improved neural network execution
US10832133B2 (en) 2018-05-31 2020-11-10 Neuralmagic Inc. System and method of executing neural networks
CN108984426B (zh) * 2018-08-03 2021-01-26 北京字节跳动网络技术有限公司 用于处理数据的方法和装置
CN109284817B (zh) * 2018-08-31 2022-07-05 中国科学院上海高等研究院 深度可分离卷积神经网络处理架构/方法/系统及介质
WO2020072274A1 (en) 2018-10-01 2020-04-09 Neuralmagic Inc. Systems and methods for neural network pruning with accuracy preservation
US10726073B2 (en) * 2018-10-26 2020-07-28 Tensil AI Company Method and apparatus for compiling computation graphs into an integrated circuit
CN109697500B (zh) * 2018-12-29 2020-06-09 中科寒武纪科技股份有限公司 数据处理方法、装置、电子设备及存储介质
US11544559B2 (en) 2019-01-08 2023-01-03 Neuralmagic Inc. System and method for executing convolution in a neural network
CN109919311B (zh) * 2019-03-13 2020-04-10 北京地平线机器人技术研发有限公司 生成指令序列的方法、执行神经网络运算的方法和装置
CN110334798B (zh) * 2019-03-13 2021-06-08 北京地平线机器人技术研发有限公司 特征数据提取方法及装置、指令生成方法及装置
CN111832585B (zh) * 2019-04-16 2023-04-18 杭州海康威视数字技术股份有限公司 图像处理的方法和装置
CN110377342B (zh) * 2019-06-10 2022-08-30 平安科技(深圳)有限公司 基于卷积神经网络的显存处理方法、装置及存储介质
JP7391553B2 (ja) * 2019-06-28 2023-12-05 キヤノン株式会社 情報処理装置、情報処理方法、及びプログラム
WO2021012215A1 (zh) * 2019-07-24 2021-01-28 华为技术有限公司 神经网络切分方法、预测方法及相关装置
CN112308217B (zh) * 2019-07-31 2024-06-04 北京欣奕华科技有限公司 一种卷积神经网络加速方法及系统
WO2021026225A1 (en) 2019-08-08 2021-02-11 Neuralmagic Inc. System and method of accelerating execution of a neural network
JP2021047711A (ja) 2019-09-19 2021-03-25 キオクシア株式会社 演算装置、演算方法、及び学習方法
CN110633153A (zh) * 2019-09-24 2019-12-31 上海寒武纪信息科技有限公司 一种用多核处理器实现神经网络模型拆分方法及相关产品
CN110689115B (zh) * 2019-09-24 2023-03-31 安徽寒武纪信息科技有限公司 神经网络模型处理方法、装置、计算机设备及存储介质
CN110826708B (zh) * 2019-09-24 2022-05-31 安徽寒武纪信息科技有限公司 一种用多核处理器实现神经网络模型拆分方法及相关产品
KR20210053390A (ko) 2019-11-01 2021-05-12 삼성전자주식회사 메모리 장치 및 이를 포함하는 메모리 시스템
US11163453B2 (en) * 2019-11-01 2021-11-02 Samsung Electronics Co., Ltd. Memory device, memory system including memory device and vehicle-based system including memory system
US11973743B2 (en) 2019-12-13 2024-04-30 TripleBlind, Inc. Systems and methods for providing a systemic error in artificial intelligence algorithms
US12026219B2 (en) * 2019-12-13 2024-07-02 TripleBlind, Inc. Systems and methods for efficient computations on split data and split algorithms
US11528259B2 (en) 2019-12-13 2022-12-13 TripleBlind, Inc. Systems and methods for providing a systemic error in artificial intelligence algorithms
US11431688B2 (en) 2019-12-13 2022-08-30 TripleBlind, Inc. Systems and methods for providing a modified loss function in federated-split learning
WO2022109215A1 (en) 2020-11-20 2022-05-27 TripleBlind, Inc. Systems and methods for providing a blind de-identification of privacy data
US11556757B1 (en) 2020-12-10 2023-01-17 Neuralmagic Ltd. System and method of executing deep tensor columns in neural networks
EP4276699A4 (en) * 2021-03-04 2024-07-03 Samsung Electronics Co Ltd IMAGE PROCESSING DEVICE AND OPERATING METHOD THEREFOR
JP2022178465A (ja) 2021-05-20 2022-12-02 日立Astemo株式会社 演算装置、認識装置および制御装置
US11960982B1 (en) 2021-10-21 2024-04-16 Neuralmagic, Inc. System and method of determining and executing deep tensor columns in neural networks
WO2024014002A1 (ja) * 2022-07-15 2024-01-18 日本電信電話株式会社 推論処理装置、推論処理方法、及び推論処理プログラム

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7142626B2 (en) * 2003-05-30 2006-11-28 George Shu-Xing Cheng Apparatus and method of controlling multi-input-single-output systems
CA2977262A1 (en) * 2015-02-23 2016-09-01 Cellanyx Diagnostics, Llc Cell imaging and analysis to differentiate clinically relevant sub-populations of cells
US10204301B2 (en) * 2015-03-18 2019-02-12 International Business Machines Corporation Implementing a neural network algorithm on a neurosynaptic substrate based on criteria related to the neurosynaptic substrate
US10049322B2 (en) * 2015-05-21 2018-08-14 Google Llc Prefetching weights for use in a neural network processor
US10438117B1 (en) * 2015-05-21 2019-10-08 Google Llc Computing convolutions using a neural network processor
CN106650922B (zh) * 2016-09-29 2019-05-03 清华大学 硬件神经网络转换方法、计算装置、软硬件协作系统
US10565492B2 (en) * 2016-12-31 2020-02-18 Via Alliance Semiconductor Co., Ltd. Neural network unit with segmentable array width rotator
CN106909970B (zh) * 2017-01-12 2020-04-21 南京风兴科技有限公司 一种基于近似计算的二值权重卷积神经网络硬件加速器计算装置
CN107273969B (zh) * 2017-05-11 2020-06-19 西安交通大学 一种参数化可扩展的神经网络全连接层多层互连结构
WO2019051658A1 (en) * 2017-09-13 2019-03-21 Intel Corporation INCREMENTAL NETWORK QUANTIFICATION

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190035556A (ko) * 2017-09-25 2019-04-03 난징 호라이즌 로보틱스 테크놀로지 컴퍼니 리미티드 신경 네트워크의 파라미터들을 적응시키기 위한 방법 및 장치
KR20210014897A (ko) * 2019-07-31 2021-02-10 한양대학교 산학협력단 인공 신경망을 위한 행렬 연산기 및 행렬 연산 방법
WO2021020848A3 (ko) * 2019-07-31 2021-03-25 한양대학교 산학협력단 인공 신경망을 위한 행렬 연산기 및 행렬 연산 방법
WO2022045448A1 (ko) * 2020-08-25 2022-03-03 오픈엣지테크놀로지 주식회사 하드웨어 가속기의 출력 데이터를 압축하는 방법, 하드웨어 가속기로의 입력 데이터를 디코딩하는 방법, 및 이를 위한 하드웨어 가속기
KR20220026251A (ko) * 2020-08-25 2022-03-04 오픈엣지테크놀로지 주식회사 하드웨어 가속기의 출력 데이터를 압축하는 방법, 하드웨어 가속기로의 입력 데이터를 디코딩하는 방법, 및 이를 위한 하드웨어 가속기

Also Published As

Publication number Publication date
EP3477556A1 (en) 2019-05-01
JP6726246B2 (ja) 2020-07-22
JP2019082996A (ja) 2019-05-30
CN107832839B (zh) 2020-02-14
CN107832839A (zh) 2018-03-23
US20190130265A1 (en) 2019-05-02

Similar Documents

Publication Publication Date Title
KR20190049593A (ko) 콘볼루션 신경망에서의 연산들을 수행하는 방법 및 장치
KR102316670B1 (ko) 연산 가속기
CN109919311B (zh) 生成指令序列的方法、执行神经网络运算的方法和装置
US11461632B2 (en) Method and apparatus for adapting parameters of neural network
US10832120B2 (en) Systems and methods for a multi-core optimized recurrent neural network
US20180204110A1 (en) Compressed neural network system using sparse parameters and design method thereof
CN110633153A (zh) 一种用多核处理器实现神经网络模型拆分方法及相关产品
US20220147795A1 (en) Neural network tiling method, prediction method, and related apparatus
CN110058882B (zh) 一种用于cnn加速的opu指令集定义方法
JP6659724B2 (ja) 並列プロセッサカーネルのディスパッチサイズのコンカレンシーファクタを決定するシステム及び方法
WO2020253117A1 (zh) 一种数据处理方法及装置
KR20220154698A (ko) 병렬 프로세싱 동안 전력 영향들을 감소시키기 위한 프로세싱 데이터 스트림 수정
CN101980182A (zh) 基于矩阵运算的并行计算方法
CN102831102A (zh) 一种在计算机集群上进行矩阵乘积运算的方法和系统
TW202338668A (zh) 用於神經網路訓練的稀疏性掩蔽方法
US12079301B2 (en) Performing tensor operations using a programmable control engine
CN115130672B (zh) 一种软硬件协同优化卷积神经网络计算的方法及装置
CN110955380B (zh) 访存数据生成方法、存储介质、计算机设备和装置
Huang et al. Pushing the envelope of dynamic spatial gating technologies
CN110969565A (zh) 图像处理的方法和装置
CN110415162B (zh) 大数据中面向异构融合处理器的自适应图划分方法
US20240256901A1 (en) Information processing apparatus, information processing method and non-transitory computer-readable storage medium
CN117494816B (zh) 基于计算单元部署的模型推理方法、装置、设备及介质
CN111831254B (zh) 图像处理加速方法、图像处理模型存储方法及对应装置
KR101555752B1 (ko) 그리드 컴퓨팅 스케줄링을 위한 불연속 그룹 탐색 최적화 적용 방법 및 시스템

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application