KR20230081697A - 팽창 컨볼루션 계산 가속화 방법 및 장치 - Google Patents

팽창 컨볼루션 계산 가속화 방법 및 장치 Download PDF

Info

Publication number
KR20230081697A
KR20230081697A KR1020227031052A KR20227031052A KR20230081697A KR 20230081697 A KR20230081697 A KR 20230081697A KR 1020227031052 A KR1020227031052 A KR 1020227031052A KR 20227031052 A KR20227031052 A KR 20227031052A KR 20230081697 A KR20230081697 A KR 20230081697A
Authority
KR
South Korea
Prior art keywords
convolution
expansion
rхs
sub
computing units
Prior art date
Application number
KR1020227031052A
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 KR20230081697A publication Critical patent/KR20230081697A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • 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/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/20Image enhancement or restoration using local operators
    • G06T5/30Erosion or dilatation, e.g. thinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/60Analysis of geometric attributes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20084Artificial neural networks [ANN]

Landscapes

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

Abstract

팽창 컨볼루션 계산 가속화 방법 및 장치에 관한 것으로, 해당 방법은, RХS 팽창 컨볼루션 연산을 S개의 RХ1 서브 팽창 컨볼루션 연산으로 분해하는 것(301); 각 RХ1 서브 팽창 컨볼루션 연산에 대해, 복수의 가중치를 컴퓨팅 유닛 어레이의 복수의 컴퓨팅 유닛에 병렬로 캐싱하는 것(302); 입력 이미지 데이터로부터, 상기 복수의 가중치에 각각 대응되는 복수의 입력 데이터 스트림을 결정하고, 상기 복수의 입력 데이터 스트림을 상기 복수의 컴퓨팅 유닛에 병렬로 입력하는 것(303); 상기 복수의 컴퓨팅 유닛 내에서 각각의 캐싱된 가중치 및 각각의 입력된 입력 데이터 스트림에 기반하여 슬라이딩 윈도우 연산 및 곱셈 연산을 수행하고, 상기 복수의 컴퓨팅 유닛 간 누산 연산을 수행하여 상기 각 서브 팽창 컨볼루션 연산의 중간 결과를 출력하는 것(304); 및 상기 S개의 RХ1 서브 팽창 컨볼루션 연산의 각 중간 결과를 가산하여 상기 팽창 컨볼루션 연산의 컨볼루션 결과를 획득하는 것(305)을 포함한다. 상기 방법을 이용하면, 상대적으로 낮은 복잡도로 팽창 컨볼루션 연산을 가속화할 수 있고, Im2col의 기능을 별도로 구현할 필요가 없어 복잡도를 줄일 수 있다.

Description

팽창 컨볼루션 계산 가속화 방법 및 장치
본 발명은 딥러닝 분야에 속하며, 특히 팽창 컨볼루션 계산을 가속화하기 위한 방법 및 장치에 관한 것이다.
이 부분은 청구범위에 기재된 바와 같은 본 발명의 실시예에 대한 배경 또는 맥락을 제공하기 위한 것이다. 여기에 설명된 내용은 이 부분에 포함되어 있음으로 인해 종래 기술로 인정되는 것은 아니다.
딥 피드포워드 인공신경망(deep feedforward artificial neural network)의 일종으로 컨볼루션 신경망(Convolutional Neural Network, CNN)은 이미지 인식 등 다양한 분야에 적용되고 있다. 컨볼루션 신경망은 이미지 데이터 처리 과정에서, 주로 컨볼루션(convolution), 배치 정규화(batch normalization), 활성화(activation) 등을 포함하는 비교적 복잡한 계산을 수행할 수 있다.
일반적으로 CNN을 이용한 이미지 처리의 경우, 모델의 수용 영역(receptive field)을 늘리기 위해 여러 번의 컨볼루션(convolution) 및 풀링(pooling) 연산이 필요하다. 풀링을 통해 이미지 크기를 줄일 수 있고, 컨볼루션 커널을 추가로 사용하여 수용 영역을 늘릴 수 있다. 컨볼루션 및 풀링 처리 후의 특징 맵(feature map)은 크기가 비교적 작아, 완전 연결 네트워크(fully connected network)로 전달되어 분류(classification) 작업이 수행될 수 있다. 그러나 이미지 분할 시 각 픽셀에 대한 예측(prediction)이 필요하다. 따라서, 축소된 크기의 특징 맵은 업샘플링(예를 들어 디컨볼루션(deconv)) 방식을 통해 원래 이미지 크기로 다시 변환된 다음 예측이 수행되어야 한다. 이 과정에는 주로 다음과 같은 문제가 있다. (1) 정보 손실이 발생한다. 풀링 연산은 비가역적이므로 특징 맵에 대한 업샘플링을 통해 이미지 크기를 복원하더라도 정보 손실이 불가피하다. (2) 작은 객체 이미지가 재구성될 수 없다. 4Х4 픽셀을 차지하는 객체는 네 번의 풀링 연산 후에 그 정보가 재구성될 수 없다. 따라서, 수용 영역의 확장을 위해 풀링과 같은 연산이 이용되는 것을 피하기 위해, "MULTI-SCALE CONTEXT AGGREGATION BY DILATED CONVOLUTIONS"에서 팽창 컨볼루션(dilated convolution)이 제안되었다. 이에 의하면, 컨볼루션 커널은 팽창 컨볼루션 연산 과정에서 지정된 크기로 확장되며, 확장 전 컨볼루션 커널에 의해 커버되지 않은 영역은 0으로 패딩된다.
종래 기술에 따르면, 이미지 데이터에 대한 컨볼루션 계산을 통해 이미지 처리 결과를 얻는 과정을 가속화하기 위한 통상적인 방법은 Im2col 함수를 이용하여 컨볼루션 연산을 최적화하는 것이다. CNN 러닝 훈련 과정에서 이미지는 일반적으로 한 번에 전체적으로 처리되지 않고, 그 대신에 우선 이미지를 복수의 작은 블록(패치(patch))으로 분할한 다음 Im2col 처리를 통해 각 patch를 재배열하여 3차원의 패치를 1차원 벡터로 펼침으로써, 컨볼루션 연산이 2차원 행렬 곱셈으로 변환될 수 있다.
전술한 방법에서, 1회의 팽창 컨볼루션 계산을 위해, 복수의 행 및 열의 데이터가 동시에 액세스되어야 한다. 도 1에 도시된 바와 같이, 팽창 비율(dilation rate)이 2인 3Х3 팽창 컨볼루션을 예로 들면, 1회의 팽창 컨볼루션에 필요한 9개의 숫자가 3행 3열로 분포되어 있다. 이해할 수 있다시피, 데이터 읽기 대역폭은 연속적인 데이터에 대해서만 보장될 수 있으며, 동시에 상기 9개의 숫자를 액세스하려면 내부 메모리 배열에 대한 특별한 설계가 필요하다. 예를 들어, 메모리 접근 병렬성을 향상시키기 위해 내부 메모리가 분할될 수 있다. 그러나, NPU(신경망 처리 장치)는 일반적으로 다양한 크기의 컨볼루션을 지원해야 한다. 따라서, 다양한 컨볼루션 커널에 대한 범용성을 구현하기 위해, 메모리는 다양한 구성을 지원할 수 있도록 수많은 작은 블록으로 분할되어야 하며, 이는 한편으로 내부 메모리 면적을 증가시키고 데이터 접근 로직의 복잡성을 증가시킨다.
따라서, 높은 범용성과 낮은 복잡성으로 팽창 컨볼루션 계산을 가속화하는 방법을 고안하는 것이 현재 시급히 해결해야 할 기술적 과제이다.
팽창 컨볼루션 연산의 구현이 범용성이 낮고 복잡도가 높은 종래 기술의 문제점을 감안하여, 본 발명의 실시예에서는 팽창 컨볼루션 계산 가속화 방법 및 장치를 제안하고자 한다. 해당 방법 및 장치에 따르면, 전술한 문제점들이 해결될 수 있다.
본 발명의 실시예는 다음과 같은 해결수단을 제공한다.
제1 양태에서, 팽창 컨볼루션 계산을 가속화하는 방법으로서, RХS 팽창 컨볼루션 연산을 S개의 RХ1 서브 팽창 컨볼루션 연산으로 분해하는 것 - 상기 R은 상기 RХS 팽창 컨볼루션 연산의 컨볼루션 커널의 높이를 나타내고 상기 S는 상기 컨볼루션 커널의 너비를 나타냄 - ; 각 RХ1 서브 팽창 컨볼루션 연산에 대해, 복수의 가중치를 컴퓨팅 유닛 어레이의 복수의 컴퓨팅 유닛에 병렬로 캐싱하는 것; 입력 이미지 데이터로부터, 상기 복수의 가중치에 각각 대응되는 복수의 입력 데이터 스트림을 결정하고, 상기 복수의 입력 데이터 스트림을 상기 복수의 컴퓨팅 유닛에 병렬로 입력하는 것; 상기 복수의 컴퓨팅 유닛 내에서 각각의 캐싱된 가중치 및 각각의 입력된 입력 데이터 스트림에 기반하여 슬라이딩 윈도우 연산 및 곱셈 연산을 수행하고, 상기 복수의 컴퓨팅 유닛 간 누산 연산을 수행하여 상기 각 RХ1 서브 팽창 컨볼루션 연산의 중간 결과를 출력하는 것; 및 상기 S개의 RХ1 서브 팽창 컨볼루션 연산의 각 중간 결과를 가산하여 상기 RХS 팽창 컨볼루션 연산의 컨볼루션 결과를 획득하는 것을 포함하는, 팽창 컨볼루션 계산 가속화 방법을 제공한다.
가능한 일 실시예에서, 각 가중치에 대응되는 입력 데이터 스트림은, 상기 RХS 팽창 컨볼루션 연산의 팽창 비율 및 컨볼루션 보폭에 따라 상기 입력 이미지 데이터로부터 필요한 데이터를 판독하여 연결시킴으로써 결정된다.
가능한 일 실시예에서, 각 가중치에 대응되는 입력 데이터 스트림은, 상기 RХS 팽창 컨볼루션 연산의 팽창 비율 및 컨볼루션 보폭에 따라 상기 입력 이미지 데이터에서 복수의 행의 데이터를 판독하여 연결시킴으로써 결정된다.
가능한 일 실시예에서, 상기 슬라이딩 윈도우 연산의 슬라이딩 보폭은 상기 RХS 팽창 컨볼루션 연산의 컨볼루션 보폭에 따라 결정된다.
가능한 일 실시예에서, 상기 S개의 RХ1 서브 팽창 컨볼루션 연산의 각 중간 결과를 가산하는 것은, 상기 S개의 RХ1 서브 팽창 컨볼루션 연산 과정에서 각 중간 결과를 실시간으로 누산하는 것, 또는 상기 S개의 RХ1 서브 팽창 컨볼루션 연산 완료 후 각 중간 결과를 합산하는 것을 포함한다.
제2 양태에서, 팽창 컨볼루션 계산을 가속화하기 위한 장치로서, 로직 제어 유닛 및 컴퓨팅 유닛 어레이를 포함하되, 상기 로직 제어 유닛은, RХS 팽창 컨볼루션 연산을 S개의 RХ1 서브 팽창 컨볼루션 연산으로 분해하는 동작 - 상기 R은 상기 RХS 팽창 컨볼루션 연산의 컨볼루션 커널의 높이를 나타내고 상기 S는 상기 컨볼루션 커널의 너비를 나타냄 - ; 각 RХ1 서브 팽창 컨볼루션 연산에 대해, 복수의 가중치를 상기 컴퓨팅 유닛 어레이의 복수의 컴퓨팅 유닛에 병렬로 캐싱하는 동작; 및 입력 이미지 데이터로부터, 상기 복수의 가중치에 각각 대응되는 복수의 입력 데이터 스트림을 결정하고, 상기 복수의 입력 데이터 스트림을 상기 복수의 컴퓨팅 유닛에 병렬로 입력하는 동작을 수행하도록 구성되고; 상기 컴퓨팅 유닛 어레이는, 상기 복수의 컴퓨팅 유닛 내에서 각각의 캐싱된 가중치 및 각각의 입력된 입력 데이터 스트림에 기반하여 슬라이딩 윈도우 연산 및 곱셈 연산을 수행하고, 상기 복수의 컴퓨팅 유닛 간 누산 연산을 수행하여 상기 각 RХ1 서브 팽창 컨볼루션 연산의 중간 결과를 출력하는 동작; 및 상기 S개의 RХ1 서브 팽창 컨볼루션 연산의 각 중간 결과를 가산하여 상기 RХS 팽창 컨볼루션 연산의 컨볼루션 결과를 획득하는 동작을 수행하도록 구성된, 팽창 컨볼루션 계산 가속화 장치를 제공한다.
가능한 일 실시예에서, 상기 로직 제어 유닛은, 상기 RХS 팽창 컨볼루션 연산의 팽창 비율 및 컨볼루션 보폭에 따라 상기 입력 이미지 데이터로부터 필요한 데이터를 판독하여 연결시킴으로써 각 가중치에 대응되는 입력 데이터 스트림을 결정하도록 구성된다.
가능한 일 실시예에서, 상기 로직 제어 유닛은, 상기 RХS 팽창 컨볼루션 연산의 팽창 비율 및 컨볼루션 보폭에 따라 상기 입력 이미지 데이터에서 복수의 행의 데이터를 판독하여 연결시킴으로써 각 가중치에 대응되는 입력 데이터 스트림을 결정하도록 구성된다.
가능한 일 실시예에서, 상기 슬라이딩 윈도우 연산의 슬라이딩 보폭은 상기 RХS 팽창 컨볼루션 연산의 컨볼루션 보폭에 따라 결정된다.
가능한 일 실시예에서, 상기 컴퓨팅 유닛 어레이는, 상기 S개의 RХ1 서브 팽창 컨볼루션 연산 과정에서 각 중간 결과를 실시간으로 누산하거나, 또는 상기 S개의 RХ1 서브 팽창 컨볼루션 연산 완료 후 각 중간 결과를 합산하도록 구성된다.
본 발명의 실시예에서 채용된 기술적 해결수단 중 적어도 하나는 다음과 같은 유익한 효과를 달성할 수 있다. RХS 팽창 컨볼루션 연산을 S개의 RХ1 서브 팽창 컨볼루션 연산으로 분해하고, 분해를 통해 획득된 복수의 가중치를 일 열의 컴퓨팅 유닛들에 병렬로 캐싱하고, 컴퓨팅 유닛들에 의해 각각의 캐싱된 가중치에 기반하여 입력 데이터 스트림에 대한 슬라이딩 윈도우 연산 및 곱셈 연산을 수행하고, 컴퓨팅 유닛들 간의 누산 연산을 수행함으로써, 팽창 컨볼루션 연산의 가속화를 실현할 수 있다. 이와 같은 해결수단을 통해 Im2col 기능을 별도로 구현할 필요가 없으므로 복잡성이 감소된다.
이해해야 할 점이라면, 전술한 설명은, 본 발명의 기술적 수단에 대한 더 나은 이해를 통해 본 명세서에 기재된 내용에 따라 본 발명을 실시할 수 있도록 하기 위해, 본 발명의 기술적 해결수단의 요약에 불과하다. 본 발명의 상기 및 다른 목적, 특징 및 이점이 보다 명확하도록, 이하 본 발명의 구체적인 실시 형태를 예시한다.
본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 아래의 예시적인 실시예의 세부사항을 통해 본원에서 설명된 이점과 효과 및 다른 이점과 효과를 이해할 수 있다. 첨부된 도면은 단지 예시적인 실시예를 설명하기 위한 것으로, 본 발명을 한정하려는 의도가 아니다. 또한, 첨부된 도면 전체에 걸쳐 동일한 도면 부호를 사용하여 동일한 구성요소를 나타낸다.
도 1은 종래 기술의 Im2col 기반 팽창 컨볼루션 연산에 대한 예시도이다.
도 2는 컨볼루션 신경망 컴퓨팅 장치의 예시적인 구조도이다.
도 3은 본 발명의 일 실시예에 따른 팽창 컨볼루션 계산 가속화 방법의 예시적인 흐름도이다.
도 4a는 팽창 컨볼루션 연산에 대한 일 예시도이고, 도 4b는 도 4a에 도시된 팽창 컨볼루션 연산에 대한 다른 일 예시도이다.
도 5는 본 발명의 일 실시예에 따라 RХS 팽창 컨볼루션 연산을 S개의 RХ1 서브 팽창 컨볼루션 연산으로 분해하는 동작에 대한 일 예시도이다.
도 6은 본 발명의 일 실시예에 따라 RХS 팽창 컨볼루션 연산을 S개의 RХ1 서브 팽창 컨볼루션 연산으로 분해하는 동작에 대한 다른 일 예시도이다.
도 7은 본 발명의 일 실시예에 따라 가중치가 각각 캐싱된 컴퓨팅 유닛(PE)들에 의해 수행되는 팽창 컨볼루션에 대한 예시도이다.
도 8은 본 발명의 일 실시예에 따른 가중치가 캐싱된 일 컴퓨팅 유닛(PE)에 의해 수행되는 슬라이딩 윈도우 동작에 대한 예시도이다.
도 9는 본 발명의 일 실시예에 따른 팽창 컨볼루션 계산 가속화 장치의 예시적인 구조도이다.
첨부된 도면에서, 동일한 또는 대응되는 도면 부호는 동일한 또는 대응되는 부분을 나타낸다.
이하, 첨부된 도면을 참조하여 본 발명의 예시적인 실시예들을 상세히 설명한다. 첨부된 도면은 본 발명의 예시적인 실시예들을 도시하고 있지만, 이해해야 할 점이라면 본 발명은 다양한 형태로 구현될 수 있으며 여기에서 설명되는 실시예들에 한정되지 않는다. 반대로, 이러한 실시예들은, 본 발명이 보다 명확하게 이해될 수 있도록 하고 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 본 발명의 범위가 충분히 전달될 수 있도록 하기 위해 제공되는 것이다.
본 발명에서, 이해해야 할 점이라면 "포함(하는)" 또는 "갖(는)"과 같은 용어는 본 명세서에 의해 개시되는 특징, 숫자, 단계, 동작, 구성요소, 부분 또는 이들의 임의의 조합의 존재를 나타내는 것으로서, 하나 이상의 다른 특징, 숫자, 단계, 동작, 구성요소, 부분 또는 이들의 조합의 존재를 배제하지 않는 것으로 의도된다.
또한 설명해야 할 점이라면, 충돌이 없는 경우, 본 발명의 실시예들 및 그들의 특징들은 임의의 방식으로 서로 결합될 수 있다. 이하 첨부된 도면 및 실시예를 참조하여 본 발명을 상세히 설명한다.
도 2는 팽창 컨볼루션 계산 가속화 장치(20)의 예시적인 구조도이다. 해당 장치는 컴퓨팅 플랫폼(21) 및 외부 메모리(22)를 포함한다. 컴퓨팅 플랫폼(21)은 팽창 컨볼루션 연산을 수행하기 위한 컴퓨팅 유닛 어레이(211) 및 내부 메모리(212)를 적어도 포함할 수 있다. 일반적으로, 외부 메모리(22)는 통상적으로 대역폭이 제한되고 읽기/쓰기 전력 소모가 상대적으로 높은 저가형 저장 매체일 수 있다. 내부 메모리는 일반적으로 SRAM과 같이 비교적 빠른 접근 속도를 갖는 저장 매체일 수 있다. SRAM은 대역폭이 비교적 크고 읽기/쓰기 전력 소모가 낮지만 통상적으로 단가가 비교적 높기 때문에 일반적으로 용량이 제한된다.
도 3은 본 발명의 일 실시예에 따른 팽창 컨볼루션 계산 가속화 방법(300)의 예시적인 흐름도이다. 도 2에 도시된 팽창 컨볼루션 계산 가속화 장치를 참조하여 아래에서 도 3에 도시된 팽창 컨볼루션 계산 가속화 방법(300)의 다양한 양태를 구체적으로 설명한다.
도 3에 도시된 바와 같이, 상기 방법(300)은 하기와 같은 단계들을 포함할 수 있다.
단계 301: RХS 팽창 컨볼루션 연산을 S개의 RХ1 서브 팽창 컨볼루션 연산으로 분해하되, 여기서 R은 RХS 팽창 컨볼루션 연산의 컨볼루션 커널의 높이를 나타내고, S는 컨볼루션 커널의 너비를 나타낸다.
단계 302: 각 R×1 서브 팽창 컨볼루션 연산에 대해 복수의 가중치를 컴퓨팅 유닛 어레이의 복수의 컴퓨팅 유닛에 병렬로 캐싱한다.
단계 303: 입력 이미지 데이터로부터, 복수의 가중치에 각각 대응되는 복수의 입력 데이터 스트림을 결정하고, 복수의 입력 데이터 스트림을 복수의 컴퓨팅 유닛에 병렬로 입력한다.
단계 304: 복수의 컴퓨팅 유닛 내에서, 각각의 캐싱된 가중치 및 각각의 입력된 입력 데이터 스트림에 기반하여 슬라이딩 윈도우 연산 및 곱셈 연산을 수행하고, 복수의 컴퓨팅 유닛 간 누산 연산을 수행하여 각 R×1 서브 팽창 컨볼루션 연산의 중간 결과를 출력한다.
단계 305: S개의 RХ1 서브 팽창 컨볼루션 연산의 각 중간 결과를 가산하여 RХS 팽창 컨볼루션 연산의 컨볼루션 결과를 획득한다.
도 4a 및 도 4b는 팽창 컨볼루션 연산의 일 예를 도시한다. 도 4a에 도시된 바와 같이, 팽창 컨볼루션 연산을 위한 입력 이미지 데이터는 복수의 픽셀 값 Dabc로 구성된 행렬 데이터이다. 여기서 아래 첨자 a는 채널 인덱스를 나타내고, 아래 첨자 b는 값 범위가 0, 1, ... , 6인 행 인덱스를 나타내고, 아래 첨자 c는 값 범위가 0, 1, ... , 6인 열 인덱스를 나타낸다. 즉, 행렬 데이터의 크기는 7(열)Х7(행)이다. 이러한 입력 이미지 데이터는 신경망 모델에 입력된 실제 이미지를 기반으로 획득될 수 있으며, 일반적으로 행 단위 및 채널 단위로 외부 메모리(22)에 순차적으로 저장될 수 있다. 이 팽창 컨볼루션 레이어의 컨볼루션 커널은 복수의 가중치 Wedf로 구성된다. 여기서 아래 첨자 e는 채널 인덱스를 나타내고, 아래 첨자 d는 값 범위가 0, 1, 2인 행 인덱스를 나타내며, 아래 첨자 f는 값 범위가 0, 1, 2인 열 인덱스를 나타낸다. 즉, 컨볼루션 커널은 3(열)Х3(행)의 크기를 가지며, 여러 이미지 샘플 데이터를 학습시켜 컨볼루션 커널을 획득될 수 있고, 일반적으로 외부 메모리(22)에 저장될 수 있다. 도 4b에 도시된 바와 같이, 팽창 컨볼루션의 결과로서, 컨볼루션 커널로 입력 이미지 데이터에 대해 팽창 컨볼루션을 수행하여 출력 데이터가 획득되며, 여기서 각 Pxy에서 아래 첨자 x는 값 범위가 0, 1, 2인 행 인덱스를 나타내고, 아래 첨자 y는 값 범위가 0, 1, 2인 열 인덱스를 나타낸다. 즉, 출력 데이터의 크기는 3(열)Х3(행)이다. 본 발명의 실시예들에서 구현된 팽창 컨볼루션 연산은 입력 이미지 데이터 및 가중치 행렬로부터 팽창 컨볼루션 결과를 도출하는 연산이다. 본 발명의 실시예들은 채널 0에 대한 계산을 예로 들어 설명한다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 채널 0에 대한 계산 로직에 따라 다른 채널에 대한 계산이 수행될 수 있다는 점을 이해할 수 있다.
본 발명의 실시예들은 도 4a 및 도 4b에 도시된 팽창 컨볼루션 연산을 예로 들어 설명될 것이다.
팽창 컨볼루션 연산의 팽창 비율 λ가 2이고 컨볼루션 보폭(stride) s가 1이라고 가정한다. 먼저, 도 4a 및 도 4b에 도시된 3Х3 팽창 컨볼루션 연산을 3개의 3Х1 서브 팽창 컨볼루션 연산으로 분해한다. 예를 들어, 도 5에 도시된 바와 같이, 3Х3 컨볼루션 커널을 3개의 3Х1 서브 컨볼루션 커널들, 즉 제1 서브 컨볼루션 커널, 제2 서브 컨볼루션 커널, 및 제3 서브 컨볼루션 커널로 분할한다. 이어서, 도 4b에 도시된 팽창 컨볼루션 연산을 도 6에 도시된 3개의 서브 팽창 컨볼루션 연산들로 분할한다.
다음으로, 각각의 3Х1 서브 팽창 컨볼루션 연산에 대해, 도 7에 도시된 바와 같이 채널 0의 컨볼루션 계산을 예로 들어 설명하면, 3개의 가중치(W000, W010, W020)를 컴퓨팅 유닛 어레이 내의 3개의 컴퓨팅 유닛에 병렬로 캐싱한다. 이어서, 입력 이미지 데이터로부터 3개의 가중치(W000, W010, W020)에 각각 대응되는 3개의 입력 데이터 스트림을 결정하고, 3개의 입력 데이터 스트림을 3개의 컴퓨팅 유닛에 병렬로 입력한다.
일부 가능한 실시예에서, 팽창 컨볼루션 연산의 팽창 배율 λ=2 및 컨볼루션 보폭 s=1에 따라 입력 이미지 데이터로부터 복수의 행의 데이터를 결정하고, 이어서 복수의 행의 데이터로부터 필요한 데이터를 판독하여 연결(concatenate)시킴으로써 각 가중치에 대응되는 입력 데이터 스트림을 결정한다. 예를 들어, 가중치 W000이 캐싱된 컴퓨팅 유닛에 입력될 데이터 스트림은 (D000, D001, D002, D010, D011, D012, D020, D021, D022), 즉 (D000, ..., D00(W-2λ-1), D010, ..., D01(W-2λ-1), D0(H-2λ-1)0, ..., D0(H-2λ-1)(W-2λ-1))일 수 있다. 여기서 W는 입력 이미지 데이터의 너비인 7이고, H는 입력 이미지 데이터의 높이인 7이다. 이와 유사하게, 가중치 W010 및 W020이 캐싱된 컴퓨팅 유닛에 각각 입력될 데이터 스트림이 차례로 유도될 수 있다. 이어서, 3개의 컴퓨팅 유닛 내에서 각각의 캐싱된 가중치와 각각의 입력된 입력 데이터 스트림을 기반으로 슬라이딩 윈도우 연산 및 곱셈 연산을 수행하고, 3개의 컴퓨팅 유닛 간에 누산 연산을 수행하여 각 3Х1 서브 팽창 컨볼루션 연산의 중간 결과를 출력한다. 예를 들어, 각 컴퓨팅 유닛 내에서, 그에 캐싱된 가중치를 슬라이딩 윈도우로 취하여 입력 데이터 스트림에 대해 슬라이딩 윈도우 연산이 수행되되, 여기서 매번의 슬라이딩 윈도우 연산에 있어서 윈도우 내 데이터에 대한 곱셈 연산이 수행되어 곱셈 결과가 획득되고, 각 컴퓨팅 유닛의 곱셈 연산 후에 3개의 컴퓨팅 유닛의 곱셈 결과에 대한 누산 연산이 수행되어 일 픽셀 위치에 대응되는 중간 결과가 획득된다.
가능한 일 실시예에서, S개의 RХ1 서브 팽창 컨볼루션 연산의 각 중간 결과를 가산하는 것은, S개의 RХ1 서브 팽창 컨볼루션 연산 동안 실시간으로 S개의 RХ1 서브 팽창 컨볼루션 연산의 각 중간 결과를 누산하는 것, 또는 S개의 RХ1 서브 팽창 컨볼루션 연산 완료 후 각 중간 결과를 합산하는 것을 포함한다. 예를 들어, 컴퓨팅 유닛 어레이로 제1 내지 제3 중간 결과를 산출한 후 3개의 3Х1 서브 팽창 컨볼루션 연산의 캐싱된 중간 결과들을 가산하여 3Х3 팽창 컨볼루션 연산의 컨볼루션 결과를 얻는다. 선택적으로, 컴퓨팅 유닛에 의해 수행되는 각각의 계산 동안 누산이 실시간으로 수행될 수 있다. 예를 들어, 제2 중간 결과의 P00''가 산출된 후 실시간으로 제1 중간 결과의 P00'에 누산될 수 있다. 선택적으로, 가산 모드는 온칩 캐시 영역의 크기에 따라 결정될 수 있다. 즉, 각 계산 과정에서 실시간으로 누산이 수행되거나 모든 계산이 완료된 후 각 중간 결과의 합산이 수행된다.
일부 다른 가능한 일 실시예에서, 데이터 판독 로직을 더 단순화하기 위해, 팽창 컨볼루션 연산의 팽창 비율 및 컨볼루션 보폭에 따라 입력 이미지 데이터의 복수의 행의 데이터를 판독하여 연결시킴으로써 각 가중치에 대응되는 입력 데이터 스트림을 결정할 수 있다. 예를 들어, 팽창 비율 λ가 2이고, 컨볼루션 보폭이 1이고, 컨볼루션 커널의 크기가 3Х3이고, 입력 이미지 데이터의 크기가 7Х7인 경우, 입력 이미지 데이터의 제1 내지 제3 행의 데이터의 연결 조합, 즉 (D000, ..., D006, D010, ..., D016, D020, ..., D026)을 가중치 W000이 캐싱된 컴퓨팅 유닛에 직접 입력할 수 있고, 컴퓨팅 유닛 내부에서 슬라이딩 윈도우 연산을 위한 슬라이딩 영역을 제어할 수 있다. 예를 들어, 슬라이딩 윈도우 연산은 데이터 스트림 내에서 열 인덱스가 2를 초과하지 않는 데이터에 대해서만 수행되고, 열 인덱스가 2보다 큰 데이터는 스킵할 수 있다.
도 8에 도시된 바와 같이, 전술한 3Х3 팽창 컨볼루션 연산을 예로 들어 가중치 W000이 캐싱된 컴퓨팅 유닛을 기반으로 컴퓨팅 유닛 어레이의 동작을 설명한다. 타이밍 T1에 가중치 W000은 입력 데이터 스트림 상에서 D000으로 슬라이딩되고, 윈도우 내 가중치와 입력 데이터를 기반으로 곱셈 연산 W000*D000이 수행된다. 한편, 다른 컴퓨팅 유닛(PE)들도 각각의 캐싱된 가중치를 기반으로 각각의 입력 데이터 스트림 상에서 동기화 슬라이딩을 수행하고, 각각 윈도우 내 가중치 및 데이터에 기반하여 곱셈 연산을 수행한다. 예를 들어, 가중치 W001은 D020으로, 가중치 W002는 D040으로 슬라이딩되는 식으로, 타이밍 T1에서의 각 컴퓨팅 유닛(PE)의 곱셈 결과를 얻을 수 있다. 이로써, 타이밍 T1에서 제1 서브 컨볼루션 커널에 대응되는 일 열의 컴퓨팅 유닛의 곱셈 결과를 모두 합산하여 출력값 P00'을 획득할 수 있다. 타이밍 T2에서 가중치 W000은 컨볼루션 보폭에 따라 입력 데이터 스트림 상에서 D001로 슬라이딩되고 이와 같이 유추하여 도 6의 또 다른 출력값 P01'이 획득되고, 타이밍 T3에서 도 6의 또 다른 출력값 P02'이 획득될 수 있다. 그 결과, 도 6의 제1 중간 결과의 각 값이 획득되고, 제1 중간 결과는 캐싱될 수 있다.
이해해야 할 점이라면, 제1 서브 컨볼루션 커널 관련 계산이 실행 완료된 후, 컴퓨팅 유닛 어레이 내 캐싱된 값들이 제2 서브 컨볼루션 커널의 복수의 가중치로 업데이트되고, 위에서 설명한 것과 유사한 방식으로 도 6의 제2 중간 결과가 획득될 수 있다. 이와 같이 유추하여, 각각의 서브 팽창 컨볼루션 연산에 대응되는 모든 중간 결과를 획득할 수 있고, 복수의 중간 결과의 대응 위치들을 합산하여 팽창 컨볼루션 연산의 컨볼루션 결과를 획득할 수 있다.
다른 일 실시예에서, 복수의 열의 컴퓨팅 유닛(PE)을 이용하여 복수의 컨볼루션 커널의 팽창 컨볼루션 연산을 동시에 구현할 수 있다. 또한, 상이한 컨볼루션 커널에서 동일한 위치에 있는 가중치들은 동일한 입력 데이터 스트림에 대응될 수 있으므로, 상이한 컨볼루션 커널에서 동일한 위치에 있는 가중치들을 컴퓨팅 유닛(PE) 어레이의 동일한 행에 배열할 수 있다.
일부 가능한 실시예에서, 단계 304에서 슬라이딩 윈도우 연산의 슬라이딩 보폭은 팽창 컨볼루션 연산의 컨볼루션 보폭에 따라 결정된다. 예를 들어, 도 8에 도시된 슬라이딩 윈도우 연산에서, 슬라이딩 보폭은 컨볼루션 보폭과 동일하다.
본 실시예에서, 상기 방법에 따르면, 외부 메모리에서 단일 메모리 방향으로 연속적으로 저장된 입력 이미지 데이터에 대해 행간 또는 열간 교차 판독을 빈번하게 수행할 필요가 없고, 메모리의 배열에 대한 특별한 설계가 필요 없이, 높은 범용성과 낮은 복잡성으로 팽창 컨볼루션 계산 가속화 방법을 구현될 수 있다. 또한 컴퓨팅 플랫폼에서 Im2col 기능을 추가로 구현할 필요가 없어 하드웨어 리소스와 컴퓨팅 전력 소모를 절감할 수 있다.
동일하거나 유사한 기술적 구상에 기반하여, 본 발명의 실시예는 팽창 컨볼루션 계산 가속화 장치를 더 제공한다. 해당 장치는 로직 제어 유닛(91) 및 컴퓨팅 유닛(PE) 어레이(211)를 포함한다.
로직 제어 유닛은, RХS 팽창 컨볼루션 연산을 S개의 RХ1 서브 팽창 컨볼루션 연산으로 분해하는 동작 - 상기 R은 상기 RХS 팽창 컨볼루션 연산의 컨볼루션 커널의 높이를 나타내고 상기 S는 상기 컨볼루션 커널의 너비를 나타냄 - ; 각 RХ1 서브 팽창 컨볼루션 연산에 대해, 복수의 가중치를 상기 컴퓨팅 유닛 어레이의 복수의 컴퓨팅 유닛에 병렬로 캐싱하는 동작; 및 상기 복수의 가중치에 각각 대응되는 복수의 입력 데이터 스트림을 결정하고, 상기 복수의 입력 데이터 스트림을 상기 복수의 컴퓨팅 유닛에 병렬로 입력하는 동작을 수행하도록 구성된다.
컴퓨팅 유닛 어레이는, 상기 복수의 컴퓨팅 유닛 내에서 각각의 캐싱된 가중치 및 각각의 입력된 입력 데이터 스트림에 기반하여 슬라이딩 윈도우 연산 및 곱셈 연산을 수행하고, 상기 복수의 컴퓨팅 유닛 간 누산 연산을 수행하여 상기 각 RХ1 서브 팽창 컨볼루션 연산의 중간 결과를 출력하는 동작; 및 상기 S개의 RХ1 서브 팽창 컨볼루션 연산의 각 중간 결과를 가산하여 상기 RХS 팽창 컨볼루션 연산의 컨볼루션 결과를 획득하는 동작을 수행하도록 구성된다.
일부 가능한 실시예에서, 로직 제어 유닛(91)은, 상기 RХS 팽창 컨볼루션 연산의 팽창 비율 및 컨볼루션 보폭에 따라 입력 이미지 데이터로부터 필요한 데이터를 판독하여 연결시킴으로써 각 가중치에 대응되는 입력 데이터 스트림을 결정하도록 구성된다.
일부 다른 가능한 일 실시예에서, 로직 제어 유닛(91)은, 상기 RХS 팽창 컨볼루션 연산의 팽창 비율 및 컨볼루션 보폭에 따라 입력 이미지 데이터에서 복수의 행의 데이터를 판독하여 연결시킴으로써 각 가중치에 대응되는 입력 데이터 스트림을 결정하도록 구성된다.
일부 가능한 실시예에서, 슬라이딩 윈도우 연산의 슬라이딩 보폭은 RХS 팽창 컨볼루션 연산의 컨볼루션 보폭에 따라 결정된다.
가능한 일 실시예에서, 컴퓨팅 유닛 어레이는, 상기 S개의 RХ1 서브 팽창 컨볼루션 연산 과정에서 각 중간 결과를 실시간으로 누산하거나, 또는 상기 S개의 RХ1 서브 팽창 컨볼루션 연산 완료 후 각 중간 결과를 합산하도록 구성된다.
본 발명의 각 실시예는 점진적으로 설명된다. 각 실시예의 동일하거나 또는 유사한 부분은 서로 참조할 수 있으며, 각 실시예는 다른 실시예와의 차이점에 초점을 두어 설명된다. 특히, 장치의 실시예는 기본적으로 방법의 실시예와 대응되므로 간단하게 설명하고, 관련 사항에 대해 방법의 실시예의 설명 부분을 참조할 수 있다.
본 발명의 실시예에 따른 장치는 방법과 일대일 대응된다. 따라서, 장치는 대응되는 방법과 유사한 유익한 기술적 효과를 갖는다. 방법의 유익한 기술적 효과는 위에서 상세히 설명되었으므로, 장치의 유익한 기술적 효과는 여기에서 반복되지 않을 것이다.
본 발명의 사상 및 원리가 일부 실시예를 참조하여 설명되었지만, 이해해야 할 점이라면, 본 발명은 개시된 실시예로 제한되지 않으며, 양태 별 분할은 이들 양태의 특징들의 유익한 결합이 불가능함을 의미한다는 것이 아니라 단지 표현의 편의를 위한 것이다. 본 발명은 첨부된 청구범위의 사상 및 범위 내에 포함된 다양한 수정 및 등가 배열을 포함하도록 의도된다.
본 발명의 사상 및 원리가 일부 실시예를 참조하여 설명되었지만, 이해해야 할 점이라면, 본 발명은 개시된 실시예로 제한되지 않으며, 양태 별 분할은 이들 양태의 특징들의 유익한 결합이 불가능함을 의미한다는 것이 아니라 단지 표현의 편의를 위한 것이다. 본 발명은 첨부된 청구범위의 사상 및 범위 내에 포함된 다양한 수정 및 등가 배열을 포함하도록 의도된다.

Claims (10)

  1. 팽창 컨볼루션 계산을 가속화하는 방법으로서,
    RХS 팽창 컨볼루션 연산을 S개의 RХ1 서브 팽창 컨볼루션 연산으로 분해하는 것 - 상기 R은 상기 RХS 팽창 컨볼루션 연산의 컨볼루션 커널의 높이를 나타내고 상기 S는 상기 컨볼루션 커널의 너비를 나타냄 - ;
    각 RХ1 서브 팽창 컨볼루션 연산에 대해, 복수의 가중치를 컴퓨팅 유닛 어레이의 복수의 컴퓨팅 유닛에 병렬로 캐싱하는 것;
    입력 이미지 데이터로부터, 상기 복수의 가중치에 각각 대응되는 복수의 입력 데이터 스트림을 결정하고, 상기 복수의 입력 데이터 스트림을 상기 복수의 컴퓨팅 유닛에 병렬로 입력하는 것;
    상기 복수의 컴퓨팅 유닛 내에서 각각의 캐싱된 가중치 및 각각의 입력된 입력 데이터 스트림에 기반하여 슬라이딩 윈도우 연산 및 곱셈 연산을 수행하고, 상기 복수의 컴퓨팅 유닛 간 누산 연산을 수행하여 상기 각 RХ1 서브 팽창 컨볼루션 연산의 중간 결과를 출력하는 것; 및
    상기 S개의 RХ1 서브 팽창 컨볼루션 연산의 각 중간 결과를 가산하여 상기 RХS 팽창 컨볼루션 연산의 컨볼루션 결과를 획득하는 것을 포함하는,
    팽창 컨볼루션 계산 가속화 방법.
  2. 청구항 1에 있어서,
    각 가중치에 대응되는 입력 데이터 스트림은, 상기 RХS 팽창 컨볼루션 연산의 팽창 비율 및 컨볼루션 보폭에 따라 상기 입력 이미지 데이터로부터 필요한 데이터를 판독하여 연결시킴으로써 결정되는,
    팽창 컨볼루션 계산 가속화 방법.
  3. 청구항 1에 있어서,
    각 가중치에 대응되는 입력 데이터 스트림은, 상기 RХS 팽창 컨볼루션 연산의 팽창 비율 및 컨볼루션 보폭에 따라 상기 입력 이미지 데이터에서 복수의 행의 데이터를 판독하여 연결시킴으로써 결정되는
    팽창 컨볼루션 계산 가속화 방법.
  4. 청구항 1에 있어서,
    상기 슬라이딩 윈도우 연산의 슬라이딩 보폭은 상기 RХS 팽창 컨볼루션 연산의 컨볼루션 보폭에 따라 결정되는,
    팽창 컨볼루션 계산 가속화 방법.
  5. 청구항 1에 있어서,
    상기 S개의 RХ1 서브 팽창 컨볼루션 연산의 각 중간 결과를 가산하는 것은,
    상기 S개의 RХ1 서브 팽창 컨볼루션 연산 과정에서 각 중간 결과를 실시간으로 누산하는 것, 또는
    상기 S개의 RХ1 서브 팽창 컨볼루션 연산 완료 후 각 중간 결과를 합산하는 것을 포함하는
    팽창 컨볼루션 계산 가속화 방법.
  6. 팽창 컨볼루션 계산을 가속화하기 위한 장치로서,
    로직 제어 유닛 및 컴퓨팅 유닛 어레이를 포함하되,
    상기 로직 제어 유닛은, RХS 팽창 컨볼루션 연산을 S개의 RХ1 서브 팽창 컨볼루션 연산으로 분해하는 동작 - 상기 R은 상기 RХS 팽창 컨볼루션 연산의 컨볼루션 커널의 높이를 나타내고 상기 S는 상기 컨볼루션 커널의 너비를 나타냄 - ; 각 RХ1 서브 팽창 컨볼루션 연산에 대해, 복수의 가중치를 상기 컴퓨팅 유닛 어레이의 복수의 컴퓨팅 유닛에 병렬로 캐싱하는 동작; 및 입력 이미지 데이터로부터, 상기 복수의 가중치에 각각 대응되는 복수의 입력 데이터 스트림을 결정하고, 상기 복수의 입력 데이터 스트림을 상기 복수의 컴퓨팅 유닛에 병렬로 입력하는 동작을 수행하도록 구성되고;
    상기 컴퓨팅 유닛 어레이는, 상기 복수의 컴퓨팅 유닛 내에서 각각의 캐싱된 가중치 및 각각의 입력된 입력 데이터 스트림에 기반하여 슬라이딩 윈도우 연산 및 곱셈 연산을 수행하고, 상기 복수의 컴퓨팅 유닛 간 누산 연산을 수행하여 상기 각 RХ1 서브 팽창 컨볼루션 연산의 중간 결과를 출력하는 동작; 및 상기 S개의 RХ1 서브 팽창 컨볼루션 연산의 각 중간 결과를 가산하여 상기 RХS 팽창 컨볼루션 연산의 컨볼루션 결과를 획득하는 동작을 수행하도록 구성된,
    팽창 컨볼루션 계산 가속화 장치.
  7. 청구항 6에 있어서,
    상기 로직 제어 유닛은, 상기 RХS 팽창 컨볼루션 연산의 팽창 비율 및 컨볼루션 보폭에 따라 상기 입력 이미지 데이터로부터 필요한 데이터를 판독하여 연결시킴으로써 각 가중치에 대응되는 입력 데이터 스트림을 결정하도록 구성된,
    팽창 컨볼루션 계산 가속화 장치.
  8. 청구항 6에 있어서,
    상기 로직 제어 유닛은, 상기 RХS 팽창 컨볼루션 연산의 팽창 비율 및 컨볼루션 보폭에 따라 상기 입력 이미지 데이터에서 복수의 행의 데이터를 판독하여 연결시킴으로써 각 가중치에 대응되는 입력 데이터 스트림을 결정하도록 구성된,
    팽창 컨볼루션 계산 가속화 장치.
  9. 청구항 6에 있어서,
    상기 슬라이딩 윈도우 연산의 슬라이딩 보폭은 상기 RХS 팽창 컨볼루션 연산의 컨볼루션 보폭에 따라 결정된
    팽창 컨볼루션 계산 가속화 장치.
  10. 청구항 6에 있어서,
    상기 컴퓨팅 유닛 어레이는, 상기 S개의 RХ1 서브 팽창 컨볼루션 연산 과정에서 각 중간 결과를 실시간으로 누산하거나, 또는 상기 S개의 RХ1 서브 팽창 컨볼루션 연산 완료 후 각 중간 결과를 합산하도록 구성된
    팽창 컨볼루션 계산 가속화 장치.
KR1020227031052A 2020-07-08 2020-11-03 팽창 컨볼루션 계산 가속화 방법 및 장치 KR20230081697A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN202010659646.6A CN113989169A (zh) 2020-07-08 2020-07-08 一种膨胀卷积加速计算方法及装置
CN202010659646.6 2020-07-08
PCT/CN2020/126195 WO2022007265A1 (zh) 2020-07-08 2020-11-03 一种膨胀卷积加速计算方法及装置

Publications (1)

Publication Number Publication Date
KR20230081697A true KR20230081697A (ko) 2023-06-07

Family

ID=79552764

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227031052A KR20230081697A (ko) 2020-07-08 2020-11-03 팽창 컨볼루션 계산 가속화 방법 및 장치

Country Status (6)

Country Link
US (1) US20230273829A1 (ko)
EP (1) EP4181024A4 (ko)
JP (1) JP7419574B2 (ko)
KR (1) KR20230081697A (ko)
CN (1) CN113989169A (ko)
WO (1) WO2022007265A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115292662B (zh) * 2022-08-18 2023-09-22 上海燧原科技有限公司 一种卷积加速运算方法、装置、电子设备及存储介质
CN117407733B (zh) * 2023-12-12 2024-04-02 南昌科晨电力试验研究有限公司 一种基于对抗生成shapelet的流量异常检测方法及系统

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10067509B1 (en) * 2017-03-10 2018-09-04 TuSimple System and method for occluding contour detection
US10838910B2 (en) 2017-04-27 2020-11-17 Falcon Computing Systems and methods for systolic array design from a high-level program
US10990648B2 (en) 2017-08-07 2021-04-27 Intel Corporation System and method for an optimized winograd convolution accelerator
CN109919295B (zh) * 2017-12-12 2022-10-28 北京大学深圳研究生院 一种基于轻量级卷积神经网络的嵌入式音频事件检测方法
CN110543849B (zh) * 2019-08-30 2022-10-04 北京市商汤科技开发有限公司 检测器的配置方法及装置、电子设备和存储介质
CN111178519B (zh) 2019-12-27 2022-08-02 华中科技大学 卷积神经网络加速引擎、卷积神经网络加速系统及方法
CN111260037B (zh) * 2020-02-11 2023-10-13 深圳云天励飞技术股份有限公司 图像数据的卷积运算方法、装置、电子设备及存储介质
CN111951269B (zh) * 2020-10-16 2021-01-05 深圳云天励飞技术股份有限公司 图像处理方法及相关设备

Also Published As

Publication number Publication date
JP7419574B2 (ja) 2024-01-22
JP2023531070A (ja) 2023-07-20
EP4181024A4 (en) 2024-04-24
WO2022007265A1 (zh) 2022-01-13
CN113989169A (zh) 2022-01-28
EP4181024A1 (en) 2023-05-17
US20230273829A1 (en) 2023-08-31

Similar Documents

Publication Publication Date Title
US11574031B2 (en) Method and electronic device for convolution calculation in neural network
US11468301B2 (en) Method and apparatus for performing operation of convolutional layer in convolutional neural network
EP3499428A1 (en) Method and electronic device for convolution calculation in neutral network
US20230289230A1 (en) Method and apparatus for accelerating convolutional neural network
US20190205738A1 (en) Systems and methods for hardware-based pooling
CN110989920B (zh) 能量高效的存储器系统和方法
US11436017B2 (en) Data temporary storage apparatus, data temporary storage method and operation method
CN109993293B (zh) 一种适用于堆叠式沙漏网络的深度学习加速器
CN112703511B (zh) 运算加速器和数据处理方法
US10402196B2 (en) Multi-dimensional sliding window operation for a vector processor, including dividing a filter into a plurality of patterns for selecting data elements from a plurality of input registers and performing calculations in parallel using groups of the data elements and coefficients
WO2022206556A1 (zh) 图像数据的矩阵运算方法、装置、设备及存储介质
KR20230081697A (ko) 팽창 컨볼루션 계산 가속화 방법 및 장치
CN110796236A (zh) 多样本多通道卷积神经网络池化的向量化实现方法
CN113806261B (zh) 一种面向向量处理器的池化向量化实现方法
CN111582465A (zh) 基于fpga的卷积神经网络加速处理系统、方法以及终端
CN114003201A (zh) 矩阵变换方法、装置及卷积神经网络加速器
KR20200043617A (ko) 고효율 연산 처리를 위한 인공 신경망 모듈 및 이의 스케쥴링 방법
US20230376733A1 (en) Convolutional neural network accelerator hardware
US11748100B2 (en) Processing in memory methods for convolutional operations
KR102470027B1 (ko) 다수 컨벌루션 윈도우 중의 이미지 데이터를 추출하는 방법, 장치, 기기 및 컴퓨터 판독 가능한 저장매체
CN110837483B (zh) 张量维度变换的方法以及装置
CN116090518A (zh) 基于脉动运算阵列的特征图处理方法、装置以及存储介质
US20230025068A1 (en) Hybrid machine learning architecture with neural processing unit and compute-in-memory processing elements
KR20240036594A (ko) 인-메모리 연산을 위한 부분 합 관리 및 재구성가능 시스톨릭 플로우 아키텍처들
US10884736B1 (en) Method and apparatus for a low energy programmable vector processing unit for neural networks backend processing