KR102690970B1 - 신경망 액티베이션의 채널별 크기를 감소시키고 채널의 총 개수를 증가시키는 액티베이션 변환방법, 및 이를 위한 하드웨어 가속장치와 컴퓨팅 장치 - Google Patents

신경망 액티베이션의 채널별 크기를 감소시키고 채널의 총 개수를 증가시키는 액티베이션 변환방법, 및 이를 위한 하드웨어 가속장치와 컴퓨팅 장치 Download PDF

Info

Publication number
KR102690970B1
KR102690970B1 KR1020230081241A KR20230081241A KR102690970B1 KR 102690970 B1 KR102690970 B1 KR 102690970B1 KR 1020230081241 A KR1020230081241 A KR 1020230081241A KR 20230081241 A KR20230081241 A KR 20230081241A KR 102690970 B1 KR102690970 B1 KR 102690970B1
Authority
KR
South Korea
Prior art keywords
activation
kernels
nsc
split
channel
Prior art date
Application number
KR1020230081241A
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 KR1020230081241A priority Critical patent/KR102690970B1/ko
Application granted granted Critical
Publication of KR102690970B1 publication Critical patent/KR102690970B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/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/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

Landscapes

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

Abstract

신경망을 위해 제공된 제1액티베이션의 각 채널을 Nsc 개의 채널들로 분할한 제2액티베이션을 생성하는 액티베이션 변환방법을 제공한다. 상기 변환방법은, [w1, h1, c1]의 디멘젼을 갖는 제1액티베이션에 대하여 소정의 복제 가중치로 제1콘볼루션 연산을 실행하여 복제된 액티베이션을 생성하는 단계, 및 상기 복제된 액티베이션에 대하여 소정의 분할 가중치로 제2콘볼루션 연산을 실행하여 제2액티베이션을 생성하는 단계를 포함한다.

Description

신경망 액티베이션의 채널별 크기를 감소시키고 채널의 총 개수를 증가시키는 액티베이션 변환방법, 및 이를 위한 하드웨어 가속장치와 컴퓨팅 장치{Space-to-depth activation transforming method for reducing the size of each channel of neural network activation and increasing the total number of channels and hardware accelerator and computing device therefor}
본 발명은 신경망에서 사용되는 액티베이션과 같은 텐서를 변환하는 기술에 관한 것으로서, 특히 신경망에서 이용되는 콘볼루션 기능을 이용하는 기술에 관한 것이다.
도 1은 신경망에서 사용하는 액티베이션을 예시한 것이다.
제1액티베이션(300)은 다차원 텐서일 수 있다. 본 명세서에서 텐서를 도시한 도면의 가로방향 디멘젼은 'w'로 표기하고, 세로방향 디멘젼은 'h'로 표기하며, 이들에 직교하는 제3디멘젼은 'c' 또는 'ci'로 표기한다. 본 명세서에서 'w'는 폭, 'h'는 높이, 그리고 'c'/'ci'는 채널을 의미할 수 있다. 추가적으로 위 3가지 디멘젼에 직교하는 또 다른 디멘젼인 제4디멘젼은 'co'로 표기할 수 있으며, 이때, 'co'는 출력채널을 의미할 수 있다.
도 1에 나타낸 제1액티베이션(300)은 w, h, c의 3개 채널로 이루어진 3차원 텐서이다.
신경망 연산을 처리하기 위해 이미 개발 및 준비되어 있는 소프트웨어 라이브러리 또는 하드웨어 가속기의 기능 모듈을 이용함에 있어서, 주어진 액티베이션의 디멘젼을 다른 디멘젼으로 변환해야 할 수 있다. 도 1은 이러한 액티베이션의 변환을 설명하기 위한 것이다.
도 1에 나타낸 제2액티베이션(3000)은 제1액티베이션(300)으로부터 변환된 텐서이다. 상기 제2액티베이션(3000)이 나타내는 데이터와 상기 제1액티베이션(300)이 나타내는 데이터는 동일하지만, 표현된 디멘젼은 서로 다르다. 즉, 상기 제1액티베이션(300)은 [w, h, c]=[w1, h1, c1]=[4, 4, 3]의 디멘젼을 갖지만, 상기 제2액티베이션(3000)은 [w, h, c]=[w2, h2, c2]=[2, 2, 12]의 디멘젼을 갖는다.
상기 제1액티베이션과 상기 제2액티베이션은, 각각 입력 액티베이션 및 출력 액티베이션으로 지칭되거나, 각각 원 액티베이션 및 변환 액티베이션으로 지칭될 수도 있다.
상기 제1액티베이션(300)을 자세히 설명하면, 상기 제1액티베이션(300)은 제1채널(310), 제2채널(320), 및 제3채널(330)로 구성될 수 있다. 각각의 상기 채널은 [w, h]=[4, 4]의 디멘젼을 갖는 2차원 텐서이거나, 또는 [w, h, c]=[4, 4, 1]의 디멘젼을 갖는 3차원 텐서인 것으로 간주될 수 있다.
상기 제1채널(310), 제2채널(320), 및 제3채널(330)은 각각 제1입력채널(310), 제2입력채널(320), 및 제3입력채널(330)로 지칭될 수도 있다.
이때, 예컨대, [w, h, c]=[4, 4, 3]의 디멘젼을 갖는 상기 제1액티베이션(300)을, [w, h, c]=[2, 2, 12]의 디멘젼을 갖는 제2액티베이션의 형태로 변환해야 할 필요가 있을 수 있다.
따라서 상기 제1채널(310)은 [w, h]=[2, 2]의 디멘젼을 갖는 4개의 분할된 채널들(3101, 3102, 3103, 3104)로 분할되어 변환되고, 상기 제2채널(320)은 [w, h]=[2, 2]의 디멘젼을 갖는 4개의 분할된 채널들(3201, 3202, 3203, 3204)로 분할되어 변환되고, 그리고 상기 제3채널(330)은 [w, h]=[2, 2]의 디멘젼을 갖는 4개의 분할된 채널들(3301, 3302, 3303, 3304)로 분할되어 처리될 필요가 있다.
이때, 한 개의 분할된 채널(ex: 3101)에 속한 데이터들은 모두 동일한 그룹에 속한 것으로 간주할 수 있다. 그리고 서로 다른 두 개의 분할된 채널에 속한 서로 다른 두 개의 데이터들은 서로 다른 그룹에 속한 것으로 간주할 수 있다. 예컨대 도 1에서 분할된 채널(3101)에 속한 4개의 데이터들은 'G1'으로 표현되는 그룹에 포함되며, 분할된 채널(3102)에 속한 4개의 데이터들은 'G2'으로 표현되는 그룹에 포함된다. 도 1에서 각각의 사각형에 의해 표현되는 데이터 요소들은 서로 독립적인 값을 가질 수 있다. 도 1에서 G1, G2, G3, G4라는 참조부호는 데이터의 구체적인 값을 나타내는 것이 아니라, 해당 데이터가 속한 그룹을 구분하는 부호이다.
도 1에서 제1채널(310)의 데이터들 중 제1그룹에 속한 데이터들을 G1이라고 표기하였고, 제2채널(320)의 데이터들 중 제1그룹에 속한 데이터들을 G1이라고 표기하였는데, 상기 2개의 제1그룹은 서로 다른 그룹이다. 또한, 도 1에서 분할된 채널(3101)에 속한 제1그룹의 데이터들 및 분할된 채널(3201)에 속한 제1그룹의 데이터들을 모두 G1이라고 표기하였지만, 상기 2개의 제1그룹은 서로 다른 그룹이다. 본 명세서에 제시된 특정 그룹을 나타내는 부호(ex: G1)는 해당 그룹이 속한 채널에 종속된다.
이와 같이 한 개의 입력채널을 더 작은 크기를 갖는 복수 개의 분할된 채널들로 재구성하는 작업을, 본 명세서에서는 'space-to-depth 변환 작업' 이라는 용어, 'space-to-depth 변환 방법', 'S2D 변환 작업', 또는 'S2D 변환 방법'이라는 용어로 표현할 수 있다.
S2D 변환 방법에 있어서, 한 개의 주어진 채널로부터 생성되는 분할된 채널들의 개수는, 상기 채널의 디멘젼의 크기 및 상기 분할된 채널의 디멘젼의 크기 간의 비율에 의해 결정될 수 있다.
S2D 변환 방법에 있어서, 주어진 액티베이션이 복수 개의 채널들을 포함하는 경우에, 각각의 상기 채널은 복수 개의 분할된 채널들로 분할된다.
주어진 제1액티베이션(300)의 디멘젼의 크기가 [w, h, c]=[w1, h1, c1]이라고 하고, S2D 변환에 의해 상기 제1액티베이션(300)으로부터 변환되어 생성된 제2액티베이션(3000)의 디멘젼의 크기가 [w, h, c]=[w2, h2, c2]이라고 한다면, w1+h1 > w2+h2 라는 관계 및 c2 > c1 이라는 관계가 성립한다.
본 발명에서는 주어진 액티베이션의 폭 디멘젼의 크기 및/또는 높이 디멘젼의 크기를 감소시키고, 채널 디멘젼을 크기를 증가시킴으로써 액티베이션을 변환하는 액티베이션의 변환방법인 S2D 변환 방법을 제공하고자 한다.
특히, 신경망 연산을 위해 이미 제공되어 있는 콘볼루션 연산을 이용하는 S2D 변환 방법을 제공하고자 한다.
본 발명의 일 관점에 따라, 신경망을 위해 제공된 제1액티베이션의 각 채널을 Nsc 개의 채널들로 분할한 제2액티베이션을 생성하는 액티베이션 변환방법을 제공할 수 있다. 상기 액티베이션 변환방법은, 컴퓨팅 장치가, [w1, h1, c1]의 디멘젼을 갖는 제1액티베이션(300)에 대하여 소정의 복제 가중치(400)로 제1콘볼루션 연산을 실행하여 복제된 액티베이션(300d)을 생성하는 단계; 및 상기 컴퓨팅 장치가, 상기 복제된 액티베이션(300d)에 대하여 소정의 분할 가중치(500)로 제2콘볼루션 연산을 실행하여 제2액티베이션(3000)을 생성하는 단계;를 포함한다. 이때, 상기 복제 가중치(400)는 [1, 1, c1, Nsc*c1]의 디멘젼을 갖고, 상기 복제된 액티베이션(300d)은 [w1, h1, Nsc*c1]의 디멘젼을 갖고, 상기 분할 가중치(500)는 [w5, h5, 1, Nsc*c1]의 디멘젼을 갖고, 상기 제2액티베이션은 [w2, h2, Nsc*c1]의 디멘젼을 갖고, w1*h1=Nsc*w2*h2 이고, 그리고 w5*h5=Nsc 이다.
이때, 상기 분할 가중치(500)는 상기 제1액티베이션(300)의 제k 채널에 대응하는 제k 세트의 분할 커널들을 포함하며(k=1, ..., c1), 상기 제k 세트의 분할 커널들은 Nsc 개의 서로 다른 분할 커널들로 구성되며, 상기 분할 가중치(500)의 제m 세트의 분할 커널들과 제n 세트의 분할 커널들은 서로 동일한 것일 수 있다(m=1, ..., c1; n=1, ..., c1; m≠n).
이때, 상기 분할 가중치(500)는 상기 제1액티베이션(300)의 제k 채널에 대응하는 제k 세트의 분할 커널들을 포함하며(k=1, ..., c1), 그리고 상기 제k 세트의 분할 커널들 중 임의의 분할 커널을 구성하는 엘리먼트들 중 한 개는 '1'의 값을 갖고, 나머지 엘리먼트들은 모두 '0'의 값을 가질 수 있다.
이때, 상기 분할 가중치(500)가 상기 제2콘볼루션 연산을 위해 이동하는 폭 방향(w) 스트라이드 또는 높이 방향(h) 스트라이드는 2 이상일 수 있다.
이때, 상기 제1액티베이션(300)의 폭 방향 디멘젼, 높이 방향 디멘젼, 및 채널 방향 디멘젼은 각각 w1, h1, 및 c1 이고, 상기 복제 가중치(400)의 폭 방향 디멘젼, 높이 방향 디멘젼, 입력채널 방향 디멘젼, 및 출력채널 방향 디멘젼은 각각 1, 1, c1, 및 Nsc*c1 이고, 상기 복제된 액티베이션(300d)의 폭 방향 디멘젼, 높이 방향 디멘젼, 및 채널 방향 디멘젼은 각각 w1, h1, 및 Nsc*c1 이고, 상기 분할 가중치(500)의 폭 방향 디멘젼, 높이 방향 디멘젼, 입력채널 방향 디멘젼, 및 출력채널 방향 디멘젼은 각각 w5, h5, 1, 및 Nsc*c1 이고, 상기 제2액티베이션(3000)의 폭 방향 디멘젼, 높이 방향 디멘젼, 및 채널 방향 디멘젼은 각각 w2, h2, 및 Nsc*c1 일 수 있다.
본 발명의 다른 관점에 따라, 휘발성 메모리를 포함하는 하드웨어 가속기 및 비휘발성 메모리를 포함하며, 신경망을 위해 제공된 제1액티베이션의 각 채널을 Nsc 개의 채널들로 분할한 제2액티베이션을 생성하는 액티베이션 변환방법을 실행하도록 되어 있는 컴퓨팅 장치가 제공될 수 있다. 이때, 상기 하드웨어 가속기가, [w1, h1, c1]의 디멘젼을 갖는 제1액티베이션(300)에 대하여 소정의 복제 가중치(400)로 제1콘볼루션 연산을 실행하여 복제된 액티베이션(300d)을 생성하는 단계; 및 상기 복제된 액티베이션(300d)에 대하여 소정의 분할 가중치(500)로 제2콘볼루션 연산을 실행하여 제2액티베이션(3000)을 생성하는 단계;를 실행하도록 되어 있다. 이때, 상기 복제 가중치(400)는 [1, 1, c1, Nsc*c1]의 디멘젼을 갖고, 상기 복제된 액티베이션(300d)은 [w1, h1, Nsc*c1]의 디멘젼을 갖고, 상기 분할 가중치(500)는 [w5, h5, 1, Nsc*c1]의 디멘젼을 갖고, 상기 제2액티베이션은 [w2, h2, Nsc*c1]의 디멘젼을 갖고, w1*h1=Nsc*w2*h2 이고, 그리고 w5*h5=Nsc 이다.
이때, 상기 분할 가중치(500)는 상기 제1액티베이션(300)의 제k 채널에 대응하는 제k 세트의 분할 커널들을 포함하며(k=1, ..., c1), 상기 제k 세트의 분할 커널들은 Nsc 개의 서로 다른 분할 커널들로 구성되며, 상기 분할 가중치(500)의 제m 세트의 분할 커널들과 제n 세트의 분할 커널들은 서로 동일한 것일 수 있다(m=1, ..., c1; n=1, ..., c1; m≠n).
이때, 상기 분할 가중치(500)는 상기 제1액티베이션(300)의 제k 채널에 대응하는 제k 세트의 분할 커널들을 포함하며(k=1, ..., c1), 그리고 상기 제k 세트의 분할 커널들 중 임의의 분할 커널을 구성하는 엘리먼트들 중 한 개는 '1'의 값을 갖고, 나머지 엘리먼트들은 모두 '0'의 값을 가질 수 있다.
이때, 상기 분할 가중치(500)가 상기 제2콘볼루션 연산을 위해 이동하는 폭 방향(w) 스트라이드 또는 높이 방향(h) 스트라이드는 2 이상일 수 있다.
이때, 상기 제1액티베이션(300)의 폭 방향 디멘젼, 높이 방향 디멘젼, 및 채널 방향 디멘젼은 각각 w1, h1, 및 c1 이고, 상기 복제 가중치(400)의 폭 방향 디멘젼, 높이 방향 디멘젼, 입력채널 방향 디멘젼, 및 출력채널 방향 디멘젼은 각각 1, 1, c1, 및 Nsc*c1 이고, 상기 복제된 액티베이션(300d)의 폭 방향 디멘젼, 높이 방향 디멘젼, 및 채널 방향 디멘젼은 각각 w1, h1, 및 Nsc*c1 이고, 상기 분할 가중치(500)의 폭 방향 디멘젼, 높이 방향 디멘젼, 입력채널 방향 디멘젼, 및 출력채널 방향 디멘젼은 각각 w5, h5, 1, 및 Nsc*c1 이고, 상기 제2액티베이션(3000)의 폭 방향 디멘젼, 높이 방향 디멘젼, 및 채널 방향 디멘젼은 각각 w2, h2, 및 Nsc*c1 일 수 있다.
본 발명에 따르면, S2D 변환을 위해 새로운 연산 모듈을 개발할 필요 없이, 신경망 연산을 위해 이미 제공되어 있는 콘볼루션 연산을 이용하여 S2D 변환을 할 수 있다는 효과가 있다. 만일 S2D 변환을 위해 콘볼루션 연산 모듈이 아닌 다른 제2연산 모듈을 개발해야 한다면, 상기 제2연산 모듈의 기능을 지원하는 하드웨어 가속기를 새로 설계해야 하는 문제가 발생할 수 있는데, 본 발명에 따르면 이러한 문제를 해결할 수 있다
도 1은 신경망에서 사용하는 액티베이션의 변환 개념을 예시한 것이다.
도 2는 본 발명의 일 실시예에 따라 제공되는, 신경망을 위해 제공된 제1액티베이션의 각 채널을 Nsc 개의 채널들로 분할한 제2액티베이션을 생성하는 액티베이션 변환방법을 나타낸 순서도이다.
도 3a는 도 2에 제시한 제1액티베이션을 예시한 것이다.
도 3b는 도 2에 제시한 복제 가중치를 예시한 것이다.
도 3c는 도 2에 제시한 복제된 액티베이션을 예시한 것이다.
도 3d는 도 2에 제시한 분할 가중치를 예시한 것이다.
도 4는 본 발명의 일 실시예에 따라 신경망의 액티베이션을 변환하는 액티베이션 변환방법을 나타낸 순서도이다.
도 5a는 [w1, h1, c1] 디멘젼의 제1액티베이션을 제1세트의 복제 커널로 콘볼루션 함으로써, 상기 제1액티베이션의 제1채널 Nsc 개만큼 복제하여 생성한 제1세트의 복제된 채널들을 생성하는 과정을 나타낸 것이다.
도 5b는 [w1, h1, c1] 디멘젼의 제1액티베이션을 제2세트의 복제 커널로 콘볼루션 함으로써, 상기 제1액티베이션의 제2채널을 Nsc 개만큼 복제하여 생성한 제2세트의 복제된 채널들을 생성하는 과정을 나타낸 것이다.
도 5c는 [w1, h1, c1] 디멘젼의 제1액티베이션을 제3세트의 복제 커널로 콘볼루션 함으로써, 상기 제1액티베이션의 제3채널을 Nsc 개만큼 복제하여 생성한 제3세트의 복제된 채널들을 생성하는 과정을 나타낸 것이다.
도 5d는, 도 5a, 도 5b, 및 도 5c에서 설명한 제1세트의 복제된 채널들, 제2세트의 복제된 채널들, 및 제3세트의 복제된 채널들을 결합하여, 상기 제1액티베이션이 총 Nsc 회 복제되어 생성된 복제된 액티베이션을 생성하는 개념을 나타낸 것이다.
도 6a는, 도 5a에 설명한 제1세트의 복제된 채널들로부터, 제1세트의 분할된 채널들을 생성하는 과정을 나타낸 것이다.
도 6b는, 도 5b에 설명한 제2세트의 복제된 채널들로부터, 제2세트의 분할된 채널들을 생성하는 과정을 나타낸 것이다.
도 6c는, 도 5c에 설명한 제3세트의 복제된 채널들로부터, 제3세트의 분할된 채널들을 생성하는 과정을 나타낸 것이다.
도 7a는, 도 6a에 설명한 제1세트의 분할된 채널들, 도 6b에 설명한 제2세트의 분할된 채널들, 및 도 6c에 설명한 제3세트의 분할된 채널들을 결합함으로써, [w1, h1, c1] 디멘젼의 제1액티베이션으로부터 [w2, h2, c2] 디멘젼을 갖는 제2액티베이션을 생성하는 과정을 나타낸 것이다.
도 7b는, 도 6a에 설명한 제1세트의 분할된 채널들, 도 6b에 설명한 제2세트의 분할된 채널들, 및 도 6c에 설명한 제3세트의 분할된 채널들을 결합함으로써, [w1, h1, c1] 디멘젼의 제1액티베이션으로부터 [w2, h2, c2] 디멘젼을 갖는 제2액티베이션을 생성하는 다른 과정을 나타낸 것이다.
도 8은 본 발명의 다른 실시예에 따라 신경망의 액티베이션을 변환하는 액티베이션 변환방법을 나타낸 순서도이다.
도 9a는, 제1액티베이션의 제1채널로부터, 제1세트의 분할된 채널들을 생성하는 과정을 나타낸 것이다.
도 9b는, 제1액티베이션의 제2채널로부터, 제2세트의 분할된 채널들을 생성하는 과정을 나타낸 것이다.
도 9c는, 제1액티베이션의 제3채널로부터, 제3세트의 분할된 채널들을 생성하는 과정을 나타낸 것이다.
도 10은 본 발명의 일 실시예에 따라 제공되는 액티베이션 변환방법이 실행되는 컴퓨팅 장치의 구조를 예시한 것이다.
이하, 본 발명의 실시예를 첨부한 도면을 참고하여 설명한다. 그러나 본 발명은 본 명세서에서 설명하는 실시예에 한정되지 않으며 여러 가지 다른 형태로 구현될 수 있다. 본 명세서에서 사용되는 용어는 실시예의 이해를 돕기 위한 것이며, 본 발명의 범위를 한정하고자 의도된 것이 아니다. 또한, 이하에서 사용되는 단수 형태들은 문구들이 이와 명백히 반대의 의미를 나타내지 않는 한 복수 형태들도 포함한다.
도 2는 본 발명의 일 실시예에 따라 제공되는, 신경망을 위해 제공된 제1액티베이션의 각 채널을 Nsc 개의 채널들로 분할한 제2액티베이션을 생성하는 액티베이션 변환방법을 나타낸 순서도이다.
단계(S110)에서, 컴퓨팅 장치가, [w1, h1, c1]의 디멘젼을 갖는 제1액티베이션(300)에 대하여 소정의 복제 가중치(400)로 제1콘볼루션 연산을 실행하여 복제된 액티베이션(300d)을 생성할 수 있다.
단계(S120)에서, 상기 컴퓨팅 장치가, 상기 복제된 액티베이션(300d)에 대하여 소정의 분할 가중치(500)로 제2콘볼루션 연산을 실행하여 제2액티베이션(3000)을 생성할 수 있다.
이때, 상기 복제 가중치(400)는 [1, 1, c1, Nsc*c1]의 디멘젼을 가질 수 있다.
그리고 이때, 상기 복제된 액티베이션(300d)은 [w1, h1, Nsc*c1]의 디멘젼을 가질 수 있다.
그리고 이때, 상기 분할 가중치(500)는 [w5, h5, 1, Nsc*c1]의 디멘젼을 가질 수 있다.
그리고 이때, 상기 제2액티베이션은 [w2, h2, Nsc*c1]의 디멘젼을 가질 수 있다.
그리고 이때, w1*h1=Nsc*w2*h2 일 수 있다.
그리고 이때, w5*h5=Nsc 일 수 있다.
이하, 도 3a, 도 3b, 도 3c, 도 3d, 및 도 3e를 통칭하여 도 3이라고 지칭할 수 있다.
도 3a는 도 2에 제시한 제1액티베이션을 예시한 것이다.
제1액티베이션(300)은 [w1, h1, c1]의 디멘젼을 갖는다. 도 3a의 예에서 [w1, h1, c1]=[4, 4, 3]이며, 제1액티베이션은 제1채널(310), 제2채널(320), 및 제3채널(330)을 갖는다.
도 3b는 도 2에 제시한 복제 가중치를 예시한 것이다.
복제 가중치(400)는 [w3, h3, ci3, co3]의 디멘젼을 갖는다. 도 3b의 예에서 [w3, h3, ci3, co3] = [1, 1, c1, Nsc*c1] = [1, 2, 3, 12] 이다.
여기서, w3 및 h3는 각각 '1'이라는 값으로 고정되어 있을 수 있다. 그리고 ci3 및 co3는 각각 상기 복제 가중치(400)의 입력채널 및 출력채널을 나타낸다. 이때, ci3는 제1액티베이션(300)의 채널 디멘젼의 값인 c1과 동일한 값으로 결정된다.
여기서 Nsc 는 제1액티베이션(300)에 속한 한 개의 채널(ex: 310)을 분할하여 생성하는 분할된 채널들(ex: 3101~3104)의 개수를 나타낸다. 도 3의 예에서 Nsc=4 이다. 그리고 co3는, 제1액티베이션(300)의 채널 디멘젼의 값인 c1와 상기 Nsc 의 곱에 의해 결정된다.
즉, 복제 가중치(400)의 디멘젼은 주어진 제1액티베이션(300)의 디멘젼의 크기와, 이로부터 변형하여 얻을 제2액티베이션(3000)의 디멘젼의 크기에 의해 결정될 수 있다.
복제 가중치(400)는 총 co3 개의 출력채널들을 갖는다. 이때, 상기 출력채널들을 각각 복제 커널이라고 지칭할 수도 있다. 따라서 복제 가중치(400)는 총 co3 개의 복제 채널들을 갖는다고 말할 수 있다.
이때, 상기 복제 가중치(400)는 상기 제1액티베이션(300)의 제k채널에 대응하는 제k세트의 복제 커널들을 포함할 수 있다(k=1, ..., c1). 도 3의 예에서, c1=3 이므로, 상기 복제 가중치(400)는, 상기 제1액티베이션(300)의 제1채널(310)에 대응하는 제1세트의 복제 커널들(411~414), 상기 제1액티베이션(300)의 제2채널(320)에 대응하는 제2세트의 복제 커널들(421~424), 및 상기 제1액티베이션(300)의 제3채널(330)에 대응하는 제3세트의 복제 커널들(431~434)로 구성된다.
이때, 상기 제k세트의 복제 커널들은 상기 Nsc 개의 서로 동일한 복제 커널들로 구성될 수 있다. 예컨대 상기 제1세트의 복제 커널들(411~414)는 모두 {1, 0, 0}이라는 값으로 이루어지고, 상기 제2세트의 복제 커널들(421~424)는 모두 {0, 1, 0}이라는 값으로 이루어지고, 상기 제3세트의 복제 커널들(431~434)는 모두 {0, 0, 1}이라는 값으로 이루어진다.
그리고 서로 다른 세트에 속한 복제 커널들은 서로 다른 값들로 구성될 수 있다. 예컨대 제1세트의 복제 커널들에 속한 복제 커널(411)은 {1, 0, 0}이라는 값으로 이루어지지만, 제2세트의 복제 커널들에 속한 복제 커널(421)은 {0, 1, 0}이라는 값으로 이루어진다는 점에서 서로 다르다.
이때, 상기 제k세트의 복제 커널들은 상기 Nsc 개의 서로 동일한 복제 커널들로 구성될 수 있으며, 상기 각각의 복제 커널들은 [1, 1, ci]의 디멘젼을 갖는다. 이때, 상기 각각의 복제 커널들의 k번째 입력채널의 엘리먼트의 값은 '1'이고 나머지 다른 입력채널의 엘리먼트의 값은 '0'이다.
예컨대, 도 3b에서, 제1세트의 복제 커널들(411~414) 각각의 제1번째 입력채널의 엘리먼트의 값은 '1'이고 나머지 다른 입력채널의 엘리먼트의 값은 '0'이다. 그리고 도 3b에서, 제2세트의 복제 커널들(421~424) 각각의 제2번째 입력채널의 엘리먼트의 값은 '1'이고 나머지 다른 입력채널의 엘리먼트의 값은 '0'이다. 도 3b에서, 제3세트의 복제 커널들(431~434) 각각의 제3번째 입력채널의 엘리먼트의 값은 '1'이고 나머지 다른 입력채널의 엘리먼트의 값은 '0'이다.
도 3c는 도 2에 제시한 복제된 액티베이션을 예시한 것이다.
복제된 액티베이션(300d)은 [w4, h4, c4] = [w1, h1, Nsc*c1] 의 디멘젼을 갖는다. 도 3c의 예에서 [w4, h4, c4]=[4, 4, 12]이다.
이때, 복제된 액티베이션(300d)의 폭 방향 디멘젼 w4와 높이 방향 디멘젼 h4는 제1액티베이션(300)의 폭 방향 디멘젼 w1와 높이 방향 디멘젼 h1와 동일한 값을 갖는다.
그리고 복제된 액티베이션(300d)의 채널 방향 디멘젼 c4는, 제1액티베이션(300)의 채널 방향 디멘젼 c1에 상기 Nsc의 값을 곱한 값으로 결정된다.
도 3d는 도 2에 제시한 분할 가중치를 예시한 것이다.
분할 가중치(500)는 [w5, h5, ci5, co5] = [w5, h5, 1, co5] = [w5, h5, 1, Nsc*c1] 의 디멘젼을 갖는다. 도 3d의 예에서 [w5, h5, ci5, co5] = [2, 2, 1, 12] 이다.
여기서, ci5는 '1'이라는 값으로 고정되어 있을 수 있다. 그리고 ci5 및 co5는 각각 상기 분할 가중치(500)의 입력채널 및 출력채널을 나타낸다. 이때, co5는 제1액티베이션(300)의 채널 디멘젼의 값인 c1에 Nsc를 곱한 값으로 결정된다.
상기 분할 가중치(500)는 상기 제1액티베이션(300)의 제k채널에 대응하는 제k세트의 분할 커널들을 포함할 수 있다(k=1, ..., c1). 도 3의 예에서, c1=3 이므로, 상기 분할 가중치(500)는, 상기 제1액티베이션(300)의 제1채널(310)에 대응하는 제1세트의 분할 커널들(511~514), 상기 제1액티베이션(300)의 제2채널(320)에 대응하는 제2세트의 분할 커널들(521~524), 및 상기 제1액티베이션(300)의 제3채널(330)에 대응하는 제3세트의 분할 커널들(531~534)로 구성된다.
상기 제k세트의 분할 커널들은 Nsc 개의 서로 다른 분할 커널들로 구성된다. 예컨대 제1세트의 분할 커널들은 Nsc=4 개의 서로 다른 분할 커널들로 구성된다. 상기 제1세트의 분할 커널들에 속한 분할 커널(511), 분할 커널(512), 분할 커널(513), 및 분할 커널(514)은 각각 {1, 0, 0, 0}, {0, 1, 0, 0}, {0, 0, 0, 1}, 및 {0, 0, 1, 0}이라는 서로 다른 조합의 값들로 구성되어 있다. 이때, 상기 {a, b, c, d}는 각 분할 커널의 왼쪽 위 모서리의 엘리먼트로부터 시계방향을 따라 순서대로 발견되는 엘리먼트들의 값을 의미한다.
상기 분할 가중치(500)의 제m 세트의 분할 커널들과 제n 세트의 분할 커널들은 서로 동일한 것일 수 있다(m=1, ..., c1; n=1, ..., c1; m≠n). 예컨대 제1세트의 분할 커널들(511~514)과 제2세트의 분할 커널들(521~524)은 서로 동일하다.
이때, 상기 제k세트의 분할 커널들 중 임의의 분할 커널을 구성하는 엘리먼트들 중 한 개의 엘리먼트는 '1'의 값을 갖고, 나머지 엘리먼트들은 모두 '0'의 값을 갖는다.
예컨대, 도 3d에서, 상기 제1세트의 분할 커널들(511~514) 중 임의의 분할 커널(ex 511)을 구성하는 엘리먼트들 중 한 개의 엘리먼트는 '1'의 값을 갖고, 나머지 엘리먼트들은 모두 '0'의 값을 갖는다.
도 3e는 도 2에 제시한 제2액티베이션을 예시한 것이다.
제2액티베이션(3000)은 [w2, h2, c2] = [w2, h2, Nsc*c1] 의 디멘젼을 갖는다. 도 3e의 예에서 [w2, h2, c2]=[2, 2, 12]이다.
이때, 일 실시예에서 w1*h1=w2*w2*Nsc 의 관계를 갖는다.
이때, 제2액티베이션(3000)의 채널 방향 디멘젼 c2는, 제1액티베이션(300)의 채널 방향 디멘젼 c1에 상기 Nsc의 값을 곱한 값으로 결정된다.
도 2에서 설명하였듯이, 제2액티베이션(3000)은 상기 복제된 액티베이션(300d)에 대하여 상기 분할 가중치(500)로 제2콘볼루션 연산을 실행하여 생성한 것이다.
이때, 상기 분할 가중치(500)가 상기 제2콘볼루션 연산을 위해 이동하는 폭 방향(w) 스트라이드 또는 높이 방향(h) 스트라이드는 2 이상이다. 도 3에 나타낸 예에서, 상기 분할 가중치(500)는 상기 복제된 액티베이션(300d)에 대하여 폭 방향(w) 및 높이 방향(h)에 대하여 각각 스트라이드 2로 이동하여 콘볼루션된다.
도 2 및 도 3을 통해 설명한 제1액티베이션을 제2액티베이션으로 변환하는 액티베이션 변환방법에서는 상술한 제1콘볼루션 연산 및 제2콘볼루션 연산이라는 총 2번의 콘볼루션 연산만 실행되었다. 상술한 제1콘볼루션 연산 및 제2콘볼루션 연산은 상기 컴퓨팅 장치의 하드웨어 가속기에서 지원하는 연산일 수 있다.
이와 비교하여, 컴퓨팅 장치의 OS에서 실행되는 응용 프로그램은 소정의 소프트웨어 알고리즘을 이용하여 상기 컴퓨팅 장치의 메모리에 저장되어 있는 상기 제1액티베이션을 조작하여 상기 제2액티베이션으로 변환하고, 상기 변환된 제2액티베이션을 상기 메모리에 저장할 수 있다. 그러나 이 경우 OS에서 동작하는 응용 프로그램에 의해 변환되는 것이므로, 상기 하드웨어 가속기로 변환하는 과정에 비해 느리고 전력소모 역시 크다는 단점이 있다.
또 다른 비교예로서, 컴퓨팅 장치의 하드웨어 가속기를 설계할 때에, 상기 하드웨어 가속기에 입력된 제1액티베이션을 제2액티베이션으로 변환하도록 설계할 수 있는데, 이때 상술한 제1콘볼루션 연산 및 제2콘볼루션 연산의 조합이 아닌 다른 방식으로 구현할 수도 있다. 그러나 이 경우 하드웨어를 새로 설계해야 한다는 단점이 있다.
따라서 도 2 및 도 3에 제시한 액티베이션 변환방법은, 이미 판매되고 있는 신경망 구현을 위한 하드웨어 가속기를 그대로 이용하여 빠르게 액티베이션을 변환할 수 있는 효과적인 방법이다.
이하, 도 2 및 도 3에 제시한 액티베이션 변환방법의 동작원리를 좀 더 구체적으로 설명한다. 이하 설명하는 내용은 도 2 및 도 3에 제시한 액티베이션 변환방법의 동작원리를 이해하는데 도움이 될 수 있다. 또는, 이하 설명하는 내용은, 도 2 및 도 3에 제시한 액티베이션 변환방법 대신에 사용될 수 있는 방법으로서, 이미 설계되어 있는 신경망 하드웨어 가속기를 이용하여 구현될 수 있는 방법일 수 있다.
도 4는 본 발명의 일 실시예에 따라 신경망의 액티베이션을 변환하는 액티베이션 변환방법을 나타낸 순서도이다.
단계(S210)에서, [w1, h1, c1] 디멘젼을 갖는 제1액티베이션(300)을 소정의 복제 가중치(411~414, 421~424, 431~434)로 콘볼루션 함으로써, 상기 제1액티베이션(300)을 Nsc 개 포함하는 복제된 액티베이션(311~314, 321~324, 331~334)을 생성할 수 있다.
이때, Nsc은 제1액티베이션(300)의 각 채널을 분할하여 생성할 분할된 채널들의 총 개수이고, 그리고 c1 는 제1액티베이션(300)의 채널의 개수이다.
단계(S220)에서, 상기 복제된 액티베이션(311~314, 321~324, 331~334) 중 제k세트의 채널들에 대하여, 제k세트의 분할 커널들로 각각 콘볼루션 연산을 수행함으로써, 제k세트의 분할된 채널들을 생성할 수 있다(k=1, ..., c1).
이때, 상기 제k세트의 채널들은, 상기 제1액티베이션(300)의 제k채널을 복제하여 얻은 Nsc 개의 채널들이다. 그리고 상기 제k세트의 분할 커널들은 Nsc 개의 서로 다른 분할 커널들로 구성된다. 그리고 상기 제k세트의 분할된 채널들은 Nsc 개의 분할된 채널들로 구성된다.
이때, 제j세트의 분할 커널들과 제i세트의 분할 커널들은 동일한 것일 수 있다(i=1, ..., c1, k=1, ..., c1, i≠j).
단계(S230)에서, 상기 제1액티베이션(300)의 모든 채널에 대하여 생성된 모든 분할된 채널들을 재배치하여 [w2, h2, c2] 디멘젼을 갖는 제2액티베이션(3000)을 생성할 수 있다.
이때, c2 = c1 * Nsc 이고, w1 * h1 = Nsc * w2 * h2 이다.
상기 재배치를 위한 소정의 규칙은 한 가지 규칙으로 제한되는 것은 아니다.
도 4에 설명한 신경망의 액티베이션을 변환하는 방법의 구체적인 실시예를 이하 다른 도면과 함께 더 자세히 설명한다.
후술하는 도 5a, 도 5b, 도 5c, 및 도 5d는 통칭하여 도 5라고 지칭할 수 있다.
도 5에서 예시한 제1액티베이션(300)은 [w1, h1, c1] 디멘젼을 갖는 텐서로서, w1=4, h1=4, 및 c1=3인 예를 나타낸다.
도 5a는 [w1, h1, c1] 디멘젼의 제1액티베이션을 제1세트의 복제 커널(411~414)로 콘볼루션 함으로써, 상기 제1액티베이션(300)의 제1채널(310)을 Nsc 개만큼 복제하여 생성한 제1세트의 복제된 채널들(311~314)을 생성하는 과정을 나타낸 것이다. 제1세트의 복제된 채널들(311~314)은 소정의 메모리에 임시로 또는 반영구적으로 저장될 수 있다. 도 5a의 예에서 Nsc=4이다.
이때, 상기 제1세트의 복제 커널들(411~414)은 Nsc 개의 복제 커널들로 구성되며, 모두 동일한 값들로 구성된다. 그리고 각각의 복제 커널은 c1 (=3)개의 입력채널들 갖는데, 각각의 입력채널은 오직 한 개의 데이터만으로 구성되며, 이 중 제1입력채널은 '1'의 값을 갖고 나머지 제2입력채널과 제3입력채널은 '0'의 값을 갖는다. 상기 각각의 복제 커널을 상기 제1액티베이션(300)에 콘볼루션 하는 과정은 도 5a에 점선으로 표시한 방향으로 Stride=1로 이동하면서 이루어진다.
도 5b는 [w1, h1, c1] 디멘젼의 제1액티베이션을 제2세트의 복제 커널(421~424)로 콘볼루션 함으로써, 상기 제1액티베이션(300)의 제2채널(320)을 Nsc 개만큼 복제하여 생성한 제2세트의 복제된 채널들(321~324)을 생성하는 과정을 나타낸 것이다. 제2세트의 복제된 채널들(321~324)은 소정의 메모리에 임시로 또는 반영구적으로 저장될 수 있다. 도 5b의 예에서 Nsc=4이다.
이때, 상기 제2세트의 복제 커널들(421~424)은 Nsc 개의 복제 커널들로 구성되며, 모두 동일한 값들로 구성된다. 그리고 각각의 복제 커널은 c1 (=3) 개의 입력채널들 갖는데, 각각의 입력채널은 오직 한 개의 데이터만으로 구성되며, 이 중 제2입력채널은 '1'의 값을 갖고 나머지 제1입력채널과 제3입력채널은 '0'의 값을 갖는다. 상기 각각의 복제 커널을 상기 제1액티베이션(300)에 콘볼루션 하는 과정은 도 5b에 점선으로 표시한 방향으로 Stride=1로 이동하면서 이루어진다.
도 5c는 [w1, h1, c1] 디멘젼의 제1액티베이션을 제3세트의 복제 커널(431~434)로 콘볼루션 함으로써, 상기 제1액티베이션(300)의 제3채널(330)을 Nsc 개만큼 복제하여 생성한 제3세트의 복제된 채널들(331~334)을 생성하는 과정을 나타낸 것이다. 제3세트의 복제된 채널들(331~334)은 소정의 메모리에 임시로 또는 반영구적으로 저장될 수 있다. 도 5c의 예에서 Nsc=4이다.
이때, 상기 제3세트의 복제커널들(431~434)은 Nsc 개의 복제 커널들로 구성되며, 모두 동일한 값들로 구성된다. 그리고 각각의 복제 커널은 c1 (=3)개의 입력채널들 갖는데, 각각의 입력채널은 오직 한 개의 데이터만으로 구성되며, 이 중 제3입력채널은 '1'의 값을 갖고 나머지 제1입력채널과 제2입력채널은 '0'의 값을 갖는다. 상기 각각의 복제 커널을 상기 제1액티베이션(300)에 콘볼루션 하는 과정은 도 5c에 점선으로 표시한 방향으로 Stride=1로 이동하면서 이루어진다.
상술한 제1세트의 복제 커널(411~414), 제2세트의 복제 커널(421~424), 그리고 제3세트의 복제 커널(431~434)들로 구성되는 텐서를 '복제 가중치'라고 지칭할 수 있다. 상기 복제 가중치는 [1, 1, c1, Nsc*c1] 의 디멘젼을 갖는다는 점을 이해할 수 있다. 이때, 제1세트의 복제 커널(411~414), 제2세트의 복제 커널(421~424), 그리고 제3세트의 복제 커널(431~434)은 각각 상기 복제 가중치의 제1세트의 출력채널, 제2세트의 출력채널, 및 제3세트의 출력채널인 것으로 이해할 수 있다.
도 5a, 도 5b, 및 도 5c에서 설명한 개념을 일반화하면 다음과 같이 서술할 수 있다.
즉, [w1, h1, c1] 디멘젼의 제1액티베이션을 복제 가중치의 제k세트의 복제 커널로 콘볼루션 함으로써, 상기 제1액티베이션(300)의 제k채널을 Nsc 개만큼 복제한 제k세트의 복제된 채널들을 생성할 수 있다. 이때, k는 1 내지 c1의 자연수이다. 제k세트의 복제된 채널들은 소정의 메모리에 임시로 또는 반영구적으로 저장될 수 있다. 도 5a의 예에서 Nsc=4이다.
이때, 상기 제k세트의 복제 커널들은 Nsc 개의 복제 커널들로 구성되며, 모두 동일한 값들로 구성된다. 그리고 각각의 복제 커널은 c1 (=3) 개의 입력채널들을 갖는다. 그리고 상기 Nsc 개의 복제 커널들은 모두 서로 동일한 값을 갖는다. 그리고 한 개의 복제 커널에 포함된 각각의 입력채널은 오직 한 개의 데이터만으로 구성되며, 이 중 제k번째 입력채널은 '1'의 값을 갖고 나머지 입력채널들은 '0'의 값을 갖는다. 상기 복제 커널은 상기 제1액티베이션(300)에 대해 Stride=1로 이동하면서 콘볼루션 된다.
도 5d는, 도 5a, 도 5b, 및 도 5c에서 설명한 제1세트의 복제된 채널들(311~314), 제2세트의 복제된 채널들(321~324), 및 제3세트의 복제된 채널들(331~334)을 결합하여, 상기 제1액티베이션(300)이 총 Nsc 회 복제되어 생성된 복제된 액티베이션(300d)을 생성하는 개념을 나타낸 것이다.
후술하는 도 6a, 도 6b, 및 도 6c는 통칭하여 도 6이라고 지칭할 수 있다.
도 6a는, 도 5a에 설명한 제1세트의 복제된 채널들(311~314)로부터, 제1세트의 분할된 채널들(3100)을 생성하는 과정을 나타낸 것이다.
제1세트의 복제된 채널들(311~314)에 제1세트의 분할 커널들(511~514)을 콘볼루션 하여 제1세트의 분할된 채널들(3101~3104)을 생성할 수 있다.
이때, 제1세트의 복제된 채널들(311~314)에 포함된 복제된 채널들의 총 개수가 Nsc 라고 가정하면, 제1세트의 분할 커널들(511~514)을 구성하는 분할 커널들의 총 개수 역시 Nsc 이다.
그리고 이때, 각각의 분할 커널(511, 512, 513, or 514)은 Nsc 개의 엘리먼트를 가질 수 있다.
이때, 각각의 분할 커널(511, 512, 513, 또는 514)은 서로 다른 값을 갖는 커널이다. 각각의 분할 커널의 엘리먼트들이 갖는 값들은 복제된 채널(311, 312, 313, or 314)에 속한 데이터 중 특정 그룹의 데이터를 추출하여 분리하도록 세팅된다. 이를 위해 분할 커널이 폭(w) 방향 또는 높이(h) 방향으로 이동하는 Stride는 1보다 큰 값을 가질 수 있다.
본 발명은 [w1, h1, c1] 디멘젼의 상기 제1액티베이션(300)의 각 채널에 속한 데이터를 Nsc 개의 그룹으로 분할하여 Nsc 개의 분할된 채널들로 재구성하는 방법에 관한 것이다. 이때, 상기 제1액티베이션(300)의 각 채널 내에서 각각의 그룹이 차지하는 영역의 모양은 필요성에 따라 다양한 모양으로 제시될 수 있다. 예컨대 제1그룹에 속한 데이터들이 서로 인접하지 않고 제2그룹에 속한 데이터들이 서로 인접하지 않도록 제1그룹의 영역과 제2그룹의 영역의 모양이 정의될 수 있다. 또는 제1그룹에 속한 데이터들이 서로 인접하도록, 제2그룹에 속한 데이터들이 서로 인접하도록 제1그룹의 영역과 제2그룹의 영역의 모양이 정의될 수 있다. 상기 분할 커널들의 디멘젼 및 상기 분할 커널들에 포함된 엘리먼트들의 구체적인 값들은, 상기 제1액티베이션(300)의 각 채널 내에서 각각의 그룹이 차지하는 영역의 모양에 종속되어 설계될 수 있다.
일 실시예에서 각각의 분할 커널(511, 512, 513, 또는 514)이 갖는 총 Nsc 개의 엘리먼트 중 어느 하나의 엘리먼트는 '1'의 값을 갖고, 나머지 다른 엘리먼트들은 모두 '0'의 값을 가질 수 있다. 이때, 상기 분할 커널이 상기 복제된 채널(311, 312, 313, or 314)에 속한 데이터 중 특정 그룹의 데이터를 추출하도록 되어 있다면, 상기 분할 커널 내에서 상기 '1'의 값을 갖는 엘리먼트의 위치는 복제된 채널(311, 312, 313, or 314)이 갖는 데이터 중 상기 특정 그룹에 속한 데이터의 위치에 대응한다.
이하, 도 6a를 참조하여 더 구체적으로 예시하여 설명한다.
제1세트의 복제된 채널들(311~314)에 포함된 복제된 채널들의 총 개수는 Nsc 이다(Nsc=4). 그리고 제1세트의 분할 커널들(511~514)을 구성하는 분할 커널들의 총 개수 역시 Nsc 이다(Nsc=4).
그리고 이때, 각각의 분할 커널(511, 512, 513, or 514)은 Nsc 개의 엘리먼트들을 가질 수 있다(Nsc=4). 예컨대 분할 커널(511)은 왼쪽 위부터 시계방향으로 '1', '0', '0', '0' 이라는 값을 갖는 Nsc 개의 엘리먼트들을 갖는다(Nsc=4).
이때, 각각의 분할 커널(511, 512, 513, 또는 514)은 서로 다른 값을 갖는 커널이다. 즉 예컨대 분할 커널(511), 분할 커널(512), 분할 커널(513), 및 분할 커널(514)은 각각, 왼쪽 위부터 시계방향으로 '1', '0', '0', '0' 이라는 값들, '0', '1', '0', '0' 이라는 값들, '0', '0', '1', '0' 이라는 값들, 그리고 '0', '0', '0', '1' 이라는 값들을 갖는다.
상술한 바와 같이, 각각의 분할 커널(511, 512, 513, 또는 514)이 갖는 총 Nsc 개의 엘리먼트 중 어느 하나의 엘리먼트는 '1'의 값을 갖고, 나머지 다른 엘리먼트들은 모두 '0'의 값을 가질 수 있다(Nsc=4).
그리고 분할 커널(511), 분할 커널(512), 분할 커널(513), 및 분할 커널(514)은 각각, 복제된 채널(311)에 속한 데이터 중 제1그룹(G1)의 데이터를 추출하여 분리하고, 복제된 채널(312)에 속한 데이터 중 제2그룹(G2)의 데이터를 추출하여 분리하고, 복제된 채널(313)에 속한 데이터 중 제3그룹(G3)의 데이터를 추출하여 분리하고, 복제된 채널(314)에 속한 데이터 중 제4그룹(G4)의 데이터를 추출하여 분리한다.
이때, 도 6a에 나타낸 실시예에서, 각각의 분할 커널(511, 512, 513, 또는 514)이 폭(w) 방향 또는 높이(h) 방향으로 이동하는 Stride는 2이다.
이때, 상기 분할 커널이 상기 복제된 채널(311, 312, 313, or 314)에 속한 데이터 중 특정 그룹의 데이터를 추출하도록 되어 있다면, 상기 분할 커널 내에서 상기 '1'의 값을 갖는 엘리먼트의 위치는 복제된 채널(311, 312, 313, or 314)이 갖는 데이터 중 상기 특정 그룹에 속한 데이터의 위치에 대응한다.
도 6b는, 도 5b에 설명한 제2세트의 복제된 채널들(321~324)로부터, 제2세트의 분할된 채널들(3200)을 생성하는 과정을 나타낸 것이다.
제2세트의 복제된 채널들(321~324)에 제2세트의 분할 커널들(521~524)을 콘볼루션 하여 제2세트의 분할된 채널들(3201~3204)을 생성할 수 있다.
도 6b에 제시한 제2세트의 분할된 채널들(3201~3204)을 생성하는 과정은 도 6a에 제시한 제1세트의 분할된 채널들(3101~3104)을 생성하는 과정과 동일하다는 점을 쉽게 이해할 수 있다.
이하, 도 6b를 참조하여 더 구체적으로 예시하여 설명한다.
제2세트의 복제된 채널들(321~324)에 포함된 복제된 채널들의 총 개수는 Nsc 이다(Nsc=4). 그리고 제2세트의 분할 커널들(521~524)을 구성하는 분할 커널들의 총 개수 역시 Nsc 이다(Nsc=4).
그리고 이때, 각각의 분할 커널(521, 522, 523, or 524)은 Nsc 개의 엘리먼트들을 가질 수 있다(Nsc=4). 예컨대 분할 커널(521)은 왼쪽 위부터 시계방향으로 '1', '0', '0', '0' 이라는 값을 갖는 Nsc 개의 엘리먼트들을 갖는다(Nsc=4).
이때, 각각의 분할 커널(521, 522, 523, 또는 524)은 서로 다른 값을 갖는 커널이다. 즉 예컨대 분할 커널(521), 분할 커널(522), 분할 커널(523), 및 분할 커널(524)은 각각, 왼쪽 위부터 시계방향으로 '1', '0', '0', '0' 이라는 값들, '0', '1', '0', '0' 이라는 값들, '0', '0', '1', '0' 이라는 값들, 그리고 '0', '0', '0', '1' 이라는 값들을 갖는다.
상술한 바와 같이, 각각의 분할 커널(521, 522, 523, 또는 524)이 갖는 총 Nsc 개의 엘리먼트 중 어느 하나의 엘리먼트는 '1'의 값을 갖고, 나머지 다른 엘리먼트들은 모두 '0'의 값을 가질 수 있다(Nsc=4).
그리고 분할 커널(521), 분할 커널(522), 분할 커널(523), 및 분할 커널(524)은 각각, 복제된 채널(321)에 속한 데이터 중 제1그룹(G1)의 데이터를 추출하여 분리하고, 복제된 채널(322)에 속한 데이터 중 제2그룹(G2)의 데이터를 추출하여 분리하고, 복제된 채널(323)에 속한 데이터 중 제3그룹(G3)의 데이터를 추출하여 분리하고, 복제된 채널(324)에 속한 데이터 중 제4그룹(G4)의 데이터를 추출하여 분리한다.
이때, 각각의 분할 커널(521, 522, 523, 또는 524)이 폭(w) 방향 또는 높이(h) 방향으로 이동하는 Stride는 2이다.
이때, 상기 분할 커널이 상기 복제된 채널(321, 322, 323, or 324)에 속한 데이터 중 특정 그룹의 데이터를 추출하도록 되어 있다면, 상기 분할 커널 내에서 상기 '1'의 값을 갖는 엘리먼트의 위치는 복제된 채널(321, 322, 323, or 324)이 갖는 데이터 중 상기 특정 그룹에 속한 데이터의 위치에 대응한다.
도 6c는, 도 5c에 설명한 제3세트의 복제된 채널들(331~334)로부터, 제3세트의 분할된 채널들(3300)을 생성하는 과정을 나타낸 것이다.
제3세트의 복제된 채널들(331~334)에 제3세트의 분할 커널들(531~534)을 콘볼루션 하여 제3세트의 분할된 채널들(3301~3304)을 생성할 수 있다.
도 6c에 제시한 제3세트의 분할된 채널들(3301~3304)을 생성하는 과정은 도 6a에 제시한 제1세트의 분할된 채널들(3101~3104)을 생성하는 과정과 동일하다는 점을 쉽게 이해할 수 있다.
이하, 도 6c를 참조하여 더 구체적으로 예시하여 설명한다.
제3세트의 복제된 채널들(331~334)에 포함된 복제된 채널들의 총 개수는 Nsc 이다(Nsc=4). 그리고 제3세트의 분할 커널들(531~534)을 구성하는 분할 커널들의 총 개수 역시 Nsc 이다(Nsc=4).
그리고 이때, 각각의 분할 커널(531, 532, 533, or 534)은 Nsc 개의 엘리먼트들을 가질 수 있다(Nsc=4). 예컨대 분할 커널(531)은 왼쪽 위부터 시계방향으로 '1', '0', '0', '0' 이라는 값을 갖는 Nsc 개의 엘리먼트들을 갖는다(Nsc=4).
이때, 각각의 분할 커널(531, 532, 533, 또는 534)은 서로 다른 값을 갖는 커널이다. 즉 예컨대 분할 커널(531), 분할 커널(532), 분할 커널(533), 및 분할 커널(534)은 각각, 왼쪽 위부터 시계방향으로 '1', '0', '0', '0' 이라는 값들, '0', '1', '0', '0' 이라는 값들, '0', '0', '1', '0' 이라는 값들, 그리고 '0', '0', '0', '1' 이라는 값들을 갖는다.
상술한 바와 같이, 각각의 분할 커널(531, 532, 533, 또는 534)이 갖는 총 Nsc 개의 엘리먼트 중 어느 하나의 엘리먼트는 '1'의 값을 갖고, 나머지 다른 엘리먼트들은 모두 '0'의 값을 가질 수 있다(Nsc=4).
그리고 분할 커널(531), 분할 커널(532), 분할 커널(533), 및 분할 커널(534)은 각각, 복제된 채널(331)에 속한 데이터 중 제1그룹(G1)의 데이터를 추출하여 분리하고, 복제된 채널(332)에 속한 데이터 중 제2그룹(G2)의 데이터를 추출하여 분리하고, 복제된 채널(333)에 속한 데이터 중 제3그룹(G3)의 데이터를 추출하여 분리하고, 복제된 채널(334)에 속한 데이터 중 제4그룹(G4)의 데이터를 추출하여 분리한다.
이때, 각각의 분할 커널(531, 532, 533, 또는 534)이 폭(w) 방향 또는 높이(h) 방향으로 이동하는 Stride는 2이다.
이때, 상기 분할 커널이 상기 복제된 채널(331, 332, 333, or 334)에 속한 데이터 중 특정 그룹의 데이터를 추출하도록 되어 있다면, 상기 분할 커널 내에서 상기 '1'의 값을 갖는 엘리먼트의 위치는 복제된 채널(331, 332, 333, or 334)이 갖는 데이터 중 상기 특정 그룹에 속한 데이터의 위치에 대응한다.
본 발명의 일 실시예에서, 상술한 제1세트의 분할 커널, 제2세트의 분할 커널, 및 제3세트의 분할 커널들로 구성되는 커널은 '분할 가중치'라고 지칭할 수 있다. 이때, 상기 분할 가중치는 [w5, h5, 1, co5] = [w2, h2, 1, Nsc * c1] 의 디멘젼을 갖는 것으로 간주될 수 있다. 여기서, 'co5'는 상기 분할 가중치가 포함하는 출력채널의 개수를 의미하며, '1'은 상기 분할 가중치의 입력채널의 개수를 의미한다. 이때, 제1세트의 분할 커널(511~514), 제2세트의 분할 커널(521~524), 그리고 제3세트의 분할 커널(531~534)은 각각 상기 분할 가중치의 제1세트의 출력채널, 제2세트의 출력채널, 및 제3세트의 출력채널인 것으로 이해할 수 있다.
본 발명의 다른 실시예에서, 상술한 제1세트의 분할 커널, 제2세트의 분할 커널, 및 제3세트의 분할 커널들은 서로 동일한 것일 수 있다. 따라서 제1세트의 분할 커널, 제2세트의 분할 커널, 및 제3세트의 분할 커널들 중 어느 하나만을 컴퓨팅 장치의 메모리에 저장한 후, 저장된 세트의 분할 커널을 재사용할 수 있다.
도 7a는, 도 6a에 설명한 제1세트의 분할된 채널들(3101~3104), 도 6b에 설명한 제2세트의 분할된 채널들(3201~3204), 및 도 6c에 설명한 제3세트의 분할된 채널들(3301~3304)을 결합함으로써, [w1, h1, c1] 디멘젼의 제1액티베이션(300)으로부터 [w2, h2, c2] 디멘젼을 갖는 제2액티베이션(3000)을 생성하는 과정을 나타낸 것이다.
상기 제1액티베이션(300) 중 임의의 어느 한 개의 채널을 분할하여 생성할 분할된 채널들의 개수를 Nsc 로 표기할 경우, c2 = c1 * Nsc 가 성립한다. 그리고 w1 * h1 = Nsc * w2 * h2 가 성립한다.
도 7b는, 도 6a에 설명한 제1세트의 분할된 채널들(3101~3104), 도 6b에 설명한 제2세트의 분할된 채널들(3201~3204), 및 도 6c에 설명한 제3세트의 분할된 채널들(3301~3304)을 결합함으로써, [w1, h1, c1] 디멘젼의 제1액티베이션(300)으로부터 [w2, h2, c2] 디멘젼을 갖는 제2액티베이션(3000)을 생성하는 다른 과정을 나타낸 것이다.
도 8은 본 발명의 다른 실시예에 따라 신경망의 액티베이션을 변환하는 액티베이션 변환방법을 나타낸 순서도이다.
단계(S310)에서, [w1, h1, c1] 디멘젼의 제1액티베이션(300) 중 제k채널(ex: 310)에 대하여, 제k세트의 분할 커널들(ex: 511~514)로 각각 콘볼루션 연산을 수행함으로써, 제k 세트의 분할된 채널들(ex: 3100)을 생성할 수 있다.
이때, 상기 제k세트의 분할 커널들은 Nsc 개의 서로 다른 분할 커널들로 구성된다.
이때, 상기 제k세트의 분할된 채널들(ex: 3100)은 Nsc 개의 분할된 채널들(ex: 3101~3104)로 구성된다.
이때, 상기 제k세트의 분할된 채널들이 포함하는 데이터는, 상기 제k채널이 포함하는 데이터를 모두 포함한다.
이때, 상기 제1액티베이션이 갖는 채널들의 개수는 c1 개(ex: 3개) 이다.
이때, 상기 Nsc은, 상기 제1액티베이션(300) 중 임의의 어느 한 개의 채널을 분할하여 생성할 분할된 채널들의 개수이다(ex: Nsc=4). 분할된 채널은 모두 동일한 디멘젼을 가질 수 있다.
상기 단계(S310)는 상기 제1액티베이션(300)을 구성하는 각각의 채널에 대하여 반복적으로 실행될 수 있다. 따라서 예컨대 상기 제1액티베이션(300)을 구성하는 채널들의 총 개수가 c1개이고, 각 채널을 분할하여 생성하는 분할된 채널들의 개수가 Nsc개라면, 상기 제1액티베이션(300)으로부터 총 Nsc * c1 개의 분할된 채널들이 생성될 수 있다.
상기 제1액티베이션(300)을 구성하는 제1채널에 적용된 상기 제1세트의 분할 커널은 상기 제1액티베이션(300)을 구성하는 다른 채널에도 그대로 적용될 수 있다.
단계(S320)에서, 생성된 모든 분할된 채널들을 소정의 규칙에 따라 재배치하여 [w2, h2, c2] 디멘젼을 갖는 제2액티베이션(3000)을 생성할 수 있다.
이때, w1 * h1 = Nsc * w2 * h2 라는 관계 및 c2 = c1 * Nsc > c1 이라는 관계가 성립한다.
이와 같이 생성된 제2액티베이션(3000)은 총 c2 = c1 * Nsc 개의 채널을 갖는다.
후술하는 도 9a, 도 9b, 및 도 9c는 통칭하여 도 9라고 지칭할 수 있다.
도 9a는, 제1액티베이션(300)의 제1채널(310)로부터, 제1세트의 분할된 채널들(3100)을 생성하는 과정을 나타낸 것이다.
제1채널(310)에 제1세트의 분할 커널들(511~514)을 콘볼루션 하여 제1세트의 분할된 채널들(3101~3104)을 생성할 수 있다.
이때, 제1세트의 분할 커널들(511~514)을 구성하는 분할 커널들의 총 개수 역시 Nsc 이다.
그리고 이때, 각각의 분할 커널(511, 512, 513, or 514)은 Nsc 개의 엘리먼트를 가질 수 있다.
이때, 각각의 분할 커널(511, 512, 513, 또는 514)은 서로 다른 값을 갖는 커널이다. 각각의 분할 커널의 엘리먼트들이 갖는 값들은 복제된 채널(311, 312, 313, or 314)에 속한 데이터 중 특정 그룹의 데이터를 추출하여 분리하도록 세팅된다. 이를 위해 분할 커널이 폭(w) 방향 또는 높이(h) 방향으로 이동하는 Stride는 1보다 큰 값을 가질 수 있다.
일 실시예에서 각각의 분할 커널(511, 512, 513, 또는 514)이 갖는 총 Nsc 개의 엘리먼트 중 어느 하나의 엘리먼트는 '1'의 값을 갖고, 나머지 다른 엘리먼트들은 모두 '0'의 값을 가질 수 있다. 이때, 상기 분할 커널이 상기 제1채널(310)에 속한 데이터 중 특정 그룹의 데이터를 추출하도록 되어 있다면, 상기 분할 커널 내에서 상기 '1'의 값을 갖는 엘리먼트의 위치는 상기 제1채널(310)이 갖는 데이터 중 상기 특정 그룹에 속한 데이터의 위치에 대응한다.
이하, 도 9a를 참조하여 더 구체적으로 예시하여 설명한다.
제1채널들(310)의 엘리먼트들은 총 Nsc 개의 그룹들 중 하나로 분류된다(Nsc=4). 그리고 제1세트의 분할 커널들(511~514)을 구성하는 분할 커널들의 총 개수 역시 Nsc 이다(Nsc=4).
그리고 이때, 각각의 분할 커널(511, 512, 513, or 514)은 Nsc 개의 엘리먼트들을 가질 수 있다(Nsc=4). 예컨대 분할 커널(511)은 왼쪽 위부터 시계방향으로 '1', '0', '0', '0' 이라는 값을 갖는 Nsc 개의 엘리먼트들을 갖는다(Nsc=4).
이때, 각각의 분할 커널(511, 512, 513, 또는 514)은 서로 다른 값을 갖는 커널이다. 즉 예컨대 분할 커널(511), 분할 커널(512), 분할 커널(513), 및 분할 커널(514)은 각각, 왼쪽 위부터 시계방향으로 '1', '0', '0', '0' 이라는 값들, '0', '1', '0', '0' 이라는 값들, '0', '0', '1', '0' 이라는 값들, 그리고 '0', '0', '0', '1' 이라는 값들을 갖는다.
상술한 바와 같이, 각각의 분할 커널(511, 512, 513, 또는 514)이 갖는 총 Nsc 개의 엘리먼트 중 어느 하나의 엘리먼트는 '1'의 값을 갖고, 나머지 다른 엘리먼트들은 모두 '0'의 값을 가질 수 있다(Nsc=4).
그리고 분할 커널(511), 분할 커널(512), 분할 커널(513), 및 분할 커널(514)은 각각, 제1채널(310)에 속한 데이터 중 제1그룹(G1), 제2그룹(G2), 제3그룹(G3), 및 제4그룹(G4)의 데이터를 추출하여 분리한다.
도 9에 나타낸 예에서, 각각의 분할 커널(511, 512, 513, 또는 514)이 폭(w) 방향 또는 높이(h) 방향으로 이동하는 Stride는 2이다.
이때, 상기 분할 커널이 상기 제1채널(310)에 속한 데이터 중 특정 그룹의 데이터를 추출하도록 되어 있다면, 상기 분할 커널 내에서 상기 '1'의 값을 갖는 엘리먼트의 위치는 제1채널(310)이 갖는 데이터 중 상기 특정 그룹에 속한 데이터의 위치에 대응한다.
이하, 도 9b를 참조하여 더 구체적으로 예시하여 설명한다.
제2채널들(320)의 엘리먼트들은 총 Nsc 개의 그룹들 중 하나로 분류된다(Nsc=4). 그리고 제2세트의 분할 커널들(521~524)을 구성하는 분할 커널들의 총 개수 역시 Nsc 이다(Nsc=4).
그리고 이때, 각각의 분할 커널(521, 522, 523, or 524)은 Nsc 개의 엘리먼트들을 가질 수 있다(Nsc=4). 예컨대 분할 커널(521)은 왼쪽 위부터 시계방향으로 '1', '0', '0', '0' 이라는 값을 갖는 Nsc 개의 엘리먼트들을 갖는다(Nsc=4).
이때, 각각의 분할 커널(521, 522, 523, 또는 524)은 서로 다른 값을 갖는 커널이다. 즉 예컨대 분할 커널(521), 분할 커널(522), 분할 커널(523), 및 분할 커널(524)은 각각, 왼쪽 위부터 시계방향으로 '1', '0', '0', '0' 이라는 값들, '0', '1', '0', '0' 이라는 값들, '0', '0', '1', '0' 이라는 값들, 그리고 '0', '0', '0', '1' 이라는 값들을 갖는다.
상술한 바와 같이, 각각의 분할 커널(521, 522, 523, 또는 524)이 갖는 총 Nsc 개의 엘리먼트 중 어느 하나의 엘리먼트는 '1'의 값을 갖고, 나머지 다른 엘리먼트들은 모두 '0'의 값을 가질 수 있다(Nsc=4).
그리고 분할 커널(521), 분할 커널(522), 분할 커널(523), 및 분할 커널(524)은 각각, 제2채널(320)에 속한 데이터 중 제1그룹(G1), 제2그룹(G2), 제3그룹(G3), 및 제4그룹(G4)의 데이터를 추출하여 분리한다.
이때, 각각의 분할 커널(521, 522, 523, 또는 524)이 폭(w) 방향 또는 높이(h) 방향으로 이동하는 Stride는 2이다.
이때, 상기 분할 커널이 상기 제2채널(320)에 속한 데이터 중 특정 그룹의 데이터를 추출하도록 되어 있다면, 상기 분할 커널 내에서 상기 '1'의 값을 갖는 엘리먼트의 위치는 제2채널(320)이 갖는 데이터 중 상기 특정 그룹에 속한 데이터의 위치에 대응한다.
상기 제2세트의 분할 커널들(521~524)은 상기 제1세트의 분할 커널들(511~514)을 동일한 것일 수 있다.
이하, 도 9c를 참조하여 더 구체적으로 예시하여 설명한다.
제3채널들(330)의 엘리먼트들은 총 Nsc 개의 그룹들 중 하나로 분류된다(Nsc=4). 그리고 제3세트의 분할 커널들(531~534)을 구성하는 분할 커널들의 총 개수 역시 Nsc 이다(Nsc=4).
그리고 이때, 각각의 분할 커널(531, 532, 533, or 534)은 Nsc 개의 엘리먼트들을 가질 수 있다(Nsc=4). 예컨대 분할 커널(531)은 왼쪽 위부터 시계방향으로 '1', '0', '0', '0' 이라는 값을 갖는 Nsc 개의 엘리먼트들을 갖는다(Nsc=4).
이때, 각각의 분할 커널(531, 532, 533, 또는 534)은 서로 다른 값을 갖는 커널이다. 즉 예컨대 분할 커널(531), 분할 커널(532), 분할 커널(533), 및 분할 커널(534)은 각각, 왼쪽 위부터 시계방향으로 '1', '0', '0', '0' 이라는 값들, '0', '1', '0', '0' 이라는 값들, '0', '0', '1', '0' 이라는 값들, 그리고 '0', '0', '0', '1' 이라는 값들을 갖는다.
상술한 바와 같이, 각각의 분할 커널(531, 532, 533, 또는 534)이 갖는 총 Nsc 개의 엘리먼트 중 어느 하나의 엘리먼트는 '1'의 값을 갖고, 나머지 다른 엘리먼트들은 모두 '0'의 값을 가질 수 있다(Nsc=4).
그리고 분할 커널(531), 분할 커널(532), 분할 커널(533), 및 분할 커널(534)은 각각, 제3채널(330)에 속한 데이터 중 제1그룹(G1), 제2그룹(G2), 제3그룹(G3), 및 제4그룹(G4)의 데이터를 추출하여 분리한다.
이때, 각각의 분할 커널(531, 532, 533, 또는 534)이 폭(w) 방향 또는 높이(h) 방향으로 이동하는 Stride는 2이다.
이때, 상기 분할 커널이 상기 제3채널(330)에 속한 데이터 중 특정 그룹의 데이터를 추출하도록 되어 있다면, 상기 분할 커널 내에서 상기 '1'의 값을 갖는 엘리먼트의 위치는 제3채널(330)이 갖는 데이터 중 상기 특정 그룹에 속한 데이터의 위치에 대응한다.
상기 제3세트의 분할 커널들(531~534)은 상기 제1세트의 분할 커널들(511~514)을 동일한 것일 수 있다.
상술한 바와 같이 상기 제1세트의 분할 커널들(511~514)을 제1액티베이션(300)의 모든 채널에 대하여 반복적으로 사용할 수 있다.
도 10은 본 발명의 일 실시예에 따라 제공되는 액티베이션 변환방법이 실행되는 컴퓨팅 장치의 구조를 예시한 것이다.
도 10은 본 발명의 일 실시예에서 이용되는 컴퓨팅 장치 중 일부의 주요 구조를 나타낸 것이다.
컴퓨팅 장치(1)는 신경망을 이용하여 소정의 연산을 수행하는 장치일 수 있다.
컴퓨팅 장치(1)는, DRAM(Dynamic Random Access Memory)(130), 하드웨어 가속기(110), DRAM(130)와 하드웨어 가속기(110)를 연결하는 버스(700), 및 버스(700)에 연결된 타 하드웨어들(99) 및 메인 프로세서(160)를 포함할 수 있다. 여기서 DRAM(130)은 메모리(130)로 지칭될 수 있다.
그 밖에 컴퓨팅 장치(1)는 도시되지 않은 전원부, 통신부, 사용자 인터페이스, 저장부(170), 및 주변 장치부들을 더 포함할 수 있다. 버스(700)는 상기 하드웨어 가속기(110)와 타 하드웨어들(99), 그리고 메인 프로세서(160)가 공유할 수도 있다.
상기 하드웨어 가속기(110)는 DMA부(Direct Memory Access part)(20), 제어부(40), 내부 메모리(30), 입력버퍼(650), 데이터 연산부(610), 및 출력버퍼(640)를 포함할 수 있다.
내부 메모리(30)에 임시 저장되는 데이터의 일부 또는 전부는 버스(700)를 통해 DRAM(130)으로부터 제공될 수 있다. 이때, DRAM(130)에 저장되어 있는 데이터를 내부 메모리(30)로 이동시키기 위하여, 제어부(40)와 DMA부(20)가 내부 메모리(30) 및 DRAM(130)을 제어할 수도 있다.
내부 메모리(30)에 저장되어 있던 데이터는 입력버퍼(650)를 통해 데이터 연산부(610)에게 제공될 수 있다.
상기 데이터 연산부(610)가 동작하여 생성된 출력값들은 출력버퍼(640)를 거쳐 상기 내부 메모리(30)에 저장될 수 있다. 상기 내부 메모리(30)에 저장된 상기 출력값들은 제어부(40) 및 DMA부(20)의 제어에 의해 DRAM(130)에 기록될 수도 있다.
제어부(40)는 DMA부(20), 내부 메모리(30), 및 상기 데이터 연산부(610)의 동작을 총괄하여 제어할 수 있다.
일 구현예에서, 상기 데이터 연산부(610)는 제1시구간 동안에는 제1연산기능을 수행하고 제2시구간 동안에는 제2연산기능을 수행할 수 있다. 예컨대 제1시구간 동안에는 신경망의 제1레이어의 입력 액티베이션으로부터 상기 제1레이어의 출력 액티베이션을 산출하는 연산기능을 수행하고, 제2시구간 동안에는 신경망의 제2레이어의 입력 액티베이션으로부터 상기 제2레이어의 출력 액티베이션을 산출하는 연산기능을 수행할 수 있다.
또는, 상기 데이터 연산부(610)는 제1시구간 동안에는 제1액티베이션(300)으로부터 복제된 액티베이션(300d)을 생성하는 기능을 수행하고, 제2시구간 동안에는 복제된 액티베이션(300d)으로부터 제2액티베이션(3000)을 생성하는 기능을 수행할 수 있다.
도 10에는, 상기 데이터 연산부(610)는 상기 하드웨어 가속기(110) 내에 1개가 제시되어 있다. 그러나 도시하지 않은 변형된 일 실시예에서, 도 10에 나타낸 상기 데이터 연산부(610)는 상기 하드웨어 가속기(110) 내에 복수 개 제공되어 각각 제어부(40)에 의해 요청된 연산을 병렬적으로 수행할 수도 있다.
일 구현예에서, 상기 데이터 연산부(610)는 그 출력데이터를 한 번에 출력하지 않고 시간에 따라 주어진 순서에 따라 순차적으로 출력할 수 있다.
도 10의 메모리(130)에는 완성된 신경망 정보가 저장되어 있을 수 있다.
일 시구간에서, 상기 하드웨어 가속기(110)는 메모리(130)에 저장되어 있는 신경망 정보 중 제k레이어가 출력해야 하는 제k출력 액티베이션을 산출할 수 있다. 이를 위하여 상기 메모리(130)에는 상기 제k레이어에 입력되는 제k입력 액티베이션 및 제k가중치가 저장되어 있을 수 있다. 상기 일 시구간에서 상기 하드웨어 가속기(110)는 상기 메모리(130)에 저장되어 있는 상기 제k입력 액티베이션 및 제k가중치를 버스(700)를 통해 읽어 들여 내부 메모리(30)에 임시로 저장한 후, 데이터 연산부(610)를 이용하여 상기 제k출력 액티베이션을 산출할 수 있다. 이러한 일련의 과정은 제어부(40)에 의해 제어될 수 있으며, 제어부(40)를 동작시키는 명령코드 중 적어도 일부는 메인 프로세서(160)에 의해 제공된 것일 수도 있다.
상기 제k입력 액티베이션은 예컨대 상술한 제1액티베이션(300)일 수 있다. 상기 제1액티베이션(300)으로부터 변환되어 생성된 상기 제2액티베이션(3000)은 상기 메모리(130)에 저장되었다가 다시 사용되거나, 또는 상기 내부 메모리(30)에 저장되었다가 다시 사용될 수 있다.
상술한 본 발명의 실시예들을 이용하여, 본 발명의 기술분야에 속하는 자들은 본 발명의 본질적인 특성에서 벗어나지 않는 범위 내에 다양한 변경 및 수정을 용이하게 실시할 수 있을 것이다. 특허청구범위의 각 청구항의 내용은 본 명세서를 통해 이해할 수 있는 범위 내에서 인용관계가 없는 다른 청구항에 결합될 수 있다.

Claims (10)

  1. 신경망을 위해 제공된 제1액티베이션의 각 채널을 Nsc 개의 채널들로 분할한 제2액티베이션을 생성하는 액티베이션 변환방법으로서,
    컴퓨팅 장치가, 폭 방향, 높이 방향, 및 채널 방향으로 각각 w1, h1, 및 c1 의 디멘젼을 갖는 제1액티베이션(300)에 대하여 폭 방향, 높이 방향, 입력채널 방향, 및 출력채널 방향으로 각각 1, 1, c1, 및 Nsc*c1 의 디멘젼을 갖는 복제 가중치(400)로 제1콘볼루션 연산을 실행하여 폭 방향, 높이 방향, 및 채널 방향으로 각각 w1, h1, 및 Nsc*c1 의 디멘젼을 갖는 복제된 액티베이션(300d)을 생성하는 단계; 및
    상기 컴퓨팅 장치가, 상기 복제된 액티베이션(300d)에 대하여 폭 방향, 높이 방향, 입력채널 방향, 및 출력채널 방향으로 각각 w5, h5, 1, 및 Nsc*c1 의 디멘젼을 갖는 분할 가중치(500)로 제2콘볼루션 연산을 실행하여 폭 방향, 높이 방향, 및 채널 방향으로 각각 w2, h2, 및 Nsc*c1 의 디멘젼을 갖는 제2액티베이션(3000)을 생성하는 단계;
    를 포함하며,
    상기 복제 가중치는 상기 제1액티베이션의 제k채널에 대응하는 제k세트의 복제 커널들을 포함하고, 상기 제k세트의 복제 커널들은 Nsc 개의 서로 동일한 커널들로 구성되어 있으며, 상기 제k세트의 복제 커널들 각각은 폭 방향, 높이 방향, 및 입력채널 방향으로 각각 1, 1, 및 c1 의 디멘젼을 가지고, 상기 제k세트의 복제 커널들 각각의 k번째 입력채널의 엘리먼트의 값은 1이며, 그리고 상기 제k세트의 복제 커널들 각각의 나머지 다른 입력채널들의 엘리먼트의 값은 0이고(단, k=1, ..., c1),
    상기 복제된 액티베이션은 상기 제1액티베이션의 제k채널을 Nsc 개 만큼 복제하여 생성한 제k세트의 복제된 채널들을 포함하고, 상기 제k세트의 복제된 채널들은 총 Nsc 개의 복제된 채널들로 구성되며, 그리고 상기 제k세트의 복제된 채널들 중 임의의 한 개의 채널은 상기 제1액티베이션을 상기 제k세트의 복제 커널들 중 어느 하나의 복제 커널로 폭 방향 및 높이 방향으로 각각 스트라이드 1로 콘볼루션하여 생성된 것이며(단, k=1, ..., c1),
    상기 분할 가중치는 상기 제k세트의 복제 커널들에 대응하는 제k세트의 분할 커널들을 포함하고, 상기 제k세트의 분할 커널들은 총 Nsc 개의 서로 다른 분할 커널들로 구성되며, 상기 제k세트의 분할 커널들 각각은 폭 방향, 높이 방향, 및 입력채널 방향으로 각각 w5, h5, 및 1 의 디멘젼을 가지고, w5*h5=Nsc 이며, 그리고 상기 제k세트의 분할 커널들의 각 분할 커널이 갖는 총 Nsc 개의 엘리먼트들 중 어느 하나의 엘리먼트는 1의 값을 갖고 나머지 다른 엘리먼트들은 모두 0의 값을 가지며(단, k=1, ..., c1),
    상기 제2액티베이션은 상기 제k세트의 복제된 채널들에 대응하는 제k세트의 분할된 채널들을 포함하고, 상기 제k세트의 분할된 채널들은 총 Nsc 개의 분할된 채널들로 구성되며, 그리고 상기 제k세트의 분할된 채널들 중 임의의 한 개의 채널은 상기 제k세트의 복제된 채널들 중 어느 한 개의 복제된 채널을 상기 제k세트의 분할 커널들 중 어느 한 개의 대응하는 분할 커널로 콘볼루션하여 생성된 것이며, 그리고
    w1*h1=Nsc*w2*h2 이고, Nsc는 2 이상의 자연수인,
    액티베이션 변환방법.
  2. 제1항에 있어서,
    상기 분할 가중치(500)의 제m 세트의 분할 커널들과 제n 세트의 분할 커널들은 서로 동일한 것인(m=1, ..., c1; n=1, ..., c1; m≠n);
    액티베이션 변환방법.
  3. 제1항에 있어서,
    상기 제k 세트의 분할 커널들은 상기 제1액티베이션(300)의 제k 채널에 대응하는,
    액티베이션 변환방법.
  4. 제1항에 있어서, 상기 분할 가중치(500)가 상기 제2콘볼루션 연산을 위해 이동하는 폭 방향(w) 스트라이드 또는 높이 방향(h) 스트라이드는 2 이상인, 액티베이션 변환방법.
  5. 삭제
  6. 휘발성 메모리를 포함하는 하드웨어 가속기 및 비휘발성 메모리를 포함하며, 신경망을 위해 제공된 제1액티베이션의 각 채널을 Nsc 개의 채널들로 분할한 제2액티베이션을 생성하는 액티베이션 변환방법을 실행하도록 되어 있는 컴퓨팅 장치로서,
    상기 하드웨어 가속기가,
    폭 방향, 높이 방향, 및 채널 방향으로 각각 w1, h1, 및 c1 의 디멘젼을 갖는 제1액티베이션(300)에 대하여 폭 방향, 높이 방향, 입력채널 방향, 및 출력채널 방향으로 각각 1, 1, c1, 및 Nsc*c1 의 디멘젼을 갖는 복제 가중치(400)로 제1콘볼루션 연산을 실행하여 폭 방향, 높이 방향, 및 채널 방향으로 각각 w1, h1, 및 Nsc*c1 의 디멘젼을 갖는 복제된 액티베이션(300d)을 생성하는 단계; 및
    상기 복제된 액티베이션(300d)에 대하여 폭 방향, 높이 방향, 입력채널 방향, 및 출력채널 방향으로 각각 w5, h5, 1, 및 Nsc*c1 의 디멘젼을 갖는 분할 가중치(500)로 제2콘볼루션 연산을 실행하여 폭 방향, 높이 방향, 및 채널 방향으로 각각 w2, h2, 및 Nsc*c1 의 디멘젼을 갖는 제2액티베이션(3000)을 생성하는 단계;
    를 실행하도록 되어 있고,
    상기 복제 가중치는 상기 제1액티베이션의 제k채널에 대응하는 제k세트의 복제 커널들을 포함하고, 상기 제k세트의 복제 커널들은 Nsc 개의 서로 동일한 커널들로 구성되어 있으며, 상기 제k세트의 복제 커널들 각각은 폭 방향, 높이 방향, 및 입력채널 방향으로 각각 1, 1, 및 c1 의 디멘젼을 가지고, 상기 제k세트의 복제 커널들 각각의 k번째 입력채널의 엘리먼트의 값은 1이며, 그리고 상기 제k세트의 복제 커널들 각각의 나머지 다른 입력채널들의 엘리먼트의 값은 0이고(단, k=1, ..., c1),
    상기 복제된 액티베이션은 상기 제1액티베이션의 제k채널을 Nsc 개 만큼 복제하여 생성한 제k세트의 복제된 채널들을 포함하고, 상기 제k세트의 복제된 채널들은 총 Nsc 개의 복제된 채널들로 구성되며, 그리고 상기 제k세트의 복제된 채널들 중 임의의 한 개의 채널은 상기 제1액티베이션을 상기 제k세트의 복제 커널들 중 어느 하나의 복제 커널로 폭 방향 및 높이 방향으로 각각 스트라이드 1로 콘볼루션하여 생성된 것이며(단, k=1, ..., c1),
    상기 분할 가중치는 상기 제k세트의 복제 커널들에 대응하는 제k세트의 분할 커널들을 포함하고, 상기 제k세트의 분할 커널들은 총 Nsc 개의 서로 다른 분할 커널들로 구성되며, 상기 제k세트의 분할 커널들 각각은 폭 방향, 높이 방향, 및 입력채널 방향으로 각각 w5, h5, 및 1 의 디멘젼을 가지고, w5*h5=Nsc 이며, 그리고 상기 제k세트의 분할 커널들의 각 분할 커널이 갖는 총 Nsc 개의 엘리먼트들 중 어느 하나의 엘리먼트는 1의 값을 갖고 나머지 다른 엘리먼트들은 모두 0의 값을 가지고(단, k=1, ..., c1),
    상기 제2액티베이션은 상기 제k세트의 복제된 채널들에 대응하는 제k세트의 분할된 채널들을 포함하고, 상기 제k세트의 분할된 채널들은 총 Nsc 개의 분할된 채널들로 구성되며, 그리고 상기 제k세트의 분할된 채널들 중 임의의 한 개의 채널은 상기 제k세트의 복제된 채널들 중 어느 한 개의 복제된 채널을 상기 제k세트의 분할 커널들 중 어느 한 개의 대응하는 분할 커널로 콘볼루션하여 생성된 것이며,
    w1*h1=Nsc*w2*h2 이고, Nsc는 2 이상의 자연수인,
    컴퓨팅 장치.
  7. 제6항에 있어서,
    상기 분할 가중치(500)의 제m 세트의 분할 커널들과 제n 세트의 분할 커널들은 서로 동일한 것인(m=1, ..., c1; n=1, ..., c1; m≠n);
    컴퓨팅 장치.
  8. 제6항에 있어서,
    상기 제k 세트의 분할 커널들은 상기 제1액티베이션(300)의 제k 채널에 대응하는,
    컴퓨팅 장치.
  9. 제6항에 있어서, 상기 분할 가중치(500)가 상기 제2콘볼루션 연산을 위해 이동하는 폭 방향(w) 스트라이드 또는 높이 방향(h) 스트라이드는 2 이상인, 컴퓨팅 장치.
  10. 삭제
KR1020230081241A 2023-06-23 2023-06-23 신경망 액티베이션의 채널별 크기를 감소시키고 채널의 총 개수를 증가시키는 액티베이션 변환방법, 및 이를 위한 하드웨어 가속장치와 컴퓨팅 장치 KR102690970B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020230081241A KR102690970B1 (ko) 2023-06-23 2023-06-23 신경망 액티베이션의 채널별 크기를 감소시키고 채널의 총 개수를 증가시키는 액티베이션 변환방법, 및 이를 위한 하드웨어 가속장치와 컴퓨팅 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020230081241A KR102690970B1 (ko) 2023-06-23 2023-06-23 신경망 액티베이션의 채널별 크기를 감소시키고 채널의 총 개수를 증가시키는 액티베이션 변환방법, 및 이를 위한 하드웨어 가속장치와 컴퓨팅 장치

Publications (1)

Publication Number Publication Date
KR102690970B1 true KR102690970B1 (ko) 2024-08-05

Family

ID=92378378

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230081241A KR102690970B1 (ko) 2023-06-23 2023-06-23 신경망 액티베이션의 채널별 크기를 감소시키고 채널의 총 개수를 증가시키는 액티베이션 변환방법, 및 이를 위한 하드웨어 가속장치와 컴퓨팅 장치

Country Status (1)

Country Link
KR (1) KR102690970B1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220391702A1 (en) * 2021-06-02 2022-12-08 Qualcomm Incorporated Convolution with kernel expansion and tensor accumulation
KR20230051664A (ko) * 2020-08-19 2023-04-18 메타 플랫폼스, 인크. 채널 제약 하드웨어 가속기에 의해 구현되는 신경망을 사용하여 이미지 향상을 수행하기 위한 시스템 및 방법
KR20230059726A (ko) * 2021-10-26 2023-05-03 삼성전자주식회사 심층 신경망 연산을 수행하는 방법 및 전자 장치

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230051664A (ko) * 2020-08-19 2023-04-18 메타 플랫폼스, 인크. 채널 제약 하드웨어 가속기에 의해 구현되는 신경망을 사용하여 이미지 향상을 수행하기 위한 시스템 및 방법
US20220391702A1 (en) * 2021-06-02 2022-12-08 Qualcomm Incorporated Convolution with kernel expansion and tensor accumulation
KR20230059726A (ko) * 2021-10-26 2023-05-03 삼성전자주식회사 심층 신경망 연산을 수행하는 방법 및 전자 장치

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
M. Sandler 등. "MobileNetV2: Inverted Residuals and Linear Bottlenecks". arXiv:1801.04381v4* *
R. Sunkara 등. "No More Strided Convolutions or Pooling: A New CNN Building Block for Low-Resolution Images and Small Objects". arXiv:2208.03641v1 *

Similar Documents

Publication Publication Date Title
AU2022200600B2 (en) Superpixel methods for convolutional neural networks
JP6775565B2 (ja) 畳み込みニューラルネットワークの畳み込み層における演算を実行するための方法、装置、メモリ及びコンピュータプログラム
CN108765247B (zh) 图像处理方法、装置、存储介质及设备
EP4036810A1 (en) Neural network processing method and apparatus, computer device and storage medium
KR20190049593A (ko) 콘볼루션 신경망에서의 연산들을 수행하는 방법 및 장치
US20230359435A1 (en) Sorting for data-parallel computing devices
US11461632B2 (en) Method and apparatus for adapting parameters of neural network
DE112020003128T5 (de) Dilatierte faltung mit systolischem array
CN106021567A (zh) 一种基于Hadoop的海量矢量数据划分方法及系统
US20230049471A1 (en) Method and apparatus for operating image data
CN101061460A (zh) 用于混移运算的微处理器设备和方法
White Multilinear cayley factorization
JP2019102082A (ja) 折り畳まれた特徴データに対して畳み込み演算を実行するための方法および装置
Tiskin The design and analysis of bulk-synchronous parallel algorithms
CN101980182A (zh) 基于矩阵运算的并行计算方法
CN111915011B (zh) 一种单振幅量子计算模拟方法
CN114995782B (zh) 数据处理方法、装置、设备和可读存储介质
Srikanth et al. The superstrider architecture: Integrating logic and memory towards non-von Neumann computing
US20220188382A1 (en) Information processing apparatus, information processing method, and computer-readable recording medium
JP7401513B2 (ja) ハードウェアにおけるスパース行列乗算
Quezada et al. Squeeze: Efficient compact fractals for tensor core gpus
KR102690970B1 (ko) 신경망 액티베이션의 채널별 크기를 감소시키고 채널의 총 개수를 증가시키는 액티베이션 변환방법, 및 이를 위한 하드웨어 가속장치와 컴퓨팅 장치
CN117786412A (zh) 大型语言模型的弹性训练方法、集群系统、产品及介质
DE102023105572A1 (de) Effiziente Matrixmultiplikation und -addition mit einer Gruppe von Warps
CN114631284A (zh) 配置精简指令集计算机处理器架构以执行全同态加密算法

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant