KR-20260061920-A - NEURAL NETWORK APPARATUS AND OPERATING METHOD OF THE SAME
Abstract
일 실시 예에 따른 뉴럴 네트워크 장치는 적어도 하나의 메모리로부터 입력 데이터 및 가중치 데이터를 수신하고, 상기 입력 데이터를 제1 입력 데이터 및 제2 입력 데이터로 분할하는 적어도 하나의 제어 회로; 상기 제1 입력 데이터 및 상기 가중치 데이터에 기초하여 제1 MAC 연산을 수행하는 아날로그 크로스바 어레이를 포함하는 인 메모리 컴퓨팅 회로; 및 상기 제2 입력 데이터 및 상기 가중치 데이터를 이용하여 제2 MAC 연산을 수행하는 디지털 연산 회로를 포함할 수 있다.
Inventors
- 문민영
- 김세준
- 박민식
Assignees
- 삼성전자주식회사
Dates
- Publication Date
- 20260506
- Application Date
- 20241028
Claims (20)
- 적어도 하나의 메모리로부터 입력 데이터 및 가중치(weight) 데이터를 수신하고, 상기 입력 데이터를 제1 입력 데이터 및 제2 입력 데이터로 분할하는(partitioning) 적어도 하나의 제어 회로; 상기 제1 입력 데이터 및 상기 가중치 데이터에 기초하여 제1 MAC(Multiply-Accumulate) 연산을 수행하는 아날로그 크로스바 어레이(analog crossbar array)를 포함하는 인 메모리 컴퓨팅(in-memory computing) 회로; 및 상기 제2 입력 데이터 및 상기 가중치 데이터를 이용하여 제2 MAC 연산을 수행하는 디지털 연산 회로를 포함하는, 뉴럴 네트워크 장치.
- 제1항에 있어서, 상기 입력 데이터는, 상기 입력 데이터를 분할하는 단위 및 기준을 포함하는 분할 정보를 포함하고, 상기 적어도 하나의 제어 회로는 상기 분할 정보에 기초하여 상기 입력 데이터를 상기 제1 입력 데이터 및 상기 제2 입력 데이터로 분할하는, 뉴럴 네트워크 장치.
- 제2항에 있어서, 상기 입력 데이터가 타일(tile) 단위로 분할되는 경우, 상기 적어도 하나의 제어 회로는 분할된 입력 데이터를 중요도(criticality)에 따라 상기 제1 입력 데이터 또는 상기 제2 입력 데이터로 분류하는, 뉴럴 네트워크 장치.
- 제2항에 있어서, 상기 입력 데이터가 레이어(layer) 단위로 분할되는 경우, 상기 적어도 하나의 제어 회로는 분할된 입력 데이터를 민감도(sensitivity)에 따라 상기 제1 입력 데이터 또는 상기 제2 입력 데이터로 분류하는, 뉴럴 네트워크 장치.
- 제2항에 있어서, 상기 입력 데이터가 비트(bit) 단위로 분할되는 경우, 상기 적어도 하나의 제어 회로는 분할된 입력 데이터를 중요성(significance)에 따라 상기 제1 입력 데이터 또는 상기 제2 입력 데이터로 분류하는, 뉴럴 네트워크 장치.
- 제1항에 있어서, 상기 적어도 하나의 제어 회로는, 상기 가중치 데이터를 상기 제1 입력 데이터에 대응하는 제1 가중치 데이터 및 상기 제2 입력 데이터에 대응하는 제2 가중치 데이터로 분할하고, 상기 인 메모리 컴퓨팅 회로는 상기 입력 데이터 및 상기 제1 가중치 데이터를 이용하여 제1 MAC 연산을 수행하고, 상기 디지털 연산 회로는 상기 입력 데이터 및 상기 제2 가중치 데이터를 이용하여 제2 MAC 연산을 수행하는, 뉴럴 네트워크 장치.
- 제1항에 있어서, 상기 아날로그 크로스바 어레이는 복수의 로우 라인들, 상기 복수의 로우 라인들과 교차하는 복수의 컬럼 라인들, 및 상기 복수의 로우 라인들과 상기 복수의 컬럼 라인들의 교차점들에 배치되는 복수의 메모리 셀들을 포함하고, 상기 인 메모리 컴퓨팅 회로는 상기 제1 MAC 연산이 수행된 결과를 상기 복수의 메모리 셀들에 저장하는, 뉴럴 네트워크 장치.
- 제7항에 있어서, 상기 아날로그 크로스바 어레이는 상기 복수의 메모리 셀들 각각에 대하여 상기 제1 MAC 연산을 적어도 한 번 수행하고, 상기 인 메모리 컴퓨팅 회로는 상기 적어도 한 번 수행된 제1 MAC 연산의 결과를 상기 복수의 메모리 셀들 각각에 저장하는, 뉴럴 네트워크 장치.
- 제7항에 있어서, 상기 아날로그 크로스바 어레이는 전하를 이용하여 상기 복수의 메모리 셀들에 대한 상기 제1 MAC 연산을 수행하고, 상기 인 메모리 컴퓨팅 회로는 상기 제1 MAC 연산의 결과를 각 메모리 셀에 다중 비트로 저장하는, 뉴럴 네트워크 장치.
- 제7항에 있어서, 상기 복수의 메모리 셀들에 저장된 제1 MAC 연산의 결과를 디지털 신호로 변환하는 아날로그-디지털 컨버터(ADC)를 더 포함하는, 뉴럴 네트워크 장치.
- 제1항에 있어서, 상기 적어도 하나의 제어 회로는 상기 제1 MAC 연산의 결과 및 상기 제2 MAC 연산의 결과를 조합함으로써 출력 데이터를 생성하는, 뉴럴 네트워크 장치.
- 제11항에 있어서, 상기 입력 데이터가 타일 단위 또는 레이어 단위로 분할되는 경우, 상기 적어도 하나의 제어 회로는 상기 제1 MAC 연산의 결과 및 상기 제2 MAC 연산의 결과를 정규화함으로써 상기 출력 데이터를 생성하는, 뉴럴 네트워크 장치.
- 제11항에 있어서, 상기 입력 데이터가 비트 단위로 분할되는 경우, 상기 적어도 하나의 제어 회로는 상기 제1 MAC 연산의 결과 및 상기 제2 MAC 연산의 결과에 대해 쉬프트(shift) 연산 및 덧셈 연산을 수행함으로써 상기 출력 데이터를 생성하는, 뉴럴 네트워크 장치.
- 제1항에 있어서, 상기 디지털 연산 회로는 상기 제2 입력 데이터 및 상기 가중치 데이터에 대응하는 곱셈 연산의 결과가 미리 저장된 룩 업 테이블(look-up table)을 이용하여, 상기 제2 MAC 연산을 수행하는, 뉴럴 네트워크 장치.
- 뉴럴 네트워크의 동작 방법에 있어서, 적어도 하나의 메모리로부터 입력 데이터 및 가중치 데이터를 수신하는 단계; 상기 입력 데이터를 제1 입력 데이터 및 제2 입력 데이터로 분할하는 단계; 아날로그 크로스바 어레이를 이용하여, 상기 제1 입력 데이터 및 상기 가중치 데이터를 이용하여 제1 MAC 연산을 수행하는 단계; 및 디지털 연산 회로를 이용하여, 상기 제2 입력 데이터 및 상기 가중치 데이터를 이용하여 제2 MAC 연산을 수행하는 단계를 포함하는, 방법.
- 제15항에 있어서, 상기 입력 데이터는, 상기 입력 데이터를 분할하는 단위 및 기준을 포함하는 분할 정보를 포함하고, 상기 입력 데이터를 제1 입력 데이터 및 제2 입력 데이터로 분할하는 단계는, 상기 분할 정보에 기초하여 상기 입력 데이터를 상기 제1 입력 데이터 및 상기 제2 입력 데이터로 분할하는 단계인, 방법.
- 제15항에 있어서, 상기 아날로그 크로스바 어레이는 복수의 로우 라인들, 상기 복수의 로우 라인들과 교차하는 복수의 컬럼 라인들, 및 상기 복수의 로우 라인들과 상기 복수의 컬럼 라인들의 교차점들에 배치되는 복수의 메모리 셀들을 포함하고, 상기 제1 입력 데이터 및 상기 가중치 데이터를 이용하여 제1 MAC 연산을 수행하는 단계는, 상기 복수의 셀들 각각에 대하여 상기 제1 MAC 연산을 적어도 한 번 수행하는 단계; 및 상기 적어도 한 번 수행된 제1 MAC 연산의 결과를 상기 복수의 셀들 각각에 저장하는 단계를 포함하는, 방법.
- 제15항에 있어서, 상기 제1 MAC 연산의 결과 및 상기 제2 MAC 연산의 결과를 조합함으로써 출력 데이터를 생성하는 단계를 더 포함하는, 방법.
- 제18항에 있어서, 상기 입력 데이터가 타일 단위 또는 레이어 단위로 분할되는 경우, 상기 출력 데이터를 생성하는 단계는 상기 제1 MAC 연산의 결과 및 상기 제2 MAC 연산의 결과를 정규화 하는 단계를 포함하는, 방법.
- 제18항에 있어서, 상기 입력 데이터가 비트 단위로 분할되는 경우, 상기 출력 데이터를 생성하는 단계는 상기 제1 MAC 연산의 결과 및 상기 제2 MAC 연산의 결과에 대해 쉬프트 연산 및 덧셈 연산을 수행하는 단계를 포함하는, 방법.
Description
뉴럴 네트워크 장치 및 그의 동작 방법{NEURAL NETWORK APPARATUS AND OPERATING METHOD OF THE SAME} 본 개시는 뉴럴 네트워크 장치 및 그의 동작 방법에 관한 것이다. 보다 상세하게, 본 개시는 인 메모리 컴퓨팅(in-memory computing) 회로 및 디지털 연산 회로를 이용하여 MAC 연산을 수행하는 뉴럴 네트워크 장치 및 그의 동작 방법에 관한 것이다. 뉴럴 네트워크(neural network)는 생물학적 뇌를 모델링한 컴퓨터 과학적 아키텍쳐(computational architecture)를 참조한다. 최근 뉴럴 네트워크 기술이 발전함에 따라, 다양한 종류의 전자 시스템에서 뉴럴 네트워크 장치를 사용하여 입력 데이터를 분석하고 유효한 정보를 추출하는 연구가 활발히 진행되고 있다. 뉴럴 네트워크 장치는 복잡한 입력 데이터에 대한 많은 양의 연산을 필요로 한다. 뉴럴 네트워크 장치가 입력을 실시간으로 분석하고, 정보를 추출하기 위해서 뉴럴 네트워크 연산을 효율적으로 처리할 수 있는 기술이 요구된다. 예를 들어, 스마트폰과 같은, 저전력 고성능 임베디드 시스템은 제한된 리소스를 가지므로, 복잡한 입력 데이터를 처리하는데 필요한 에너지 소모량을 감소시키면서도 정확도 손실을 최소화할 수 있는 기술이 요구된다. 도 1은 일 실시 예에 따른 뉴럴 네트워크의 아키텍처를 설명하기 위한 도면이다. 도 2는 일 실시 예에 따른 뉴럴 네트워크에서 수행되는 연산을 설명하기 위한 도면이다. 도 3은 일 실시 예에 따른 인 메모리 컴퓨팅 회로를 나타내는 도면이다. 도 4는 일 실시 예에 따른 뉴럴 네트워크 장치의 블록도이다. 도 5는 다른 실시 예에 따른 뉴럴 네트워크 장치의 블록도이다 도 6은 일 실시 예에 따른 인 메모리 컴퓨팅 회로에서 연산이 수행되는 과정을 설명하기 위한 도면이다. 도 7은 일 실시 예에 따른 입력 데이터를 분할하는 과정을 설명하기 위한 도면이다. 도 8은 다른 실시 예에 따른 입력 데이터를 분할하는 과정을 설명하기 위한 도면이다. 도 9는 일 실시 예에 따른 뉴럴 네트워크를 동작 방법을 설명하기 위한 흐름도이다. 도 10은 S920의 입력 데이터를 제1 입력 데이터 및 제2 입력 데이터로 분할하는 과정을 구체적으로 설명하기 위한 순서도이다. 본 실시예들에서 사용되는 용어는 본 실시예들에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 기술분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 임의로 선정된 용어도 있으며, 이 경우 해당 실시예의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서, 본 실시예들에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 실시 예들의 전반에 걸친 내용을 토대로 정의되어야 한다. 실시 예들에 대한 설명에서, 어떤 부분이 다른 부분과 연결되어 있다고 할 때, 이는 직접적으로 연결되어 있는 경우뿐 아니라, 그 중간에 다른 구성요소를 사이에 두고 전기적으로 연결되어 있는 경우도 포함한다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 또한 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다. 본 실시예들에서 사용되는 "구성된다" 또는 "포함한다" 등의 용어는 명세서 상에 기재된 여러 구성 요소들, 또는 여러 단계들을 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다. 또한, 본 명세서에서 사용되는 '제 1' 또는 '제 2' 등과 같이 서수를 포함하는 용어는 다양한 구성 요소들을 설명하는데 사용할 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로 사용될 수 있다. 하기 실시 예들에 대한 설명은 권리범위를 제한하는 것으로 해석되지 말아야 하며, 해당 기술분야의 당업자가 용이하게 유추할 수 있는 것은 실시 예들의 권리범위에 속하는 것으로 해석되어야 할 것이다. 이하 첨부된 도면들을 참조하면서 오로지 예시를 위한 실시 예들을 상세히 설명하기로 한다. 도 1은 일 실시 예에 따른 뉴럴 네트워크(1)의 아키텍처를 설명하기 위한 도면이다. 도 1을 참고하면, 뉴럴 네트워크(1)는 노드들과 에지들을 이용하여 수학적 모델로 표현될 수 있다. 뉴럴 네트워크(1)는 딥 뉴럴 네트워크(Deep Neural Network, DNN) 또는 n-계층 뉴럴 네트워크(n-layers neural networks)의 아키텍처일 수 있다. DNN 또는 n-계층 뉴럴 네트워크는 컨볼루션 뉴럴 네트워크(Convolutional Neural Networks, CNN), 리커런트 뉴럴 네트워크(Recurrent Neural Networks, RNN), Deep Belief Networks, Restricted Boltzman Machines 등에 해당될 수 있다. 예를 들어, 뉴럴 네트워크(1)는 컨볼루션 뉴럴 네트워크(CNN)로 구현될 수 있으나, 이에 제한되지 않는다. 도 1의 뉴럴 네트워크(1)는 컨볼루션 뉴럴 네트워크 중 일부의 레이어들에 해당될 수 있다. 따라서, 뉴럴 네트워크(1)는 컨볼루션 뉴럴 네트워크의 컨볼루션 레이어, 풀링 레이어(pooling layer), 풀리 커넥티드(fully connected) 레이어 등에 해당될 수 있다. 컨볼루션 레이어에서, 제 1 피처 맵(feature map 1, FM1)은 입력 피처 맵에 해당될 수 있고, 제 2 피처 맵(FM2)은 출력 피처 맵에 해당될 수 있다. 피처 맵은 입력 데이터의 다양한 특징이 표현된 데이터 세트를 의미할 수 있다. 피처 맵들(FM1, FM2)은 2차원 이상의 고차원 매트릭스일 수 있고, 각각의 액티베이션(activation) 파라미터들을 갖는다. 피처 맵들(FM1, FM2)이 예를 들어 3차원 피처 맵들에 해당되는 경우, 피처 맵들(FM1, FM2)은 너비(W)(또는 칼럼이라고 함), 높이(H)(또는 로우라고 함) 및 깊이(C)를 가진다. 이때, 깊이(C)는 채널들의 개수에 대응될 수 있다. 제 1 피처 맵(FM1)은 복수의 입력 스트라이프(input stripe)들을 포함할 수 있다. 예를 들어, 제 1 피처 맵(FM1)은 H x W 개의 입력 스트라이프들을 포함할 수 있다. 입력 스트라이프란 입력 피처 맵의 하나의 스페이스에 대한 채널 방향 입력 데이터로서, 1 x 1 x C의 크기를 가질 수 있다. 예를 들어, 입력 스트라이프는 C 개의 입력 액티베이션들을 포함할 수 있다. 컨볼루션 레이어에서, 제 1 피처 맵(FM1) 및 웨이트 맵(WM)에 대한 컨볼루션 연산이 수행될 수 있고, 그 결과 제 2 피처 맵(FM2)이 생성될 수 있다. 웨이트 맵(WM)은 제 1 피처 맵(FM1)을 필터링할 수 있으며, 웨이트 필터 또는 웨이트 커널(kernel)로 지칭된다. 일 예에서, 웨이트 맵(WM)의 깊이, 즉 채널 개수는 제 1 피처 맵(FM1)의 깊이, 즉 채널 개수와 동일하다. 웨이트 맵(WM)은 제1 피처 맵(FM1)을 슬라이딩 윈도로 하여 횡단하는 방식으로 시프트된다. 각 시프트 동안, 웨이트 맵(WM)에 포함되는 웨이트들 각각이 제 1 피처 맵(FM1)과 중첩된 영역에서의 모든 피처 값과 곱해지고 더해질 수 있다. 제 1 피처 맵(FM1)과 웨이트 맵(WM)이 컨볼루션됨에 따라, 제 2 피처 맵(FM2)의 하나의 채널이 생성될 수 있다. 도 1에는 하나의 웨이트 맵(WM)이 표시되었으나, 실질적으로는 복수의 웨이트 맵들이 제 1 피처 맵(FM1)과 컨볼루션 되어, 제 2 피처 맵(FM2)의 복수의 채널들이 생성될 수 있다. 한편, 컨벌루션 레이어의 제 2 피처 맵(FM2)은 다음 레이어의 입력 피처 맵이 될 수 있다. 예를 들어, 제 2 피처 맵(FM2)는 풀링(pooling) 레이어의 입력 피처 맵이 될 수 있다. 다만, 이에 제한되는 것은 아니다. 도 2는 일 실시 예에 따른 뉴럴 네트워크(2)에서 수행되는 연산을 설명하기 위한 도면이다. 도 2를 참조하면, 뉴럴 네트워크(2)는 입력 레이어, 히든 레이어들 및 출력 레이어를 포함하는 구조를 가지며, 수신되는 입력 데이터(예를 들어, I1 및 I2)를 기초로 연산을 수행하고, 연산 수행 결과를 기초로 출력 데이터(예를 들어, O1 및 O2)를 생성할 수 있다. 뉴럴 네트워크(2)는 앞서 설명된 바와 같이, 2개 이상의 히든 레이어들을 포함하는 DNN 또는 n-계층 뉴럴 네트워크일 수 있다. 예를 들어, 도 2에 도시된 바와 같이, 뉴럴 네트워크(2)는 입력 레이어(Layer 1), 2개의 히든 레이어들(Layer 2 및 Layer 3) 및 출력 레이어(Layer 4)를 포함하는 DNN일 수 있다. 뉴럴 네트워크(2)가 DNN 아키텍처로 구현된 경우 유효한 정보를 처리할 수 있는 보다 많은 레이어들을 포함하므로, 뉴럴 네트워크(2)는 싱글 레이어를 갖는 뉴럴 네트워크보다 복잡한 데이터 집합들을 처리할 수 있다. 한편, 뉴럴 네트워크(2)는 4개의 레이어들을 포함하는 것으로 도시되어 있으나, 이는 예시에 불과할 뿐 뉴럴 네트워크(2)는 더 적거나 많은 레이어들을 포함하거나, 더 적거나 많은 채널들을 포함할 수 있다. 즉, 뉴럴 네트워크(2)는 도 2에 도시된 것과는 다른, 다양한 구조의 레이어들을 포함할 수 있다. 뉴럴 네트워크(2)에 포함된 레이어들 각각은 복수의 채널들을 포함할 수 있다. 채널은 뉴런(neuron), 프로세싱 엘리먼트(Processing element, PE), 유닛(unit) 또는 이와 유사한 용어들로 알려진, 복수의 인공 노드(artificial node)들에 해당될 수 있다. 예를 들어, 도 2에 도시된 바와 같이, Layer 1은 2개의 채널들(노드들), Layer 2 및 Layer 3 각각은 3개의 채널들을 포함할 수 있다. 다만, 이는 예시에