KR20230059726A - 심층 신경망 연산을 수행하는 방법 및 전자 장치 - Google Patents

심층 신경망 연산을 수행하는 방법 및 전자 장치 Download PDF

Info

Publication number
KR20230059726A
KR20230059726A KR1020220129039A KR20220129039A KR20230059726A KR 20230059726 A KR20230059726 A KR 20230059726A KR 1020220129039 A KR1020220129039 A KR 1020220129039A KR 20220129039 A KR20220129039 A KR 20220129039A KR 20230059726 A KR20230059726 A KR 20230059726A
Authority
KR
South Korea
Prior art keywords
layer
neural network
channel
feature map
extended
Prior art date
Application number
KR1020220129039A
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
Priority claimed from KR1020220115794A external-priority patent/KR20230059718A/ko
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to PCT/KR2022/016375 priority Critical patent/WO2023075372A1/ko
Priority to US18/078,199 priority patent/US20230129845A1/en
Publication of KR20230059726A publication Critical patent/KR20230059726A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • G06N20/10Machine learning using kernel methods, e.g. support vector machines [SVM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

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

Abstract

전자 장치가 신경망 연산을 수행하는 방법이 제공된다. 상기 방법은, 상기 심층 신경망의 레이어들 중 제1 레이어로 입력되는 피쳐맵에 대하여 상기 제1 레이어의 출력의 채널을 확장(extend)하는 제1 변형된 연산을 수행하되, 상기 제1 변형된 연산은, 공간-깊이 변형(space-to-depth transformation) 연산을 포함하는 것인, 단계; 상기 제1 레이어 및 제2 레이어 사이의 레이어들에 대응하는 신경망 연산을 채널-확장된 신경망 연산으로 수행하되, 상기 제2 레이어는, 상기 심층 신경망 내에서 상기 제1 레이어보다 이후의 레이어인 것인, 단계; 상기 제2 레이어로 입력되는 채널-확장된 피쳐맵에 대하여 상기 제2 레이어의 출력의 채널을 축소하는 제2 변형된 연산을 수행하되, 상기 제2 변형된 연산은, 깊이-공간 변형(depth-to-space transformation) 연산을 포함하는 것인, 단계; 및 상기 심층 신경망의 연산의 결과를 출력하는 단계를 포함할 수 있다.

Description

심층 신경망 연산을 수행하는 방법 및 전자 장치{METHOD AND ELECTRONIC DEVICE FOR PERFORMING DEEP NEURAL NETWORK OPERATIONS}
신경망 연산의 효율을 증가시키는 알고리즘을 적용하는, 전자 장치 및 그 동작 방법이 제공된다.
심층 신경망의 연산은, 연산을 수행하는 하드웨어 및 심층 신경망 모델의 아키텍처에 따라 좌우된다. 심층 신경망 연산의 효율을 증가시키기 위한 하드웨어의 성능은 시대에 따라 개선되고 있으며, 연산을 수행하기 위한 다양한 심층 신경망 모델 및 알고리즘 또한 개발되고 있다. 한편, 동일한 심층 신경망 모델을 사용하더라도, 심층 신경망 연산을 수행하는 하드웨어가 상이하면, 연산을 수행하는 하드웨어의 성능에 따라 연산의 속도, 하드웨어의 이용 효율 등이 상이할 수 있다. 심층 신경망 모델을 이용한 심층 신경망 연산에 있어서, 하드웨어의 사양에 따라 최적화된 연산을 수행하기 위한 다양한 알고리즘들이 최근 사용되고 있다.
본 개시의 일 측면에 따르면, 전자 장치가 심층 신경망(Deep Neural Network; DNN) 연산을 수행하는 방법이 제공될 수 있다. 상기 방법은, 상기 심층 신경망의 레이어들 중 제1 레이어로 입력되는 피쳐맵에 대하여 상기 제1 레이어의 출력의 채널을 확장(extend)하는 제1 변형된 연산을 수행하는 단계를 포함할 수 있다. 상기 제1 변형된 연산은, 공간-깊이 변형(space-to-depth transformation) 연산을 포함할 수 있다. 상기 방법은, 상기 제1 레이어 및 제2 레이어 사이의 레이어들에 대응하는 신경망 연산을 채널-확장된 신경망 연산으로 수행하는 단계를 포함할 수 있다. 상기 제2 레이어는, 상기 심층 신경망 내에서 상기 제1 레이어보다 이후의 레이어인 것일 수 있다. 상기 방법은, 상기 제2 레이어로 입력되는 채널-확장된 피쳐맵에 대하여 상기 제2 레이어의 출력의 채널을 축소하는 제2 변형된 연산을 수행할 수 있다. 상기 제2 변형된 연산은, 깊이-공간 변형(depth-to-space transformation) 연산을 포함할 수 있다. 상기 방법은, 상기 심층 신경망의 연산의 결과를 출력하는 단계를 포함할 수 있다.
본 개시의 일 측면에 따르면, 심층 신경망 연산을 수행하는 전자 장치가 제공될 수 있다. 상기 전자 장치는, 가속기, 하나 이상의 인스트럭션을 저장하도록 구성된 메모리, 및 상기 메모리에 저장된 상기 하나 이상의 인스트럭션을 실행하는 적어도 하나의 프로세서를 포함할 수 있다. 상기 적어도 하나의 프로세서는, 상기 하나 이상의 인스트럭션을 실행함으로써, 상기 심층 신경망의 레이어들 중 제1 레이어로 입력되는 피쳐맵에 대하여 상기 제1 레이어의 출력의 채널을 확장(extend)하는 제1 변형된 연산을 수행할 수 있다. 상기 제1 변형된 연산은, 공간-깊이 변형(space-to-depth transformation) 연산을 포함할 수 있다.
상기 적어도 하나의 프로세서는, 상기 하나 이상의 인스트럭션을 실행함으로써, 상기 가속기를 이용하여, 상기 제1 레이어 및 제2 레이어 사이의 레이어들에 대응하는 신경망 연산을 채널-확장된 신경망 연산으로 수행할 수 있다. 상기 제2 레이어는, 상기 심층 신경망 내에서 상기 제1 레이어보다 이후의 레이어인 것일 수 있다. 상기 적어도 하나의 프로세서는, 상기 하나 이상의 인스트럭션을 실행함으로써, 상기 제2 레이어로 입력되는 채널-확장된 피쳐맵에 대하여 상기 제2 레이어의 출력의 채널을 축소하는 제2 변형된 연산을 수행할 수 있다. 상기 제2 변형된 연산은, 깊이-공간 변형(depth-to-space transformation) 연산을 포함할 수 있다. 상기 적어도 하나의 프로세서는, 상기 하나 이상의 인스트럭션을 실행함으로써, 상기 심층 신경망의 연산의 결과를 출력할 수 있다.
본 개시의 일 측면에 따르면, 전자 장치가 심층 신경망 연산을 수행하는, 전술 및 후술하는 방법들 중 어느 하나를 실행시키기 위한 프로그램이 기록된 컴퓨터 판독 가능 기록매체를 제공할 수 있다.
도 1은 본 개시의 일 실시예에 따른 전자 장치가 심층 신경망 연산을 수행하는 특징을 개략적으로 설명하기 위한 도면이다.
도 2는 본 개시의 일 실시예에 따른 전자 장치가 심층 신경망 연산을 수행하는 방법을 설명하기 위한 흐름도이다.
도 3a는 본 개시의 일 실시예에 따른 전자 장치의 하드웨어 가속기를 이용한 신경망 연산 동작을 설명하기 위한 도면이다.
도 3b는 본 개시의 일 실시예에 따른 전자 장치의 하드웨어 가속기를 이용한 신경망 연산 동작을 더 설명하기 위한 도면이다.
도 4a는 본 개시의 일 실시예에 따른 전자 장치가 신경망 연산을 수행하는 알고리즘을 개략적으로 도시한 도면이다.
도 4b는 본 개시의 일 실시예에 따른 전자 장치가 수행하는 신경망 연산의 전반적인 아키텍처를 설명하기 위한 도면이다.
도 5a는 본 개시의 일 실시예에 따른 전자 장치가 수행하는 신경망 연산을 최적화하는 일 예시를 설명하기 위한 도면이다.
도 5b는 본 개시의 일 실시예에 따른 전자 장치가 수행하는, 채널-확장된 피쳐맵을 출력하는 최적화 연산을 설명하기 위한 도면이다.
도 5c는 도 5b를 구체적인 예시를 통해 설명하기 위한 도면이다.
도 5d는 본 개시의 일 실시예에 따른 전자 장치가 수행하는, 채널-확장된 피쳐맵을 입력으로 받는 최적화 연산을 설명하기 위한 도면이다
도 5e는 도 5d를 구체적인 예시를 통해 설명하기 위한 도면이다.
도 6은 본 개시의 일 실시예에 따른 신경망 연산의 제1 변형 및 제2 변형을 설명하기 위한 도면이다.
도 7은 본 개시의 일 실시예에 따른 전자 장치가 수행하는 심층 신경망 연산의 일 예를 설명하기 위한 도면이다.
도 8a는 내지 도 8c는 본 개시의 일 실시예에 따른 전자 장치가 수행하는 심층 신경망 연산이 컨볼루션 연산인 예시를 설명하기 위한 도면으로, 도 8a는 원본 컨볼루션 연산을 설명하기 위한 도면이다.
도 8b는 원본 컨볼루션 연산을 더 설명하기 위한 도면이다.
도 8c는 본 개시의 일 실시예에 따른 전자 장치가 컨볼루션 연산 수행을 위해 피쳐맵의 채널을 확장하는 것을 설명하기 위한 도면이다.
도 9는 본 개시의 일 실시예에 따른 전자 장치의 구성을 도시한 블록도이다.
본 개시에서, "a, b 또는 c 중 적어도 하나" 표현은 " a", " b", " c", "a 및 b", "a 및 c", "b 및 c", "a, b 및 c 모두", 혹은 그 변형들을 지칭할 수 있다.
본 명세서에서 사용되는 용어에 대해 간략히 설명하고, 본 개시에 대해 구체적으로 설명하기로 한다. 본 개시에서 사용되는 용어는 본 개시에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 발명의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 개시에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 개시의 전반에 걸친 내용을 토대로 정의되어야 한다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함할 수 있다. 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 용어들은 본 명세서에 기재된 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가질 수 있다.
명세서 전체에서 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다. 또한, 명세서에 기재된 "부", "모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다.
아래에서는 첨부한 도면을 참고하여 본 개시의 실시예에 대하여 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 개시는 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 개시를 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
도 1은 본 개시의 일 실시예에 따른 전자 장치가 심층 신경망 연산을 수행하는 특징을 개략적으로 설명하기 위한 도면이다.
도 1을 참조하면, 전자 장치(2000)는 입력 데이터(101)를 입력 받고, 전자 장치에 탑재된 심층 신경망 모델(102)을 이용하여 신경망 연산을 수행하고, 추론 결과 등을 나타내는 출력 데이터(103)를 획득할 수 있다. 일 실시예에 따른 전자 장치(2000)는, 스마트 폰, 스마트 TV, 스마트 가전, 모바일 디바이스, 영상 디스플레이 디바이스, 데스크탑 컴퓨터, 서버 등을 포함할 수 있다. 다만, 이에 한정되는 것은 아니며 심층 신경망 모델의 연산이 가능한, 모든 전자 장치를 포함할 수 있다.
일 실시예에 따른 전자 장치(2000)는 다양한 타입의 심층 신경망 모델(102)을 이용할 수 있으며, 이에 따라, 입력 데이터(101) 및 출력 데이터(103)도 다양할 수 있다. 예를 들어, 전자 장치(2000)는 심층 신경망 모델(102)을 이용하여, 이미지의 화질 개선, 객체 검출, 객체 분류, 화면 분류 등의 과제를 수행할 수 있다.
일 실시예에서, 전자 장치(2000)가 수행하는 신경망 연산은, 가속기를 이용한 병렬 연산(예를 들어, 곱셈 등)이 포함될 수 있다. 전자 장치(2000)가 신경망 연산을 수행할 때, 가속기 내에서 유의미한 값 계산에 활용되는 곱셈-누산 유닛(Multiply-accumulate unit; MAC unit)은 피쳐맵의 채널에 비례한다. 이에 따라, 피쳐맵의 채널이 곱셈-누산 유닛 보다 작은 경우, 일부의 MAC에서만 유효 연산이 수행되므로 전자 장치(2000)의 가속기의 활용 효율이 낮다. 전자 장치(2000)는 가속기 활용 효율을 높이기 위해, 신경망 연산의 입출력 데이터의 채널을 확장시킨 상태에서 연산을 수행할 수 있다.
일 실시예에서, 전자 장치(2000)는 심층 신경망 모델(102)에서 수행되는 연산을 변형할 수 있다. 예를 들어, 전자 장치(2000)는 심층 신경망 모델(102)의 레이어들 중 제1 레이어(105)로 입력되는 피쳐맵에 대하여, 제1 레이어(105)의 출력의 채널이 확장되도록 하는, 제1 변형된 연산을 수행할 수 있다. 제1 변형된 연산은 공간-깊이 변형 연산을 포함할 수 있으며, 제1 레이어(105)의 원래의 신경망 연산과 동등한 결과를 도출할 수 있는 연산을 포함할 수 있다.
전자 장치(2000)는 제1 레이어(105)로부터의 출력의 채널이 확장되면, 이후의 연산들은 채널-확장된 신경망 연산으로 수행할 수 있다. 전자 장치(2000)는 이후의 레이어들에서 수행되는 채널-확장된 신경망 연산을 종료하기 위해, 제2 레이어로 입력되는 채널-확장된 피쳐맵에 대하여 제2 레이어의 출력을 축소하는 제2 변형된 연산을 수행할 수 있다. 제2 변형된 연산은 깊이-공간 변형 연산을 포함할 수 있으며, 제2 레이어의 원래의 신경망 연산과 동등한 결과를 도출할 수 있는 연산을 포함할 수 있다.
이에 따라, 전자 장치(2000)가 변형된 연산을 적용하여 심층 신경망 모델(102)의 출력 데이터(103)를 획득하는 경우, 원래의 심층 신경망 모델(102)의 연산과 동일한 결과를 획득하면서도, 가속기 연산 효율을 증가시킬 수 있다.
도 2는 본 개시의 일 실시예에 따른 전자 장치가 심층 신경망 연산을 수행하는 방법을 설명하기 위한 흐름도이다.
본 개시에서, 신경망의 각각의 레이어들에 대응하는 신경망 연산은, 원본 연산 이라고도 지칭될 수 있으며, 채널-확장된 데이터들을 이용하여 수행하는 신경망 연산은 채널-확장된 신경망 연산이라고 지칭될 수 있다.
단계 S210에서, 전자 장치(2000)는 심층 신경망의 레이어들 중 제1 레이어로 입력되는 피쳐맵에 대하여 제1 레이어의 출력의 채널을 확장하는 제1 변형된 연산을 수행한다.
개시된 실시예에서, 심층 신경망은 머신러닝 기법에 활용되는 인공 신경망 알고리즘으로, 다수의 레이어들로 구성된다. 심층 신경망은 입력 레이어와 출력 레이어 사이에 다중의 은닉 레이어들을 포함할 수 있다.
일 실시예에서, 전자 장치(2000)는 심층 신경망 연산을 수행함에 있어서, 원본 연산과 동일한 연산 결과를 도출할 수 있는, 변형된 연산을 수행할 수 있다. 원본 연산이란, 심층 신경망의 모델의 변형 없이, 심층 신경망 모델의 아키텍처 및 알고리즘에 따라 결정된, 심층 신경망 모델 그대로의 연산을 말한다.
제1 변형된 연산은 심층 신경망의 레이어들 중 제1 레이어로 입력되는 피쳐맵에 대하여, 제1 레이어에 대응하는 연산을 수행하되, 제1 레이어의 출력의 채널을 확장(extend)하는 공간-깊이 변형(space-to-depth transformation) 연산일 수 있다. 공간-깊이 변형 연산이란, 공간 데이터를 깊이 데이터로 재배열하는 것을 말한다. 예를 들어, 공간-깊이 변형 연산은 가로*세로 포맷의 값을 갖는 공간 데이터에 대하여, 깊이 차원으로 확장되도록 데이터를 재배열함으로써, 가로*세로*깊이 포맷의 데이터가 되도록 변형할 수 있다.
일 실시예에서, 제1 레이어는 심층 신경망에 포함되는 레이어들 중 첫번째 레이어인 입력 레이어일 수 있다. 또는, 제1 레이어는 심층 신경망에 포함되는 은닉 레이어들 중 첫번째 레이어일 수 있다. 또는, 제1 레이어는 심층 신경망에 포함되는 은닉 레이어들 중 어느 한 레이어일 수 있다.
일 실시예에 따른 전자 장치(2000)는 제1 변형된 연산을 수행함으로써, 신경망 연산의 채널을 확장할 수 있다. 이에 따라, 신경망 연산을 수행하는 하드웨어 가속기의 연산기(예를 들어, 곱셉-누산 유닛(Multiply-accumulate unit; MAC unit) 등)의 이용 효율을 높일 수 있다.
단계 S220에서, 전자 장치(2000)는 제1 레이어 및 제2 레이어 사이의 레이어들에 대응하는 신경망 연산을, 채널-확장된 신경망 연산으로 수행한다.
일 실시예에서, 제2 레이어는, 심층 신경망 내에서 제1 레이어보다 이후의 레이어일 수 있다. 예를 들어, 제2 레이어는 심층 신경망에 포함되는 레이어들 중 마지막 레이어인 출력 레이어일 수 있다. 또는, 제2 레이어는 심층 신경망에 포함되는 은닉 레이어들 중 마지막 레이어일 수 있다.
일 실시예에 따른 전자 장치(2000)가 단계 S210에서 제1 변형된 연산을 수행한 결과, 제1 레이어로부터의 출력은 채널-확장된 출력이다. 구체적인 예를 들면, 제1 레이어로부터 채널-확장된 출력 피쳐맵이 출력된다. 이 경우, 제1 레이어로부터의 채널-확장된 출력 피쳐맵이 다음 레이어로 입력된다. 이에 따라, 제1 레이어 및 제2 레이어 사이의 레이어들에서는, 각각의 레이어들에 대응하는 신경망 연산이, 채널-확장된 신경망 연산으로 수행된다. 즉, 신경망 연산이 채널-확장된 상태에서 연쇄적으로 수행된다.
일 실시예에 따른 전자 장치(2000)가 제1 레이어 및 제2 레이어 사이의 레이어들에서 채널-확장된 신경망 연산을 수행한 결과, 제2 레이어로 입력되는 데이터는 채널-확장된 피쳐맵이다.
단계 S230에서, 전자 장치(2000)는 제2 레이어로 입력되는 채널-확장된 피쳐맵에 대하여, 제2 레이어의 출력의 채널을 축소하는 제2 변형된 연산을 수행한다.
일 실시예에서, 제2 변형된 연산은 심층 신경망의 레이어들 중 제2 레이어로 입력되는 채널-확장된 피쳐맵에 대하여, 제2 레이어에 대응하는 연산을 수행하되, 제2 레이어의 출력의 채널을 축소하는 깊이-공간 변형(depth-to-space transformation) 연산일 수 있다. 깊이-공간 변형 연산이란, 깊이 데이터를 공간 데이터로 재배열하여 깊이 차원을 축소 및/또는 제거하는 것을 말한다.
일 실시예에 따른 전자 장치(2000)가 제2 변형된 연산을 수행한 결과, 제2 레이어로부터의 출력은 채널-감소된 출력이다. 이 경우, 제2 레이어로부터의 출력은, 전술한 제1 변형된 연산, 채널-확장된 신경망 연산 및 제2 변형된 연산을 하지 않은, 심층 신경망의 원래의 제2 레이어의 출력과 동일한 출력일 수 있다.
단계 S240에서, 전자 장치(2000)는 심층 신경망의 연산의 결과를 출력한다.
일 실시예에서, 제2 레이어는 심층 신경망의 출력 레이어일 수 있으며, 제2 레이어는 심층 신경망에 포함되는 히든 레이어들 중 하나로써, 제2 레이어 이후에 출력 레이어가 위치할 수 있고, 제2 레이어 이후에 하나 이상의 히든 레이어 및 출력 레이어가 위치할 수 있다. 일 실시예에 따라 전자 장치(2000)가 제2 변형된 연산을 수행하여 제2 레이어로부터 심층 신경망의 출력을 획득하거나, 제2 레이어 이후에 위치하는 출력 레이어로부터 심층 신경망의 출력을 획득하는 경우, 전자 장치(2000)가 획득한 심층 신경망 연산의 결과는, 심층 신경망의 원본 연산 결과와 동일한 것일 수 있다. 여기서, 원본 연산 결과는 전술한 제1 변형된 연산, 채널-확장된 신경망 연산 및 제2 변형된 연산을 하지 않은, 심층 신경망의 원래의 연산 결과를 말한다.
일 실시예에서, 심층 신경망 연산의 출력은, 심층 신경망의 타입에 따라 다양할 수 있다. 예를 들어, 심층 신경망의 타입이 컨볼루션 신경망이고, 객체 분류(classification)를 위한 모델인 경우, 심층 신경망 연산의 출력은 객체 분류 결과(예를 들어, 클래스 확률 등)일 수 있다.
도 2의 각각의 단계들을 설명하기 위한 후술되는 도면들을 참조하면 도 2의 각각의 단계들의 동작이 보다 명확하게 이해될 것이다.
도 3a는 본 개시의 일 실시예에 따른 전자 장치의 하드웨어 가속기를 이용한 신경망 연산 동작을 설명하기 위한 도면이다.
도 3a 및 3b를 설명함에 있어서, 신경망 연산이 컨볼루션 연산인 것을 예시로 설명한다. 다만, 본 개시의 신경망 연산은 컨볼루션 연산에 한정되는 것은 아니다.
일 실시예에 따른 전자 장치(2000)는 하드웨어 가속기를 포함할 수 있다. 하드웨어 가속기는 예를 들어, CPU(Central Processing Units), GPU(Graphics Processing Units), FPGA(Field-Programmable Gate Arrays), SoC(System-on-Chips), ASIC(Application-Specific Integrated Circuits), VPC(Vision Processing Units), 뉴로모픽 IC 등일 수 있으나, 이에 한정되는 것은 아니다.
전자 장치(2000)의 가속기에는 데이터 연산을 처리할 수 있는 곱셈-누산 유닛 (Multiply-accumulate unit; MAC unit)(302)이 포함될 수 있다. 본 개시에서, 전자 장치(2000)에 포함되는 MAC 유닛(302)들의 집합은 곱셈-누산 처리 유닛(MAC Processing Unit; MPU)(300)이라고 지칭될 수 있다. 다만, MPU(300)는 설명의 편의를 위해 본 개시에서 선정한 용어일 뿐, 전자 장치(2000)의 구성으로써 한정하기 위한 것은 아니다.
도 3a를 참조하면, 일 실시예에 따른 전자 장치(2000)의 MPU(300)는, 입력 피쳐맵(310)과 컨볼루션 커널(330)의 컨볼루션 연산을 통해, 출력 피쳐맵(320)을 출력한다. 보다 구체적이면서 직관적인 예시를 들면, 입력 피쳐맵(310)에 포함되는 피쳐 값들(312)과 컨볼루션 커널(330)에 포함되는 커널 값들(332)의 곱셈 및 덧셈 연산이 수행되어, 출력 피쳐 값(322)이 획득된다.
일 실시예에서, 전자 장치(2000)의 가속기 사양에 따라 MPU(300)의 MAC 유닛(302)들의 수가 결정된다. 예를 들어, MAC 유닛(302)들의 수가 N개인 경우, MPU(300)에서는 N개의 병렬 연산이 수행될 수 있다.
도 3a의 컨볼루션 연산을 예로 들면, 입력 피쳐맵(310) 및 컨볼루션 커널(330)의 채널 수 만큼 병렬 연산이 축적된다. 이 때, 채널 수가 MPU(300)의 MAC 유닛(302)들의 수와 동일하면, MPU(300)의 모든 MAC 유닛(302)들이 사용되고, 채널 수가 MPU(300)의 MAC 유닛(302)들의 수를 초과하면, MAC 유닛(302)들의 수만큼 연산을 수행하고, MAC 유닛(302)들의 수를 초과하는 채널들은 다시 나머지 연산을 수행하여 이전 연산 결과와 병합하므로, 마찬가지로 MPU(300)의 모든 MAC 유닛(302)들이 사용될 수 있다.
한편, 채널 수가 상대적으로 적은 피쳐맵에 대한 연산의 경우에는, MPU(300)의 모든 MAC 유닛(302)들이 사용되지 않는다. 이를 도 3b를 참조하여 더 설명한다.
도 3b는 본 개시의 일 실시예에 따른 전자 장치의 하드웨어 가속기를 이용한 신경망 연산 동작을 더 설명하기 위한 도면이다.
도 3b를 참조하면, 도 3a에서 전술한 컨볼루션 연산의 예시와 동일하나, 입력 피쳐맵(310) 및 컨볼루션 커널(330)의 채널이 도 3a에서 예시로 든 입력 피쳐맵(310) 및 컨볼루션 커널(330)의 채널보다 작음을 알 수 있다. 예를 들어, 도3b의 입력 피쳐맵(310) 및 컨볼루션 커널(330)의 채널은 2채널이고, 도 3a의 입력 피쳐맵(310) 및 컨볼루션 커널(330)의 채널은 N채널이며, N은 2보다 큰 수일 수 있다.
MPU(300)에서 수행되는, 2채널의 입력 피쳐맵(310)과 컨볼루션 커널(330)의 컨볼루션 연산의 일부를 구체적으로 살펴보기로 한다. 입력 피쳐맵(310)의 채널 1의 피쳐 값이 컨볼루션 커널의 채널 1의 커널 값과 곱해지고, 입력 피쳐맵(310)의 채널 2의 피쳐 값은 컨볼루션 커널(330)의 채널 2의 커널 값과 곱해진 뒤, 두 곱 결과가 더해지고, 출력 피쳐 값(322)이 획득된다. 즉, 입력 피쳐맵(310)과 컨볼루션 커널(330)이 2채널이므로, MPU(300) MAC 유닛(302)들 중 2개만이 유의미한 연산에 사용된다. 이를 일반화하면, 채널 수가 작은 신경망 연산의 경우, MPU(300)의 연산 효율이 낮아짐을 의미한다. 일 실시예에 따른 전자 장치(2000)는, 알고리즘을 적용함으로써 채널 변형 연산 및 채널-확장된 신경망 연산을 수행하여, MPU(300)의 MAC 유닛(302)들의 활용도를 증가시킴으로써, 연산 효율을 향상시킬 수 있다.
도 4a는 본 개시의 일 실시예에 따른 전자 장치가 신경망 연산을 수행하는 알고리즘을 개략적으로 도시한 도면이다.
도 4a를 참조하면, 일 실시예에 따른 전자 장치(2000)의 신경망 연산의 일부를 설명하기 위한 블록 400이 도시되어 있다. 블록 400에는 원본 입력 피쳐맵(410), 원본 출력 피쳐맵(420), 채널-확장된 입력 피쳐맵(430) 및 채널-확장된 출력 피쳐맵(440)이 도시되어 있으며, 피쳐맵들 간의 연산 관계가 도시되어 있다.
일 실시예에서, 원본 입력 피쳐맵(410)은, HI*WI의 사이즈를 갖고, 채널 수는 CI일 수 있다.
일 실시예에서, 전자 장치(2000)는 변형된 연산을 수행하여 채널-확장된 입력 피쳐맵(430)을 획득할 수 있다. 변형된 연산은 채널을 확장(extend)하는 공간-깊이 변형(space-to-depth transformation) 연산(404)일 수 있다. 예를 들어, 전자 장치(2000)는 원본 입력 피쳐맵(410)의 피쳐 값들이 재배열 되어 생성된, 채널-확장된 입력 피쳐맵(430)을 획득할 수 있다. 채널-확장된 입력 피쳐맵(430)은, (HI/BH)*(WI/BW)의 사이즈를 갖고 채널 수가 BH*BW*CI일 수 있다.
일 실시예에서, 전자 장치(2000)는 채널-확장된 입력 피쳐맵(430)을 이용하여, 채널-확장된 신경망 연산(406)을 수행하고, 채널-확장된 출력 피쳐맵(440)을 획득할 수 있다. 채널-확장된 출력 피쳐맵(440)은, (Ho/BH)*(Wo/BW)의 사이즈를 갖고 채널 수가 BH*BW*Co일 수 있다.
일 실시예에서, 전자 장치(2000)는 또다른 변형된 연산을 수행하여 원본 출력 피쳐맵(420)을 획득할 수 있다. 변형된 연산은 채널을 축소하는 깊이-공간 변형(depth-to-space transformation) 연산(408)일 수 있다. 예를 들어, 전자 장치(2000)는 채널-확장된 출력 피쳐맵(440)의 피쳐 값들이 재배열 되어 생성된, 원본 출력 피쳐맵(420)을 획득할 수 있다. 원본 출력 피쳐맵(420)은, HO*WO의 사이즈를 갖고, 채널 수는 CO일 수 있다.
일 실시예에서, 전자 장치(2000)가 공간-깊이 변형(space-to-depth transformation) 연산(404), 채널-확장된 신경망 연산(406) 및 깊이-공간 변형(depth-to-space transformation) 연산(408)을 수행한 결과는, 원본 입력 피쳐맵(410)으로부터 원본 출력 피쳐맵(420)을 획득하는 원본 연산(402)의 결과와 동일할 수 있다. 다만 이 경우, 연산 결과가 동일하더라도, 연산 방법에 따라 신경망 연산의 채널이 상이하므로, MPU에서 유의미한 값을 획득하기 위해 사용되는 MAC 유닛의 수는 상이할 수 있다.
도 4b는 본 개시의 일 실시예에 따른 전자 장치가 수행하는 신경망 연산의 전반적인 아키텍처를 설명하기 위한 도면이다.
도 4b는 도 4a를 추가적으로 설명하기 위한 도면으로, 일 실시예에 따른 신경망 연산이 연쇄적으로 수행되는 것이 도시되어 있다. 즉, 도 4a에서 설명한 신경망 연산 알고리즘을 나타낸 블록 400 외에, 심층 신경망 모델에서 연쇄적으로 수행되는 신경망 연산들이 더 도시되어 있다. 도 4b에서, 블록 400은 도 4a의 블록 400에 대응될 수 있다. 구체적으로, 도 4b의 블록 400에는 피쳐맵 0(FM0), 피쳐맵 1(FM1), 채널-확장된 피쳐맵 0(FM0') 및 채널-확장된 피쳐맵 1(FM1')이 도시되어 있는데, 이는 순서대로 도 4a의 원본 입력 피쳐맵(410), 원본 출력 피쳐맵(420), 채널-확장된 입력 피쳐맵(430) 및 채널-확장된 출력 피쳐맵(440)을 일반화하여 도시한 것이다.
도 4b를 참조하면, 심층 신경망 연산의 연산 결과를 획득하는 방법으로써, 원본 경로(450) 및 채널-확장된 경로(460)가 있을 수 있다.
일 실시예에서, 심층 신경망 모델의 각각의 레이어들에 대응하는 원래의 신경망 연산은, 원본 연산이라고 지칭될 수 있다. 이 경우, 원본 경로(450)는 원본 연산들을 연쇄적으로 수행함으로써 심층 신경망 연산의 연산 결과를 획득하는 경로이다.
일 실시예에서, 채널-확장된 데이터들을 이용하여 수행하는 신경망 연산은 채널-확장된 신경망 연산으로 지칭될 수 있다. 이 경우, 채널-확장된 경로(460)는 채널을 확장하는 변형된 연산, 채널-확장된 신경망 연산 및 채널을 축소하는 변형된 연산을 연쇄적으로 수행함으로써 심층 신경망 연산의 연산 결과를 획득하는 경로이다. 즉, 일 실시예에 따른 전자 장치(2000)는 채널-확장된 경로(460)에 따른 연산을 수행하여 원본 경로(450)에 따른 연산과 동일한 결과를 획득할 수 있다. 다만, 채널-확장된 신경망 연산은 설명의 편의를 위해 본 개시에서 선정한 단어일 뿐, 연산의 본질이 그 용어에 한정되는 것은 아니다.
도 4b의 예시에서는, 원본 경로(450)의 연산들은 1번째 원본 연산(Op1), 2번째 원본 연산(Op2), ..., N-1번째 원본 연산(Op(N-1)) 및 N번째 원본 연산(OpN)을 포함할 수 있다. 이 경우, 원본 경로(450)의 연산 과정에서 획득되는 피쳐맵들은, 채널이 확장되지 않은 원본 피쳐맵들이다.
또한, 채널-확장된 경로(460)의 연산들은, 채널을 확장하는 제1 변형된 연산, 채널-확장된 신경망 연산들(1번째 채널-확장된 연산(Op1'), 2번째 채널-확장된 연산(Op2'), ..., N-1번째 채널-확장된 연산(Op(N-1)') 및 N번째 채널-확장된 연산(OpN')) 및, 채널을 축소하는 제2 변형된 연산을 포함할 수 있다. 이 경우, 채널-확장된 경로(460)의 채널-확장된 신경망 연산 과정에서 획득되는 피쳐맵들은, 채널-확장된 피쳐맵들이다.
도 5a는 본 개시의 일 실시예에 따른 전자 장치가 수행하는 신경망 연산을 최적화하는 일 예시를 설명하기 위한 도면이다.
도 5a 내지 도 5e를 설명함에 있어서, 신경망 연산이 컨볼루션 연산인 것을 예시로 설명한다. 다만, 본 개시의 신경망 연산은 컨볼루션 연산에 한정되는 것은 아니다. 컨볼루션 신경망은 컨볼루션 레이어, 풀링 레이어, 완전 연결 레이어 등을 포함할 수 있다.
일 실시예에서, 전자 장치(2000)는 도 4b에서 설명한 채널-확장된 경로(460)에 포함되는 연산들을 최적화하기 위한 다양한 알고리즘을 적용할 수 있다.
일 실시예에서, 전자 장치(2000)는 변형된 연산 및/또는 채널-확장된 신경망 연산에 최적화 알고리즘을 적용할 수 있다. 본 개시에서는 최적화 알고리즘의 예시로, 제1 최적화, 제2 최적화, 제3 최적화 및 제4 최적화를 설명한다. 다만, 최적화는 이에 한정되는 것은 아니며, 본 개시의 예시로부터 도출되거나 응용 가능한 모든 최적화 방법을 포함할 수 있다.
도 5a에 도시된 신경망 연산은, 도 4b의 예시에서 제1 최적화 및 제4 최적화가 적용된 것을 도시한 것이다. 도 5a의 전체 연산 흐름을 통해 제1 최적화 및 제4 최적화를 간략하게 먼저 설명하고, 나머지 최적화들에 대해서 다시 설명한다.
일 실시예에서, 전자 장치(2000)는 제1 최적화(500)를 적용할 수 있다. 제1 최적화(500)는, 원본 피쳐맵 0(FM0)(510)을 입력으로 하고, 직접적으로 채널-확장된 피쳐맵 1(FM1')(520-2)을 출력함으로써 성능 이득을 얻는 것이다. 채널-확장된 피쳐맵 1(FM1')(520-2)는 깊이-공간 변형(depth-to-space transformation)을 통해 원본 피쳐맵 1(FM1)(520-1)으로 변환될 수 있다. 여기서, 원본 피쳐맵 0(FM0)(510)을 채널-확장된 피쳐맵 0(FM0')으로 채널을 확장하는 변형된 연산 및, 채널-확장된 피쳐맵 0(FM0')으로부터 채널-확장된 피쳐맵 1(FM1')(520-2)을 획득하는 채널-확장된 신경망 연산이 하나의 최적화된 연산으로 수행될 수 있다. 본 개시에서는 이를 출력 채널-확장된 신경망 연산이라고 지칭한다. 다만, 출력 채널-확장된 신경망 연산이라는 용어는 설명의 편의를 위해 본 개시에서 선정한 단어일 뿐, 연산의 본질이 그 용어에 한정되는 것은 아니다. 이러한 제1 최적화(500)의 구체적인 예시는, 도 5b에 대한 설명에서 더 서술하기로 한다.
일 실시예에서, 전자 장치(2000)는 컨볼루션 신경망의 레이어들 중 제1 레이어로 입력되는 피쳐맵 0(FM0)(510)에 대하여 출력 채널-확장된 신경망 연산(Op1')(512)을 수행할 수 있다. 출력 채널-확장된 신경망 연산(512) 결과, 채널-확장된 피쳐맵 1(FM1')(520-2)이 획득될 수 있다.
일 실시예에서, 제1 최적화(500)를 위한 출력 채널-확장된 신경망 연산(512)이 수행되면, 전자 장치(2000)는 이후의 신경망 연산들을 채널-확장된 신경망 연산(560)으로 수행할 수 있다. 전자 장치(2000)는 제1 레이어와 제2 레이어 사이의 레이어들에 대응하는 신경망 연산을 채널-확장된 신경망 연산(560)으로 수행함으로써, 채널-확장된 상태에서 입출력 데이터가 연쇄적으로 신경망 레이어들에 입력 및 출력되도록 할 수 있다. 예를 들어, 채널-확장된 신경망 연산(560)은 2번째 채널-확장된 연산(Op2'), ..., N-1번째 채널-확장된 연산(Op(N-1)') 및 N번째 채널-확장된 연산(OpN')을 포함할 수 있다. 채널-확장된 신경망 연산(560) 과정에서 획득되는 피쳐맵들은, 채널-확장된 피쳐맵들이다. 예를 들어, 채널-확장된 피쳐맵 N-1(FM(N-1)')(530-2) 및 채널-확장된 피쳐맵 N(FMN')(540-2) 일 수 있다.
일 실시예에서, 전자 장치(2000)는 컨볼루션 신경망의 레이어들 중 제2 레이어로 입력되는 채널-확장된 피쳐맵 N(FMN')(550)에 대하여, 제2 변형된 연산(560)을 수행할 수 있다. 제2 변형된 연산(542)은, 제2 레이어의 출력의 채널을 축소하는 깊이-공간 변형(depth-to-space transformation) 연산일 수 있다. 제2 변형된 연산(542) 결과, 채널이 축소된, 원본 피쳐맵 N(FMN)(540-1)이 획득될 수 있다. 이 경우, 획득된 원본 피쳐맵 N(540-1)은 컨볼루션 신경망의 원본 연산(550)의 결과와 동일하다. 원본 연산(550)은 예를 들어, 1번째 원본 연산(Op1), 2번째 원본 연산(Op2), ..., N-1번째 원본 연산(Op(N-1)) 및 N번째 원본 연산(OpN)을 포함할 수 있다. 이 경우, 원본 연산(550) 과정에서 획득되는 피쳐맵들은, 채널이 확장되지 않은 원본 피쳐맵들이다.
일 실시예에서, 전자 장치(2000)는 원본 피쳐맵 N(540-1)을 획득하면, 신경망 연산의 결과를 출력할 수 있다. 일 실시예에서, 신경망 연산의 결과는 피쳐 값 및/또는 추론 결과 등을 모두 포함할 수 있다. 예를 들어, 전술한 방법에 따른 신경망 연산의 결과인 피쳐 값이 제2 레이어 이후의 또다른 레이어를 거치며 신경망 연산이 더 수행될 수 있고, 신경망 연산의 결과에 기초하여 신경망 모델의 추론 결과가 출력될 수 있다. 구체적으로, 도 5a에 도시된 것은 컨볼루션 신경망이므로, 전자 장치(2000)는 원본 피쳐맵 N(540-1)의 피쳐 값들을 완전 연결 레이어들을 거치게 한 후, 이미지 분류 결과가 출력되도록 할 수 있다.
한편, 전자 장치(2000)는 심층 신경망의 타입에 기초하여, 제1 및/또는 제2 변형된 연산을 다른 연산으로 대체할 수 있다. 예를 들어, 심층 신경망이 컨볼루션 신경망인 경우, 전자 장치(2000)는 공간-깊이 변형 연산을 포함하는 제1 변형된 연산(520)을 컨볼루션 연산으로 대체할 수 있다. 즉, 전자 장치(2000)는 제3 최적화를 적용할 수 있다. 컨볼루션 신경망의 경우, 제3 최적화는 컨볼루션 연산 방식을 적용하여 채널-확장된 피쳐맵이 획득되도록 하는 것일 수 있다. 또한, 전자 장치(2000)는 깊이-공간 변형 연산을 포함하는 제2 변형된 연산(542)을 전치(transposed) 컨볼루션 연산으로 대체할 수 있다. 즉, 전자 장치(2000)는 제4 최적화를 적용할 수 있으며, 컨볼루션 신경망의 경우 제4 최적화는 전치 컨볼루션 연산 방식을 적용하여 채널-축소된 피쳐맵이 획득되도록 하는 것일 수 있다. 이에 대한 추가적인 설명은 후술하기로 한다.
일 실시예에 따른 전자 장치(2000)는 심층 신경망의 타입에 대응하는 변형된 연산을 선택 및 적용함으로써, 전자 장치(2000)의 연산 효율을 더 증가시킬 수 있다. 예를 들어, 채널 확장을 위해 컨볼루션 연산(제3 최적화)을 사용하고, 채널 축소를 위해 전치 컨볼루션 연산(제4 최적화)을 사용하면, 병렬 연산이 수행됨에 따라 가속기의 MAC 유닛들의 활용도를 증가시킬 수 있다.
제1 최적화(500)는 도 5b 및 도 5c를 이용하여 더 설명하고, 제2 최적화는 도 5d 및 도 5e를 이용하여 더 설명한다.
일 실시예에서, 전자 장치(2000)는 제3 최적화 및 제4 최적화를 이용하여, 연산의 오버헤드를 감소시킬 수 있다.
일 실시예에서, 제3 최적화는 제1 변형된 연산에 컨볼루션 연산 방식을 적용하는 것을 포함할 수 있다. 전술한 것과 같이, 제1 변형된 연산은, 공간-깊이 변형 연산을 포함할 수 있는데, 여기서, 공간-깊이 변형 연산이 동치인 2D 컨볼루션으로 대체될 수 있다. 공간-깊이 변환 연산은 메모리(예를 들어, RAM 등)에 저장된 데이터의 순서를 바꾸는 연산이다. 이러한 공간-깊이 변환 연산은 일반적으로 심층 신경망 가속기에 최적화된 컨볼루션이나 액티베이션 등의 연산이 아니기 때문에, 심층 신경망 가속기에서 최적화된 효율로 연산이 수행되지 않는다. 전자 장치(2000)는 제1 변형된 연산에 컨볼루션 연산 방식을 적용하는 제3 최적화를 이용함으로써, 심층 신경망 가속기에서 빠르게 연산 가능한 컨볼루션 연산으로 제1 변형된 연산과 동일한 결과를 얻으면서도, 연산의 오버헤드를 감소시킬 수 있다.
일 실시예에서, 제4 최적화는 제2 변형된 연산에 전치(transposed) 컨볼루션 연산 방식을 적용하는 것을 포함할 수 있다. 전술한 것과 같이, 제2 변형된 연산은, 깊이-공간 변형 연산을 포함할 수 있는데, 여기서 깊이-공간 변형 연산이 동치인 2D 전치 컨볼루션으로 대체될 수 있다. 깊이-공간 변환 연산 또한 메모리(예를 들어, RAM 등)에 저장된 데이터의 순서를 바꾸는 연산이다. 전자 장치(2000)는 제2 변형된 연산(542)에 전치 컨볼루션 연산 방식을 적용하는 제4 최적화를 이용함으로써, 심층 신경망 가속기에서 빠르게 연산 가능한 전치 컨볼루션 연산으로 제2 변형된 연산(542)과 동일한 결과를 얻으면서도, 연산의 오버헤드를 감소시킬 수 있다.
한편, 도 5a에서는 제1 최적화 및 제4 최적화가 적용된 것을 예시로 설명하였으나, 전자 장치(2000)의 심층 신경망 연산의 최적화는 이에 한정되는 것은 아니다. 전자 장치(2000)는 제1 최적화 내지 제4 최적화 중 가능한 모든 조합을 선택적으로 적용할 수 있다. 예를 들어, 도 5a의 예시에서, 제2 변형된 연산(542)이 수행되도록 하는 대신에, 제2 최적화를 적용함으로써, 채널-확장된 피쳐맵 N-1(FM(N-1)')(530-2)로부터 바로 원본 피쳐맵(540-1)이 획득되도록 할 수 있다.
도 5b는 본 개시의 일 실시예에 따른 전자 장치가 수행하는, 채널-확장된 피쳐맵을 출력하는 최적화 연산을 설명하기 위한 도면이다.
도 5b를 참조하면, 도 5a의 심층 신경망 연산에서의 제1 최적화(500) 부분만이 일반화되어 도시되어 있다.
일 실시예에서, 전자 장치(2000)가 원본 입력 피쳐맵(510-1)에 대하여 원본 신경망 연산을 수행하면, 원본 출력 피쳐맵(520-3)이 획득될 수 있다.
일 실시예에서, 전자 장치(2000)가 원본 입력 피쳐맵(510-1)에 대하여 출력 채널-확장된 신경망 연산(512)을 수행하면, 채널-확장된 출력 피쳐맵(520-4)이 획득될 수 있다. 여기서, 원본 출력 피쳐맵(520-3) 및 채널-확장된 출력 피쳐맵(520-4)은 공간-깊이 변형 연산 또는 깊이-공간 변형 연산을 통해 상호적으로 전환될 수 있다.
일 실시예에 따른 전자 장치(2000)가 원본 입력 피쳐맵(510-1)에 대하여 출력 채널-확장된 신경망 연산(512)을 수행하면 채널-확장된 출력 피쳐맵(520-4)이 획득되므로, 출력 채널-확장된 신경망 연산(512)에는 공간-깊이 변형 연산의 역할이 포함될 수 있다. 또한, 원본 입력 피쳐맵(510-1)을 이용하여 채널-확장된 출력 피쳐맵(520-4)을 획득하는 것이므로(즉, 원본 연산과 동일한 값을 얻기 위한 것이므로), 출력 채널-확장된 신경망 연산(512)에는 신경망 레이어에 대응하는 신경망 연산(예를 들어, 컨볼루션 연산, 요소별 연산 등)의 역할이 포함될 수 있다.
일 실시예에서, 전자 장치(2000)는 출력 채널-확장된 신경망 연산(512)을 적용함으로써, 공간-깊이 변환 없이 바로 채널-확장된 출력 피쳐맵(520-4)을 획득하므로, 연산의 오버헤드를 감소시켜 신경망 연산을 최적화할 수 있다.
도 5c는 도 5b를 구체적인 예시를 통해 설명하기 위한 도면이다.
일 실시예에서, 신경망 연산이 컨볼루션 연산인 경우, 전자 장치(2000)는 원본 커널(이하, 커널 1)(511)을 변형하여 변형된 커널(이하, 커널 2)(513)를 획득할 수 있다. 여기서, 커널 1(511)은 기존에 학습된 신경망 모델의 커널이며, 커널 2(513)는 원본 입력 피쳐맵(510-1)에 대하여 원본 컨볼루션 연산과 동일한 값을 획득하면서, 채널-확장된 출력 피쳐맵(520-4)을 획득하기 위한 커널이다.
이 경우, 커널 1(511)과 커널 2(513)의 관계는 도 5c에 도시된 수학식으로 표현될 수 있다. 도 5c의 수학식의 구체적인 도출은 아래와 같다.
Given,
IFM depth: Di
Original OFM depth: Do
OFM S2D’s block size: Bh, Bw (height and width respectively)
Original convolution:
Stride: STRh1, STRw1
Padding: PADt1, PADb1, PADl1, PADr1 (top, bottom, left and right respectively)
Kernel size: Kh1, Kw1
Kernel data: KER1 as 4D tensor in shape of [Kh1,Kw1,Di,Do]
Output channel extended convolution can be set as following:
Stride: STRh2, STRw2 where STRh2=STRh1*Bh, STRw2=STRw1*Bw
Padding: PADt2, PADb2, PADl2, PADr2 where PADt2=PADt1, PADb2=PADb1, PADl2=PADl1, PADr2=PADr1
Kernel size: Kh2, Kw2 where Kh2=Kh1+STRh1*(Bh-1), Kw2=Kw1+STRw1*(Bw-1)
Kernel data: KER2 as 4D tensor in shape of [Kh2,Kw2,Di,Do Bh Bw]
Figure pat00001
Figure pat00002
Figure pat00003
도 5d는 본 개시의 일 실시예에 따른 전자 장치가 수행하는, 채널-확장된 피쳐맵을 입력으로 받는 최적화 연산을 설명하기 위한 도면이다.
도 5d를 참조하면, 전술한 실시예들에서 설명한 제1 최적화(500)과 유사한 기능을 하는, 제2 최적화가 일반화되어 도시되어 있다.
제2 최적화(500)는, 채널-확장된 입력 피쳐맵(530-4)을 입력으로 하고, 직접적으로 원본 출력 피쳐맵(540-2)을 출력함으로써 성능 이득을 얻는 것이다. 채널-확장된 입력 피쳐맵(530-4)는 공간-깊이 변형(space-to-depth transformation)을 통해 원본 입력 피쳐맵(530-3)으로 변환될 수 있다. 여기서, 채널-확장된 입력 피쳐맵(530-4)로부터 채널-확장된 출력 피쳐맵을 획득하는 채널-확장된 신경망 연산 및, 채널-확장된 출력 피쳐맵을 원본 출력 피쳐맵(540-2)으로 채널을 감소시키는 변형된 연산이 하나의 최적화된 연산으로 수행될 수 있다. 본 개시에서는 이를 입력 채널-확장된 신경망 연산이라고 지칭한다. 다만, 입력 채널-확장된 신경망 연산이라는 용어는 설명의 편의를 위해 본 개시에서 선정한 단어일 뿐, 연산의 본질이 그 용어에 한정되는 것은 아니다.
일 실시예에서, 전자 장치(2000)가 원본 입력 피쳐맵(530-3)에 대하여 원본 신경망 연산을 수행하면, 원본 출력 피쳐맵(540-2)이 획득될 수 있다. 여기서, 원본 입력 피쳐맵(530-3) 및 채널-확장된 입력 피쳐맵(530-4)은 공간-깊이 변형 연산 또는 깊이-공간 변형 연산을 통해 상호적으로 전환될 수 있다.
일 실시예에서, 전자 장치(2000)가 채널-확장된 입력 피쳐맵(530-4)에 대하여 입력 채널-확장된 신경망 연산(544)을 수행하면, 원본 출력 피쳐맵(540-2)이 획득되므로, 입력 채널-확장된 신경망 연산(544)에는 깊이-공간 변형 연산의 역할이 포함될 수 있다. 또한, 채널-확장된 입력 피쳐맵(530-4)을 이용하여 원본 출력 피쳐맵(540-2)을 획득하는 것이므로(즉, 원본 연산과 동일한 값을 얻기 위한 것이므로), 변형된 연산은 신경망 레이어에 대응하는 신경망 연산(예를 들어, 컨볼루션 연산, 요소별 연산 등)의 역할이 포함될 수 있다.
일 실시예에서, 전자 장치(2000)는 입력 채널-확장된 신경망 연산(544)을 적용함으로써, 깊이-공간 변환 없이 바로 원본 출력 피쳐맵(540-2)을 획득하므로, 연산의 오버헤드를 감소시켜 신경망 연산을 최적화할 수 있다.
도 5e는 도 5d를 구체적인 예시를 통해 설명하기 위한 도면이다.
일 실시예에서, 신경망 연산이 컨볼루션 연산인 경우, 전자 장치(2000)는 원본 커널(이하, 커널 1)(511)을 변형하여 변형된 커널(이하, 커널 2)(513)를 획득할 수 있다. 여기서, 커널 1(511)은 기존에 학습된 신경망 모델의 커널이며, 커널 2(513)는 채널-확장된 입력 피쳐맵(530-4)에 대하여 원본 컨볼루션 연산과 동일한 값을 획득하면서, 원본 출력 피쳐맵(540-2)을 획득하기 위한 커널이다.
이 경우, 커널 1(511)과 커널 2(513)의 관계는 도 5e에 도시된 수학식으로 표현될 수 있다. 도 5e의 수학식의 구체적인 도출은 아래와 같다.
Given,
Original IFM depth: Di
IFM S2D’s block size: Bh, Bw (height and width respectively)
OFM depth: Do
Original convolution:
Stride: STRh1, STRw1
Padding: PADt1, PADb1, PADl1, PADr1 (top, bottom, left and right respectively)
Kernel size: Kh1, Kw1
Kernel data: KER1 as 4D tensor in shape of [Kh1,Kw1,Di,Do]
(Requirement) Input channel extension for convolution can only be found when:
Bh divides STRh1
Bw Divides STRw1
Input channel extended convolution can be set as following:
Stride: STRh2, STRw2 where STRh2=STRh1/Bh, STRw2=STRw1/Bw
Padding: PADt2, PADb2, PADl2, PADr2 where PADt2=[PADt1/Bh], PADb2=[PADb/Bh], PADl2=[PADl1/Bw], PADr2=[PADr1/Bw]
Kernel size: Kh2, Kw2 where Kh2=[(Kh1-1-PADt1)/Bh]-[-PADt1/Bh]+1, Kw2=[(Kw1-1-PADl1)/Bw]-[-PADl1/Bw]+1,
Kernel data: KER2 as 4D tensor in shape of [Kh2,Kw2,Di*Bh*Bw,Do]
Figure pat00004
Figure pat00005
,
Figure pat00006
is expression for the least non-negative remainder of division P
Figure pat00007
Q,
And,
Figure pat00008
도 6은 본 개시의 일 실시예에 따른 신경망 연산의 제1 변형 및 제2 변형을 설명하기 위한 도면이다.
일 실시예에서, 전자 장치(2000)는 피쳐맵에 대하여 데이터를 재배열하는 변형된 연산을 수행할 수 있다. 변형된 연산은, 채널을 확장하는 확장(extend)하는 공간-깊이 변형(space-to-depth transformation) 연산 및 채널을 축소하는 깊이-공간 변형(depth-to-space transformation) 연산을 포함할 수 있다.
예를 들어, 원본 피쳐맵(610)은 H*W의 사이즈를 갖고, 채널 수는 C일 수 있다. 전자 장치(2000)가 공간-깊이 변형을 수행하여 이 원본 피쳐맵(610)의 채널을 BH*BW 만큼 확장하고자 하는 경우, 전자 장치(2000)는 원본 피쳐맵(610)에서 인접한 BH*BW 개의 피쳐 값을 선택하고, 이를 단일 픽셀의 채널 방향으로 나열할 수 있다. 이 경우, (H,W,C) 차원의 원본 피쳐맵(610)은 (H/BH, W/BW, C*BH*BW) 차원의 채널-확장된 피쳐맵(620)으로 변형된다. 반대로, 전자 장치(2000)가 깊이-공간 변형을 수행하여 이 피쳐맵의 채널을 BH*BW 만큼 축소하고자 하는 경우, 전자 장치(2000)는 채널-확장된 피쳐맵(620)에서 단일 픽셀의 채널 방향으로 나열된 BH*BW 개의 피쳐 값을 선택하고, 이를 원본 피쳐맵(610)에서 픽셀 BH*BW 개의 인접한 픽셀이 되도록 나열할 수 있다. 이 경우, (H/BH, W/BW, C*BH*BW) 차원의 채널-확장된 피쳐맵(620)은 (H,W,C) 차원의 원본 피쳐맵(610)으로 변형된다.
도 6을 참조하면, 공간-깊이 변형을 통해 (6, 6, 2) 차원의 원본 피쳐맵(610)이 (3, 3, 8) 차원의 채널-확장된 피쳐맵(620)으로 변형될 수 있고, 또는, 그 역변형인 깊이-공간 변형을 통해, 채널-확장된 피쳐맵(620)이 원본 피쳐맵(610)으로 변형될 수 있다.
도 7은 본 개시의 일 실시예에 따른 전자 장치가 수행하는 심층 신경망 연산의 일 예를 설명하기 위한 도면이다.
일 실시예에서, 신경망 연산은 요소별 연산(예를 들어, 요소별 곱셈 등)일 수 있다. 요소별 연산은 같은 크기의 입출력 피쳐맵을 가지며, 출력 피쳐맵에서의 하나의 피쳐 값은 입력 피쳐맵들에서 동일한 위치의 피쳐 값에 의존한다. 예를 들어, 제1 피쳐맵(710)과 제2 피쳐맵(720)의 요소별 연산이 수행되어, 제3 피쳐맵(730)이 획득될 수 있다.
일 실시예에 따른 전자 장치(2000)는 심층 신경망의 레이어들 중 제1 레이어로 입력되는 피쳐맵에 대하여 제1 변형된 연산을 수행한다. 전자 장치(2000)는 제1 레이어로 입력되는 피쳐맵에 대하여, 제1 레이어에 대응하는 연산을 수행하되, 제1 레이어의 출력의 채널이 확장되도록 할 수 있다.
예를 들어, 제1 레이어가 요소별 연산을 위한 레이어인 경우, 전자 장치(2000)는 제1 피쳐맵(710) 및 제2 피쳐맵(720) 블록의 공간 데이터를 깊이 방향으로 재배열할 수 있다. 전자 장치(2000)는 제1 피쳐맵(710) 및 제2 피쳐맵(720)의 피쳐 값들을 재배열하여 채널을 확장한 뒤, 요소별 연산이 수행된 결과인 채널-확장된 데이터를 획득할 수 있다. 채널 확장된 데이터란, 제3 피쳐맵(730)의 피쳐 값들을 재배열한 것일 수 있으며, 제1 피쳐맵(710) 및 제2 피쳐맵(720)에 대하여 채널을 확장한 것과 동일한 방법으로 제3 피쳐맵(730)의 채널을 확장한 결과일 수 있다.
일 실시예에서, 전자 장치(2000)는 채널-확장된 데이터를 입출력 데이터로 하여 채널-확장된 신경망 연산을 수행할 수 있다. 이는, 전술하였으므로 동일한 설명은 생략한다.
한편, 도 7에서는 신경망 연산의 예시를 요소별 연산으로 설명하였으나, 신경망 연산의 종류는 이에 한정되는 것은 아니다.
도 8a는 내지 도 8c는 본 개시의 일 실시예에 따른 전자 장치가 수행하는 심층 신경망 연산이 컨볼루션 연산인 예시를 설명하기 위한 도면이다.
도 8a는 원본 컨볼루션 연산을 설명하기 위한 도면이다.
일 실시예에서, 신경망 연산은 컨볼루션 연산일 수 있다. 도 8a에서, 본 개시에서 지칭하는 원본 연산인 컨볼루션 연산을 간략하게 설명한다.
일 실시예에서, 원본 입력 피쳐맵(810)에 대하여 원본 커널(820)이 스트라이드되어 원본 출력 피쳐맵(830)이 획득된다. 예를 들어, 원본 입력 피쳐맵(710)의 사이즈는 HI*WI=4*4, 원본 커널(820)의 사이즈는 KH*KW=3*3, 원본 입력 피쳐맵(810) 및 원본 커널(820)의 채널은 CI=2, 원본 출력 피쳐맵(830)의 사이즈는 HO*WO=2*2, 원본 출력 피쳐맵(830)의 채널은 CO=1일 수 있다.
도 8b는 원본 컨볼루션 연산을 더 설명하기 위한 도면이다.
일 실시예에서, 원본 출력 피쳐맵(830)은 피쳐 값 A(832), 피쳐 값 B(834), 피쳐 값 C(836), 피쳐 값 D(838)을 포함할 수 있다.
개시된 실시예에서, 4*4 크기를 갖는 원본 입력 피쳐맵(810)의 피쳐 값을 요소들을 지칭하기 위해, 행렬 표현 방식을 도입한다. 구체적으로, 원본 입력 피쳐맵(810)의 채널 1의 피쳐 값 요소를 행렬 요소 Aij, 입력 피쳐맵(810)의 채널 2의 피쳐 값 요소를 행렬 요소 Bij로 하여 설명한다. 또한, 패딩=0, 스트라이드=1이 예시로 적용하며, 구체적인 컨볼루션 연산의 동작은 통상의 기술자에게 자명하므로 이하 간략하게만 설명한다.
일 실시예에서, 원본 출력 피쳐맵(830)의 피쳐 값 A(832)는, 원본 입력 피쳐맵(810)의 피쳐 값들 A11, A12, A13, A21, A22, A23, A31, A32, A33, 과 커널 값 1, 2, 3, 4, 5, 6, 7, 8, 9 의 요소별 곱셈 결과 및 원본 입력 피쳐맵(810)의 피쳐 값들 B11, B12, B13, B21, B22, B23, B31, B32, B33, 과 커널 값 1, 2, 3, 4, 5, 6, 7, 8, 9 의 요소별 곱셈 결과를 모두 더함으로써 획득된다.
일 실시예에서, 원본 출력 피쳐맵(830)의 피쳐 값 B(834)는, 원본 입력 피쳐맵(810)의 피쳐 값들 A12, A13, A14, A22, A23, A24, A32, A33, A34, 과 커널 값 1, 2, 3, 4, 5, 6, 7, 8, 9 의 요소별 곱셈 결과 및 원본 입력 피쳐맵(810)의 피쳐 값들 B12, B13, B14, B22, B23, B24, B32, B33, B34, 과 커널 값 1, 2, 3, 4, 5, 6, 7, 8, 9 의 요소별 곱셈 결과를 모두 더함으로써 획득된다.
같은 방식으로, 원본 출력 피쳐맵(830)의 피쳐 값 C(836) 및 피쳐 값 D(838)가 획득될 수 있다. 즉, 원본 연산은 블록 840에 도시된 것과 같이, 원본 커널(820)이 원본 입력 피쳐맵(810)을 스트라이드하며 연산이 수행된다.
한편, 일 실시예에 따른 전자 장치(2000)는, 원본 연산과 동일한 효과를 얻을 수 있는, 변형된 연산 및 채널-확장된 신경망 연산을 수행한다. 즉, 전자 장치(2000)는 전술한 실시예들에 따른 신경망 연산 방법을 수행함으로써, 연산되는 데이터의 채널 수를 확장하되, 원본 연산과 동일한 결과를 획득할 수 있다. 이에 대한 예시를 도 8c를 참조하여 더 설명한다.
도 8c는 본 개시의 일 실시예에 따른 전자 장치가 컨볼루션 연산 수행을 위해 피쳐맵의 채널을 확장하는 것을 설명하기 위한 도면이다.
일 실시예에 따른 전자 장치(2000)는, 컨볼루션 신경망의 레이어의 출력의 채널을 확장하기 위한, 제1 변형된 연산을 수행할 수 있다. 제1 변형된 연산은 피쳐맵의 채널을 확장하는 공간-깊이 변형 연산을 포함할 수 있다. 또한, 제1 변형된 연산은 컨볼루션 신경망의 커널을 변형하는, 커널 변형 연산을 포함할 수 있다. 또한, 제1 변형된 연산은 컨볼루션 연산 방식을 적용하는 것을 포함할 수 있다. 예를 들어, 전자 장치(2000)는 채널-확장된 피쳐맵(850)과 채널-확장된 커널(860)을 기초로, 컨벌루션 연산 방식을 적용함으로써 채널-확장된 출력 피쳐맵(870)을 획득할 수 있다.
일 실시예에서, 전자 장치(2000)는 원본 입력 피쳐맵(810)에 대하여, 공간-깊이 변형 연산을 수행하여 채널-확장된 입력 피쳐맵(850)을 획득할 수 있다. 전자 장치(2000)가 공간-깊이 변형 연산을 수행하는 것은 도 6에서 설명하였으므로, 동일한 설명은 생략한다.
일 실시예에서, 전자 장치(2000)는 커널 변형 연산을 수행하여 채널-확장된 커널(860)을 획득한다. 채널-확장된 커널(860)은 원본 커널(820)의 커널 값을 재배열함으로써 획득될 수 있다.
설명의 편의를 위하여, 채널-확장된 출력 피쳐맵(870)의 피쳐 값 A(872)를 획득하기 위한, 채널-확장된 커널 중 일부인 커널 A1(861), 커널 A2(862), 커널 A3(863), 커널 A4(864), 커널 A5(865), 커널 A6(866), 커널 A7(867), 커널 A8(868)를 대표적으로 설명한다. 해당 설명을 읽은 통상의 기술자에게는, 도 8c를 참조한다면 채널-확장된 피쳐맵(870)의 피쳐 값 B, 피쳐 값 C, 및 피쳐 값 D를 구하는 방법 또한 명확하게 이해될 수 있을 것이다.
개시된 실시예에서, 2*2 크기를 갖는 커널 A1(861) 내지 커널 A8(868)의 커널 값 요소들을 지칭하기 위해, 행렬 표현 방식을 도입한다.
일 실시예에서, 전자 장치(2000)는 원본 커널(820)의 채널 1의 커널 값 1, 3, 7, 9(여기서, 값은 위치를 나타내기 위한 수치이며 실제적인 값을 나타내는 것은 아니다. 이하도 동일)를 커널 A1(861)의 A111, A112, A121, A122로 재배열한다. 같은 방식으로, 전자 장치(2000)는 원본 커널(820)의 채널 2의 커널 값 1, 3, 7, 9를 커널 A2(862)의 A211, A212, A221, A222로 재배열한다.
또한, 전자 장치(2000)는 원본 커널(820)의 채널 1의 커널 값 2, 8을 커널 A3(863)의 A311, A321로 재배열하고, 나머지 값 A312, A322 에는 0을 패딩한다. 같은 방식으로, 전자 장치(2000)는 원본 커널(820)의 채널 2의 커널 값 2, 8을 커널 A4(864)의 A411, A421로 재배열하고, 나머지 값 A412, A422 에는 0을 패딩한다.
또한, 전자 장치(2000)는 원본 커널(820)의 채널 1의 커널 값 4, 6을 커널 A5(865)의 A511, A512로 재배열하고, 나머지 값 A521, A522 에는 0을 패딩한다. 같은 방식으로, 전자 장치(2000)는 원본 커널(820)의 채널 2의 커널 값 4, 6을 커널 A6(866)의 A611, A612로 재배열하고, 나머지 값 A621, A622 에는 0을 패딩한다.
또한, 전자 장치(2000)는 원본 커널(820)의 채널 1의 커널 값 5를 커널 A7(867)의 A711, 로 재배열하고, 나머지 값 A712, A721, A722 에는 0을 패딩한다. 같은 방식으로, 전자 장치(2000)는 원본 커널(820)의 채널 2의 커널 값 5를 커널 A8(868)의 A811, 로 재배열하고, 나머지 값 A812, A821, A822 에는 0을 패딩한다.
일 실시예에 따른 전자 장치(2000)는, 채널-확장된 입력 피쳐맵(850)과 채널-확장된 커널(860)에 컨볼루션 연산 방식을 적용할 수 있다. 예를 들어, 전자 장치(2000)는 채널 확장된 입력 피쳐맵(850)과 커널 A1(861) 내지 커널 A8(868)의 요소별 곱셈을 수행하고, 결과 값을 모두 더함으로써, 채널-확장된 출력 피쳐맵(870)의 피쳐 값 A(872)를 획득할 수 있다. 같은 방식으로, 전자 장치(2000)는 채널-확장된 출력 피쳐맵(870)의 피쳐 값 B, C, D를 획득함으로써, 채널-확장된 출력 피쳐맵(870)의 모든 요소들을 구할 수 있다. 채널-확장된 출력 피쳐맵(870)의 각각의 요소 값들은, 원본 출력 피쳐맵(830)의 각각의 요소 값들과 동일하다. 즉, 전자 장치(2000)는 원본 신경망 연산과 동일한 연산을, 채널 확장된 형태의 다른 방식으로 연산할 수 있다.
일 실시예에서, 채널-확장된 입력 피쳐맵(850) 및 채널-확장된 커널(860)을 이용하여 채널-확장된 출력 피쳐맵(870)이 획득된다. 예를 들어, 채널-확장된 입력 피쳐맵(850)의 사이즈는 (HI/BH)*(WI/BW)=2*2, 채널-확장된 커널(860)의 사이즈는 KH*KW=2*2, 채널-확장된 입력 피쳐맵(850) 및 채널-확장된 커널(860)의 채널은 CI=8, 채널-확장된 출력 피쳐맵(870)의 사이즈는 (HO/BH)*(WO/BH)=1*1, 채널-확장된 출력 피쳐맵(870)의 채널은 CO=4일 수 있다.
전자 장치(2000)는 변형된 연산을 사용하여 채널-확장된 신경망 연산을 수행함으로써, 가속기의 성능 이득을 얻을 수 있다. 컨볼루션 연산을 예로 들면, 채널이 Cfix로 고정된 MPU에서의 컨볼루션 연산의 성능은, 그 곱셈 연산의 수인 (HI*WI*Cfix*Kw*Kh*Co)/(STRh*STRw)에 비례한다. (여기서, STRh, STRw 은 스트라이드를 의미한다.)
구체적 예로써, 채널이 32로 고정된 가속기에서, 피쳐맵의 크기가 (HI, WI, CI) = (256, 256, 8)인 피쳐맵에 대하여, 커널의 크기가 (Kh, Kw, Co) = (3, 3, 8)인 변형된 연산을 적용하려는 경우를 가정한다(패딩은 동일하게 유지되며, 스트라이드=1인 일반적인 경우를 가정). 이 경우, 원본 컨볼루션 연산은 MPU에서 256*256*32*3*3*8=150,994,944 회의 곱셈 연산이 수행된다. 반면, (Bh, Bw) = (2, 2)를 가정하여 변형된 연산을 적용하는 경우, 채널-확장된 피쳐맵의 크기가 (HI, WI, CI) = (128, 128, 32)가 되고, 채널-확장된 커널의 크기가 (Kh, Kw, Co) = (2, 2, 32)로 변경된다. 이 경우, 변형된 연산은 MPU에서 128*128*32*2*2*32=67,108,864 회의 곱셈 연산이 수행되므로, 연산 횟수가 기존의 원본 연산 대비 55.6% 절감된다. 이는, 하나의 레이어에 대한 연산의 예시이므로, 작은 채널들로 구성되는 신경망 모델들에 대해서는, 모델 내 많은 레이어들의 입출력 피쳐맵의 채널을 확장하여, 채널-확장된 신경망 연산을 수행하므로, 가속기의 성능 이득을 증가시킬 수 있다.
도 9는 본 개시의 일 실시예에 따른 전자 장치의 구성을 도시한 블록도이다.
일 실시예에서, 전자 장치(2000)는 가속기(2100), 메모리(2200) 및 프로세서(2300)를 포함할 수 있다.
일 실시예에 따른 가속기(2100)는 심층 신경망 모델의 심층 신경망 연산을 수행할 수 있다. 가속기(2100)는 예를 들어, CPU(Central Processing Units), GPU(Graphics Processing Units), FPGA(Field-Programmable Gate Arrays), SoC(System-on-Chips), ASIC(Application-Specific Integrated Circuits), VPC(Vision Processing Units), 뉴로모픽 IC 등일 수 있으나, 이에 한정되는 것은 아니다.
전자 장치(2000)의 가속기(2100)에는 데이터 연산을 처리할 수 있는 곱셈-누산 유닛 (Multiply-accumulate unit; MAC unit)이 포함될 수 있다. 가속기(2100) 사양은 가속기(2100)에 포함되는 MAC 유닛들의 수를 포함한다. 예를 들어, MAC 유닛들의 수가 N개인 경우, 가속기(2100)에서는 N개의 병렬 연산이 수행될 수 있다.
일 실시예에서, 가속기(2100)는 그 하드웨어 타입에 따라 (예를 들어, CPU 등) 후술하는 프로세서(2300)의 역할을 적어도 일부 수행할 수 있다.
메모리(2200)는 전자 장치(2000)를 구동하고 제어하기 위한 다양한 데이터, 프로그램 또는 어플리케이션을 저장할 수 있다. 메모리(2200)에 저장되는 프로그램은 하나 이상의 명령어들을 포함할 수 있다. 메모리(2200)에 저장된 프로그램(하나 이상의 명령어들) 또는 어플리케이션은 프로세서(2300)에 의해 실행될 수 있다.
메모리(2200)는 플래시 메모리 타입(flash memory type), 하드디스크 타입(hard disk type), 멀티미디어 카드 마이크로 타입(multimedia card micro type), 카드 타입의 메모리(예를 들어 SD 또는 XD 메모리 등)를 포함할 수 있으며, 롬(ROM, Read-Only Memory), EEPROM(Electrically Erasable Programmable Read-Only Memory), PROM(Programmable Read-Only Memory), 자기 메모리, 자기 디스크, 광디스크 중 적어도 하나를 포함하는 비 휘발성 메모리 및 램(RAM, Random Access Memory) 또는 SRAM(Static Random Access Memory)과 같은 휘발성 메모리를 포함할 수 있다.
일 실시예에 따른 메모리(2200)는 전자 장치(2000)가 신경망 연산을 수행하도록 하는 하나 이상의 인스트럭션 및/또는 프로그램을 저장할 수 있다. 예를 들어, 메모리(2200)에는 연산 변형 모듈(2210), 인공지능 모듈(2220) 및 심층 신경망 모델(2222)이 저장될 수 있다.
프로세서(2300)는 전자 장치(2000)를 전반적으로 제어할 수 있다. 프로세서(2300)는 메모리(2200)에 저장되는 하나 이상의 프로그램들을 실행할 수 있다. 프로세서(2300)는 하나 이상일 수 있다.
본 개시에 따른 하나 이상의 프로세서는 CPU (Central Processing Unit), GPU (Graphics Processing Unit), APU (Accelerated Processing Unit), MIC (Many Integrated Core), DSP (Digital Signal Processor), 및 NPU (Neural Processing Unit) 중 적어도 하나를 포함할 수 있다. 하나 이상의 프로세서는, 하나 이상의 전자부품을 포함하는 집적된 시스템 온 칩(SoC) 형태로 구현될 수 있다. 하나 이상의 프로세서 각각은 별개의 하드웨어(H/W)로 구현될 수도 있다.
프로세서(2300)는 연산 변형 모듈(2210)을 실행하여, 전자 장치(2000)가 신경망 연산을 변형하도록 할 수 있다. 예를 들어, 프로세서(2300)는 변형된 연산의 적용을 시작할 제1 레이어 및 변형된 연산의 적용을 종료할 제2 레이어를 결정할 수 있다. 프로세서(2300)는 심층 신경망 레이어의 출력의 채널을 확장하기 위한 변형된 연산을 수행할 수 있다. 변형된 연산은 공간-깊이 변형 연산을 포함할 수 있다. 프로세서(2300)는 채널-확장된 입력을 받아 심층 신경망 레이어의 출력의 채널을 축소하기 위한 변형된 연산을 수행할 수 있다. 변형된 연산은 깊이-공간 변형 연산을 포함할 수 있다. 프로세서(2300)는 변형된 연산을 수행하기 위해, 메모리(2200)에 포함되는 RAM 등에 저장된 데이터의 순서를 변경할 수 있다.
프로세서(2300)가 연산 변형 모듈(2210)을 실행하여, 피쳐맵의 채널을 확장 또는 축소할 때, 변형된 연산이 피쳐맵의 채널을 확장 또는 축소하는 크기는, 가속기(2100)에 포함되는 MAC 유닛들의 사양에 기초하여 결정될 수 있다. 예를 들어, MAC 유닛의 수가 N개인 경우, 프로세서(2300)는 채널 변형 크기를 N으로 설정할 수 있으나, 이에 한정되는 것은 아니다.
한편, 일 실시예에서, 전자 장치(2000)는 외부의 다른 장치(예를 들어, 서버, 로컬 PC 등)로부터 변경된(modified) 심층 신경망 모델을 획득할 수 있다. 변경된 심층 신경망 모델이란, 전술한 실시예들에서처럼 전자 장치(2000)가 가속기(2100)를 효율적으로 이용할 수 있도록, 변형된 연산 및/또는 채널-확장된 신경망 연산이 수행되도록 심층 신경망 모델의 설계가 변경된 것을 말한다. 따라서, 외부의 다른 장치는 심층 신경망 모델을 변경하는, 신경망 컴파일러가 저장되어 있는 장치일 수 있다. 또는, 외부의 다른 장치는 그 자체로 신경망 컴파일러로 지칭될 수 있다. 전자 장치(2000)가 변경된 심층 신경망 모델을 이용하여 신경망 연산을 수행하면, 연산 변형 모듈(2210)의 연산 변형 과정에서 발생하는 변형 오버헤드 없이, 이미 높은 성능으로 연산이 가능할 수 있다. 즉, 전자 장치(2000)는 변경된 심층 신경망 모델로 개시된 실시예들에 따라 전자 장치(2000)의 컴퓨팅 자원을 효율적으로 이용하는 심층 신경망 연산을 수행할 수 있다.
프로세서(2300)는 인공지능 모듈(2220)을 실행하여, 전자 장치(2000)가 심층 신경망 모델(2222)의 출력을 획득하도록 할 수 있다. 프로세서(2300)는 심층 신경망 모델(2222)의 실행 코드를 실행함으로써, 심층 신경망 모델에서의 출력(예를 들어, 컨볼루션 신경망 모델의 이미지 분류 결과 추론 등)을 획득하기 위한 연산들이 수행되도록 할 수 있다. 이 경우, 심층 신경망 모델(2222)의 연산은 변형된 연산이 적용될 수 있다. 또한, 변형된 연산이 적용된 경우 채널-확장된 신경망 연산이 적용될 수 있다. 이에 대하여는 전술하였으므로, 동일한 설명은 생략하기로 한다. 이 때, 신경망 연산은 가속기(2100)를 이용하여 수행될 수 있다.
본 개시의 일 실시예에 따른 방법이 복수의 동작을 포함하는 경우, 복수의 동작은 하나의 프로세서에 의해 수행될 수도 있고, 복수의 프로세서에 의해 수행될 수도 있다. 예를 들어, 일 실시예에 따른 방법에 의해 제1 동작, 제2 동작, 제3 동작이 수행될 때, 제1 동작, 제2 동작, 및 제3 동작 모두 제1 프로세서에 의해 수행될 수도 있고, 제1 동작 및 제2 동작은 제1 프로세서(예를 들어, 범용 프로세서)에 의해 수행되고 제3 동작은 제2 프로세서(예를 들어, 인공지능 전용 프로세서)에 의해 수행될 수도 있다. 여기서, 제2 프로세서의 예시인 인공지능 전용 프로세서는, 가속기(2100)로 대체될 수도 있다. 그러나, 본 개시의 실시예들이 이에 한정되는 것은 아니다.
본 개시에 따른 하나 이상의 프로세서는 싱글 코어 프로세서(single core processor)로 구현될 수도 있고, 멀티 코어 프로세서(multicore processor)로 구현될 수도 있다.
본 개시의 일 실시예에 따른 방법이 복수의 동작을 포함하는 경우, 복수의 동작은 하나의 코어에 의해 수행될 수도 있고, 하나 이상의 프로세서에 포함된 복수의 코어에 의해 수행될 수도 있다.
본 개시는 신경망 연산을 수행하는 방법에 있어서, 신경망 연산 시 획득되는 입/출력 데이터의 채널을 확장시켜 신경망 연산을 수행함으로써, 신경망 연산을 위한 하드웨어의 효율을 증가시키기 위한 방법을 제공하고자 한다. 다만 본 개시에서 이루고자 하는 기술적 과제는, 이상에서 언급한 것으로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 본 개시의 기재로부터 본 개시가 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
본 개시의 일 측면에 따르면, 전자 장치가 심층 신경망(Deep Neural Network; DNN) 연산을 수행하는 방법이 제공될 수 있다. 상기 방법은, 상기 심층 신경망의 레이어들 중 제1 레이어로 입력되는 피쳐맵에 대하여 상기 제1 레이어의 출력의 채널을 확장(extend)하는 제1 변형된 연산을 수행하는 단계를 포함할 수 있다. 상기 제1 변형된 연산은, 공간-깊이 변형(space-to-depth transformation) 연산을 포함할 수 있다. 상기 방법은, 상기 제1 레이어 및 제2 레이어 사이의 레이어들에 대응하는 신경망 연산을 채널-확장된 신경망 연산으로 수행하는 단계를 포함할 수 있다. 상기 제2 레이어는, 상기 심층 신경망 내에서 상기 제1 레이어보다 이후의 레이어인 것일 수 있다. 상기 방법은, 상기 제2 레이어로 입력되는 채널-확장된 피쳐맵에 대하여 상기 제2 레이어의 출력의 채널을 축소하는 제2 변형된 연산을 수행할 수 있다. 상기 제2 변형된 연산은, 깊이-공간 변형(depth-to-space transformation) 연산을 포함할 수 있다. 상기 방법은, 상기 심층 신경망의 연산의 결과를 출력하는 단계를 포함할 수 있다.
제1 변형된 연산 및 상기 제2 변형된 연산의 채널 변형 크기는, 상기 전자 장치에 포함되는 가속기의 MAC 유닛들(Multiply-accumulate units)의 사양에 기초하여 기 설정된 것일 수 있다.
상기 제1 변형된 연산 및 상기 제2 변형된 연산을 적용한 심층 신경망 연산의 출력은, 상기 심층 신경망의 원본(original) 연산 결과와 동일한 것일 수 있다.
상기 제1 레이어는, 상기 심층 신경망에 포함되는 레이어들 중 첫번째 레이어일 수 있다. 상기 제2 레이어는, 상기 심층 신경망에 포함되는 레이어들 중 마지막 레이어일 수 있다.
상기 제1 레이어 및 제2 레이어 사이의 레이어들에 대응하는 신경망 연산을, 채널-확장된 신경망 연산으로 수행하는 단계는, 채널-확장된 입력 피쳐맵을 이용하여 레이어 연산을 수행하고, 채널-확장된 출력 피쳐맵을 다음 레이어로 전달하는 단계를 포함할 수 있다.
상기 제1 변형된 연산 및 상기 제2 변형된 연산은, 상기 심층 신경망의 연산 타입에 대응하는 것일 수 있다.
상기 심층 신경망은, 하나 이상의 컨볼루션 레이어를 포함하는 컨볼루션 신경망(Convolutional Neural Network; CNN)인 것일 수 있다.
상기 제1 레이어는 컨볼루션 레이어일 수 있다. 상기 제1 변형된 연산을 수행하는 단계는, 상기 컨볼루션 신경망의 상기 제1 레이어의 커널을 변형하는 단계를 포함할 수 있다. 상기 제1 변형된 연산을 수행하는 단계는, 상기 제1 레이어로 입력되는 입력 피쳐맵 및 상기 제1 레이어의 변형된 커널을 이용하여, 채널-확장된 출력 피쳐맵을 획득하는 단계를 더 포함할 수 있다.
상기 제2 레이어는 컨볼루션 레이어일 수 있다. 상기 제2 변형된 연산을 수행하는 단계는, 상기 컨볼루션 신경망의 상기 제2 레이어의 커널을 변형하는 단계를 포함할 수 있다. 상기 제2 변형된 연산을 수행하는 단계는, 상기 제2 레이어로 입력되는 상기 채널-확장된 피쳐맵 및 상기 제2 레이어의 변형된 커널을 이용하여, 채널 축소된 출력 피쳐맵을 획득하는 단계를 더 포함할 수 있다.
상기 제1 변형된 연산은 컨볼루션 연산 방식을 적용하는 것을 포함할 수 있다. 상기 제2 변형된 연산은 전치(transposed) 컨볼루션 연산 방식을 적용하는 것을 포함할 수 있다.
한편, 본 개시의 실시예들은 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터에 의해 실행 가능한 명령어를 포함하는 기록 매체의 형태로도 구현될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터에 의해 액세스 될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터 판독 가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함한다. 통신 매체는 전형적으로 컴퓨터 판독 가능 명령어, 데이터 구조, 또는 프로그램 모듈과 같은 변조된 데이터 신호의 기타 데이터를 포함할 수 있다.
또한, 컴퓨터에 의해 읽을 수 있는 저장매체는, 비일시적(non-transitory) 저장매체의 형태로 제공될 수 있다. 여기서, '비일시적 저장매체'는 실재(tangible)하는 장치이고, 신호(signal)(예: 전자기파)를 포함하지 않는다는 것을 의미할 뿐이며, 이 용어는 데이터가 저장매체에 반영구적으로 저장되는 경우와 임시적으로 저장되는 경우를 구분하지 않는다. 예로, '비일시적 저장매체'는 데이터가 임시적으로 저장되는 버퍼를 포함할 수 있다.
일 실시예에 따르면, 본 문서에 개시된 다양한 실시예들에 따른 방법은 컴퓨터 프로그램 제품(computer program product)에 포함되어 제공될 수 있다. 컴퓨터 프로그램 제품은 상품으로서 판매자 및 구매자 간에 거래될 수 있다. 컴퓨터 프로그램 제품은 기기로 읽을 수 있는 저장 매체(예: compact disc read only memory (CD-ROM))의 형태로 배포되거나, 또는 어플리케이션 스토어를 통해 또는 두개의 사용자 장치들(예: 스마트폰들) 간에 직접, 온라인으로 배포(예: 다운로드 또는 업로드)될 수 있다. 온라인 배포의 경우에, 컴퓨터 프로그램 제품(예: 다운로더블 앱(downloadable app))의 적어도 일부는 제조사의 서버, 어플리케이션 스토어의 서버, 또는 중계 서버의 메모리와 같은 기기로 읽을 수 있는 저장 매체에 적어도 일시 저장되거나, 임시적으로 생성될 수 있다.
전술한 본 개시의 설명은 예시를 위한 것이며, 본 개시가 속하는 기술분야의 통상의 지식을 가진 자는 본 개시의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
본 개시의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 개시의 범위에 포함되는 것으로 해석되어야 한다.

Claims (20)

  1. 전자 장치가 심층 신경망(Deep Neural Network; DNN) 연산을 수행하는 방법에 있어서,
    상기 심층 신경망의 레이어들 중 제1 레이어로 입력되는 피쳐맵에 대하여 상기 제1 레이어의 출력의 채널을 확장(extend)하는 제1 변형된 연산을 수행하되, 상기 제1 변형된 연산은, 공간-깊이 변형(space-to-depth transformation) 연산을 포함하는 것인, 단계(S210);
    상기 제1 레이어 및 제2 레이어 사이의 레이어들에 대응하는 신경망 연산을 채널-확장된 신경망 연산으로 수행하되, 상기 제2 레이어는, 상기 심층 신경망 내에서 상기 제1 레이어보다 이후의 레이어인 것인, 단계(S220);
    상기 제2 레이어로 입력되는 채널-확장된 피쳐맵에 대하여 상기 제2 레이어의 출력의 채널을 축소하는 제2 변형된 연산을 수행하되, 상기 제2 변형된 연산은, 깊이-공간 변형(depth-to-space transformation) 연산을 포함하는 것인, 단계(S230); 및
    상기 심층 신경망의 연산의 결과를 출력하는 단계(S240)를 포함하는, 방법.
  2. 제1항에 있어서,
    제1 변형된 연산 및 상기 제2 변형된 연산의 채널 변형 크기는,
    상기 전자 장치에 포함되는 가속기의 MAC 유닛들(Multiply-accumulate units)의 사양에 기초하여 기 설정된 것인, 방법.
  3. 제1항 내지 제2항 중 어느 한 항에 있어서,
    상기 제1 변형된 연산 및 상기 제2 변형된 연산을 적용한 심층 신경망 연산의 출력은,
    상기 심층 신경망의 원본(original) 연산 결과와 동일한 것인, 방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 제1 레이어는, 상기 심층 신경망에 포함되는 레이어들 중 첫번째 레이어이고,
    상기 제2 레이어는, 상기 심층 신경망에 포함되는 레이어들 중 마지막 레이어인, 방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 제1 레이어 및 제2 레이어 사이의 레이어들에 대응하는 신경망 연산을, 채널-확장된 신경망 연산으로 수행하는 단계는,
    채널-확장된 입력 피쳐맵을 이용하여 레이어 연산을 수행하고, 채널-확장된 출력 피쳐맵을 다음 레이어로 전달하는 단계를 포함하는, 방법.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 제1 변형된 연산 및 상기 제2 변형된 연산은,
    상기 심층 신경망의 연산 타입에 대응하는 것인, 방법.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 심층 신경망은, 하나 이상의 컨볼루션 레이어를 포함하는 컨볼루션 신경망(Convolutional Neural Network; CNN)인 것인, 방법.
  8. 제7항에 있어서,
    상기 제1 레이어는 컨볼루션 레이어이고,
    상기 제1 변형된 연산을 수행하는 단계는,
    상기 컨볼루션 신경망의 상기 제1 레이어의 커널을 변형하는 단계; 및
    상기 제1 레이어로 입력되는 입력 피쳐맵 및 상기 제1 레이어의 변형된 커널을 이용하여, 채널-확장된 출력 피쳐맵을 획득하는 단계를 포함하는, 방법.
  9. 제7항 내지 제8항 중 어느 한 항에 있어서,
    상기 제2 레이어는 컨볼루션 레이어이고,
    상기 제2 변형된 연산을 수행하는 단계는,
    상기 컨볼루션 신경망의 상기 제2 레이어의 커널을 변형하는 단계; 및
    상기 제2 레이어로 입력되는 상기 채널-확장된 피쳐맵 및 상기 제2 레이어의 변형된 커널을 이용하여, 채널 축소된 출력 피쳐맵을 획득하는 단계를 포함하는, 방법.
  10. 제7항 내지 제9항 중 어느 한 항에 있어서,
    상기 제1 변형된 연산은 컨볼루션 연산 방식을 적용하는 것을 포함하고,
    상기 제2 변형된 연산은 전치(transposed) 컨볼루션 연산 방식을 적용하는 것을 포함하는, 방법.
  11. 심층 신경망(Deep Neural Network; DNN) 연산을 수행하는 전자 장치(2000)에 있어서,
    가속기(2100);
    하나 이상의 인스트럭션을 저장하도록 구성된 메모리(2200); 및
    상기 메모리(2200)에 저장된 상기 하나 이상의 인스트럭션을 실행하는 적어도 하나의 프로세서(2300)를 포함하고,
    상기 적어도 하나의 프로세서(2300)는, 상기 하나 이상의 인스트럭션을 실행함으로써,
    상기 심층 신경망의 레이어들 중 제1 레이어로 입력되는 피쳐맵에 대하여 상기 제1 레이어의 출력의 채널을 확장(extend)하는 제1 변형된 연산을 수행하되, 상기 제1 변형된 연산은, 공간-깊이 변형(space-to-depth transformation) 연산을 포함하고,
    상기 가속기(2100)를 이용하여, 상기 제1 레이어 및 제2 레이어 사이의 레이어들에 대응하는 신경망 연산을 채널-확장된 신경망 연산으로 수행하되, 상기 제2 레이어는, 상기 심층 신경망 내에서 상기 제1 레이어보다 이후의 레이어인 것이며,
    상기 제2 레이어로 입력되는 채널-확장된 피쳐맵에 대하여 상기 제2 레이어의 출력의 채널을 축소하는 제2 변형된 연산을 수행하되, 상기 제2 변형된 연산은, 깊이-공간 변형(depth-to-space transformation) 연산을 포함하는 것이고,
    상기 심층 신경망의 연산의 결과를 출력하는, 전자 장치.
  12. 제11항에 있어서,
    제1 변형된 연산 및 상기 제2 변형된 연산의 채널 변형 크기는,
    상기 전자 장치에 포함되는 가속기의 MAC 유닛들(Multiply-accumulate units)의 사양에 기초하여 기 설정된 것인, 전자 장치.
  13. 제11항 내지 제12항 중 어느 한 항에 있어서,
    상기 제1 변형된 연산 및 상기 제2 변형된 연산을 적용한 상기 심층 신경망 연산의 출력은,
    상기 심층 신경망의 원본(original) 연산 결과와 동일한 것인, 전자 장치.
  14. 제11항 내지 제13항 중 어느 한 항에 있어서,
    상기 제1 레이어는, 상기 심층 신경망에 포함되는 레이어들 중 첫번째 레이어이고,
    상기 제2 레이어는, 상기 심층 신경망에 포함되는 레이어들 중 마지막 레이어인, 전자 장치.
  15. 제11항 내지 제14항 중 어느 한 항에 있어서,
    상기 적어도 하나의 프로세서는, 상기 하나 이상의 인스트럭션을 실행함으로써,
    상기 가속기를 이용하여 상기 채널-확장된 신경망 연산이 수행될 때, 채널-확장된 입력 피쳐맵을 이용하여 레이어 연산을 수행하고, 채널-확장된 출력 피쳐맵을 다음 레이어로 전달하는, 전자 장치.
  16. 제11항 내지 제15항 중 어느 한 항에 있어서,
    상기 제1 변형된 연산 및 상기 제2 변형된 연산은,
    상기 심층 신경망의 연산 타입에 대응하는 것인, 전자 장치.
  17. 제11항 내지 제16항 중 어느 한 항에 있어서,
    상기 심층 신경망은, 하나 이상의 컨볼루션 레이어를 포함하는 컨볼루션 신경망(Convolutional Neural Network; CNN)인 것인, 전자 장치.
  18. 제17항에 있어서,
    상기 제1 레이어는 컨볼루션 레이어이고,
    상기 적어도 하나의 프로세서는, 상기 하나 이상의 인스트럭션을 실행함으로써,
    상기 컨볼루션 신경망의 상기 제1 레이어의 커널을 변형하고,
    상기 제1 레이어로 입력되는 입력 피쳐맵 및 상기 제1 레이어의 변형된 커널을 상기 가속기에 적용하여, 채널-확장된 출력 피쳐맵을 획득하는, 전자 장치.
  19. 제17항 내지 제18항 중 어느 한 항에 있어서,
    상기 제2 레이어는 컨볼루션 레이어이고,
    상기 적어도 하나의 프로세서는, 상기 하나 이상의 인스트럭션을 실행함으로써,
    상기 컨볼루션 신경망의 상기 제2 레이어의 커널을 변형하고,
    상기 제2 레이어로 입력되는 상기 채널-확장된 피쳐맵 및 상기 제2 레이어의 변형된 커널을 상기 가속기에 적용하여, 채널 축소된 출력 피쳐맵을 획득하는, 전자 장치.
  20. 제1항 내지 제10항 중 어느 한 항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
KR1020220129039A 2021-10-26 2022-10-07 심층 신경망 연산을 수행하는 방법 및 전자 장치 KR20230059726A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
PCT/KR2022/016375 WO2023075372A1 (ko) 2021-10-26 2022-10-25 심층 신경망 연산을 수행하는 방법 및 전자 장치
US18/078,199 US20230129845A1 (en) 2021-10-26 2022-12-09 Method and electronic device for performing deep neural network operation

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
KR1020210143993 2021-10-26
KR20210143993 2021-10-26
KR1020220115794A KR20230059718A (ko) 2021-10-26 2022-09-14 심층 신경망 연산을 수행하는 방법 및 전자 장치
KR1020220115794 2022-09-14

Publications (1)

Publication Number Publication Date
KR20230059726A true KR20230059726A (ko) 2023-05-03

Family

ID=86380950

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220129039A KR20230059726A (ko) 2021-10-26 2022-10-07 심층 신경망 연산을 수행하는 방법 및 전자 장치

Country Status (1)

Country Link
KR (1) KR20230059726A (ko)

Similar Documents

Publication Publication Date Title
JP7329533B2 (ja) 演算を加速するための方法および加速器装置
JP7021904B2 (ja) 畳み込み神経網処理方法及び装置
US10338925B2 (en) Tensor register files
US10372456B2 (en) Tensor processor instruction set architecture
JP7007488B2 (ja) ハードウェアベースのプーリングのシステムおよび方法
WO2020073211A1 (zh) 运算加速器、处理方法及相关设备
US10956535B2 (en) Operating a neural network defined by user code
CN111382859A (zh) 用于处理神经网络中的卷积运算的方法和装置
EP4024290A1 (en) Implementing fully-connected neural-network layers in hardware
US10755169B2 (en) Hybrid non-uniform convolution transform engine for deep learning applications
JP7414930B2 (ja) 情報処理装置、情報処理方法
KR20200067631A (ko) 영상 처리 장치 및 그 동작방법
KR20210039197A (ko) 데이터를 처리하는 방법 및 장치
US11568323B2 (en) Electronic device and control method thereof
KR20200095300A (ko) 뉴럴 네트워크의 컨볼루션 연산을 처리하는 방법 및 장치
EP3992863A1 (en) Method and device with deep learning operations
JP6955598B2 (ja) 複数の畳み込みウィンドウ内の画像データの並行抽出方法、装置、機器及びコンピュータ可読記憶媒体
KR20220161339A (ko) 기계 학습 작업시 개선된 메모리 압축 전달을 위한 유사도에 기초한 특징 재정렬
US10824944B2 (en) Method for feature data recalibration and apparatus thereof
US11481604B2 (en) Apparatus and method for neural network processing
EP3690757A1 (en) Method and apparatus with convolution neural network processing
KR20230059726A (ko) 심층 신경망 연산을 수행하는 방법 및 전자 장치
KR20230059718A (ko) 심층 신경망 연산을 수행하는 방법 및 전자 장치
CN111723917B (zh) 运算方法、装置及相关产品
US20230129845A1 (en) Method and electronic device for performing deep neural network operation