KR20210012882A - 컨볼루션 뉴럴 네트워크의 성능 향상을 위한 방법 및 시스템 - Google Patents

컨볼루션 뉴럴 네트워크의 성능 향상을 위한 방법 및 시스템 Download PDF

Info

Publication number
KR20210012882A
KR20210012882A KR1020200026125A KR20200026125A KR20210012882A KR 20210012882 A KR20210012882 A KR 20210012882A KR 1020200026125 A KR1020200026125 A KR 1020200026125A KR 20200026125 A KR20200026125 A KR 20200026125A KR 20210012882 A KR20210012882 A KR 20210012882A
Authority
KR
South Korea
Prior art keywords
kernel
pivot
weights
kernels
weight
Prior art date
Application number
KR1020200026125A
Other languages
English (en)
Inventor
프라모드 파라메쉬와라 우두파
키란 콜라 찬드라세카란
이세환
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to US16/935,500 priority Critical patent/US20210027151A1/en
Publication of KR20210012882A publication Critical patent/KR20210012882A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • G06N20/10Machine learning using kernel methods, e.g. support vector machines [SVM]
    • 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/544Methods 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 for evaluating functions by calculation
    • G06F7/5443Sum of products
    • 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/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

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

Abstract

컨볼루션 뉴럴 네트워크(CNN)의 성능을 향상시키기 위한 방법 및 시스템을 개시한다. 복수의 커널들 각각의 가중치들의 상호 비교에 기초하여 피봇 커널이 결정된다. 피봇 커널이 아닌 커널들이 비-피봇 커널들로 간주된다. 피봇 커널의 가중치들과 비-피봇 커널들의 가중치들의 비교에 기초하여, 비-피봇 커널들에 희소성이 도입된다.

Description

컨볼루션 뉴럴 네트워크의 성능 향상을 위한 방법 및 시스템{Methods and systems for improving performance of CNN}
본 개시는 컨볼루션 뉴럴 네트워크의 성능 향상을 위한 방법 및 시스템에 관한다.
컨볼루션 뉴럴 네트워크(CNN)는 이미지 처리(피처 검출, 분류, 및 분석), 의료 진단(의료 이미지 분석), 내비게이션 애플리케이션(경로 추천), 자연어 처리 등과 같은 분야에서 사용되고 있다. CNN을 사용하는 딥 러닝은 초당 수백만, 십억 번의 곱셈 및 누적 연산을 수행하는 것과 같은 상당한 계산 비용을 수반할 수 있다. 연산들은 컨볼루션 레이어 또는 풀리 커넥티드(fully connected) 레이어에서 수행될 수 있다. 컨볼루션 연산은 3차원 입력 피쳐맵(input feature map, IFM)을 가로 질러 커널(예를 들어, 3차원 커널)을 슬라이딩시키는 것을 포함하며, 여기서 CNN의 각 레이어에서 입력 피쳐맵의 픽셀과 커널의 가중치 간의 곱셈이 수행된다. CNN의 각 층의 출력 피쳐맵(output feature map, OFM)의 픽셀을 생성하기 위해, 곱셈 결과는 누적된다.
종래의 방법 및 시스템은 하드웨어의 성능을 최적화하기 위해, 입력 피쳐맵 및 커널의 희소성(sparsity)을 이용함으로써 계산 비용을 최소화하고자 한다. 희소성은 입력 피쳐맵 및/또는 커널에서 0의 값을 갖는 가중치의 수를 나타낼 수 있다. 입력 피쳐맵 또는 커널에서 가중치의 값이 0이면, 곱셈 계산을 할 필요가 없다. 따라서, 계산 비용이 최소화 될 수 있다. 커널의 희소성은 CNN의 훈련 단계에서 사용된 프루닝(pruning) 방법에 기초한다. 프루닝은 CNN의 추론 정확도에 영향을 줄 수 있으며, 임계치를 초과하여 사용된 프루닝은 CNN의 정확도를 감소시킬 수 있다.
도 1은 출력 피쳐맵을 생성하기 위해 입력 피쳐맵과 복수의 커널들 사이에서 수행되는 컨볼루션 연산의 일 예를 설명하기 위한 도면이다. 도 1을 참조하면, 입력 피쳐맵(IFM)의 디멘션(dimension)은‘H’, ‘W’, 및 ‘Z’이다. 'N'개의 커널(Kernel)이 사용되는 경우를 고려한다. 커널(Kernel)의 디멘션은 ‘Kh’, ‘Kw’, 및 ‘Z’이다. 입력 피쳐맵(IFM)과 각 커널(Kernel)의 채널 수가 동일하다(예를 들어, ‘Z’개). ‘N’개의 커널(Kernel)이 사용되면, 출력 피쳐맵(OFM)의 채널 수는‘N’이 된다. 출력 피쳐맵(OFM)의 디멘션은 (H-Kh+1), (W-Kw+1), 및 ‘N’이다. 출력 피쳐맵(OFM)을 생성하기 위한 컨볼루션은 입력 피쳐맵(IFM)에 대하여 커널(Kernel)을 슬라이딩함으로써 수행되며, 이때 입력 피쳐맵(IFM)의 픽셀들과 커널(Kernel)의 가중치들의 곱셈이 계산되고 곱셈 결과가 누적된다. 출력 피쳐맵(OFM)의 채널은 입력 피쳐맵(IFM)에 대하여 커널을 슬라이딩함으로써 획득되며, 이때 입력 피쳐맵(IFM)의 채널과 커널의 채널은 동일하다. 유사하게, 다른 출력 피쳐맵(OFM)의 채널들은, 다른 입력 피쳐맵(IFM)의 픽셀들과 다른 커널들의 가중치들을 컨볼루션하기 위하여, 다른 입력 피쳐맵(IFM)에 대하여 다른 커널들을 슬라이딩함으로써 획득 될 수 있다.
도 2는 계산 및 메모리 유닛을 포함하는 뉴럴 프로세싱 유닛(NPU-0)의 아키텍처의 일 예를 설명하기 위한 도면이다. 뉴럴 프로세싱 유닛(Neural Processing Unit, NPU)은 입력 피쳐맵(IFM) 및 커널(Kernel)의 가중치들을 읽고 출력 피쳐맵을 계산할 수 있다. 출력 피쳐맵은 메모리 유닛에 저장 될 수 있다. 계산 유닛은 곱셈 및 누적 연산을 수행 할 수 있는 곱셈-누적 유닛들(Multiply-Accumulate Units, MAUs)을 포함할 수 있다. 예시를 위해, 2개의 MAU가 도시되어있다. 도 2에 도시된 바와 같이, 2 개의 MAU, 즉, MAU 0 및 MAU 1은 독립적으로 기능한다. MAU 0은, 출력 피쳐맵의 채널을 생성하기 위해, 입력 피쳐맵(IFM)과 커널(Kernel)의 컨볼루션 연산을 수행 할 수 있다. MAU 1은, 출력 피쳐맵의 다른 채널을 생성하기 위해, 입력 피쳐맵(IFM)과 다른 커널(Kernel)의 컨볼루션 연산을 수행 할 수 있다. MAU에서의 컨볼루션 연산은 서로 독립적으로 수행된다. 따라서 계산 복잡도가 높을 수 있다.
컨볼루션 뉴럴 네트워크(CNN)의 성능을 향상시키기 위한 방법 및 시스템을 제공하는데 있다. 또한, 상기 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공하는 데 있다. 해결하려는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 또 다른 기술적 과제들이 존재할 수 있다.
상술한 기술적 과제를 달성하기 위한 기술적 수단으로서, 일 측면에 따른 복수의 커널들을 포함하는 컨볼루션 뉴럴 네트워크(CNN)를 이용하여 출력 피쳐맵(OFM)의 채널을 생성하는 방법은, 프로세서(601)에 의해, 피봇 커널의 가중치들과 적어도 하나의 비-피봇 커널의 가중치들의 비교에 기초하여, 상기 적어도 하나의 비-피봇 커널과 관련된, 적어도 하나의 인코딩 된 유사 또는 동일한 인터-커널 가중치(S/I-IKW)의 스트림을 생성하는 단계; 프로세서(601)에 의해, 상기 적어도 하나의 비-피봇 커널에 희소성을 도입하기 위해, 상기 피봇 커널의 가중치들과 상기 적어도 하나의 비-피봇 커널의 가중치들의 비교에 기초하여 식별되는 유사하고 동일한 가중치들에 있어서, 상기 적어도 하나의 비-피봇 커널에서 상기 유사하고 동일한 가중치들을 0으로 변환하는 단계; 뉴럴 프로세싱 유닛(NPU, 602)에 의해, 입력 피쳐맵(IFM)의 적어도 하나의 픽셀과 상기 피봇 커널의 적어도 하나의 가중치의 곱, 상기 입력 피쳐맵(IFM)의 적어도 하나의 픽셀, 및 상기 적어도 하나의 비-피봇 커널과 관련된 상기 유사 또는 동일한 인터-커널 가중치(S/I-IKW)의 스트림 중 적어도 하나에 기초하여 결정되는 상기 적어도 하나의 비-피봇 커널의 적어도 하나의 값을 브로드캐스팅 하는 단계; 및 뉴럴 프로세싱 유닛(602, NPU)에 의해, 적어도 하나의 이전 출력 피쳐맵(OFM)의 값을, 상기 피봇 커널의 0이 아닌 가중치들과 상기 입력 피쳐맵(IFM)의 픽셀들의 컨볼루션, 상기 브로드캐스트 된 적어도 하나의 값, 및 상기 적어도 하나의 비-피봇 커널의 0이 아닌 가중치들과 상기 입력 피쳐맵(IFM)의 픽셀들의 컨볼루션 중 적어도 하나와 누적함으로써, 적어도 하나의 출력 피쳐맵(OFM) 채널을 생성하는 단계를 포함한다.
다른 측면에 따른, 복수의 커널들을 포함하는 컨볼루션 뉴럴 네트워크(CNN)를 이용하여 출력 피쳐맵(OFM)의 채널을 생성하기 위한 시스템(600)은, 프로세서(601) 및 뉴럴 프로세싱 유닛(602, NPU)을 포함하고, 상기 프로세서(601)는, 피봇 커널의 가중치들과 적어도 하나의 비-피봇 커널의 가중치들의 비교에 기초하여, 상기 적어도 하나의 비-피봇 커널과 관련된, 적어도 하나의 인코딩 된 유사 또는 동일한 인터-커널 가중치(S/I-IKW)의 스트림을 생성하고, 상기 적어도 하나의 비-피봇 커널에 희소성을 도입하기 위해, 상기 적어도 하나의 비-피봇 커널에서 유사하고 동일한 가중치들을 0으로 변환하고, 상기 뉴럴 프로세싱 유닛(602, NPU)은, 입력 피쳐맵(IFM)의 적어도 하나의 픽셀과 상기 피봇 커널의 적어도 하나의 가중치의 적어도 하나의 곱, 상기 입력 피쳐맵(IFM)의 적어도 하나의 픽셀, 및 상기 적어도 하나의 비-피봇 커널과 관련된 상기 유사 또는 동일한 인터-커널 가중치(S/I-IKW)의 스트림 중 적어도 하나에 기초하여 결정되는 상기 적어도 하나의 비-피봇 커널의 적어도 하나의 값을 브로드캐스팅 하고, 적어도 하나의 이전 출력 피쳐맵(OFM)의 값을, 상기 피봇 커널의 0이 아닌 가중치들과 상기 입력 피쳐맵(IFM)의 픽셀들의 컨볼루션, 상기 브로드캐스트 된 적어도 하나의 값, 및 상기 적어도 하나의 비-피봇 커널의 0이 아닌 가중치들과 상기 입력 피쳐맵(IFM)의 픽셀들의 컨볼루션 중 적어도 하나와 누적함으로써, 적어도 하나의 출력 피쳐맵(OFM) 채널을 생성한다.
또 다른 측면은, 상기 일 측면에 따른 방법을 컴퓨터에서 실행하기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공한다.
도 1은 출력 피쳐맵을 생성하기 위해 입력 피쳐맵과 복수의 커널들 사이에서 수행되는 컨볼루션 연산의 일 예를 설명하기 위한 도면이다.
도 2는 계산 및 메모리 유닛을 포함하는 뉴럴 프로세싱 유닛의 아키텍처의 일 예를 설명하기 위한 도면이다.
도 3은 실시예들에 따라, 상이한 커널들에서 동일한 가중치들을 이용함으로써 CNN의 성능을 최적화하도록 구성된 시스템을 도시한다.
도 4a 및 4b는 피봇 곱셈-누적 유닛 및 비-피봇 곱셈-누적 유닛에서의 누산기의 비트 분할 아키텍처의 일 실시예를 도시한다.
도 5는 16개의 MAU를 포함하는 NPU-0의 MAA를 도시한다.
도 6은 상이한 커널들에서 유사한/동일한 가중치들을 이용함으로써 CNN의 성능을 최적화하도록 구성된 시스템의 일 실시예를 도시한다.
도 7은 서로 다른 커널들 간에 유사한 및/또는 동일한 가중치들을 이용함으로써 CNN의 성능을 개선하기 위한 방법의 일 예를 도시한 흐름도이다.
도 8은 서로 다른 커널들에서 동일한 가중치들을 이용함으로써 CNN의 성능을 최적화하기 위한 NPU-1을 포함하는 시스템의 일 예를 나타낸다.
도 9는 서로 다른 커널들에서 유사/동일한 가중치들을 이용함으로써 CNN의 성능을 최적화하기 위한 NPU-1을 포함하는 시스템의 일 예를 나타낸다.
도 10은 서로 다른 커널들에서 유사한/동일한 가중치들을 이용함으로써 CNN의 성능을 최적화하도록 구성된 시스템의 일 예를 나타낸다.
도 11은 서로 다른 커널들에서 유사한/동일한 가중치들을 이용함으로써 CNN의 성능을 최적화하도록 구성된 시스템의 일 예를 나타낸다.
도 12a 및 12b는 실시예들에 따른, 비쥬얼 지오메트리 그룹 CNN의 피봇 커널 및 비-피봇 커널들의 가중치들의 비교에 기초하여 비-피봇 커널들에 도입된 희소성을 나타내는 그래프이다.
도 13a 및 13b는 실시예들에 따른, 인셉션-버전 4 CNN의 피봇 커널 및 비-피봇 커널들의 가중치들의 비교에 기초하여 비-피봇 커널들에 도입된 희소성을 나타내는 그래프이다.
도 14a 및 14b는 실시예들에 따른 VGG-16 CNN의 성능 개선을 나타내는 그래프이다.
도 15a 및 15b는 실시예들에 따른, 인셉션-버전 4 CNN의 성능 개선을 나타내는 그래프이다.
도 16a 및 16b는 VGG-16 CNN의 전력 절감을 나타내는 그래프이다.
도 17a 및 17b는 VGG-16 CNN의 전력 절감을 나타내는 그래프이다.
도 18a 및 18b는 인셉션-버전 4 CNN의 전력 절감을 도시한 그래프이다.
도 19a 및 19b는 인셉션-버전 4 CNN의 전력 절감을 도시한 그래프이다.
도 20a 및 20b는 실시예에 따른 피봇 커널 및 비-피봇 커널들의 가중치들을 비교함으로써 유사하고 동일한 가중치들을 검출함으로써 도입된, VGG-16 CNN의 비-피봇 커널들에서 희소성의 향상을 나타내는 그래프이다.
도 21a 및 21b는 실시예에 따른 피봇 커널 및 비-피봇 커널들의 가중치들을 비교함으로써 유사하고 동일한 가중치들을 검출함으로써 도입된, 인셉션-버전 4 CNN의 비-피봇 커널들에서의 희소성의 향상을 나타내는 그래프이다.
도 22a 및 22b는 실시예에 따른 피봇 및 비-피봇 커널들의 가중치들을 비교함으로써 유사하고 동일한 가중치들을 검출함으로써 달성된 VGG-16 CNN의 성능 개선을 나타내는 그래프이다.
도 23a 및 23b는 실시예에 따른 피봇 및 비-피봇 커널들의 가중치들을 비교함으로써 유사하고 동일한 가중치들을 검출함으로써 달성된 인셉션-버전 4 CNN의 성능 개선을 나타내는 그래프이다.
실시예들과 다양한 특징들이 발명의 내용 및 도면에 의해 설명된다. 잘 알려진 구성 요소 및 기술에 대한 설명은 실시예들을 불필요하게 모호하게 하지 않기 위해 생략된다. 실시예들은 당업자가 본 실시예를 용이하게 실시할 수 있게 하기 위한 것이다. 따라서, 실시예들은 제한 해석되어서는 안된다.
실시예들은 상이한 커널들에서 동일한 및/또는 유사한 가중치를 활용함으로써, CNN의 성능을 향상시키기 위한 방법 및 시스템을 개시한다. CNN의 특정 레이어에서 복수의 커널들 각각의 가중치가 서로 비교되는 복수의 커널들을 고려한다. 가중치들의 위치가 동일한 경우, 복수의 커널들 각각의 가중치들이 비교될 수 있다. 커널의 가중치의 위치는 채널 수와 위치 좌표들을 이용함으로써 지정될 수 있다. 세 개의 커널이 있다고 가정한다. 실시예들은 제2 커널의 가중치들과 유사한/동일한 제1 커널의 가중치들 및 제3 커널의 가중치들과 유사한/동일한 제1 커널의 가중치들을 결정하는 단계를 포함한다. 실시예들은 유사한/동일한 가중치들의 수를 누적함으로써 제1 커널에 대한 비교 점수를 얻는 단계를 포함한다. 실시예들은 제2 및 제3 커널(다른 복수의 커널들)에 대한 비교 점수를 얻는 단계를 포함한다. 실시예들은 복수의 커널들 중에서 비교 점수가 가장 높은 커널을 피봇 커널로 식별하는 단계를 포함한다. 나머지 커널들은 비-피봇 커널로 간주 될 수 있다.
실시예들은 피봇 커널의 가중치들과 각각의 비-피봇 커널들의 가중치들의 비교에 기초하여 인코딩 된 유사 또는 동일한 인터-커널 가중치들(Similar or Identical Inter-Kernel weights, S/I-IKW)의 스트림을 생성하는 단계를 포함한다. 피봇 커널의 가중치들과 유사한/동일한 비-피봇 커널들의 가중치들은, 비-피봇 커널에 희소성을 도입하기 위해, 0으로 설정될 수 있다. S/I-IKW 스트림을 기반으로, 피봇 커널은 입력 피쳐맵의 픽셀들 및 피봇 커널의 가중치들의 곱셈 결과를 비-피봇 커널들에 브로드캐스트 할지 여부를 선택할 수 있다. 피봇 커널의 가중치들이 비-피봇 커널의 가중치들과 매치(match)하는 경우, 비-피봇 커널로 곱셈 결과가 브로드캐스트 될 수 있고, 이는 비-피봇 커널과 관련된 S/I-IKW 스트림의 피봇 커널에 의해 결정될 수 있다. 비-피봇 커널은, 피봇 커널의 가중치들과 유사한/동일한 비-피봇 커널의 가중치들과 입력 피쳐맵의 픽셀들의 곱을 계산하는 대신, 브로드캐스트 된 곱셈 결과를 이용하여 출력 피쳐맵을 결정할 수 있다.
도면을 참조하면, 보다 구체적으로 도 3 내지 도 23b에는, 유사한 참조 부호가 도면 전체에 걸쳐 대응하는 특징을 일관되게 나타내는 바람직한 실시예들이 도시되어 있다.
도 3은 실시예들에 따라, 상이한 커널들에서 동일한 가중치들을 이용함으로써 CNN의 성능을 최적화하도록 구성된 시스템(300)을 도시한다. 도 3에 도시된 바와 같이, 시스템(300)은 프로세서(301) 및 뉴럴 프로세싱 유닛(302, NPU)을 포함한다. 실시예에서, NPU(302)의 아키텍처는 타입 0 일 수 있다. 타입 0 아키텍처에서, 동일한 2차원 평면의 입력 피쳐맵(IFM)의 픽셀들은 메모리에 함께 패킹되는데, 즉 채널 번호는 동일하지만 (x, y) 좌표(위치)가 다른 픽셀들은 단일 워드로 함께 패킹된다. 커널(Kernel)과 입력 피쳐맵(IFM)의 순회는 패킹을 기반으로 한다.
NPU(302)는 복수의 곱셈-누적 유닛들(Multiply-Accumulate Units, MAUs)를 포함 할 수 있다. 실시예에서, 16개의 MAU가 곱셈-누적 어레이(Multiply-Accumulate Array, MAA)에 포함될 수 있다. 실시예에서, 16개의 MAA가 하나의 MAA 세트에 포함될 수 있다. 실시예에서, 4개의 MAA 세트가 NPU에 포함될 수있다. 설명을 위해, 단일 MAA(16개의 MAU를 포함함)가 도시되어 있다. 각 커널(Kernel)에 대해, MAU는 커널(Kernel)의 가중치들을 사용하여 입력 피쳐맵(IFM)의 픽셀들의 컨볼루션 연산을 수행할 수 있다. 각 MAU의 출력은 출력 피쳐맵(OFM)의 채널 또는 하나의 채널을 갖는 출력 피쳐맵(OFM)으로 간주될 수 있다. NPU(302)의 하드웨어 성능에 기초하여, 병렬로 수행되는 컨볼루션 연산의 수가 증가 될 수 있다. NPU(302)는 16개의 채널을 갖는 출력 피쳐맵(OFM)을 생성하고, 16개의 MAU에서의 계산이 병렬로 수행 될 수 있다. 16개의 채널을 갖는 출력 피쳐맵(OFM)은 CNN의 단일 레이어의 일부일 수 있다.
실시예에서, 16개의 커널, 즉, 커널 1(Kernel 1), 커널 2(Kernel 2) 등이 프로세서(301)에 제공되는 것을 고려한다. 실시예에서, 커널들(Kernels)은 프루닝 될 수 있다. 실시예에서, 커널들(Kernels)은 프루닝 되지 않을 수 있다. 커널들(Kernels)의 가중치들은 'n'비트 값으로 양자화 될 수 있다. 각 커널(Kernel)의 디멘션과 채널 수는 동일 할 수 있다. 각각의 커널에 대해, 프로세서(301)는 커널의 가중치들을 다른 15개의 커널들의 가중치들과 비교할 수 있다. 예를 들어, 커널 0(Kernel 0)의 가중치는 커널 1-15의 가중치들과 비교 될 수 있고, 커널 1(Kernel 1)의 가중치는 커널 2-15의 가중치와 비교 될 수 있고(커널 1(Kernel 1)의 가중치는 커널 0(Kernel 0)의 가중치와 비교되었다), 커널 2의 가중치는 커널 3-15의 가중치와 비교 될 수 있고(커널 2의 가중치는 커널 0(Kernel 0) 및 커널 1(Kernel 1)의 가중치와 비교되었다), 이와 같은 방식의 비교가 계속될 수 있다. 프로세서(301)는 상이한 커널들에서의 가중치들의 위치들(즉, 채널 및 위치(좌표로 표시))이 동일한 경우에만 CNN 레이어에서 상이한 커널들에서의 가중치들을 비교할 수 있다.
예를 들어, 모든 커널이 3, 3, 2의 디멘션을 갖는 것을 고려한다. 따라서, 각각의 커널에는 18(3*3*2)개의 가중치들 및 2개의 채널(채널 0 및 채널 1 고려)이 존재한다. 각 채널에는 9개의 가중치들이 있는 9개의 위치들이 있다. 커널 8의 가중치의 위치 및 채널이 커널 0(Kernel 0)의 가중치의 위치 및 채널과 동일하면, 커널 0(Kernel 0)의 특정 위치와 채널의 가중치를 커널(예를 들어, 커널 8)의 가중치와 비교할 수 있다.
프로세서(301)는 커널 1-15(Kernel 1-15)의 가중치들과 동일한 커널 0(Kernel 0)의 가중치의 개수를 결정할 수 있다. 프로세서(301)는 커널 0(Kernel 0)에 대한 비교 점수를 얻기 위해 개수를 누적할 수 있다. 예를 들어, 커널 0(Kernel 0)과 커널 1(Kernel 1)에서 3개의 가중치들이 동일하고, 커널 0(Kernel 0)과 커널 2에서 5개의 가중치들이 동일하고, 커널 0(Kernel 0)과 커널 15(Kernel 15)에서 4개의 가중치들이 동일하다고 가정한다. 프로세서(301)는 3, 5, …, 4 등을 누적하고, 커널 0(Kernel 0)의 비교 점수를 결정할 수 있다. 유사하게, 프로세서(301)는 커널 1-15에 대한 비교 점수를 획득 할 수 있다. 프로세서(301)는 피봇 커널로서 비교 점수가 가장 높은 커널을 그리고 비-피봇 커널로서 나머지 커널들을 간주할 수 있다. 커널 0(Kernel 0)은 피봇 커널이고 커널 1-15는 비-피봇 커널로 간주될 수 있다. 피봇 커널은 항상 MAU 0에 매핑 될 수 있다. 피봇 커널은 브로드캐스트 네트워크(303, Broadcast N/W)를 포함할 수 있다.
실시예에서, 오직 2개의 커널들이 존재하면, 커널들 중 하나가 피봇 커널로 선택될 수 있다.
비-피봇 커널에 희소성을 도입하기 위해, 피봇 커널(커널 0)의 가중치들과 동일한 비-피봇 커널(커널 1-15)의 가중치들이 0으로 설정될 수 있다. 예를 들어, 두 개의 3x3 커널들인 A 및 B가 단일 채널을 포함하고, A는 피봇 커널이고 B는 비-피봇 커널인 경우를 고려한다. 커널들은 다음과 같이 표현될 수 있다.
Figure pat00001
Figure pat00002
커널 A의 인덱스 스트림(index stream)은 1, 1, 1, 0, 1, 1, 0, 0, 1이다. 커널 B의 인덱스 스트림은 0, 1, 1, 1, 1, 1, 1, 0, 1이다. 가중치가 0인 경우 인덱스 스트림의 값은 0이고, 가중치가 0이 아닌 경우 인덱스 스트림의 값은 1일 수 있다.
A의 값 스트림(value stream)은 D, N, N, K, W, P이다. B의 값 스트림은 N, N, I, P, R, K, -P이다. 값 스트림은 커널들의 비-가중치들을 포함한다.
커널 A 및 B에서의 위치는 (i(행), j(열))로 표시될 수 있으며, 여기서 i∈[0-2]이고, j∈[0-2]이다. 프로세서(301)는 커널들의 가중치들을 비교하고, 위치 (0,1), (0,2), 및 (2,2)에서의 커널 A 및 B의 가중치들이 동일한지를 결정할 수 있다. 그리고, 프로세서(301)는 희소성을 도입하기 위해 커널 B를 수정할 수 있다. 수정된 커널 B는 다음과 같을 수 있다.
Figure pat00003
수정된 커널 B의 인덱스 스트림은 0, 0, 0, 1, 1, 1, 1, 0, 0이다. 수정된 커널 B의 값 스트림은 I, P, R, K이다. 따라서, 비-피봇 커널에 희소성이 발생할 수 있다.
프로세서(301)는 피봇 커널(커널 0)의 가중치들과 각각의 비-피봇 커널들(커널 1-15)의 가중치들의 비교에 기초하여, 인코딩 된 동일한 인터-커널 가중치(I-IKW)의 스트림들(I-IKW streams)을 생성 할 수 있다. 따라서, 15개의 I-IKW 스트림들은 커널 0의 가중치들과 각 비-피봇 커널 1-15의 비교(각 커널은 단일 채널인 것으로 간주)를 기반으로 생성될 수 있다. 프로세서(301)는 15개의 I-IKW 스트림들을 브로드캐스트 네트워크(303)에 제공할 수 있다. 커널 0-15(Kernels 0-15)이 3개의 채널들을 갖는 경우를 고려한다. 이 시나리오에서는 각 커널에 대해 3개의 I-IKW 스트림들이 생성될 수 있고, 총 45개의 I-IKW 스트림들이 생성될 수 있다.
I-IKW 스트림에서의 엔트리의 수는 피봇 커널에서 0이 아닌 값을 갖는 가중치들의 수에 기초할 수 있다. 피봇 커널에서 특정 위치와 채널의 가중치 값이 0이면, 피봇 커널은 비-피봇 커널에서 동일한 위치와 채널에서 계산 비용을 최소화하는 데 기여할 수 없다. 따라서 I-IKW 스트림은 피봇 커널에서 값이 0인 가중치를 위한 엔트리를 포함하지 않을 수 있다. 피봇 커널에서 특정 위치 및 채널의 가중치 값과 비-피봇 커널에서 동일한 위치 및 채널의 가중치 값의 크기가 동일한 경우(동일 또는 반대 부호), I-IKW 스트림에 엔트리가 포함될 수 있다. 피봇 커널 A와 비-피봇 커널 B의 상술된 예를 고려하면, 6개의 가중치들이 피봇 커널 A에서 0이 아닌 값을 가지므로, I-IKW 스트림의 엔트리의 수는 6이 될 수 있다.
I-IKW 스트림의 엔트리의 값은 인코딩 규칙에 기초할 수 있다. 실시예에서, 가중치들이 동일하지 않은 경우, 엔트리의 값은 0으로 인코딩 될 수 있다. 가중치들의 크기 및 부호가 동일하면, 엔트리의 값은 2로 인코딩 될 수 있다. 가중치들의 크기가 같고 부호가 반대이면, 엔트리의 값은 3으로 인코딩 될 수 있다. 상술된 피봇 커널 A 및 비-피봇 커널 B의 예를 고려하면, 생성된 I-IKW 스트림의 값들은 0((0,0)에서), 2((0,1)에서), 2((0,2)에서), 0((1,1)에서), 0((1,2)에서), 3((2,2)에서)일 수 있다. 따라서 I-IKW 스트림은 0, 2, 2, 0, 0, 3일 수 있다.
NPU(302)의 각각의 MAU에서, 입력 피쳐맵(IFM)의 픽셀들과 커널/수정된 커널의 가중치들 간의 컨볼루션 연산이 수행될 수 있다. 피봇 커널(Kernel 0)은 0이 아닌 가중치들에 대해 곱셈 및 누적 연산을 수행 할 수 있다. 브로드캐스트 네트워크(303)는, 커널 1-15의 채널들에 해당하는 I-IKW 스트림들의 위치 (i, j)에서의 엔트리들에 기초하여, 위치 (i, j)에서의 입력 피쳐맵(IFM)의 픽셀들과 커널 0(Kernel 0)의 가중치들의 곱셈 결과를 커널 1-15로 브로드캐스트 할지 여부를 선택할 수 있다. I-IKW 스트림의 엔트리의 값이 2 또는 3(0이 아님)이면, 곱셈 결과는 비-피봇 커널로 브로드캐스트 될 수 있다.
피봇 커널 A 및 비-피봇 커널 B의 상술한 예를 고려하면, 수정된 비-피봇 커널 B는 위치 (0,1), (0,2) 및 (2,2)에서 가중치들과 입력 피쳐맵(IFM)의 가중치들 간의 곱셈을 수행하지 않을 수 있다(이 위치의 가중치들의 값이 0으로 변환 되었기 때문에). 인코딩 된 I-IKW 스트림을 기반으로 한 피봇 커널 A는 위치 (0,1), (0,2), 및 (2,2)에서의 피봇 커널의 가중치들과 입력 피쳐맵(IFM)의 가중치들의 곱셈 결과를 비-피봇 커널 B로 브로드캐스트 할 수 있다. 위치 (0,1), (0,2), 및 (2,2)에 대응하는 I-IKW 스트림의 엔트리 값들이 각각 2, 2, 및 3이기 때문이다. 비-피봇 커널 B는 브로드캐스트 된 곱셈 결과와 비-피봇 커널 B의 0이 아닌 가중치들과 입력 피쳐맵(IFM)의 픽셀들의 곱을 누적 할 수 있다. 따라서, 곱셈 연산은 덧셈 연산으로 변환 될 수 있으며, 비-피봇 커널(커널 1-15)의 계산 비용, 지연 시간, 및 전력 소비가 줄어들 수 있다.
도 3은 시스템(300)의 예시적인 유닛들을 도시하며, 실시예들은 이에 제한되지 않는다. 다른 실시예에서, 시스템(300)은 더 적거나 더 많은 수의 유닛들을 포함 할 수 있다. 또한, 유닛들의 라벨 또는 명칭은 예시의 목적으로만 사용되며 실시예의 범위를 제한하지 않는다. 하나 또는 그 이상의 유닛들은 시스템(300)에서 동일하거나 실질적으로 유사한 기능을 수행하기 위해 결합 될 수 있다.
도 4a 및 4b는 피봇 곱셈-누적 유닛(MAU) 및 비-피봇 곱셈-누적 유닛(MAU)에서의 누산기의 비트 분할 아키텍처(bitwise split architecture)의 일 실시예를 도시한다. 피봇 커널의 가중치들과 입력 피쳐맵(IFM)의 픽셀들 간의 곱셈이 수행되는 MAU는 피봇 MAU(Pivot MAU)로 지칭 될 수 있다. 비-피봇 커널들의 가중치들과 입력 피쳐맵(IFM)의 곱셈이 수행되는 MAU는 비-피봇 MAU(Non-pivot MAU)로 지칭 될 수 있다. 도 2에 도시 된 MAU의 누산기와 도 3에 도시된 비-피봇 MAU를 비교함으로써, 비-피봇 MAU(Non-pivot MAU)의 누산기들은 3-입력 누산기들인 것을 알 수 있다.
커널들의 가중치들 및 입력 피쳐맵(IFM)의 픽셀들의 가중치가 n-비트 값으로 양자화되면, 누산기들의 출력들은 4n-비트 값이다. 누산기들은 입력 피쳐맵(IFM) 및 커널들의 가중치들의 비트 폭(bit-width)을 기반으로, 출력(출력 피쳐맵의 채널들의 픽셀들)을 생성하도록 설계될 수 있다. 도 4a 및 4b에 도시 된 바와 같이, 피봇 및 비-피봇의 4n-비트 누산기들은 2개의 2n-비트 하위 비트 및 상위 비트 누산기들로 분할될 수 있다. 하위 2n-비트 누산기는 2n-비트의 최하위 비트(Least Significant Bit, LSBs)를 생성하고, 상위 2n-비트 누산기는 2n-비트의 최상위 비트(Most Significant Bit, MSBs)를 생성할 수 있다.
피봇 커널의 하위 2n-비트 누산기는 저장된 2n-비트의 LSB의 누적된 값과 피봇 커널의 가중치들과 입력 피쳐맵(IFM)의 픽셀들의 수신되는 곱셈 결과를 누적 할 수 있다. 피봇 커널의 상위 2n-비트 누산기는 저장된 2n-비트의 MSB의 누적된 값과 로직 함수(logic function)에 기초하여 생성된 값을 누적할 수 있다. 생성된 값은 로직 함수의 종속 변수일 수 있다. 로직 함수의 독립 변수는 하위 2n-비트 누산기의 누적 값의 캐리 비트(carry bit) 및 수신된 곱셈 결과의 부호 비트(sign bit)일 수 있다.
비-피봇 커널의 하위 2n-비트 누산기는 저장된 2n-비트의 LSB의 누적된 값, 피봇 MAU로부터 브로드캐스트 된 곱, 및 비-피봇 커널의 가중치들과 입력 피쳐맵(IFM)의 픽셀들의 수신되는 곱을 누적 할 수 있다. 비-피봇 커널의 상위 2n-비트 누산기는 저장된 2n-비트의 MSB의 누적된 값 및 로직 함수에 기초하여 생성 된 값을 누적 할 수 있다. 피봇 커널에서 로직 함수의 독립 변수는 하위 2n-비트 누산기의 누적된 값의 캐리 비트, 브로드캐스트 된 곱셈 결과의 부호 비트, 및 수신된 곱셈 결과의 부호 비트일 수 있다.
피봇 MAU 및 비-피봇 MAU에서의 로직 함수의 출력으로서 조건부 값들(conditional values)이 생성되는 경우, 피봇 MAU 및 비-피봇 MAU의 상위 2n-비트 누산기들에서 누산 연산이 수행될 수 있다. 이로 인해, 상위 2n- 비트 누산기들의 전력 소비가 최소화될 수 있다.
도 5는 16개의 MAU(피봇 MAU를 포함)를 포함하는 NPU-0의 MAA를 도시하며, 여기서 누산기들은 실시예에 따라 비트 분할 아키텍처를 갖는다. 도 5에 도시된 바와 같이, MAA는 최소화 된 계산 비용, 지연 시간, 및 전력 소비로 16개의 채널들을 갖는 출력 피쳐맵을 생성할 수 있다. 피봇 커널과 비-피봇 커널의 가중치들 간의 유사성에 기반하여 비-피봇 커널에 희소성을 도입함으로써, 계산 비용이 최소화될 수 있다. 비-피봇 커널들에서 수행 될 곱셈 연산을 비-피봇 커널들에 대응하는 인코딩 된 I-IKW 스트림들에 기초한 누적 연산으로 변환함으로써, 계산 비용이 최소화될 수 있다. 계산 비용이 최소화되면 지연 시간과 전력 소비가 줄어들 수 있다. 피봇 및 비-피봇 커널들의 누산기들을 2개의 상위 비트 및 하위 비트 누산기로 분할함으로써, 전력 소비를 더욱 줄일 수 있다.
도 6은 상이한 커널들에서 유사한/동일한 가중치들을 이용함으로써 CNN의 성능을 최적화하도록 구성된 시스템(600)의 일 실시예를 도시한다. 도 6에 도시된 바와 같이, 시스템(600)은 프로세서(601) 및 NPU(602)를 포함한다. NPU(602)의 아키텍처는 타입 0이다. 예시를 위해, 단일 MAA가 도시되어있다.
프로세서(601)는 가중치가 서로 유사/동일한지를 검출하기 위해 각 커널의 가중치들을 다른 15개의 커널들의 가중치들과 비교할 수 있다. 프로세서(601)는 서로 다른 커널들에서의 가중치들의 위치가 동일한 경우에만 서로 다른 커널들에서의 2개의 가중치들을 비교할 수 있다. 도 3을 참조한 설명에서 서술된 바와 같이, 프로세서(601)는 비교 점수가 가장 높은 커널을 피봇 커널로 간주하고, 나머지 커널들을 비-피봇 커널들로 간주 할 수 있다. 실시예에서, 커널 0은 피봇 커널이고 커널 1-15는 비-피봇 커널들이다. 피봇 커널은 S/I-IKW 펑션(603, S/I-IKW function)을 포함할 수 있다.
피봇 커널(커널 0)의 가중치들과 유사/동일한 비-피봇 커널들(커널 1-15)의 가중치들은, 비-피봇 커널에 희소성을 도입하기 위해, 0으로 설정될 수 있다. 프로세서(601)는 유사성 기준을 정의할 수 있으며, 유사성 기준을 따르는 상이한 값을 갖는 가중치들은 유사하다고 간주될 수 있다. 유사성 기준은 ±1, ±2, ±4, 2의 배수 등과 같은 선형 함수를 기반으로 할 수 있다. 예를 들어, 유사성 기준이 ±2이고 가중치 값이 15인 경우 13-17의 범위의 값을 갖는 가중치들(동일한 15는 제외)은 유사하다고 간주될 수 있다.
유사도 마진(similarity margin) 내에 있지만 반대 부호를 가진 가중치들도 유사하다고 간주될 수 있다. 예를 들어, -13에서 -17 사이의 값을 갖는 가중치들(동일한 -15는 제외)은 유사하다고 간주될 수 있다.
예를 들어, 단일 채널을 갖는 두 개의 3x3 커널 A와 B를 고려한다. A를 피봇 커널로, B를 비-피봇 커널로 간주한다. 커널들은 다음과 같이 표현될 수 있다.
Figure pat00004
Figure pat00005
커널 A의 인덱스 스트림은 1, 1, 1, 1, 1, 0, 1, 1, 1이다. 커널 B의 인덱스 스트림은 1, 1, 1, 1, 1, 1, 1, 1, 1이다. 가중치가 0인 경우 인덱스 스트림의 값은 0이고, 가중치가 0이 아닌 경우 인덱스 스트림의 값은 1일 수 있다. A의 값 스트림은 2, 5, 9, 3, 6, 1, 11, 7이다. B의 값 스트림은 -2, 6, 11, 3, 9, 8, -1, 10, -9이다. 값 스트림은 커널들의 비-가중치들을 포함한다.
커널 A 및 B에서의 위치는 (i (행), j (열))로 표시될 수 있으며, 여기서 i∈[0-2] 이고 j∈[0-2]이다. 유사성 기준이 ±1, ±2, 및 ±4(크기)의 차이(가중치의 값들)인 경우를 고려한다. 프로세서(601)는 커널들의 가중치들을 비교하고, 위치 (0,1), (0,2), (2,1), 및 (2,2)에서의 커널 A 및 B의 가중치가 유사한지를 결정할 수 있다. 위치 (0,0), (1,0), 및 (2,0)에서의 커널 A 및 B의 가중치들은 동일하다. 그리고, 프로세서(601)는 희소성을 도입하기 위해 커널 B를 수정할 수 있다. 수정된 커널 B는 다음과 같을 수 있다.
Figure pat00006
수정된 커널 B의 인덱스 스트림은 0, 0, 0, 0, 1, 1, 0, 0, 0이다. 수정된 커널 B의 값 스트림은 9, 8이다. 따라서, 비-피봇 커널에 희소성이 발생할 수 있다.
프로세서(601)는 피봇 커널(커널 0)의 가중치들과 각각의 비-피봇 커널들(커널 1-15)의 가중치들의 비교에 기초하여, 인코딩 된 S/I-IKW 스트림(S/I-IKW stream)을 생성 할 수 있다. S/I-IKW 스트림의 생성은 I-IKW 스트림의 생성과 유사할 수 있다. S/I-IKW 스트림은 I-IKW 스트림의 확장으로 간주될 수 있다. S/I-IKW 스트림이 피봇 커널과 비-피봇 커널의 가중치들의 비교를 기반으로 하므로, 생성된 S/I-IKW 스트림들의 수는 비-피봇 커널들의 수를 기반으로 할 수 있다. 커널이 단일 채널을 갖는 경우, 생성된 S/I-IKW 스트림들의 수는 병렬로 작동하는 MAA의 커널들 수와 같을 수 있다.
커널 0-15(Kernels 0-15)가 단일 채널을 갖는 경우, 15개의 S/I-IKW 스트림들이 생성될 수 있다. 커널들이 2개의 채널들을 갖는 경우, 각 커널에 대해 2개의 S/I-IKW 스트림들이 생성될 수 있으며 총 30개의 S/I-IKW 스트림들이 생성될 수 있다.
S/I-IKW 스트림에서의 엔트리의 수는 피봇 커널에서 0이 아닌 값을 갖는 가중치들의 수에 기초할 수 있다. 값이 0인 피봇 커널의 가중치는 비-피봇 커널의 계산 비용을 줄이는 데 기여할 수 없기 때문에, S/I-IKW 스트림은 피봇 커널에서 값이 0인 가중치에 대한 엔트리가 포함되지 않을 수 있다. 피봇 커널과 비-피봇 커널에서 동일한 위치와 채널에 있는 가중치들의 값들이 크기 및 부호가 동일하거나, 크기는 동일하고 부호가 반대이거나, 동일하지 않거나, 유사한 경우, S/I-IKW 스트림에 엔트리가 포함될 수 있다. 피봇 커널 A와 비-피봇 커널 B의 상술된 예를 고려하면, 8 개의 가중치들이 피봇 커널 A에서 0이 아닌 값을 가지므로, S/I-IKW 스트림의 엔트리의 수는 8이 될 수 있다.
S/I-IKW 스트림의 엔트리의 값은 인코딩 규칙에 기초할 수 있다. 실시예에서, 가중치들이 동일하지 않은 경우, 엔트리의 값은 0으로 인코딩 될 수 있다. 가중치들의 크기 및 부호가 동일하면, 엔트리의 값은 2로 인코딩 될 수 있다. 가중치들의 크기가 같고 부호가 반대이면, 엔트리의 값은 3으로 인코딩될 수 있다.
가중치들이 유사한 경우, 즉 피봇 커널의 가중치들에서 비-피봇 커널의 가중치들을 뺀 결과가 1, -1, 2, -2, 4, 및 -4인 경우, 실시예에서, S/I-IKW 스트림의 엔트리의 값은 각각 4, 5, 6, 7, 8, 및 9로 인코딩 될 수 있다. 예를 들어, 피봇 커널에서 위치 (i, j)의 가중치가 2이고 비-피봇 커널에서 위치 (i, j)의 가중치가 3이면, 뺄셈 결과는 -1이다. 따라서, 위치 (i, j)에 대한 S/I-IKW 스트림의 인코딩 된 값은 5일 수 있다. 다른 예에서, 피봇 커널에서 위치 (i, j)에서의 가중치가 6이고 비 피봇-커널에서 위치 (i, j)에서의 가중치가 5이면, 뺄셈 결과는 1이다. 따라서, 위치 (i, j)에 대한 S/I-IKW 스트림의 인코딩 된 값은 4일 수 있다.
가중치들이 유사하고 가중치들의 부호가 반대이면, 부호는 초기에 무시될 수 있다. 피봇 커널의 가중치들에서 비-피봇 커널의 가중치들을 뺌으로써 획득된 결과가 결정될 수 있다. 실시예에서, 결과, 즉 1, -1, 2, -2, 4, 및 -4에 기초하여, S/I-IKW 스트림의 엔트리의 값은 10, 11, 12, 13, 14, 및 15로 인코딩 될 수 있다. 예를 들어, 피봇 커널에서 위치 (i, j)의 가중치가 2이고 비-피봇 커널에서 위치 (i, j)의 가중치가 -3이면, 비-피봇 커널의 가중치의 음의 부호는 무시될 수 있으며, 뺄셈 결과가 -1로 결정될 수 있다. 위치 (i, j)에 대한 S/I-IKW 스트림의 인코딩 된 값은 11일 수 있다. 다른 예에서, 피봇 커널의 위치 (i, j)에서의 가중치가 -6이고 비-피봇 커널에서 위치 (i, j)에서의 가중치가 5이면, 피봇 커널의 가중치의 음의 부호는 무시될 수 있으며, 뺄셈 결과가 1로 결정될 수 있다. 따라서, 위치 (i, j)에 대한 S/I-IKW 스트림의 인코딩 된 값은 10일 수 있다.
피봇 커널 A 및 비-피봇 커널 B의 상술된 예를 고려하면, 생성된 S/I-IKW 스트림의 값은 3((0,0)에서), 5((0,1)에서)), 7((0,2)에서), 2((1,0)에서), 0((1,1)에서), 3 ((2,0)에서), 4((2,1)에서)), 및 13((2,2)에서)일 수 있다. 따라서 S/I-IKW 스트림은 3, 5, 7, 2, 0, 3, 4, 13일 수 있다. (1,2)에서 피봇 커널의 가중치의 값이 0이므로, S/I-IKW 스트림은 위치 (1, 2)에 대한 엔트리를 포함하지 않을 수 있다. 엔트리의 수는 0이 아닌 값을 갖는 피봇 커널의 가중치들의 수와 같을 수 있다.
NPU(602)의 각각의 MAU에서, 입력 피쳐맵(IFM)의 픽셀들과 커널/수정된 커널의 가중치들 간의 컨볼루션 연산이 수행될 수 있다. 피봇 커널(커널 0)은 0이 아닌 가중치들에 대해 곱셈 및 누적 연산을 수행 할 수 있다. S/I-IKW 펑션(603)은, 커널 1-15의 채널들에 해당하는 S/I-IKW스트림의 위치 (i, j)에서의 엔트리들에 기초하여, 위치 (i, j)에서의 커널 0의 가중치들 및 입력 피쳐맵(IFM)의 가중치들의 곱셈 결과를 커널 1-15로 브로드캐스트 할지 여부를 선택할 수 있다. S/I-IKW 스트림의 엔트리의 값이 0이 아닌 경우, 피봇 커널 및 비-피봇 커널의 위치 (i, j)에서의 가중치들이 동일하거나 유사하고 비-피컷 커널들의 위치 (i, j)에서의 가중치들이 0으로 변환되었으므로, 비-피봇 커널들로 곱셈 결과가 브로드캐스트 될 수 있다.
피봇 커널 및 비-피봇 커널에서 위치 (i, j)에서의 가중치들이 동일/유사한 경우, S/I-IKW 펑션(603)은 출력(출력 피쳐맵(OFM)의 가중치)에서 누적된 값이 정확하도록 비-피봇 커널에 브로드캐스트 될 값을 결정할 수 있다. S/I-IKW 펑션(603)은 위치 (i, j)에서 피봇 커널의 가중치와 입력 피쳐맵(IFM)의 픽셀(P)의 곱, S/I-IKW 스트림에서의 위치 (i, j)의 엔트리의 값, 및 입력 피쳐맵(IFM)의 가중치(W)에 기초하여, 비-피봇 커널로 브로드캐스트 될 값(V)을 결정할 수 있다. S/I-IKW 스트림에서 위치 (i, j)에 대한 엔트리의 값은 위치 (i, j)에서의 피봇 커널의 가중치에서 비-피봇 커널의 가중치를 뺀 결과(R)에 기초할 수 있다. 따라서 브로드캐스팅 될 값(V)은 P-R*W일 수 있다.
상술한 예를 고려하면, 피봇 커널 A 및 비-피봇 커널 B에서 위치 (1, 0)에서의 가중치들의 값들은 동일하다(3). 따라서, R은 0이다. S/I-IKW 스트림에서 위치 (1, 0)에 대한 엔트리의 값은 2이다. S/I-IKW 스트림의 엔터리의 값을 기반으로 하는 S/I-IKW 펑션(603)은 위치 (1, 0)에서의 커널 A 및 B의 가중치들이 동일 함을 결정할 수 있다. 가중치들이 동일하기 때문에, 커널 A의 위치 (1, 0)에서의 가중치와 입력 피쳐맵(IFM)의 가중치의 곱; 커널 B의 위치 (1, 0)에서의 가중치와 입력 피쳐맵(IFM)의 가중치의 곱;은 동일할 수 있다. 따라서, S/I-IKW 펑션(603)은 위치 (1, 0)에서 피봇 커널 A의 가중치 및 입력 피쳐맵(IFM)의 가중치의 ?湧? 비-피봇 커널 B로 브로드캐스트 할 수 있다(R=0이므로, V=P).
상술한 예를 고려하면, 커널 A 및 B의 위치 (2, 1)에서의 가중치들의 값들은 유사하다(11 및 10). 뺄셈 결과(R)는 1이다. S/I-IKW 스트림에서 위치 (2, 1)에 대한 엔트리의 값은 4이다. 엔트리의 값에 기초하여, S/I-IKW 펑션(603)은 R을 1로 결정할 수 있다. 특정 위치에서의 입력 피쳐맵(IFM)의 가중치(W)를 6으로 고려한다. 커널 A의 위치 (2, 1)에서의 가중치에 입력 피쳐맵(IFM)의 가중치를 곱하면, S/I-IKW 네트워크 펑션(603)은 곱셈 결과(P)로서 66(11 * 6)을 산출할 수 있다. S/I-IKW 네트워크 펑션(603)은 R(1) 및 W(6)의 곱인 6(1*6)을 계산할 수 있다. V=P-R*W이므로, S/I-IKW 네트워크 펑션(603)은 브로드캐스팅 될 값(V)을 60(66-6)으로 결정할 수 있다.
상술한 예를 고려하면, 커널 A 및 B의 위치 (0, 2)에서의 가중치들의 값은 유사하다(9 및 11). 따라서 R은 -2이다. S/I-IKW 스트림에서 위치 (0, 2)에 대한 엔트리의 값은 7이다. 엔트리의 값에 기초하여, S/I-IKW 펑션(603)은 R을 -2로 결정할 수 있다. 입력 피쳐맵(IFM)의 가중치(W)는 7로 고려될 수 있다. 커널 A의 위치 (0, 2)에서의 가중치에 W를 곱하면, S/I-IKW 네트워크 펑션(603)은 P로서 63(9*7)을 산출 할 수 있다. S/I-IKW 네트워크 펑션(603)은 R(-2) 및 W(7)의 곱, 즉 -14(-2 * 7)를 계산할 수 있다. S/I-IKW 네트워크 펑션(603)은 브로드캐스팅 될 V를 77(63-(-14))로 결정할 수 있다.
피봇 커널 A 및 비-피봇 커널 B의 상술한 예를 고려하면, 수정된 비-피봇 커널 B는 위치 (0,0) (0,1), (0,2), (1,0), (2,0), (2,1), 및 (2,2)에서 가중치들과 입력 피쳐맵(IMF)의 가중치들 간의 곱셈을 수행하지 않을 수 있다(이 위치들에서의 가중치들의 값들이 0으로 변환됨에 따라). 인코딩 된 S/I-IKW 스트림을 기반으로 한 피봇 커널 A는 위치 (0,0), (0,1), (0,2), (1,0), (2,0), (2,1), 및 (2,2)에서의 피봇 커널의 가중치들과 입력 피쳐맵(IFM)의 가중치들 간의 곱셈 결과를 비-피봇 커널 B에 브로드캐스트 할 수 있다. 비 피봇 커널 B는 출력 피쳐맵(OFM)의 픽셀들을 결정하기 위해, 브로드캐스트 된 곱셈 결과 및 0이 아닌 비-피봇 커널 B의 가중치들과 입력 피쳐맵(IFM)의 가중치들 간의 곱셈 결과를 누적할 수 있다.
따라서, 곱셈 연산은 덧셈 연산으로 변환 될 수 있다. 따라서 비-피봇 커널 (커널 1-15)의 계산 비용, 지연 시간, 및 전력 소비가 줄어들 수 있다.
도 6은 시스템(600)의 예시적인 유닛을 도시하지만, 다른 실시예들은 이에 제한되지 않는다. 다른 실시예들에서, 시스템(600)은 더 적거나 더 많은 수의 유닛들을 포함 할 수 있다. 또한, 유닛들의 라벨들 또는 명칭들은 예시의 목적으로 사용되며, 실시예의 범위를 제한하지 않는다. 하나 또는 그 이상의 유닛들은 시스템(600)에서 동일하거나 실질적으로 유사한 기능을 수행하기 위해 함께 결합될 수 있다.
도 7은 서로 다른 커널들 간에 유사한 및/또는 동일한 가중치들을 이용함으로써 CNN의 성능을 개선하기 위한 방법의 일 예를 도시한 흐름도(700)이다. 701 단계에서, 방법은 복수의 커널들 각각의 가중치들의 상호 비교에 기초하여 복수의 커널들 중에서 피봇 커널을 결정하는 단계를 포함한다. 피봇 커널을 제외한 커널들은 비-피봇 커널들로 간주될 수 있다. 상호 비교를 수행하기 위해서는 복수의 커널들 각각에서 채널들의 개수와 각 채널의 가중치들의 개수가 동일해야 한다. 제1 커널의 제1 가중치와 동일한 위치 및 동일한 채널에 위치한 제2 커널의 제2 가중치가 비교될 수 있다.
예를 들어, 각 디멘션이 3, 3, 1인 커널 세트 내에 3개의 커널들이 있다고 가정한다. 각각의 커널이 단일 채널을 가지므로, 3개의 커널들 각각의 모든 가중치들은 동일한 채널에 위치한다. 각 커널은 9개의 위치에 9개의 가중치를 가질 수 있다. 커널의 가중치를 다른 커널의 다른 가중치와 비교하려면, 가중치의 위치가 동일해야 한다. 예를 들어, 위치 (0, 0)에 있는 커널 0의 가중치는 위치 (0, 0)에 있는 커널 1 및 2의 가중치들과 비교될 수 있다.
실시예는 커널 0, 1, 및 2에 대한 비교 점수를 계산하는 것을 포함한다. 커널 0의 점수는, 커널 2의 가중치들과 동일/유사한 커널 0의 가중치들의 개수와 커널 1의 가중치들과 동일/유사한 커널 0의 가중치들의 개수를 누적함으로써, 결정될 수 있다. 커널 1의 점수는, 커널 2의 가중치들과 동일/유사한 커널 1의 가중치들의 개수와 커널 0의 가중치들과 동일/유사한 커널 1의 가중치들의 개수를 누적함으로써, 결정될 수 있다. 커널 2의 점수는, 커널 1의 가중치들과 동일/유사한 커널 2의 가중치들의 개수와 커널 0의 가중치들과 동일/유사한 커널 2의 가중치들의 개수를 누적함으로써, 결정될 수 있다. 비교 점수가 가장 높은 커널이 피봇 커널로 간주될 수 있다. 나머지 커널들은 비-피봇 커널로 간주될 수 있다. 실시예에서, 커널 0을 피봇 커널로, 커널 0과 1을 비-피봇 커널로 간주한다.
702 단계에서, 방법은 피봇 커널의 가중치들과 각각의 비-피봇 커널의 가중치들의 비교에 기초하여, 각각의 비-피봇 커널과 관련된 S/I-IKW 스트림들을 생성하는 단계를 포함한다. 실시예는 인코딩 된 S/I-IKW 스트림들을 생성하기 위해, 커널 0의 가중치들과 커널 1 및 커널 2의 가중치들을 비교할 수 있다. 인코딩 된 제1 S/I-IKW 스트림은 피봇 커널 0 및 비-피봇 커널 1의 가중치들의 비교에 기초하여 생성 될 수 있고, 인코딩 된 제2 S/I-IKW 스트림은 피봇 커널 0 및 비-피봇 커널 2의 가중치들의 비교에 기초하여 생성될 수 있다.
S/I-IKW 스트림들의 값들은 인코딩 규칙에 기초할 수 있다. 실시예에서, 커널들에서의 가중치들이 동일하지 않으면, 인코딩 된 값은 0이다. 실시예에서, 가중치들의 크기 및 부호가 동일하면, 인코딩 된 값은 1이다. 실시예에서, 가중치들의 크기가 동일하고 부호가 반대이면, 인코딩 된 값은 2이다. 실시예는 유사성의 기준을 구성할 수 있고, 여기서 가중치들의 차이가 유사성 기준을 따르는 경우, 가중치는 유사한 것으로 간주 될 수 있고, S/I-IKW 스트림의 엔트리는 인코딩 된 값으로 생성될 수 있다.
예를 들어, 유사성 기준이 ±2 인 것으로 고려한다. 피봇 커널의 가중치에서 비-피봇 커널의 가중치를 뺀 결과가 ±2의 범위 이내이면, 가중치들은 유사한 것으로 간주 될 수 있다(가중치들은 두 커널에서 동일한 위치 및 채널에 있다). 가중치의 값이 7이면, 5, 6, 8, 및 9의 값을 갖는 가중치들은 유사한 것으로 간주된다.
실시예에서, 가중치들의 부호가 반대이고 뺄셈의 결과(부호를 무시한)가 ±2의 범위 내에 있다면, 가중치들은 또한 유사한 것으로 간주될 수 있다. 가중치의 값이 7이면, -5, -6, -8, 및 -9의 값을 갖는 가중치들이 유사한 것으로 간주될 수 있다. 피봇 커널의 어느 위치에서의 가중치의 값이 7인 경우를 고려한다. 표 1은 비-피봇 커널에서 동일하고 유사한 가중치들에 대한 S/I-IKW 스트림들의 인코딩 된 값들의 예를 나타낸다.
비-피봇 커널에서 가중치의 값 S/I-IKW 스트림에서 인코딩 된 값 비-피봇 커널에서 가중치의 값 S/I-IKW 스트림에서 인코딩 된 값
5 (유사) 5 -5 (유사) 9
6 (유사) 3 -6 (유사) 7
7 (동일) 1 -7 (동일) 2
8 (유사) 4 -8 (유사) 8
9 (유사) 6 -9 (유사) 10
가중치가 일치하지 않으면, S/I-IKW 스트림의 인코딩 된 값은 0이라는 것을 알 수 있다.703 단계에서, 방법은 피봇 커널의 가중치들과 각각의 비-피봇 커널의 가중치들의 비교에 기초하여, 각각의 비-피봇 커널에 희소성을 도입하는 단계를 포함한다. 피봇 커널의 가중치들과 유사/동일한 비-피봇 커널 0과 1의 가중치들은 0으로 변환 될 수 있다. 따라서 희소성이 비-피봇 커널들에 도입될 수 있다. 예를 들어, 커널 0과 커널 1의 4개(9개 중)의 가중치들이 동일하거나 유사하면, 커널 1의 4개 가중치들의 값들이 0으로 변환될 수 있다. 유사하게, 커널 0과 커널 2의 3개(9 개 중)의 가중치들이 동일하거나 유사하다면, 커널 2의 3개 가중치들의 값들은 0으로 변환될 수 있다.
704 단계에서, 방법은 피봇 커널의 가중치들 및 입력 피쳐맵의 픽셀들을 컨볼루션 함으로써 출력 피쳐맵의 채널의 픽셀을 결정하는 단계를 포함한다. 컨볼 루션 연산은 입력 피쳐맵의 픽셀들에 대하여 커널의 가중치들을 슬라이딩하는 것을 포함한다. 특정 슬라이딩 위치에서, 입력 피쳐맵의 픽셀들과 커널의 가중치들의 곱이 계산된다. 입력 피쳐맵과 커널 각각과 동일한 채널에 위치한 곱셈 결과를 획득하기 위해, 입력 피쳐맵의 픽셀들과 커널의 가중치들 간의 곱셈이 연산된다. 특정 위치에서 출력 피쳐맵의 픽셀을 결정하기 위해, 곱셈 결과는 누적될 수 있다.
705 단계에서, 방법은 각각의 S/I-IKW 스트림에 기초하여 피봇 커널의 가중치 및 입력 피쳐맵의 픽셀의 곱셈 결과를 각각의 비-피봇 커널에 브로드캐스트 하는 단계를 포함한다. 위치 (2, 2)에 있는 커널 0과 커널 2의 가중치들의 값이 동일한 경우를 고려한다. 따라서 커널 0의 위치 (2, 2)에서의 가중치와 입력 피쳐맵 픽셀들의 곱과 커널 2의 위치 (2, 2)에서의 가중치와 입력 피쳐맵 픽셀들의 곱은 같다. 커널 2가 비-피봇 커널이므로 위치 (2, 2)의 가중치 값은 0으로 변환된다. 커널 0과 커널 2의 가중치들의 비교에 기초하여, 커널 2와 연관된 S/I-IKW 스트림은 브로드캐스트 네트워크(303) 또는 S/I-IKW 펑션(603)이 곱셈 결과를 브로드캐스트 할지를 나타내는 엔트리를 포함할 수 있다. 커널 2를 포함하는 MAU는 위치 (2, 2)에서 커널 2의 가중치와 입력 피쳐맵의 픽셀 간의 곱을 계산하지 않는다.
커널 0 및 커널 2에서 위치 (2, 2)에서의 가중치들의 값이 유사한 경우, 커널 2의 위치 (2, 2)에서의 가중치 값은 0으로 변환된다. 커널 2와 관련된 S/I-IKW 스트림은 엔트리를 포함할 수 있으며, 커널 2에 브로드캐스트 될 커널 2의 위치 (2, 2)에서의 가중치와 입력 피쳐맵의 가중치의 실제 곱셈 결과와 동일한 값을 결정하기 위해, 엔트리는 S/I-IKW 네트워크 펑션(603)에 의해 사용될 수 있다.
예를 들어, 커널 0의 위치 (2, 2)에서의 가중치는 8이고 커널 0의 위치 (2, 2)에서의 가중치는 9라고 가정한다. 특정 위치에서의 입력 피쳐맵의 픽셀의 값은 10이라고 가정한다. 커널 0의 위치 (2, 2)에서의 가중치가 입력 피쳐맵의 가중치에 대해 슬라이딩될 때, S/I-IKW 네트워크 펑션(603)은 곱셈기의 출력으로부터 커널 0의 위치(2, 2)에서의 가중치와 입력 피쳐맵의 픽셀의 곱셈 결과(8*10=80)을 수신할 수 있다. S/I-IKW 네트워크 펑션(603)은, 위치 (2, 2)에서 커널 2와 연관된 S-IKW 스트림의 엔터리에 기초하여, 커널 0의 위치 (2, 2)에서의 가중치로부터 커널 2의 위치 (2, 2)에서의 가중치를 뺀 결과(8-9)를 결정할 수 있다. S/I-IKW 네트워크 펑션(603)은 뺄셈 결과(-1)와 입력 피쳐맵의 픽셀(10)의 곱을 계산할 수 있다.
S/I-IKW 네트워크 펑션(603)은 계산(80-(-1)10)에 기초하여 브로드캐스트 될 값을 결정할 수 있다. 값(90)은 커널 2를 포함하는 MAU의 누산기로 브로드캐스트 된다. 커널 2를 포함하는 MAU는 위치 (2, 2)에서 커널 2의 가중치와 입력 피쳐맵의 픽셀들의 곱을 계산하지 않는다((2, 2)에서의 가중치의 값은 0으로 변환되었으므로). 따라서, 따라서 피봇 커널의 가중치들이 비-피봇 커널의 가중치들의 가중치들과 같거나 유사하면 비-피봇 커널들에 희소성이 발생할 수 있다. 비-피봇 커널들에서 곱셈을 계산할 필요가 없으므로, 비-피봇 커널들의 계산 비용과 처리 부하를 줄일 수 있다.
706 단계에서, 방법은 비-피봇 커널들의 0이 아닌 가중치들과 입력 피쳐맵의 픽셀들을 컨볼루션 하고 컨볼루션 결과와 브로드캐스트 된 곱셈 결과를 누산함으로써 출력 피쳐맵의 다른 채널들의 가중치들을 결정하는 단계를 포함한다. 실시예는 비-피봇 커널들에서의 희소성을 보상하기 위해, 브로드캐스트 네트워크(303) 또는 S/I-IKW 펑션(603)에 의해 브로드캐스트 된 곱셈 결과와 컨볼루션 결과를 누산하는 단계를 포함한다.
순서도(700)의 다양한 단계들은 제시된 순서로, 다른 순서로, 또는 동시에 수행 될 수 있다. 또한, 일부 실시예에서, 도 7에 열거된 몇몇 단계들은 생략될 수 있다.
도 8은 서로 다른 커널들에서 동일한 가중치들을 이용함으로써 CNN의 성능을 최적화하기 위한 NPU-1(802)을 포함하는 시스템(800)의 일 예를 나타낸다. NPU(802)의 아키텍처는 타입 1이다. NPU(802) 타입 1은 커널 제로-스키핑(zero-skipping)을 사용하지 않을 수 있다. 따라서 모든 커널들은 고정-스텝(lock-step)으로 작동한다. NPU(802) 타입 1은 입력 피쳐맵(IFM) 제로-스키핑을 사용할 수 있고, 깊이 우선(z방향 우선) 포맷으로 입력 피쳐맵(IFM)의 픽셀들을 저장한다. 2x2 커널 A의 인덱스 스트림이 1, 0, 0, 1이고 값 스트림이 3, 4라고 가정한다. NPU 아키텍처 타입 0의 경우 곱셈 연산이 2사이클에 완료될 수 있지만, NPU 아키텍처 타입 1의 경우 곱셈 연산은 4사이클(커널들의 가중치들과 입력 피쳐맵(IFM) 픽셀들의 곱셈)에 완료될 수 있다. 커널은 고정-스텝으로 진행되므로, 피봇 커널과 입력 피쳐맵(IFM)의 가중치들의 곱은 비-피봇 커널들에 의해 사용될 수 있다.
입력 피쳐맵(IFM) 픽셀들은 모든 커널들, 즉 커널 0-15(Kernels 0-15)에 브로드캐스트 될 수 있다. 프로세서(301)는 피봇 커널의 가중치들과 각각의 비-피봇 커널들의 비교에 기초하여 I-IKW 스트림들(I-IKW streams)을 생성할 수 있다. 커널 0(Kernel 0)은 피봇 커널이고 커널 1-15는 비-피봇 커널이라고 간주한다. 입력 피쳐맵(IFM) 픽셀들과 피봇 커널의 가중치들의 곱셈 결과는 생성된 I-IKW 스트림들에 기초하여 브로드캐스트 네트워크(303, Broadcast N/W)에 의해 브로드캐스트 될 수 있다.
도 8에 도시된 바와 같이, 각각의 커널들(피봇 및 비-피봇)은 16개의 채널들을 포함할 수 있다. 따라서 커널들은 16개의 채널들을 포함하는 입력 피쳐맵(IFM)과 컨볼러션 될 수 있다. 설명을 위해, 16개의 커널들이 도시된다. 16개의 커널들이 있으므로 16개의 출력 피쳐맵(OFM) 채널들이 생성될 수 있다. NPU(802)에는 개별 누산기들 대신에 가산기 트리(ADDER TREE)가 포함되어 있다. 각 가산기 트리는 커널 및 입력 피쳐맵(IFM)의 모든 채널들의 가중치들과 픽셀들의 곱을 누적할 수 있다. 16개의 커널들이 있기 때문에, NPU(802)는 16개의 가산기 트리(ADDER TREE 0-15)를 포함하는데, 이는 16개의 출력 피쳐맵(OFM) 채널들의 생성에 기여할 수 있다.
피봇 커널의 결정 방법은 NPU 아키텍처 타입 0에서 사용된 방법과 동일하다. 피봇 커널과 비-피봇 커널들의 가중치들 비교에 기초하여 비-피봇 커널에 희소성이 도입된다. 프로세서(801)는 비-피봇 커널에 희소성을 도입하여 NPU(802)의 성능을 향상시킬 수 있다(계산 비용, 처리 부하, 및 전력 소비를 감소시킴으로써).
NPU(802)는 피봇 커널 및 입력 피쳐맵(IFM) 픽셀들의 가중치들의 곱과 비-피봇 커널들 및 입력 피쳐맵(IFM) 픽셀들의 가중치들의 곱을 멀티플렉싱 할 수 있는 멀티플렉서들을 포함한다. 피봇 커널의 가중치들 및 입력 피쳐맵(IFM)의 모든 채널들의 단일 열에서의 곱은 가산기 트리 0(ADDER TREE 0)에 제공될 수 있다. 피봇 커널 및 입력 피쳐맵(IFM)의 가중치들의 곱은 브로드캐스트 네트워크(303)에 제공될 수 있다. 비-피봇 커널 1-15의 경우, 입력 피쳐맵(IFM)의 픽셀들과 각 비-피봇 커널의 가중치들의 곱은 피봇 커널의 가중치들과 입력 피쳐맵(IFM)의 픽셀들의 곱과 함께 멀티플렉싱 될 수 있다. 멀티플렉서의 출력은 가산기 트리 1-15에 제공될 수 있다. 각 가산기 트리는 16개의 채널들의 열에 걸쳐 곱셈 결과를 누적할 수 있다.
커널들이 고정-스텝에서 동작함에 따라, 주어진 사이클에서, 특정 위치에서 비-피봇 커널의 가중치가 0(희소성을 도입하기 위해 0으로 변환됨)이고 I-IKW 스트림의 엔트리로서 표시되는 경우, 곱셈기(비-피봇 커널의 가중치들 및 입력 피쳐맵(IFM)의 픽셀들의 곱셈)가 종료될 수 있다. 브로드캐스트 네트워크(303)는 피봇 커널(동일한 위치에서)의 가중치 및 입력 피쳐맵(IFM) 픽셀의 곱을 가져올 수 있다. 가져온 곱은 브로드캐스트 네트워크(303)에 의해 곱셈기로 브로드캐스트 될 수 있다. 멀티플렉서의 선택 라인들은 브로드캐스트 된 곱셈 결과(가산기 트리에 공급 됨)를 선택하기 위해 브로드캐스트 네트워크(303)에 의해 작동될 수 있다. 커널들은 고정-스텝에서 동작하므로, 타입 1 아키텍처의 NPU(802)는 피봇 커널로부터 브로드캐스트 된 곱셈 결과를 사용하기 위해 비-피봇 커널들의 멀티플렉서를 필요로 하며, 이로써 공간(area) 및 전력이 절약될 수 있다.
가산기 트리들은 커널들 및 입력 피쳐맵(IFM)의 모든 채널들에 대한 커널들의 가중치들 및 입력 피쳐맵(IFM)의 픽셀들의 곱을 누적할 수 있다. 가산기 트리들은 누적된 결과를 외부 누산기들(803-818)에 제공할 수 있다. 외부 누산기들(803-818)은 대응하는 가산기 트리들에 의해 제공된 누적된 출력 및 출력 피쳐맵(OFM) 픽셀들을 생성하기 위해 이전 사이클 동안 누적된 값을 누적할 수 있다. 외부 누산기들(803-818)은 도 4a에 도시된 바와 같이, 비트 단위 분할을 사용하여 분할될 수 있으며, 이는 추가 전력 절감을 불러온다.
도 9는 서로 다른 커널들에서 유사/동일한 가중치들을 이용함으로써 CNN의 성능을 최적화하기 위한 NPU-1(902)을 포함하는 시스템(900)의 일 예를 나타낸다. 도 9에 도시된 바와 같이, 시스템(900)은 프로세서(601) 및 NPU(902)를 포함한다. 설명을 위해 16개의 커널들이 도시되어 있다. NPU(902)의 아키텍처는 타입 1이다. 모든 커널들은 시스템(900)에서 동작하며 고정-스텝(lock-step)으로 동작한다.
프로세서(901)는 가중치들이 서로 유사/동일한지를 검출하기 위해 각 커널의 가중치들을 다른 15개의 커널들의 가중치들과 비교할 수 있다. 프로세서(601)는 가장 높은 점수를 갖는 커널(도 3에서 논의됨)을 피봇 커널로 간주하고 나머지 다른 커널들을 비-피봇 커널들로 간주할 수 있다. 실시예에서, 커널 0(Kernel 0)은 피봇 커널이고 커널 1-15는 비-피봇 커널인 것을 고려한다. 도 9에 도시 된 바와 같이, 각각의 커널들은 16개의 채널들을 포함할 수 있다. 커널들의 가중치들은 대응하는 채널들의 입력 피쳐맵(IFM)의 픽셀들과 컨볼루션 될 수 있다. 시스템(900)이 16개의 커널들을 포함함에 따라, 16개의 출력 피쳐맵(OFM) 채널들, 즉 OFM 0-15가 생성 될 수 있다. 시스템(900)은 16개의 가산기 트리들을 포함하고, 각각은 단일 열에서 출력 피쳐맵(OFM) 채널의 생성에 기여한다. 커널 0(Kernel 0)은 피봇 커널이고 커널 1-15는 비-피봇 커널인 것을 고려한다. 유사성 기준에 기초하여 앞서 논의된 바와 같이(도 6), 피봇 및 비-피봇 커널들의 가중치들의 비교에 기초하여 비-피봇 커널들에 희소성이 도입된다.
NPU(902)에서 멀티플렉서들은 피봇 커널들의 가중치들과 입력 피쳐맵(IFM) 픽셀들의 곱과(S/I-IKW 펑션(903, S/I-IKW Function)에 의해 획득될 수 있음) 비-피봇 커널들의 가중치들과 입력 피쳐맵(IFM) 픽셀들의 곱을 멀티플렉싱 할 수 있다. S/I-IKW 펑션(903)에 의해 획득된 곱은 수정되거나 멀티플렉서에 공급될 수 있다. 곱이 수정되면, 수정은 입력 피쳐맵(IFM)의 픽셀들, 피봇 커널의 가중치들과 같은 위치에 있는 비-피봇 커널의 가중치들(S/I-IKW 스트림)의 비교, 및 입력 피쳐맵(IFM) 픽셀들과 피봇 커널의 가중치들의 곱셈 결과에 기초할 수 있다. NPU(902)는 연관된 S/IKW 스트림들(S/IKW streams)에 기초하여 동일한 위치 및 채널에서 피봇 커널 및 비-피봇 커널들의 가중치들이 유사하거나 동일한지 여부를 확인할 수 있다. S/I-IKW 펑션(903)의 동작 및 생성은 도 6에서 설명된 멀티플렉서들의 값들로 제공된다(획득된 곱셈 결과가 수정되는 것에 대비하여). 가중치들이 유사한 경우, S/I-IKW 펑션(603)은 피봇 커널의 가중치들 및 입력 피쳐맵(IFM)의 가중치들의 곱을 수정할 수 있다. 가중치들이 동일하면, S/I-IKW 펑션(603)은 피봇 커널의 가중치들 및 입력 피쳐맵(IFM)의 픽셀들의 곱을 수정하지 않을 수 있다. 수정은 도 6에서 설명된 원리(V=P-R*W)에 기초하여 수행된다.
피봇 커널의 가중치들 및 모든 채널들의 입력 피쳐맵(IFM) 픽셀들의 단일 열에서의 곱은 가산기 트리 0(ADDER TREE 0)에 제공될 수 있다. 입력 피쳐맵(IFM) 및 피봇 커널의 가중치들의 곱은 S/I-IKW 펑션(603)에 제공될 수 있다. 비-피봇 커널들 1-15의 경우, 입력 피쳐맵(IFM)의 픽셀들과 각 비-피봇 커널들의 가중치들의 곱은 피봇 커널의 가중치들과 입력 피쳐맵(IFM) 픽셀들의 곱과 멀티플렉싱 될 수 있고, 멀티플렉서의 출력은 가산기 트리들 1-15에 제공될 수 있다. 각 가산기 트리는 대응되는 출력 피쳐맵(OFM) 픽셀들을 생성하기 위하여, 각 커널의 16개의 채널들에 걸친 곱을 열에 대하여 누적할 수 있다.
커널들이 고정-스텝에서 동작하기 때문에, 주어진 사이클에서, 특정 위치에서 비-피봇 커널의 가중치가 0(희소성을 도입하기 위해 0으로 변환됨)이고 S/I-IKW 엔트리로서 표시되는 경우, 곱셈기(비-피봇 커널의 가중치들 및 입력 피쳐맵(IFM)의 픽셀들의 곱셈)가 종료될 수 있다. S/I-IKW 펑션(603)은 피봇 커널의 가중치와 동일한 위치에서의 입력 피쳐맵(IFM) 픽셀의 곱을 획득할 수 있다. 획득된 곱셈 결과는 S/I-IKW 펑션(603)에 의해 곱셈기로 브로드캐스트 될 수 있다. 멀티플렉서의 선택 라인들(select lines)은 브로드캐스트 된 곱셈 결과를 선택하기 위해 S/I-IKW 펑션(603)에 의해 구동 될 수 있다.
가산기 트리들은 커널들의 가중치들 및 입력 피쳐맵(IFM) 픽셀들의 곱을 누적하고 결과를 외부 누산기들(903-918)에 제공할 수 있다. 외부 누산기들의 NPU(903-918)는 출력 피쳐맵(OFM) 픽셀들을 생성하기 위해 가산기 트리들로부터 제공된 출력과 이전 주기 동안 누적된 값을 누적할 수 있다. 외부 누산기들 NPU (903-918)는 도 4a에 도시된 바와 같이, 비트 단위 분할을 사용하여 분할될 수 있으며, 이는 추가 전력 절감을 불러온다.
도 10은 서로 다른 커널들에서 유사한/동일한 가중치들을 이용함으로써 CNN의 성능을 최적화하도록 구성된 시스템(1000)의 일 예를 나타낸다. 도 10에 도시 된 바와 같이, 시스템(1000)은 프로세서(601) 및 NPU(1002)를 포함한다. NPU(1002)의 아키텍처는 타입 0이다.
시스템(600, 1000)에서의 프로세서(601)의 기능은 동일하다. 시스템(600, 1000)에서 S/I-IKW 펑션(603, S/I-IKW function)의 기능은 동일하다.
비-피봇 커널들은 멀티플렉서들을 포함하고, 멀티플렉서는 비-피봇 커널들의 가중치들과 입력 피쳐맵(IFM)의 픽셀들의 곱 및 피봇 커널의 가중치들과 입력 피쳐맵(IFM)의 픽셀들 브로드캐스트 된 곱을 멀티플렉싱 할 수 있다. 피봇 커널과 비-피봇 커널들의 가중치들의 유사성으로 인해 희소성이 발생하는 경우, S/I-IKW 스트림들(S/I-IKW streams) 및 피봇 커널의 가중치들과 입력 피쳐맵(IFM)의 픽셀들의 곱을 기반으로 브로드캐스트 될 곱이 수정될 수 있다.
MAU의 피봇 커널 및 비-피봇 커널들은 고정-스텝으로 동작할 수 있다. 비-피봇 커널들의 가중치들과 입력 피쳐맵(IFM) 픽셀들의 곱이 0인 경우, 멀티플렉서들의 출력은 브로드캐스트 된 값 또는 수정된 브로드캐스트 된 값일 수 있다. 출력 피쳐맵(OFM) 픽셀들의 값은 누산기에 의해 멀티플렉서들의 출력 및 이전에 누적된 출력 피쳐맵(OFM) 픽셀 값을 누적함으로써 획득될 수 있다.
도 10은 시스템(1000)의 예시적인 유닛들을 도시하며, 다른 실시예는 이에 제한되지 않는다. 다른 실시예들에서, 시스템(1000)은 더 적거나 더 많은 수의 유닛들을 포함할 수 있다. 또한, 유닛의 라벨 또는 명칭은 예시의 목적으로 만 사용되며 본 발명의 범위를 제한하지 않는다. 하나 이상의 유닛은 시스템(1000)에서 동일하거나 실질적으로 유사한 기능을 수행하기 위해 함께 결합 될 수 있다.
도 11은 서로 다른 커널들에서 유사한/동일한 가중치들을 이용함으로써 CNN의 성능을 최적화하도록 구성된 시스템(1100)의 일 예를 나타낸다. 도 11에 도시된 바와 같이, 시스템(1100)은 프로세서(601) 및 NPU(1102)를 포함한다. NPU(1102)의 아키텍처는 타입 1이다.
시스템(600, 1100)에서의 프로세서(601)의 기능은 동일하다. 시스템(600, 1100)에서 S/I-IKW 펑션(603, S/IKW Function)의 기능은 동일하다.
비-피봇 커널들은 서로 다른 비-피봇 커널들과 피봇 커널이 다른 속도로 동작하는 경우 가산기들을 포함할 수 있다. 가산기들은 비-피봇 커널들의 가중치들과 입력 피쳐맵(IFM)의 픽셀들의 곱과 피봇 커널의 가중치들과 입력 피쳐맵(IFM)의 픽셀들의 브로드캐스트 된 곱의 합산을 수행할 수 있다. S/I-IKW 펑션(603)은 비-피봇 커널들의 가중치들과 입력 피쳐맵(IFM)의 픽셀들의 곱이 0(S/I-IKW 스트림에서 결정)인 경우에만 피봇 커널의 가중치들과 입력 피쳐맵(IFM)의 픽셀들의 곱을 브로드캐스트 할 수 있다. 비-피봇 커널들의 가중치들이 원래 0이거나, 입력 피쳐맵(IFM)의 픽셀 값들이 0이거나, 비-피봇 커널에 희소성이 도입된 경우, 비 피봇 커널의 가중치들 및 입력 피쳐맵(IFM)의 픽셀들은 0이다.
피봇 커널과 비-피봇 커널들의 가중치들의 유사성으로 인해 희소성이 도입되는 경우, 브로드캐스트 될 곱셈 결과는 S/I-IKW 스트림들(S/I-IKW streams) 및 피봇 커널의 가중치들과 입력 피쳐맵(IFM)의 픽셀들의 곱에 기초하여 수정될 수 있다. 비-피봇 커널들에서 각 가산기들의 출력은 각각의 가산기 트리들에 제공될 수 있으며, 이는 출력 피쳐맵(OFM) 픽셀들의 생성에 기여할 수 있다.
도 11은 시스템(1100)의 예시적인 유닛들을 도시하며, 다른 실시예는 이에 제한되지 않는다. 다른 실시예들에서, 시스템(1100)은 더 적거나 더 많은 수의 유닛들을 포함할 수 있다. 또한, 유닛의 라벨 또는 명칭은 예시의 목적으로 만 사용되며 본 발명의 범위를 제한하지 않는다. 시스템(1100)에서 동일하거나 실질적으로 유사한 기능을 수행하기 위해 하나 이상의 유닛이 함께 결합 될 수 있다.
도 12a 및 12b는 실시예들에 따른, 비쥬얼 지오메트리 그룹(Visual Geometry Group, VGG) CNN의 피봇 커널 및 비-피봇 커널들의 가중치들의 비교에 기초하여 비-피봇 커널들에 도입된 희소성을 나타내는 그래프이다. VGG는 16개의 레이어들로 구성된다. 도 12a에 도시된 VGG-16의 커널들의 가중치들은 8비트로 구성된다. 도 12b에 도시된 VGG-16의 커널들의 가중치들은 4비트로 구성된다. 피봇 커널과 비-피봇 커널들의 가중치들은 동일한 가중치들을 식별하기 위해 비교된다. 비-피봇 커널들에서 식별된 가중치들의 값이 0으로 변환되어 희소성이 발생한다. 8비트 및 4비트 가중치들 모두, 동일한 가중치들을 0으로 변환한 후 희소성이 8%까지 증가했다.
도 13a 및 13b는 실시예들에 따른, 인셉션-버전 4(inception-version 4) CNN의 피봇 커널 및 비-피봇 커널들의 가중치들의 비교에 기초하여 비-피봇 커널들에 도입된 희소성을 나타내는 그래프이다. 도 13a에 도시된 인셉션-버전 4 CNN의 커널들의 가중치들은 8비트로 구성된다. 동일한 가중치들을 0으로 변환한 후 희소성이 2%까지 증가했다. 도 13b에 도시된 인셉션-버전 4 CNN의 커널들의 가중치들은 4비트로 구성된다. 동일한 가중치들을 0으로 변환한 후 희소성이 3%까지 증가했다.
도 14a 및 14b는 실시예들에 따른 VGG-16 CNN의 성능 개선을 나타내는 그래프이다. 비-피봇 커널들의 동일한 가중치들이 0으로 변환되고 피봇 커널의 가중치들과 입력 피쳐맵의 곱이 비-피봇 커널로 브로드캐스트 됨으로써, 피봇 커널의 가중치들과 동일한 비-피봇 커널들의 가중치들과 입력 피쳐맵의 곱은 계산되지 않는다. 브로드캐스트 된 곱셈 결과는 0이 아닌 가중치들과 입력 피쳐맵의 곱셈 결과와 함께 누적될 수 있다. 따라서, 곱셈 연산은 누적 연산으로 변환될 수 있다. 이는 계산 복잡성을 줄이고 CNN의 성능을 향상시킬 수 있다.
도 14a에 도시된 VGG-16 CNN의 커널들의 가중치들은 8비트로 구성된다. VGG-16 CNN의 성능이 7.15%까지 향상되었다. 도 14b에 도시된 VGG-16 CNN의 커널들의 가중치들은 4비트로 구성된다. VGG-16 CNN의 성능이 4.7%까지 향상되었다.
도 15a 및 15b는 실시예들에 따른, 인셉션-버전 4 CNN의 성능 개선을 나타내는 그래프이다. 도 15a에 도시된 인셉션-버전 4 CNN의 커널들의 가중치들은 8비트로 구성된다. 인셉션-버전 4 CNN의 성능은 1.56%까지 향상되었다. 도 15b에 도시된 인셉션-버전 4 CNN의 커널들의 가중치들은 4비트로 구성된다. 인셉션-버전 4 CNN의 성능은 4.7%까지 향상되었다.
도 16a 및 16b는 VGG-16 CNN의 전력 절감을 나타내는 그래프이며, 여기서 커널들의 가중치들은 실시예에 따라 8 비트로 구성된다. 곱셈 연산이 덧셈 연산으로 변환됨에 따라(동일한 가중치들을 식별함으로써 비-피봇 커널에 희소성이 도입되기 때문에) 전력이 절약될 수 있다. 프로세서의 부하가 최소화될 수 있고 전력이 절약될 수 있다. 도 16a에 도시된 바와 같이, 1x1 셀의 경우, 16%의 전력 절감이 달성될 수 있다. 도 16b에 도시된 바와 같이, 4x8 셀의 경우, 16%의 전력 절감이 달성될 수 있다.
도 17a 및 17b는 VGG-16 CNN의 전력 절감을 나타내는 그래프이며, 여기서 커널들의 가중치들은 실시예에 따라 4비트로 구성된다. 도 17a에 도시된 바와 같이, 1x1 셀의 경우, 27%의 전력 절감이 달성될 수 있다. 도 17b에 도시된 바와 같이, 4x8 셀의 경우, 27%의 전력 절감이 달성될 수 있다.
도 18a 및 18b는 인셉션-버전 4 CNN의 전력 절감을 도시한 그래프이며, 여기서 커널들의 가중치들은 실시예에 따라 8비트로 구성된다. 도 18a에 도시된 바와 같이, 1x1 셀의 경우, 15%의 전력 절감이 달성될 수 있다. 도 18b에 도시 된 바와 같이, 4x8 셀의 경우, 15%의 전력 절감이 달성될 수 있다.
도 19a 및 19b는 인셉션-버전 4 CNN의 전력 절감을 도시한 그래프이며, 여기서 커널들의 가중치들은 실시예에 따라 4비트로 구성된다. 도 19a에 도시된 바와 같이, 1x1 셀의 경우, 30%의 전력 절감이 달성될 수 있다. 도 19b에 도시된 바와 같이, 4x8 셀의 경우, 30%의 전력 절감이 달성될 수 있다.
도 20a 및 20b는 실시예에 따른 피봇 커널 및 비-피봇 커널들의 가중치들을 비교함으로써 유사하고 동일한 가중치들을 검출함으로써 도입된, VGG-16 CNN의 비-피봇 커널들에서 희소성의 향상을 나타내는 그래프이다. 도 20a에 도시된 VGG-16의 커널들의 가중치들은 8비트로 구성된다. 도 20b에 도시된 VGG-16의 커널들의 가중치들은 4비트로 구성된다. 피봇 커널과 비-피봇 커널들의 가중치들은 유사하고 동일한 가중치들을 감지하기 위해 비교된다. 비-피봇 커널들에서 감지된 가중치들의 값이 0으로 변환되어 희소성이 발생한다. 8비트 VGG-16의 경우 유사하고 동일한 가중치들을 0으로 변환한 후 희소성이 36%까지 증가했다. 4비트 VGG-16의 경우 유사하고 동일한 가중치들을 0으로 변환한 후 희소성이 20%까지 증가했다.
도 21a 및 21b는 실시예에 따른 피봇 커널 및 비-피봇 커널들의 가중치들을 비교함으로써 유사하고 동일한 가중치들을 검출함으로써 도입된, 인셉션-버전 4 CNN의 비-피봇 커널들에서의 희소성의 향상을 나타내는 그래프이다. 도 21a에 도시된 인셉션-버전 4 CNN의 커널들의 가중치들은 8비트로 구성된다. 유사하고 동일한 가중치들을 0으로 변환한 후 희소성이 12%까지 증가했다. 인셉션-버전 4 CNN의 커널들의 가중치들은 4비트로 구성된다. 유사하고 동일한 가중치들을 0으로 변환한 후 희소성이 42%까지 증가했다.
도 22a 및 22b는 실시예에 따른 피봇 및 비-피봇 커널들의 가중치들을 비교함으로써 유사하고 동일한 가중치들을 검출함으로써 달성된 VGG-16 CNN의 성능 개선을 나타내는 그래프이다. 비-피봇 커널들의 유사하고 동일한 가중치들이 0으로 변환되고 피봇 커널의 가중치들과 입력 피쳐맵의 곱이 수정되고 비-피봇 커널들로 브로드캐스트 됨에 따라, 피봇-커널의 가중치들과 유사하고 동일한 비-피봇 커널들의 가중치들과 입력 피쳐맵의 곱의 계산은 수행되지 않는다. 브로드캐스트 된 곱셈 결과는 입력 피쳐맵과 0이 아닌 가중치들의 곱셈 결과와 함께 누적될 수 있다. 따라서, 곱셈 연산은 누적 연산으로 변환될 수 있다. 이를 통해, 계산 복잡성을 줄이고 VGG-16 CNN의 성능을 향상시킬 수 있다.
도 22a에 도시된 VGG-16 CNN의 커널들의 가중치들은 8비트로 구성된다. VGG-16 CNN의 성능은 13.2%까지 향상되었다. 도 22b에 도시된 VGG-16 CNN의 커널들의 가중치들은 4비트로 구성된다. VGG-16 CNN의 성능이 44%까지 향상되었다.
도 23a 및 23b는 실시예에 따른 피봇 및 비-피봇 커널들의 가중치들을 비교함으로써 유사하고 동일한 가중치들을 검출함으로써 달성된 인셉션-버전 4 CNN의 성능 개선을 나타내는 그래프이다. 도 23a에 도시된 인셉션-버전 4 CNN의 커널들의 가중치들은 8비트로 구성된다. 인셉션-버전 4 CNN의 성능은 3%까지 향상되었다. 도 23b에 도시된 인셉션-버전 4 CNN의 커널들의 가중치들은 4비트로 구성된다. 인셉션-버전 4 CNN의 성능은 44%까지 향상되었다.
실시예들은 적어도 하나의 하드웨어 장치에서 실행되고 네트워크 요소들을 제어하기 위해 네트워크 관리 기능을 수행하는 적어도 하나의 소프트웨어 프로그램을 통해 구현될 수 있다. 도 3-6, 8, 및 9에 도시된 네트워크 요소들은 하드웨어 장치, 또는 하드웨어 장치 및 소프트웨어 모듈의 조합 중 적어도 하나 일 수 있는 블록을 포함한다.
실시예들은 서로 다른 커널들에 걸쳐 유사한 및/또는 동일한 가중치들을 이용함으로써 CNN의 성능을 향상시키기 위한 방법 및 시스템을 설명한다. 따라서, 보호의 범위는 프로그램, 그 안에 메시지를 갖는 컴퓨터 판독 가능 수단들, 프로그램이 서버 또는 모바일 장치 또는 임의의 적합한 프로그램 가능한 장치에서 실행될 때 방법의 하나 이상의 단계를 구현하기 위한 프로그램 코드 수단들을 포함하는 컴퓨터 판독 가능 저장 수단들로 확장된다. 방법은 바람직한 실시예에 따라 초고속 집적 회로 하드웨어 기술 언어(Very high speed integrated circuit Hardware Description Language, VHDL)나 다른 프로그래밍 언어로 작성된 소프트웨어 프로그램에 의해 구현되거나, 적어도 하나의 하드웨어 장치에서 실행되는 하나 이상의 VHDL 또는 소프트웨어 모듈들에 의해 구현된다. 하드웨어 장치는 프로그래밍 가능한 모든 종류의 휴대용 장치일 수 있다. 장치는 주문형 반도체(Application Specific IC, ASIC)와 같은 하드웨어 수단들, 또는 ASIC과 FPGA(Field Programmable Gate Array)와 같은 하드웨어와 소프트웨어 수단들의 조합, 또는 소프트웨어 모듈들이 위치한 적어도 하나의 메모리와 적어도 하나의 프로세서를 포함할 수 있다. 방법은 하드웨어에 의해 부분적으로 구현되고 소프트웨어에 의해 부분적으로 구현될 수 있다. 대안적으로, 실시예는 복수의 CPU들을 사용하는 등과 같이 서로 다른 하드웨어 장치들에 의해 구현될 수 있다.
본 실시예들은 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터에 의해 실행 가능한 명령어를 포함하는 기록 매체의 형태로도 구현될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 모두 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함한다. 통신 매체는 전형적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈과 같은 변조된 데이터 신호의 기타 데이터, 또는 기타 전송 메커니즘을 포함하며, 임의의 정보 전달 매체를 포함한다.
또한, 본 명세서에서, “부”는 프로세서 또는 회로와 같은 하드웨어 구성(hardware component), 및/또는 프로세서와 같은 하드웨어 구성에 의해 실행되는 소프트웨어 구성(software component)일 수 있다.
전술한 본 명세서의 설명은 예시를 위한 것이며, 본 명세서의 내용이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.

Claims (13)

  1. 복수의 커널들을 포함하는 컨볼루션 뉴럴 네트워크(CNN)를 이용하여 출력 피쳐맵(OFM)의 채널을 생성하는 방법에 있어서,
    프로세서(601)에 의해, 피봇 커널의 가중치들과 적어도 하나의 비-피봇 커널의 가중치들의 비교에 기초하여, 상기 적어도 하나의 비-피봇 커널과 관련된, 적어도 하나의 인코딩 된 유사 또는 동일한 인터-커널 가중치(S/I-IKW)의 스트림을 생성하는 단계;
    프로세서(601)에 의해, 상기 적어도 하나의 비-피봇 커널에 희소성을 도입하기 위해, 상기 피봇 커널의 가중치들과 상기 적어도 하나의 비-피봇 커널의 가중치들의 비교에 기초하여 식별되는 유사하고 동일한 가중치들에 있어서, 상기 적어도 하나의 비-피봇 커널에서 상기 유사하고 동일한 가중치들을 0으로 변환하는 단계;
    뉴럴 프로세싱 유닛(NPU, 602)에 의해, 입력 피쳐맵(IFM)의 적어도 하나의 픽셀과 상기 피봇 커널의 적어도 하나의 가중치의 곱, 상기 입력 피쳐맵(IFM)의 적어도 하나의 픽셀, 및 상기 적어도 하나의 비-피봇 커널과 관련된 상기 유사 또는 동일한 인터-커널 가중치(S/I-IKW)의 스트림 중 적어도 하나에 기초하여 결정되는 상기 적어도 하나의 비-피봇 커널의 적어도 하나의 값을 브로드캐스팅 하는 단계; 및
    뉴럴 프로세싱 유닛(602, NPU)에 의해, 적어도 하나의 이전 출력 피쳐맵(OFM)의 값을, 상기 피봇 커널의 0이 아닌 가중치들과 상기 입력 피쳐맵(IFM)의 픽셀들의 컨볼루션, 상기 브로드캐스트 된 적어도 하나의 값, 및 상기 적어도 하나의 비-피봇 커널의 0이 아닌 가중치들과 상기 입력 피쳐맵(IFM)의 픽셀들의 컨볼루션 중 적어도 하나와 누적함으로써, 적어도 하나의 출력 피쳐맵(OFM) 채널을 생성하는 단계를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 피봇 커널의 제1 가중치와 상기 적어도 하나의 비-피봇 커널의 제2 가중치의 크기 및 부호가 동일하거나 상기 제1 가중치와 상기 제2 가중치의 크기가 동일하고 부호가 반대인 경우, 상기 제1 가중치와 상기 제2 가중치는 동일한 것으로 간주되는, 방법.
  3. 제1항에 있어서,
    서로 부호가 같거나 반대인 상기 피봇 커널의 제1 가중치와 상기 적어도 하나의 비-피봇 커널의 제2 가중치는, 상기 제1 가중치와 상기 제2 가중치의 크기의 차이가 유사도 마진의 이내인 경우, 유사한 것으로 간주되는, 방법.
  4. 제1항에 있어서,
    상기 적어도 하나의 비-피봇 커널과 관련된 상기 유사 또는 동일한 인터-커널 가중치(S/I-IKW)의 스트림의 엔트리의 수는 상기 피봇 커널의 0이 아닌 가중치들의 수에 기초하고, 상기 유사 또는 동일한 인터-커널 가중치(S/I-IKW)의 스트림의 각각의 엔트리는 상기 피봇 커널의 가중치들과 상기 적어도 하나의 비-피봇 커널의 가중치들이 상이한지, 동일한지, 또는 유사한지에 기초하여 인코딩 되는, 방법.
  5. 제1항에 있어서,
    상기 복수의 커널들 각각에 대하여 위치가 동일한 가중치들의 상호 비교를 수행하는 단계;
    상기 복수의 커널들 중 어느 한 커널의, 다른 커널들의 가중치들과 동일 또는 유사한 가중치들의 개수를 누적함으로써 상기 복수의 커널들 각각에 대한 비교 점수를 결정하는 단계; 및
    상기 피봇 커널로서 비교 점수가 가장 높은 커널을 선택하는 단계;
    에 기초하여, 상기 복수의 커널들 중 피봇 커널이 결정되는, 방법.
  6. 제1항에 있어서,
    피봇 곱셈-누적 유닛(Multiply-Accumulate Unit, MAU) 및 적어도 하나의 비-피봇 곱셈-누적 유닛(MAU) 각각에서 누산기들의 비트 분할을 수행하는 단계를 더 포함하고,
    상기 피봇 곱셈-누적 유닛(MAU)은 피봇 커널을 포함하고, 상기 적어도 하나의 비-피봇 곱셈-누적 유닛(MAU)은 상기 적어도 하나의 비-피봇 커널을 포함하는, 방법.
  7. 복수의 커널들을 포함하는 컨볼루션 뉴럴 네트워크(CNN)를 이용하여 출력 피쳐맵(OFM)의 채널을 생성하기 위한 시스템(600)에 있어서,
    상기 시스템(600)은 프로세서(601) 및 뉴럴 프로세싱 유닛(602, NPU)을 포함하고,
    상기 프로세서(601)는,
    피봇 커널의 가중치들과 적어도 하나의 비-피봇 커널의 가중치들의 비교에 기초하여, 상기 적어도 하나의 비-피봇 커널과 관련된, 적어도 하나의 인코딩 된 유사 또는 동일한 인터-커널 가중치(S/I-IKW)의 스트림을 생성하고,
    상기 적어도 하나의 비-피봇 커널에 희소성을 도입하기 위해, 상기 적어도 하나의 비-피봇 커널에서 유사하고 동일한 가중치들을 0으로 변환하고,
    상기 뉴럴 프로세싱 유닛(602, NPU)은,
    입력 피쳐맵(IFM)의 적어도 하나의 픽셀과 상기 피봇 커널의 적어도 하나의 가중치의 적어도 하나의 곱, 상기 입력 피쳐맵(IFM)의 적어도 하나의 픽셀, 및 상기 적어도 하나의 비-피봇 커널과 관련된 상기 유사 또는 동일한 인터-커널 가중치(S/I-IKW)의 스트림 중 적어도 하나에 기초하여 결정되는 상기 적어도 하나의 비-피봇 커널의 적어도 하나의 값을 브로드캐스팅 하고,
    적어도 하나의 이전 출력 피쳐맵(OFM)의 값을, 상기 피봇 커널의 0이 아닌 가중치들과 상기 입력 피쳐맵(IFM)의 픽셀들의 컨볼루션, 상기 브로드캐스트 된 적어도 하나의 값, 및 상기 적어도 하나의 비-피봇 커널의 0이 아닌 가중치들과 상기 입력 피쳐맵(IFM)의 픽셀들의 컨볼루션 중 적어도 하나와 누적함으로써, 적어도 하나의 출력 피쳐맵(OFM) 채널을 생성하는, 시스템.
  8. 제7항에 있어서,
    상기 피봇 커널의 제1 가중치와 상기 적어도 하나의 비-피봇 커널의 제2 가중치의 크기 및 부호가 동일하거나 상기 제1 가중치와 상기 제2 가중치의 크기가 동일하고 부호가 반대인 경우, 상기 제1 가중치와 상기 제2 가중치는 동일한 것으로 간주되는, 시스템.
  9. 제7항에 있어서,
    서로 부호가 같거나 반대인 상기 피봇 커널의 제1 가중치와 상기 적어도 하나의 비-피봇 커널의 제2 가중치는, 상기 제1 가중치와 상기 제2 가중치의 크기의 차이가 유사도 마진의 이내인 경우, 유사한 것으로 간주되는, 시스템.
  10. 제7항에 있어서,
    상기 적어도 하나의 비-피봇 커널과 관련된 상기 유사 또는 동일한 인터-커널 가중치(S/I-IKW)의 스트림의 엔트리의 수는 상기 피봇 커널의 0이 아닌 가중치들의 수에 기초하고, 상기 유사 또는 동일한 인터-커널 가중치(S/I-IKW)의 스트림의 각각의 엔트리는 상기 피봇 커널의 가중치들과 상기 적어도 하나의 비-피봇 커널의 가중치들이 상이한지, 동일한지, 또는 유사한지에 기초하여 인코딩 되는, 시스템.
  11. 제7항에 있어서,
    상기 복수의 커널들 각각에 대하여 위치가 동일한 가중치들의 상호 비교를 수행하고,
    상기 복수의 커널들 중 어느 한 커널의, 다른 커널들의 가중치들과 동일 또는 유사한 가중치들의 개수를 누적함으로써 상기 복수의 커널들 각각에 대한 비교 점수를 결정하고,
    상기 피봇 커널로서 비교 점수가 가장 높은 커널을 선택함으로써, 상기 복수의 커널들 중 피봇 커널이 결정되는, 시스템.
  12. 제7항에 있어서,
    피봇 곱셈-누적 유닛(Multiply-Accumulate Unit, MAU) 및 적어도 하나의 비-피봇 곱셈-누적 유닛(MAU) 각각에서 누산기들의 비트 분할을 수행하도록 구성되고,
    상기 피봇 곱셈-누적 유닛(MAU)은 피봇 커널을 포함하고, 상기 적어도 하나의 비-피봇 곱셈-누적 유닛(MAU)은 상기 적어도 하나의 비-피봇 커널을 포함하는, 시스템.
  13. 제1항의 방법을 컴퓨터에서 실행하기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
KR1020200026125A 2019-07-25 2020-03-02 컨볼루션 뉴럴 네트워크의 성능 향상을 위한 방법 및 시스템 KR20210012882A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US16/935,500 US20210027151A1 (en) 2019-07-25 2020-07-22 Methods and systems with convolutional neural network (cnn) performance

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
IN201941030175 2019-07-25
IN201941030175 2019-07-25

Publications (1)

Publication Number Publication Date
KR20210012882A true KR20210012882A (ko) 2021-02-03

Family

ID=74572477

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200026125A KR20210012882A (ko) 2019-07-25 2020-03-02 컨볼루션 뉴럴 네트워크의 성능 향상을 위한 방법 및 시스템

Country Status (1)

Country Link
KR (1) KR20210012882A (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230026813A (ko) * 2021-08-18 2023-02-27 연세대학교 산학협력단 Lstm 가속을 위한 게이트-단위 가지치기 방법 및 장치
KR20230032748A (ko) * 2021-08-31 2023-03-07 한국과학기술원 심층 강화학습을 위한 심층 신경망 학습 가속 장치 및 그 방법
WO2023090499A1 (ko) * 2021-11-19 2023-05-25 서울과학기술대학교 산학협력단 심층신경망을 위한 희소성 학습 기반 필터 프루닝 기법

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230026813A (ko) * 2021-08-18 2023-02-27 연세대학교 산학협력단 Lstm 가속을 위한 게이트-단위 가지치기 방법 및 장치
KR20230032748A (ko) * 2021-08-31 2023-03-07 한국과학기술원 심층 강화학습을 위한 심층 신경망 학습 가속 장치 및 그 방법
WO2023090499A1 (ko) * 2021-11-19 2023-05-25 서울과학기술대학교 산학협력단 심층신경망을 위한 희소성 학습 기반 필터 프루닝 기법

Similar Documents

Publication Publication Date Title
KR20210012882A (ko) 컨볼루션 뉴럴 네트워크의 성능 향상을 위한 방법 및 시스템
CN110880038B (zh) 基于fpga的加速卷积计算的系统、卷积神经网络
JP5235666B2 (ja) 選択されたセグメントのビット平面表現を用いた連想マトリックス法、システムおよびコンピュータプログラム製品
WO2019041251A1 (zh) 芯片装置及相关产品
CN103294446B (zh) 一种定点乘累加器
WO2022037257A1 (zh) 卷积计算引擎、人工智能芯片以及数据处理方法
US20110107060A1 (en) Transposing array data on simd multi-core processor architectures
KR102153791B1 (ko) 인공 신경망을 위한 디지털 뉴런, 인공 뉴런 및 이를 포함하는 추론 엔진
US11948086B2 (en) Accelerated embedding layer computations
CN109993293B (zh) 一种适用于堆叠式沙漏网络的深度学习加速器
Yin et al. Designs of approximate floating-point multipliers with variable accuracy for error-tolerant applications
CN115186802A (zh) 基于卷积神经网络的块稀疏方法、装置及处理单元
KR20210059623A (ko) 이진 및 삼진 신경망 추론을 위한 전자 장치 및 방법
CN112085154A (zh) 用于神经网络的压缩和推断加速的非对称量化
US10747845B2 (en) System, method and apparatus for computationally efficient data manipulation
US11748100B2 (en) Processing in memory methods for convolutional operations
CN112130805A (zh) 包括浮点加法器的芯片、设备及浮点运算的控制方法
Wong et al. Low bitwidth CNN accelerator on FPGA using Winograd and block floating point arithmetic
Udupa et al. IKW: Inter-kernel weights for power efficient edge computing
Seo et al. A photomosaic image generation method using photo annotation in a social network environment
CN115374396A (zh) 用于使用稀疏矩阵的分层表示来加速矩阵乘法计算的技术
CN112712461B (zh) 一种图像反卷积处理方法、装置及终端设备
Haghi et al. O⁴-DNN: A Hybrid DSP-LUT-Based Processing Unit With Operation Packing and Out-of-Order Execution for Efficient Realization of Convolutional Neural Networks on FPGA Devices
WO2021179117A1 (zh) 神经网络通道数搜索方法和装置
Kowsalya A novel cognitive Wallace compressor based multi operand adders in CNN architecture for FPGA