KR20240049671A - 인공 신경망 모델의 커널을 생성할 수 있는 npu 및 그 방법 - Google Patents

인공 신경망 모델의 커널을 생성할 수 있는 npu 및 그 방법 Download PDF

Info

Publication number
KR20240049671A
KR20240049671A KR1020240048320A KR20240048320A KR20240049671A KR 20240049671 A KR20240049671 A KR 20240049671A KR 1020240048320 A KR1020240048320 A KR 1020240048320A KR 20240048320 A KR20240048320 A KR 20240048320A KR 20240049671 A KR20240049671 A KR 20240049671A
Authority
KR
South Korea
Prior art keywords
kernel
neural network
npu
data
layer
Prior art date
Application number
KR1020240048320A
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 KR1020240048320A priority Critical patent/KR20240049671A/ko
Publication of KR20240049671A publication Critical patent/KR20240049671A/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/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/048Activation functions
    • 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
    • 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
    • G06N3/084Backpropagation, e.g. using gradient descent

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)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Molecular Biology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Neurology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Image Analysis (AREA)

Abstract

본 명세서의 일 개시에 따르면, 신경망 프로세싱 유닛(neural processing unit, NPU), 인공 신경망(artificial neural network, ANN) 모델을 위한 방법 그리고 인공 신경망(ANN) 구동 장치가 제시된다. 본 명세서의 일 개시에 따르면, 별도 메모리에서 인공 신경망 프로세서로 읽어오는 커널의 데이터 크기 감소 및/또는 메모리 읽기 요청 횟수 감소로 인한 전력소모 감소 및 메모리 읽기 시간 감소 효과가 있다.

Description

인공 신경망 모델의 커널을 생성할 수 있는 NPU 및 그 방법{NPU FOR GENERATING KERNEL OF ARTIFICIAL NEURAL NETWORK MODEL AND METHOD THEREOF}
본 개시는 인공 신경망(artificial neural network)에 관한 것이다.
인간은 인식(Recognition), 분류(Classification), 추론(Inference), 예측(Predict), 조작/의사결정(Control/Decision making) 등을 할 수 있는 지능을 갖추고 있다. 인공지능(artificial intelligence: AI)은 인간의 지능을 인공적으로 모방하는 것을 의미한다.
인간의 뇌는 뉴런(Neuron)이라는 수많은 신경세포로 이루어져 있으며, 각각의 뉴런은 시냅스(Synapse)라고 불리는 연결부위를 통해 수백에서 수천 개의 다른 뉴런들과 연결되어 있다. 인간의 지능을 모방하기 위하여, 생물학적 뉴런의 동작원리와 뉴런 간의 연결 관계를 모델링한 것을, 인공신경망(Artificial Neural Network, ANN) 모델이라고 한다. 즉, 인공 신경망은 뉴런들을 모방한 노드들을 레이어(Layer: 계층) 구조로 연결시킨, 시스템이다.
이러한 인공신경망 모델은 레이어 수에 따라 '단층 신경망'과 '다층 신경망'으로 구분하며, 일반적인 다층신경망은 입력 레이어와 은닉 레이어, 출력 레이어로 구성되는데, (1) 입력 레이어(input layer)은 외부의 자료들을 받아들이는 레이어로서, 입력 레이어의 뉴런 수는 입력되는 변수의 수와 동일하며, (2) 은닉 레이어(hidden layer)은 입력 레이어와 출력 레이어 사이에 위치하며 입력 레이어로부터 신호를 받아 특성을 추출하여 출력층으로 전달한다. (3) 출력 레이어(output layer)은 은닉 레이어로부터 신호를 받아 외부로 출력한다. 뉴런 간의 입력신호는 0에서 1 사이의 값을 갖는 각각의 연결강도와 곱해진 후 합산되며 이 합이 뉴런의 임계치보다 크면 뉴런이 활성화되어 활성화 함수를 통하여 출력 값으로 구현된다.
한편, 보다 높은 인공 지능을 구현하기 위하여, 인공 신경망의 은닉 레이어의 개수를 늘린 것을 심층 신경망(Deep Neural Network, DNN)이라고 한다.
DNN에는 여러 종류가 있으나, 컨볼루션 신경망(Convolutional Neural Network, CNN)은 입력 데이터의 특징들을 추출하고, 특징들의 패턴을 파악하기에 용이한 것으로 알려져 있다.
컨볼루션 신경망(CNN)은 인간 뇌의 시각 피질에서 영상을 처리하는 것과 유사한 기능을 하는 신경망이다. 컨볼루션 신경망은 영상처리에 적합한 것으로 알려져 있다.
도 7을 참조하면, 컨볼루션 신경망은 컨볼루션 채널들과 풀링(pooling) 채널들이 반복되는 형태로 구성된다. 컨볼루션 신경망에서 대부분의 연산시간은 컨볼루션(수학 용어로서, 한국어로는 합성곱이라 한다) 동작이 차지한다. 컨볼루션 신경망은 행렬(Matrix) 형태의 커널(kernel)에 의해 각 채널의 영상의 특징을 추출하고, 풀링(Pooling)에 의해 이동이나 왜곡 등의 항상성을 제공하는 방식으로 사물을 인식한다. 각 채널에서는 입력 데이터와 커널의 컨볼루션(즉, 합성곱)으로 피처 맵(Feature Map)을 구한 후 ReLU(Rectified Linear Unit) 같은 활성함수를 적용하여 해당 채널의 활성화 맵을 생성한다. 이후 풀링이 적용될 수 있다. 패턴을 실제로 분류하는 신경망은 특징 추출 신경망의 후단에 위치하며, 완전 연결 레이어(Fully Connected Layer)라고 한다. 컨볼루션 신경망의 연산 처리에서 대부분의 연산은 합성곱 또는 행렬곱을 통해 수행된다. 이때 필요한 커널들을 메모리로부터 읽어 오는 빈도가 상당히 빈번하다. 이러한 컨볼루션 신경망 동작의 상당 부분은 각각의 채널에 대응되는 커널들을 메모리로부터 읽어오는 시간이 차지한다.
메모리는 복수의 메모리 셀로 이루어지며, 메모리의 각각의 메모리 셀은 고유한 메모리 주소를 가진다. 인공 신경망 프로세서가 메모리에 저장된 커널 읽기 명령을 생성하면, 메모리의 주소에 대응되는 메모리 셀에 접근하기까지 여러 클럭(clock)의 지연시간(latency)이 발생될 수 있다.
따라서 메모리에서 필요한 커널을 읽어와 컨볼루션을 수행하는데 소모되는 시간과 전력 소모가 상당하다는 문제가 있다.
본 개시의 발명자는 인공 신경망 모델의 추론 연산 시, 신경망 프로세싱 유닛(NPU)이 빈번하게 인공 신경망 모델의 각각의 레이어의 노드 및/또는 커널의 가중치 값을 별개의(separate) 메모리에서 읽어온다는 사실을 인식하였다.
본 개시의 발명자는 신경망 프로세싱 유닛(NPU)이 인공 신경망 모델의 노드 및/또는 커널의 가중치 값 등을 별개의 (separate) 메모리에서 읽어오는 동작의 처리 속도가 느리고 에너지를 많이 소비한다는 사실을 인식하였다.
본 개시의 발명자는 학습이 완료된 인공 신경망 모델의 커널(kernel)들은 서로 간에 유사도가 매우 높다는 사실을 인식하였다.
본 개시의 발명자는 인공 신경망 모델의 일부 커널의 가중치 값을 일정 범위내에서 일부 조정하더라도 인공 신경망 모델의 추론 정확도가 실질적으로 저하되지 않을 수 있다는 사실을 인식하였다.
따라서, 본 개시의 발명자는 서로 유사도가 매우 높은 커널들을 레퍼런스 커널과 간단한 수식으로 표현할 수 있다는 사실을 인식하였다.
또한, 본 개시의 발명자는 인공 신경망 모델 내의 커널들 간에 유사도가 매우 높아지도록, 즉 커널들 간에 편차가 작아지도록, 학습 또는 재학습시키더라도, 인공 신경망 모델의 추론 정확도가 상용적으로 사용 가능한 수준으로 유지될 수 있다는 사실을 인식하였다.
따라서, 본 개시의 발명자는 목표하는 정확도는 높히는 방향, 그리고 인공 신경망 모델 내의 레퍼런스 커널과 다른 커널들 간의 편차의 최대 값을 최소화하는 방향으로 학습 시의 비용 함수(cost function)를 설정하여 인공신경망모델을 학습시킬 수 있다는 사실을 인식하였다.
또한, 본 개시의 발명자는 별개의(separate) 메모리에서 노드 및/또는 커널의 가중치 값을 읽어오는 것을 최소화하고, 신경망 프로세싱 유닛(NPU) 내에서 간단한 연산을 통해서 레퍼런스 노드 및/또는 커널과 근사한 노드 및/또는 커널의 가중치 값을 연산해서 활용할 경우 인공 신경망 모델을 처리하는 시스템의 처리 속도를 향상 및/또는 소비 전력을 저감할 수 있다는 사실을 인식하였다.
이에, 본 개시가 해결하고자 하는 과제는 간단한 알고리즘으로 변조 커널을 생성하여, 메모리 읽기 동작의 횟수를 저감하고, 소비 전력을 저감할 수 있는 신경망 프로세싱 유닛 및 그 동작 방법을 제공하는 것이다.
단 본 개시는 이에 제한되지 않으며, 또 다른 과제들은 아래의 기재로 부터 당업자에게 명확하게 이해될 수 있을 것이다.
본 명세서의 일 개시에 따르면, 신경망 프로세싱 유닛(neural processing unit, NPU)이 제공된다. 상기 신경망 프로세싱 유닛은 회로를 포함할 수 있다. 상기 회로는 인공 신경망(artificial neural network, ANN) 모델의 동작을 처리하도록 설정된 적어도 하나의 PE(Processing element)와; 그리고 제1 커널(kernel)과 제1 커널 필터를 저장하도록 설정 가능한 적어도 하나의 메모리를 포함할 수 있다. 상기 제1 커널과 상기 제1 커널 필터에 기초하여, 제1 변조 커널이 생성되게 설정될 수 있다.
상기 제1 커널은: 상기 ANN 모델의 제1 계층에 적용 가능한 적어도 하나의 제1 가중치 값 또는 가중치 값들을 포함하는 k x m 행렬을 포함할 수 있다. K와 m은 정수일 수 있다.
상기 제1 커널 필터는: 상기 제1 커널의 적어도 하나의 커널 가중치 값과 상기 제1 변조 커널의 적어도 하나의 변조 커널 가중치 값 간에 차이에 기초하여 생성될 수 있다.
상기 제1 커널 필터는: ANN 모델의 학습 과정 동안에 세팅되도록 설정될 수 있다.
상기 회로는: 상기 제1 커널 및 상기 제1 커널 필터에 기초하여 상기 제1 변조 커널을 생성하도록 설정될 수 있다.
상기 회로는: 상기 제1 커널 및 제2 커널 필터에 기초하여 제2 변조 커널을 생성하도록 설정될 수 있다.
상기 제2 커널 필터는: 상기 제1 커널 필터에 수학 함수를 적용함으로써 생성되도록 설정될 수 있다. 상기 수학 함수는 델타 함수, 회전 함수, 트랜스포즈(transpose) 함수, 바이어스(bias) 함수, 글로벌 가중치 함수 또는 조합 중 하나 이상을 포함할 수 있다.
상기 회로는 상기 제1 커널, 상기 제1 커널 필터, 상기 제1 커널 또는 상기 제1 커널 필터에 적용되는 수학 함수, 상기 제1 커널 또는 상기 제1 커널 필터에 적용되는 계수(coefficient), 그리고 상기 제1 커널 또는 상기 제1 커널 필터에 적용되는 오프셋 중 하나 이상에 기초하여 제3 변조 커널을 생성하도록 설정될 수 있다.
상기 적어도 하나의 메모리는: 적어도 하나의 변조 커널을 생성하기 위한, 적어도 하나의 커널과 적어도 하나의 커널 필터 간의 매핑 정보를 포함하도록 설정될 수 있다.
상기 ANN 모델은: 제1 모드를 위해 상기 제1 커널 필터 내에 포함되는 제1 가중치 비트들의 비트 할당에 대한 정보를 포함할 수 있다.
상기 신경망 프로세싱 유닛(NPU)는 다수의 모드 중 하나로 동작될 수 있다.
상기 다수의 모드는: 상기 제1 커널에 포함되는 다수의 가중치 비트들 중 제1 부분을 상기 ANN 모델에 적용하도록 설정된 제1 모드와; 그리고 상기 제1 커널에 포함되는 다수의 가중치 비트들 전부를 상기 ANN 모델에 적용하도록 설정된 제2 모드를 포함할 수 있다.
상기 제1 부분이 상기 제1 모드에 기초하여 활성화되면, 상기 제1 부분 내의 가중치 비트들이 선택될 수 있다.
상기 제1 커널은: 제1 부분과 제2 부분으로 그룹화되는 다수의 가중치 비트들을 포함할 수 있고, 상기 제1 부분과 상기 제2 부분은 선택적으로 사용될 수 있다.
상기 제1 커널 필터 내의 값에 대한 비트 폭(bit width)은 상기 제1 커널의 가중치의 비트 폭 보다 작게 되도록, 상기 제1 커널 필터가 설정될 수 있다.
본 명세서의 다른 일 개시에 의하면, 인공 신경망(artificial neural network, ANN) 모델을 위한 방법이 제시된다. 상기 방법은 상기 ANN 모델을 위한 동작들을 수행하는 단계를 포함할 수 있다. 상기 동작들을 위하여, 다수의 커널들이 다수의 커널 필터들과 함께 저장되어 있을 수 있다. 상기 동작들은 상기 다수의 커널들 중 적어도 하나의 커널과 상기 다수의 커널 필터들 중 적어도 하나의 대응 커널 필터에 기초하여, 다수의 변조 커널들을 생성하는 단계를 포함할 수 있다.
상기 동작들은: 상기 ANN 모델의 상기 다수의 커널들 중에서 베이스(base) 커널에 대응하는 임의 커널을 세팅하는 단계와; 그리고 상기 베이스 커널에 대응하는 상기 임의 커널을 위한 임의 커널 필터를 세팅하는 단계를 포함할 수 있다.
상기 동작들은: 정확도 비용 함수 및 가중치 사이즈 비용 함수를 고려하여, 트레이닝(training) 데이터 세트 및 테스트 데이터 세트에 기초하여, 상기 ANN 모델은 트레이닝하는 단계와; 그리고 상기 베이스 커널과 상기 임의 커널 필터 간에 매핑 데이터를 결정하는 단계를 포함할 수 있다.
상기 동작들은 회로를 포함하는 신경망 프로세싱 유닛(NPU)에 의해서 수행될 수 있다. 상기 회로는 적어도 하나의 PE(processing element)와 적어도 하나의 메모리를 포함할 수 있다.
상기 동작들은: 상기 적어도 하나의 메모리로부터 제1 커널을 읽어내는 단계와; 상기 제1 커널은 상기 ANN 모델의 제1 레이어 또는 제1 채널에 적용함으로써, 제1 동작을 수행하는 단계와; 상기 적어도 하나의 메모리로부터 상기 커널 필터를 읽어내는 단계와; 상기 제1 커널 및 상기 제1 커널 필터에 기초하여, 상기 제1 변조 커널을 생성하는 단계와; 그리고 상기 제1 변조 커널을 상기 ANN 모델의 제2 레이어 또는 제2 채널에 적용함으로써, 제2 동작을 수행하는 단계를 포함할 수 있다.
본 명세서의 다른 일 개시에 의하면, 장치가 제시된다. 상기 장치는 전기 전도성 패턴이 형성되어 있는 기판과; 상기 기판에 전기적으로 연결되고, 제1 커널에 대한 정보를 저장하도록 설정 가능한 적어도 하나의 제1 메모리와; 상기 기판에 전기적으로 연결되어, 상기 적어도 하나의 제1 메모리를 액세스할 수 있는, 적어도 하나의 신경망 프로세싱 유닛(NPU)를 포함할 수 있다. 상기 적어도 하나의 NPU는: 회로를 포함할 수 있다. 상기 회로는: 인공 신경망(artificial neural network, ANN) 모델의 동작을 처리하도록 설정된 적어도 하나의 PE(Processing element)와, 그리고 제1 커널 필터에 대한 정보를 저장할 수 있도록 설정 가능한 적어도 하나의 내부 메모리를 포함할 수 있다. 상기 적어도 하나의 제1 메모리로부터 상기 제1 커널에 대한 정보가 일단 읽혀지면, 상기 적어도 하나의 내부 메모리에 저장될 수 있다. 상기 동작들은: 상기 제1 커널과 상기 제1 커널 필터에 기초하여, 제1 변조 커널을 생성하는 단계를 포함할 수 있다.
본 개시에 따르면, 적어도 하나 이상의 베이스 커널을 생성하여 컨볼루션 신경망의 컨볼루션 연산을 처리함으로써, 각각의 컨볼루션 연산 마다 대응되는 커널을 읽어오는데 소요되는 전력 소모를 저감하고 메모리 읽기 시간을 단축할 수 있는 효과가 있다.
본 개시에 따르면, 베이스 커널과 커널 필터를 활용함으로 써, 메모리에 저장되는 커널들의 개수 및/또는 데이터 크기가 감소될 수 있다.
또한 메모리에서 인공 신경망 프로세서로 읽어오는 커널의 데이터 크기 감소 및/또는 메모리 읽기 요청 횟수 감소로 인한 전력소모 감소 및 메모리 읽기 시간 감소 효과가 있다.
또한 본 개시에 따르면, 메모리와 인공 신경망 프로세서의 데이터 전송량 및/또는 메모리 읽기 요청 횟수가 저감 되어, 인공 신경망 프로세서의 데이터 기아(starvation) 상태 발생 저감 및/또는 대기(IDLE) 시간이 감소될 수 있기 때문에 인공 신경망 프로세서의 동작 효율이 향상될 수 있는 효과가 있다.
도 1은 본 개시에 따른 신경망 프로세싱 유닛을 설명하는 개략적인 개념도이다.
도 2는 본 개시에 적용될 수 있는 프로세싱 엘리먼트 어레이 중 하나의 프로세싱 엘리먼트를 설명하는 개략적인 개념도이다.
도 3은 도 1에 도시된 신경망 프로세싱 유닛(100)의 변형예를 나타낸 예시도이다.
도 4는 예시적인 인공신경망모델을 설명하는 개략적인 개념도이다.
도 5a는 도 1 또는 도 3에 도시된 신경망 프로세싱 유닛(100)을 포함하는 인공 신경망(ANN) 구동 장치의 구성을 나타낸 예시도이고, 도 5b는 신경망 프로세싱 유닛(100)의 동작시 소모되는 에너지를 나타낸 예시도이다.
도 6a은 도 1 또는 도 3에 도시된 신경망 프로세싱 유닛(100)을 포함하는 인공 신경망(ANN) 구동 장치의 변형 구성을 나타낸 예시도이다.
도 6b은 도 1 또는 도 3에 도시된 신경망 프로세싱 유닛(100)을 포함하는 인공 신경망(ANN) 구동 장치의 변형 구성을 나타낸 예시도이다.
도 7은 컨볼루션 신경망의 기본 구조를 설명하기 위한 도면이다.
도 8은 컨볼루션 레이어의 입력 데이터와 합성곱 연산에 사용되는 커널을 설명하기 위한 도면이다.
도 9는 커널을 사용하여 활성화 맵을 생성하는 컨볼루션 신경망의 동작을 설명하기 위한 도면이다.
도 10은 도 7 내지 도 9에서 설명한 컨볼루션 신경망의 동작을 이해하기 쉽게 나타낸 종합도이다.
도 11은 커널 필터의 생성을 설명하기 위한 도면이다.
도 12는 원본 커널을 복원하거나 원본 커널과 유사한 커널을 생성하는 일 예를 나타낸 예시도이다.
도 13는 원본 커널을 복원하거나 원본 커널과 유사한 커널을 생성하는 다른 일 예를 나타낸 예시도이다.
도 14는 원본 커널을 복원하거나 원본 커널과 유사한 커널을 생성하는 또 다른 일 예를 나타낸 예시도이다.
도 15는 베이스 커널을 회전하여 다른 커널을 생성하는 일 예를 나타낸다.
도 16은 베이스 커널을 트랜스포즈하여 다른 커널을 생성하는 예를 나타낸다.
도 17은 베이스 커널을 트랜스포즈하여 다른 커널을 생성하는 예를 나타낸다.
도 18은 커널 생성 알고리즘(또는 커널 복원 알고리즘)을 이해하기 쉽게 테이블로 정리하여 나타낸 예시도이다.
도 19는 복수의 베이스 커널과 복수의 커널 필터들을 이용하여, 인공 신경망(예컨대, CNN) 모델의 구조를 복원하는 개념을 나타낸 예시도이다.
도 20은 베이스 커널 및 커널 필터의 결정 절차를 설명하기 위한 순서도이다.
도 21은 컨볼루션 신경망의 커널 복원 후 적용 절차를 설명하기 위한 순서도이다.
도 22는 도 1 또는 도 3에 도시된 신경망 프로세싱 유닛의 동작에 대한 예시적인 흐름도이다.
도 23a 및 도 23b는 모드 별 커널의 활성 비트를 나타낸 예시도이다.
본 명세서 또는 출원에 개시되어 있는 본 개시의 개념에 따른 실시 예들에 대해서 특정한 구조적 내지 단계적 설명들은 단지 본 개시의 개념에 따른 실시 예를 설명하기 위한 목적으로 예시된 것으로, 본 개시의 개념에 따른 실시 예들은 다양한 형태로 실시될 수 있으며 본 개시의 개념에 따른 실시 예들은 다양한 형태로 실시될 수 있으며 본 명세서 또는 출원에 설명된 실시 예들에 한정되는 것으로 해석되어서는 아니 된다.
본 개시의 개념에 따른 실시 예는 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있으므로 특정 실시 예들을 도면에 예시하고 본 명세서 또는 출원에 상세하게 설명하고자 한다. 그러나, 이는 본 개시의 개념에 따른 실시 예를 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 개시의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제1 및/또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 개시의 개념에 따른 권리 범위로부터 이탈되지 않은 채, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 개시를 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 서술된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
실시 예를 설명함에 있어서 본 개시가 속하는 기술 분야에 익히 알려져 있고 본 개시와 직접적으로 관련이 없는 기술 내용에 대해서는 설명을 생략한다. 이는 불필요한 설명을 생략함으로써 본 개시의 요지를 흐리지 않고 더욱 명확히 전달하기 위함이다.
<용어의 정의>
이하, 본 명세서에서 제시되는 개시들의 이해를 돕고자, 본 명세서에서 사용되는 용어들에 대하여 간략하게 정리하기로 한다.
NPU: 신경망 프로세싱 유닛(Neural Processing Unit)의 약어로서, CPU(Central processing unit)과 별개로 인공 신경망 모델의 연산을 위해 특화된 프로세서를 의미할 수 있다.
ANN: 인공 신경망(artificial neural network)의 약어로서, 인간의 지능을 모방하기 위하여, 인간 뇌 속의 뉴런들(Neurons)이 시냅스(Synapse)를 통하여 연결되는 것을 모방하여, 노드들을 레이어(Layer: 계층) 구조로 연결시킨, 네트워크를 의미할 수 있다.
인공 신경망의 구조에 대한 정보: 레이어의 개수에 대한 정보, 레이어 내의 노드의 개수, 각 노드의 값, 연산 처리 방법에 대한 정보, 각 노드에 적용되는 가중치 행렬에 대한 정보 등을 포함하는 정보이다.
인공 신경망의 데이터 지역성에 대한 정보: 신경망 프로세싱 유닛이 별개의 메모리에 요청하는 데이터 접근 요청 순서에 기반하여 신경망 프로세싱 유닛이 처리하는 인공신경망모델의 연산 순서를 예측하게 하는 정보로
DNN: 심층 신경망(Deep Neural Network)의 약어로서, 보다 높은 인공 지능을 구현하기 위하여, 인공 신경망의 은닉 레이어의 개수를 늘린 것을 의미할 수 있다.
CNN: 컨볼루션 신경망(Convolutional Neural Network)의 약어로서, 인간 뇌의 시각 피질에서 영상을 처리하는 것과 유사한 기능을 하는 신경망이다. 컨볼루션 신경망은 영상처리에 적합한 것으로 알려져 있으며, 입력 데이터의 특징들을 추출하고, 특징들의 패턴을 파악하기에 용이한 것으로 알려져 있다.
커널: CNN에 적용되는 가중치 행렬을 의미할 수 있다.
베이스 커널: CNN에 적용되는 복수의 커널들 중 대표성을 갖는 커널을 의미할 수 있다.
커널 필터: 베이스 커널로부터 다른 커널을 생성/재생성하기 위해서 사용되는 값 또는 값들을 포함하는 행렬을 의미할 수 있다.
이하, 첨부한 도면을 참조하여 본 개시의 바람직한 실시 예를 설명함으로써, 본 개시를 상세히 설명한다. 이하, 본 개시의 실시 예를 첨부된 도면을 참조하여 상세하게 설명한다.
도 1은 본 개시에 따른 신경망 프로세싱 유닛을 설명하는 개략적인 개념도이다.
도 1에 도시된 신경망 프로세싱 유닛(neural processing unit, NPU)(100)은 인공 신경망을 위한 동작을 수행하도록 특화된 프로세서이다.
인공 신경망은 여러 입력 또는 자극이 들어오면 각각 가중치를 곱해 더해주고, 추가적으로 편차를 더한 값을 활성화 함수를 통해 변형하여 전달하는 인공 뉴런들이 모인 네트워크를 의미한다. 이렇게 학습된 인공 신경망은 입력 데이터로부터 추론(inference) 결과를 출력하는데 사용될 수 있다.
상기 신경망 프로세싱 유닛(100)은 전기/전자 회로로 구현된 반도체일 수 있다. 상기 전기/전자 회로라 함은 수많은 전자 소자, (예컨대 트렌지스터, 커패시터)를 포함하는 것을 의미할 수 있다. 상기 신경망 프로세싱 유닛(100)은 프로세싱 엘리먼트(processing element: PE) 어레이(110), NPU 내부 메모리(120), NPU 스케줄러(130), 및 NPU 인터페이스(140)를 포함할 수 있다. 프로세싱 엘리먼트 어레이(110), NPU 내부 메모리(120), NPU 스케줄러(130), 및 NPU 인터페이스(140) 각각은 수많은 트렌지스터들이 연결된 반도체 회로일 수 있다. 따라서, 이들 중 일부는 육안으로는 식별되어 구분되기 어려울 수 있고, 동작에 의해서만 식별될 수 있다. 예컨대, 임의 회로는 프로세싱 엘리먼트 어레이(110)으로 동작하기도 하고, 혹은 NPU 스케줄러(130)로 동작될 수도 있다.
상기 신경망 프로세싱 유닛(100)은 프로세싱 엘리먼트 어레이(110), 프로세싱 엘리먼트 어레이(110)에서 추론될 수 있는 인공신경망모델을 저장하도록 구성된 NPU 내부 메모리(120), 및 인공신경망모델의 데이터 지역성 정보 또는 구조에 대한 정보에 기초하여 프로세싱 엘리먼트 어레이(110) 및 NPU 내부 메모리(120)를 제어하도록 구성된 NPU 스케줄러(130)를 포함할 수 있다. 여기서, 인공신경망모델은 인공신경망모델의 데이터 지역성 정보 또는 구조에 대한 정보를 포함할 수 있다. 인공신경망모델은 특정 추론 기능을 수행하도록 학습된 AI 인식모델을 의미할 수 있다.
프로세싱 엘리먼트 어레이(110)는 인공 신경망을 위한 동작을 수행할 수 있다. 예를 들어, 입력 데이터가 입력되었을 때, 프로세싱 엘리먼트 어레이(110)는 인공 신경망이 학습을 수행하도록 할 수 있다. 학습이 완료된 이후, 입력 데이터가 입력되었을 때, 프로세싱 엘리먼트 어레이(110)는 학습 완료된 인공 신경망을 통해 추론 결과를 도출하는 동작을 수행할 수 있다.
NPU 인터페이스(140)는 시스템 버스를 통해서 도 5a, 도 6a 또는 도 6b에 도시된 ANN 구동 장치 내의 다양한 구성요소들, 예컨대 메모리와 통신할 수 있다.
예를 들면, 신경망 프로세싱 유닛(100)은 NPU 인터페이스(140)를 통해서 도 5a, 도 6a 또는 도 6b에 도시된 메모리(200)에 저장된 인공신경망모델의 데이터를 NPU 내부 메모리(120)으로 불러올 수 있다.
NPU 스케줄러(130)는 신경망 프로세싱 유닛(100)의 추론 연산을 위한 프로세싱 엘리먼트 어레이(100)의 연산 및 NPU 내부 메모리(120)의 읽기 및 쓰기 순서를 제어하도록 구성된다.
NPU 스케줄러(130)는 인공신경망모델의 데이터 지역성 정보 또는 구조에 대한 정보를 분석하여 프로세싱 엘리먼트 어레이(100) 및 NPU 내부 메모리(120)을 제어하도록 구성될 수 있다.
NPU 스케줄러(130)는 프로세싱 엘리먼트 어레이(100)에서 작동할 인공신경망모델의 구조를 분석하거나 또는 제공받을 수 있다. 인공신경망모델이 포함할 수 있는 인공 신경망의 데이터는 각각의 레이어의 노드 데이터, 레이어들의 배치 데이터 지역성 정보 또는 구조에 대한 정보, 각각의 레이어의 노드를 연결하는 연결망 각각의 가중치 데이터를 저장할 수 있다. 인공 신경망의 데이터는 NPU 스케줄러(130) 내부에 제공되는 메모리 또는 NPU 내부 메모리(120)에 저장될 수 있다. NPU 스케줄러(130)는 도 5a, 도 6a 또는 도 6b에 도시된 메모리(200)에 액세스하여 필요한 데이터를 활용할 수 있다. 단, 이에 제한되지 않으며, 즉, 인공신경망모델의 노드 데이터 및 가중치 데이터 등의 데이터에 기초하여 인공신경망모델의 데이터 지역성 정보 또는 구조에 대한 정보를 생성할 수 있다. 가중치 데이터는 가중치 커널로 지칭되는 것도 가능하다. 노드 데이터는 피처 맵으로 지칭되는 것도 가능하다. 예를 들면, 인공신경망모델의 구조가 정의된 데이터는 인공신경망모델을 설계하거나 또는 학습이 완료될 때 생성될 수 있다. 단, 이에 제한되지 않는다.
NPU 스케줄러(130)는 인공신경망모델의 데이터 지역성 정보 또는 구조에 대한 정보에 기초하여 인공신경망모델의 연산 순서를 스케줄링 할 수 있다.
NPU 스케줄러(130)는 인공신경망모델의 데이터 지역성 정보 또는 구조에 대한 정보에 기초하여 인공신경망모델의 레이어의 노드 데이터 및 연결망의 가중치 데이터가 저장된 메모리 어드레스 값을 획득할 수 있다. 예를 들면, NPU 스케줄러(130)는 메모리에 저장된 인공신경망모델의 레이어의 노드 데이터 및 연결망의 가중치 데이터가 저장된 메모리 어드레스 값을 획득할 수 있다. 따라서 NPU 스케줄러(130)는 구동할 인공신경망모델의 레이어의 노드 데이터 및 연결망의 가중치 데이터를 메모리(200)에서 가져와서 NPU 내부 메모리(120)에 저장할 수 있다. 각각의 레이어의 노드 데이터는 대응되는 각각의 메모리 어드레스 값을 가질 수 있다. 각각의 연결망의 가중치 데이터는 대응되는 각각의 메모리 어드레스 값을 가질 수 있다.
NPU 스케줄러(130)는 인공신경망모델의 데이터 지역성 정보 또는 구조에 대한 정보, 예를 들면, 인공신경망모델의 인공 신경망의 레이어들의 배치 데이터 지역성 정보 또는 구조에 대한 정보에 기초해서 프로세싱 엘리먼트 어레이(110)의 연산 순서를 스케줄링 할 수 있다.
NPU 스케줄러(130)는 인공신경망모델의 데이터 지역성 정보 또는 구조에 대한 정보에 기초하여 스케줄링 하기 때문에, 일반적인 CPU의 스케줄링 개념과 다르게 동작할 수 있다. 일반적인 CPU의 스케줄링은 공평성, 효율성, 안정성, 반응 시간 등을 고려하여, 최상의 효율을 낼 수 있도록 동작한다. 즉, 우선 순위, 연산 시간 등을 고려해서 동일 시간내에 가장 많은 프로세싱을 수행하도록 스케줄링 한다.
종래의 CPU는 각 프로세싱의 우선 순서, 연산 처리 시간 등의 데이터를 고려하여 작업을 스케줄링 하는 알고리즘을 사용하였다.
이와 다르게 NPU 스케줄러(130)는 인공신경망모델의 데이터 지역성 정보 또는 구조에 대한 정보에 기초하여 프로세싱 순서를 결정할 수 있다.
더 나아가면, NPU 스케줄러(130)는 인공신경망모델의 데이터 지역성 정보 또는 구조에 대한 정보 및/또는 사용하려는 신경망 프로세싱 유닛(100)의 데이터 지역성 정보 또는 구조에 대한 정보에 기초하여 프로세싱 순서를 결정할 수 있다.
단, 본 개시는 신경망 프로세싱 유닛(100)의 데이터 지역성 정보 또는 구조에 대한 정보에 제한되지 않는다. 예를 들면, 신경망 프로세싱 유닛(100)의 데이터 지역성 정보 또는 구조에 대한 정보는 NPU 내부 메모리(120)의 메모리 크기, NPU 내부 메모리(120)의 계층(hierarchy) 구조, 프로세싱 엘리먼트들(PE1 to PE12)의 개수 데이터, 프로세싱 엘리먼트들(PE1 to PE12)의 연산기 구조 중 적어도 하나 이상의 데이터를 활용하여 프로세싱 순서를 결정할 수 있다. 즉, 신경망 프로세싱 유닛(100)의 데이터 지역성 정보 또는 구조에 대한 정보는 NPU 내부 메모리(120)의 메모리 크기, NPU 내부 메모리(120)의 계층(hierarchy) 구조, 프로세싱 엘리먼트들(PE1 to PE12)의 개수 데이터, 및 프로세싱 엘리먼트들(PE1 to PE12)의 연산기 구조 중 적어도 하나 이상의 데이터 포함할 수 있다. 단, 본 개시는 신경망 프로세싱 유닛(100)의 데이터 지역성 정보 또는 구조에 대한 정보에 제한되지 않는다. NPU 내부 메모리(120)의 메모리 크기는 메모리 용량에 대한 정보를 포함한다. NPU 내부 메모리(120)의 계층(hierarchy) 구조는 각각의 계층 구조에 대한 구체적인 계층 간의 연결 관계에 대한 정보를 포함한다. 프로세싱 엘리먼트들(PE1 to PE12)의 연산기 구조는 프로세싱 엘리먼트 내부의 구성요소들에 대한 정보를 포함한다.
본 개시의 일 예시에 따른, 신경망 프로세싱 유닛(100)은 적어도 하나의 프로세싱 엘리먼트, 적어도 하나의 프로세싱 엘리먼트에 의해서 추론될 수 있는 인공신경망모델을 저장할 수 있는 NPU 내부 메모리(120), 및 인공신경망모델의 데이터 지역성 정보 또는 구조에 대한 정보에 기초하여 적어도 하나의 프로세싱 엘리먼트 및 NPU 내부 메모리(120)을 제어하도록 구성된 NPU 스케줄러(130)를 포함할 수 있다. 그리고 NPU 스케줄러(130)는 신경망 프로세싱 유닛(100)의 데이터 지역성 정보 또는 구조에 대한 정보를 더 제공받도록 구성될 수 있다. 또한 신경망 프로세싱 유닛(100)의 데이터 지역성 정보 또는 구조에 대한 정보는 NPU 내부 메모리(120)의 메모리 크기, NPU 내부 메모리(120)의 계층(hierarchy) 구조, 적어도 하나의 프로세싱 엘리먼트의 개수 데이터, 및 적어도 하나의 프로세싱 엘리먼트의 연산기 구조 중 적어도 하나의 데이터를 포함할 수 있다.
인공신경망모델의 구조에 의하면, 각 레이어 별 연산은 순차적으로 수행된다. 즉, 인공신경망모델의 구조가 확정될 경우, 레이어 별 연산순서가 정해질 수 있다. 이러한 인공신경망모델의 구조에 따른 연산의 순서 또는 데이터 흐름의 순서를 알고리즘 레벨에서의 인공신경망모델의 데이터 지역성으로 정의할 수 있다.
컴파일러가 인공신경망모델이 신경망 프로세싱 유닛(100)에서 실행되도록 컴파일 할 경우, 신경망 프로세싱 유닛-메모리 레벨에서의 인공신경망모델의 인공신경망 데이터 지역성이 재구성될 수 있다.
즉, 컴파일러, 인공신경망모델에 적용된 알고리즘들, 및 신경망 프로세싱 유닛(100)의 동작 특성에 따라서 신경망 프로세싱 유닛-메모리 레벨에서의 인공신경망모델의 데이터 지역성이 구성될 수 있다.
예를 들면, 동일한 인공신경망모델의 경우에도 신경망 프로세싱 유닛(100)이 해당 인공신경망모델을 연산하는 방식, 예를 들면, 특징맵 타일링(feature map tiling), 프로세싱 엘리먼트의 스테이셔너리(Stationary) 기법 등, 신경망 프로세싱 유닛(100)의 프로세싱 엘리먼트 개수, 신경망 프로세싱 유닛(100)내 특징맵 및 가중치 등의 캐쉬 메모리 용량, 신경망 프로세싱 유닛(100)내의 메모리 계층 구조, 해당 인공신경망모델을 연산 처리하기 위한 신경망 프로세싱 유닛(100)의 연산 동작의 순서를 결정해 주는 컴파일러의 알고리즘 특성 등에 따라서 처리하고자 하는 인공신경망모델의 인공신경망 데이터 지역성이 다르게 구성될 수 있다. 왜냐하면, 상술한 요인들에 의해서 동일한 인공신경망모델을 연산 처리하더라도 신경망 프로세싱 유닛(100)이 클럭 단위로 매 순간 필요한 데이터의 순서를 상이하게 결정할 수 있기 때문이다.
컴파일러는 신경망 프로세싱 유닛(100)의 워드 단위로 신경망 프로세싱 유닛-메모리 레벨에서 인공신경망모델의 인공신경망 데이터 지역성이 구성하여 물리적인 연산 처리에 필요한 데이터의 순서를 결정할 수 있다.
다르게 설명하면, 신경망 프로세싱 유닛-메모리 레벨에서 존재하는 인공신경망모델의 인공신경망 데이터 지역성이란 신경망 프로세싱 유닛(100)이 메모리(200)에 요청하는 데이터 접근 요청 순서에 기반하여 신경망 프로세싱 유닛 (100)이 처리하는 인공신경망모델의 연산 순서를 예측하게 하는 정보로 정의될 수 있다.
NPU 스케줄러(130)는 인공신경망의 데이터 지역성 정보 또는 구조에 대한 정보를 저장하도록 구성될 수 있다.
즉, NPU 스케줄러(130)는 적어도 인공신경망모델의 인공 신경망의 데이터 지역성 정보 또는 구조에 대한 정보만 활용하더라도 프로세싱 순서를 결정할 수 있다. 즉, NPU 스케줄러(130)는 인공 신경망의 입력 레이어부터 출력 레이어 까지의 데이터 지역성 정보 또는 구조에 대한 정보를 활용하여 연산 순서를 결정할 수 있다. 예를 들면, 입력 레이어 연산이 제1 순위로 스케줄링 되고 출력 레이어 연산이 마지막으로 스케줄링 될 수 있다. 따라서, NPU 스케줄러(130)가 인공신경망모델의 데이터 지역성 정보 또는 구조에 대한 정보를 제공받는 경우, 인공신경망모델의 모든 연산 순서를 알 수 있다. 따라서 모든 스케줄링 순서를 결정할 수 있는 효과가 있다.
더 나아가서, NPU 스케줄러(130)는 인공신경망모델의 데이터 지역성 정보 또는 구조에 대한 정보 및 신경망 프로세싱 유닛(100)의 데이터 지역성 정보 또는 구조에 대한 정보를 고려하여 프로세싱 순서를 결정할 수 있으며 결정된 순서 별 프로세싱 최적화도 가능하다.
따라서, NPU 스케줄러(130)가 인공신경망모델의 데이터 지역성 정보 또는 구조에 대한 정보 및 신경망 프로세싱 유닛(100)의 데이터 지역성 정보 또는 구조에 대한 정보를 모두 제공받는 경우, 인공신경망모델의 데이터 지역성 정보 또는 구조에 대한 정보에 의해서 결정된 스케줄링 순서 각각의 연산 효율을 보다 더 향상시킬 수 있는 효과가 있다. 예를 들면, NPU 스케줄러(130)는 4개의 레이어의 인공 신경망 레이어들과 각각의 레이어들을 연결하는 3개의 레이어의 가중치 데이터들을 가지는 연결망 데이터를 획득할 수 있다. 이러한 경우 NPU 스케줄러(130)가 인공신경망모델의 데이터 지역성 정보 또는 구조에 대한 정보를 기초로 프로세싱 순서를 스케줄링 하는 방법에 대하여 예를 들어 아래에서 설명한다.
예를 들면, NPU 스케줄러(130)는 추론 연산을 위한 입력 데이터를 인공신경망모델의 입력 레이어인 제1 레이어의 노드 데이터로 설정하고, 제1 레이어의 노드 데이터와 제1 레이어에 대응되는 제1 연결망의 가중치 데이터의 MAC(multiply and accumulate) 연산을 먼저 수행하도록 스케줄링 할 수 있다. 단, 본 개시의 예시들은 MAC 연산에 제한되지 않으며, 인공 신경망 연산은 다양하게 변형실시 될 수 있는 곱셈기 및 덧셈기를 활용하여 인공신경망 연산을 수행하는 것도 가능하다. 이하 단지 설명의 편의를 위해서 해당 연산을 제1 연산이라 지칭하고, 제1 연산의 결과를 제1 연산 값이라 지칭하고, 해당 스케줄링을 제1 스케줄링이라 지칭할 수 있다.
예를 들면, NPU 스케줄러(130)는 제1 연산 값을 제1 연결망에 대응되는 제2 레이어의 노드 데이터로 설정하고, 제2 레이어의 노드 데이터와 제2 레이어에 대응되는 제2 연결망의 가중치 데이터의 MAC 연산을 제1 스케줄링 이후에 수행하도록 스케줄링 할 수 있다. 이하 단지 설명의 편의를 위해서 해당 연산을 제2 연산이라 지칭하고, 제2 연산의 결과를 제2 연산 값이라 지칭하고, 해당 스케줄링을 제2 스케줄링이라 지칭할 수 있다.
예를 들면, NPU 스케줄러(130)는 제2 연산 값을 제2 연결망에 대응되는 제3 레이어의 노드 데이터로 설정하고, 제3 레이어의 노드 데이터와 제3 레이어에 대응되는 제3 연결망의 가중치 데이터의 MAC 연산을 제2 스케줄링에 수행하도록 스케줄링 할 수 있다. 이하 단지 설명의 편의를 위해서 해당 연산을 제3 연산이라 지칭하고, 제3 연산의 결과를 제3 연산 값이라 지칭하고, 해당 스케줄링을 제3 스케줄링이라 지칭할 수 있다.
예를 들면, NPU 스케줄러(130)는 제3 연산 값을 제3 연결망에 대응되는 출력 레이어인 제4 레이어의 노드 데이터로 설정하고, 제4 레이어의 노드 데이터에 저장된 추론 결과를 NPU 내부 메모리(120)에 저장하도록 스케줄링 할 수 있다. 이하 단지 설명의 편의를 위해서 해당 스케줄링을 제4 스케줄링이라 지칭할 수 있다.
정리하면, NPU 스케줄러(130)는 제1 스케줄링, 제2 스케줄링, 제3 스케줄링, 및 제4 스케줄링 순서대로 연산이 수행되도록 NPU 내부 메모리(120)과 프로세싱 엘리먼트 어레이(110)를 제어할 수 있다. 즉, NPU 스케줄러(130)는 설정된 스케줄링 순서대로 연산이 수행되도록 NPU 내부 메모리(120)과 프로세싱 엘리먼트 어레이(110)를 제어하도록 구성될 수 있다.
정리하면, 본 개시의 일 예시에 따른 신경망 프로세싱 유닛(100)은 인공 신경망의 레이어들의 구조와, 구조에 대응되는 연산 순서 데이터에 기초하여, 프로세싱 순서를 스케줄링 하도록 구성될 수 있다.
예를 들면, NPU 스케줄러(130)는 인공신경망모델의 인공 신경망의 입력 레이어부터 출력 레이어 까지의 데이터 지역성 정보 또는 구조에 대한 정보를 기초로, 프로세싱 순서를 스케줄링 하도록 구성될 수 있다.
NPU 스케줄러(130)는 인공신경망모델의 데이터 지역성 정보 또는 구조에 대한 정보에 기초한 스케줄링 순서를 활용하여 NPU 내부 메모리(120)을 제어하여 신경망 프로세싱 유닛의 연산 가동율을 향상시킬 수 있고, 메모리 재사용율을 향상시킬 수 있는 효과가 있다.
본 개시의 일 예시에 따른 신경망 프로세싱 유닛(100)에서 구동되는 인공 신경망 연산의 특성상 하나의 레이어의 연산 값이 다음 레이어의 입력 데이터가 되는 특성을 가질 수 있다.
이에, 신경망 프로세싱 유닛(100)은 스케줄링 순서에 따라서 NPU 내부 메모리(120)을 제어하여, NPU 내부 메모리(120)의 메모리 재사용율을 향상시킬 수 있는 효과가 있다. 메모리 재사용은 메모리에 저장된 데이터를 몇 번 읽는지 횟수로 판단할 수 있다. 예를 들면, 메모리에 특정 데이터를 저장한 다음, 특정 데이터를 1회만 읽은 후 해당 데이터를 삭제하거나 덮어쓰기 하면, 메모리 재사용율은 100%가 될 수 있다. 예를 들면, 메모리에 특정 데이터를 저장한 다음, 특정 데이터를 4회 읽은 후, 해당 데이터를 삭제하거나 덮어쓰기 하면, 메모리 재사용율은 400%가 될 수 있다. 즉, 메모리 재사용율은 한번 저장된 데이터의 재사용 횟수로 정의될 수 있다. 즉, 메모리 재사용은 메모리에 저장된 데이터 또는 특정 데이터가 저장된 특정 메모리 어드레스를 재사용한다는 것을 의미할 수 있다.
구체적으로 설명하면, NPU 스케줄러(130)가 인공신경망모델의 데이터 지역성 정보 또는 구조에 대한 정보를 제공받도록 구성되고, 제공받은 인공신경망모델의 데이터 지역성 정보 또는 구조에 대한 정보에 의해서 인공 신경망의 연산이 진행되는 순서 데이터를 파악할 수 있는 경우, NPU 스케줄러(130)는 인공신경망모델의 특정 레이어의 노드 데이터와 특정 연결망의 가중치 데이터의 연산 결과가 대응되는 다음 레이어의 노드 데이터가 된다는 사실을 인식하였다.
따라서 NPU 스케줄러(130)는 특정 연산 결과가 저장된 메모리 어드레스의 값을 이어지는 다음 연산에서 재사용할 수 있다. 따라서 메모리 재사용율이 향상될 수 있다.
예를 들면, 상술한 제1 스케줄링의 제1 연산 값은 제2 스케줄링의 제2 레이어의 노드 데이터로 설정된다. 구체적으로 설명하면, NPU 스케줄러(130)는 NPU 내부 메모리(120)에 저장된 제1 스케줄링의 제1 연산 값에 대응되는 메모리 어드레스 값을 제2 스케줄링의 제2 레이어의 노드 데이터에 대응되는 메모리 어드레스 값으로 재설정할 수 있다. 즉, 메모리 어드레스 값을 재사용할 수 있다. 따라서 NPU 스케줄러(130)가 제1 스케줄링의 메모리 어드레스의 데이터를 재사용함으로 써, NPU 내부 메모리(120)은 별도의 메모리 쓰기 동작 없이 제2 스케줄링의 제2 레이어 노드 데이터로 활용할 수 있는 효과가 있다.
예를 들면, 상술한 제2 스케줄링의 제2 연산 값은 제3 스케줄링의 제3 레이어의 노드 데이터로 설정된다. 구체적으로 설명하면, NPU 스케줄러(130)는 NPU 내부 메모리(120)에 저장된 제2 스케줄링의 제2 연산 값에 대응되는 메모리 어드레스 값을 제3 스케줄링의 제3 레이어의 노드 데이터에 대응되는 메모리 어드레스 값으로 재설정할 수 있다. 즉, 메모리 어드레스 값을 재사용할 수 있다. 따라서 NPU 스케줄러(130)가 제2 스케줄링의 메모리 어드레스의 데이터를 재사용함으로 써, NPU 내부 메모리(120)은 별도의 메모리 쓰기 동작 없이 제3 스케줄링의 제3 레이어 노드 데이터로 활용할 수 있는 효과가 있다.
예를 들면, 상술한 제3 스케줄링의 제3 연산 값은 제4 스케줄링의 제4 레이어의 노드 데이터로 설정된다. 구체적으로 설명하면, NPU 스케줄러(130)는 NPU 내부 메모리(120)에 저장된 제3 스케줄링의 제3 연산 값에 대응되는 메모리 어드레스 값을 제4 스케줄링의 제4 레이어의 노드 데이터에 대응되는 메모리 어드레스 값으로 재설정할 수 있다. 즉, 메모리 어드레스 값을 재사용할 수 있다. 따라서 NPU 스케줄러(130)가 제3 스케줄링의 메모리 어드레스의 데이터를 재사용함으로 써, NPU 내부 메모리(120)은 별도의 메모리 쓰기 동작 없이 제4 스케줄링의 제4 레이어 노드 데이터로 활용할 수 있는 효과가 있다.
더 나아가서, NPU 스케줄러(130)는 스케줄링 순서와 메모리 재사용 여부를 판단해서 NPU 내부 메모리(120)을 제어하도록 구성되는 것도 가능하다. 이러한 경우 NPU 스케줄러(130)가 인공신경망모델의 데이터 지역성 정보 또는 구조에 대한 정보를 분석해서 효율적인 스케줄링을 제공할 수 있는 효과가 있다. 또한 메모리 재사용이 가능한 연산에 필요한 데이터를 중복해서 NPU 내부 메모리(120)에 저장하지 않을 수 있기 때문에 메모리 사용량을 저감할 수 있는 효과가 있다. 또한 NPU 스케줄러(130)는 메모리 재사용만큼 저감된 메모리 사용량을 계산해서 NPU 내부 메모리(120)을 효율화 할 수 있는 효과가 있다.
더 나아가서, NPU 스케줄러(130)는 신경망 프로세싱 유닛(100)의 데이터 지역성 정보 또는 구조에 대한 정보에 기초해서, NPU 내부 메모리(120)의 리소스 사용량, 프로세싱 엘리먼트들(PE1 to PE12)의 리소스 사용량을 모니터링 하도록 구성될 수 있다. 따라서 신경망 프로세싱 유닛(100)의 하드웨어 리소스 활용 효율을 향상시킬 수 있는 효과가 있다.
본 개시의 일 예시에 따른 신경망 프로세싱 유닛(100)의 NPU 스케줄러(130)는 인공신경망모델의 데이터 지역성 정보 또는 구조에 대한 정보를 활용하여 메모리를 재사용할 수 있는 효과가 있다.
부연 설명하면, 인공신경망모델이 심층 신경망일 경우, 레이어의 개수 및 연결망의 개수가 상당히 증가할 수 있으며, 이러한 경우 메모리 재사용의 효과가 더욱더 극대화될 수 있는 효과가 있다.
즉, 만약 신경망 프로세싱 유닛(100)이 인공신경망모델의 데이터 지역성 정보 또는 구조에 대한 정보 및 연산 순서를 파악하지 않을 경우, NPU 스케줄러(130)는 NPU 내부 메모리(120)에 저장된 값들의 메모리 재사용 여부를 판단할 수 없다. 따라서, NPU 스케줄러(130)는 각각의 프로세싱에 필요한 메모리 어드레스를 불필요하게 생성하고, 실질적으로 동일한 데이터를 하나의 메모리 어드레스에서 다른 메모리 어드레스로 복사해야 한다. 따라서 불필요한 메모리 읽기 쓰기 작업이 발생되며, NPU 내부 메모리(120)에 중복되는 값들이 저장되게 되어, 불필요하게 메모리가 낭비되는 문제가 발생할 수 있다.
프로세싱 엘리먼트 어레이(110)는 인공 신경망의 노드 데이터와 연결망의 가중치 데이터를 연산하도록 구성된 복수의 프로세싱 엘리먼트들(PE1 to PE12)이 배치된 구성을 의미한다. 각각의 프로세싱 엘리먼트는 MAC (multiply and accumulate) 연산기 및/또는 ALU (Arithmetic Logic Unit) 연산기를 포함할 수 있다. 단, 본 개시에 따른 예시들은 이에 제한되지 않는다.
도 2에서는 예시적으로 복수의 프로세싱 엘리먼트들이 도시되었지만, 하나의 프로세싱 엘리먼트 내부에 MAC을 대체하여, 복수의 곱셈기(multiplier) 및 가산기 트리(adder tree)로 구현된 연산기들이 병렬로 배치되어 구성되는 것도 가능하다. 이러한 경우, 프로세싱 엘리먼트 어레이(110)는 복수의 연산기를 포함하는 적어도 하나의 프로세싱 엘리먼트로 지칭되는 것도 가능하다.
프로세싱 엘리먼트 어레이(110)는 복수의 프로세싱 엘리먼트들(PE1 to PE12)을 포함하도록 구성된다. 도 2에 도시된 복수의 프로세싱 엘리먼트들(PE1 to PE12)은 단지 설명의 편의를 위한 예시이며, 복수의 프로세싱 엘리먼트들(PE1 to PE12)의 개수는 제한되지 않는다. 복수의 프로세싱 엘리먼트들(PE1 to PE12)의 개수에 의해서 프로세싱 엘리먼트 어레이(110)의 크기 또는 개수가 결정될 수 있다. 프로세싱 엘리먼트 어레이(110)의 크기는 N x M 행렬 형태로 구현될 수 있다. 여기서 N 과 M은 0보다 큰 정수이다. 프로세싱 엘리먼트 어레이(110)는 N x M 개의 프로세싱 엘리먼트를 포함할 수 있다. 즉, 프로세싱 엘리먼트는 1개 이상일 수 있다.
프로세싱 엘리먼트 어레이(110)의 크기는 신경망 프로세싱 유닛(100)이 작동하는 인공신경망모델의 특성을 고려하여 설계할 수 있다. 부연 설명하면, 프로세싱 엘리먼트의 개수는 작동할 인공신경망모델의 데이터 크기, 요구되는 동작 속도, 요구되는 소비 전력 등을 고려하여 결정될 수 있다. 인공신경망모델의 데이터 크기는 인공신경망모델의 레이어 수와 각각의 레이어의 가중치 데이터 크기에 대응되어 크기가 결정될 수 있다.
따라서, 본 개시의 일 예시에 따른 신경망 프로세싱 유닛(100)의 프로세싱 엘리먼트 어레이(110)의 크기는 제한되지 않는다. 프로세싱 엘리먼트 어레이(110)의 프로세싱 엘리먼트들의 개수가 증가할수록 작동하는 인공신경망모델의 병렬 연산 능력이 증가되나, 신경망 프로세싱 유닛(100)의 제조 비용 및 물리적인 크기가 증가될 수 있다.
예를 들면, 신경망 프로세싱 유닛(100)에서 작동되는 인공신경망모델은 30개의 특정 키워드를 감지하도록 학습된 인공 신경망, 즉 AI 키워드 인식모델일 수 있으며, 이러한 경우, 신경망 프로세싱 유닛(100)의 프로세싱 엘리먼트 어레이(110)의 크기는 연산량 특성을 고려하여 4 x 3로 설계될 수 있다. 다르게 설명하면, 신경망 프로세싱 유닛(100)은 12개의 프로세싱 엘리먼트들을 포함할 수 있다. 단, 이에 제한되지 않으며, 복수의 프로세싱 엘리먼트들(PE1 to PE12)의 개수는 예를 들면, 8개 내지 16,384 범위 내에서 선택되는 것도 가능하다. 즉, 본 개시의 예시들은 프로세싱 엘리먼트의 개수에 제한되지 않는다.
프로세싱 엘리먼트 어레이(110)는 인공 신경망 연산에 필요한 덧셈, 곱셈, 누산 등의 기능을 수행하도록 구성된다. 다르게 설명하면, 프로세싱 엘리먼트 어레이(110)는 MAC(multiplication and accumulation) 연산을 수행하도록 구성될 수 있다.
이하 프로세싱 엘리먼트 어레이(110) 중 제1 프로세싱 엘리먼트(PE1)를 예를 들어 설명한다.
도 2는 본 개시에 적용될 수 있는 프로세싱 엘리먼트 어레이 중 하나의 프로세싱 엘리먼트를 설명하는 개략적인 개념도이다.
본 개시의 일 예시에 따른 신경망 프로세싱 유닛(100)은 프로세싱 엘리먼트 어레이(110), 프로세싱 엘리먼트 어레이(110)에서 추론될 수 있는 인공신경망모델을 저장하도록 구성된 NPU 내부 메모리(120) 및 인공신경망모델의 데이터 지역성 정보 또는 구조에 대한 정보에 기초하여 프로세싱 엘리먼트 어레이(110) 및 NPU 내부 메모리(120)을 제어하도록 구성된 NPU 스케줄러(130)를 포함하고, 프로세싱 엘리먼트 어레이(110)는 MAC 연산을 수행하도록 구성되고, 프로세싱 엘리먼트 어레이(110)는 MAC 연산 결과를 양자화해서 출력하도록 구성될 수 있다. 단, 본 개시의 예시들은 이에 제한되지 않는다.
NPU 내부 메모리(120)은 메모리 크기와 인공신경망모델의 데이터 크기에 따라 인공신경망모델의 전부 또는 일부를 저장할 수 있다.
제1 프로세싱 엘리먼트(PE1)는 곱셈기(111), 가산기(112), 누산기(113), 및 비트 양자화 유닛(114)을 포함할 수 있다. 단, 본 개시에 따른 예시들은 이에 제한되지 않으며, 프로세싱 엘리먼트 어레이(110)는 인공 신경망의 연산 특성을 고려하여 변형 실시될 수도 있다.
곱셈기(111)는 입력 받은 (N)bit 데이터와 (M)bit 데이터를 곱한다. 곱셈기(111)의 연산 값은 (N+M)bit 데이터로 출력된다. 여기서 N과 M은 0보다 큰 정수이다. (N)bit 데이터를 입력 받는 제1 입력부는 변수같은 특성을 가지는 값을 입력 받도록 구성될 수 있고 (M)bit 데이터를 입력 받는 제2 입력부는 상수 같은 특성을 가지는 값을 입력 받도록 구성될 수 있다. NPU 스케줄러(130)가 변수 값과 상수 값 특성을 구분할 경우, NPU 스케줄러(130)는 NPU 내부 메모리(120)의 메모리 재사용율을 증가시킬 수 있는 효과가 있다. 단, 곱셈기(111)의 입력 데이터는 상수 값과 변수 값에 제한되지 않는다. 즉, 본 개시의 예시들에 따르면, 프로세싱 엘리먼트의 입력 데이터는 상수 값과 변수 값의 특성을 이해하여 동작할 수 있기 때문에, 신경망 프로세싱 유닛(100)의 연산 효율을 향상시킬 수 있다. 하지만 신경망 프로세싱 유닛(100)은 입력 데이터의 상수 값 및 변수 값의 특징에 제한되지 않는다.
여기서 변수 같은 특성을 가지는 값의 의미 또는 변수의 의미는, 해당 값이 저장된 메모리 어드레스의 값의 경우, 들어오는 입력 데이터가 갱신될 때마다 갱신된다는 것을 의미한다. 예를 들면, 각 레이어의 노드 데이터는 인공신경망모델의 가중치 데이터가 반영된 MAC 연산 값일 수 있으며, 해당 인공신경망모델로 동영상 데이터의 객체 인식 등을 추론할 경우, 매 프레임마다 입력 영상이 바뀌기 때문에, 각 레이어의 노드 데이터는 변하게 된다.
여기서 상수 같은 특성을 가지는 값의 의미 또는 상수의 의미는, 해당 값이 저장된 메모리 어드레스의 값의 경우, 들어오는 입력 데이터의 갱신과 상관없이 보존된다는 것을 의미한다. 예를 들면, 연결망의 가중치 데이터는 인공신경망모델의 고유한 추론 판단 기준으로, 해당 인공신경망모델로 동영상 데이터의 객체 인식 등을 추론하더라도, 연결망의 가중치 데이터는 변하지 않을 수 있다.
즉, 곱셈기(111)는 하나의 변수와 하나의 상수를 입력 받도록 구성될 수 있다. 부연 설명하면, 제1 입력부에 입력되는 변수 값은 인공 신경망의 레이어의 노드 데이터일 수 있으며, 노드 데이터는 인공 신경망의 입력 레이어의 입력 데이터, 은닉 레이어의 누산 값, 및 출력 레이어의 누산 값일 수 있다. 제2 입력부에 입력되는 상수 값은 인공 신경망의 연결망의 가중치 데이터일 수 있다.
NPU 스케줄러(130)는 상수 값의 특성을 고려하여 메모리 재사용율을 향상시키도록 구성될 수 있다.
변수 값은 각 레이어의 연산 값이며, NPU 스케줄러(130)는 인공신경망모델의 데이터 지역성 정보 또는 구조에 대한 정보에 기초하여 재사용 가능한 변수 값을 인식하고, 메모리를 재사용 하도록 NPU 내부 메모리(120)을 제어할 수 있다.
상수 값은 각 연결망의 가중치 데이터이며, NPU 스케줄러(130)는 인공신경망모델의 데이터 지역성 정보 또는 구조에 대한 정보에 기초하여 반복 사용되는 연결망의 상수 값을 인식하고, 메모리를 재사용 하도록 NPU 내부 메모리(120)을 제어할 수 있다.
즉, NPU 스케줄러(130)는 인공신경망모델의 데이터 지역성 정보 또는 구조에 대한 정보에 기초하여 재사용 가능한 변수 값 및 재사용 가능한 상수 값을 인식하고, NPU 스케줄러(130)는 메모리를 재사용 하도록 NPU 내부 메모리(120)을 제어하도록 구성될 수 있다.
프로세싱 엘리먼트는 곱셈기(111)의 제1 입력부 및 제2 입력부 중 하나의 입력부에 0이 입력될 때, 연산을 하지 않더라도 연산 결과가 0이 된다는 사실을 알기 때문에, 곱셈기(111)가 연산을 하지 않도록 동작을 제한할 수 있다.
예를 들면, 곱셈기(111)의 제1 입력부 및 제2 입력부 중 하나의 입력부에 0이 입력될 때, 곱셈기(111)는 제로 스키핑(zero skipping) 방식으로 동작하도록 구성될 수 있다.
제1 입력부 및 제2 입력부에 입력되는 데이터의 비트 폭(bit width)은 인공신경망모델의 각각의 레이어의 노드 데이터 및 가중치 데이터의 양자화에 따라서 결정될 수 있다. 예를 들면, 제1 레이어의 노드 데이터가 5bit로 양자화 되고 제1 레이어의 가중치 데이터가 7bit로 양자화될 수 있다. 이러한 경우 제1 입력부는 5bit 데이터를 입력 받도록 구성되고, 제2 입력부는 7bit 데이터를 입력 받도록 구성될 수 있다.
신경망 프로세싱 유닛(100)은 NPU 내부 메모리(120)에 저장된 양자화된 데이터가 프로세싱 엘리먼트의 입력부들에 입력될 때 양자화된 비트 폭이 실시간으로 변환되도록 제어할 수 있다. 즉, 레이어 마다 양자화 된 비트 폭이 다를 수 있으며, 프로세싱 엘리먼트는 입력되는 데이터의 비트 폭이 변환될 때 실시간으로 비트 폭 정보를 신경망 프로세싱 유닛(100)에서 제공받아서 실시간으로 비트 폭을 변환시켜서 입력 데이터를 생성하도록 구성될 수 있다.
누산기(113)는 (L)loops 횟수만큼 가산기(112)를 사용하여 곱셈기(111)의 연산 값과 누산기(113)의 연산 값을 누산 한다. 따라서 누산기(113)의 출력부와 입력부의 데이터의 비트 폭은 (N+M+log2(L))bit로 출력될 수 있다. 여기서 L은 0보다 큰 정수이다.
누산기(113)는 누산이 종료되면, 초기화 신호(initialization reset)를 인가 받아서 누산기(113) 내부에 저장된 데이터를 0으로 초기화 할 수 있다. 단, 본 개시에 따른 예시들은 이에 제한되지 않는다.
비트 양자화 유닛(114)은 누산기(113)에서 출력되는 데이터의 비트 폭을 저감할 수 있다. 비트 양자화 유닛(114)은 NPU 스케줄러(130)에 의해서 제어될 수 있다. 양자화된 데이터의 비트 폭은 (X)bit로 출력될 수 있다. 여기서 X는 0보다 큰 정수이다. 상술한 구성에 따르면, 프로세싱 엘리먼트 어레이(110)는 MAC 연산을 수행하도록 구성되고, 프로세싱 엘리먼트 어레이(110)는 MAC 연산 결과를 양자화해서 출력할 수 있는 효과가 있다. 특히 이러한 양자화는 (L)loops가 증가할수록 소비 전력을 더 절감할 수 있는 효과가 있다. 또한 소비 전력이 저감되면 발열도 저감할 수 있는 효과가 있다. 특히 발열을 저감하면 신경망 프로세싱 유닛(100)의 고온에 의한 오동작 발생 가능성을 저감할 수 있는 효과가 있다.
비트 양자화 유닛(114)의 출력 데이터(X)bit은 다음 레이어의 노드 데이터 또는 합성곱의 입력 데이터가 될 수 있다. 만약 인공신경망모델이 양자화되었다면, 비트 양자화 유닛(114)은 양자화된 정보를 인공신경망모델에서 제공받도록 구성될 수 있다. 단, 이에 제한되지 않으며, NPU 스케줄러(130)는 인공신경망모델을 분석하여 양자화된 정보를 추출하도록 구성되는 것도 가능하다. 따라서 양자화된 데이터 크기에 대응되도록, 출력 데이터(X)bit를 양자화 된 비트 폭으로 변환하여 출력될 수 있다. 비트 양자화 유닛(114)의 출력 데이터(X)bit는 양자화된 비트 폭으로 NPU 내부 메모리(120)에 저장될 수 있다.
본 개시의 일 예시에 따른 신경망 프로세싱 유닛(100)의 프로세싱 엘리먼트 어레이(110)는 곱셈기(111), 가산기(112), 누산기(113), 및 비트 양자화 유닛(114)을 포함한다. 프로세싱 엘리먼트 어레이(110)는 비트 양자화 유닛(114)에 의해서 누산기(113)에서 출력되는 (N+M+log2(L))bit의 비트 폭의 데이터를 (X)bit의 비트 폭으로 저감할 수 있다. NPU 스케줄러(130)는 비트 양자화 유닛(114)을 제어하여 출력 데이터의 비트 폭을 LSB(least significant bit)에서 MSB(most significant bit)까지 소정 비트 만큼 저감할 수 있다. 출력 데이터의 비트 폭이 저감되면 소비 전력, 연산량, 메모리 사용량이 저감될 수 있는 효과가 있다. 하지만 비트 폭이 특정 길이 이하로 저감될 경우, 인공신경망모델의 추론 정확도가 급격히 저하될 수 있는 문제가 발생될 수 있다. 따라서, 출력 데이터의 비트 폭 저감, 즉, 양자화 수준은 인공신경망모델의 추론 정확도 저감 수준 대비 소비 전력, 연산량, 메모리 사용량 저감 정도를 비교하여 결정할 수 있다. 양자화 수준의 결정은 인공신경망모델을 목표 추론 정확도를 결정하고, 비트 폭을 점진적으로 저감하면서 테스트 하는 방법으로 결정하는 것도 가능하다. 양자화 수준은 각각의 레이어의 연산 값마다 각각 결정될 수 있다.
상술한 제1 프로세싱 엘리먼트(PE1)에 따르면 곱셈기(111)의 (N)bit 데이터와 (M)bit 데이터의 비트 폭을 조절하고, 비트 양자화 유닛(114)에 의해서 연산 값(X)bit의 비트 폭을 저감함으로 써, 프로세싱 엘리먼트 어레이(110)는 MAC 연산 속도를 향상시키면서 소비 전력을 저감할 수 있는 효과가 있으며, 인공 신경망의 합성곱(convolution)연산을 보다 더 효율적으로 할 수 있는 효과도 있다.
신경망 프로세싱 유닛(100)의 NPU 내부 메모리(120)은 프로세싱 엘리먼트 어레이(110)의 MAC 연산 특성 및 소비 전력 특성을 고려하여 구성된 메모리 시스템일 수 있다.
예를 들면, 신경망 프로세싱 유닛(100)은, 프로세싱 엘리먼트 어레이(110)의 MAC 연산 특성 및 소비 전력 특성을 고려하여 프로세싱 엘리먼트 어레이(110)의 연산 값의 비트 폭을 저감하도록 구성될 수 있다.
신경망 프로세싱 유닛(100)의 NPU 내부 메모리(120)은 신경망 프로세싱 유닛(100)의 소비 전력을 최소화하도록 구성될 수 있다.
신경망 프로세싱 유닛(100)의 NPU 내부 메모리(120)은 작동되는 인공신경망모델의 데이터 크기 및 연산 단계를 고려하여 저전력으로 메모리를 제어하도록 구성된 메모리 시스템일 수 있다.
신경망 프로세싱 유닛(100)의 NPU 내부 메모리(120)은 인공신경망모델의 데이터 크기 및 연산 단계를 고려하여 가중치 데이터가 저장된 특정 메모리 어드레스를 재사용하도록 구성된 저전력 메모리 시스템일 수 있다.
신경망 프로세싱 유닛(100)은 비선형성을 부여하기 위한 여러 가지 활성화 함수를 제공할 수 있다. 예를 들면, 시그모이드 함수, 하이퍼볼릭 탄젠트 함수, 또는 ReLU함수를 제공할 수 있다. 활성화 함수는 MAC 연산 이후에 선택적으로 적용될 수 있다. 활성화 함수가 적용된 연산 값은, 활성화 맵으로 지칭될 수 있다.
도 3은 도 1에 도시된 신경망 프로세싱 유닛(100)의 변형예를 나타낸 예시도이다.
도 3에 도시된 신경망 프로세싱 유닛(100)은 도 1에 예시적으로 도시된 프로세싱 유닛(100)과 비교하면, 프로세싱 엘리먼트 어레이(110)를 제외하곤 실질적으로 동일하기 때문에, 이하 단지 설명의 편의를 위해서 중복 설명은 생략할 수 있다.
도 3에 예시적으로 도시된 프로세싱 엘리먼트 어레이(110)는 복수의 프로세싱 엘리먼트들(PE1 to PE12) 외에, 각각의 프로세싱 엘리먼트들(PE1 to PE12)에 대응되는 각각의 레지스터 파일들(RF1 to RF12)을 더 포함할 수 있다.
도 3에 도시된 복수의 프로세싱 엘리먼트들(PE1 to PE12) 및 복수의 레지스터 파일들(RF1 to RF12)은 단지 설명의 편의를 위한 예시이며, 복수의 프로세싱 엘리먼트들(PE1 to PE12) 및 복수의 레지스터 파일들(RF1 to RF12)의 개수는 제한되지 않는다.
복수의 프로세싱 엘리먼트들(PE1 to PE12) 및 복수의 레지스터 파일들(RF1 to RF12)의 개수에 의해서 프로세싱 엘리먼트 어레이(110)의 크기 또는 개수가 결정될 수 있다. 프로세싱 엘리먼트 어레이(110) 및 복수의 레지스터 파일들(RF1 to RF12)의 크기는 N x M 행렬 형태로 구현될 수 있다. 여기서 N 과 M은 0보다 큰 정수이다.
프로세싱 엘리먼트 어레이(110)의 어레이 크기는 신경망 프로세싱 유닛(100)이 작동하는 인공신경망모델의 특성을 고려하여 설계할 수 있다. 부연 설명하면, 레지스터 파일의 메모리 크기는 작동할 인공신경망모델의 데이터 크기, 요구되는 동작 속도, 요구되는 소비 전력 등을 고려하여 결정될 수 있다.
신경망 프로세싱 유닛(100)의 레지스터 파일들(RF1 to RF12)은 프로세싱 엘리먼트들(PE1 to PE12)과 직접 연결된 정적 메모리 유닛이다. 레지스터 파일들(RF1 to RF12)은 예를 들면, 플립플롭, 및/또는 래치 등으로 구성될 수 있다. 레지스터 파일들(RF1 to RF12)은 대응되는 프로세싱 엘리먼트들(RF1 to RF12)의 MAC 연산 값을 저장하도록 구성될 수 있다. 레지스터 파일들(RF1 to RF12)은 NPU 시스템 메모리(120)와 가중치 데이터 및/또는 노드 데이터를 제공하거나 제공받도록 구성될 수 있다.
도 4는 예시적인 인공신경망모델을 설명하는 개략적인 개념도이다.
이하 신경망 프로세싱 유닛(100)에서 작동될 수 있는 예시적인 인공신경망모델(1300)의 연산에 대하여 설명한다.
도 4의 예시적인 인공신경망모델(110a)은 신경망 프로세싱 유닛(100)에서 학습되거나 또는 도 5a에 도시된 장치 혹은 도 6a 또는 6b에 도시된 장치 혹은 별도의 기계 학습 장치에서 학습된 인공 신경망일 수 있다. 인공신경망모델(110a)은 객체 인식, 음성 인식 등 다양한 추론 기능을 수행하도록 학습된 인공 신경망일 수 있다.
인공신경망모델(110a)은 심층 신경망(DNN, Deep Neural Network)일 수 있다.
단, 본 개시의 예시들에 따른 인공신경망모델(110a)은 심층 신경망에 제한되지 않는다.
예를 들어, 인공신경망모델(110a)은 VGG, VGG16, DenseNet 및, encoder-decoder structure를 갖는 FCN (Fully Convolutional Network), SegNet, DeconvNet, DeepLAB V3+, U-net와 같은 DNN (deep neural network), SqueezeNet, Alexnet, ResNet18, MobileNet-v2, GoogLeNet, Resnet-v2, Resnet50, Resnet101, Inception-v3 등의 모델로 구현될 수 있다. 단, 본 개시는 상술한 모델들에 제한되지 않는다. 또한 인공신경망모델(110a)은 적어도 두 개의 서로 다른 모델들에 기초한 앙상블 모델일 수도 있다.
인공신경망모델(110a)은 신경망 프로세싱 유닛(100)의 NPU 내부 메모리(120)에 저장될 수 있다. 혹은 인공신경망모델(110a)은 도 5a에 도시된 장치(1000) 또는 도 6a 또는 6b에 도시된 장치(1000)의 메모리(200)에 저장된 다음 인공신경망모델(110a) 동작 시 신경망 프로세싱 유닛(100)에 로딩되는 방식으로 구현되는 것도 가능하다.
이하 도 4를 참조하여 예시적인 인공신경망모델(110a)에 의환 추론 과정이 신경망 프로세싱 유닛(100)에 의해서 수행되는 것에 관해 설명한다.
인공신경망모델(110a)은 입력 레이어(110a-1), 제1 연결망(110a-2), 제1 은닉 레이어(110a-3), 제2 연결망(110a-4), 제2 은닉 레이어(110a-5), 제3 연결망(110a-6), 및 출력 레이어(110a-7)을 포함하는 예시적인 심층 신경망 모델이다. 단, 본 개시는 도 4에 도시된 인공신경망모델에만 제한되는 것은 아니다. 제1 은닉 레이어(110a-3) 및 제2 은닉 레이어(110a-5)는 복수의 은닉 레이어로 지칭되는 것도 가능하다.
입력 레이어(110a-1)는 예시적으로, x1 및 x2 입력 노드를 포함할 수 있다. 즉, 입력 레이어(110a-1)는 2개의 입력 값에 대한 정보를 포함할 수 있다. 도 1 또는 도 3에 도시된 NPU 스케줄러(130)는 입력 레이어(110a-1)로부터의 입력 값에 대한 정보가 저장되는 메모리 어드레스를 도 1 또는 도 3에 도시된 NPU 내부 메모리(120)에 설정할 수 있다.
제1 연결망(110a-2)은 예시적으로, 입력 레이어(110a-1)의 각각의 노드를 제1 은닉 레이어(110a-3)의 각각의 노드로 연결시키기 위한 6개의 가중치 값에 대한 정보를 포함할 수 있다. 도 1 또는 도 3에 도시된 NPU 스케줄러(130)는 제1 연결망(110a-2)의 가중치 값에 대한 정보가 저장되는 메모리 어드레스를 NPU 내부 메모리(120)에 설정할 수 있다. 각각의 가중치 값은 입력 노드 값과 곱해지고, 곱해진 값들의 누산된 값이 제1 은닉 레이어(110a-3)에 저장된다.
제1 은닉 레이어(110a-3)는 예시적으로 a1, a2, 및 a3 노드를 포함할 수 있다. 즉, 제1 은닉 레이어(110a-3)는 3개의 노드 값에 대한 정보를 포함할 수 있다. 도 1 또는 도 3에 도시된 NPU 스케줄러(130)는 제1 은닉 레이어(110a-3)의 노드 값에 대한 정보를 저장시키기 위한 메모리 어드레스를 NPU 내부 메모리(120)에 설정할 수 있다.
제2 연결망(110a-4)은 예시적으로, 제1 은닉 레이어(110a-3)의 각각의 노드를 제2 은닉 레이어(110a-5)의 각각의 노드로 연결시키기 위한 9개의 가중치 값에 대한 정보를 포함할 수 있다. 도 1 또는 도 3에 도시된 NPU 스케줄러(130)는 제2 연결망(110a-4)의 가중치 값에 대한 정보를 저장시키기 위한 메모리 어드레스를 NPU 내부 메모리(120)에 설정할 수 있다. 상기 제2 연결망(110a-4)의 가중치 값은 제1 은닉 레이어(110a-3)로부터 입력되는 노드 값과 각기 곱해지고, 곱해진 값들의 누산된 값이 제2 은닉 레이어(110a-5)에 저장된다.
제2 은닉 레이어(110a-5)는 예시적으로 b1, b2, 및 b3 노드를 포함할 수 있다. 즉, 제2 은닉 레이어(110a-5)는 3개의 노드 값에 대한 정보를 포함할 수 있다. NPU 스케줄러(130)는 제2 은닉 레이어(110a-5)의 노드 값에 대한 정보를 저장시키기 위한 메모리 어드레스를 NPU 내부 메모리(120)에 설정할 수 있다.
제3 연결망(110a-6)은 예시적으로, 제2 은닉 레이어(110a-5)의 각각의 노드와 출력 레이어(110a-7)의 각각의 노드를 연결하는 6개의 가중치 값에 대한 정보를 포함할 수 있다. NPU 스케줄러(130)는 제3 연결망(110a-6)의 가중치 값에 대한 정보를 저장시키기 위한 메모리 어드레스를 NPU 내부 메모리(120)에 설정할 수 있다. 제3 연결망(110a-6)의 가중치 값은 제2 은닉 레이어(110a-5)로부터 입력되는 노드 값과 각기 곱해지고, 곱해진 값들의 누산된 값이 출력 레이어(110a-7)에 저장된다.
출력 레이어(110a-7)는 예시적으로 y1, 및 y2 노드를 포함할 수 있다. 즉, 출력 레이어(110a-7)는 2개의 노드 값에 대한 정보를 포함할 수 있다. NPU 스케줄러(130)는 출력 레이어(110a-7)의 노드 값에 대한 정보를 저장시키기 위해 메모리 어드레스를 NPU 내부 메모리(120)에 설정할 수 있다.
즉, NPU 스케줄러(130)는 프로세싱 엘리먼트 어레이(100)에서 작동할 인공신경망모델의 구조를 분석하거나 또는 제공받을 수 있다. 인공신경망모델이 포함할 수 있는 인공 신경망의 정보는 각각의 레이어의 노드 값에 대한 정보, 레이어들의 배치 데이터 지역성 정보 또는 구조에 대한 정보, 각각의 레이어의 노드를 연결하는 연결망 각각의 가중치 값에 대한 정보를 포함할 수 있다.
NPU 스케줄러(130)는 예시적인 인공신경망모델(110a)의 데이터 지역성 정보 또는 구조에 대한 정보를 제공받았기 때문에, NPU 스케줄러(130)는 인공신경망모델(110a)의 입력부터 출력까지의 연산 순서를 파악할 수 있다.
따라서, NPU 스케줄러(130)는 각각의 레이어의 MAC 연산 값들이 저장되는 메모리 어드레스를 스케줄링 순서를 고려해서 NPU 내부 메모리(120)에 설정할 수 있다. 예를 들면, 특정 메모리 어드레스는 입력 레이어(110a-1)와 제1 연결망(110a-2)의 MAC 연산 값일 수 있으며, 동시에 제1 은닉 레이어(110a-3)의 입력 데이터 일 수 있다. 단 본 개시는 MAC 연산 값에 제한되지 않으며, MAC 연산 값은 인공 신경망 연산 값으로 지칭되는 것도 가능하다.
이때, NPU 스케줄러(130)는 입력 레이어(110a-1)와 제1 연결망(110a-2)의 MAC 연산 결과가 제1 은닉 레이어(110a-3)의 입력이 될 것을 알기 때문에, 동일한 메모리 어드레스를 사용하도록 제어할 수 있다. 즉, NPU 스케줄러(130)는 인공신경망모델의 데이터 지역성 정보 또는 구조에 대한 정보에 기초하여 MAC 연산 값을 재사용할 수 있다. 따라서 NPU 시스템 메모리(120)가 메모리 재사용 기능을 제공할 수 있는 효과가 있다.
즉, NPU 스케줄러(130)는 스케줄링 순서에 따른 인공신경망모델(110a)의 MAC 연산 값을 NPU 내부 메모리(120)의 임의 메모리 어드레스에 지정된 특정 영역에 저장하고, MAC 연산 값이 저장된 특정 영역에서 다음 스케줄링 순서의 MAC 연산의 입력 데이터로 사용될 수 있다.
제1 프로세싱 엘리먼트(PE1) 관점에서의 MAC 연산
MAC 연산을 제1 프로세싱 엘리먼트(PE1) 관점에서 자세히 설명한다. 제1 프로세싱 엘리먼트(PE1)는 제1 은닉 레이어(110a-3)의 a1 노드의 MAC 연산을 수행하도록 지정될 수 있다.
첫째, 제1 프로세싱 엘리먼트(PE1)는 곱셈기(111)의 제1 입력부에 입력 레이어(110a-1)의 x1 노드 데이터를 입력하고, 제2 입력부에 x1 노드와 a1 노드 사이의 가중치 데이터를 입력한다. 가산기(112)는 곱셈기(111)의 연산 값과 누산기(113)의 연산 값을 더한다. 이때 (L)loops가 0일 경우, 누산된 값이 없기 때문에, 누산된 값은 0이다. 따라서 가산기(112)의 연산 값은 곱셈기(111)의 연산 값과 동일할 수 있다. 이때, (L)loops의 카운터 값은 1이 될 수 있다.
둘째, 제1 프로세싱 엘리먼트(PE1)는 곱셈기(111)의 제1 입력부에 입력 레이어(110a-1)의 x2 노드 데이터를 입력하고, 제2 입력부에 x2 노드와 a1 노드 사이의 가중치 데이터를 입력한다. 가산기(112)는 곱셈기(111)의 연산 값과 누산기(113)의 연산 값을 더한다. 이때 (L)loops가 1일 경우, 이전 단계에서 연산 된 x1 노드 데이터와 x1 노드와 a1 노드 사이의 가중치 곱셈 값이 저장되었다. 따라서 가산기(112)는 a1 노드에 대응되는 x1 노드와 x2 노드의 MAC 연산 값을 생성한다.
셋째, NPU 스케줄러(130)는 인공신경망모델의 데이터 지역성 정보 또는 구조에 대한 정보에 기초하여 제1 프로세싱 엘리먼트(PE1)의 MAC 연산을 종료할 수 있다. 이때 초기화 신호(initialization Reset)를 입력해서 누산기(113)를 초기화할 수 있다. 즉, (L)loops의 카운터 값을 0으로 초기화 할 수 있다.
비트 양자화 유닛(114)은 누산된 값에 따라 적절히 조절될 수 있다. 부연 설명하면, (L)loops가 증가할 수록, 출력되는 값의 비트 폭이 증가되게 된다. 이때 NPU 스케줄러(130)는 제1 프로세싱 엘리먼트(PE1)의 연산 값의 비트 폭이 (x)bit이 되도록 소정의 하위 비트를 제거할 수 있다.
제2 프로세싱 엘리먼트(PE2) 관점에서의 MAC 연산
MAC 연산을 제2 프로세싱 엘리먼트(PE2) 관점에서 자세히 설명한다. 제2 프로세싱 엘리먼트(PE2)는 제1 은닉 레이어(110a-3)의 a2 노드의 MAC 연산을 수행하도록 지정될 수 있다.
첫째, 제2 프로세싱 엘리먼트(PE2)는 곱셈기(111)의 제1 입력부에 입력 레이어(110a-1)의 x1 노드 데이터를 입력하고, 제2 입력부에 x1 노드와 a2 노드 사이의 가중치 데이터를 입력한다. 가산기(112)는 곱셈기(111)의 연산 값과 누산기(113)의 연산 값을 더한다. 이때 (L)loops가 0일 경우, 누산된 값이 없기 때문에, 누산된 값은 0이다. 따라서 가산기(112)의 연산 값은 곱셈기(111)의 연산 값과 동일할 수 있다. 이때, (L)loops의 카운터 값은 1이 될 수 있다.
둘째, 제2 프로세싱 엘리먼트(PE2)는 곱셈기(111)의 제1 입력부에 입력 레이어(110a-1)의 x2 노드 데이터를 입력하고, 제2 입력부에 x2 노드와 a2 노드 사이의 가중치 데이터를 입력한다. 가산기(112)는 곱셈기(111)의 연산 값과 누산기(113)의 연산 값을 더한다. 이때 (L)loops가 1일 경우, 이전 단계에서 연산 된 x1 노드 데이터와 x1 노드와 a2 노드 사이의 가중치 곱셈 값이 저장되었다. 따라서 가산기(112)는 a2 노드에 대응되는 x1 노드와 x2 노드의 MAC 연산 값을 생성한다.
셋째, NPU 스케줄러(130)는 인공신경망모델의 데이터 지역성 정보 또는 구조에 대한 정보에 기초하여 제1 프로세싱 엘리먼트(PE1)의 MAC 연산을 종료할 수 있다. 이때 초기화 신호(initialization Reset)를 입력해서 누산기(113)를 초기화할 수 있다. 즉, (L)loops의 카운터 값을 0으로 초기화 할 수 있다. 비트 양자화 유닛(114)은 누산된 값에 따라 적절히 조절될 수 있다.
제3 프로세싱 엘리먼트(PE3) 관점에서의 MAC 연산
MAC 연산을 제3 프로세싱 엘리먼트(PE3) 관점에서 자세히 설명한다. 제3 프로세싱 엘리먼트(PE3)는 제1 은닉 레이어(110a-3)의 a3 노드의 MAC 연산을 수행하도록 지정될 수 있다.
첫째, 제3 프로세싱 엘리먼트(PE3)는 곱셈기(111)의 제1 입력부에 입력 레이어(110a-1)의 x1 노드 데이터를 입력하고, 제2 입력부에 x1 노드와 a3 노드 사이의 가중치 데이터를 입력한다. 가산기(112)는 곱셈기(111)의 연산 값과 누산기(113)의 연산 값을 더한다. 이때 (L)loops가 0일 경우, 누산된 값이 없기 때문에, 누산된 값은 0이다. 따라서 가산기(112)의 연산 값은 곱셈기(111)의 연산 값과 동일할 수 있다. 이때, (L)loops의 카운터 값은 1이 될 수 있다.
둘째, 제3 프로세싱 엘리먼트(PE3)는 곱셈기(111)의 제1 입력부에 입력 레이어(110a-1)의 x2 노드 데이터를 입력하고, 제2 입력부에 x2 노드와 a3 노드 사이의 가중치 데이터를 입력한다. 가산기(112)는 곱셈기(111)의 연산 값과 누산기(113)의 연산 값을 더한다. 이때 (L)loops가 1일 경우, 이전 단계에서 연산 된 x1 노드 데이터와 x1 노드와 a3 노드 사이의 가중치 곱셈 값이 저장되었다. 따라서 가산기(112)는 a3 노드에 대응되는 x1 노드와 x2 노드의 MAC 연산 값을 생성한다.
셋째, NPU 스케줄러(130)는 인공신경망모델의 데이터 지역성 정보 또는 구조에 대한 정보에 기초하여 제1 프로세싱 엘리먼트(PE1)의 MAC 연산을 종료할 수 있다. 이때 초기화 신호(initialization Reset)를 입력해서 누산기(113)를 초기화할 수 있다. 즉, (L)loops의 카운터 값을 0으로 초기화 할 수 있다. 비트 양자화 유닛(114)은 누산된 값에 따라 적절히 조절될 수 있다.
따라서, 신경망 프로세싱 유닛(100)의 NPU 스케줄러(130)는 3개의 프로세싱 엘리먼트(PE1 내지 PE3)를 동시에 사용하여 제1 은닉 레이어(110a-3)의 MAC 연산을 수행할 수 있다.
제4 프로세싱 엘리먼트(PE4) 관점에서의 MAC 연산
MAC 연산을 제4 프로세싱 엘리먼트(PE4) 관점에서 자세히 설명한다. 제4 프로세싱 엘리먼트(PE4)는 제2 은닉 레이어(110a-5)의 b1 노드의 MAC 연산을 수행하도록 지정될 수 있다.
첫째, 제4 프로세싱 엘리먼트(PE4)는 곱셈기(111)의 제1 입력부에 제1 은닉 레이어(110a-3)의 a1 노드 데이터를 입력하고, 제2 입력부에 a1 노드와 b1 노드 사이의 가중치 데이터를 입력한다. 가산기(112)는 곱셈기(111)의 연산 값과 누산기(113)의 연산 값을 더한다. 이때 (L)loops가 0일 경우, 누산된 값이 없기 때문에, 누산된 값은 0이다. 따라서 가산기(112)의 연산 값은 곱셈기(111)의 연산 값과 동일할 수 있다. 이때, (L)loops의 카운터 값은 1이 될 수 있다.
둘째, 제4 프로세싱 엘리먼트(PE4)는 곱셈기(111)의 제1 입력부에 제1 은닉 레이어(110a-3)의 a2 노드 데이터를 입력하고, 제2 입력부에 a2 노드와 b1 노드 사이의 가중치 데이터를 입력한다. 가산기(112)는 곱셈기(111)의 연산 값과 누산기(113)의 연산 값을 더한다. 이때 (L)loops가 1일 경우, 이전 단계에서 연산 된 a1 노드 데이터와 a1 노드와 b1 노드 사이의 가중치 곱셈 값이 저장되었다. 따라서 가산기(112)는 b1 노드에 대응되는 a1 노드와 a2 노드의 MAC 연산 값을 생성한다. 이때, (L)loops의 카운터 값은 2가 될 수 있다.
셋째, 제4 프로세싱 엘리먼트(PE4)는 곱셈기(111)의 제1 입력부에 입력 레이어(110a-1)의 a3 노드 데이터를 입력하고, 제2 입력부에 a3 노드와 b1 노드 사이의 가중치 데이터를 입력한다. 가산기(112)는 곱셈기(111)의 연산 값과 누산기(113)의 연산 값을 더한다. 이때 (L)loops가 2일 경우, 이전 단계에서 연산 된 b1 노드에 대응되는 a1 노드와 a2 노드의 MAC 연산 값이 저장되었다. 따라서 가산기(112)는 b1 노드에 대응되는 a1 노드, a2 노드 및 a3 노드의 MAC 연산 값을 생성한다.
넷째, NPU 스케줄러(130)는 인공신경망모델의 데이터 지역성 정보 또는 구조에 대한 정보에 기초하여 제1 프로세싱 엘리먼트(PE1)의 MAC 연산을 종료할 수 있다. 이때 초기화 신호(initialization Reset)를 입력해서 누산기(113)를 초기화할 수 있다. 즉, (L)loops의 카운터 값을 0으로 초기화 할 수 있다. 비트 양자화 유닛(114)은 누산된 값에 따라 적절히 조절될 수 있다.
제5 프로세싱 엘리먼트(PE5) 관점에서의 MAC 연산
MAC 연산을 제5 프로세싱 엘리먼트(PE5) 관점에서 자세히 설명한다. 제5 프로세싱 엘리먼트(PE5)는 제2 은닉 레이어(110a-5)의 b2 노드의 MAC 연산을 수행하도록 지정될 수 있다.
첫째, 제5 프로세싱 엘리먼트(PE5)는 곱셈기(111)의 제1 입력부에 제1 은닉 레이어(110a-3)의 a1 노드 데이터를 입력하고, 제2 입력부에 a1 노드와 b2 노드 사이의 가중치 데이터를 입력한다. 가산기(112)는 곱셈기(111)의 연산 값과 누산기(113)의 연산 값을 더한다. 이때 (L)loops가 0일 경우, 누산된 값이 없기 때문에, 누산된 값은 0이다. 따라서 가산기(112)의 연산 값은 곱셈기(111)의 연산 값과 동일할 수 있다. 이때, (L)loops의 카운터 값은 1이 될 수 있다.
둘째, 제5 프로세싱 엘리먼트(PE5)는 곱셈기(111)의 제1 입력부에 제1 은닉 레이어(110a-3)의 a2 노드 데이터를 입력하고, 제2 입력부에 a2 노드와 b2 노드 사이의 가중치 데이터를 입력한다. 가산기(112)는 곱셈기(111)의 연산 값과 누산기(113)의 연산 값을 더한다. 이때 (L)loops가 1일 경우, 이전 단계에서 연산 된 a1 노드 데이터와 a1 노드와 b2 노드 사이의 가중치 곱셈 값이 저장되었다. 따라서 가산기(112)는 b2 노드에 대응되는 a1 노드와 a2 노드의 MAC 연산 값을 생성한다. 이때, (L)loops의 카운터 값은 2가 될 수 있다.
셋째, 제5 프로세싱 엘리먼트(PE5)는 곱셈기(111)의 제1 입력부에 입력 레이어(110a-1)의 a3 노드 데이터를 입력하고, 제2 입력부에 a3 노드와 b2 노드 사이의 가중치 데이터를 입력한다. 가산기(112)는 곱셈기(111)의 연산 값과 누산기(113)의 연산 값을 더한다. 이때 (L)loops가 2일 경우, 이전 단계에서 연산 된 b2 노드에 대응되는 a1 노드와 a2 노드의 MAC 연산 값이 저장되었다. 따라서 가산기(112)는 b2 노드에 대응되는 a1 노드, a2 노드 및 a3 노드의 MAC 연산 값을 생성한다.
넷째, NPU 스케줄러(130)는 인공신경망모델의 데이터 지역성 정보 또는 구조에 대한 정보에 기초하여 제1 프로세싱 엘리먼트(PE1)의 MAC 연산을 종료할 수 있다. 이때 초기화 신호(initialization Reset)를 입력해서 누산기(113)를 초기화할 수 있다. 즉, (L)loops의 카운터 값을 0으로 초기화 할 수 있다. 비트 양자화 유닛(114)은 누산된 값에 따라 적절히 조절될 수 있다.
제6 프로세싱 엘리먼트(PE6) 관점에서의 MAC 연산
MAC 연산을 제6 프로세싱 엘리먼트(PE6) 관점에서 자세히 설명한다. 제6 프로세싱 엘리먼트(PE6)는 제2 은닉 레이어(110a-5)의 b3 노드의 MAC 연산을 수행하도록 지정될 수 있다.
첫째, 제6 프로세싱 엘리먼트(PE6)는 곱셈기(111)의 제1 입력부에 제1 은닉 레이어(110a-3)의 a1 노드 데이터를 입력하고, 제2 입력부에 a1 노드와 b3 노드 사이의 가중치 데이터를 입력한다. 가산기(112)는 곱셈기(111)의 연산 값과 누산기(113)의 연산 값을 더한다. 이때 (L)loops가 0일 경우, 누산된 값이 없기 때문에, 누산된 값은 0이다. 따라서 가산기(112)의 연산 값은 곱셈기(111)의 연산 값과 동일할 수 있다. 이때, (L)loops의 카운터 값은 1이 될 수 있다.
둘째, 제6 프로세싱 엘리먼트(PE6)는 곱셈기(111)의 제1 입력부에 제1 은닉 레이어(110a-3)의 a2 노드 데이터를 입력하고, 제2 입력부에 a2 노드와 b3 노드 사이의 가중치 데이터를 입력한다. 가산기(112)는 곱셈기(111)의 연산 값과 누산기(113)의 연산 값을 더한다. 이때 (L)loops가 1일 경우, 이전 단계에서 연산 된 a1 노드 데이터와 a1 노드와 b3 노드 사이의 가중치 곱셈 값이 저장되었다. 따라서 가산기(112)는 b3 노드에 대응되는 a1 노드와 a2 노드의 MAC 연산 값을 생성한다. 이때, (L)loops의 카운터 값은 2가 될 수 있다.
셋째, 제6 프로세싱 엘리먼트(PE6)는 곱셈기(111)의 제1 입력부에 입력 레이어(110a-1)의 a3 노드 데이터를 입력하고, 제2 입력부에 a3 노드와 b3 노드 사이의 가중치 데이터를 입력한다. 가산기(112)는 곱셈기(111)의 연산 값과 누산기(113)의 연산 값을 더한다. 이때 (L)loops가 2일 경우, 이전 단계에서 연산 된 b3 노드에 대응되는 a1 노드와 a2 노드의 MAC 연산 값이 저장되었다. 따라서 가산기(112)는 b3 노드에 대응되는 a1 노드, a2 노드 및 a3 노드의 MAC 연산 값을 생성한다.
넷째, NPU 스케줄러(130)는 인공신경망모델의 데이터 지역성 정보 또는 구조에 대한 정보에 기초하여 제1 프로세싱 엘리먼트(PE1)의 MAC 연산을 종료할 수 있다. 이때 초기화 신호(initialization Reset)를 입력해서 누산기(113)를 초기화할 수 있다. 즉, (L)loops의 카운터 값을 0으로 초기화 할 수 있다. 비트 양자화 유닛(114)은 누산된 값에 따라 적절히 조절될 수 있다.
따라서, 신경망 프로세싱 유닛(100)의 NPU 스케줄러(130)는 3개의 프로세싱 엘리먼트(PE4 내지 PE6)를 동시에 사용하여 제2 은닉 레이어(110a-5)의 MAC 연산을 수행할 수 있다.
제7 프로세싱 엘리먼트(PE7) 관점에서의 MAC 연산
MAC 연산을 제7 프로세싱 엘리먼트(PE7) 관점에서 자세히 설명한다. 제7 프로세싱 엘리먼트(PE7)는 출력 레이어(110a-7)의 y1 노드의 MAC 연산을 수행하도록 지정될 수 있다.
첫째, 제7 프로세싱 엘리먼트(PE7)는 곱셈기(111)의 제1 입력부에 제2 은닉 레이어(110a-5)의 b1 노드 데이터를 입력하고, 제2 입력부에 b1 노드와 y1 노드 사이의 가중치 데이터를 입력한다. 가산기(112)는 곱셈기(111)의 연산 값과 누산기(113)의 연산 값을 더한다. 이때 (L)loops가 0일 경우, 누산된 값이 없기 때문에, 누산된 값은 0이다. 따라서 가산기(112)의 연산 값은 곱셈기(111)의 연산 값과 동일할 수 있다. 이때, (L)loops의 카운터 값은 1이 될 수 있다.
둘째, 제7 프로세싱 엘리먼트(PE7)는 곱셈기(111)의 제1 입력부에 제2 은닉 레이어(110a-5)의 b2 노드 데이터를 입력하고, 제2 입력부에 b2 노드와 y1 노드 사이의 가중치 데이터를 입력한다. 가산기(112)는 곱셈기(111)의 연산 값과 누산기(113)의 연산 값을 더한다. 이때 (L)loops가 1일 경우, 이전 단계에서 연산 된 b1 노드 데이터와 b1 노드와 y1 노드 사이의 가중치 곱셈 값이 저장되었다. 따라서 가산기(112)는 y1 노드에 대응되는 b1 노드와 b2 노드의 MAC 연산 값을 생성한다. 이때, (L)loops의 카운터 값은 2가 될 수 있다.
셋째, 제7 프로세싱 엘리먼트(PE7)는 곱셈기(111)의 제1 입력부에 입력 레이어(110a-1)의 b3 노드 데이터를 입력하고, 제2 입력부에 b3 노드와 y1 노드 사이의 가중치 데이터를 입력한다. 가산기(112)는 곱셈기(111)의 연산 값과 누산기(113)의 연산 값을 더한다. 이때 (L)loops가 2일 경우, 이전 단계에서 연산 된 y1 노드에 대응되는 b1 노드와 b2 노드의 MAC 연산 값이 저장되었다. 따라서 가산기(112)는 y1 노드에 대응되는 b1 노드, b2 노드 및 b3 노드의 MAC 연산 값을 생성한다.
넷째, NPU 스케줄러(130)는 인공신경망모델의 데이터 지역성 정보 또는 구조에 대한 정보에 기초하여 제1 프로세싱 엘리먼트(PE1)의 MAC 연산을 종료할 수 있다. 이때 초기화 신호(initialization Reset)를 입력해서 누산기(113)를 초기화할 수 있다. 즉, (L)loops의 카운터 값을 0으로 초기화 할 수 있다. 비트 양자화 유닛(114)은 누산된 값에 따라 적절히 조절될 수 있다.
제8 프로세싱 엘리먼트(PE8) 관점에서의 MAC 연산
MAC 연산을 제8 프로세싱 엘리먼트(PE8) 관점에서 자세히 설명한다. 제8 프로세싱 엘리먼트(PE8)는 출력 레이어(110a-7)의 y2 노드의 MAC 연산을 수행하도록 지정될 수 있다.
첫째, 제8 프로세싱 엘리먼트(PE8)는 곱셈기(111)의 제1 입력부에 제2 은닉 레이어(110a-5)의 b1 노드 데이터를 입력하고, 제2 입력부에 b1 노드와 y2 노드 사이의 가중치 데이터를 입력한다. 가산기(112)는 곱셈기(111)의 연산 값과 누산기(113)의 연산 값을 더한다. 이때 (L)loops가 0일 경우, 누산된 값이 없기 때문에, 누산된 값은 0이다. 따라서 가산기(112)의 연산 값은 곱셈기(111)의 연산 값과 동일할 수 있다. 이때, (L)loops의 카운터 값은 1이 될 수 있다.
둘째, 제8 프로세싱 엘리먼트(PE8)는 곱셈기(111)의 제1 입력부에 제2 은닉 레이어(110a-5)의 b2 노드 데이터를 입력하고, 제2 입력부에 b2 노드와 y2 노드 사이의 가중치 데이터를 입력한다. 가산기(112)는 곱셈기(111)의 연산 값과 누산기(113)의 연산 값을 더한다. 이때 (L)loops가 1일 경우, 이전 단계에서 연산 된 b1 노드 데이터와 b1 노드와 y2 노드 사이의 가중치 곱셈 값이 저장되었다. 따라서 가산기(112)는 y2 노드에 대응되는 b1 노드와 b2 노드의 MAC 연산 값을 생성한다. 이때, (L)loops의 카운터 값은 2가 될 수 있다.
셋째, 제8 프로세싱 엘리먼트(PE8)는 곱셈기(111)의 제1 입력부에 입력 레이어(110a-1)의 b3 노드 데이터를 입력하고, 제2 입력부에 b3 노드와 y2 노드 사이의 가중치 데이터를 입력한다. 가산기(112)는 곱셈기(111)의 연산 값과 누산기(113)의 연산 값을 더한다. 이때 (L)loops가 2일 경우, 이전 단계에서 연산 된 y2 노드에 대응되는 b1 노드와 b2 노드의 MAC 연산 값이 저장되었다. 따라서 가산기(112)는 y2 노드에 대응되는 b1 노드, b2 노드 및 b3 노드의 MAC 연산 값을 생성한다.
넷째, NPU 스케줄러(130)는 인공신경망모델의 데이터 지역성 정보 또는 구조에 대한 정보에 기초하여 제1 프로세싱 엘리먼트(PE1)의 MAC 연산을 종료할 수 있다. 이때 초기화 신호(initialization Reset)를 입력해서 누산기(113)를 초기화할 수 있다. 즉, (L)loops의 카운터 값을 0으로 초기화 할 수 있다. 비트 양자화 유닛(114)은 누산된 값에 따라 적절히 조절될 수 있다.
따라서, 신경망 프로세싱 유닛(100)의 NPU 스케줄러(130)는 2개의 프로세싱 엘리먼트(PE7 내지 PE8)를 동시에 사용하여 출력 레이어(110a-7)의 MAC 연산을 수행할 수 있다.
제 8 프로세싱 엘리먼트(PE8)의 MAC 연산이 끝나면, 인공신경망모델(110a)의 추론 연산이 마무리 될 수 있다. 즉, 인공신경망모델(110a)은 하나의 프레임의 추론 연산을 완료했다고 판단될 수 있다. 만약 신경망 프로세싱 유닛(100)이 실시간으로 동영상 데이터를 추론한다면, 입력 레이어(110a-1)의 x1 및 x2 입력 노드에 다음 프레임의 영상 데이터가 입력될 수 있다. 이때, NPU 스케줄러(130)는 입력 레이어(110a-1)의 입력 데이터를 저장한 메모리 어드레스에 다음 프레임의 영상 데이터를 저장할 수 있다. 이러한 과정을 프레임마다 반복하면 신경망 프로세싱 유닛(100)은 실시간으로 추론 연산을 처리할 수 있다. 또한 한번 설정된 메모리 어드레스를 재사용할 수 있는 효과가 있다
도 4의 인공신경망모델(110a)의 경우를 요약하면, 신경망 프로세싱 유닛(100)은 인공신경망모델(110a)의 추론 연산을 위해서 NPU 스케줄러(130)가 인공신경망모델(110a)의 데이터 지역성 정보 또는 구조에 대한 정보에 기초하여, 연산 스케줄링 순서를 결정할 수 있다. NPU 스케줄러(130)는 연산 스케줄링 순서에 기초하여 NPU 내부 메모리(120)에 필요한 메모리 어드레스를 설정할 수 있다. NPU 스케줄러(130)는 인공신경망모델(110a)의 데이터 지역성 정보 또는 구조에 대한 정보에 기초하여, 메모리를 재사용 하는 메모리 어드레스를 설정할 수 있다. NPU 스케줄러(130)는 추론 연산에 필요한 프로세싱 엘리먼트들(PE1 내지 PE8)을 지정하여 추론 연산을 수행할 수 있다.
부연 설명하면, 하나의 노드에 연결되는 가중치 데이터가 L개 만큼 증가하면, 프로세싱 엘리먼트의 누산기의 (L)loops의 횟수를 L-1로 설정할 수 있다. 즉, 누산기는 인공 신경망의 가중치 데이터가 증가하더라도, 누산기의 누적 횟수를 증가시킴으로써 추론 연산을 용이하게 수행할 수 있는 효과가 있다.
즉, 본 개시의 일 예시에 따른 신경망 프로세싱 유닛(100)의 NPU 스케줄러(130)는 입력 레이어(110a-1), 제1 연결망(110a-2), 제1 은닉 레이어(110a-3), 제2 연결망(110a-4), 제2 은닉 레이어(110a-5), 제3 연결망(110a-6), 및 출력 레이어(110a-7)의 데이터 지역성 정보 또는 구조에 대한 정보를 포함하는 인공신경망모델의 데이터 지역성 정보 또는 구조에 대한 정보에 기초하여 프로세싱 엘리먼트 어레이(100) 및 NPU 내부 메모리(120)을 제어할 수 있다.
즉, NPU 스케줄러(130)는 입력 레이어(110a-1)의 노드 데이터, 제1 연결망(110a-2)의 가중치 데이터, 제1 은닉 레이어(110a-3)의 노드 데이터, 제2 연결망(110a-4)의 가중치 데이터, 제2 은닉 레이어(110a-5)의 노드 데이터, 제3 연결망(110a-6)의 가중치 데이터, 및 출력 레이어(110a-7)의 노드 데이터에 대응되는 메모리 어드레스 값들을 NPU 메모리 시스템(110)에 설정할 수 있다.
이하, NPU 스케줄러(130)의 스케줄링에 대하여 자세히 설명한다. NPU 스케줄러(130)는 인공신경망모델의 데이터 지역성 정보 또는 구조에 대한 정보에 기초하여 인공신경망모델의 연산 순서를 스케줄링 할 수 있다.
NPU 스케줄러(130)는 인공신경망모델의 데이터 지역성 정보 또는 구조에 대한 정보에 기초하여 인공신경망모델의 레이어의 노드 데이터 및 연결망의 가중치 데이터가 저장된 메모리 어드레스 값을 획득할 수 있다.
예를 들면, NPU 스케줄러(130)는 메인 메모리에 저장된 인공신경망모델의 레이어의 노드 데이터 및 연결망의 가중치 데이터가 저장된 메모리 어드레스 값을 획득할 수 있다. 따라서 NPU 스케줄러(130)는 구동할 인공신경망모델의 레이어의 노드 데이터 및 연결망의 가중치 데이터를 메인 메모리에서 가져와서 NPU 내부 메모리(120)에 저장할 수 있다. 각각의 레이어의 노드 데이터는 대응되는 각각의 메모리 어드레스 값을 가질 수 있다. 각각의 연결망의 가중치 데이터는 대응되는 각각의 메모리 어드레스 값을 가질 수 있다.
NPU 스케줄러(130)는 인공신경망모델의 데이터 지역성 정보 또는 구조에 대한 정보, 예를 들면, 인공신경망모델의 인공 신경망의 레이어들의 배치 데이터 지역성 정보 또는 구조에 대한 정보에 기초해서 프로세싱 엘리먼트 어레이(110)의 연산 순서를 스케줄링 할 수 있다.
예를 들면, NPU 스케줄러(130)는 4개의 인공 신경망 레이어들과 각각의 레이어들을 연결하는 3개의 레이어의 가중치 값들을 가지는 가중치 데이터, 즉, 연결망 데이터를 획득할 수 있다. 이러한 경우 NPU 스케줄러(130)가 인공신경망모델의 데이터 지역성 정보 또는 구조에 대한 정보를 기초로 프로세싱 순서를 스케줄링 하는 방법에 대하여 예를 들어 아래에서 설명한다.
예를 들면, NPU 스케줄러(130)는 추론 연산을 위한 입력 데이터를 인공신경망모델(110a)의 입력 레이어(110a-1)인 제1 레이어의 노드 데이터로 설정하고, 제1 레이어의 노드 데이터와 제1 레이어에 대응되는 제1 연결망의 가중치 데이터의 MAC 연산을 먼저 수행하도록 스케줄링 할 수 있다. 이하 단지 설명의 편의를 위해서 해당 연산을 제1 연산이라 지칭하고, 제1 연산의 결과를 제1 연산 값이라 지칭하고, 해당 스케줄링을 제1 스케줄링이라 지칭할 수 있다.
예를 들면, NPU 스케줄러(130)는 제1 연산 값을 제1 연결망에 대응되는 제2 레이어의 노드 데이터로 설정하고, 제2 레이어의 노드 데이터와 제2 레이어에 대응되는 제2 연결망의 가중치 데이터의 MAC 연산을 제1 스케줄링 이후에 수행하도록 스케줄링 할 수 있다. 이하 단지 설명의 편의를 위해서 해당 연산을 제2 연산이라 지칭하고, 제2 연산의 결과를 제2 연산 값이라 지칭하고, 해당 스케줄링을 제2 스케줄링이라 지칭할 수 있다.
예를 들면, NPU 스케줄러(130)는 제2 연산 값을 제2 연결망에 대응되는 제3 레이어의 노드 데이터로 설정하고, 제3 레이어의 노드 데이터와 제3 레이어에 대응되는 제3 연결망의 가중치 데이터의 MAC 연산을 제2 스케줄링에 수행하도록 스케줄링 할 수 있다. 이하 단지 설명의 편의를 위해서 해당 연산을 제3 연산이라 지칭하고, 제3 연산의 결과를 제3 연산 값이라 지칭하고, 해당 스케줄링을 제3 스케줄링이라 지칭할 수 있다.
예를 들면, NPU 스케줄러(130)는 제3 연산 값을 제3 연결망에 대응되는 출력 레이어(110a-7)인 제4 레이어의 노드 데이터로 설정하고, 제4 레이어의 노드 데이터에 저장된 추론 결과를 NPU 내부 메모리(120)에 저장하도록 스케줄링 할 수 있다. 이하 단지 설명의 편의를 위해서 해당 스케줄링을 제4 스케줄링이라 지칭할 수 있다. 추론 결과 값은 엣지 디바이스(1000)의 다양한 구성요소들에 전달되어 활용될 수 있다.
예를 들면, 추론 결과 값이 특정 키워드를 감지한 결과 값이라면, 신경망 프로세싱 유닛(100)은 추론 결과를 중앙 처리 장치(1080)에 전달하여, 엣지 디바이스(1000)가 특정 키워드에 대응되는 동작을 수행할 수 있다.
예를 들면, NPU 스케줄러(130)는 제1 스케줄링에서 제1 내지 제3 프로세싱 엘리먼트(PE1 내지 PE3)를 구동할 수 있다.
예를 들면, NPU 스케줄러(130)는 제2 스케줄링에서 제4 내지 제6 프로세싱 엘리먼트(PE4 내지 PE6)를 구동할 수 있다.
예를 들면, NPU 스케줄러(130)는 제3 스케줄링에서 제7 내지 제8 프로세싱 엘리먼트(PE7 내지 PE8)를 구동할 수 있다.
예를 들면, NPU 스케줄러(130)는 제4 스케줄링에서 추론 결과를 출력할 수 있다.
정리하면, NPU 스케줄러(130)는 제1 스케줄링, 제2 스케줄링, 제3 스케줄링, 및 제4 스케줄링 순서대로 연산이 수행되도록 NPU 내부 메모리(120)과 프로세싱 엘리먼트 어레이(110)를 제어할 수 있다. 즉, NPU 스케줄러(130)는 설정된 스케줄링 순서대로 연산이 수행되도록 NPU 내부 메모리(120)과 프로세싱 엘리먼트 어레이(110)를 제어하도록 구성될 수 있다.
정리하면, 본 개시의 일 예시에 따른 신경망 프로세싱 유닛(100)은 인공 신경망의 레이어들의 구조와, 구조에 대응되는 연산 순서 데이터에 기초하여, 프로세싱 순서를 스케줄링 하도록 구성될 수 있다. 스케줄링 되는 프로세싱 순서는 적어도 하나 이상일 수 있다, 예를 들면, 신경망 프로세싱 유닛(100)이 모든 연산 순서를 예측 할 수 있기 때문에, 다음 연산을 스케줄링 하는 것도 가능하고, 특정 순서의 연산을 스케줄링 하는 것도 가능하다.
NPU 스케줄러(130)는 인공신경망모델의 데이터 지역성 정보 또는 구조에 대한 정보에 기초한 스케줄링 순서를 활용하여 NPU 내부 메모리(120)을 제어하여 메모리 재사용율을 향상시킬 수 있는 효과가 있다.
본 개시의 일 예시에 따른 신경망 프로세싱 유닛(100)에서 구동되는 인공 신경망 연산의 특성상 하나의 레이어의 연산 값이 다음 레이어의 입력 데이터가 되는 특성을 가질 수 있다.
이에, 신경망 프로세싱 유닛(100)은 스케줄링 순서에 따라서 NPU 내부 메모리(120)을 제어하면, NPU 내부 메모리(120)의 메모리 재사용율을 향상시킬 수 있는 효과가 있다.
구체적으로 설명하면, NPU 스케줄러(130)가 인공신경망모델의 데이터 지역성 정보 또는 구조에 대한 정보를 제공받도록 구성되고, 제공받은 인공신경망모델의 데이터 지역성 정보 또는 구조에 대한 정보에 의해서 인공 신경망의 연산이 진행되는 순서를 파악할 수 있는 경우, NPU 스케줄러(130)는 인공신경망모델의 특정 레이어의 노드 데이터와 특정 연결망의 가중치 데이터의 연산 결과가 대응되는 레이어의 노드 데이터가 된다는 사실을 파악할 수 있다. 따라서 NPU 스케줄러(130)는 해당 연산 결과가 저장된 메모리 어드레스의 값을 이어지는 다음 연산에서 재사용할 수 있다.
예를 들면, 상술한 제1 스케줄링의 제1 연산 값은 제2 스케줄링의 제2 레이어의 노드 데이터로 설정된다. 구체적으로 설명하면, NPU 스케줄러(130)는 NPU 내부 메모리(120)에 저장된 제1 스케줄링의 제1 연산 값에 대응되는 메모리 어드레스 값을 제2 스케줄링의 제2 레이어의 노드 데이터에 대응되는 메모리 어드레스 값으로 재설정할 수 있다. 즉, 메모리 어드레스 값을 재사용할 수 있다. 따라서 NPU 스케줄러(130)가 제1 스케줄링의 메모리 어드레스 값 재사용함으로 써, NPU 내부 메모리(120)은 별도의 메모리 쓰기 동작 없이 제2 스케줄링의 제2 레이어 노드 데이터로 활용할 수 있는 효과가 있다.
예를 들면, 상술한 제2 스케줄링의 제2 연산 값은 제3 스케줄링의 제3 레이어의 노드 데이터로 설정된다. 구체적으로 설명하면, NPU 스케줄러(130)는 NPU 내부 메모리(120)에 저장된 제2 스케줄링의 제2 연산 값에 대응되는 메모리 어드레스 값을 제3 스케줄링의 제3 레이어의 노드 데이터에 대응되는 메모리 어드레스 값으로 재설정할 수 있다. 즉, 메모리 어드레스 값을 재사용할 수 있다. 따라서 NPU 스케줄러(130)가 제2 스케줄링의 메모리 어드레스 값을 재사용함으로 써, NPU 내부 메모리(120)은 별도의 메모리 쓰기 동작 없이 제3 스케줄링의 제3 레이어 노드 데이터로 활용할 수 있는 효과가 있다.
예를 들면, 상술한 제3 스케줄링의 제3 연산 값은 제4 스케줄링의 제4 레이어의 노드 데이터로 설정된다. 구체적으로 설명하면, NPU 스케줄러(130)는 NPU 내부 메모리(120)에 저장된 제3 스케줄링의 제3 연산 값에 대응되는 메모리 어드레스 값을 제4 스케줄링의 제4 레이어의 노드 데이터에 대응되는 메모리 어드레스 값으로 재설정할 수 있다. 즉, 메모리 어드레스 값을 재사용할 수 있다. 따라서 NPU 스케줄러(130)가 제3 스케줄링의 메모리 어드레스 값을 재사용함으로 써, NPU 내부 메모리(120)은 별도의 메모리 쓰기 동작 없이 제4 스케줄링의 제4 레이어 노드 데이터로 활용할 수 있는 효과가 있다.
더 나아가서, NPU 스케줄러(130)는 스케줄링 순서와 메모리 재사용 여부를 판단해서 NPU 내부 메모리(120)을 제어하도록 구성되는 것도 가능하다. 이러한 경우 NPU 스케줄러(130)가 인공신경망모델의 데이터 지역성 정보 또는 구조에 대한 정보를 분석해서 최적화된 스케줄링을 제공할 수 있는 효과가 있다. 또한 메모리 재사용이 가능한 연산에 필요한 데이터를 중복해서 NPU 내부 메모리(120)에 저장하지 않을 수 있기 때문에 메모리 사용량을 저감할 수 있는 효과가 있다. 또한 NPU 스케줄러(130)는 메모리 재사용만큼 저감된 메모리 사용량을 계산해서 NPU 내부 메모리(120)을 최적화할 수 있는 효과가 있다.
본 개시의 일 예시에 따른 신경망 프로세싱 유닛(100)은 제1 프로세싱 엘리먼트(PE1)의 제1 입력인 (N)bit 입력은 변수 값을 입력 받고, 제2 입력은 (M)bit 입력은 상수 값을 입력 받도록 구성될 수 있다. 또한 이러한 구성은 프로세싱 엘리먼트 어레이(110)의 다른 프로세싱 엘리먼트 들에게 동일하게 설정될 수 있다. 즉, 프로세싱 엘리먼트의 하나의 입력은 변수 값을 입력 받고, 다른 입력은 상수 값을 입력 받도록 구성될 수 있다. 따라서 상수 값의 데이터 갱신 횟수를 저감할 수 있는 효과가 있다.
이때, NPU 스케줄러(130)는 인공신경망모델(110a)의 데이터 지역성 정보 또는 구조에 대한 정보를 활용하여 입력 레이어(110a-1), 제1 은닉 레이어(110a-3), 제2 은닉 레이어(110a-5) 및 출력 레이어(110a-7)의 노드 데이터는 변수(variable)로 설정하고, 제1 연결망(110a-2)의 가중치 데이터, 제2 연결망(110a-4)의 가중치 데이터, 및 제3 연결망(110a-6)의 가중치 데이터는 상수(constant)로 설정할 수 있다. 즉 NPU 스케줄러(130)는 상수 값과 변수 값을 구분할 수 있다. 단, 본 개시는 상수와 변수 데이터 타입에 제한되지 않으며, 본질적으로, 자주 가변 되는 값과, 그러지 않은 값을 구분하여 NPU 내부 메모리(120)의 재사용율을 향상시킬 수 있다.
즉, NPU 시스템 메모리(120)는 신경망 프로세싱 유닛(100)의 추론 연산이 지속되는 동안 NPU 시스템 메모리(120)에 저장된 연결망들의 가중치 데이터를 보존하도록 구성될 수 있다. 따라서 메모리 읽기 쓰기 동작을 저감할 수 있는 효과가 있다.
즉, NPU 시스템 메모리(120)는 추론 연산이 지속되는 동안 NPU 시스템 메모리(120)에 저장된 MAC 연산 값을 재사용 하도록 구성될 수 있다.
즉, 프로세싱 엘리먼트 어레이(110)의 각각의 프로세싱 엘리먼트의 제1 입력부의 입력 데이터(N)bit가 저장된 메모리 어드레스의 데이터 갱신 횟수는 제2 입력부의 입력 데이터(M)bit가 저장된 메모리 어드레스의 데이터 갱신 횟수보다 더 많을 수 있다. 즉, 제2 입력부의 데이터 갱신 횟수 제1 입력부의 데이터 갱신 횟수보다 적어질 수 있는 효과가 있다.
도 5a는 도 1 또는 도 3에 도시된 신경망 프로세싱 유닛(100)을 포함하는 인공 신경망(ANN) 구동 장치의 구성을 나타낸 예시도이고, 도 5b는 신경망 프로세싱 유닛(100)의 동작시 소모되는 에너지를 나타낸 예시도이다.
도 5a를 참조하면, 인경 신경망(ANN) 구동 장치(1000)는 신경망 프로세싱 유닛(100), 메모리(200), 커널 생성부(300) 그리고 기판(400)를 포함할 수 있다.
상기 기판(400) 상에는 전기 전도성 패턴(electrically conductive pattern)이 형성되어 있을 수 있다. 또한, 상기 신경망 프로세싱 유닛(100), 메모리(200), 커널 생성부(300)는 상기 전기 전도성 패턴과 전기 접속되도록, 상기 기판(400) 상에 체결될 수 있다. 상기 전기 전도성 패턴은 상기 신경망 프로세싱 유닛(100), 메모리(200), 커널 생성부(300)가 통신할 수 있도록 하는 시스템 버스로서 동작할 수 있다.
신경망 프로세싱 유닛(100)은 도 1 또는 도 3에 도시된 구성 요소들을 포함한다.
메모리(200)는 컴퓨터나 스마트폰 등과 같은 호스트 장치의 제어에 따라 데이터를 저장하는 장치이다. 메모리(200)는 휘발성 메모리 (Volatile Memory)와 비휘발성 메모리 (Non Volatile Memory)를 포함할 수 있다.
휘발성 메모리는 전원이 공급된 경우에만 데이터를 저장하고, 전원 공급이 차단되면 저장된 데이터가 소멸되는 메모리일 수 있다. 휘발성 메모리는 정적 랜덤 액세스 메모리 (Static Random Access Memory; SRAM), 동적 랜덤 액세스 메모리 (Dynamic Random Access Memory; DRAM) 등을 포함할 수 있다.
메모리(200)는 SSD(solid state drive), 플래시 메모리 (flash memory), MRAM(magnetic random access memory), PRAM(phase change RAM), FeRAM(ferroelectric RAM) 하드디스크, 플래시 메모리 등을 포함할 수 있으며, SRAM(synchronous random access memory), DRAM(dynamic random access memory)등을 포함할 수 있다.
인공 신경망 중에서 심층 신경망(DNN, Deep Neural Network)의 한 종류인 컨볼루션 신경망(CNN, Convolutional Neural Network)에 대해서 집중적으로 설명하기로 한다.
컨볼루션 신경망은 하나 또는 여러 개의 컨볼루션 레이어(convolutional layer)과 통합 레이어(pooling layer), 완전하게 연결된 레이어(fully connected layer)들의 조합일 수 있다. 컨볼루션 신경망은 2차원 데이터의 학습 및 추론에 적합한 구조를 가지고 있으며, 역전달(Backpropagation algorithm)을 통해 학습될 수 있다.
본 개시의 예시에서, 컨볼루션 신경망의 채널마다 채널의 입력 영상의 특징을 추출하는 커널이 존재한다. 커널은 2차원 행렬로 구성될 수 있다. 커널은 입력 데이터를 순회하면서 합성곱 연산 수행한다. 커널의 크기는 임의로 결정될 수 있으며, 커널이 입력 데이터를 순회하는 간격(stride) 또한 임의로 결정될 수 있다. 커널 하나당 입력 데이터 전체에 대한 커널의 일치 정도는 피처 맵(feature map) 또는 활성화 맵 일 수 있다.
합성곱 연산은 입력 데이터와 커널의 조합으로 이루어진 연산이므로, 이후 비선형성을 추가하기 위한 ReLU와 같은 활성화 함수가 적용될 수 있다. 합성곱 연산의 결과인 피처 맵에 활성화 함수가 적용되면 활성화 맵으로 지칭될 수 있다.
컨볼루션 신경망에는 Alexnet, Squeezenet, VGG16, Resnet152, Moblie net 등이 있는데, 각 신경망 모델에서 한번의 추론을 위해 필요한 곱셈의 횟수는 각각 727 MFLOPs, 837 MFLOPs, 16 MFLOPs, 11 MFLOPs, 11 MFLOPs, 579 MFLOPs이고, 커널을 포함한 모든 가중치의 저장 크기는 각각 233 MB, 5 MB, 528 MB, 230 MB, 16 MB으로 상당히 많은 양의 하드웨어 리소스와 전력 소모량을 요구함을 알 수 있다.
종래에는 이러한 커널들을 대응되는 채널마다 메모리에 저장하고, 합성곱 과정마다 메모리에서 불러와 입력 데이터를 처리하였다. 예를 들면, 도 5b에 도시된 바와 같이 합성곱 과정에서 32비트 읽기 동작에서, 신경망 프로세싱 유닛(100)의 내부 메모리인 SRAM에서 소모되는 전력은 5pj, 메모리(200)인 DRAM에서 소모되는 전력은 640pj이었다. 8비트 덧셈 연산에서 0.03pj, 16비트 덧셈에서 0.05pj, 32비트 덧셈에서 0.1pj, 8비트 곱셈에서 0.2pj 등이 소모되는 다른 연산에 비해 상당히 많은 전력을 소모하여 전체적인 성능 저하를 야기하는 문제가 있었다. 즉, 신경망 프로세싱 유닛(100)의 내부 메모리에서 커널을 읽을 때 소비되는 전력과 메모리(200)에서 커널을 읽을 때 소비되는 전력 차이가 128배이다.
즉, 메모리(200)의 동작 속도는 신경망 프로세싱 유닛(100) 대비 느린데 비해, 단위 연산 당 전력 소모량은 상대적으로 훨씬 더 크기 때문에, 메모리(200)의 읽기 동작을 최소화하는 것이 장치(1000)의 소비 전력 저감에 영향을 줄 수 있다.
이러한 비효율성을 극복하기 위해, 본 개시는 매 합성곱 과정마다 커널을 메모리(200)로부터 불러오는 데이터 이동을 최소화하여 전체적인 하드웨어 리소스와 데이터 이동에 따른 전력 소모를 줄이고, 개선된 연산 성능을 갖는 인공 신경망 커널 생성 방법 및 시스템을 제안한다.
구체적으로, 메모리(200)는 베이스 커널(base kernel) 저장부(210)와 커널 필터 저장부(220) 그리고 커널 생성 알고리즘 저장부(230)를 포함할 수 있다.
본 개시의 예시에 따르면, 다수의 커널은 베이스 커널을 기초로 커널 생성 알고리즘(또는 커널 복원 알고리즘)에 따라 정해진 규칙에 따라 생성될 수 있다.
메모리(200)는 영역을 구분하여 베이스 커널이 저장되는 베이스 커널 저장부(210)와 커널 필터가 저장되는 커널 필터 저장부(220) 그리고 커널 생성 알고리즘 저장부(230)를 설정할 수 있다. 베이스 커널 저장부(210)와 커널 필터 저장부(220) 그리고 커널 생성 알고리즘 저장부(230)는 메모리(200)의 메모리 주소를 설정하여 구성될 수 있다. 단, 본 개시는 이러한 예시에 제한되지 않는다.
도 5a는 베이스 커널 저장부(210)와 커널 필터 저장부(220) 그리고 커널 생성 알고리즘 저장부(230)가 메모리(200)에 저장되는 것으로 도시되었지만, 예시에 따라 신경망 프로세싱 유닛(100)에 포함된 NPU 내부 메모리(120)에 저장될 수도 있다. 나아가, 커널 생성부(300)가 신경망 프로세싱 유닛(100)와 독립적인 구성으로 도시되었으나, 도 6a에 도시된 바와 같이 커널 생성부(300)가 신경망 프로세싱 유닛(100) 내에 위치할 수 있다.
베이스 커널 저장부(210)는 커널 생성에 기초가 되는 베이스 커널을 저장할 수 있다. 베이스 커널은 다른 레이어, 다른 레이어의 채널, 및/또는 동일 레이어의 다른 채널의 커널을 생성하는데 기초가 되는 베이스 커널일 수 있다. 베이스 커널은 반드시 하나일 필요는 없으며, 예시에 따라 복수의 베이스 커널이 존재할 수 있다. 각각의 베이스 커널은 서로 다른 가중치 값을 가질 수 있다.
베이스 커널은 채널 단위 또는 레이어 단위로 적용될 수 있다. 예를 들면, 컬러 영상 이미지에서 RGB 채널 단위로 각각의 베이스 커널이 적용되고, 각 채널은 각 채널 별 적용된 베이스 커널로부터 피처 맵을 생성할 수 있다. 예를 들면, 베이스 커널을 기초로 다른 레이어의 커널을 생성할 수도 있다.
즉, 베이스 커널로부터 다른 채널의 피처 맵 연산을 위한 커널이 생성될 수 있으므로, 인경 신경망 구동 장치(1000)은 각 채널 및/또는 레이어에 대응되는 커널을 생성하는 커널 생성 알고리즘(또는 커널 복원 알고리즘)에 따라 적절한 가중치를 선택하여 베이스 커널로 결정할 수 있다. 베이스 커널은 후술되는 커널 필터를 참조하여 결정될 수도 있다.
예를 들어, 인경 신경망 구동 장치(1000)은 학습 과정을 거치며 통계적으로 가장 높은 추론 정확도를 보인 가중치를 포함하는 커널을 베이스 커널로 결정할 수 있다.
예를 들어, 복수의 채널 및/또는 레이어들을 위한 커널들 간의 가중치 차이 값들의 평균값이 최소가 되는 가중치를 포함하는 임의 커널이 베이스 커널로 결정할 수도 있다.
단 위의 예시들에 제한되지 않으며 베이스 커널은 다양한 알고리즘에 따라 결정될 수 있다.
커널 필터 저장부(220)는 베이스 커널과 다른 커널의 차이값, 즉 Δ 값에 기초하여 생성되는 커널 필터를 저장할 수 있다.
학습이 완료된 컨볼루션 신경망의 경우, 확정된 다수의 커널들이 저장되어 있다. 인경 신경망 구동 장치(1000)은 다수의 커널들에서 적어도 일부를 베이스 커널로 선택한다. 그리고 다수의 커널들에서 베이스 커널로 선택되지 않은 커널들은 베이스 커널에 대한 커널 필터로 변환되어 저장된다. 즉, 베이스 커널에 커널 필터를 적용하면, 원래의 커널로 복원되거나, 원래의 커널과 유사한 커널로 생성될 수 있다. 이와 같이 복원된 커널을 변조 커널 혹은 갱신 커널로 부를 수 있다. 즉 원랜의 커널은 베이스 커널과 커널 필터로 분리된 것일 수 있다.
상기 커널 생성부(300)는 메모리(200)로부터 베이스 커널, 커널 필터 그리고 커널 생성 알고리즘(매핑 정보를 포함)를 읽어와서 내부 메모리(310)에 저장한 후, 원본 커널을 복원하거나, 원래의 커널과 유사한 커널로 생성하여 상기 인공 신경망 프로세싱 유닛(100)에게 전달할 수 있다. 일단 상기 베이스 커널, 커널 필터 그리고 매핑 정보가 상기 커널 생성부(300)의 내부 메모리에 저장되면, 상기 커널 생성부(300)는 상기 메모리(200)에 다시 액세스하지 않아도 된다. 이와 같이, 메모리(200)를 액세스하는 대신에, 내부 메모리(310)를 액세스하도록 함으로써, 전력 소모량을 최대 128배 절약할 수 있다.
인경 신경망 구동 장치(1000)은, 커널 생성부(300)를 통해서 베이스 커널과 커널 필터를 선택적으로 반영하여 인공 신경망의 각각의 레이어 혹은 채널에 필요한 원본 커널들을 복원거나 원본 커널과 유사한 커널을 생성할 수 있다. 이처럼 각 레이어 혹은 각 채널에 대응되는 커널을 메모리(200)에 모두 저장하고 있는 것보다 기준이 되는 베이스 커널과 커널 필터만을 저장함으로써 모든 커널을 저장할 때보다 향상된 메모리 효율을 가질 수 있다.
구체적인 예를 들면, 제1 레이어(또는 제1 채널)을 위한 제1 커널에 포함된 가중치의 값이 8, 제2 레이어(또는 제2 채널)를 위한 제2 커널에 포함된 가중치의 값이 7이라고 가정해보자. 제1 레이어(또는 제1 채널)를 위한 제1 커널과 제2 레이어(또는 제2 채널)를 위한 제2 커널을 저장하기 위해 각각 4비트의 메모리 양을 필요로 할 수 있다.
본 개시의 예시에 따르면, 가중치 값 8과 가중치 값 7의 차이 값(즉 Δ 값)은 1이기 때문에, 차이 값 1을 저장하기 위해서 1비트의 메모리만 필요할 수 있다.
도 6a은 도 1 또는 도 3에 도시된 신경망 프로세싱 유닛(100)을 포함하는 인공 신경망(ANN) 구동 장치의 변형 구성을 나타낸 예시도이다.
도 6a을 참조하면, 인공 신경망 (ANN) 구동 장치(1000)은 인공 신경망 프로세싱 유닛(100), 메모리(200), 커널 생성부(300) 그리고 기판(400)을 포함할 수 있다.
상기 기판(400) 상에는 전기 전도성 패턴(electrically conductive pattern)이 형성되어 있을 수 있다. 또한, 상기 신경망 프로세싱 유닛(100) 및 메모리(200)은 상기 전기 전도성 패턴과 전기 접속되도록, 상기 기판(400) 상에 체결될 수 있다. 상기 전기 전도성 패턴은 상기 신경망 프로세싱 유닛(100) 그리고 메모리(200)가 서로 통신할 수 있도록 하는 시스템 버스로서 동작할 수 있다.
메모리(200)는 베이스 커널 저장부(210), 커널 필터 저장부(220) 그리고 커널 생성 알고리즘 저장부(230)를 포함할 수 있고, 인공 신경망 프로세싱 유닛(100)는 도 1 또는 도 3에 도시된 구성 요소 외에, 커널 생성부(150)를 더 포함할 수 있다. 도 5a에서는 커널 생성부(300)가 인공 신경망 프로세싱 유닛(100)의 외부에 존재하는 것으로 나타내었으나, 도 6a에서는 커널 생성부(150)가 인공 신경망 프로세싱 유닛(100) 내부에 존재하는 것으로 나타나 있다.
커널 생성부(150)는 커널 생성 알고리즘(또는 커널 복원 알고리즘)에 따라, 메모리(200)에 저장된 베이스 커널과 커널 필터를 기초로 대응되는 레이어 또는 채널을 위한 원본 커널을 생성(복원)할 수 있다.
도 6b은 도 1 또는 도 3에 도시된 신경망 프로세싱 유닛(100)을 포함하는 인공 신경망(ANN) 구동 장치의 변형 구성을 나타낸 예시도이다.
도 6b을 참조하면, 인공 신경망 (ANN) 구동 장치(1000)은 인공 신경망 프로세싱 유닛(100), 메모리(200), 커널 생성부(300) 그리고 기판(400)을 포함할 수 있다.
상기 기판(400) 상에는 전기 전도성 패턴(electrically conductive pattern)이 형성되어 있을 수 있다. 또한, 상기 신경망 프로세싱 유닛(100) 및 메모리(200)은 상기 전기 전도성 패턴과 전기 접속되도록, 상기 기판(400) 상에 체결될 수 있다. 상기 전기 전도성 패턴은 상기 신경망 프로세싱 유닛(100) 그리고 메모리(200)가 서로 통신할 수 있도록 하는 시스템 버스로서 동작할 수 있다.
메모리(200)는 베이스 커널 저장부(210), 커널 필터 저장부(220), 커널 생성 알고리즘 저장부(230) 그리고 커널 생성부(240)를 포함할 수 있다.
도 6a에서는 커널 생성부(150)가 인공 신경망 프로세싱 유닛(100)의 내부에 존재하는 것으로 나타내었으나, 도 6b에서는 커널 생성부(240)가 메모리(200) 내부에 존재하는 것으로 나타나 있다.
즉, 메모리(200)의 동작 속도가 신경망 프로세싱 유닛(100) 만큼 고속이고, 자체 연산 기능을 갖추되 단위 연산 당 전력 소모량이 극히 작도록 개선된다면, 메모리(200)가 커널 생성부(240)를 포함하도록 할 수도 있다.
이하, 도 5a, 도 6a 그리고 도 6b에 도시된 커널 생성 알고리즘 저장부(230)에 대해서 자세히 설명하기로 한다.
상기 커널 생성 알고리즘(또는 커널 복원 알고리즘)은 상기 베이스 커널, 대응하는 커널 필터, 복원(변조) 커널 간의 매핑 정보를 포함할 수 있다. 이에 대해서는 도 18을 참조하여 후술하기로 한다.
커널 생성 알고리즘(또는 커널 복원 알고리즘)은 학습 과정을 통해 커널 필터의 사이즈, 즉 데이터 크기를 최소화하는 방법을 약속한 알고리즘일 수 있다.
커널 생성 알고리즘(또는 커널 복원 알고리즘)은 일련의 학습 과정을 통해 최적의 정확도를 가진다고 판단된 알고리즘에 따라 생성될 수 있다.
커널 생성 알고리즘(또는 커널 복원 알고리즘)에는 인공 신경망에서 사용되는 커널들(즉, 가중치 값을 포함하는 행렬들), 채널 개수, 레이어의 개수, 입력 데이터 정보, 연산 처리 방법, 메모리(200)에서 커널을 가져오는 순서 중 적어도 일부가 포함되며, 특히 커널 생성 알고리즘(또는 커널 복원 알고리즘)은 특정 레이어의 커널을 생성(혹은 복원)하는 방법을 지시할 수 있다.
커널 필터의 생성에는 하나 또는 그 이상의 베이스 커널이 사용될 수 있다. 베이스 커널은 반드시 첫 레이어의 커널일 필요가 없으며, 임의의 레이어의 커널 또는 임의의 채널의 커널이 베이스 커널로 결정될 수 있다.
커널 생성부(300)는 레이어 단위로 베이스 커널을 적용하여, 기준 레이어의 커널을 베이스 커널로 사용하여 다른 레이어를 위한 커널 필터를 생성할 수 있다. 또한 하나의 레이어에서도, 채널 단위로 하나 이상의 커널만 베이스 커널로 결정하고 커널 필터는 베이스 커널을 기초로 생성할 수 있다.
예시에서, 입력 데이터가 RGB의 세 개의 채널만으로 구성되는 경우 뿐만 아니라 수 십개 이상의 채널이 사용되는 경우가 있을 수 있다. 커널 생성부(300)는 각 채널마다 서로 다른 베이스 커널에 기초하여 다양한 기법에 따라 커널 필터를 생성할 수 있다.
나아가, 베이스 커널을 이용하여 다른 커널을 생성하는 다양한 기법은 레이어마다 또는 채널마다 다르게 적용될 수 있다. 구체적으로, 베이스 커널을 이용하여 다른 커널을 생성하는 기법에는, 1) 베이스 커널을 다른 레이어 또는 채널에 그대로 사용하는 방법, 2) 커널 필터를 활용하는 방법, 3) 커널 필터와 무관하게 베이스 커널 자체를 변형시키는 방법, 4) 커널 필터와 베이스 커널 자체의 변형을 동시에 적용하는 방법 등이 포함될 수 있다.
특히, 3) 베이스 커널 자체를 변형시키는 방법은, 메모리(200)로부터 데이터를 불러들이는 순서를 변형하는 방법을 통해 구현될 수 있다. 메모리(200)에 저장된 데이터는 그 위치를 나타내는 어드레스로 표현될 수 있다. 예를 들어, 메모리(200)에서 칼럼 어드레스와 로우 어드레스로 위치가 표현될 수 있다. 인공 신경망은 커널 생성 알고리즘(또는 커널 복원 알고리즘)에 따라 메모리(200)에 변형된 어드레스를 전송함으로써, 베이스 커널의 각 데이터 값을 수신하는 순서를 달리할 수 있다.
예를 들어, 커널 생성 알고리즘(또는 커널 복원 알고리즘)은 제1 레이어(혹은 제1 채널)는 베이스 커널을 그대로 사용, 제2 레이어(혹은 제2 채널) 내지 제4 레이어(혹은 제4 채널)에 대응되는 커널은 베이스 커널을 회전(rotate)시켜 생성, 제5 레이어(혹은 제5 채널)에 대응되는 커널은 베이스 커널을 트랜스포즈(transpose)시켜 생성, 제6 레이어 내지 제8 레이어(혹은 제6 채널 내지 제 8채널)에 대응되는 커널은 베이스 커널에 커널 필터를 더하거나 빼서 생성, 제9 레이어에 대응되는 커널은 커널 필터를 곱하면서 동시에 회전시켜 생성하도록 지시할 수 있다.
특히 3) 베이스 커널 자체를 변형시키는 방법은, 객체 인식용 컨볼루션 신경망 학습에 효과적일 수 있다. 예를 들면, 회전과 트랜스포즈 등을 적용하면, 객체 인식 시 다양한 방향으로 회전된 이미지를 학습 및 인식하는데 효과가 있을 수 있다. 즉, 인공신경망이 특정 물체를 인식하도록 학습할 때, 베이스 커널을 회전 시킨 제1 커널과 베이스 커널을 트랜스포즈한 제2 커널이 있다면, 특정 물체 이미지가 회전되거나 트랜스포즈된 경우의 인식율도 향상시킬 수 있다. 부연 설명하면, 인공 신경망이 정면의 사람 얼굴만 학습할 경우, 눈 코 입의 위치가 뒤집어 지기 때문에, 180도 반전된 사람 얼굴을 인식 못할 수 있다. 특히 본 개시의 예시에 의하면 베이스 커널을 회전시키거나 트랜스포즈시킴으로써 메모리(200)로부터 각각의 대응되는 커널을 읽어오지 않을 수 있는 효과가 있다. 따라서 메모리 읽기에 의한 소비전력을 저감할 수 있는 효과가 있다.
베이스 커널로부터 다른 커널을 생성하는 방법은 이에 한정되지 않으며, 사용자가 프로그램을 통해 구현 가능한 다양한 알고리즘이 활용될 수 있다.
이상에서 설명한 바와 같이, 베이스 커널에 커널 필터를 반영하여 원본 커널을 복원하거나 원본 커널과 유사한 커널을 생성할 수 있으므로, 메모리(200)의 용량을 효과적으로 줄일 수 있는 효과가 있다. 즉, 커널 필터의 값이 최소화되도록 베이스 커널을 선정하면, 커널 필터의 데이터 크기는 최소화될 수 있으며, 커널 필터의 가중치를 저장하는 데이터의 비트 폭(bit width)을 최소화할 수 있다.
다시 말해서, 모든 레이어(혹은 채널)의 커널들을 메모리(200)에 저장하고 있지 않아도 베이스 커널만으로 다른 커널을 재생성할 수 있어, 사용되는 메모리 용량을 효과적으로 줄이고 연산 속도를 증가시킬 수 있다.
또한, 기 결정된 각 레이어(혹은 각 채널)의 커널 필터를 활용하면, 각 레이어(혹은 각 채널)의 커널 자체를 저장할 때보다 사용되는 메모리 용량을 줄일 수 있고, 학습 과정 후 결정된 레이어간(혹은 채널 간) 커널 필터를 인공지능(artificial intelligence)의 요구 수준에 따라 유연하게 적용할 수 있어, 사용자 환경에 최적화된 사용자 맞춤형 인공지능을 제공할 수 있는 효과가 있다.
도 7은 컨볼루션 신경망의 기본 구조를 설명하기 위한 도면이다.
도 7을 참조하면, 컨볼루션 신경망은 현재 레이어에서 다음 레이어로 갈 때, 합성곱(컨볼루션)을 통해 레이어간의 가중치를 반영하여 다음 레이어에 전달될 수 있다.
예를 들면, 합성곱(컨볼루션)은, 두 개의 주요 파라미터에 의해 정의되는데, 입력 데이터의 크기(통상적으로 1×1, 3×3 또는 5×5 행렬)와 출력 피처 맵(Feature Map)의 깊이(커널의 수)는 컨볼루션에 의해 연산될 수 있다. 이들 컨볼루션은, 깊이 32에서 시작하여, 깊이 64로 계속되며, 깊이 128 또는 256에서 종료될 수 있다.
합성곱(컨볼루션)은, 3D 입력 피처 맵 위로 3×3 또는 5×5 크기의 이들 윈도우를 슬라이딩하고, 모든 위치에서 정지하고, 주변 피처의 3D 패치를 추출함으로써 동작할 수 있다.
이러한 각 3D 패치는 가중치라고 하는 동일한 학습 가중치 행렬을 갖는 텐서 곱을 통해 1D 벡터로 변환될 수 있다. 이러한 벡터는 3D 출력 맵으로 공간적으로 재조립될 수 있다. 출력 피처 맵의 모든 공간 위치는 입력 피처 맵의 동일한 위치에 대응될 수 있다.
컨볼루션 신경망은, 학습 과정동안 많은 그라디언트 업데이트 반복에 걸쳐 학습되는 커널(즉, 가중치 행렬)과 입력 데이터 간의 합성곱(컨볼루션) 동작을 수행하는 컨볼루션 레이어를 포함할 수 있다. (m, n)을 커널 크기라고 하고 W를 가중치 값이라고 설정하면, 컨볼루션 레이어는 내적을 계산함으로써 입력 데이터와 가중치 행렬의 합성곱(컨볼루션)을 수행할 수 있다.
커널이 입력 데이터를 가로질러 슬라이딩하는 단차 크기를 보폭이라고 하며, 커널 면적(m×n)을 수용장(receptive field)이라고 할 수 있다. 동일한 컨볼루션 커널이 입력의 상이한 위치에 걸쳐 적용되며, 이는 학습되는 커널의 수가 감소시킨다. 이것은, 또한, 위치 불변 학습을 가능하게 하며, 중요한 패턴이 입력에 존재하는 경우, 컨볼루션 필터는 시퀀스의 위치에 관계없이 그 패턴을 학습할 수 있다.
컨볼루션 신경망은, 입력 데이터가 특정 출력 추정값으로 이어지도록 조정되거나 학습될 수 있다. 컨볼루션 신경망은, 출력 추정값이 실측 자료(ground truth)에 점진적으로 일치하거나 근접할 때까지 출력 추정값과 실측 자료 간의 비교에 기초하여 역전파(backpropagation)를 이용하여 조정될 수 있다.
컨볼루션 신경망은, 실측 자료와 실제 출력 간의 차이에 기초하는 뉴런들 간의 가중치를 조정함으로써 학습될 수 있다.
도 8은 컨볼루션 레이어의 입력 데이터와 합성곱 연산에 사용되는 커널을 설명하기 위한 도면이다.
입력 데이터(300)는, 특정 크기의 행(310)과 특정 크기의 열(320)로 구성된 2차원적 행렬로 표시되는 이미지 또는 영상일 수 있다. 입력 데이터(300)는 복수의 채널(330)을 가질 수 있는데, 여기서 채널(330)은 입력 데이터 이미지의 컬러 성분의 수를 나타낼 수 있다.
한편, 커널(340)은, 입력 데이터(300)의 일정 부분을 스캐닝하면서 해당 부분의 특징을 추출하기 위한 합성곱에 사용되는 공용 파라미터일 수 있다. 커널(340)은, 입력 데이터 이미지와 마찬가지로 특정 크기의 행(350), 특정 크기의 열(360), 특정 수의 채널(370)을 갖도록 구성될 수 있다. 일반적으로 커널(340)의 행(350), 열(360)의 크기는 동일하도록 설정되며, 채널(370)의 수는 입력 데이터 이미지의 채널(330)의 수와 동일할 수 있다.
도 9는 커널을 사용하여 활성화 맵을 생성하는 컨볼루션 신경망의 동작을 설명하기 위한 도면이다.
커널(410)은, 입력 데이터(420)를 지정된 간격으로 순회하며 합성곱을 실행함으로써, 최종적으로 피처 맵(430)을 생성할 수 있다. 합성곱은, 입력 데이터(420)의 일 부분에 커널(410)을 적용하였을 때, 그 부분의 특정 위치의 입력 데이터 값들과 커널(410)의 해당 위치의 값들을 각각 곱한 뒤 생성된 값들을 모두 더하여 실행될 수 있다.
이러한 합성곱 과정을 통해, 피처 맵의 계산 값들이 생성되며, 커널(410)이 입력 데이터(420)를 순회할 때마다 이러한 합성곱의 결과값들이 생성되어 피처 맵(430)을 구성할 수 있다. 피처 맵의 각 구성요소 값들은 컨볼루션 레이어의 활성화 함수를 통해 피처 맵(430)으로 변환된다.
도 9에서 컨볼루션 레이어에 입력되는 입력 데이터(420)는 4 x 4의 크기를 갖는 2차원적 행렬로 표시되며, 커널(410)은 3 x 3 크기를 갖는 2차원적 행렬로 표시된다. 그러나, 컨볼루션 레이어의 입력 데이터(420) 및 커널(410)의 크기는, 이에 한정되는 것은 아니며, 컨볼루션 레이어가 포함되는 컨볼루션 신경망의 성능 및 요구사항에 따라 다양하게 변경될 수 있다.
도시된 바와 같이, 컨볼루션 레이어에 입력 데이터(420)가 입력되면, 커널(410)이 입력 데이터(420) 상에서 사전 결정된 간격(예를 들어, 1)으로 순회하며, 입력 데이터(420)와 커널(410)의 동일 위치의 값들을 각각 곱하는 다중 곱(elementwise multiplication)을 실행할 수 있다. 커널(410)는, 일정 간격으로 입력 데이터(420)를 순회하며, 다중 곱을 통해 획득한 값을 합산(summation)할 수 있다.
구체적으로, 커널(410)이 입력 데이터(420)의 특정 위치(421)에서 계산한 다중 곱의 값 "15"를 피처 맵(430)의 대응 요소(431)에 배정한다. 커널(410)이 입력 데이터(420)의 다음 위치(422)에서 계산한 다중 곱의 값 "16"을 피처 맵(430)의 대응 요소(432)에 배정한다. 커널(410)이 입력 데이터(420)의 다음 위치(423)에서 계산한 다중 곱의 값 "6"을 피처 맵(430)의 대응 요소(433)에 배정한다. 다음으로, 커널(410)이 입력 데이터(420)의 다음 위치(424)에서 계산한 다중 곱의 값 "15"를 피처 맵(430)의 대응 요소(434)에 배정한다.
이와 같이 커널(410)이 입력 데이터(420) 상을 순회하면서 계산한 다중 곱의 값들을 피처 맵(430)에 모두 배정하면, 2 x 2 크기의 피처 맵(430)이 완성될 수 있다.
이때, 입력 데이터(510)가 예를 들어 3가지 채널(R채널, G채널, B채널)로 구성된다면, 동일 커널 또는 채널 별 상이한 채널을 각각 입력 데이터(420)의 각 채널 별 데이터 상을 순회하며 다중 곱과 합을 진행하는 합성곱을 통해 채널 별 피처 맵을 생성할 수 있다.
도 10은 도 7 내지 도 9에서 설명한 컨볼루션 신경망의 동작을 이해하기 쉽게 나타낸 종합도이다.
도 10을 참조하면, 예시적으로 입력 이미지가 5 x 5 크기를 갖는 2차원적 행렬인 것으로 나타나 있다. 또한, 도 10에는 예시적으로 3개의 노드, 즉 채널 1, 채널 2, 채널 3이 사용되는 것으로 나타내었다.
먼저, 레이어 1의 합성곱 동작에 대해서 설명하기로 한다.
입력 이미지는 레이어 1의 첫 번째 노드에서 채널 1을 위한 커널 1과 합성곱되고, 그 결과로서 피처 맵1이 출력된다. 또한, 상기 입력 이미지는 레이어 1의 두 번째 노드에서 채널 2를 위한 커널 2와 합성곱되고 그 결과로서 피처 맵 2가 출력된다. 또한, 상기 입력 이미지는 세 번째 노드에서 채널 3을 위한 커널 3과 합성곱되고, 그 결과로서 피처 맵3이 출력된다.
다음으로, 레이어 2의 폴링(pooling) 동작에 대해서 설명하기로 한다.
상기 레이어 1 로부터 출력되는 피처 맵1, 피처 맵2, 피처 맵3은 레이어 2의 3개의 노드로 입력된다. 레이어 2는 레이어 1로부터 출력되는 피처 맵들을 입력으로 받아서 폴링(pooling)을 수행할 수 있다. 상기 폴링이라 함은 크기를 줄이거나 행렬 내의 특정 값을 강조할 수 있다. 폴링 방식으로는 최대값 폴링과 평균 폴링, 최소값 폴링이 있다. 최대값 폴링은 행렬의 특정 영역 안에 값의 최댓값을 모으기 위해서 사용되고, 평균 폴링은 특정 영역내의 평균을 구하기 위해서 사용될 수 있다.
도 10의 예시에서는 5 x 5 행렬의 피처맵이 폴링에 의하여 4x4 행렬로 크기가 줄어지는 것으로 나타내었다.
구체적으로, 레이어 2의 첫 번째 노드는 채널 1을 위한 피처 맵1을 입력으로 받아 폴링을 수행한 후, 예컨대 4x4 행렬로 출력한다. 레이어 2의 두 번째 노드는 채널 2을 위한 피처 맵2을 입력으로 받아 폴링을 수행한 후, 예컨대 4x4 행렬로 출력한다. 레이어 2의 세 번째 노드는 채널 3을 위한 피처 맵3을 입력으로 받아 폴링을 수행한 후, 예컨대 4x4 행렬로 출력한다.
다음으로, 레이어 3의 합성곱 동작에 대해서 설명하기로 한다.
레이어 3의 첫 번째 노드는 레이어 2의 첫 번째 노드로부터의 출력을 입력으로 받아, 커널 4와 합성곱을 수행하고, 그 결과를 출력한다. 레이어 3의 두 번째 노드는 레이어 2의 두 번째 노드로부터의 출력을 입력으로 받아, 채널 2를 위한 커널 5와 합성곱을 수행하고, 그 결과를 출력한다. 마찬가지로, 레이어 3의 세 번째 노드는 레이어 2의 세 번째 노드로부터의 출력을 입력으로 받아, 채널 3을 위한 커널 6과 합성곱을 수행하고, 그 결과를 출력한다.
이와 같이 합성곱과 폴링이 반복되고 최종적으로는, 도 7과 같이 fully connected로 출력될 수 있다. 해당 출력은 다시 이미지 인식을 위한 인공 신경망으로 입력될 수 있다.
도 11은 커널 필터의 생성을 설명하기 위한 도면이다.
인공 신경망 모델을 위하여, 다수의 레이어들 및/또는 다수의 채널들을 위하여, 복수의 커널들이 존재할 수 있다.
도 11의 예시에는 u 번째 레이어(혹은 u번째 채널)를 위한 커널들과 i번째 레이어(혹은 i번째 채널)를 위한 커널들이 존재하는 것으로 나타나 있다. 이와 같은 복수의 커널들은 도 5a 혹은 도 6a 또는 6b에 도시된 메모리(200) 내에 저장되어 있을 수 있다.
u번째 레이어(혹은 u번째 채널)는 사선 줄무늬로 표시한 커널1을, i번째 레이어(혹은 i번째 채널)는 눈금 무늬로 표시한 커널2를 각각 포함할 수 있다.
커널1 및 커널2 중 하나는 베이스 커널이 될 수 있다.
커널 필터는 다수의 커널에 대해서 임의 연산(α)이 수행됨으로써, 생성될 수 있다. 도 11에는, u번째 레이어(혹은 u번째 채널)를 위한 커널 1과, i번째 레이어(혹은 i번째 채널)를 위한 커널 2에 대해서 임의 연산(α) 혹은 변형이 수행되어, 커널 필터가 생성되는 것으로 도시되어 있다. 상기 연산(α)는 예컨대 덧셈, 곱셈, 나눗셈, 사칙연산들의 조합, 합성곱 연산, 그 외 다양한 연산을 포함할 수 있다.
상기 생성된 커널 필터의 비트 폭은 원본 커널의 비트 폭 보다 작기 때문에, 메모리(200)에 액세스하는데 부담을 줄일 수 있는 장점이 있다.
도 11에서, 상기 생성된 커널 필터는 도 1 또는 도 3에 도시된 NPU 내부 메모리(120) 또는 도 5a 혹은 도 6a 또는 6b에 도시된 메모리(200)에 저장될 수 있다.
도 11에서, 커널 필터는 서로 다른 레이어의 커널들부터 생성되는 것으로 도시되었으나, 커널 필터는 동일한 레이어의 커널들로부터 생성될 수도 있다.
예시에 따라, u번째 레이어와 i번째 레이어는 인접한 레이어일 수도, 멀리 떨어진 레이어일 수도 있으며, 세 개 이상의 커널이 다양한 방법으로 조합되어 커널 필터가 생성될 수도 있다.
도 11에 도시된 바와 같이, 커널 필터가 생성되어 메모리(120 또는 200)에 저장되어 있으면, 도 5a에 도시된 커널 생성부(300) 혹은 도 6a에 도시된 커널 생성부(150) 또는 도 6b에 도시된 커널 생성부(240)는 베이스 커널과 커널 필터를 조합하여 원본 커널을 복원하거나 원본 커널과 유사한 커널을 생성할 수 있다.
인공 신경망(예컨대, CNN) 모델 학습 과정에서, 상기 커널 필터는 작은 비트 폭(혹은 작은 비트 크기)를 갖도록 설정될 수 있다. 예를 들어, 인공 신경망(예컨대, CNN) 모델을 학습시키는 과정에서, 커널 필터에 대한 복수의 후보들이 생성될 수 있는 경우, 가장 작은 비트 폭(혹은 작은 비트 크기)를 갖는 임의의 하나가 상기 커널 필터로 선정될 수 있다.
커널 필터는 프로그램으로 구현 가능한 커널들의 여러가지 조합으로 생성될 수 있다. 일례로, 학습 과정에서 컨볼루션 신경망은 추정값과 목표값의 차이를 최소화시키면서, 동시에 근접한 레이어 간의 커널들의 차이를 최소화시키는 방향으로 학습을 수행하게 되는데, 이때 레이어간의 커널들의 차이 값에 기초하여, 커널 필터가 결정될 수 있다. 또는, 레이어간의 커널들을 덧셈, 곱셈, 나눗셈, 사칙연산들의 조합, 합성곱 연산, 이외에도 다양한 방법을 통해 커널 필터가 생성될 수 있다.
도 12는 원본 커널을 복원하거나 원본 커널과 유사한 커널을 생성하는 일 예를 나타낸 예시도이다.
도 12를 참조하면, 베이스 커널은 예시적으로, 4x4 행렬인 것으로 나타나 있다. 상기 베이스 커널의 행렬 원소(element)의 비트 폭이 예시적으로 16비트라면, 4x4 행렬의 전체 데이터 크기는 총 256 비트일 수 있다. 도 12를 참조하면, 커널 필터는 예시적으로 4x4 행렬인 것으로 나타나 있다. 상기 커널 필터의 행렬 원소의 비트폭이 5비트를 차지한다면, 4x4 행렬 크기의 커널 필터의 전체 데이터 크기는 총 80비트일 수 있다.
베이스 커널과 제1 커널 필터를 기초로 복원 연산을 수행하면, 제1 복원(혹은 변조) 커널이 생성될 수 있다.
또한, 베이스 커널과 제2 커널 필터를 기초로 복원 연산을 수행하면, 제2 복원(혹은 변조) 커널이 생성될 수 있다.
도 12에서는 상기 제1 및 제2 복원(혹은 변조) 커널은 예시적으로 4x4 행렬인 것으로 나타내었다. 그러나 이와 달리, 상기 제1 또는 제2 복원(혹은 변조) 커널은 예시적으로 상기 베이스 커널의 행렬 크기보다 크거나 작을 수 있다. 예를 들어, 상기 제1 복원(혹은 변조) 커널은 5x5 크기의 행렬일 수 있고, 제2 복원(혹은 변조) 커널은 3x3 크기의 행렬일 수 있다. 반대로, 상기 제1 복원(혹은 변조) 커널은 3x3 크기의 행렬이고, 제2 복원(혹은 변조) 커널은 5x5 크기의 행렬일 수 있다.
도 13는 원본 커널을 복원하거나 원본 커널과 유사한 커널을 생성하는 다른 일 예를 나타낸 예시도이다.
도 13을 참조하면, 베이스 커널은 예시적으로, 4x4 행렬인 것으로 나타나 있다. 상기 베이스 커널의 행렬 원소(element)의 비트 폭이 예시적으로 16비트 이라면, 4x4 행렬의 데이터 크기는 총 256 비트일 수 있다. 도 13을 참조하면, 커널 필터는 예시적으로 4x4 행렬인 것으로 나타나 있다. 상기 커널 필터의 행렬 원소의 비트폭이 5비트를 차지한다면, 4x4 행렬 크기의 커널 필터의 데이터 크기는 총 80비트일 수 있다.
베이스 커널과 제1 커널 필터를 기초로 복원 연산을 수행하면, 제1 복원(혹은 변조) 커널이 생성될 수 있다.
도 12의 예시와 달리, 도 13에서는 제2 커널 필터가 상기 베이스 커널에 적용되는 것이 아니라, 제1 복원(혹은 변조) 커널에 적용될 수 있다.
구체적으로, 상기 제1 복원(혹은 변조) 커널과 제2 커널 필터를 기초로 복원 연산을 수행하면, 제2 복원(혹은 변조) 커널이 생성될 수 있다.
도 13에서는 상기 제1 및 제2 복원(혹은 변조) 커널은 예시적으로 4x4 행렬인 것으로 나타내었다. 그러나 이와 달리, 상기 제1 혹은 제2 복원(혹은 변조) 커널은 예시적으로 상기 베이스 커널의 행렬 크기보다 크거나 작을 수 있다. 예를 들어, 상기 제1 복원(혹은 변조) 커널은 5x5 크기의 행렬일 수 있고, 제2 복원(혹은 변조) 커널은 3x3 크기의 행렬일 수 있다. 혹은 반대로, 상기 제1 복원(혹은 변조) 커널은 3x3 크기의 행렬이고, 제2 복원(혹은 변조) 커널은 5x5 크기의 행렬일 수 있다.
도 14는 원본 커널을 복원하거나 원본 커널과 유사한 커널을 생성하는 또 다른 일 예를 나타낸 예시도이다.
도 14를 참조하면, 베이스 커널은 예시적으로, 4x4 행렬인 것으로 나타나 있다. 상기 베이스 커널의 행렬 원소(element)의 비트폭이 예시적으로 16비트 이라면, 4x4 행렬의 데이터 크기는 총 256 비트일 수 있다. 도 14를 참조하면, 커널 필터는 예시적으로 4x4 행렬인 것으로 나타나 있다. 상기 커널 필터의 행렬 원소의 비트폭이 5비트를 차지한다면, 4x4 행렬 크기의 커널 필터의 데이터 크기는 총 80비트일 수 있다.
도 13의 예시와 달리, 도 14에서는 제1 커널 필터와 제2 커널 필터에 대해서 임의 연산을 수행함으로써, 제2 복원(혹은 변조) 커널이 생성될 수 있다.
구체적으로, 상기 베이스 커널과 제1 커널 필터를 기초로 복원 연산을 수행하면, 제1 복원(혹은 변조) 커널이 생성될 수 있다.
그리고, 제1 커널 필터와 제2 커널 필터를 기초로 복원 연산을 수행하면, 제2 복원(혹은 변조) 커널이 생성될 수 있다.
도 14에서는 상기 제1 및 제2 복원(혹은 변조) 커널은 예시적으로 4x4 행렬인 것으로 나타내었다. 그러나 이와 달리, 상기 제1 또는 제2 복원(혹은 변조) 커널은 예시적으로 상기 베이스 커널의 행렬 크기보다 크거나 작을 수 있다. 예를 들어, 상기 제1 복원(혹은 변조) 커널은 5x5 크기의 행렬일 수 있고, 제2 복원(혹은 변조) 커널은 3x3 크기의 행렬일 수 있다. 반대로, 상기 제1 복원(혹은 변조) 커널은 3x3 크기의 행렬이고, 제2 복원(혹은 변조) 커널은 5x5 크기의 행렬일 수 있다.
도 15는 베이스 커널을 회전하여 다른 커널을 생성하는 일 예를 나타낸다.
도 15를 참조하면, 다른 베이스 커널은 베이스 커널을 회전(rotate)시켜 생성될 수 있다. 도 12 내지 도 14의 예시들과 비교하여, 도 15의 예시에서는 커널 필터를 이용하지 않고 베이스 커널 자체를 변형하여 다른 커널을 생성할 수 있다.
따라서, 메모리로부터 베이스 커널과 커널 필터를 불러와야 하는 도 12 내지 도 14의 예시보다 전송되는 데이터의 양을 줄일 수 있는 효과가 있다. 또한, 요구되는 인공지능 성능에 따라 커널 필터와 동시에 적용하여 저젼력으로 동작되게 할 수 있다.
도 16은 베이스 커널을 트랜스포즈하여 다른 커널을 생성하는 예를 나타낸다.
도 16을 참조하면, 또 다른 베이스 커널은 베이스 커널을 트랜스포즈(transpose)시켜 생성될 수 있다. 도 12 내지 도 14의 예시들과 비교하여, 도 16의 예시 또한 커널 필터를 이용하지 않고 베이스 커널 자체를 변형하여 또 다른 커널을 생성할 수 있다.
따라서, 메모리로부터 베이스 커널과 커널 필터를 불러와야 하는 도 12 내지 도 14의 예시들에 비교하여, 전송되는 데이터의 양을 줄일 수 있는 효과가 있다. 또한, 요구되는 인공지능 성능에 따라 커널 필터와 동시에 적용하여 보다 저전력으로 동작되게 할 수 있다.
도 15에 도시된 회전과 도 16에 도시된 트랜스포즈는 하나의 예시일 뿐이며, 프로그램으로 구현될 수 있는 다양한 알고리즘에 따라 커널이 생성될 수 있다. 회전과 트랜스포즈를 포함한 다양한 커널 생성 방법은 적절히 선택되어 동시에 적용될 수 있으며, 컨볼루션 신경망 스스로 최적의 조합을 찾는 동작을 수행할 수도 있다.
도 17은 베이스 커널을 트랜스포즈하여 다른 커널을 생성하는 예를 나타낸다.
도 17을 참조하면, 베이스 커널은 예시적으로, 4x4 행렬인 것으로 나타나 있다.
베이스 커널과 제1 커널 필터를 기초로 복원 연산을 수행하면, 제1 복원(혹은 변조) 커널이 생성될 수 있다.
그리고, 상기 제1 복원(혹은 변조) 커널을 도 16에 도시된 바와 같이 트랜스포즈하면, 제2 복원(혹은 변조) 커널이 생성될 수 있다.
또한, 제1 커널 필터를 회전하면, 제3 복원(혹은 변조) 커널이 생성될 수 있다.
도 18은 커널 생성 알고리즘(또는 커널 복원 알고리즘)을 이해하기 쉽게 테이블로 정리하여 나타낸 예시도이다.
커널 생성 알고리즘(또는 커널 복원 알고리즘)은 학습 과정을 통해 입력 데이터의 연산 처리 방법을 정의한 알고리즘일 수 있다. 커널 생성 알고리즘(또는 커널 복원 알고리즘)은 일련의 학습 과정을 통해 최적의 정확도를 가진다고 판단된 알고리즘에 따라 생성될 수 있다.
커널 생성 알고리즘(또는 커널 복원 알고리즘)에는 사용되는 레이어의 개수, 입력 데이터 정보, 연산 처리 방법, 메모리에서 커널을 가져오는 순서 등이 포함될 수 있다.
또한, 커널 생성 알고리즘(또는 커널 복원 알고리즘)은 특정 레이어의 원본 커널을 복원하거나 원본 커널과 유사한 커널을 생성하기 위한 정보, 즉 매핑 정보를 포함할 수 있다.
베이스 커널을 이용하여 다른 원본 커널들(즉, 변조 커널 혹은 복원 커널)을 복원하거나, 원본 커널과 유사한 커널을 생성하는 방식은 레이어마다 또는 채널마다 다르게 적용될 수 있다. 구체적으로, 원본 커널들을 복원하거나 원본 커널과 유사한 커널을 생성하는 방식에는, 1) 베이스 커널을 다른 레이어 또는 채널에 그대로 사용, 2) 커널 필터를 활용, 3) 커널 필터와 무관하게 베이스 커널 자체를 변형, 4) 커널 필터와 베이스 커널 자체의 변형을 동시에 적용 등이 포함될 수 있다.
예를 들어, 커널 생성 알고리즘(또는 커널 복원 알고리즘)은 제1 레이어는 베이스 커널을 그대로 사용, 제2 레이어 내지 제4 레이어에 대응되는 커널은 베이스 커널을 회전(rotate)시켜 생성, 제5 레이어에 대응되는 커널은 베이스 커널을 트랜스포즈(transpose)시켜 생성, 제6 레이어 내지 제8 레이어에 대응되는 가중치는 베이스 커널에 커널 필터를 더하거나 빼서 생성, 제9 레이어에 대응되는 커널은 커널 필터를 더하면서 동시에 회전시켜 생성하도록 지시할 수 있다.
본 개시에 따라, 학습 과정에서 결정된 각 레이어의 커널 필터를 활용하면, 각 레이어의 커널(즉, 가중치 행렬) 전체를 저장할 때보다 사용되는 메모리 용량을 줄일 수 있고, 학습 과정에서 결정된 레이어간 커널 필터를 인공지능(artificial intelligence)의 요구 수준에 따라 유연하게 적용할 수 있어, 사용자 환경에 최적화된 사용자 맞춤형 인공지능을 제공할 수 있는 효과가 있다.
도 18을 참조하면, 레이어1의 채널 1을 위한 커널1이 커널1이 레이어 1 내에서의 베이스 커널로 결정되어 있다. 레이어1의 채널2를 위한 커널2는, 베이스 커널에 해당하는 커널1과 커널필터2의 조합으로, 복원(또는 생성)될 수 있다. 레이어1의 채널3을 위한 커널3은 베이스커널에 해당하는 커널1과, 커널필터1 그리고 회전에 의해서 복원(또는 생성)될 수 있다. 표에 나타나 있지는 않지만, 상기 회전이 상기 커널1에 대해서 수행되는지 아니면 상기 커널필터1에 대해 적용되는지에 대한 정보가 더 필요할 수 있다. 레이어1의 채널 4를 위한 커널4는 커널1과, 커널필터2와 트랜스포즈에 의해서 복원(또는 생성)될 수 있다. 표에 나타나 않지만, 상기 트랜스포즈가 상기 커널1에 대해서 수행되는지 아니면 상기 커널필터2에 대해서 적용되는지에 대한 정보가 더 필요할 수 있다.
한편, 레이어11의 채널1을 위한 커널은 커널 10으로서, 레이어 11을 위한 베이스 커널이 될 수 있다. 레이어 11의 채널2를 위한 커널11은 베이스커널에 해당하는 커널10과 커널필터 6의 조합으로, 복원(또는 생성)될 수 있다. 그리고 레이어 11의 채널2를 위한 커널 12는 베이스커널에 해당하는 커널10과, 커널필터8의 조합으로, 복원(또는 생성)될 수 있다.
도 18에 표로 나타나 있는 특정 레이어의 커널을 복원하거나 원본 커널과 유사한 커널을 생성하기 위한 정보, 즉 매핑 정보는, 기껏해야 수십 혹은 수백 킬로바이트(kB) 크기에 불과하므로, 종래와 같이 모든 레이어에 대한 커널 전체를 저장하는데 필요한 크기, 예컨대 수백 메가바이트에 비하여, 획기적으로 저장 용량을 줄일 수 있는 장점이 있다.
도 19는 복수의 베이스 커널과 복수의 커널 필터들을 이용하여, 인공 신경망(예컨대, CNN) 모델의 구조를 복원하는 개념을 나타낸 예시도이다.
도 19에 도시된 바와 같이, 제1 베이스 커널과 대응하는 복수의 커널 필터들이 존재하고, 제2 베이스 커널과 대응하는 복수의 커널 필터들이 존재할 수 있다. 도 19에 도시된 예시에 의하면, 각 베이스 커널은 예컨대 256비트일 수 있고, 각 커널 필터는 예컨대 16비트일 수 있다.
도 19에는 제1 베이스 커널과 대응하는 커널 필터들을 조합하여 연산을 수행하면, 제1 레이어 및 제2 레이어의 커널들이 복원(또는 생성)되는 것으로 도시되어 있고, 제2 베이스 커널과 대응하는 커널 필터들을 조합하여 연산을 수행하면, 제3 레이어 및 제4 레이어의 커널들이 복원(또는 생성)되는 것으로 도시되어 있다.
도 19에 도시된 예시에서는 레이어는 4개이고, 각 레이어 마다 필요한 커널이 3개인 것으로 나타나 있으므로, 총 12개의 커널이 사용되는 것으로 나타나 있다. 이 경우, 256 비트*12개를 하면 3,702비트가 메모리에 저장될 필요가 있다. 그러나, 커널 필터를 사용하는 경우, 256비트 크기의 베이스 커널 2개, 16 비트 크기의 커널 필터 5개로, 총 필요한 메모리 크기는 672 비트로 줄어들게 된다. 이상에서 설명한 바와 같이, 커널 필터를 사용하게 되면, 필요한 메모리 크기를 획기적으로 줄일 수 있는 장점이 있다.
도 20은 베이스 커널 및 커널 필터의 결정 절차를 설명하기 위한 순서도이다.
도 20에 도시된 절차는 인공 신경망, 예컨대 컨볼루션 신경망의 기계 학습(machine learning) 과정에서 수행될 수 있다. 기계 학습은 컴퓨터가 데이터를 학습하고 스스로 패턴을 찾아내 적절한 작업을 수행하도록 학습하는 알고리즘일 수 있다. 예를 들어, 머신러닝은 지도학습(Supervised learning), 비지도학습(Unsupervised learning), 강화학습(Reinforcement learning)을 포함할 수 있다.
S2001 단계에서, 인공 신경망 모델, 예컨대 컨볼루션 신경망 모델의 각 레이어 및 채널에 적용될 커널(즉, 가중치 값들을 포함하는 행렬)이 결정될 수 있다.
예를 들어, 입력 정보가 영상 이미지이고, 해당 영상 이미지는 Red 채널, Green 채널, Blue 채널의 3개의 채널로 분리될 수 있는 경우, 각 레이어에 대해서 3개의 채널에 대한 3개의 커널이 결정될 수 있다. 구체적으로, 제1 레이어 내에서 3개의 채널에 대해서 3개의 커널이 결정될 수 있고, 제2 레이어 내에서도 3개의 채널에 대한 3개의 커널이 결정될 수 있다. 혹은 입력된 영상 이미지가 5개의 채널로 분리될 수 있는 경우, 각 레이어에 대해서 5개의 채널에 대한 5개의 커널이 결정될 수 있다. 대안적으로, 각 채널에 대해서 복수개의 커널 후보가 결정될 수도 있다. 예를 들어, 채널 당 2개의 커널 후보가 결정되는 경우, 5개의 채널이라면 총 10개의 커널 후보 커널이 결정될 수도 있다.
S2003 단계에서, 각 레이어 및 채널에 적용될 복수개의 커널들 중에서 하나 이상의 베이스 커널이 선택될 수 있다. 상기 선택된 베이스 커널은 커널 필터의 비트 폭(혹은 데이터 크기)을 최소화할 수 있는 것일 수 있다.
S2005 단계에서, 선택된 베이스 커널과 다른 커널 간의 상관관계에 기초하여, 커널 필터가 결정될 수 있다.
예를 들어, 제1 레이어의 3개의 채널을 위해 3개의 커널이 존재하는 경우, 3개의 커널 중 임의 하나가 제1 레이어를 위한 베이스 커널로 선택될 수 있다. 구체적으로, 커널1, 커널2, 커널3 중에서 커널1이 베이스 커널로 선택될 수 있다. 그리고, 상기 베이스 커널과 커널2의 상관관계에 기초하여 커널 필터1이 결정되고, 상기 베이스 커널과 커널3의 상관관계에 기초하여, 커널 필터2가 결정될 수 있다.
다른 예로서, 제1 레이어의 3개의 채널을 위한 3개의 커널이 존재하고, 제2 레이어의 3개의 채널을 위한 3개의 커널이 존재하는 경우, 총 6개의 커널 중 하나가 제1 레이어 및 제2 레이어를 위한 베이스 커널로 선택될 수 있다. 구체적으로, 제1 레이어를 위한 커널1 내지 커널3과 그리고 제2 레이어를 위한 커널4 내지 커널6 중에서 커널3이 베이스 커널로 선택되고, 상기 베이스 커널인 커널3과 다른 커널들의 상관관계에 기초하여, 커널 필터들이 결정될 수 있다.
또 다른 예로서, 제1 레이어, 제2 레이어 그리고 제3 레이어가 존재할 때, 각 레이어마다 3개의 채널을 위한 3개의 커널이 존재한다고 가정하면, 총 9개의 커널이 존재하게 된다. 이 경우, 제1 레이어에서의 3개의 커널, 제2 레이어에서의 2개의 커널을 포함하는 5개의 커널 중에서 하나가 제1 베이스 커널로 선택될 수 있다. 그리고, 제2 레이어의 나머지 1개 커널 그리고 제3 레이어의 3개 커널을 포함하는 4개의 커널들 중에서 하나가 제2 베이스 커널로 선택될 수 있다.
또 다른 예로서, 3개의 레이어가 존재하고, 3개의 채널(예컨대 Red 채널, Green 채널 그리고 Blue 채널)이 존재한다고 가정하자. 그러면, 제1 레이어에는 Red 채널을 위한 커널1, Green 채널을 위한 커널2, Blue 채널을 위한 커널3이 존재하고, 제2 레이어에는 Red 채널을 위한 커널4, Green 채널을 위한 커널5, Blue 채널을 위한 커널6이 존재하고, 제3 레이어에는 Red 채널을 위한 커널7, Green 채널을 위한 커널8, Blue 채널을 위한 커널9가 존재하게 된다. 이때, Red 채널을 위한 3개의 커널(즉, 제1 레이어의 Red 채널을 위한 커널1, 제2 레이어의 Red 채널을 위한 커널4, 제3 레이어의 Red 채널을 위한 커널7) 중에서 하나가 제1 베이스 커널로 선택될 수 있다. 마찬가지로, 제1 레이어의 Green 채널을 위한 커널2, 제2 레이어의 Green 채널을 위한 커널5, 제3 레이어의 Green 채널을 위한 커널 8 중에서 하나가 제2 베이스 커널로 선택될 수 있다. 마찬가지로, 제1 레이어의 Green 채널을 위한 커널3, 제2 레이어의 Blue 채널을 위한 커널6, 제3 레이어의 Blue 채널을 위한 커널 9 중에서 하나가 제3 베이스 커널로 선택될 수 있다. 일반적으로, 하나의 채널(예컨대, Red 채널)을 위한 3개 레이어에서의 3개 커널은 비슷한 서로 유사할 수 있기 때문에, 3개의 커널 중 하나를 베이스 커널로 선택하고, 다른 2개의 커널은 커널 필터를 통해 복원할 수 있도록 할 수 있다. 또한, 하나의 채널(예컨대, Red 채널)을 위한 3개 레이어에서의 3개 커널은 비슷한 서로 유사할 수 있기 때문에, 커널 필터의 비트 폭(혹은 비트 크기)를 줄일 수 있다.
한편, 상기 커널 필터는 복수 후보가 존재할 수 있으나, 상기 복수 후보 중에서 학습 과정을 통해 사전에 정의된 규칙을 충족하는 커널 필터가 최종적으로 선택될 수 있다.
사전에 정의된 규칙은 커널 필터의 비트 폭(혹은 비트 크기), 연산량, 편익 비용비(Benefit Cost Ratio), 전력 사용량, 정확도, 혹은 이들의 조합을 포함할 수 있다.
예를 들면, 커널 필터는 ANN 모델의 학습 과정에서, 델타(delta) 함수, 계수(coefficient) 함수, 회전(rotation) 함수, 트랜스포즈(transpose) 함수, 바이어스(bias) 함수, 정확도(accuracy) 및 가중치 크기 감소 비율을 포함하는 비용 함수(cost function)를 포함하는 글로벌 가중치 함수를 적용함으로써, 세팅되도록 설정될 수 있다.
구체적인 일 예를 들면, 커널 필터의 복수 후보 중에서 가장 비트 폭(혹은 비트 크기)이 작으면서, 가장 높은 정확도를 가진 커널 필터가 선택될 수 있다. 상기 커널 필터의 선택은 인공 신경망의 매 학습 과정 마다 갱신될 수 있고, 학습 완료 후에 최종적으로 완료될 수 있다.
S2007 단계에서, 상기 베이스 커널, 대응하는 커널 필터, 복원(변조) 커널 간의 매핑 정보가 저장될 수 있다. 상기 매핑 정보는 상기 도 5a 또는 상기 도 6에 도시된 상기 메모리(200) 내의 커널 생성 알고리즘 저장부(230) 내에 저장될 수 있다.
도 21은 컨볼루션 신경망의 커널 복원 후 적용 절차를 설명하기 위한 순서도이다.
도 21를 참조하면, 도 20의 S2007 과정으로부터 시작될 수 있는 것으로 도시되었다. 그러나, S2007 과정과 S2101 과정 간에 매우 긴 시간 차이가 있는 경우, 별개의 절차로 인식될 수도 있다. 혹은 서로 다른 장치에 의해서 수행됨으로써, 별개로 인식될 수도 있다. 예컨대, 도 20에 도시된 절차는 고성능 컴퓨팅 파워를 갖는 장치에서 수행될 수 있고, 도 21에 도시된 절차는 도 1 또는 도 3에 도시된 신경망 프로세싱 유닛(100)을 포함하는 장치에 의해서 수행될 수 있다.
S2101 단계에서, 도 5a에 도시된 커널 생성부(300) 혹은 도 6a에 도시된 신경망 프로세싱 유닛(100) 내의 커널 생성부(150) 혹은 도 6b에 도시된 메모리(200) 내의 커널 생성부(240)는 매핑 정보를 포함하는 커널 생성 알고리즘(즉, 커널 복원 알고리즘), 베이스 커널, 커널 필터를 메모리(200)으로부터 읽어온다.
예를 들어, 도 5a에 도시된 커널 생성부(300)는 상기 읽어온 베이스 커널, 커널 필터 그리고 매핑 정보를 내부 메모리(310)에 저장할 수 있다. 또는, 도 6a에 도시된 신경망 프로세싱 유닛(100) 내의 커널 생성부(150)는 상기 읽어온 베이스 커널, 커널 필터 그리고 매핑 정보를 NPU 내부 메모리(120)에 저장할 수 있다. 일단 상기 베이스 커널, 커널 필터 그리고 매핑 정보가 내부 메모리()에 저장되면, 상기 신경망 프로세싱 유닛(100)은 상기 메모리(200)에 다시 액세스하지 않아도 된다. 이와 같이, 신경망 프로세싱 유닛(100)이 메모리(200)를 액세스하는 대신에, NPU 내부 메모리(120)를 액세스하도록 함으로써, 전력 소모량을 최대 128배 절약할 수 도 있다.
S2103 단계에서, 도 5a에 도시된 커널 생성부(300)는 상기 매핑 정보, 상기 베이스 커널, 커널 필터에 기초하여 복원(혹은 변조) 커널을 생성한 후, 신경망 프로세싱 유닛(100)으로 전달한다. 대안적으로, 도 6a에 도시된 신경망 프로세싱 유닛(100) 내의 커널 생성부(150)는 상기 매핑 정보, 상기 베이스 커널, 커널 필터에 기초하여 복원(혹은 변조) 커널을 생성한다. 대안적으로, 혹은 도 6b에 도시된 메모리(200) 내의 커널 생성부(240)는 복원(혹은 변조) 커널을 생성한 후, 신경망 프로세싱 유닛(100)으로 전달한다. 이와 같은 동작을 통해, 원본 커널이 복원되거나, 원본 커널과 유사한 커널이 생성될 수 있다.
커널의 복원에는 하나 이상의 베이스 커널이 사용될 수 있다. 베이스 커널은 반드시 첫 레이어의 커널일 필요가 없으며, 임의의 레이어의 커널 또는 임의의 채널의 커널이 베이스 커널로 결정될 수 있다.
다시 한번 설명하면, 상기 복원(변조) 커널은 베이스 커널과 커널 필터 중 하나 이상에 기초하여 생성될 수 있다. 예를 들어, 상기 커널 필터가 상기 베이스 커널에 대한 계수 함수로 표현될 경우, 상기 복원(또는 변조) 커널은 상기 베이스 커널에 상기 계수를 적용함으로써 생성될 수 있다. 보다 구체적인 예를 들어, 상기 계수 함수는 베이스 커널의 모든 원소에 대해서 상수 값(예컨대, 2)을 더하거나 곱하는 것일 수 있다.
예시에서, 입력 데이터가 RGB의 세 개의 채널만으로 구성되는 경우 뿐만 아니라 수십 개 이상의 채널이 사용되는 경우가 있을 수 있다. 커널 생성부(150, 300 또는 240)는 각 채널마다 여러 베이스 커널에 기초하여 다양한 기법에 따라 여러 원본 커널(즉 변조 커널 혹은 복원 커널)을 생성할 수 있다.
나아가, 베이스 커널을 이용하여 다른 커널을 생성하는 다양한 기법은 레이어마다 또는 채널마다 다르게 적용될 수 있다. 구체적으로, 커널을 생성하는 기법에는, 1) 베이스 커널을 다른 레이어 또는 채널에 그대로 사용하는 방법, 2) 베이스 커널 자체를 변형시키는 방법 등이 포함될 수 있다.
특히, 2) 베이스 커널 자체를 변형시키는 방법은, 메모리로부터 데이터를 불러들이는 순서를 변형하는 방법을 통해 구현될 수 있다. 메모리의 저장된 데이터는 그 위치를 나타내는 어드레스로 표현될 수 있다. 예를 들어, 메모리에서 칼럼 어드레스와 로우 어드레스로 위치가 표현될 수 있다. 컨볼루션 신경망은 커널 생성 알고리즘(또는 커널 복원 알고리즘)에 따라 메모리에 변형된 어드레스를 전송함으로써, 베이스 커널의 각 데이터 값을 수신하는 순서를 달리할 수 있다.
예를 들어, 커널 생성 알고리즘(또는 커널 복원 알고리즘)은 제1 레이어는 베이스 커널을 그대로 사용, 제2 레이어 내지 제4 레이어에 대응되는 가중치는 베이스 커널을 회전(rotate)시켜 생성, 제5 레이어에 대응되는 가중치는 베이스 커널을 트랜스포즈(transpose)시켜 생성하도록 지시할 수 있다.
종래에는 매 레이어 또는 채널에서 연산할 때마다 메모리에서 커널 전체를 불러와야 하는 비효율성이 있었으나, 본 명세서의 개시에 의하면 베이스 커널과 실시간으로 복원 커널(혹은 변조 커널) 생성할 수 있어서, 메모리(200)에 대한 액세스 빈도를 줄일 수 있고, 그로 인해 전력 소모량을 획기적으로 줄일 수 있다.
S2105 단계에서, 신경망 프로세싱 유닛(100)은 베이스 커널을 이용하여 행렬곱 또는 합성곱 또는 폴링을 수행한다.
S2107 단계에서, 신경망 프로세싱 유닛(100)은 복원(변조) 커널을 이용하여 행렬곱 또는 합성곱 또는 폴링을 수행한다.
S2109 단계에서, 신경망 프로세싱 유닛(100)은 상기 행렬곱 또는 합성곱의 출력을 사용하여, 인공 신경망 연산을 수행할 수 있다.
도 22는 도 1 또는 도 3에 도시된 신경망 프로세싱 유닛의 동작에 대한 예시적인 흐름도이고, 도 23a 및 도 23b는 모드 별 커널의 활성 비트를 나타낸 예시도이다.
S2201 과정에서, 신경망 프로세싱 유닛(100)은 자신의 동작 모드를 결정할 수 있다. 상기 결정은 미리 설정된 제어 정보 혹은 제어 시그널에 기초하여 기초하여 수행될 수 있다. 예를 들어, 상기 신경망 프로세싱 유닛(100)이 외부로부터 임의 동작 모드로 동작하라는 제어 신호를 수신하는 경우, 상기 신경망 프로세싱 유닛(100)은 해당 제어 신호에 기초하여, 동작 모드를 결정할 수 있다.
상기 동작 모드는 복수의 동작 모드를 포함할 수 있다.
모드 1은 최대 성능 동작 모드일 수 있고, 모드 2는 저전력 동작 모드 혹은 저성능 동작 모드일 수 있다.
상기 모드 1은 전력 소비량을 고려하지 않고, 높은 복잡도의 인공 신경망 모델을 구현하기 위한 것일 수 있다. 또는, 상기 모드 1은 높은 복잡도의 입력 데이터를 인공 신경망 모델을 통해 처리하기 위한 것일 수 있다. 상기 모드 1은 커널 혹은 커널 필터의 모든 비트를 사용하여, 합성곱 혹은 폴링을 수행하는 것일 수 있다.
상기 모드 2는 전력 소비량을 고려하거나, 낮은 복잡도의 인공 신경망 모델을 구현하기 위한 것일 수 있다. 또는, 상기 모드 2는 낮은 복잡도의 입력 데이터를 인공 신경망 모델을 통해 처리하기 위한 것일 수 있다.
커널 혹은 커널 필터의 일부 비트만을 사용하여, 합성곱 혹은 폴링을 수행하는 것일 수 있다. 이를 위해 상기 커널 혹은 커널 필터는 복수개의 영역으로 나뉠 수 있다. 상기 모드 2는 여러 하위 모드 2-1, 2-2 그리고 2-3로 나뉠 수 있다.
S2203 과정에서 상기 신경망 프로세싱 유닛(100)은 상기 결정된 동작 모드에 기초하여, 임의 커널 내의 영역에서 가중치 비트를 선택할 수 있다.
도 23a에 도시된 바와 같이 커널 1은 예시적으로 4x4 행렬 크기이고, 각 원소(element)의 비트 폭은 예시적으로 8비트인 것으로 나타나 있다. 모드 1은 예시적으로 8비트의 원소를 모두 선택하여 사용하는 것일 수 있다.
도 23b에 도시된 바와 같이, 모드 2-1는 가중치 비트 중 임의 영역의 비트를 사용하는 것일 수 있다. 도시된 바와 같이, 모드 2-1는 총 8 비트 중에서 제1 영역 내의 4 비트를 사용하는 것일 수 있다. 상기 모드 2-2는 총 8비트 중에서 제2 영역 내의 4 비트를 사용하는 것일 수 있다.
상기 모드 2-3은 예컨대 4x4 크기의 행렬 내에서 임의 원소들의 일부 비트만 사용할 수 있다. 이러한 모드 2-3에 의하면 예를 들어 각 원소가 4비트 크기를 갖는 3x3 크기의 행렬이 선택되어 사용될 수 있다.
S2205 과정에서, 상기 신경망 프로세싱 유닛(100)은 상기 임의 커널 내에서 선택된 가중치 비트를 이용하여, 합성곱을 수행할 수 있다.
본 명세서와 도면에 게시된 본 개시의 예시들은 본 개시의 기술내용을 쉽게 설명하고 본 개시의 이해를 돕기 위해 특정 예를 제시한 것뿐이며, 본 명의 범위를 한정하고자 하는 것은 아니다. 여기에 게시된 예시들 이외에도 발명의 기술적 사상에 바탕을 둔 다른 변형 예들이 실시 가능하다는 것은 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자에게 자명한 것이다.
100: 신경망 프로세싱 유닛(NPU)
110: 프로세싱 엘레먼트(PE)
120: NPU 내부 메모리
130: NPU 스케줄러
140: NPU 인터페이스
150: 커널 생성부
200: 메모리
210: 베이스 커널 저장부
220: 커널 필터 저장부
230: 커널 생성 알고리즘 저장부
240: 커널 생성부
300: 커널 생성부
310: 내부 메모리

Claims (15)

  1. 신경망 프로세싱 유닛(neural processing unit, NPU)으로서,
    회로를 포함하고,
    상기 회로는 인공 신경망(artificial neural network, ANN) 모델의 동작을 처리하도록 설정된 적어도 하나의 PE(Processing element); 및
    베이스 커널(kernel)과 제1 커널 필터를 저장하도록 설정가능한 적어도 하나의 메모리를 포함하고,
    상기 회로는 상기 제1 커널 필터 및 제2 커널 필터의 가중치를 저장하는 데이터 비트 폭이 최소화될 수 있도록, 커널 생성 알고리즘에 기초하여 상기 제1 커널 필터 및 상기 제2 커널 필터의 값이 최소가 되는 베이스 커널을 결정하고,
    상기 베이스 커널과 상기 제1 커널 필터에 기초하여, 제1 변조 커널을 생성하도록 구성되는 신경망 프로세싱 유닛(NPU).
  2. 제1항에 있어서, 상기 베이스 커널은
    상기 ANN 모델의 제1 계층에 적용가능한 적어도 하나의 제1 가중치 값 또는 가중치 값들을 포함하는 k x m 행렬을 포함하고,
    k와 m은 정수인 신경망 프로세싱 유닛(NPU).
  3. 제1항에 있어서,
    상기 ANN 모델은 적어도 하나의 상기 베이스 커널 및 상기 베이스 커널로 결정되지 않은 복수의 커널들을 포함하고,
    상기 제1 커널 필터는:
    상기 베이스 커널의 적어도 하나의 커널 가중치 값과, 상기 베이스 커널로 결정되지 않은 상기 복수의 커널들 중 특정 커널의 적어도 하나의 커널 가중치 값 간에 차이에 기초하여 생성되는 신경망 프로세싱 유닛(NPU).
  4. 제1항에 있어서, 상기 제1 커널 필터는
    상기 ANN 모델의 학습 과정 동안에 세팅되도록 설정되는 신경망 프로세싱 유닛(NPU).
  5. 제1항에 있어서, 상기 회로는 상기 제1 변조 커널 및 상기 제2 커널 필터에 기초하여 제2 변조 커널을 생성하도록 설정되고,
    상기 제2 커널 필터는:
    상기 제2 변조 커널의 적어도 하나의 커널 가중치 값과, 상기 베이스 커널로 결정되지 않은 복수의 커널들 중 특정 커널의 적어도 하나의 커널 가중치 값 간에 차이에 기초하여 생성되는,
    신경망 프로세싱 유닛(NPU).
  6. 제5항에 있어서,
    상기 회로는 상기 제1 커널 필터 및 상기 제2 커널 필터에 기초하여 제3 변조 커널을 생성하도록 설정되는 신경망 프로세싱 유닛(NPU).
  7. 제1항에 있어서, 상기 커널 생성 알고리즘은
    적어도 하나의 상기 베이스 커널, 상기 베이스 커널에 대응하는 적어도 하나의 커널 필터 간의 매핑 정보를 포함하는 신경망 프로세싱 유닛(NPU).
  8. 제1항에 있어서, 상기 ANN 모델은
    제1 모드를 위해 상기 제1 커널 필터 내에 포함되는 제1 가중치 비트들의 비트 할당에 대한 정보를 포함하는 신경망 프로세싱 유닛(NPU).
  9. 제1항에 있어서, 상기 신경망 프로세싱 유닛(NPU)는 다수의 모드 중 하나로 동작되고,
    상기 다수의 모드는:
    상기 베이스 커널에 포함되는 다수의 가중치 비트들 중 제1 부분을 상기 ANN 모델에 적용하도록 설정된 제1 모드와; 그리고
    상기 베이스 커널에 포함되는 다수의 가중치 비트들 전부를 상기 ANN 모델에 적용하도록 설정된 제2 모드를 포함하는 신경망 프로세싱 유닛(NPU).
  10. 제9항에 있어서, 상기 제1 부분이 상기 제1 모드에 기초하여 활성화되면, 상기 제1 부분 내의 가중치 비트들이 선택되는 신경망 프로세싱 유닛(NPU).
  11. 제1항에 있어서, 상기 베이스 커널은
    제1 부분과 제2 부분으로 그룹화되는 다수의 가중치 비트들을 포함하고,
    상기 제1 부분과 상기 제2 부분은 선택적으로 사용되는 신경망 프로세싱 유닛(NPU).
  12. 제1항에 있어서, 상기 제1 커널 필터 내의 값에 대한 비트 폭(bit width)은 상기 베이스 커널의 가중치의 비트 폭 보다 작게 되도록, 상기 제1 커널 필터가 설정되는 신경망 프로세싱 유닛(NPU).
  13. 신경망 프로세싱 유닛(NPU)의 동작 방법으로서,
    다수의 커널들 중 적어도 하나의 베이스 커널 및 다수의 커널 필터들 중 적어도 하나의 상기 베이스 커널에 대응하는 커널 필터에 기초하여, 적어도 하나의 변조 커널을 생성하는 단계;
    상기 변조 커널을 인공 신경망(artificial neural network, ANN) 모델의 레이어 또는 채널에 적용하고, 정확도 비용 함수 및 상기 NPU에 미리 정의된 가중치 사이즈 감소 비율이 적용된 비용 함수에 기초하여, 상기 ANN 모델을 트레이닝하는 단계; 및
    트레이닝 완료된 ANN 모델을 통해 갱신된 상기 베이스 커널과 상기 커널 필터 간에 매핑 데이터를 결정하는 단계를 포함하는 방법.
  14. 제13항에 있어서, 상기 동작들은 회로를 포함하는 신경망 프로세싱 유닛(NPU)에 의해서 수행되고,
    상기 회로는 적어도 하나의 PE(processing element)와 적어도 하나의 메모리를 포함하는 방법.
  15. 장치로서,
    전기 전도성 패턴이 형성되어 있는 기판과;
    상기 기판에 전기적으로 연결되고, 베이스 커널에 대한 정보를 저장하도록 설정가능한 적어도 하나의 제1 메모리와;
    상기 기판에 전기적으로 연결되어, 상기 적어도 하나의 제1 메모리를 액세스할 수 있는, 적어도 하나의 신경망 프로세싱 유닛(NPU)을 포함하고,
    상기 적어도 하나의 NPU는: 회로를 포함하고,
    상기 회로는:
    인공 신경망(artificial neural network, ANN) 모델을 추론하기 위한 동작을 처리하도록 설정된 적어도 하나의 PE(Processing element)와, 그리고
    제1 커널 필터에 대한 정보를 저장할 수 있도록 설정가능한 적어도 하나의 내부 메모리를 포함하고,
    상기 적어도 하나의 제1 메모리로부터 상기 베이스 커널에 대한 정보가 일단 읽혀지면, 상기 적어도 하나의 내부 메모리에 저장되고,
    상기 동작들은: 상기 제1 커널 필터 및 제2 커널 필터의 가중치를 저장하는 데이터 비트 폭이 최소화될 수 있도록, 커널 생성 알고리즘에 기초하여 상기 제1 커널 필터 및 상기 제2 커널 필터의 값이 최소가 되는 상기 베이스 커널을 결정하는 단계 및 상기 베이스 커널과 상기 제1 커널 필터에 기초하여, 제1 변조 커널을 생성하는 단계를 포함하는 장치.
KR1020240048320A 2020-12-29 2024-04-09 인공 신경망 모델의 커널을 생성할 수 있는 npu 및 그 방법 KR20240049671A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020240048320A KR20240049671A (ko) 2020-12-29 2024-04-09 인공 신경망 모델의 커널을 생성할 수 있는 npu 및 그 방법

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020200186375A KR20220094787A (ko) 2020-12-29 2020-12-29 인공 신경망 모델의 커널을 생성할 수 있는 npu 및 그 방법
KR1020240048320A KR20240049671A (ko) 2020-12-29 2024-04-09 인공 신경망 모델의 커널을 생성할 수 있는 npu 및 그 방법

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020200186375A Division KR20220094787A (ko) 2020-12-29 2020-12-29 인공 신경망 모델의 커널을 생성할 수 있는 npu 및 그 방법

Publications (1)

Publication Number Publication Date
KR20240049671A true KR20240049671A (ko) 2024-04-16

Family

ID=82119262

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020200186375A KR20220094787A (ko) 2020-12-29 2020-12-29 인공 신경망 모델의 커널을 생성할 수 있는 npu 및 그 방법
KR1020240048320A KR20240049671A (ko) 2020-12-29 2024-04-09 인공 신경망 모델의 커널을 생성할 수 있는 npu 및 그 방법

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020200186375A KR20220094787A (ko) 2020-12-29 2020-12-29 인공 신경망 모델의 커널을 생성할 수 있는 npu 및 그 방법

Country Status (3)

Country Link
US (2) US11416737B2 (ko)
KR (2) KR20220094787A (ko)
CN (1) CN114692854A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11507838B2 (en) * 2019-06-28 2022-11-22 Intel Corporation Methods and apparatus to optimize execution of a machine learning model

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11861484B2 (en) * 2018-09-28 2024-01-02 Qualcomm Incorporated Neural processing unit (NPU) direct memory access (NDMA) hardware pre-processing and post-processing
US11301546B2 (en) * 2018-11-19 2022-04-12 Groq, Inc. Spatial locality transform of matrices
US11423117B2 (en) * 2019-08-27 2022-08-23 Arm Limited Data processing method and system for performing convolutions
KR20210076420A (ko) * 2019-12-16 2021-06-24 삼성전자주식회사 전자 장치 및 그 제어 방법
US11809836B2 (en) * 2020-08-27 2023-11-07 Arm Limited Method and apparatus for data processing operation

Also Published As

Publication number Publication date
KR20220094787A (ko) 2022-07-06
US20220327368A1 (en) 2022-10-13
US11416737B2 (en) 2022-08-16
CN114692854A (zh) 2022-07-01
US20220207336A1 (en) 2022-06-30

Similar Documents

Publication Publication Date Title
KR102329590B1 (ko) 딥 신경망들의 동적 적응
Chen et al. ReGAN: A pipelined ReRAM-based accelerator for generative adversarial networks
Moolchandani et al. Accelerating CNN inference on ASICs: A survey
Marchisio et al. Deep learning for edge computing: Current trends, cross-layer optimizations, and open research challenges
US10489703B2 (en) Memory efficiency for convolutional neural networks operating on graphics processing units
KR102434726B1 (ko) 처리방법 및 장치
KR102139740B1 (ko) 전자 장치 및 학습 모델 최적화 방법
US20210224125A1 (en) Operation Accelerator, Processing Method, and Related Device
US20200026992A1 (en) Hardware neural network conversion method, computing device, compiling method and neural network software and hardware collaboration system
Mazumder et al. A survey on the optimization of neural network accelerators for micro-ai on-device inference
Jin et al. Split-cnn: Splitting window-based operations in convolutional neural networks for memory system optimization
KR20240049671A (ko) 인공 신경망 모델의 커널을 생성할 수 있는 npu 및 그 방법
WO2014105865A1 (en) System and method for parallelizing convolutional neural networks
Chen Escoin: Efficient sparse convolutional neural network inference on gpus
US11763131B1 (en) Systems and methods for reducing power consumption of convolution operations for artificial neural networks
CN112789627B (zh) 一种神经网络处理器、数据处理方法及相关设备
US20230123828A1 (en) Neural processing unit capable of reusing data and method thereof
CN111860807B (zh) 分形计算装置、方法、集成电路及板卡
US11599181B1 (en) Systems and methods for reducing power consumption of convolution operations of artificial neural networks
Véstias Processing systems for deep learning inference on edge devices
KR102544063B1 (ko) 데이터 재사용이 가능한 신경 프로세싱 유닛 및 그 방법
JP7239116B2 (ja) 映像復元方法及び装置
CN109711543B (zh) 一种可重构的深度置信网络实现系统
CN113986816A (zh) 可重构计算芯片
Chen et al. SMALE: Enhancing Scalability of Machine Learning Algorithms on Extreme-Scale Computing Platforms

Legal Events

Date Code Title Description
A107 Divisional application of patent