KR20240042266A - 추론 연산을 수행하는 전자 장치 - Google Patents

추론 연산을 수행하는 전자 장치 Download PDF

Info

Publication number
KR20240042266A
KR20240042266A KR1020247010033A KR20247010033A KR20240042266A KR 20240042266 A KR20240042266 A KR 20240042266A KR 1020247010033 A KR1020247010033 A KR 1020247010033A KR 20247010033 A KR20247010033 A KR 20247010033A KR 20240042266 A KR20240042266 A KR 20240042266A
Authority
KR
South Korea
Prior art keywords
neural network
data
artificial neural
npu
processing unit
Prior art date
Application number
KR1020247010033A
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 주식회사 딥엑스
Publication of KR20240042266A publication Critical patent/KR20240042266A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0463Neocognitrons
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Biophysics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computer Hardware Design (AREA)
  • Neurology (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Image Analysis (AREA)
  • Multimedia (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Acoustics & Sound (AREA)
  • Psychiatry (AREA)
  • Social Psychology (AREA)
  • Medical Informatics (AREA)
  • Databases & Information Systems (AREA)
  • Signal Processing (AREA)

Abstract

본 개시의 일 예시에 따른 신경망 프로세싱 유닛은 인공신경망모델을 처리하는 프로세싱 엘리먼트 어레이 및 상기 인공신경망모델의 적어도 일부 데이터를 저장하도록 구성된 NPU 메모리 시스템을 포함하고, 프로세싱 엘리먼트는 복수의 프로세싱 엘리먼트들 및 복수의 레지스터 파일들을 포함하고,복수의 레지스터 파일들 각각은 상기 복수의 프로세싱 엘리먼트들 각각에 대응될 수 있다.

Description

추론 연산을 수행하는 전자 장치{Electronic devices configured to perform inference operations}
본 개시는 신경망 프로세싱 유닛을 포함하는 전자 장치에 관한 것으로, 보다 상세하게는 추론 연산을 수행하는 신경망 프로세싱 유닛을 포함하는 전자 장치에 관한 것이다.
인간의 뇌는 뉴런(Neuron)이라는 수많은 신경세포로 이루어져 있다. 각각의 뉴런은 시냅스(Synapse)라고 불리는 연결부위를 통해 수백에서 수천 개의 다른 뉴런들과 연결되어 있다. 인간의 지능을 모방하기 위하여, 생물학적 뉴런의 동작원리와 뉴런 간의 연결 관계를 모델링한 것을, 인공신경망(Artificial Neural Network, ANN) 모델이라고 한다. 즉, 인공 신경망은 뉴런들을 모방한 노드들을 레이어(Layer: 계층) 구조로 연결시킨, 시스템이다.
이러한 인공신경망모델은 레이어 수에 따라 '단층 신경망'과 '다층 신경망'으로 구분한다.
일반적인 다층신경망은 입력 레이어와 은닉 레이어, 출력 레이어로 구성되는데, 입력 레이어(input layer)는 외부의 자료들을 받아들이는 레이어로서, 입력 레이어의 뉴런 수는 입력되는 변수의 수와 동일하다. 적어도 하나의 은닉 레이어(hidden layer)는 입력 레이어와 출력 레이어 사이에 위치하며 입력 레이어로부터 신호를 받아 특성을 추출하여 출력층으로 전달한다. 출력 레이어(output layer)는 적어도 하나의 은닉 레이어로부터 신호를 받아 외부로 출력한다. 뉴런 간의 입력신호는 0에서 1 사이의 값을 갖는 각각의 연결강도와 곱해진 후 합산되며 이 합이 뉴런의 임계치보다 크면 뉴런이 활성화되어 활성화 함수를 통하여 출력 값으로 구현된다.
한편, 보다 높은 인공지능을 구현하기 위하여, 인공 신경망의 은닉 레이어의 개수를 늘린 것을 심층 신경망(Deep Neural Network, DNN)이라고 한다.
DNN에는 여러 종류가 있으나, 컨볼루션 신경망(Convolutional Neural Network, CNN)은 입력 데이터의 특징들을 추출하고, 특징들의 패턴을 파악하기에 용이한 것으로 알려져 있다.
컨볼루션 신경망(CNN)은 인간 뇌의 시각 피질에서 영상을 처리하는 것과 유사한 기능을 하는 신경망이다. 컨볼루션 신경망은 영상처리에 적합한 것으로 알려져 있다.
도 13을 참조하면, 컨볼루션 신경망은 컨볼루션 채널들과 풀링(pooling) 채널들이 반복되는 형태로 구성된다. 컨볼루션 신경망에서 대부분의 연산시간은 컨볼루션(수학 용어로서, 한국어로는 합성곱이라 한다) 동작이 차지한다. 컨볼루션 신경망은 행렬(Matrix) 형태의 커널(kernel)에 의해 각 채널의 영상의 특징을 추출하고, 풀링(Pooling)에 의해 이동이나 왜곡 등의 항상성을 제공하는 방식으로 사물을 인식한다. 각 채널에서는 입력 데이터와 커널의 컨볼루션(즉, 합성곱)으로 피처 맵(Feature Map)을 구한 후 ReLU(Rectified Linear Unit) 같은 활성함수를 적용하여 해당 채널의 활성화 맵을 생성한다. 이후 풀링이 적용될 수 있다. 패턴을 실제로 분류하는 신경망은 특징 추출 신경망의 후단에 위치하며, 완전 연결 레이어(Fully Connected Layer)라고 한다. 컨볼루션 신경망의 연산 처리에서 대부분의 연산은 합성곱 또는 행렬곱을 통해 수행된다. 이때 필요한 커널들을 메모리로부터 읽어 오는 빈도가 상당히 빈번하다. 이러한 컨볼루션 신경망 동작의 상당 부분은 각각의 채널에 대응되는 커널들을 메모리로부터 읽어오는 시간이 차지한다.
메모리는 복수의 메모리 셀로 이루어지며, 메모리의 각각의 메모리 셀은 고유한 메모리 주소를 가진다. 프로세서가 메모리에 저장된 커널 읽기 명령을 생성하면, 메모리의 주소에 대응되는 메모리 셀에 접근하기까지 여러 클럭(clock)의 지연시간(latency)이 발생될 수 있다.
인공지능 추론 능력이 발전됨에 따라, 인공지능 스피커, 스마트 폰, 스마트 냉장고, VR 장치, AR 장치, 인공지능 CCTV, 인공지능 로봇 청소기, 태블릿, 노트북 컴퓨터, 자율 주행 자동차, 2족 보행 로봇, 4족 보행 로봇, 산업용 로봇 등, 다양한 전자 장치들에 인공지능을 활용한 음향 인식, 음성 인식, 영상 인식, 객체 감지, 운전자 졸음 감지, 위험 순간 감지, 및 제스처 감지 등의 다양한 추론 서비스가 제공되고 있다.
최근 딥러닝 기술이 발달함에 따라 빅 데이터 기반의 학습을 통한 인공 신경망 추론 서비스의 성능이 발전하고 있다. 이러한 인공 신경망 추론 서비스는 인공 신경망에 방대한 양의 학습 데이터를 반복 학습 시키고, 학습된 인공신경망모델을 통해서 다양하고 복잡한 데이터들을 추론한다. 따라서, 인공 신경망 기술을 활용하여 다양한 서비스가 상술한 전자 장치들에게 제공되고 있다.
하지만, 인공 신경망을 활용하는 추론 서비스에게 요구되는 기능 및 정확도가 점점 증가함에 따라, 인공신경망모델의 데이터 크기, 연산량, 및 학습 데이터의 크기가 기하급수적으로 증가되고 있다. 따라서 이러한 인공신경망모델의 추론 연산을 감당할 수 있는 프로세서와 메모리의 요구 성능이 점차 높아지고 있으며, 빅 데이터를 용이하게 처리할 수 있는 클라우드 컴퓨팅(cloud computing) 기반의 서버에서 인공 신경망 추론 서비스가 활발하게 제공되고 있다.
본 개시의 발명자는, 인공신경망모델 기술을 활용하여 엣지 컴퓨팅(edge computing)에 활용되는 다양한 전자 장치들에 적용될 수 있는 신경망 프로세싱 유닛(NPU)에 대하여 연구하였다. 엣지 컴퓨팅은 컴퓨팅이 일어나는 가장자리, 주변부란 의미로, 데이터를 직접 생산하는 단말기나 단말기와 근접한 위치에 있는 다양한 전자 장치들을 의미하며, 엣지 컴퓨팅은 엣지 디바이스(edge device)로 지칭될 수 있다.
부연 설명하면, 클라우드 컴퓨팅 시스템에서 데이터 센터의 서버와 떨어져 있으며, 클라우드 컴퓨팅 시스템의 끝단에 위치하며, 데이터 센터의 서버와 통신하는 컴퓨팅 시스템을 엣지 디바이스라고 정의할 수 있다. 엣지 디바이스는 자율 주행 로봇이나, 자율 주행 자동차처럼 방대한 양의 데이터를 1/1,000초 이내로 처리해야하는 것처럼, 즉각적이고 안정적으로 필요한 임무를 수행할 때 활용될 수도 있으며, 엣지 디바이스가 적용될 수 있는 분야가 급격하게 증가하고 있다.
본 개시의 발명자는, 인공신경망모델 기술을 활용하여 저전력 저비용으로 엣지 디바이스가 적용될 수 있는 다양한 전자 장치들에게 특화된 추론 기능을 제공하고자 하였다.
본 개시의 발명자는, 다양한 전자 장치들 각각의 하드웨어의 성능이 서로 상이하고, 요구되는 추론 기능의 성능 및 특징 또한 서로 상이 하기 때문에, 각각의 전자 장치들에 적용될 수 있는 인공 신경망 기술도 각각의 전자 장치들의 특성을 고려하여 최적화 되어야 한다는 것을 인식하였다.
따라서, 본 개시의 발명자는, 다양한 전자 장치들 각각에 최적화될 수 있는 독립형 저전력 저비용 신경망 프로세싱 유닛을 개발하고자 다양한 연구 및 개발을 하여 왔다.
먼저, 본 개시의 발명자는, 각각의 전자 장치들에 내재되어 독립적으로 작동할 수 있는 인공 신경망 추론 기술을 최적화하기 위해서, 추론에 최적화된 프로세싱 엘리먼트들이 구현된 독립형 신경망 프로세싱 유닛 개발이 필요하다고 인식하였다.
즉, 본 개시의 발명자는, 다양한 전자 장치들에 내장될 수 있는 중앙처리장치(CPU)는 직렬 연산에 최적화되어 있고, 방대한 데이터를 병렬로 처리하는 인공 신경망 연산 방식에 적합하지 않아, 인공신경망모델의 추론 속도가 느려 지고 전력이 많이 소비되는 문제가 있으며, 인공신경망모델 추론 이외에 다양한 작업들을 수행해야 하기 때문에, 인공신경망모델 추론 연산을 안정적으로 실시간으로 제공하는데 문제가 있다는 사실을 인식하였다.
즉, 본 개시의 발명자는, 다양한 전자 장치들에 내장될 수 있는 그래픽처리장치(GPU)는 영상 처리에 최적화되어 있고, 중앙처리장치보다는 상대적으로 인공신경망모델 추론에 유리하지만, 인공신경망모델 추론에 최적화되어 있지 않고, 소비 전력 소모가 너무 큰 문제가 있으며, 제조비용이 비싸기 때문에, 다양한 전자 장치들에 적용하기에 비용적인 문제가 있다는 사실을 인식하였다.
즉, 최적화된 인공 신경망 추론용 프로세싱 엘리먼트가 구현된 신경망 프로세싱 유닛 없이 인공신경망모델 추론 서비스를 다양한 전자 장치들에 제공할 경우, 소비 전력, 발열, 메모리, 연산 처리 속도, 및 비용 측면에서 비효율 적인 문제가 존재한다.
따라서, 본 개시의 발명자는, 대부분의 전자 장치들이 소비 전력, 발열, 메모리, 연산 처리 속도, 및 비용 등의 문제 때문에, 인공신경망모델 추론 기술을 내재화 하는데 어려움을 겪는다는 사실을 인식하였고, 이를 개선할 수 있는 신경망 프로세싱 유닛의 개발이 필요하다고 인식하였다.
이에 본 개시가 해결하고자 하는 과제는, 상술한 문제점들을 개선할 수 있는 독립형 저전력 저비용 신경망 프로세싱 유닛을 제공하는 것이다.
또한, 본 개시의 발명자는, 사람의 뇌를 모방한 뉴로모픽(neuromorphic) 아날로그 인공 신경망 집적회로에 대하여 연구 하였다. 이러한 뉴로모픽 집적회로는 NOR 로직으로 구성된 아날로그 곱셈기 배열로, 2개의 단순한 트랜지스터로 구현될 수 있는 장점이 있고, 저전력으로 아날로그 전압을 활용해서 추론 기능을 제공할 수 있는 장점이 있으나, 다양한 노이즈에 취약한 문제가 있었다. 즉, 본 개시의 발명자는, 뉴로모픽 직접회로는 온도, 습도, 주변의 회로의 전자파장해(EMI), 커플링 효과, 기생 캐패시턴스 등에 영향을 받아서, 아날로그 인공 신경망 추론 결과가 부정확해지는 문제점을 인식하였다. 또한, 아날로그 곱셈기 배열 각각의 출력 채널에 아날로그 신호를 디지털 신호로 변환하는 아날로그-디지털 변환회로(ADC)가 제공되어야 한다는 사실을 인식 했으며, 이러한 아날로그-디지털 변환회로가 차지하는 면적이 상당히 크기 때문에, 아날로그-디지털 변환회로가 내장될 때, 콤팩트한 뉴로모픽 집적회로를 개발하는 것이 상당히 어렵다는 사실도 인식하였다.
이에 본 개시가 해결하고자 하는 다른 과제는, 상술한 문제점들을 개선할 수 있는, 아날로그가 아닌, 디지털로 구현된 프로세싱 엘리먼트들을 포함하는 독립형 저전력 저비용 신경망 프로세싱 유닛을 제공하는 것이다.
다음으로, 본 개시의 발명자는, 적어도 하나 이상의 특화된 인공신경망모델 추론을 효율적으로 수행할 수 있는 독립형 저전력 저비용 신경망 프로세싱 유닛이 필요하다는 사실을 인식하였다.
즉, 본 개시의 발명자는, 상술한 하나의 특정 기능에 특화된 인공신경망모델 추론 연산 뿐만 아니라, 서로 다른 기능에 특화된 서로 다른 복수의 인공신경망모델 추론 연산들을 효율적으로 수행할 수 있도록 구성된 독립형 저전력 저비용 신경망 프로세싱 유닛이 필요하다는 사실도 인식하였다. 즉, 신경망 프로세싱 유닛의 한정된 자원을 최적화 시키고, 소비전력을 최소화 하는 것이 필요하다고 인식하였다.
예를 들면, 다양한 전자 장치들에 내재화 할 수 있는 신경망 프로세싱 유닛의 프로세싱 엘리먼트들 중 일부를 제1 인공신경망모델의 추론 연산에 할당하고 또 다른 일부를 제2 인공신경망모델의 추론 연산에 할당하고, 나머지를 동작 정지 시키는 방식으로, 신경망 프로세싱 유닛의 자원을 최적화하고 동시에 소비전력을 최소화 하는 것이 필요하다고 인식하였다. 즉, 신경망 프로세싱 유닛이 음성 인식 추론 및 제스처 추론을 수행하거나, 또는 복수개의 카메라에서 입력되는 서로 다른 영상 데이터들을 추론할 수 있도록 구성된 신경망 프로세싱 유닛이 필요하다는 사실도 인식하였다.
이에 본 개시가 해결하고자 하는 또 다른 과제는, 상술한 문제점들을 개선할 수 있는 적어도 하나 이상의 특화된 인공신경망모델 추론이 가능하고, 소비 전력을 저감할 수 있는 신경망 프로세싱 유닛을 제공하는 것이다.
더 나아가서, 본 개시의 발명자는, 독립형 저전력 저비용 신경망 프로세싱 유닛의 구현을 위해서 학습된 인공신경망모델의 데이터 크기를 최소화 해야 한다는 사실을 인식하였다.
예를 들면, 각각의 학습된 인공신경망모델은 각각의 특화된 추론 기능을 제공할 수 있다. 이때, 각각의 학습된 인공신경망모델은 상당한 양의 가중치 데이터, 입력 데이터, 및 연산 값을 가질 수 있다. 연산 값은 노드 데이터 또는 특징 맵(feature map) 데이터로 지칭될 수 있다.
구체적인 예를 들면, 본 개시의 발명자가 30개의 특정 키워드를 음성 인식하도록 학습시킨 VGG16 딥러닝 아키텍처를 가지는 인공신경망모델의 가중치 데이터의 크기는 550MB 였다. 다른 예를 들면, 자율 주행차량의 자율 주행을 위해서 1시간 동안 처리되어야 하는 자율 주행용 카메라들의 영상 데이터는 3TByte 이상일 수 있다. 이러한 경우 방대한 양의 인공신경망모델 추론 연산을 위해서 신경망 프로세싱 유닛의 메모리 크기 및 프로세싱 엘리먼트의 개수가 기하급수적으로 증가되어야 한다는 문제를 본 개시의 발명자는 인식하였다. 또한, 인공신경망모델의 가중치 데이터 크기가 증가하면, 반도체 직접도의 한계 때문에, 신경망 프로세싱 유닛의 물리적인 크기가 커지고, 프로세싱 엘리먼트의 개수 및 메모리의 크기 증가가 요구 되어, 소비 전력 증가, 발열 증가 및 연산 속도 저하가 발생되는 문제를 본 개시의 발명자는 인식 하였다.
더 나아가서, 본 개시의 발명자는, 독립형 저전력 저비용 신경망 프로세싱 유닛의 구현을 위해서 복수의 프로세싱 엘리먼트들의 연산 비트(bit) 수가 조절될 수 있어야 한다는 사실을 인식하였다. 즉, 특정 인공신경망모델의 특정 레이어의 연산은 8-bit 연산일 수 있고, 다른 레이어의 연산은 2-bit 연산으로 설정되어, 연산량, 소비전력을 저감하면서 동시에 추론 정확도 저하를 최소화할 필요가 있다는 사실을 인식하였다.
이에 본 개시가 해결하고자 하는 또 다른 과제는, 상술한 문제점들을 개선할 수 있는 경량화 된 인공신경망모델을 제공하고, 경량화 된 인공신경망모델을 연산할 수 있도록 구성된, 신경망 프로세싱 유닛 및 그 동작 방법을 제공하는 것이다.
이에, 본 개시가 해결하고자 하는 또 다른 과제는, 소정의 정확도 이상으로 특정 기능을 추론할 수 있도록, 인공신경망모델을 최적의 조건으로 경량화 하여, 최소한의 전력 및 메모리를 사용하도록 구성된, 신경망 프로세싱 유닛 및 그 동작 방법을 제공하는 것이다.
이에 본 개시가 해결하고자 하는 또 다른 과제는, 학습된 인공신경망모델의 각각의 레이어 별로 추론의 정확도, 연산량, 메모리, 및 소비 전력 중 적어도 하나를 고려하여, 적어도 하나의 레이어의 가중치 데이터, 입력 데이터, 또는 연산 값의 비트 수가 경량화 된 인공신경망모델을 포함하는, 신경망 프로세싱 유닛 및 그 동작 방법을 제공하는 것이다.
이에 본 개시가 해결하고자 하는 또 다른 과제는, 학습된 인공신경망모델의 각각의 레이어 별로 추론의 정확도, 연산량, 메모리, 및 소비 전력 중 적어도 하나를 고려할 때, 각 조건들 중에서 상대적인 우선 순위를 설정하여, 적어도 하나의 레이어의 가중치 데이터, 입력 데이터, 또는 연산 값의 비트 수가 경량화 된 인공신경망모델을 포함하는, 신경망 프로세싱 유닛을 제공하는 것이다.
이에, 본 개시가 해결하고자 하는 또 다른 과제는, 신경망 프로세싱 유닛의 목표 소비 전력을 설정하여, 신경망 프로세싱 유닛의 소비 전력이 목표 소비 전력 이하가 되도록 인공신경망모델을 경량화 하는 방법을 제공하는 것이다.
이에, 본 개시가 해결하고자 하는 또 다른 과제는, 신경망 프로세싱 유닛의 목표 추론 속도를 설정하여, 신경망 프로세싱 유닛의 추론 속도가 목표 추론 속도 이상이 되도록 인공신경망모델을 경량화 하는 방법을 제공하는 것이다.
이에, 본 개시가 해결하고자 하는 또 다른 과제는, 신경망 프로세싱 유닛의 메모리 크기를 설정하여, 신경망 프로세싱 유닛의 추론 시 메모리 사용이 효율적일 수 있는 인공신경망모델을 경량화 하는 방법을 제공하는 것이다.
이에, 본 개시가 해결하고자 하는 또 다른 과제는, 신경망 프로세싱 유닛의 1회 추론 연산량 최대치(maximum MAC limit for one inference)를 설정하여, 신경망 프로세싱 유닛이 추론 연산 수행 시 연산량이 저감되도록 인공신경망모델을 경량화 하는 방법을 제공하는 것이다.
이에 본 개시가 해결하고자 하는 또 다른 과제는, 신경망 프로세싱 유닛에 적용된 인공신경망모델의 각각의 레이어 특성을 고려하여 복수의 프로세싱 엘리먼트들의 값들의 비트 수를 각 레이어 별로 최적화 하도록 구성된 신경망 프로세싱 유닛을 제공하는 것이다.
이에 본 개시가 해결하고자 하는 또 다른 과제는, 복수의 프로세싱 엘리먼트들의 값들의 비트 수가 경량화 된 인공신경망모델의 가중치 데이터의 비트 수와 같거나 이하가 되도록 구성된, 신경망 프로세싱 유닛을 제공하는 것이다.
다음으로, 본 개시의 발명자는, 다양한 전자 장치들에게 언제나 동작 하도록 구성된 클라우드 방식의 인공지능 추론 인식 기능을 제공할 때, 다양한 문제점이 발생한다는 사실을 인식 하였다.
예를 들면, 자동차에 적용되는 운전자 음성 인식 서비스가 클라우드 방식으로 제공될 때, 클라우드 서버 상태에 따라서 응답 속도가 느려 질 수 있으며, 통신망의 상태에 따라서, 서비스가 제공되지 않는 문제가 발생될 수 있다.
예를 들면, 전자 장치에 클라우드 방식의 음성 인식 기능만 제공될 경우, 전자 장치는 통신망을 통해서 클라우드 방식의 인공지능 음성 인식 서비스와 연결되어 음성 인식 기능을 제공 받을 수 있다. 즉, 전자 장치에 클라우드 기반의 음성 인식 추론 기능만 상시 제공할 경우, 전자 장치는 빅 데이터 기반의 클라우드 인공지능 음성 인식 서비스와 실시간으로 연결되어야 한다. 이러한 연결 방식은 비효율적이다. 부연 설명하면, 24시간 동안 전자 장치가 통신망을 통해 전달하는 거의 대부분의 음향 데이터는 주변 노이즈일 수 있다. 그리고 이렇게 전달되는 노이즈 데이터는 통신망의 트래픽을 증가시키고, 불필요한 전력을 낭비하고, 불필요한 쿼리(query)를 서버에 전달하여 클라우드 인공지능 음성 인식 서비스의 응답 속도를 지연 시키는 문제의 원인이 될 수 있다. 특히 음성 인식의 응답속도가 지연될 경우, 사용자의 음성 인식 만족도가 떨어질 수 있다. 특히, 배터리로 작동하는 전자 장치는 불필요한 소비 전력 때문에 전자 장치의 동작 시간이 현저히 저감될 수 있는 문제도 가지고 있다.
이에, 본 개시가 해결하고자 하는 또 다른 과제는, 신경망 프로세싱 유닛이 사용자의 음성 명령 또는 키워드를 인식하고, 인식된 음성 명령 또는 키워드에 따라 전자 장치의 기능을 제어하거나 또는 대응되는 전자 장치의 특정 구성 요소들의 전원을 제어하여, 불필요하게 낭비되는 전자 장치의 소비 전력을 제어할 수 있는, 신경망 프로세싱 유닛 및 이에 대응되는 인공신경망모델을 제공하는 것이다.
이에, 본 개시가 해결하고자 하는 또 다른 과제는, 신경망 프로세싱 유닛의 처리 능력을 고려해서, 경량화 된 AI 음성 인식모델이 내재된 저전력 저비용의 신경망 프로세싱 유닛을 제공하는 것이다.
이에, 본 개시가 해결하고자 하는 또 다른 과제는, 신경망 프로세싱 유닛의 처리 능력을 고려해서, 경량화 된 AI 음향 인식모델이 내재된 저전력 저비용의 신경망 프로세싱 유닛을 제공하는 것이다.
이에, 본 개시가 해결하고자 하는 또 다른 과제는, 신경망 프로세싱 유닛의 처리 능력을 고려해서, 경량화 된 AI 키워드 인식모델이 내재된 저전력 저비용의 신경망 프로세싱 유닛을 제공하는 것이다.
이에, 본 개시가 해결하고자 하는 또 다른 과제는, 신경망 프로세싱 유닛의 처리 능력을 고려해서, 경량화 된 AI 이벤트 인식모델이 내재된 저전력 저비용의 신경망 프로세싱 유닛을 제공하는 것이다.
이에, 본 개시가 해결하고자 하는 또 다른 과제는, 신경망 프로세싱 유닛의 처리 능력을 고려해서, 경량화 된 AI 음성 인식모델, AI 음향 인식모델, AI 키워드 인식모델, 및 AI 이벤트 인식모델 중 복수개의 인공신경망모델들이 내재된 신경망 프로세싱 유닛을 제공하고, 신경망 프로세싱 유닛은 적어도 복수개의 인공신경망모델을 동시에 추론하도록, 신경망 프로세싱 유닛의 프로세싱 엘리먼트 및 메모리 자원을 배분하는 방법을 제공하는 것이다.
이에, 본 개시가 해결하고자 하는 또 다른 과제는, 경량화 된 AI 키워드 인식모델 및 이를 추론하는 신경망 프로세싱 유닛이 내재된 전자 장치를 제공하고, 인공신경망모델의 키워드 인식에 따라, 전자 장치의 전력 모드를 제어하고, 통신망을 통해서 전자 장치를 클라우드 인공지능 음성 인식 서비스와 연결시켜서, 불필요한 통신망의 트래픽을 대폭 저감하고, 불필요한 소비 전력을 저감하고, 불필요한 쿼리를 저감하는 것이다.
다음으로, 본 개시의 발명자는, 키워드 인식의 정확도를 높이기 위해서, 컨벌루션 신경망(convolutional neural network)에 대하여 주목하였다. 컨벌루션 신경망은 음성 인식에 활용되는 리커런트 신경망(recurrent neural network) 또는 LSTM 신경망과 비교할 때, 단어의 연속성 추론 능력은 상대적으로 부족하나, 이미지 유사성을 추론하는데 상대적으로 우수한 정확도를 제공할 수 있는 장점이 있다. 더 나아가서, 본 개시의 발명자는 키워드의 음성 데이터를 이미지화 할 수 있는 기술에 대하여 연구하였고, 구체적으로, 특정 키워드에 대응되는 음향 데이터를 2차원 이미지로 변환 시키는 기술에 대하여 연구하였다.
이에 본 개시가 해결하고자 하는 또 다른 과제는, 이미지화 된 키워드를 인식하도록 학습된 AI 키워드 이미지 인식모델이 내재된 신경망 프로세싱 유닛을 제공하는 것이다.
다음으로, 본 개시의 발명자는, 키워드 인식의 정확도를 높이기 위해서, AI 키워드 인식모델의 학습 데이터를 AI 키워드 인식모델의 학습 특성을 고려하여 생성할 때 AI 키워드 인식모델의 인식률이 향상될 수 있다는 사실을 인식 하였다.
이에 본 개시가 해결하고자 하는 또 다른 과제는, 이미지화 된 키워드를 인식하도록 학습된 AI 키워드 이미지 인식모델의 학습 데이터를 제공하는 것이다.
본 개시의 과제들은 이상에서 언급한 과제들로 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
본 개시의 일 예시에 따른 신경망 프로세싱 유닛은 인공신경망모델을 처리하는 프로세싱 엘리먼트 어레이 및 상기 인공신경망모델의 적어도 일부 데이터를 저장하도록 구성된 NPU 메모리 시스템을 포함하고, 프로세싱 엘리먼트는 복수의 프로세싱 엘리먼트들 및 복수의 레지스터 파일들을 포함하고,복수의 레지스터 파일들 각각은 상기 복수의 프로세싱 엘리먼트들 각각에 대응될 수 있다.
복수의 레지스터 파일들 각각의 최대 전송 속도는 상기 NPU 메모리 시스템의 최대 전송 속도보다 더 빠를 수 있다.
복수의 레지스터 파일들 각각의 메모리 크기는 상기 NPU 메모리 시스템의 메모리 크기보다 더 작을 수 있다.
복수의 레지스터 파일들 각각의 동일 전송 속도 기준 전력 소비량은 상기 NPU 메모리 시스템의 동일 전송 속도 기준 전력 소비량보다 더 작을 수 있다.
복수의 레지스터 파일들의 개수는 상기 인공신경망모델의 데이터 크기, 동작 속도 및 소비 전력에 기초하여 결정될 수 있다.
복수의 레지스터 파일들 각각은 상기 복수의 프로세싱 엘리먼트들과 직접 연결된 정적 메모리 유닛일 수 있다.
복수의 레지스터 파일들 각각은 대응되는 프로세싱 엘리먼트의 연산 값을 저장할 수 있다.
복수의 레지스터 파일들 각각은 상기 NPU 메모리 시스템으로부터 가중치 데이터 및 입력 데이터를 제공받을 수 있다.
NPU 메모리 시스템은, 제1 스케줄링의 제1 레이어의 연산 값이 저장된 메모리 어드레스 값을 상기 제1 스케줄링의 다음 스케줄링인 제2 스케줄링의 제2 레이어의 입력 데이터에 대응되는 메모리 어드레스 값으로 재사용 하도록 구성될 수 있다.
복수의 프로세싱 엘리먼트들 각각은 곱셈기, 가산기 및 누산기를 포함하고,곱셈기는 제1 입력부 및 제2 입력부를 포함하고, 곱셈기는 상기 제1 입력부 및 제2 입력부 중 하나의 입력부에 0이 입력될 때 제로 스키핑(zero skipping) 방식으로 동작하도록 구성될 수 있다.
인공신경망모델은 복수의 레이어를 포함하고, 복수의 레이어 각각은 가중치 데이터을 포함하고, 가중치 데이터들은 신경망 프로세싱 유닛의 하드웨어 특성 데이터에 기초하여 프루닝 된 것을 특징으로 할 수 있다.
인공신경망모델은 가중치 데이터를 포함하고, 가중치 데이터 중 데이터 크기가 상대적으로 더 큰 적어도 하나 이상의 가중치 데이터가 신경망 프로세싱 유닛의 하드웨어 특성 데이터에 기초한 최적화 시스템을 통해서 우선적으로 프루닝 된 것을 특징으로 할 수 있다.
복수의 레지스터 파일들 및 상기 NPU 메모리 시스템은, 컴파일러에 의해서 상기 인공신경망모델이 상기 신경망 프로세싱 유닛에서 동작하도록 변환될 때 결정된 프로세싱 순서 정보에 기초하여 제어될 수 있다.
복수의 프로세싱 엘리먼트들 각각은, 비트 양자화 유닛을 더 포함하도록 구성될 수 있다.
본 개시의 예시들에 따르면, 독립형 저전력 저비용 신경망 프로세싱 유닛을 제공할 수 있는 효과가 있다.
본 개시의 예시들에 따르면, 신경망 프로세싱 유닛을 제공함으로 써 엣지 디바이스의 소비 전력, 발열, 메모리 크기, 연산 처리 속도, 및 제조 비용 등을 저감할 수 있는 효과가 있다.
본 개시의 예시들에 따르면, 디지털로 구현된 프로세싱 엘리먼트들을 포함하는 독립형 저전력 저비용 신경망 프로세싱 유닛을 제공할 수 있는 효과가 있다.
본 개시에 따른 효과는 이상에서 예시된 내용에 의해 제한되지 않으며, 더욱 다양한 효과들이 본 명세서 내에 포함되어 있다.
도 1은 본 개시의 예시들에 적용될 수 있는 신경망 프로세싱 유닛을 포함하는 다양하게 변형 실시 될 수 있는 엣지 디바이스를 설명하는 개략적인 개념도이다.
도 2는 본 개시의 일 예시에 따른 신경망 프로세싱 유닛을 설명하는 개략적인 개념도이다.
도 3은 본 개시의 일 예시에 적용될 수 있는 프로세싱 엘리먼트 어레이 중 하나의 프로세싱 엘리먼트를 설명하는 개략적인 개념도이다.
도 4는 신경망 프로세싱 유닛의 단위 동작 당 에너지 소모를 개략적으로 설명하는 표이다.
도 5는 본 개시의 예시들에 적용될 수 있는 예시적인 인공신경망모델을 설명하는 개략적인 개념도이다.
도 6은 본 개시의 다른 예시에 따른 신경망 프로세싱 유닛을 설명하는 개략적인 개념도이다.
도 7은 본 개시의 또 다른 예시에 따른 신경망 프로세싱 유닛을 설명하는 개략적인 개념도이다.
도 8은 본 개시의 또 다른 예시에 따른 신경망 프로세싱 유닛의 예시적인 레지스터 파일의 메모리 크기와 SRAM으로 구성된 예시적인 NPU 메모리 시스템의 메모리 크기에 따른 최대 전송 속도의 특성을 설명하는 개략적인 개념도이다.
도 9는 본 개시의 또 다른 예시에 따른 신경망 프로세싱 유닛의 예시적인 레지스터 파일의 메모리 크기와 SRAM으로 구성된 예시적인 NPU 메모리 시스템의 메모리 크기에 따른 동일 전송 속도 기준 소비 전력 특성을 설명하는 개략적인 개념도이다.
도 10은 본 개시의 또 다른 예시에 따른 신경망 프로세싱 유닛을 설명하는 개략적인 개념도이다.
도 11은 본 개시의 일 예시에 따른 신경망 프로세싱 유닛에서 처리 가능한 인공신경망모델을 최적화 할 수 있는 최적화 시스템을 설명하는 개략적인 개념도이다.
도 12는 본 개시의 또 다른 예시에 따른 엣지 디바이스를 설명하는 개략적인 개념도이다.
본 개시의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 다양한 예시들을 참조하면 명확해질 것이다. 그러나 본 개시는 이하에서 설명되는 예시들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 개시의 예시들은 본 개시가 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다.
본 개시에 대한 상세한 설명은, 본 개시가 실시될 수 있는 특정 예시로서 설명의 편의를 위해 도면을 참조하여 설명할 수 있다. 본 개시의 다양한 예시들의 구성요소들이 서로 상이하더라도 특정 예시에 기재되어 있는 제조 방법, 동작 방법, 알고리즘, 형상, 공정, 구조 및 특성은 다른 예시와 결합하거나 또는 포함될 수 있다. 또한, 각각의 개시된 예시 내의 개별 구성요소의 위치 또는 배치는 본 개시의 정신 및 범위를 벗어나지 않으면서 변경될 수 있다. 본 개시의 여러 예시들의 각각 특징들이 부분적으로 또는 전체적으로 서로 결합 또는 조합 가능하며, 당업자가 충분히 이해할 수 있듯이 기술적으로 다양한 연동 및 작동이 가능하며, 각 예시들이 서로에 대하여 독립적으로 실시 가능할 수도 있고 연관 관계로 함께 실시할 수도 있다.
본 개시의 예시들을 설명하기 위한 도면에 개시된 형상, 크기, 비율, 각도, 개수 등은 예시적인 것이므로 본 개시는 도면을 참조하되 이에 한정되지 않는다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성요소를 지칭할 수 있다. 또한, 본 개시를 설명함에 있어서, 관련된 공지 기술에 대한 구체적인 설명이 본 개시의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명은 생략할 수 있다. 본 명세서 상에서 언급된 '포함한다', '갖는다', '이루어진다' 등이 사용되는 경우 '~만'이 사용되지 않는 이상 다른 구성요소가 추가될 수 있다. 구성요소를 단수로 표현한 경우에 특별히 명시적인 기재 사항이 없는 한 복수를 포함하는 경우를 포함한다. 구성요소를 해석함에 있어서, 별도의 명시적 기재가 없더라도 오차 범위를 포함하는 것으로 해석한다. 위치 관계에 대한 설명일 경우, 예를 들면, '~상에', '~상부에', '~하부에', '~옆에', '~인접하여' 등으로 두 구성요소의 위치 관계가 설명되는 경우, '바로' 또는 '직접'이 사용되지 않는 이상 두 구성요소 사이에 하나 이상의 다른 구성요소가 위치할 수도 있다. 소자 또는 층이 다른 소자 또는 층 "위 (on)"로 지칭되는 것은 다른 소자 바로 위에 또는 중간에 다른 층 또는 다른 소자를 개재한 경우를 모두 포함한다
도 1은 본 개시의 예시들에 적용될 수 있는 신경망 프로세싱 유닛을 포함하는 다양하게 변형 실시 될 수 있는 엣지 디바이스를 설명하는 개략적인 개념도이다.
도 1을 참조하면, 엣지 디바이스(1000)는 다양하게 변형 실시될 수 있는 다양한 전자 장치들 중 하나의 예시를 도시하고 있다.
엣지 디바이스(1000)는 인공 신경망을 포함하는, 예를 들면, 휴대폰, 스마트 폰, 인공지능 스피커, 디지털 방송 단말기, 네비게이션, 웨어러블 디바이스, 스마트 시계, 스마트 냉장고, 스마트 TV, 디지털 사이니지, VR 장치, AR 장치, 인공지능 CCTV, 인공지능 로봇 청소기, 태블릿, 노트북 컴퓨터, 자율 주행 자동차, 자율 주행 드론, 자율 주행 2족 보행 로봇, 자율 주행 4족 보행 로봇, 자율 주행 모빌리티, 인공지능 로봇, PDA(personal digital assistance), 및 PMP(personal multimedia player) 등을 포함할 수 있다.
엣지 디바이스(1000)는 신경망 프로세싱 유닛(100)을 포함하고, 신경망 프로세싱 유닛(100)에 의해서 추론되는 인공신경망모델을 활용하여 엣지 컴퓨팅에 활용될 수 있는 다양한 전자 장치들을 의미할 수 있다. 여기서 엣지 컴퓨팅은 컴퓨팅이 일어나는 가장자리, 주변부란 의미로, 데이터를 직접 생산하는 단말기나 단말기와 근접한 위치에 있는 다양한 전자 장치들을 의미할 수 있다. 신경망 프로세싱 유닛(100)은 neural processing unit(NPU)이라고 지칭되는 것도 가능하다.
다만, 본 개시의 예시들에 따른 엣지 디바이스(1000)는 상술한 전자 장치 들에 제한되지 않는다.
도 1은 엣지 디바이스(1000)의 하나의 예시일 뿐이며, 엣지 디바이스(1000)가 포함할 수 있는 다양한 구성요소들을 도시하고 있다. 단, 본 개시에 따른 예시들은 이에 제한되지 않으며, 각각의 구성요소는 예시의 목적 및 구성에 따라서 선택적으로 포함하거나 배제할 수 있다. 즉, 도 1에 도시된 구성요소들 중 일부는 경우에 따라서 필수적인 구성요소가 아닐 수 있으며, 각각의 예시는 최적화 관점에서 도 1에 도시된 구성요소들 중 일부를 포함하거나 또는 포함하지 않는 것이 바람직할 수 있다.
엣지 디바이스(1000)는 적어도 신경망 프로세싱 유닛(100)을 포함하고, 무선 통신부(1010), 입력부(1020), 센싱부(1030), 출력부(1040), 인터페이스부(1050), 시스템 버스(1060), 메인 메모리 시스템(1070), 중앙 처리 장치(1080), 및 전원 제어부(1090) 중 적어도 일부를 선택적으로 더 포함하도록 구성될 수 있다. 또한 엣지 디바이스(1000)는 무선 통신부(1010)를 통해서 클라우드 인공지능 서비스(1100)와 통신하여 구성될 수도 있다.
시스템 버스(1060)는 엣지 디바이스(1000)의 각각의 구성요소들의 데이터 통신을 제어하도록 구성된다. 즉, 시스템 버스(1060)는 엣지 디바이스(1000)의 교통 시스템이다. 시스템 버스(1060)는 컴퓨터 버스라고 지칭될 수 있다. 엣지 디바이스(1000)의 모든 구성요소는 고유의 어드레스를 가질 수 있으며, 시스템 버스(1060)는 어드레스를 통해서 각각의 구성요소들을 연결시킬 수 있다. 시스템 버스(1060)는 예를 들면, 3가지 종류의 데이터를 처리할 수 있다. 첫째, 시스템 버스(1060)는 데이터 전송을 할 때 데이터가 메인 메모리 시스템(1070)에 저장된 어드레스를 처리할 수 있다. 둘째, 시스템 버스(1060)는 해당 어드레스에 저장된 연산 결과 등 의미 있는 데이터를 처리할 수 있다. 셋째, 시스템 버스(1060)는 어드레스 데이터와 데이터를 어떻게 처리하고, 언제 어디로 데이터가 이동해야 하는지 등의 데이터 흐름을 처리할 수 있다. 단, 본 개시에 따른 예시들은 이에 제한되지 않는다. 중앙 처리 장치(1080)에서 생성되는 다양한 제어 신호는 시스템 버스(1060)를 통해서 대응되는 구성요소에 전달될 수 있다.
무선 통신부(1010)는 엣지 디바이스(1000)와 무선 통신 시스템 사이, 엣지 디바이스(1000)와 다른 엣지 디바이스 사이, 또는 엣지 디바이스(1000)와 클라우드 인공지능 서비스(1100) 사이의 무선 통신을 가능하게 하는 하나 이상의 통신 모듈을 포함할 수 있다.
예를 들면, 무선 통신부(1010)는 이동통신 모듈(1011), 무선 인터넷 모듈(1012), 근거리 통신 모듈(1013), 위치정보 모듈(1014) 중 적어도 하나를 포함할 수 있다.
무선 통신부(1010)의 이동통신 모듈(1011)은 이동통신을 위한 기술표준들 또는 통신방식에 따라 구축된 이동 통신망 상에서 기지국, 외부의 단말, 서버 중 적어도 하나와 무선 데이터를 송수신을 위한 모듈을 의미한다. 이동통신 모듈(1011)은 엣지 디바이스(1000)에 내장되거나 외장 될 수 있다. 기술표준들은 예를 들면, GSM(Global System for Mobile communication), CDMA(Code Division Multi Access), CDMA2000(Code Division Multi Access 2000), EVDO(Enhanced Voice-Data Optimized or Enhanced Voice-Data Only), WCDMA(Wideband CDMA), HSDPA(High Speed Downlink Packet Access), HSUPA(High Speed Uplink Packet Access), LTE(Long Term Evolution), LTE-A(Long Term Evolution-Advanced), 5G(Fifth Generation)등이 있다. 단, 본 개시에 따른 예시들은 이에 제한되지 않는다.
무선 통신부(1010)의 무선 인터넷 모듈(1012)은 무선 인터넷 접속을 위한 모듈을 의미 한다. 무선 인터넷 모듈(1012)은 엣지 디바이스(1000)에 내장되거나 외장 될 수 있다. 무선 인터넷 모듈(1012)은 무선 인터넷 기술들에 따른 통신망에서 무선 데이터를 송수신하도록 이루어진다. 무선 인터넷 기술들은, 예를 들면, WLAN(Wireless LAN), Wi-Fi(Wireless-Fidelity), Wi-Fi(Wireless Fidelity) Direct, DLNA(Digital Living Network Alliance), WiBro(Wireless Broadband), WiMAX(World Interoperability for Microwave Access), HSDPA(High Speed Downlink Packet Access), HSUPA(High Speed Uplink Packet Access), LTE(Long Term Evolution), LTE-A(Long Term Evolution-Advanced), 5G(Fifth Generation) 등이 있다. 단, 본 개시에 따른 예시들은 이에 제한되지 않는다. 부연 설명하면, 이동통신망을 통해 무선인터넷 접속을 수행하는 무선 인터넷 모듈(1012)은 이동통신 모듈(1011)의 일종으로 이해될 수도 있다.
무선 통신부(1010)의 근거리 통신 모듈(1013)은 근거리 통신(Short range communication)을 위한 모듈을 의미한다. 근거리 통신 기술들은, 예를 들면, 블루투스(Bluetooth™), RFID(Radio Frequency Identification), 적외선 통신(Infrared Data Association; IrDA), UWB(Ultra Wideband), ZigBee, NFC(Near Field Communication), Wi-Fi(Wireless-Fidelity), Wi-Fi Direct, Wireless USB(Wireless Universal Serial Bus) 등이 있다. 단, 본 개시에 따른 예시들은 이에 제한되지 않는다. 이러한, 근거리 통신 모듈(1013)은, 근거리 무선 통신망(Wireless Area Networks)을 통해 엣지 디바이스(1000)와 무선 통신 시스템 사이, 엣지 디바이스(1000)와 연동되는 다른 엣지 디바이스 사이, 또는 엣지 디바이스(1000)와 별도의 네트워크 사이의 무선 통신을 지원할 수 있다. 예를 들면, 다른 엣지 디바이스는 본 개시에 따른 엣지 디바이스(1000)와 데이터를 상호 교환하는 것이 가능한 스마트 워치(smartwatch), 스마트 글래스(smart glass), HMD(head mounted display) 등의 웨어러블 디바이스(wearable device)가 될 수 있다. 단, 본 개시에 따른 예시들은 이에 제한되지 않는다.
무선 통신부(1010)의 위치정보 모듈(1014)은 엣지 디바이스(1000)의 위치를 획득하기 위한 모듈을 의미한다. 위치정보 기술들은, 예를 들면, GPS(Global Positioning System) 모듈 또는 Wi-Fi(Wireless Fidelity) 모듈 등이 있다. 예를 들어, 엣지 디바이스(1000)는 GPS모듈을 활용하면, GPS 위성에서 보내는 데이터를 이용하여 엣지 디바이스(1000)의 위치를 획득할 수 있다. 다른 예로서, 엣지 디바이스(1000)는 Wi-Fi모듈을 활용하면, Wi-Fi모듈과 무선 데이터를 송신 또는 수신하는 무선AP(Wireless Access Point)의 데이터에 기반하여, 엣지 디바이스(1000)의 위치를 획득할 수 있다. 단, 본 개시에 따른 예시들은 이에 제한되지 않는다.
무선 통신부(1010)를 통해서, 엣지 디바이스(1000)는 클라우드 인공지능 서비스(1100)와 연결될 수 있으며, 엣지 디바이스(1000)는 다양한 형태의 인공지능 서비스를 클라우드 인공지능 서비스(1100)에 쿼리 형태로 요청할 수 있다.
예를 들면, 엣지 디바이스(1000)는 “오늘의 날씨는 어때?” 라는 음성 데이터를 무선 통신부(1010)를 통해서 클라우드 인공지능 서비스(1100)에 전달하고, 클라우드 인공지능 서비스(1100)는 전달받은 음성 데이터의 추론 결과를 무선 통신부(1010)를 통해서 엣지 디바이스(1000)로 전달할 수 있다. 단, 본 개시에 따른 예시들은 이에 제한되지 않는다.
입력부(1020)는 엣지 디바이스(1000)에 입력되는 다양한 데이터 또는 데이터를 제공하는 다양한 구성 요소들을 포함할 수 있다, 입력부(1020)는 영상 데이터 입력을 위한 카메라(1021), 음향 데이터 입력을 위한 마이크로폰(1022), 사용자로부터 데이터를 입력 받기 위한 사용자 입력 모듈(1023), 거리를 감지하기 위한 근접 센서(1024), 주변 광량을 감지하기 위한 조도 센서(1025), 특정 주파수의 전파를 발사하여 물체를 감지하기 위한 레이더(1026), 및 레이저를 발사하여 물체를 감지하기 위한 라이다(1027) 등을 포함할 수 있다.
입력부(1020)는 영상 데이터, 음향 데이터, 사용자 입력 데이터, 거리 데이터 중 적어도 하나의 데이터 제공 기능을 수행하도록 구성될 수 있다.
입력부(1020)의 카메라(1021)는 신경망 프로세싱 유닛(100)에 의해서 추론되는 영상 처리, 제스처 인식, 객체 인식, 이벤트 인식 등을 위한 카메라일 수 있다.
입력부(1020)의 카메라(1021)는 정지영상 또는 동영상 데이터를 제공할 수 있다.
입력부(1020)의 카메라(1021)의 영상 데이터는 중앙 처리 장치(1080)에 전달될 수 있다. 영상 데이터가 중앙 처리 장치(1080)에 전달되면, 중앙 처리 장치(1080)는 신경망 프로세싱 유닛(100)에 영상 데이터를 전달하도록 구성될 수 있다. 이때, 중앙 처리 장치(1080)는 영상 처리 프로세싱을 수행할 수 있으며, 영상 처리된 영상 데이터가 신경망 프로세싱 유닛(100)에 전달 될 수 있다. 단, 이에 제한되지 않으며 시스템 버스(1060)는 신경망 프로세싱 유닛(100)에 영상 데이터를 전달하는 것도 가능하다.
입력부(1020)의 카메라(1021)의 영상 데이터는 신경망 프로세싱 유닛(100)에 전달될 수 있다. 영상 데이터가 신경망 프로세싱 유닛(100)에 전달되면, 신경망 프로세싱 유닛(100)은 추론된 결과를 중앙 처리 장치(1080)에 전달하도록 구성될 수 있다. 이때, 신경망 프로세싱 유닛(100)에서 작동되는 인공신경망모델에 따라서 영상 처리, 제스처 인식, 객체 인식, 이벤트 인식 등의 추론 연산을 수행할 수 있으며, 추론된 결과가 중앙 처리 장치(1080)에 전달될 수 있다. 단, 이에 제한되지 않으며 신경망 프로세싱 유닛(100)은 시스템 버스(1060)를 통해서 중앙 처리 장치(1080)가 아닌 다른 구성요소에 추론된 결과를 전달하는 것도 가능하다.
입력부(1020)의 카메라(1021)는 적어도 하나 이상으로 구성될 수 있다. 예를 들면, 입력부(1020)의 카메라(1021)는 자율 주행 자동차의 자율 주행용 전방, 후방, 좌측, 및 우측 방향의 영상 데이터를 제공하는 복수의 카메라일 수 있다. 또한 실내 운전자의 상태를 파악하기 위한 차량 실내 카메라가 더 포함될 수 있다. 예를 들면, 입력부(1020)의 카메라(1021)는 스마트 폰에서 서로 다른 화각을 가지는 복수의 카메라일 수 있다.
입력부(1020)의 카메라(1021)는 가시광선 카메라, 근적외선 카메라, 및 열화상 카메라 중 적어도 하나로 구성될 수 있다. 단, 이에 제한되지 않으며, 카메라(1021)는 가시광선, 근적외선을 동시에 감지하도록 구성된 복합 이미지 센서로 구성되어 가시광선과 근적외선을 동시에 감지하도록 구성되는 것도 가능하다.
입력부(1020)의 카메라(1021)가 복수의 카메라일 경우, 신경망 프로세싱 유닛(100)의 추론 성능 향상을 위해서 엣지 디바이스(1000)는 영상 데이터를 배치(batch) 모드 형태로 신경망 프로세싱 유닛(100)에 제공할 수 있다.
입력부(1020)의 마이크로폰(1022)은 외부의 음향 데이터를 전기적인 음성 데이터로 변환하여 출력한다. 음성 데이터는 아날로그 데이터 또는 디지털 데이터로 출력될 수 있다. 마이크로폰(1022)에는 외부의 음향 데이터를 입력 받는 과정에서 발생되는 잡음(noise)을 제거하기 위한 다양한 잡음 제거 알고리즘이 구현될 수 있다.
입력부(1020)의 마이크로폰(1022)은 적어도 하나 이상으로 구성될 수 있다. 예를 들면, 복수의 마이크로폰들(1022)은 양쪽 귀에 위치하는 2개의 이어폰 각각에 배치된 마이크로폰 일 수 있다.
입력부(1020)의 마이크로폰(1022)의 음향 데이터는 중앙 처리 장치(1080)에 전달될 수 있다. 음향 데이터가 중앙 처리 장치(1080)에 전달되면, 시스템 버스(1060)를 통해서 신경망 프로세싱 유닛(100)에 음향 데이터가 전달될 수 있다. 이때, 중앙 처리 장치(1080)는 푸리에 변환으로 음향 데이터를 주파수 도메인으로 변환할 수 있으며, 변환된 음향 데이터가 신경망 프로세싱 유닛(100)에 전달 될 수 있다. 단, 이에 제한되지 않으며 시스템 버스(1060)를 통해서 중앙 처리 장치(1080)가 아닌, 다른 구성요소를 통해서 신경망 프로세싱 유닛(100)에 영상 데이터를 전달하는 것도 가능하다.
입력부(1020)의 마이크로폰(1022)의 음향 데이터는 신경망 프로세싱 유닛(100)에 전달될 수 있다. 음향 데이터가 신경망 프로세싱 유닛(100)에 전달되면, 신경망 프로세싱 유닛(100)은 추론된 결과를 중앙 처리 장치(1080)에 전달하도록 구성될 수 있다. 이때, 신경망 프로세싱 유닛(100)에서 작동되는 인공신경망모델에 따라서 음향 처리, 키워드 인식, 노이즈 제거, 문장 인식, 다른 언어로 변역 등의 추론 연산을 수행할 수 있으며, 추론된 결과가 중앙 처리 장치(1080)에 전달될 수 있다. 단, 이에 제한되지 않으며 신경망 프로세싱 유닛(100)은 중앙 처리 장치(1080)가 아닌, 전원 제어부(1090), 무선 통신부(1010), 인터페이스부(1050), 출력부(1040), 또는 메인 메모리 시스템(1070) 등 다른 구성요소에 추론된 결과를 전달하는 것도 가능하다.
입력부(1020)의 사용자 입력 모듈(1023)은 예를 들면, 터치 버튼(touch button), 푸시 버튼(push button), 터치 패널(touch panel), 마우스(mouse), 키보드(keyboard), 터치 패드(touch pad) 중 적어도 하나를 포함할 수 있다. 단, 본 개시에 따른 예시들은 이에 제한되지 않는다. 신경망 프로세싱 유닛(100)은 작동되는 인공신경망모델에 따라서 사용자 입력 모듈(1023)의 데이터를 입력 받아, 대응되는 추론 연산을 수행하도록 구성될 수 있다. 단, 본 개시에 따른 예시들은 이에 제한되지 않는다.
입력부(1020)의 사용자 입력 모듈(1023)은 사용자로부터 데이터를 입력 받기 위한 것으로서, 사용자 입력 모듈(1023)를 통해 데이터가 입력되면, 중앙 처리 장치(1080)는 입력된 데이터에 대응되도록 엣지 디바이스(1000)의 동작을 제어할 수 있다. 이러한, 사용자 입력 모듈(1023)은 기계식 입력수단, 버튼, 스위치 및 터치식 입력수단을 포함할 수 있다. 터치식 입력수단은, 소프트웨어 적인 처리를 통해 터치스크린에 표시되는 비주얼 키(visual key) 또는 터치스크린 이외의 부분에 배치되는 터치 키(touch key)로 이루어질 수 있다. 터치 스크린은 저항막 방식, 정전용량 방식, 적외선 방식, 초음파 방식, 자기장 방식 등 여러 가지 터치방식 중 적어도 하나를 이용하여 디스플레이 모듈(1041)에 입력되는 터치를 감지할 수 있다. 터치 스크린은 터치 물체의 위치, 면적, 압력 등을 검출할 수 있도록 구성될 수 있다. 예를 들면, 정전용량 방식의 터치 스크린은 특정 부위에 가해진 압력 또는 특정 부위에 발생하는 정전 용량 등의 변화를 전기적인 입력신호로 변환하도록 구성될 수 있다. 예를 들면, 터치 물체는 손가락, 터치펜 또는 스타일러스 펜(Stylus pen), 포인터 등이 될 수 있다.
입력부(1020)의 근접센서(1024)는 엣지 디바이스(1000)에 접근하는 물체, 혹은 근방에 존재하는 물체의 유무를 전자계의 힘 또는 적외선 등을 이용하여 기계적 접촉이 없이 검출하는 센서를 의미한다. 예를 들면, 근접 센서(1024)는 투과형 광전 센서, 직접 반사형 광전 센서, 미러 반사형 광전 센서, 고주파 발진형 근접 센서, 정전 용량형 근접 센서, 자기형 근접 센서, 적외선 근접 센서 등이 있다. 단, 본 개시에 따른 예시들은 이에 제한되지 않는다. 신경망 프로세싱 유닛(100)은 작동되는 인공신경망모델에 따라서 근접센서(1024)의 신호를 입력 받아, 대응되는 추론 연산을 수행하도록 구성될 수 있다. 단, 본 개시에 따른 예시들은 이에 제한되지 않는다.
입력부(1020)의 조도 센서(1025)는 포토 다이오드를 활용하여 엣지 디바이스(1000)의 주변 광량을 감지할 수 있는 센서를 의미한다. 신경망 프로세싱 유닛(100)은 작동되는 인공신경망모델에 따라서 조도센서(1025)의 신호를 입력 받아, 대응되는 추론 연산을 수행하도록 구성될 수 있다. 단, 본 개시에 따른 예시들은 이에 제한되지 않는다.
입력부(1020)의 레이더(1026)는 전자기파를 송출하여 물체에 반사되는 신호를 감지하여, 물체의 거리와 각도 속도 등의 데이터를 제공할 수 있다. 엣지 디바이스(1000)는 복수의 레이더(1026)를 포함하도록 구성될 수 있다. 레이더(1026)는 단거리 레이더(short range radar), 중거리 레이더(middle range radar), 장거리 레이더(long range radar) 중 적어도 하나를 포함하도록 구성될 수 있다. 신경망 프로세싱 유닛(100)은 작동되는 인공신경망모델에 따라서 레이더(1026)의 데이터를 입력 받아, 대응되는 추론 연산을 수행하도록 구성될 수 있다. 단, 본 개시에 따른 예시들은 이에 제한되지 않는다.
입력부(1020)의 라이다(1027)는 광신호를 일정한 방식으로 조사하여 물체에 반사되는 광 에너지를 분석하여, 주변의 3차원 공간 데이터를 제공할 수 있다. 엣지 디바이스(1000)는 복수의 라이다(1027)를 포함하도록 구성될 수 있다.
신경망 프로세싱 유닛(100)은 작동되는 인공신경망모델에 따라서 라이다(1027)의 데이터를 입력 받아, 대응되는 추론 연산을 수행하도록 구성될 수 있다. 단, 본 개시에 따른 예시들은 이에 제한되지 않는다.
단, 입력부(1020)는 상술한 예시들에 제한되지 않으며, 가속도 센서(acceleration sensor), 자기 센서(magnetic sensor), 중력 센서(G-sensor), 자이로스코프 센서(gyroscope sensor), 모션 센서(motion sensor), 지문인식 센서(finger scan sensor), 초음파 센서(ultrasonic sensor), 배터리 게이지(battery gauge), 기압계, 습도계, 온도계, 방사능 감지 센서, 열 감지 센서, 가스 감지 센서, 화학 물질 감지 센서 중 적어도 하나를 더 포함하도록 구성될 수 있다.
본 개시의 예시들에 따른 엣지 디바이스(1000)의 신경망 프로세싱 유닛(100)은 작동되는 인공신경망모델에 따라서 입력부(1020)의 데이터를 입력 받아, 대응되는 추론 연산을 수행하도록 구성될 수 있다.
본 개시의 예시들에 따른 엣지 디바이스(1000)는 입력부(1020)에서 입력되는 다양한 입력 데이터들을 신경망 프로세싱 유닛(100)에 제공하여 다양한 추론 연산을 수행하도록 구성될 수 있다. 입력 데이터들은 중앙 처리 장치(1080)에서 전 처리된 후 신경망 프로세싱 유닛(100)에 입력되는 것도 가능하다.
예를 들면, 신경망 프로세싱 유닛(100)은 카메라(1021), 레이더(1026) 및 라이다(1027) 각각의 입력 데이터를 선택적으로 입력 받아, 자율 주행 용 주변 환경 데이터를 추론하도록 구성될 수 있다.
예를 들면, 신경망 프로세싱 유닛(100)은 카메라(1021) 및 레이더(1026)의 입력 데이터를 입력 받아, 자율 주행에 필요한 주변 환경 데이터를 추론하도록 구성될 수 있다.
출력부(1040)는 시각, 청각 또는 촉각 등과 관련된 출력을 발생시키기 위한 것으로, 디스플레이 모듈(1041), 음향 출력 모듈(1042), 햅팁 모듈(1043), 광 출력 모듈(1044) 중 적어도 하나를 포함할 수 있다. 디스플레이 모듈(1041)은 복수의 픽셀 어레이로 이루어진 액정 패널 또는 유기 발광 표시 패널 등 일 수 있다. 단, 본 개시에 따른 예시들은 이에 제한되지 않는다. 음향 출력 모듈(1042)은 전화기의 리시버(receiver), 음향을 출력하는 스피커(speaker), 버저(buzzer) 등 일 수 있다. 단, 본 개시에 따른 예시들은 이에 제한되지 않는다. 광 출력 모듈(1044)은 엣지 디바이스(1000)의 광원의 빛을 이용하여 이벤트 발생을 알리기 위한 광 신호를 출력할 수 있다. 발생 되는 이벤트의 예로는 메시지 수신, 부재중 전화, 알람, 일정 알림, 이메일 수신, 애플리케이션을 통한 데이터 수신 등이 될 수 있다.
인터페이스부(1050)는 엣지 디바이스(1000)에 연결되는 모든 외부 기기와의 통로 역할을 한다. 인터페이스부(1050)는 외부 기기로부터 데이터를 전송 받거나, 전원을 공급받아 엣지 디바이스(1050) 내부의 각 구성요소에 전달하거나, 엣지 디바이스(1050) 내부의 데이터가 외부 기기로 전송되도록 한다. 예를 들어, 유/무선 헤드셋 포트(port), 외부 충전기 포트(port), 유/무선 데이터 포트(port), 메모리 카드(memory card) 포트(port), 식별 모듈이 구비된 장치를 연결하는 포트(port), 오디오 I/O(Input/Output) 포트(port), 비디오 I/O(Input/Output) 포트(port), 이어폰 포트(port) 등이 인터페이스부(1050)에 포함될 수 있다.
메인 메모리 시스템(1070)은 엣지 디바이스(1000)의 제어에 따라 데이터를 저장하는 장치이다. 메인 메모리 시스템(1070)는 휘발성 메모리(Volatile Memory)와 비휘발성 메모리(Non-Volatile Memory)를 선택적으로 포함할 수 있다.
휘발성 메모리 장치는 전원이 공급된 경우에만 데이터를 저장하고, 전원 공급이 차단되면 저장된 데이터가 소멸되는 메모리 장치일 수 있다. 비휘발성 메모리 장치는 전원 공급이 중단된 경우에도 데이터가 저장되는 장치일 수 있다.
중앙 처리 장치(1080) 또는 신경망 프로세싱 유닛(100)의 동작을 위한 프로그램을 저장할 수 있고, 입/출력되는 데이터들을 임시 저장할 수도 있다. 메인 메모리 시스템(1070)은 플래시 메모리 타입(flash memory type), 하드디스크 타입(hard disk type), SSD 타입(Solid State Disk type), SDD 타입(Silicon Disk Drive type), 멀티미디어 카드 마이크로 타입(multimedia card micro type), 카드 타입의 메모리(예를 들어 SD 또는 XD 메모리 등), 램(random access memory; RAM), DRAM(dynamic random access memory), HBM(high bandwidth memory), SRAM(static random access memory), MRAM(magnetic random access memory), STT-MRAM(spin-transfer torque magnetic random access memory), eMRAM(embedded magnetic random access memory), OST-MRAM(orthogonal spin transfer magnetic random access memory), PRAM(phase change RAM), FeRAM(ferroelectric RAM), 롬(read-only memory; ROM), EEPROM(electrically erasable programmable read-only memory), PROM(programmable read-only memory), 자기 메모리, 자기 디스크 및 광디스크 중 적어도 하나의 타입의 저장매체를 포함할 수 있다. 후술될 다양한 인공신경망모델들은 메인 메모리 시스템(1070)의 휘발성 및/또는 비휘발성 메모리 장치에 저장될 수 있다. 단, 이에 제한되지 않는다. 인공신경망모델들 중 적어도 하나는 엣지 디바이스(1000)의 명령에 의해서 신경망 프로세싱 유닛(100)의 휘발성 메모리에 저장되어 추론 연산 기능을 제공할 수 있다.
중앙 처리 장치(1080)는 엣지 디바이스(1000)의 전반적인 동작을 제어할 수 있다. 예를 들어, 중앙 처리 장치(1080)는 중앙 처리 장치(CPU), 어플리케이션 프로세서(AP), 또는 디지털 신호 처리 장치(DSP)일 수 있다. 중앙 처리 장치(1080)는 엣지 디바이스(1000)를 제어하거나, 다양한 명령을 수행할 수 있다. 중앙 처리 장치(1080)는 신경망 프로세스 유닛(100)에 필요한 데이터를 제공 하거나 제공 받을 수 있다. 중앙 처리 장치(1080)는 시스템 버스(1060)와 연결된 다양한 구성요소들을 제어할 수 있다.
전원 제어부(1090)는 각각의 구성 요소들의 전원을 제어하도록 구성된다. 중앙 처리 장치(1080)는 전원 제어부(1090)를 제어하도록 구성될 수 있다. 전원 제어부(1090)는 외부의 전원, 내부의 전원을 인가 받아 엣지 디바이스(1000)에 포함된 각 구성요소들에 전원을 공급한다. 이러한 전원 제어부(190)는 배터리를 포함할 수 있다. 전원 제어부(1090)는 특정 시간 동안 중앙 처리 장치(1080)로부터 제어 데이터를 제공받지 않을 경우, 선택적으로 엣지 디바이스(1000)의 각각의 구성 요소의 전원의 공급을 차단할 수 있다. 또한 신경망 프로세싱 유닛(100)은 상시 동작하며, 특정 상황을 추론하여, 중앙 처리 장치(1080)에 기상 데이터를 제공하도록 구성될 수 있다. 중앙 처리 장치(1080)는 신경망 프로세싱 유닛(100)의 추론 결과에 의해서 전원 제어부(1090)가 엣지 디바이스(1000)의 특정 구성요소에 전원을 공급하도록 제어할 수 있다.
신경망 프로세싱 유닛(100)은 다양한 인공 신경망 추론 연산을 수행하도록 구성된다. 신경망 프로세싱 유닛(100)은 중앙 처리 장치(1080)가 연산하는데 비효율 적인 인공 신경망 추론 연산을 효율적으로 연산하도록 구성된 것을 특징으로 한다.
신경망 프로세싱 유닛(100)은 메인 메모리 시스템(1070)으로부터 특정 추론을 하도록 학습된 인공신경망모델을 불러올 수 있다. 이하 도 2를 참조하여, 신경망 프로세싱 유닛(100)에 대하여 보다 자세히 설명한다.
도 2는 본 개시의 일 예시에 따른 신경망 프로세싱 유닛을 설명하는 개략적인 개념도이다.
본 개시의 일 예시에 따른 신경망 프로세싱 유닛(100)은 프로세싱 엘리먼트 어레이(110), NPU 메모리 시스템(120), NPU 스케줄러(130), 및 NPU 인터페이스(140)를 포함하도록 구성된다.
예를 들면, 신경망 프로세싱 유닛(100)은 프로세싱 엘리먼트 어레이(110), 프로세싱 엘리먼트 어레이(110)에서 추론될 수 있는 인공신경망모델을 저장 또는 인공신경망모델의 적어도 일부 데이터를 저장하도록 구성된 NPU 메모리 시스템(120), 및 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보에 기초하여 프로세싱 엘리먼트 어레이(110) 및 NPU 메모리 시스템(120)을 제어하도록 구성된 NPU 스케줄러(130)를 포함하도록 구성될 수 있다. 여기서, 인공신경망모델은 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보를 포함할 수 있다. 인공신경망모델은 특정 추론 기능을 수행하도록 학습된 AI 인식모델을 의미할 수 있다. NPU 인터페이스(140)는 시스템 버스(1060)를 통해서 엣지 디바이스(1000)의 중앙 처리 장치(1080), 메인 메모리 시스템(1070), 입력부(1020), 무선 통신부(1010) 등 엣지 디바이스(1000)의 다양한 구성요소들과 통신할 수 있다.
예를 들면, 중앙 처리 장치(1080)는 NPU 인터페이스(140)를 통해서 신경망 프로세싱 유닛(100)에 특정 인공신경망모델의 동작을 지시할 수 있다.
예를 들면, 신경망 프로세싱 유닛(100)은 NPU 인터페이스(140)를 통해서 메인 메모리 시스템(1070)에 저장된 인공신경망모델의 데이터를 NPU 메모리 시스템(120)으로 불러올 수 있다.
예를 들면, NPU 인터페이스(140)는 입력부(1020)의 카메라(1021) 및 마이크로폰(1022)에서 제공되는 데이터들을 신경망 프로세싱 유닛(100)에 전달할 수 있다.
예를 들면, 신경망 프로세싱 유닛(100)은 인공신경망모델의 추론 결과를 NPU 인터페이스(140)를 통해서 중앙 처리 장치(1080)에 제공할 수 있다.
즉, NPU 인터페이스(140)는 신경망 프로세싱 유닛(100)과 통신할 수 있는 다양한 구성요소들과 데이터 통신을 하도록 구성될 수 있다.
메인 메모리 시스템(1070)과 직접 연결된 NPU 인터페이스(140)가 제공될 경우, 신경망 프로세싱 유닛(100)은 시스템 버스(1060)를 통하지 않고 메인 메모리 시스템(1070)과 직접 통신하도록 구성되는 것도 가능하다. 따라서, NPU 인터페이스는 메인 메모리 시스템(1070)에 저장될 수 있는 인공신경망모델의 다양한 데이터를 직접 받아올 수 있는 효과가 있다.
예를 들면, 엣지 디바이스(1000)는 중앙 처리 장치(1080), 인공신경망모델을 저장하도록 구성된 메인 메모리 시스템(1070), 중앙 처리 장치(1080) 및 메인 메모리 시스템(1070)의 통신을 제어하는 시스템 버스(1060) 및 프로세싱 엘리먼트 어레이(110), NPU 메모리 시스템(120), 프로세싱 엘리먼트 어레이(110) 및 NPU 메모리 시스템(120)을 제어하도록 구성된 NPU 스케줄러(130), 및 NPU 인터페이스(140)를 포함하는, 신경망 프로세싱 유닛(100)을 포함할 수 있다. NPU 인터페이스(140)는, 시스템 버스(1060)를 통해서 중앙 처리 장치(1080)와 통신하도록 구성되고, NPU 인터페이스(140)는, 인공신경망모델과 관련된 데이터는 상기 메인 메모리 시스템(1070)과 직접 통신하도록 구성될 수 있다.단, 본 개시의 예시들은 이에 제한되지 않는다.
이러한 경우, 신경망 프로세싱 유닛(100)은 엣지 디바이스(1000)의 중앙 처리 장치(1080)에 의해서 발생된 우선 순위가 높고 신경망 프로세싱 유닛(100)과 무관한 다른 프로세싱들 의해서 프로세싱 순서가 뒤로 밀릴 수 있는 문제를 개선할 수 있다, 따라서 상술한 구성에 따르면 신경망 프로세싱 유닛(100)이 안정적으로 동작할 수 있게 하면서 응답 속도 지연 문제를 개선할 수 있는 효과가 있다.
본 개시의 일 예시에 따른 신경망 프로세싱 유닛(100)은 NPU 인터페이스(140)에 제한되지 않으며, NPU 인터페이스(140)가 포함되지 않도록 구성되는 것도 가능하며, 신경망 프로세싱 유닛(100)은 엣지 디바이스(1000)의 시스템 버스(1060)를 통해서 직접 통신하도록 구성되는 것도 가능하다.
NPU 스케줄러(130)는 신경망 프로세싱 유닛(100)의 추론 연산을 위한 프로세싱 엘리먼트 어레이(100)의 연산 및 NPU 메모리 시스템(120)의 읽기 및 쓰기 순서를 제어하도록 구성된다.
NPU 스케줄러(130)는 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보를 분석하여 프로세싱 엘리먼트 어레이(100) 및 NPU 메모리 시스템(120)을 제어하도록 구성될 수 있다.
NPU 스케줄러(130)는 프로세싱 엘리먼트 어레이(100)에서 작동할 인공신경망모델의 구조를 분석하거나 또는 분석된 구조 정보를 제공받을 수 있다. 인공신경망모델이 포함할 수 있는 인공 신경망의 데이터는 각각의 레이어의 노드 데이터, 레이어들의 배치 구조 데이터, 각각의 레이어의 노드를 연결하는 연결망 각각의 가중치 데이터 또는 인공신경망 데이터 지역성 정보를 포함할 수 있다. 인공 신경망의 데이터는 NPU 스케줄러(130) 내부에 제공되는 메모리 또는 NPU 메모리 시스템(120)에 저장될 수 있다. NPU 스케줄러(130)는 인공 신경망의 데이터가 저장된 메모리에 액세스하여 필요한 데이터를 활용할 수 있다. 단, 이에 제한되지 않으며, 인공신경망모델의 노드 데이터 및 가중치 데이터 등의 데이터에 기초하여 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보를 생성할 수 있다. 가중치 데이터는 가중치 커널로 지칭되는 것도 가능하다. 노드 데이터는 특징 맵으로 지칭되는 것도 가능하다. 예를 들면, 인공신경망모델의 구조가 정의된 데이터는 인공신경망모델을 설계하거나 또는 학습이 완료될 때 생성될 수 있다. 단, 이에 제한되지 않는다.
NPU 스케줄러(130)는 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보에 기초하여 인공신경망모델의 연산 순서를 스케줄링 할 수 있다.
신경망 프로세싱 유닛(100)은 인공신경망모델의 구조에 따라서 각 레이어 별 연산을 순차적으로 처리할 수 있다. 즉, 인공신경망모델의 구조가 결정되면, 커널 별 또는 레이어 별 연산순서가 정해질 수 있다. 이러한 정보를 인공신경망모델의 구조 데이터로 정의할 수 있다.NPU 스케줄러(130)는 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보에 기초하여 인공신경망모델의 레이어의 노드 데이터 및 연결망의 가중치 데이터가 저장된 메모리 어드레스 값을 획득할 수 있다. 예를 들면, NPU 스케줄러(130)는 메인 메모리 시스템(1070)에 저장된 인공신경망모델의 레이어의 노드 데이터 및 연결망의 가중치 데이터가 저장된 메모리 어드레스 값을 획득할 수 있다. 따라서 NPU 스케줄러(130)는 구동할 인공신경망모델의 레이어의 노드 데이터 및 연결망의 가중치 데이터를 메인 메모리 시스템(1070)에서 가져와서 NPU 메모리 시스템(120)에 저장할 수 있다. 각각의 레이어의 노드 데이터는 대응되는 각각의 메모리 어드레스 값을 가질 수 있다. 각각의 연결망의 가중치 데이터는 대응되는 각각의 메모리 어드레스 값을 가질 수 있다.
NPU 스케줄러(130)는 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보, 예를 들면, 인공신경망모델의 인공 신경망의 레이어들의 배치 구조 데이터 또는 인공신경망 데이터 지역성 정보에 기초해서 프로세싱 엘리먼트 어레이(110)의 연산 순서를 스케줄링 할 수 있다.
NPU 스케줄러(130)는 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보에 기초하여 스케줄링 하기 때문에, 중앙 처리 장치(1080)의 스케줄링 개념과 다르게 동작할 수 있다. 중앙 처리 장치(1080)의 스케줄링은 공평성, 효율성, 안정성, 반응 시간 등을 고려하여, 최상의 효율을 낼 수 있도록 동작한다. 즉, 우선 순위, 연산 시간 등을 고려해서 동일 시간내에 가장 많은 프로세싱을 수행하도록 스케줄링 한다.
종래의 CPU는 각 프로세싱의 우선 순서, 연산 처리 시간 등의 데이터를 고려하여 작업을 스케줄링 하는 알고리즘을 사용하였다.
이와 다르게 NPU 스케줄러(130)는 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보에 기초하여 프로세싱 순서를 결정할 수 있다.
더 나아가면, NPU 스케줄러(130)는 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보 및/또는 사용하려는 신경망 프로세싱 유닛(100)의 구조 데이터에 기초하여 프로세싱 순서를 결정할 수 있다.
단, 본 개시는 신경망 프로세싱 유닛(100)의 구조 데이터에 제한되지 않는다. 예를 들면, 신경망 프로세싱 유닛(100)의 구조 데이터는 NPU 메모리 시스템(130)의 메모리 크기, NPU 메모리 시스템(130)의 계층 구조, 프로세싱 엘리먼트들(PE1 to PE12)의 개수 데이터, 프로세싱 엘리먼트들(PE1 to PE12)의 연산기 구조 중 적어도 하나 이상의 데이터를 활용하여 프로세싱 순서를 결정할 수 있다. 즉, 신경망 프로세싱 유닛(100)의 구조 데이터는 NPU 메모리 시스템(130)의 메모리 크기, NPU 메모리 시스템(130)의 계층 구조, 프로세싱 엘리먼트들(PE1 to PE12)의 개수 데이터, 및 프로세싱 엘리먼트들(PE1 to PE12)의 연산기 구조 중 적어도 하나 이상의 데이터 포함할 수 있다. 단, 본 개시는 신경망 프로세싱 유닛(100)의 구조 데이터에 제한되지 않는다. NPU 메모리 시스템(130)의 메모리 크기는 메모리 용량에 대한 정보를 포함한다. NPU 메모리 시스템(130)의 계층 구조는 각각의 계층 구조에 대한 구체적인 계층 간의 연결 관계에 대한 정보를 포함한다. 프로세싱 엘리먼트들(PE1 to PE12)의 연산기 구조는 프로세싱 엘리먼트 내부의 구성요소들에 대한 정보를 포함한다.
본 개시의 일 예시에 따른, 신경망 프로세싱 유닛(100)은 적어도 하나의 프로세싱 엘리먼트, 적어도 하나의 프로세싱 엘리먼트에 의해서 추론될 수 있는 인공신경망모델을 저장 또는 인공신경망모델의 적어도 일부 데이터를 저장할 수 있는 NPU 메모리 시스템(120), 및 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보에 기초하여 적어도 하나의 프로세싱 엘리먼트 및 NPU 메모리 시스템(120)을 제어하도록 구성된 NPU 스케줄러(130)를 포함하도록 구성될 수 있다. 그리고 NPU 스케줄러(130)는 신경망 프로세싱 유닛(100)의 구조 데이터를 더 제공받도록 구성될 수 있다. 또한 신경망 프로세싱 유닛(100)의 구조 데이터는 NPU 메모리 시스템(120)의 메모리 크기, NPU 메모리 시스템(120)의 계층 구조, 적어도 하나의 프로세싱 엘리먼트의 개수 데이터, 및 적어도 하나의 프로세싱 엘리먼트의 연산기 구조 중 적어도 하나의 데이터를 포함하도록 구성될 수 있다.
이하 인공신경망 데이터 지역성 정보에 대하여 설명한다.
컴파일러가 인공신경망모델이 신경망 프로세싱 유닛(100)에서 실행되도록 인공신경망모델을 컴파일 할 경우, 프로세싱 엘리먼트 어레이-NPU 메모리 시스템 레벨에서 인공신경망모델의 인공신경망 데이터 지역성이 구성될 수 있다. 컴파일러는 별도의 소프트웨어로 구현될 수 있다. 단, 이에 제한되지 않는다.
즉, 컴파일러는 인공신경망모델에 적용된 알고리즘들 및 신경망 프로세싱 유닛(100)의 하드웨어 적인 동작 특성에 따라서 프로세싱 엘리먼트 어레이-NPU 메모리 시스템 레벨에서의 인공신경망모델의 데이터 지역성을 적절히 구성할 수 있다.
예를 들면, 동일한 인공신경망모델의 경우에도 신경망 프로세싱 유닛(100)이 해당 인공신경망모델을 연산하는 방식에 따라 인공신경망모델의 인공신경망 데이터 지역성을 다르게 구성할 수 있다.
예를 들면, 인공신경망모델의 인공신경망 데이터 지역성은 특징 맵 타일링, 프로세싱 엘리먼트의 스테이셔너리(Stationary) 기법, 메모리 재사용 등의 알고리즘에 기초하여 구성될 수 있다.
예를 들면, 인공신경망모델의 인공신경망 데이터 지역성은 신경망 프로세싱 유닛(100)의 프로세싱 엘리먼트 개수, 특징 맵 및 가중치 등을 저장하는 NPU 메모리 시스템(120)의 메모리 용량, 신경망 프로세싱 유닛(100)내의 메모리 계층 구조 등에 기초하여 구성될 수 있다.
컴파일러는 신경망 프로세싱 유닛(100)의 워드(word) 단위로 프로세싱 엘리먼트 어레이-NPU 메모리 시스템 레벨에서 인공신경망모델의 인공신경망 데이터 지역성을 구성하여 연산 처리에 필요한 데이터의 순서를 결정할 수 있다. 워드 단위는 해당 커널의 양자화에 따라서 달라질 수 있으며, 예를 들면, 4비트, 8비트, 16비트, 또는 32 비트 등 일 수 있다. 단, 이에 제한되지 않는다.
즉, 프로세싱 엘리먼트 어레이-NPU 메모리 시스템 레벨에서 존재하는 인공신경망모델의 인공신경망 데이터 지역성이란 프로세싱 엘리먼트 어레이(110)가 처리하는 인공신경망모델의 연산 순서 정보로 정의될 수 있다.
NPU 스케줄러(130)가 인공신경망 데이터 지역성 정보를 제공받을 경우, NPU 스케줄러(130)는 워드 단위로 인공신경망모델의 연산 순서를 알 수 있기 때문에, 필요한 데이터를 메인 메모리 시스템(1070)에서 NPU 메모리 시스템(120)으로 사전에 저장할 수 있는 효과가 있다.
따라서, NPU 스케줄러(130)는 인공신경망의 인공신경망 데이터 지역성 정보 및/또는 구조 데이터를 저장하도록 구성될 수 있다.
즉, 상술한 구조 데이터는 인공신경망모델의 레이어, 커널 단위 개념의 구조 데이터를 의미한다. 상술한 구조 데이터는 알고리즘 레벨에서 활용될 수 있다.
즉, 상술한 인공신경망 데이터 지역성은 해당 인공신경망모델이 컴파일러에 의해서 특정 신경망 프로세싱 유닛에서 동작하도록 변환될 때 결정된 신경망 프로세싱 유닛(100)의 프로세싱 순서 정보를 의미한다.
부연 설명하면, 인공신경망 데이터 지역성은, 신경망 프로세싱 유닛(100)이 특정 인공신경망모델을 처리할 때, 해당 인공신경망모델의 구조 및 연산 알고리즘을 따라 수행되는 신경망 프로세싱 유닛(100)이 해당 인공신경망을 연산 처리하는데 필요한 데이터의 워드(word) 단위인 순서 정보를 의미할 수 있다. 워드 단위는 신경망 프로세싱 유닛(100)이 처리할 수 있는 기본 단위인 엘리먼트 단위를 의미할 수 있다. 인공신경망 데이터 지역성은 하드웨어-메모리 레벨에서 활용될 수 있다.
NPU 스케줄러(130)는 구조 데이터 또는 인공신경망 데이터 지역성에 기초하여 신경망 프로세싱 유닛(100)이 요청할 메모리 읽기/쓰기 동작을 사전에 예측하고, 신경망 프로세싱 유닛(100)이 처리할 데이터를 메인 메모리 시스템(1070)에서 NPU 메모리 시스템(120)으로 사전에 저장할 수 있다. 따라서 데이터 공급 지연을 최소화 또는 실질적으로 제거할 수 있는 효과가 있다.
즉, 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 스케줄링이라 지칭할 수 있다. 추론 결과 값은 엣지 디바이스(1000)의 다양한 구성요소들에 전달되어 활용될 수 있다.
예를 들면, 추론 결과 값이 특정 키워드를 감지한 결과 값이라면, 신경망 프로세싱 유닛(100)은 추론 결과를 중앙 처리 장치(1080)에 전달하여, 엣지 디바이스(1000)가 특정 키워드에 대응되는 동작을 수행할 수 있다.
정리하면, NPU 스케줄러(130)는 제1 스케줄링, 제2 스케줄링, 제3 스케줄링, 및 제4 스케줄링 순서대로 연산이 수행되도록 NPU 메모리 시스템(120)과 프로세싱 엘리먼트 어레이(110)를 제어할 수 있다. 즉, NPU 스케줄러(130)는 설정된 스케줄링 순서대로 연산이 수행되도록 NPU 메모리 시스템(120)과 프로세싱 엘리먼트 어레이(110)를 제어하도록 구성될 수 있다.
정리하면, 본 개시의 일 예시에 따른 신경망 프로세싱 유닛(100)은 인공 신경망의 레이어들의 구조와, 구조에 대응되는 연산 순서 데이터에 기초하여, 프로세싱 순서를 스케줄링 하도록 구성될 수 있다. 스케줄링 되는 프로세싱 순서는 적어도 하나 이상일 수 있다, 예를 들면, 신경망 프로세싱 유닛(100)이 모든 연산 순서를 예측 할 수 있기 때문에, 다음 연산을 스케줄링 하는 것도 가능하고, 특정 순서의 연산을 스케줄링 하는 것도 가능하다.
예를 들면, NPU 스케줄러(130)는 인공신경망모델의 인공 신경망의 입력 레이어부터 출력 레이어 까지의 구조 데이터 또는 인공신경망 데이터 지역성 정보를 기초로, 프로세싱 순서를 스케줄링 하도록 구성될 수 있다.
NPU 스케줄러(130)는 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보에 기초한 스케줄링 순서를 활용하여 NPU 메모리 시스템(120)을 제어하여 신경망 프로세싱 유닛의 연산 가동율을 향상시킬 수 있고, 메모리 재사용율을 향상시킬 수 있는 효과가 있다.
본 개시의 일 예시에 따른 신경망 프로세싱 유닛(100)에서 구동되는 인공 신경망 연산의 특성상 하나의 레이어의 연산 값이 다음 레이어의 입력 데이터가 되는 특성을 가질 수 있다.
이에, 신경망 프로세싱 유닛(100)은 스케줄링 순서에 따라서 NPU 메모리 시스템(120)을 제어하여, NPU 메모리 시스템(120)의 메모리 재사용율을 향상시킬 수 있는 효과가 있다. 메모리 재사용은 메모리에 저장된 데이터를 몇 번 읽는지 횟수로 판단할 수 있다. 예를 들면, 메모리에 특정 데이터를 저장한 다음, 특정 데이터를 1회만 읽은 후 해당 데이터를 삭제하거나 덮어쓰기 하면, 메모리 재사용율은 100%가 될 수 있다. 예를 들면, 메모리에 특정 데이터를 저장한 다음, 특정 데이터를 4회 읽은 후, 해당 데이터를 삭제하거나 덮어쓰기 하면, 메모리 재사용율은 400%가 될 수 있다. 즉, 메모리 재사용율은 한번 저장된 데이터의 재사용 횟수로 정의될 수 있다. 즉, 메모리 재사용은 메모리에 저장된 데이터 또는 특정 데이터가 저장된 특정 메모리 어드레스를 재사용한다는 것을 의미할 수 있다.
구체적으로 설명하면, NPU 스케줄러(130)가 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보를 제공받도록 구성되고, 제공받은 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보에 의해서 인공 신경망의 연산이 진행되는 순서 데이터를 파악할 수 있는 경우, NPU 스케줄러(130)는 인공신경망모델의 특정 레이어의 노드 데이터와 특정 연결망의 가중치 데이터의 연산 결과가 대응되는 다음 레이어의 노드 데이터가 된다는 사실을 인식하였다. 즉, 엣지 디바이스(1000)의 신경망 프로세싱 유닛(100)은 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보에 기초하여, NPU 메모리 시스템(120)의 메모리 재사용율을 향상시키도록 구성될 수 있다.
따라서 NPU 스케줄러(130)는 특정 연산 결과가 저장된 메모리 어드레스의 값을 이어지는 다음 연산에서 재사용할 수 있다. 따라서 메모리 재사용율이 향상될 수 있다.
예를 들면, 컨볼루션 신경망의 경우, 신경망 프로세싱 유닛(100)은 연산된 출력 특징 맵 데이터를 NPU 메모리 시스템(120)에 저장하고, 해당 데이터를 다음 레이어의 입력 특징 맵 데이터로 활용하도록 NPU 스케줄러(130) 및/또는 NPU 메모리 시스템(120)을 제어할 수 있다.
예를 들면, 상술한 제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)는 인공신경망 데이터 지역성 정보에 기초하여 스케줄링 순서를 파악하고, NPU 메모리 시스템(120)에 필요한 데이터를 미리 저장하도록 구성될 수 있다. 따라서 프로세싱 엘리먼트 어레이(110)가 스케줄링 된 순서에 따라 연산 시, 메인 메모리 시스템(1070)으로부터 데이터를 요청하지 않고, NPU 메모리 시스템(120)에 사전 준비된 데이터를 활용할 수 있는 효과가 있다.
더 나아가서, NPU 스케줄러(130)는 신경망 프로세싱 유닛(100)의 구조 데이터에 기초해서, NPU 메모리 시스템(130)의 리소스 사용량, 프로세싱 엘리먼트들(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)를 예를 들어 설명한다.
도 3은 본 개시의 일 예시에 적용될 수 있는 프로세싱 엘리먼트 어레이 중 하나의 프로세싱 엘리먼트를 설명하는 개략적인 개념도이다.
본 개시의 일 예시에 따른 신경망 프로세싱 유닛(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 입력부에 입력되는 데이터의 비트 수는 인공신경망모델의 각각의 레이어의 노드 데이터 및 가중치 데이터의 양자화에 따라서 결정될 수 있다. 예를 들면, 제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 연산 이후에 선택적으로 적용될 수 있다. 활성화 함수가 적용된 연산 값은, 활성화 맵으로 지칭될 수 있다.
도 4는 신경망 프로세싱 유닛(100)의 단위 동작 당 에너지 소모를 개략적으로 설명하는 표이다.
이하 도 4를 참조하여 신경망 프로세싱 유닛(100)의 NPU 메모리 시스템(120)의 소비 전력 저감 기술에 대하여 설명한다.
도 4를 참조하면, 신경망 프로세싱 유닛(100)의 단위 동작 당 소비되는 에너지를 개략적으로 설명하는 표이다. 에너지 소모는 메모리 액세스, 덧셈 연산 및 곱셈 연산으로 구분하여 설명할 수 있다.
"8b Add"는 가산기(112)의 8비트 정수 덧셈 연산을 의미한다. 8비트 정수 덧셈 연산은 0.03pj의 에너지를 소비할 수 있다.
"16b Add"는 가산기(112)의 16비트 정수 덧셈 연산을 의미한다. 16비트 정수 덧셈 연산은 0.05pj의 에너지를 소비할 수 있다.
"32b Add"는 가산기(112)의 32비트 정수 덧셈 연산을 의미한다. 32비트 정수 덧셈 연산은 0.1pj의 에너지를 소비할 수 있다.
"16b FP Add"는 가산기(112)의 16비트 부동소수점 덧셈 연산을 의미한다. 16비트 부동소수점 덧셈 연산은 0.4pj의 에너지를 소비할 수 있다.
"32b FP Add"는 가산기(112)의 32비트 부동소수점 덧셈 연산을 의미한다. 32비트 부동소수점 덧셈 연산은 0.9pj의 에너지를 소비할 수 있다.
"8b Mult"는 곱셈기(111)의 8비트 정수 곱셈 연산을 의미한다. 8비트 정수 곱셈 연산은 0.2pj의 에너지를 소비할 수 있다.
"32b Mult"는 곱셈기(111)의 32비트 정수 곱셈 연산을 의미한다. 32비트 정수 곱셈 연산은 3.1pj의 에너지를 소비할 수 있다.
"16b FP Mult"는 곱셈기(111)의 16비트 부동소수점 곱셈 연산을 의미한다. 16비트 부동소수점 곱셈 연산은 1.1pj의 에너지를 소비할 수 있다.
"32b FP Mult"는 곱셈기(111)의 32비트 부동소수점 곱셈 연산을 의미한다. 32비트 부동소수점 곱셈 연산은 3.7pj의 에너지를 소비할 수 있다.
"32b SRAM Read"는 NPU 메모리 시스템(120)의 내부 메모리가 SRAM(static random access memory)일 경우, 32비트의 데이터 읽기 액세스를 의미한다. 32비트의 데이터를 NPU 메모리 시스템(120)에서 읽어오는데 5pj의 에너지를 소비할 수 있다.
"32b DRAM Read"는 엣지 디바이스(1000)의 메인 메모리 시스템(1070)의 메모리가 DRAM일 경우, 32비트의 데이터 읽기 액세스를 의미한다. 32비트 데이터를 메인 메모리 시스템(1070)에서 NPU 메모리 시스템(120)으로 읽어오는데 640pj의 에너지를 소비할 수 있다. 에너지 단위는 피코-줄(pj)을 의미한다.
신경망 프로세싱 유닛(100)이 32비트 부동소수점 곱셈을 하는 경우와 8비트 정수 곱셈을 하는 경우를 비교하면, 단위 동작 당 에너지 소모는 대략 18.5배 차이가 난다. DRAM으로 구성된 엣지 디바이스(1000)의 메인 메모리 시스템(1070)에서 32비트 데이터를 읽어오는 경우와 SRAM으로 구성된 NPU 메모리 시스템(120)에서 32비트 데이터를 읽어오는 경우 단위 동작 당 에너지 소모는 대략 128배 차이가 난다.
즉, 소비전력 관점에서, 데이터의 비트 수가 증가할수록 소비전력이 증가한다. 또한 부동 소수점 연산을 사용하면 정수 연산보다 소비전력이 증가한다. 또한 DRAM에서 데이터를 읽어올 경우 소비전력이 급격히 증가한다.
이에 본 개시의 일 예시에 따른 신경망 프로세싱 유닛(100)의 NPU 메모리 시스템(120)은 SRAM관 같은 고속의 정적 메모리를 포함하고 DRAM을 비포함하도록 구성될 수 있다. 단 본 개시의 예시들에 따른 신경망 프로세싱 유닛은 SRAM에 제한되지 않는다.
예를 들면, NPU 메모리 시스템(120)은 DRAM을 포함하지 않고, NPU 메모리 시스템(120)은 메인 메모리 시스템(1070)보다 상대적으로 읽기 및 쓰기 속도가 더 빠르고 소비 전력을 상대적으로 덜 소비하도록 구성된 정적 메모리를 포함하도록 구성될 수 있다.
이에 본 개시의 일 예시에 따른 신경망 프로세싱 유닛(100)의 NPU 메모리 시스템(120)은 메인 메모리 시스템(1070)보다 인공신경망모델의 추론 연산의 읽기/쓰기 속도가 상대적으로 더 빠르고, 소비 전력을 상대적으로 더 적게 소비하도록 구성될 수 있다.
SRAM과 같은 고속 구동이 가능한 정적 메모리는 SRAM, MRAM, STT-MRAM, eMRAM, 및 OST-MRAM 등이 있다. 더 나아가서, MRAM, STT-MRAM, eMRAM, 및 OST-MRAM은 정적 메모리이면서 비휘발성 특성을 가지고 있다. 따라서, 엣지 디바이스(1000)의 전원이 차단된 후 다시 부팅될 때 메인 메모리 시스템(1070)에서 인공신경망모델을 다시 제공받지 않아도 될 수 있는 효과가 있다. 단, 본 개시에 따른 예시들은 이에 제한되지 않는다.
상술한 구성에 따르면, 신경망 프로세싱 유닛(100)은 인공신경망모델의 추론 연산 시 DRAM에 의한 소비전력을 대폭 저감할 수 있는 효과가 있다. 부연 설명하면, NPU 메모리 시스템(120)의 SRAM의 메모리셀(memory cell)은 예를 들면, 4개 내지 6개의 트랜지스터로 구성되어 하나의 비트 데이터를 저장할 수 있다. 단, 본 개시에 따른 예시들은 이에 제한되지 않는다. 부연 설명하면, NPU 메모리 시스템(120)의 MRAM의 메모리셀(memory cell)은 예를 들면, 하나의 자기 터널 정션(magnetic tunnel junction; MTJ)과 하나의 트랜지스터로 구성되어 하나의 비트 데이터를 저장할 수 있다. 단, 본 개시에 따른 예시들은 이에 제한되지 않는다.
더 나아가서, 신경망 프로세싱 유닛(100)은 엣지 디바이스(1000)의 메인 메모리 시스템(1070)의 메모리 개수, 메모리 종류, 데이터 전송 속도, 메모리 크기 중 적어도 하나 이상의 데이터를 확인하도록 구성될 수 있다. 예를 들면, 신경망 프로세싱 유닛(100)은 엣지 디바이스(1000)에게 시스템 데이터를 요청해서, 메모리 시스템(1070)의 메모리 크기 및 속도 등의 데이터를 제공받을 수 있다. 단, 본 개시에 따른 예시들은 이에 제한되지 않는다.
만약, 엣지 디바이스(1000)의 메인 메모리 시스템(1070)이 DRAM을 포함할 경우, 신경망 프로세싱 유닛(100)은 메인 메모리 시스템(1070)과의 메모리 액세스를 최소화하도록 동작될 수 있다. 단, 본 개시에 따른 예시들은 이에 제한되지 않는다. 즉, NPU 메모리 시스템(120)은 인공신경망모델의 데이터 크기 및 연산 단계를 고려하여 특정 메모리 어드레스를 재사용하도록 구성된 저전력 메모리 시스템일 수 있다.
즉, 엣지 디바이스(1000)의 신경망 프로세싱 유닛(100)은 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보에 기초하여 NPU 메모리 시스템(120) 내부에 저장된 데이터의 재사용을 제어하고, 신경망 프로세싱 유닛(100)은 데이터 재사용 시 메인 메모리 시스템(120)에 메모리 액세스 요청을 하지 않도록 구성될 수 있다.
즉, 본 개시의 일 예시에 따른 신경망 프로세싱 유닛(100)은 신경망 프로세싱 유닛(100)에서 작동될 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보에 기초하여, 메인 메모리 시스템(1070)에 메모리 액세스 요청을 최소화할 수 있으며, NPU 메모리 시스템(120) 내부에 저장된 데이터의 재사용 빈도를 증가시킬 수 있다. 따라서 NPU 메모리 시스템(120)의 정적 메모리의 사용 빈도가 증가될 수 있으며, 신경망 프로세싱 유닛(100)의 소비 전력을 저감하고 연산 속도를 향상시킬 수 있는 효과가 있다.
즉, 신경망 프로세싱 유닛(100)은 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보에 기초하여 NPU 메모리 시스템(120) 내부에 저장된 데이터의 재사용을 제어하고, 신경망 프로세싱 유닛(100)은 데이터 재사용 시 메인 메모리 시스템(1070)에 메모리 액세스 요청을 하지 않도록 구성될 수 있다.
신경망 프로세싱 유닛(100)은 엣지 디바이스(100) 부팅(booting) 시 구동할 인공신경망모델을 메인 메모리 시스템(1070)에서 제공받아 NPU 메모리 시스템(120)에 저장하고, 신경망 프로세싱 유닛(100)은 NPU 메모리 시스템(120)에 저장된 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보에 기초하여 추론연산을 수행하도록 구성될 수 있다.
신경망 프로세싱 유닛(100)이 NPU 메모리 시스템(120) 내부에 저장된 데이터를 재사용 하도록 동작 할 경우, 신경망 프로세싱 유닛(100)은 소비 전력 저감을 위해서 메인 메모리 시스템(1070)에 데이터 액세스 요청 횟수를 최소화할 수 있다. 더 나아가서 신경망 프로세싱 유닛(100)은 엣지 디바이스(1000) 부팅 시 최초 1회만 인공신경망모델 데이터를 받아오고, 이후의 추론 연산은 NPU 메모리 시스템(120)에 저장된 데이터를 재사용하도록 구성될 수 있다.
예를 들면, 신경망 프로세싱 유닛(100)에 저장된 인공신경망모델이 AI 키워드 인식 모델일 경우 키워드 추론 연산을 위한 음성 데이터를 마이크로폰(1022)으로부터 입력 받아 신경망 프로세싱 유닛(100)에 제공하고, 인공신경망모델의 데이터는 NPU 메모리 시스템(120)에 저장하고, 저장된 데이터 중 재사용 가능한 데이터 분석해서 데이터 재사용율을 향상시킬 수 있다.
예를 들면, 신경망 프로세싱 유닛(100)에 저장된 인공신경망모델이 AI 객체 인식 모델일 경우 객체 추론 연산을 위한 영상 데이터를 카메라(1021)로부터 입력 받아 신경망 프로세싱 유닛(100)에 제공하고, 인공신경망모델의 데이터는 NPU 메모리 시스템(120)에 저장하고, 저장된 데이터 중 재사용 가능한 데이터 분석해서 데이터 재사용율을 향상시킬 수 있다.
이때, 신경망 프로세싱 유닛(100)은 NPU 메모리 시스템(120)에 저장된 데이터 만으로 동작하기 위해서 메인 메모리 시스템(1070)에서 불러올 인공신경망모델의 데이터 크기와 NPU 메모리 시스템(120)의 메모리 크기를 비교할 수 있다. 만약 NPU 메모리 시스템(120)의 메모리 크기가 인공신경망모델의 데이터 크기보다 클 경우, 신경망 프로세싱 유닛(100)은 NPU 메모리 시스템(120)에 저장된 데이터만으로 동작하도록 구성될 수 있다.
즉, 신경망 프로세싱 유닛(100)은 메인 메모리 시스템(1070)에서 불러올 인공신경망모델의 데이터 크기와 NPU 메모리 시스템(120)의 메모리 크기를 비교하도록 구성될 수 있다.
즉, 신경망 프로세싱 유닛(100)은 메인 메모리 시스템(1070)에 저장된 인공신경망모델의 데이터 크기와 NPU 메모리 시스템(120)의 메모리 크기를 비교하도록 구성될 수 있다. 인공신경망모델의 데이터 크기가 NPU 메모리 시스템(120)의 메모리 크기보다 더 작은 경우, NPU 메모리 시스템(120)에 저장된 데이터를 재사용하면서 추론 연산을 반복할 수 있는 효과가 있다.
본 개시의 예시에 따른 신경망 프로세싱 유닛(100)에 저장된 NPU 메모리 시스템(120)에 저장된 데이터가 재사용될 경우, NPU 메모리 시스템(120)은 추가적인 메모리 액세스를 저감할 수 있다. 따라서, NPU 메모리 시스템(120)이 메모리 액세스에 필요한 연산 시간을 단축할 수 있는 효과가 있으며, 메모리 액세스에 필요한 소비 전력을 저감할 수 있는 효과가 있다. 즉, 소비 전력을 저감하는 동시에 추론 속도를 향상시킬 수 있는 효과가 있다.
도 5는 본 개시의 예시들에 적용될 수 있는 예시적인 인공신경망모델을 설명하는 개략적인 개념도이다.
이하 도 2 내지 도 5를 참조하여 신경망 프로세싱 유닛(100)에서 작동될 수 있는 예시적인 인공신경망모델(1300)의 연산에 대하여 설명한다.
도 5의 예시적인 인공신경망모델(1300)은 엣지 디바이스(100)에서 학습되거나 또는 별도의 기계 학습 장치에서 학습된 인공 신경망일 수 있다. 인공신경망모델(1300)은 객체 인식, 음성 인식 등 다양한 추론 기능을 수행하도록 학습된 인공 신경망일 수 있다.
인공신경망모델(1300)은 심층 신경망(DNN, Deep Neural Network)의 한 종류인 컨벌루션 신경망(CNN, Convolutional Neural Network)일 수 있다. 컨벌루션 신경망은 하나 또는 여러 개의 컨벌루션 계층(convolutional layer)과 통합 계층(pooling layer), 완전하게 연결된 계층(fully connected layer)들의 조합으로 구성될 수 있다. 컨벌루션 신경망은 2차원 데이터의 학습 및 추론에 적합한 구조를 가지고 있으며, 역전달(Backpropagation algorithm)을 통해 학습될 수 있다.
단, 본 개시의 예시들에 따른 인공신경망모델(1300)은 심층 신경망에 제한되지 않는다.
예를 들어, 인공신경망모델(1300)은 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 등의 모델로 구현될 수 있다. 단, 본 개시는 상술한 모델들에 제한되지 않는다. 또한 인공신경망모델(1300)은 적어도 두 개의 서로 다른 모델들에 기초한 앙상블 모델일 수도 있다.
인공신경망모델(1300)은 신경망 프로세싱 유닛(100)의 NPU 메모리 시스템(120)에 저장될 수 있다. 인공신경망모델(1300)은 엣지 디바이스(1000)의 메인 메모리 시스템(1070)의 비휘발성 메모리 및/또는 휘발성 메모리에 저장된 다음 인공신경망모델(1300) 동작 시 신경망 프로세싱 유닛(100)에 저장되는 방식으로 구현되는 것도 가능하다. 단, 이에 제한되지 않으며, 인공신경망모델(1300)은 엣지 디바이스(1000)의 무선 통신부(1010)에 의해서 신경망 프로세싱 유닛(100)에 제공될 수도 있다.
이하 도 5를 참조하여 예시적인 인공신경망모델(1300)이 신경망 프로세싱 유닛(100)에서 추론되는 과정을 설명한다.
인공신경망모델(1300)은 입력 레이어(1310), 제1 연결망(1320), 제1 은닉 레이어(1330), 제2 연결망(1340), 제2 은닉 레이어(1350), 제3 연결망(1360), 및 출력 레이어(1370)을 포함하도록 구성된 예시적인 심층 신경망 모델이다. 단, 본 개시의 예시들에 따른 인공신경망모델은 이에 제한되지 않는다. 제1 은닉 레이어(1330) 및 제2 은닉 레이어(1350)는 복수의 은닉 레이어로 지칭되는 것도 가능하다.
입력 레이어(1310)는 예시적으로, x1 및 x2 입력 노드를 포함할 수 있다. 즉, 입력 레이어(1310)는 2개의 노드 값을 포함하는 노드 데이터를 포함할 수 있다. NPU 스케줄러(130)는 입력 레이어(1310)의 입력 데이터가 저장되는 메모리 어드레스를 NPU 메모리 시스템(120)에 설정할 수 있다.
제1 연결망(1320)은 예시적으로, 입력 레이어(1310)의 각각의 노드와 제1 은닉 레이어(1330)의 각각의 노드를 연결하는 6개의 가중치 값을 포함하는 가중치 데이터를 가지는 연결망들을 포함할 수 있다. 각각의 연결망은 각각의 가중치 데이터를 포함한다. NPU 스케줄러(130)는 제1 연결망(1320)의 가중치 데이터가 저장되는 메모리 어드레스를 NPU 메모리 시스템(120)에 설정할 수 있다. 각각의 연결망의 가중치 데이터는 대응되는 입력 노드 데이터와 곱해지고, 곱해진 값들의 누산된 값이 제1 은닉 레이어(1330)에 저장된다.
제1 은닉 레이어(1330)는 예시적으로 a1, a2, 및 a3 노드를 포함할 수 있다. 즉, 제1 은닉 레이어(1330)는 3개의 노드 값을 포함하는 노드 데이터를 포함할 수 있다. NPU 스케줄러(130)는 제1 은닉 레이어(1330)의 노드 데이터가 저장되는 메모리 어드레스를 NPU 메모리 시스템(120)에 설정할 수 있다.
제2 연결망(1340)은 예시적으로, 제1 은닉 레이어(1330)의 각각의 노드와 제2 은닉 레이어(1350)의 각각의 노드를 연결하는 9개의 가중치 값을 포함하는 가중치 데이터를 가지는 연결망들을 포함할 수 있다. 각각의 연결망은 각각의 가중치 데이터를 포함한다. NPU 스케줄러(130)는 제2 연결망(1340)의 가중치 데이터가 저장되는 메모리 어드레스를 NPU 메모리 시스템(120)에 설정할 수 있다. 각각의 연결망의 가중치 데이터는 대응되는 입력 노드 데이터와 곱해지고, 곱해진 값들의 누산된 값이 제2 은닉 레이어(1350)에 저장된다.
제2 은닉 레이어(1350)는 예시적으로 b1, b2, 및 b3 노드를 포함할 수 있다. 즉, 제2 은닉 레이어(1350)는 3개의 노드 값을 포함하는 노드 데이터를 포함할 수 있다. NPU 스케줄러(130)는 제2 은닉 레이어(1350)의 노드 데이터가 저장되는 메모리 어드레스를 NPU 메모리 시스템(120)에 설정할 수 있다.
제3 연결망(1360)은 예시적으로, 제2 은닉 레이어(1350)의 각각의 노드와 출력 레이어(1370)의 각각의 노드를 연결하는 6개의 가중치 값을 포함하는 가중치 데이터를 가지는 연결망들을 포함할 수 있다. 각각의 연결망은 각각의 가중치 데이터를 포함한다. NPU 스케줄러(130)는 제3 연결망(1360)의 가중치 데이터가 저장되는 메모리 어드레스를 NPU 메모리 시스템(120)에 설정할 수 있다. 각각의 연결망의 가중치 데이터는 대응되는 입력 노드 데이터와 곱해지고, 곱해진 값들의 누산된 값이 출력 레이어(1370)에 저장된다.
출력 레이어(1370)는 예시적으로 y1, 및 y2 노드를 포함할 수 있다. 즉, 출력 레이어(1370)는 2개의 노드 값을 포함하는 노드 데이터를 포함할 수 있다. NPU 스케줄러(130)는 출력 레이어(1370)의 노드 데이터가 저장되는 메모리 어드레스를 NPU 메모리 시스템(120)에 설정할 수 있다.
즉, NPU 스케줄러(130)는 프로세싱 엘리먼트 어레이(100)에서 작동할 인공신경망모델의 구조를 분석하거나 또는 제공받을 수 있다. 인공신경망모델이 포함할 수 있는 인공 신경망의 데이터는 각각의 레이어의 노드 데이터, 레이어들의 배치 구조 데이터, 각각의 레이어의 노드를 연결하는 연결망 각각의 가중치 데이터, 또는 인공신경망 데이터 지역성 정보를 포함할 수 있다.
NPU 스케줄러(130)는 예시적인 인공신경망모델(1300)의 구조 데이터 또는 인공신경망 데이터 지역성 정보를 제공받았기 때문에 NPU 스케줄러(130)는 인공신경망모델(1300)의 입력부터 출력까지의 연산 순서를 인공신경망의 레이어 별로 또는 신경망 프로세싱 유닛이 처리하는 워드 단위로 파악하는 것도 가능하다.
따라서, NPU 스케줄러(130)는 각각의 레이어의 MAC 연산 값들이 저장되는 메모리 어드레스를 스케줄링 순서를 고려해서 NPU 메모리 시스템(120)에 설정할 수 있다. 예를 들면, 특정 메모리 어드레스는 입력 레이어(1310)와 제1 연결망(1320)의 MAC 연산 값일 수 있으며, 동시에 제1 은닉 레이어(1330)의 입력 데이터 일 수 있다. 단 본 개시는 MAC 연산 값에 제한되지 않으며, MAC 연산 값은 인공 신경망 연산 값으로 지칭되는 것도 가능하다.
이때, NPU 스케줄러(130)는 입력 레이어(1310)와 제1 연결망(1320)의 MAC 연산 결과가 제1 은닉 레이어(1330)의 입력 데이터인 것을 알기 때문에, 동일한 메모리 어드레스를 사용하도록 제어할 수 있다. 즉, NPU 스케줄러(130)는 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보에 기초하여 MAC 연산 값을 재사용할 수 있다. 따라서 NPU 시스템 메모리(120)가 메모리 재사용 기능을 제공할 수 있는 효과가 있다.
즉, NPU 스케줄러(130)는 스케줄링 순서에 따른 인공신경망모델(1300)의 MAC 연산 값을 NPU 메모리 시스템(120)의 특정 메모리 어드레스에 저장하고, MAC 연산 값이 저장된 특정 메모리 어드레스는 다음 스케줄링 순서의 MAC 연산의 입력 데이터로 사용될 수 있다.
MAC 연산을 제1 프로세싱 엘리먼트(PE1) 관점에서 자세히 설명한다. 제1 프로세싱 엘리먼트(PE1)는 제1 은닉 레이어(1330)의 a1 노드의 MAC 연산을 수행하도록 지정될 수 있다.
첫째, 제1 프로세싱 엘리먼트(PE1)는 곱셈기(111)의 제1 입력부에 입력 레이어(1310)의 x1 노드 데이터를 입력하고, 제2 입력부에 x1 노드와 a1 노드 사이의 가중치 데이터를 입력한다. 가산기(112)는 곱셈기(111)의 연산 값과 누산기(113)의 연산 값을 더한다. 이때 (L)loops가 0일 경우, 누산된 값이 없기 때문에, 누산된 값은 0이다. 따라서 가산기(112)의 연산 값은 곱셈기(111)의 연산 값과 동일할 수 있다. 이때, (L)loops의 카운터 값은 1이 될 수 있다.
둘째, 제1 프로세싱 엘리먼트(PE1)는 곱셈기(111)의 제1 입력부에 입력 레이어(1310)의 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이 되도록 소정의 하위 비트를 제거할 수 있다.
MAC 연산을 제2 프로세싱 엘리먼트(PE2) 관점에서 자세히 설명한다. 제2 프로세싱 엘리먼트(PE2)는 제1 은닉 레이어(1330)의 a2 노드의 MAC 연산을 수행하도록 지정될 수 있다.
첫째, 제2 프로세싱 엘리먼트(PE2)는 곱셈기(111)의 제1 입력부에 입력 레이어(1310)의 x1 노드 데이터를 입력하고, 제2 입력부에 x1 노드와 a2 노드 사이의 가중치 데이터를 입력한다. 가산기(112)는 곱셈기(111)의 연산 값과 누산기(113)의 연산 값을 더한다. 이때 (L)loops가 0일 경우, 누산된 값이 없기 때문에, 누산된 값은 0이다. 따라서 가산기(112)의 연산 값은 곱셈기(111)의 연산 값과 동일할 수 있다. 이때, (L)loops의 카운터 값은 1이 될 수 있다.
둘째, 제2 프로세싱 엘리먼트(PE2)는 곱셈기(111)의 제1 입력부에 입력 레이어(1310)의 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)은 누산된 값에 따라 적절히 조절될 수 있다.
MAC 연산을 제3 프로세싱 엘리먼트(PE3) 관점에서 자세히 설명한다. 제3 프로세싱 엘리먼트(PE3)는 제1 은닉 레이어(1330)의 a3 노드의 MAC 연산을 수행하도록 지정될 수 있다.
첫째, 제3 프로세싱 엘리먼트(PE3)는 곱셈기(111)의 제1 입력부에 입력 레이어(1310)의 x1 노드 데이터를 입력하고, 제2 입력부에 x1 노드와 a3 노드 사이의 가중치 데이터를 입력한다. 가산기(112)는 곱셈기(111)의 연산 값과 누산기(113)의 연산 값을 더한다. 이때 (L)loops가 0일 경우, 누산된 값이 없기 때문에, 누산된 값은 0이다. 따라서 가산기(112)의 연산 값은 곱셈기(111)의 연산 값과 동일할 수 있다. 이때, (L)loops의 카운터 값은 1이 될 수 있다.
둘째, 제3 프로세싱 엘리먼트(PE3)는 곱셈기(111)의 제1 입력부에 입력 레이어(1310)의 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 은닉 레이어(1330)의 MAC 연산을 수행할 수 있다.
MAC 연산을 제4 프로세싱 엘리먼트(PE4) 관점에서 자세히 설명한다. 제4 프로세싱 엘리먼트(PE4)는 제2 은닉 레이어(1350)의 b1 노드의 MAC 연산을 수행하도록 지정될 수 있다.
첫째, 제4 프로세싱 엘리먼트(PE4)는 곱셈기(111)의 제1 입력부에 제1 은닉 레이어(1330)의 a1 노드 데이터를 입력하고, 제2 입력부에 a1 노드와 b1 노드 사이의 가중치 데이터를 입력한다. 가산기(112)는 곱셈기(111)의 연산 값과 누산기(113)의 연산 값을 더한다. 이때 (L)loops가 0일 경우, 누산된 값이 없기 때문에, 누산된 값은 0이다. 따라서 가산기(112)의 연산 값은 곱셈기(111)의 연산 값과 동일할 수 있다. 이때, (L)loops의 카운터 값은 1이 될 수 있다.
둘째, 제4 프로세싱 엘리먼트(PE4)는 곱셈기(111)의 제1 입력부에 제1 은닉 레이어(1330)의 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 입력부에 입력 레이어(1310)의 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)은 누산된 값에 따라 적절히 조절될 수 있다.
MAC 연산을 제5 프로세싱 엘리먼트(PE5) 관점에서 자세히 설명한다. 제5 프로세싱 엘리먼트(PE5)는 제2 은닉 레이어(1350)의 b2 노드의 MAC 연산을 수행하도록 지정될 수 있다.
첫째, 제5 프로세싱 엘리먼트(PE5)는 곱셈기(111)의 제1 입력부에 제1 은닉 레이어(1330)의 a1 노드 데이터를 입력하고, 제2 입력부에 a1 노드와 b2 노드 사이의 가중치 데이터를 입력한다. 가산기(112)는 곱셈기(111)의 연산 값과 누산기(113)의 연산 값을 더한다. 이때 (L)loops가 0일 경우, 누산된 값이 없기 때문에, 누산된 값은 0이다. 따라서 가산기(112)의 연산 값은 곱셈기(111)의 연산 값과 동일할 수 있다. 이때, (L)loops의 카운터 값은 1이 될 수 있다.
둘째, 제5 프로세싱 엘리먼트(PE5)는 곱셈기(111)의 제1 입력부에 제1 은닉 레이어(1330)의 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 입력부에 입력 레이어(1310)의 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)은 누산된 값에 따라 적절히 조절될 수 있다.
MAC 연산을 제6 프로세싱 엘리먼트(PE6) 관점에서 자세히 설명한다. 제6 프로세싱 엘리먼트(PE6)는 제2 은닉 레이어(1350)의 b3 노드의 MAC 연산을 수행하도록 지정될 수 있다.
첫째, 제6 프로세싱 엘리먼트(PE6)는 곱셈기(111)의 제1 입력부에 제1 은닉 레이어(1330)의 a1 노드 데이터를 입력하고, 제2 입력부에 a1 노드와 b3 노드 사이의 가중치 데이터를 입력한다. 가산기(112)는 곱셈기(111)의 연산 값과 누산기(113)의 연산 값을 더한다. 이때 (L)loops가 0일 경우, 누산된 값이 없기 때문에, 누산된 값은 0이다. 따라서 가산기(112)의 연산 값은 곱셈기(111)의 연산 값과 동일할 수 있다. 이때, (L)loops의 카운터 값은 1이 될 수 있다.
둘째, 제6 프로세싱 엘리먼트(PE6)는 곱셈기(111)의 제1 입력부에 제1 은닉 레이어(1330)의 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 입력부에 입력 레이어(1310)의 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 은닉 레이어(1350)의 MAC 연산을 수행할 수 있다.
MAC 연산을 제7 프로세싱 엘리먼트(PE7) 관점에서 자세히 설명한다. 제7 프로세싱 엘리먼트(PE7)는 출력 레이어(1370)의 y1 노드의 MAC 연산을 수행하도록 지정될 수 있다.
첫째, 제7 프로세싱 엘리먼트(PE7)는 곱셈기(111)의 제1 입력부에 제2 은닉 레이어(1350)의 b1 노드 데이터를 입력하고, 제2 입력부에 b1 노드와 y1 노드 사이의 가중치 데이터를 입력한다. 가산기(112)는 곱셈기(111)의 연산 값과 누산기(113)의 연산 값을 더한다. 이때 (L)loops가 0일 경우, 누산된 값이 없기 때문에, 누산된 값은 0이다. 따라서 가산기(112)의 연산 값은 곱셈기(111)의 연산 값과 동일할 수 있다. 이때, (L)loops의 카운터 값은 1이 될 수 있다.
둘째, 제7 프로세싱 엘리먼트(PE7)는 곱셈기(111)의 제1 입력부에 제2 은닉 레이어(1350)의 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 입력부에 입력 레이어(1310)의 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)은 누산된 값에 따라 적절히 조절될 수 있다.
MAC 연산을 제8 프로세싱 엘리먼트(PE8) 관점에서 자세히 설명한다. 제8 프로세싱 엘리먼트(PE8)는 출력 레이어(1370)의 y2 노드의 MAC 연산을 수행하도록 지정될 수 있다.
첫째, 제8 프로세싱 엘리먼트(PE8)는 곱셈기(111)의 제1 입력부에 제2 은닉 레이어(1350)의 b1 노드 데이터를 입력하고, 제2 입력부에 b1 노드와 y2 노드 사이의 가중치 데이터를 입력한다. 가산기(112)는 곱셈기(111)의 연산 값과 누산기(113)의 연산 값을 더한다. 이때 (L)loops가 0일 경우, 누산된 값이 없기 때문에, 누산된 값은 0이다. 따라서 가산기(112)의 연산 값은 곱셈기(111)의 연산 값과 동일할 수 있다. 이때, (L)loops의 카운터 값은 1이 될 수 있다.
둘째, 제8 프로세싱 엘리먼트(PE8)는 곱셈기(111)의 제1 입력부에 제2 은닉 레이어(1350)의 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 입력부에 입력 레이어(1310)의 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)를 동시에 사용하여 출력 레이어(1370)의 MAC 연산을 수행할 수 있다.
제 8 프로세싱 엘리먼트(PE8)의 MAC 연산이 끝나면, 인공신경망모델(1300)의 추론 연산이 마무리 될 수 있다. 즉, 인공신경망모델(1300)은 하나의 프레임의 추론 연산을 완료했다고 판단될 수 있다. 만약 신경망 프로세싱 유닛(100)이 실시간으로 동영상 데이터를 추론한다면, 입력 레이어(1310)의 x1 및 x2 입력 노드에 다음 프레임의 영상 데이터가 입력될 수 있다. 이때, NPU 스케줄러(130)는 입력 레이어(1310)의 입력 데이터를 저장한 메모리 어드레스에 다음 프레임의 영상 데이터를 저장할 수 있다. 이러한 과정을 프레임마다 반복하면 신경망 프로세싱 유닛(100)은 실시간으로 추론 연산을 처리할 수 있다. 또한 한번 설정된 메모리 어드레스를 재사용할 수 있는 효과가 있다
도 5의 인공신경망모델(1300)의 경우를 요약하면, 신경망 프로세싱 유닛(100)은 인공신경망모델(1300)의 추론 연산을 위해서 NPU 스케줄러(130)가 인공신경망모델(1300)의 구조 데이터 또는 인공신경망 데이터 지역성 정보에 기초하여, 연산 스케줄링 순서를 결정할 수 있다. NPU 스케줄러(130)는 연산 스케줄링 순서에 기초하여 NPU 메모리 시스템(120)에 필요한 메모리 어드레스를 설정할 수 있다. NPU 스케줄러(130)는 인공신경망모델(1300)의 구조 데이터 또는 인공신경망 데이터 지역성 정보에 기초하여, 메모리를 재사용 하는 메모리 어드레스를 설정할 수 있다. NPU 스케줄러(130)는 추론 연산에 필요한 프로세싱 엘리먼트들(PE1 내지 PE8)을 지정하여 추론 연산을 수행할 수 있다.
부연 설명하면, 하나의 노드에 연결되는 가중치 데이터가 L개 만큼 증가하면, 프로세싱 엘리먼트의 누산기의 (L)loops의 횟수를 L-1로 설정할 수 있다. 즉, 누산기는 인공 신경망의 가중치 데이터가 증가하더라도, 누산기의 누적 횟수를 증가시킴으로써 추론 연산을 용이하게 수행할 수 있는 효과가 있다.
즉, 본 개시의 일 예시에 따른 신경망 프로세싱 유닛(100)의 NPU 스케줄러(130)는 입력 레이어(1310), 제1 연결망(1320), 제1 은닉 레이어(1330), 제2 연결망(1340), 제2 은닉 레이어(1350), 제3 연결망(1360), 및 출력 레이어(1370)의 구조 데이터를 포함하는 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보에 기초하여 프로세싱 엘리먼트 어레이(100) 및 NPU 메모리 시스템(120)을 제어할 수 있다.
즉, NPU 스케줄러(130)는 입력 레이어(1310)의 노드 데이터, 제1 연결망(1320)의 가중치 데이터, 제1 은닉 레이어(1330)의 노드 데이터, 제2 연결망(1340)의 가중치 데이터, 제2 은닉 레이어(1350)의 노드 데이터, 제3 연결망(1360)의 가중치 데이터, 및 출력 레이어(1370)의 노드 데이터에 대응되는 메모리 어드레스 값들을 NPU 메모리 시스템(110)에 설정할 수 있다.
이하 NPU 스케줄러(130)의 스케줄링에 대하여 자세히 설명한다. NPU 스케줄러(130)는 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보에 기초하여 인공신경망모델의 연산 순서를 스케줄링 할 수 있다.
NPU 스케줄러(130)는 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보에 기초하여 인공신경망모델의 레이어의 노드 데이터 및 연결망의 가중치 데이터가 저장된 메모리 어드레스 값을 획득할 수 있다.
예를 들면, NPU 스케줄러(130)는 메인 메모리 시스템(1070)에 저장된 인공신경망모델의 레이어의 노드 데이터 및 연결망의 가중치 데이터가 저장된 메모리 어드레스 값을 획득할 수 있다. 따라서 NPU 스케줄러(130)는 구동할 인공신경망모델의 레이어의 노드 데이터 및 연결망의 가중치 데이터를 메인 메모리 시스템(1070)에서 가져와서 NPU 메모리 시스템(120)에 저장할 수 있다. 각각의 레이어의 노드 데이터는 대응되는 각각의 메모리 어드레스 값을 가질 수 있다. 각각의 연결망의 가중치 데이터는 대응되는 각각의 메모리 어드레스 값을 가질 수 있다.
NPU 스케줄러(130)는 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보, 예를 들면, 인공신경망모델의 인공 신경망의 레이어들의 배치 구조 데이터 또는 컴파일 될 때 구성된 인공신경망 데이터 지역성 정보에 기초해서 프로세싱 엘리먼트 어레이(110)의 연산 순서를 스케줄링 할 수 있다.
예를 들면, NPU 스케줄러(130)는 4개의 인공 신경망 레이어들과 각각의 레이어들을 연결하는 3개의 레이어의 가중치 값들을 가지는 가중치 데이터, 즉, 연결망 데이터를 획득할 수 있다. 이러한 경우 NPU 스케줄러(130)가 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보를 기초로 프로세싱 순서를 스케줄링 하는 방법에 대하여 예를 들어 아래에서 설명한다.
예를 들면, NPU 스케줄러(130)는 추론 연산을 위한 입력 데이터를 인공신경망모델(1300)의 입력 레이어(1310)인 제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 연결망에 대응되는 출력 레이어(1370)인 제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)은 인공 신경망의 레이어들의 구조와, 구조에 대응되는 연산 순서 데이터에 기초하여, 프로세싱 순서를 스케줄링 하도록 구성될 수 있다.
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)는 인공신경망모델(1300)의 구조 데이터 또는 인공신경망 데이터 지역성 정보를 활용하여 입력 레이어(1310), 제1 은닉 레이어(1330), 제2 은닉 레이어(1350) 및 출력 레이어(1370)의 노드 데이터는 변수(variable)로 설정하고, 제1 연결망(1320)의 가중치 데이터, 제2 연결망(1340)의 가중치 데이터, 및 제3 연결망(1360)의 가중치 데이터는 상수(constant)로 설정할 수 있다. 즉 NPU 스케줄러(130)는 상수 값과 변수 값을 구분할 수 있다. 단, 본 개시는 상수와 변수 데이터 타입에 제한되지 않으며, 본질적으로, 자주 가변 되는 값과, 그러지 않은 값을 구분하여 NPU 메모리 시스템(120)의 재사용율을 향상시킬 수 있다.
즉, NPU 시스템 메모리(120)는 신경망 프로세싱 유닛(100)의 추론 연산이 지속되는 동안 NPU 시스템 메모리(120)에 저장된 연결망들의 가중치 데이터를 보존하도록 구성될 수 있다. 따라서 메모리 읽기 쓰기 동작을 저감할 수 있는 효과가 있다.
즉, NPU 시스템 메모리(120)는 추론 연산이 지속되는 동안 NPU 시스템 메모리(120)에 저장된 MAC 연산 값을 재사용 하도록 구성될 수 있다.
즉, 프로세싱 엘리먼트 어레이(110)의 각각의 프로세싱 엘리먼트의 제1 입력부의 입력 데이터(N)bit가 저장된 메모리 어드레스의 데이터 갱신 횟수는 제2 입력부의 입력 데이터(M)bit가 저장된 메모리 어드레스의 데이터 갱신 횟수보다 더 많을 수 있다. 즉, 제2 입력부의 데이터 갱신 횟수 제1 입력부의 데이터 갱신 횟수보다 적어질 수 있는 효과가 있다.
도 6은 본 개시의 다른 예시에 따른 신경망 프로세싱 유닛을 설명하는 개략적인 개념도이다.
본 개시의 다른 예시에 따른 신경망 프로세싱 유닛(200)은 프로세싱 엘리먼트 어레이(110), NPU 메모리 시스템(120), NPU 스케줄러(130), 및 NPU 인터페이스(140)를 포함하고 NPU 배치 모드(BATCH MODE; 150)를 더 포함하도록 구성된다.
본 개시의 다른 예시에 따른 신경망 프로세싱 유닛(200)은 본 개시의 일 예시에 따른 신경망 프로세싱 유닛(100)과 비교하면, NPU 배치 모드(250)를 제외하곤 실질적으로 동일하기 때문에, 이하 단지 설명의 편의를 위해서 중복 설명은 생략할 수 있다.
본 개시의 다른 예시에 따른 신경망 프로세싱 유닛(200)은 배치 모드로 동작되도록 구성될 수 있다. 배치 모드란, 하나의 인공신경망모델을 활용하여 여러 개의 서로 다른 추론 연산을 동시에 수행할 수 있는 모드를 의미한다.
예를 들면, 본 개시의 예시들에 따른 엣지 디바이스(1000)의 카메라(1021)는 복수 개일 수 있다. 이러한 경우, 신경망 프로세싱 유닛(200)은 NPU 배치 모드(250)를 활성화하도록 구성될 수 있다. 만약 NPU 배치 모드(250)가 활성화 되면, 신경망 프로세싱 유닛(200)은 배치 모드로 동작할 수 있다.
예를 들면, 엣지 디바이스(1000)가 6개의 카메라를 포함하는 자율 주행 자동차인 경우, 신경망 프로세싱 유닛(200)은 NPU 배치 모드(250)를 활성화할 수 있다. NPU 배치 모드(250)가 활성화되면, 신경망 프로세싱 유닛(200)은 보행자 인식, 차량 인식, 장해물 인식 등을 추론하도록 학습된 하나의 인공신경망모델을 활용하여 6대의 카메라의 입력 영상들을 순차적으로 추론하도록 구성될 수 있다.
즉, 신경망 프로세싱 유닛(200)은 프로세싱 엘리먼트 어레이(PE1 to PE12), 프로세싱 엘리먼트 어레이(PE1 to PE12)에서 추론될 수 있는 인공신경망모델을 저장 또는 인공신경망모델의 적어도 일부 데이터를 저장하도록 구성된 NPU 메모리 시스템(120), 프로세싱 엘리먼트 어레이(PE1 to PE12) 및 NPU 메모리 시스템(120)을 제어하도록 구성된 NPU 스케줄러(130), 및 인공신경망모델을 활용하여 서로 다른 복수의 입력 데이터들을 추론하도록 구성된 NPU 배치 모드(250)를 포함하도록 구성될 수 있다. NPU 메모리 시스템(120)은 메모리 크기와 인공신경망모델의 데이터 크기에 따라 인공신경망모델의 전부 또는 일부를 저장할 수 있다.
부연 설명하면, 종래의 방식으로 6장의 512x512x3 규격의 이미지를 1초에 30 프레임으로 추론할 경우, 신경망 프로세싱 유닛은, 각각의 이미지 추론을 위해서 각각의 인공신경망모델을 할당하고, 각각의 인공신경망모델 추론 연산을 위한 각각의 메모리를 설정해야 한다. 즉, 종래의 경우, 신경망 프로세싱 유닛은 6개의 인공신경망모델을 개별 구동하는 것이 필요하며, 신경망 프로세싱 유닛 내부에서 각각의 인공신경망모델은 서로의 연관 관계를 판단할 수가 없다. 즉, 종래의 방식은 6개의 인공신경망모델을 병렬로 동시에 구동해야 하며, 종래의 방식은 본 개시의 다른 예시에 따른 배치 모드보다 NPU 메모리 시스템의 메모리가 6배 필요하게 되는 문제가 발생할 수 있다. 더욱이, NPU 시스템 메모리의 용량이 현저히 적을 경우, NPU 메모리 시스템은 6개의 인공신경망모델을 한번에 저장 못할 수 없을 수 있다. 이러한 경우 신경망 프로세싱 유닛은 메인 메모리 시스템에 6개의 인공신경망모델을 저장하고, NPU 인터페이스를 통해서 하나의 인공신경망모델의 추론 연산이 끝난 다음, 다른 인공신경망모델의 데이터를 메인 메모리 시스템으로부터 NPU 메모리 시스템으로 읽어 와야 한다. 도 4에서 상술하였듯이, NPU 메모리 시스템의 SRAM과 메인 메모리 시스템의 DRAM은 소비 전력 차이가 심하고, 메인 메모리 시스템에서 NPU 메모리 시스템으로 인공신경망모델을 읽어오는 시간 소비가 많이 발생되기 때문에, 이러한 경우 신경망 프로세싱 유닛의 개수를 늘려야 했으며, 이에 따른 소비 전력 증가와 비요 증가가 발생하는 문제가 존재했다.
한편, 본 개시의 다른 예시에 다른 신경망 프로세싱 유닛(200)의 배치 모드는 하나의 인공신경망모델을 활용하여 다수의 입력 데이터를 순차적으로 추론하도록 구성된 것을 특징으로 한다.
신경망 프로세싱 유닛(200)의 NPU 배치 모드(250)는 복수의 입력 데이터를 하나의 연속되는 데이터로 변환하도록 구성될 수 있다.
*
*
*예를 들면, NPU 배치 모드(250)는 6대의 카메라에서 입력되는 30 프레임의 동영상 데이터들을 하나의 180 프레임의 동영상으로 변환할 수 있다. 즉, NPU 배치 모드(250)는 복수의 영상 데이터들을 합쳐서 동작 프레임을 증가시킬 수 있다.
예를 들면, NPU 배치 모드(250)는 6대의 카메라에서 입력되는 입력 영상들의 프레임을 하나의 인공신경망모델을 활용하여 순차적으로 추론할 수 있다. 즉, NPU 배치 모드(250)는 인공신경망모델의 가중치 데이터를 재활용하여 서로 다른 복수의 입력 데이터들의 추론 연산을 수행할 수 있다.
부연 설명하면, 신경망 프로세싱 유닛(200)의 NPU 배치 모드(250)는 인공신경망모델의 제1 레이어의 가중치 데이터를 NPU 메모리 시스템(120)에 저장할 수 있다. 그리고 복수의 입력 데이터, 예를 들면, 6대의 카메라 입력 영상들과 제1 레이어의 가중치 데이터를 연산하여 6개의 제1 연산 값들 또는 제1 피처 맵들을 구할 수 있다. 즉, 제1 레이어의 가중치 데이터를 사용하여 6개의 연산 값을 순차적으로 계산할 수 있다. 계산된 복수의 제1 연산 값은 다음 레이어의 연산에서 재사용될 수 있다.
다음으로, 신경망 프로세싱 유닛(200)의 NPU 배치 모드(250)는 인공신경망모델의 제2 레이어의 가중치 데이터를 NPU 메모리 시스템(120)에 저장할 수 있다. 그리고 계산된 복수의 제1 연산 값과 제2 레이어의 가중치 데이터를 활용하여 제2 연산 값들을 구할 수 있다. 즉, 제2 레이어 가중치 데이터로 6개의 연산 값을 순차적으로 계산할 수 있다. 따라서 제2 레이어의 가중치 데이터의 재사용율이 향상될 수 있다.
다음으로, 신경망 프로세싱 유닛(200)의 NPU 배치 모드(250)는 인공신경망모델의 제3 레이어의 가중치 데이터를 NPU 메모리 시스템(120)에 저장할 수 있다. 그리고 계산된 복수의 제2 연산 값과 제3 레이어의 가중치 데이터를 활용하여 제3 연산 값들을 구할 수 있다. 즉, 제3 레이어 가중치 데이터로 6개의 연산 값을 순차적으로 계산할 수 있다. 따라서 제3 레이어의 가중치 데이터의 재사용율이 향상될 수 있다.
상술한 방법으로 신경망 프로세싱 유닛(200)의 NPU 배치 모드(250)가 동작할 수 있다.
상술한 구성에 따르면, 각각의 레이어의 가중치 데이터는 입력 데이터의 개수만큼 재사용될 수 있는 효과가 있다. 따라서 가중치 데이터의 메모리 재사용율이 보다 더 향상될 수 있는 효과가 있다. 특히 입력 데이터의 개수가 증가할수록 메모리 재사용이 비례하여 향상될 수 있는 효과가 있다.
상술한 구성에 따르면, 가중치 데이터를 메인 메모리 시스템(1070)에서 읽어오는 경우를 상당히 저감할 수 있는 효과가 있다. 특히 인공신경망모델의 가중치 데이터 크기는 입력 영상의 데이터 크기와 비교해서 상대적으로 가중치 데이터의 크기가 더 큰 경우가 많다. 따라서 가중치 데이터를 재사용하는 것이 소비 전력 저감, 동작 속도 향상, 메모리 읽기 시간 저감에도 더욱 더 효과적이다,
부연 설명하면, 메인 메모리 시스템(1070)은 시스템 버스(1060)를 통해서 데이터를 전달하기 때문에 메모리 전송 속도가 NPU 메모리 시스템(120)보다 현저히 떨어질 수 있으며 소비 전력이 급격히 증가할 수 있다. 하지만 NPU 배치 모드(250)는 하나의 인공신경망모델을 활용해서 복수의 추론 연산을 수행할 수 있기 때문에, 상술한 문제점들을 개선할 수 있는 효과가 있다.
상술한 구성에 따르면, NPU 스케줄러(130)는 하나의 인공신경망모델을 활용하여 6대 카메라의 입력 데이터들을 추론할 수 있는 효과가 있다. 특히 하나의 인공신경망모델의 데이터 크기가 예를 들어, 7MB이고, NPU 메모리 시스템(120)의 SRAM 메모리 크기가 10MB일 경우, NPU 배치 모드(250)에 의해서 인공신경망모델의 모든 데이터를 NPU 메모리 시스템(120)에 전부 저장할 수 있다.부연 설명하면, NPU 메모리 시스템(120)이 예를 들면, SRAM과 같은 정적 메모리이고 메인 메모리 시스템(1070)이 DRAM일 경우, NPU 메모리 시스템(120)은 메모리 종류 특성상 메인 메모리 시스템(1070)보다 10배 이상 빠르게 동작할 수 있다. 따라서, 실제 신경망 프로세싱 유닛(200)이 NPU 배치 모드(250)로 동작할 때, 추론 연산 량이 6배 증가할 수 있지만, NPU 메모리 시스템(120)만 사용할 수 있기 때문에 실질적으로 동작 속도가 종래의 방식보다 더 빨라질 수 있는 효과가 있다. 즉, 신경망 프로세싱 유닛(200)은 인공신경망모델의 데이터 크기와 NPU 메모리 시스템(120)의 메모리 크기를 비교할 수 있기 때문에, 메인 메모리 시스템(1070)과의 통신을 제거하거나 또는 최소화 할 수 있는 효과가 있다.
단, 상술한 구성은 NPU 배치 모드(250)에 한정되지 않으며 NPU 배치 모드(250)가 없는 본 개시의 다른 예시들에게 적용되는 것도 가능하다.
단, 본 개시에 따른 NPU 배치 모드(250)는 신경망 프로세싱 유닛(200)내부에 배치되는 것에 제한되지 않으며, NPU 배치 모드(250)는 엣지 디바이스(1000)에 포함되는 것도 가능하다.
도 7은 본 개시의 또 다른 예시에 따른 신경망 프로세싱 유닛을 설명하는 개략적인 개념도이다.
본 개시의 또 다른 예시에 따른 신경망 프로세싱 유닛(300)은 프로세싱 엘리먼트 어레이(310), NPU 메모리 시스템(120), NPU 스케줄러(130), 및 NPU 인터페이스(140)를 포함하도록 구성된다.
본 개시의 또 다른 예시에 따른 신경망 프로세싱 유닛(300)은 본 개시의 일 예시에 따른 신경망 프로세싱 유닛(100)과 비교하면, 프로세싱 엘리먼트 어레이(310)를 제외하곤 실질적으로 동일하기 때문에, 이하 단지 설명의 편의를 위해서 중복 설명은 생략할 수 있다.
본 개시의 또 다른 예시에 따른 프로세싱 엘리먼트 어레이(310)는 복수의 프로세싱 엘리먼트들(PE1 to PE12) 및 각각의 프로세싱 엘리먼트들(PE1 to PE12)에 대응되는 각각의 레지스터 파일들(RF1 to RF12)을 더 포함하도록 구성된다.
도 7에 도시된 복수의 프로세싱 엘리먼트들(PE1 to PE12) 및 복수의 레지스터 파일들(RF1 to RF12)은 단지 설명의 편의를 위한 예시이며, 복수의 프로세싱 엘리먼트들(PE1 to PE12) 및 복수의 레지스터 파일들(RF1 to RF12)의 개수는 제한되지 않는다.
복수의 프로세싱 엘리먼트들(PE1 to PE12) 및 복수의 레지스터 파일들(RF1 to RF12)의 개수에 의해서 프로세싱 엘리먼트 어레이(310)의 크기 또는 개수가 결정될 수 있다. 프로세싱 엘리먼트 어레이(310) 및 복수의 레지스터 파일들(RF1 to RF12)의 크기는 N x M 매트릭스 형태로 구현될 수 있다. 여기서 N 과 M은 0보다 큰 정수이다.
프로세싱 엘리먼트 어레이(310)의 어레이 크기는 신경망 프로세싱 유닛(300)이 작동하는 인공신경망모델의 특성을 고려하여 설계할 수 있다. 부연 설명하면, 레지스터 파일의 메모리 크기는 작동할 인공신경망모델의 데이터 크기, 요구되는 동작 속도, 요구되는 소비 전력 등을 고려하여 결정될 수 있다.
신경망 프로세싱 유닛(300)의 레지스터 파일들(RF1 to RF12)은 프로세싱 엘리먼트들(PE1 to PE12)과 직접 연결된 정적 메모리 유닛이다. 레지스터 파일들(RF1 to RF12)은 예를 들면, 플립플롭, 및/또는 래치 등으로 구성될 수 있다. 레지스터 파일들(RF1 to RF12)은 대응되는 프로세싱 엘리먼트들(RF1 to RF12)의 MAC 연산 값을 저장하도록 구성될 수 있다. 레지스터 파일들(RF1 to RF12)은 NPU 시스템 메모리(120)와 가중치 데이터 및/또는 노드 데이터를 제공하거나 제공 받도록 구성될 수 있다.
도 8은 본 개시의 또 다른 예시에 따른 신경망 프로세싱 유닛의 예시적인 레지스터 파일의 메모리 크기와 SRAM으로 구성된 예시적인 NPU 메모리 시스템의 메모리 크기에 따른 최대 전송 속도의 특성을 설명하는 개략적인 개념도이다.
도 8의 X 축은 메모리 크기를 의미한다. Y 축은 최대 전송 속도(MHz)를 의미한다. 도 8의 NPU 메모리 시스템(120)은 예시적으로 SRAM으로 이루어져 있다. 레지스터 파일은 메모리 크기가 증가할수록 최대 전송 속도(MHz)가 급격히 저하되는 특성을 가질 수 있다. 하지만 NPU 메모리 시스템(120)은 메모리 크기 증가에 따른 최대 전송 속도(MHz) 저하 특성이 레지스터 파일 대비 상대적으로 덜 하다.
이에 본 개시의 또 다른 예시에 따른 신경망 프로세싱 유닛(300)의 레지스터 파일들(RF1 to RF12)의 메모리 크기는 NPU 메모리 시스템(120)의 메모리 크기보다 상대적으로 더 작으며, 최대 전송 속도는 상대적으로 더 빠르게 구성될 수 있다.
즉, 복수의 레지스터 파일들(RF1 to RF12) 각각의 메모리 크기는 NPU 메모리 시스템(120)의 메모리 크기보다 상대적으로 더 작으며, 복수의 레지스터 파일들(RF1 to RF12) 각각의 최대 전송 속도는 NPU 메모리 시스템(120)의 최대 전송 속도보다 상대적으로 더 빠르게 구성될 수 있다.
예를 들면, 최대 전송 속도 향상을 위해서 각각의 레지스터 파일의 메모리 크기는 30KB 이하이고 NPU 메모리 시스템(120)의 메모리 크기는 레지스터 파일의 메모리 크기보다 더 클 수 있다.
예를 들면, 최대 전송 속도 향상을 위해서 각각의 레지스터 파일의 메모리 크기가 20KB 이하이고 NPU 메모리 시스템(120)의 메모리 크기는 레지스터 파일의 메모리 크기보다 더 큰 것이 보다 바람직할 수 있다. 단, 본 개시는 이에 제한되지 않는다.
상술한 구성에 따르면, NPU 메모리 시스템(120)의 메모리만 활용하는 경우와 비교해서, 프로세싱 엘리먼트 어레이(310)는 NPU 메모리 시스템(120)보다 상대적으로 더 빠른 최대 전송 속도를 가지는 메모리 크기의 레지스터 파일을 더 포함함으로써, 본 개시의 일 예시에 따른 신경망 프로세싱 유닛(100)보다 본 개시의 또 다른 예시에 따른 신경망 프로세싱 유닛(300)이 상대적으로 더 빠르게 연산하게 할 수 있는 효과가 있다.
즉, 복수의 레지스터 파일들(RF1 to RF12) 각각은 NPU 메모리 시스템(120)보다 상대적으로 더 빠른 최대 전송 속도를 가지는 메모리 크기를 가지도록 구성될 수 있다. 따라서 신경망 프로세싱 유닛(300)의 동작 속도를 향상시킬 수 있는 효과가 있다.
도 9는 본 개시의 또 다른 예시에 따른 신경망 프로세싱 유닛의 예시적인 레지스터 파일의 메모리 크기와 SRAM으로 구성된 예시적인 NPU 메모리 시스템의 메모리 크기에 따른 동일 전송 속도 기준 소비 전력 특성을 설명하는 개략적인 개념도이다.
도 9의 X 축은 메모리 크기를 의미한다. Y 축은 동일 전송 속도 기준 전력 소비량(mW/GHz)을 의미한다. 즉, 전송 속도가 1GHz로 동일할 경우 메모리 크기에 따른 전력 소비량 특성 변화를 의미한다. 도 9의 NPU 메모리 시스템(120)은 예시적으로 SRAM으로 이루어져 있다. 레지스터 파일은 메모리 크기가 증가할수록 동일 전송 속도 기준 전력 소비량(mW/GHz)이 급격히 증가되는 특성을 가질 수 있다. 하지만 NPU 메모리 시스템(120)은 메모리 크기가 증가하더라도 동일 전송 속도 기준 전력 소비량(mW/GHz) 증가 특성이 레지스터 파일 대비 상대적으로 덜 하다.
이에 본 개시의 또 다른 예시에 따른 신경망 프로세싱 유닛(300)의 레지스터 파일들(RF1 to RF12)의 메모리 크기는 NPU 메모리 시스템(120)의 메모리 크기보다 상대적으로 더 작으며, 동일 전송 속도 기준 전력 소비량이 상대적으로 적은 특징을 가지도록 구성될 수 있다.
즉, 복수의 레지스터 파일들(RF1 to RF12) 각각의 메모리 크기는 NPU 메모리 시스템(120)의 메모리 크기보다 상대적으로 더 작으며, 복수의 레지스터 파일들(RF1 to RF12) 각각의 동일 전송 속도 기준 전력 소비량은 NPU 메모리 시스템(120)의 동일 전송 속도 기준 전력 소비량 보다 상대적으로 더 적게 구성될 수 있다.
상술한 구성에 따르면, NPU 메모리 시스템(120)의 메모리만 활용하는 경우와 비교해서, 프로세싱 엘리먼트 어레이(310)는 NPU 메모리 시스템(120)보다 동일 전송 속도 기준 전력 소비량이 상대적으로 더 적은 특성을 가지는 메모리 크기의 레지스터 파일을 더 포함함으로써, 본 개시의 일 예시에 따른 신경망 프로세싱 유닛(100)보다 본 개시의 또 다른 예시에 따른 신경망 프로세싱 유닛(300)이 상대적으로 소비 전력을 더 저감하게 할 수 있는 효과가 있다.
즉, 복수의 레지스터 파일들(RF1 to RF12) 각각은 NPU 메모리 시스템(120)보다 동일 전송 속도 기준 전력 소비량이 상대적으로 더 작은 메모리 크기를 가지도록 구성될 수 있다. 따라서 신경망 프로세싱 유닛(300)의 전력 소비량을 저감 시킬 수 있는 효과가 있다.
즉, 복수의 레지스터 파일들(RF1 to RF12) 각각은 NPU 메모리 시스템(120)보다 상대적으로 더 빠른 최대 전송 속도를 가지고, 동일 전송 속도 기준 전력 소비량이 상대적으로 더 작은 크기의 메모리로 구성될 수 있다. 따라서 신경망 프로세싱 유닛(300)의 전력 소비량을 저감 시킬 수 있으며 동시에 신경망 프로세싱 유닛(300)의 동작 속도를 향상시킬 수 있는 효과가 있다.
도 10은 본 개시의 또 다른 예시에 따른 신경망 프로세싱 유닛을 설명하는 개략적인 개념도이다.
본 개시의 또 다른 예시에 따른 신경망 프로세싱 유닛(400)은 프로세싱 엘리먼트 어레이(410), NPU 메모리 시스템(420), NPU 스케줄러(130), 및 NPU 인터페이스(140)를 포함하도록 구성된다.
본 개시의 또 다른 예시에 따른 신경망 프로세싱 유닛(400)은 본 개시의 일 예시에 따른 신경망 프로세싱 유닛(300)과 비교하면, NPU 메모리 시스템(420)을 제외하곤 실질적으로 동일하기 때문에, 이하 단지 설명의 편의를 위해서 중복 설명은 생략할 수 있다.
본 개시의 또 다른 예시에 따른 NPU 메모리 시스템(420)은 제1 메모리(421), 제2 메모리(422) 및 제3 메모리(423)를 포함하도록 구성된다. 제1 메모리(421), 제2 메모리(422) 및 제3 메모리(423)는 논리적으로 구분되는 메모리 또는 물리적으로 구분되는 메모리일 수 있다.
즉, 본 개시의 또 다른 예시에 따른 NPU 스케줄러(130)는 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보에 기초하여 제1 메모리(421), 제2 메모리(422), 및 제3 메모리(423)를 제어할 수 있다. 이에 NPU 스케줄러(130)는 신경망 프로세싱 유닛(400)에서 구동되는 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보에 기초하여 NPU 메모리 시스템(420)의 제1 메모리(421), 제2 메모리(422), 및 제3 메모리(423)를 제어하여 NPU 메모리 시스템(420)의 메모리 재사용율을 향상시키도록 구성될 수 있다.
제1 메모리(GB)는 메인 메모리 시스템(1070), 제2 메모리(422) 및 제3 메모리(423)와 통신하도록 구성된다. 그리고 제2 메모리(422) 및 제3 메모리(423)는 복수의 프로세싱 엘리먼트들(PE1 to PE12) 및 복수의 레지스터 파일들(RF1 to RF12)과 통신하도록 구성된다.
본 개시의 또 다른 예시에 따른 신경망 프로세싱 유닛(400)은 메모리 재사용에 최적화된 복수의 메모리 계층 구조를 가지도록 구성될 수 있다. 메인 메모리 시스템(1070)은 제1 계층의 메모리일 수 있다. 제1 메모리(421)는 제2 계층의 메모리일 수 있다. 제2 메모리(422) 및 제3 메모리(423)는 제3 계층의 메모리일 수 있다. 복수의 레지스터 파일들(RF1 to RF12)은 제4 계층의 메모리일 수 있다. NPU 스케줄러(130)는 메모리 계층 구조 및 각 메모리의 크기 정보가 저장된 데이터를 저장하도록 구성될 수 있다.
구체적으로 설명하면, 엣지 디바이스(1000)의 메인 메모리 시스템(1070)은 인공신경망모델의 모든 데이터를 저장하도록 구성될 수 있다. 이때, 메인 메모리 시스템(1070)은 적어도 하나의 인공신경망모델을 저장할 수 있다. NPU 메모리 시스템(420)은 메모리 크기와 인공신경망모델의 데이터 크기에 따라 인공신경망모델의 전부 또는 일부를 저장할 수 있다.
예를 들면, 제1 인공신경망모델은 특정 키워드를 추론하도록 구성된 AI 키워드 인식모델일 수 있다. 그리고 제2 인공신경망모델은 특정 제스처를 추론하도록 구성된 AI 제스처 인식모델일 수 있다. 단, 본 개시에 따른 예시들은 이에 제한되지 않는다.
메인 메모리 시스템(1070)의 메모리 크기는 제1 메모리(421)보다 클 수 있다. 제1 메모리(421)의 메모리 크기는 제2 메모리(422) 또는 제3 메모리(423)의 메모리 크기보다 클 수 있다. 그리고 제2 메모리(422) 및 제3 메모리(423) 각각의 메모리 크기는 각각의 복수의 레지스터 파일들(RF1 to RF12) 보다 클 수 있다. 단, 본 개시에 따른 예시들은 이에 제한되지 않는다.
메인 메모리 시스템(1070)은 제1 계층의 메모리일 수 있다. 제1 계층의 메모리는 메모리 크기가 가장 크고, 전력 소비량이 가장 클 수 있다. 단, 본 개시에 따른 예시들은 이에 제한되지 않는다.
제1 메모리(421)는 제2 계층의 메모리일 수 있다. 신경망 프로세싱 유닛(400)의 제1 메모리(421)는 인공신경망모델의 일부 또는 모든 데이터를 저장하도록 구성될 수 있다. 제2 계층의 메모리는 메모리 크기가 제1 계층의 메모리보다 작고, 제1 계층의 메모리보다 전력 소비량이 적고, 제1 계층의 메모리보다 전송 속도가 빠를 수 있다.
이하 인공신경망모델의 데이터 크기가 제1 메모리(421)보다 작은 경우에 대해서 설명한다. NPU 스케줄러(130)는 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보를 활용하여, 모든 스케줄링의 데이터를 제1 메모리(421)에 레이어의 노드 데이터 및 연결망들의 가중치 데이터 등의 데이터를 저장할 수 있다.
만약 제1 메모리(421)의 저장공간이 인공신경망모델보다 더 클 경우, 인공신경망모델의 모든 데이터가 NPU 메모리 시스템(420)에 저장될 수 있다. 이러한 경우, 엣지 디바이스(1000)의 최초 부팅 시를 제외하고 인공신경망모델 관련 메인 메모리 시스템(1070)과 신경망 프로세싱 유닛(400)의 불필요한 데이터 전송을 제거 할 수 있다. 따라서 엣지 디바이스(1000)는 NPU 메모리 시스템(420)에 저장된 데이터를 계속해서 재사용하여, 신경망 프로세싱 유닛(400)의 추론 속도를 향상 및 소비 전력 저감 효과를 제공할 수 있다.
이하 인공신경망모델의 데이터 크기가 제1 메모리(421)보다 큰 경우에 대해서 설명한다. NPU 스케줄러(130)는 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보를 활용하여, 결정된 스케줄링 순서대로 제1 메모리(421)에 레이어의 노드 데이터 및 연결망들의 가중치 데이터 등의 데이터를 일부 저장할 수 있다.
만약 제1 메모리(421)의 저장공간이 부족하거나 또는 남은 저장공간이 특정 임계 값에 도달할 경우, NPU 스케줄러(130)는 특정 스케줄링 순서까지의 데이터를 저장하고, 예정된 스케줄링이 순차적으로 완료됨에 따라, 계산이 완료된 스케줄링의 데이터의 일부를 재사용하고, 재사용 하지 않는 데이터를 삭제하거나 덮어쓰기 하여 제1 메모리(421)의 저장 공간을 확보할 수 있다. NPU 스케줄러(130)는 확보된 저장 공간을 분석하여, 이어지는 스케줄링 순서에 필요한 데이터를 저장할 수 있다. 상술한 구성에 따르면, NPU 스케줄러(130)는 종래의 CPU에서 사용하는 스케줄링 알고리즘, 예를 들어, 공평성, 효율성, 안정성, 반응 시간 등의 우선순위 설정 알고리즘으로 스케줄링을 하지 않고, 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보에 기초한 스케줄링을 제공할 수 있기 때문에, 연산 순서가 인공신경망모델의 구조에 따라 결정 수 있으며, 모든 연산 순서가 사전에 스케줄링 될 수 있기 때문에, 제1 메모리(421)의 저장 공간이 부족한 경우에도, NPU 메모리 시스템(420)의 메모리 재사용이 최적화 될 수 있는 효과가 있다.
부연 설명하면, AI 제스처 인식모델이 VGG16 컨벌루션 인공 신경망 모델일 경우, AI 제스처 인식모델은 16개 연결망의 가중치 데이터들, 대응되는 레이어의 노드 데이터들, 및 AI 제스처 인식모델의 레이어 구조에 따른 연산 순서 데이터를 포함할 수 있다. 이에, NPU 스케줄러(130)는 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보에 기초하여 스케줄링 순서를 예를 들면, 제1` 스케줄링 내지 제16 스케줄링으로 결정할 수 있다. 이때 각각의 스케줄링은 컨벌루션을 수행하는 MAC 연산을 하도록 구성될 수 있다.
이때, NPU 스케줄러(130)는 각 레이어의 노드 데이터 및 연결망의 가중치 데이터의 크기를 확인할 수 있다. 따라서 NPU 스케줄러(130)는 각각의 스케줄링 별 추론 연산에 필요한 메모리 크기를 계산할 수 있다. 따라서, NPU 스케줄러(130)는 제1 메모리(421)에 저장할 수 있는 데이터를 결정할 수 있다.
구체적인 예를 들면, NPU 스케줄러(130)가 제1` 스케줄링 내지 제16 스케줄링을 처리할 때, 제1 스케줄링에서 제6 스케줄링 까지의 연산에 필요한 데이터 크기가 제1 메모리(421)의 크기보다 크다고 계산할 수 있다. 따라서, 제1 스케줄링 내지 제5 스케줄링에 대응되는 데이터만 메인 메모리 시스템(1070)에서 제1 메모리(421)로 저장할 수 있다. 제1 스케줄링이 완료된 후 NPU 스케줄러(130)는 제1 스케줄링의 데이터 크기와 제6 스케줄링의 데이터 크기를 비교하여, 제1 메모리(421)에 저장된 제1 스케줄링의 데이터를 삭제하나 덮어쓰기 하여, 제6 스케줄링의 데이터를 제1 메모리(421)에 저장할 수 있다. 제2 스케줄링이 완료된 후 NPU 스케줄러(130)는 제2 스케줄링의 데이터 크기와 제7 스케줄링의 데이터 크기를 비교하여, 제1 메모리(421)에 저장된 제2 스케줄링의 데이터를 삭제하거나 덮어쓰기 하여, 제7 스케줄링의 데이터를 제1 메모리(421)에 저장할 수 있다. 상술한 구성에 따르면, 가용할 수 있는 NPU 메모리 시스템(420)의 메모리 한도에서 스케줄링 순서에 따라 제1 메모리(421)에 필요한 데이터를 순차적으로 저장할 수 있는 효과가 있다. 특히, 연산 순서에 따라서 필요한 데이터를 순차적으로 저장하기 때문에, 메모리 읽기 쓰기 등의 동작에 의해서 발생될 수 있는 대기 시간을 저감 할 수 있는 효과가 있다.
NPU 스케줄러(130)는 완료된 스케줄링의 데이터 크기가 새로 저장될 스케줄링의 데이터 크기보다 클 경우, 새로운 스케줄링의 데이터를 제1 메모리(421)에 저장할 수 있다. 부연 설명하면, 제1 스케줄링의 데이터 크기가 500KB이고, 제6 스케줄링의 데이터 크기가 450KB이면, 제1 스케줄링의 데이터를 삭제하거나 덮어쓰기 하여, 제6 스케줄링의 데이터를 저장해도 메모리 사용량이 증가하지 않을 수 있다.
NPU 스케줄러(130)는 완료된 스케줄링의 데이터 크기가 새로 저장될 스케줄링의 데이터 크기보다 작을 경우, 새로운 스케줄링의 데이터를 제1 메모리(421)에 저장하지 않을 수 있다. 부연 설명하면, 제1 스케줄링의 데이터 크기가 450KB이고, 제6 스케줄링의 데이터 크기가 850KB이면, 제1 스케줄링의 데이터를 삭제하거나 덮어쓰기 하더라도, 450KB의 메모리 공간이 추가로 필요하게 된다. 이때, 메모리 가용 한도가 450KB 이하일 경우, NPU 스케줄러(130)는 제1 메모리(421)에 제6 스케줄링의 데이터를 저장하지 않는다. 그리고 제2 스케줄링의 데이터 크기가 400KB이면, 제1 스케줄링과 제2 스케줄링의 데이터 크기의 합이 850KB가 되기 때문에, 제2 스케줄링이 마무리 된 후 제2 스케줄링의 데이터를 삭제하거나 덮어쓰기 하여, 제6 스케줄링의 데이터를 저장할 수 있다.
즉, 신경망 프로세싱 유닛(400)의 NPU 스케줄러(130)는 스케줄링 순서 별 데이터의 크기를 판단하고, 제1 메모리(421)의 가용 한도 내에서 스케줄링 순서별로 필요한 데이터를 순차적으로 삭제, 덮어쓰기 및/또는 저장할 수 있다.
상술한 구성에 따르면, 제1 메모리(421)의 메모리 한도를 효율적으로 제어할 수 있으며 신경망 프로세싱 유닛(400)의 메모리 오버 플로우(overflow)를 방지할 수 있는 효과가 있다.
제2 메모리(422) 및 제3 메모리(423)는 제3 계층의 메모리일 수 있다. 제3 계층의 메모리는 메모리 크기가 제2 계층의 메모리보다 작고, 최대 전송 속도가 더 빠를 수 있다.
신경망 프로세싱 유닛(400)의 제2 메모리(422) 및 제3 메모리(423)는 메모리 재사용율을 고려하여 제1 메모리(421)에 저장된 데이터의 일부를 선택적으로 저장하도록 구성될 수 있다. 즉, NPU 스케줄러(130)는 메모리 재사용율을 고려하여 제1 메모리(421)에 저장된 데이터 중 일부를 제2 메모리(422) 및 제3 메모리(423) 중 하나에 선택적으로 저장하도록 구성될 수 있다.
제2 메모리(422)에 저장되는 데이터의 메모리 재사용율은 제3 메모리(423)에 저장되는 데이터의 메모리 재사용율보다 더 높을 수 있다.
예를 들면, 인공신경망모델의 연결망의 가중치 데이터들은 인공신경망모델이 갱신되기 전까지 가변 되지 않을 수 있다. 즉, 제2 메모리(422)에 인공신경망모델의 연결망의 가중치 데이터들을 저장할 경우, 저장된 데이터는 상수 특성을 가질 수 있다. 단, 본 개시에 따른 예시들은 이에 제한되지 않는다.
부연 설명하면, 인공신경망모델로 1초에 30 프레임의 속도로 입력 영상을 추론할 경우, 제2 메모리(422)에 저장된 연결망의 가중치 데이터들은 1초 동안 30회 재사용 될 수 있으며, 1분 동안 1800회 재사용 될 수 있다.
상술한 구성에 따르면, 제2 메모리(422)는 상수 특성의 데이터를 저장하도록 구성되어 메모리 재사용율을 향상시킬 수 있으며, 소비 전력을 저감할 수 있는 효과가 있다.
또한, 제2 메모리(422)에 상수 특성의 데이터가 저장될 경우, 제1 메모리(421)는 중복되는 데이터를 삭제하는 것도 가능하다. 즉, NPU 스케줄러(130)는 제2 메모리(422)에 상수 특성의 데이터가 저장될 경우, 제1 메모리(421)의 중복되는 데이터를 삭제하도록 구성될 수 있다.
상술한 구성에 따르면, 제2 메모리(422)는 인공신경망모델의 갱신 전까지 값이 고정될 수 있기 때문에, 제1 메모리(421)의 중복 데이터를 삭제할 수 있다. 따라서 NPU 메모리 시스템(400)의 메모리 효율을 향상시킬 수 있는 효과가 있다.
제3 메모리(423)에 저장되는 데이터는 재사용이 가능한 변수 특성을 가질 수 있다. 단, 본 개시에 따른 예시들은 이에 제한되지 않는다.
예를 들면, 인공신경망모델의 특정 레이어의 MAC 연산 값은 다음 스케줄링의 레이어의 노드 데이터로 재사용 될 수 있다. 즉, 제3 메모리(423)에 인공신경망모델의 레이어의 노드 데이터들을 저장할 경우, 저장된 데이터는 재사용되는 변수 특성을 가질 수 있다. 단, 본 개시에 따른 예시들은 이에 제한되지 않는다.
상술한 구성에 따르면, 제3 메모리(423)는 각 레이어의 MAC 연산 값을 스케줄링 순서에 따라 재사용할 수 있는 효과가 있다. 따라서 NPU 메모리 시스템(400)의 메모리 효율을 향상시킬 수 있는 효과가 있다.
제2 메모리(422) 및 제3 메모리(423)는 레지스터 파일들(RF1 to RF12) 및/또는 프로세싱 엘리먼트들(PE1 to PE12)와 통신하도록 구성된다. 본 개시의 또 다른 예시에 따른 신경망 프로세싱 유닛(300)에서 상술하였듯이, 레지스터 파일들(RF1 to RF12)은 NPU 메모리 시스템(420)보다 최대 전송 속도가 더 빠르고 동일 전송 속도 기준 전력 소비량이 상대적으로 더 작은 크기의 메모리로 구성될 수 있다.
제1 메모리(421)는 비휘발성 메모리고 구성되고, 제2 메모리(422), 및 제3 메모리(423)는 휘발성 메모리로 구성될 수 있다. 따라서, 엣지 디바이스(1000)의 전원이 차단된 후 다시 부팅될 때 메인 메모리 시스템(1070)에서 인공신경망모델을 다시 제공받지 않아도 될 수 있는 효과가 있다. 이때 레지스터 파일(RF1 to RF12)은 휘발성 메모리로 구성될 수 있다. 단, 본 개시에 따른 예시들은 이에 제한되지 않는다. 상술한 구성에 따르면, 신경망 프로세싱 유닛(100)은 인공신경망모델의 추론 연산 시 DRAM에 의한 소비전력을 저감할 수 있는 효과가 있다.
제1 메모리(421), 제2 메모리(422), 및 제3 메모리(423)는 비휘발성 메모리로 구성될 수 있다. 따라서, 엣지 디바이스(1000)의 전원이 차단된 후 다시 부팅될 때 메인 메모리 시스템(1070)에서 인공신경망모델을 다시 제공받지 않아도 될 수 있는 효과가 있다. 이때 레지스터 파일(RF1 to RF12)은 휘발성 메모리로 구성될 수 있다. 단, 본 개시에 따른 예시들은 이에 제한되지 않는다. 상술한 구성에 따르면, 신경망 프로세싱 유닛(100)은 인공신경망모델의 추론 연산 시 DRAM에 의한 소비전력을 저감할 수 있는 효과가 있다.
상술한 구성에 따르면, 프로세싱 엘리먼트에 근접한 메모리일수록 메모리 재사용율을 향상시키는 것이 소비전력, 연산 속도 측면에서 더 효율적이다. 따라서 NPU 스케줄러(130)는 인공 신경망 구조 데이터 또는 인공신경망 데이터 지역성 정보 및 신경망 프로세싱 유닛의 구조 데이터 및 메모리 계층 구조를 활용하여 프로세싱 엘리먼트에서 가장 먼 계층의 메모리에 저장된 데이터의 재사용율이 프로세싱 엘리먼트에 근접한 계층의 메모리까지 메모 메모리 재사용율이 향상시키도록 스케줄링을 할 수 있다.
본 개시의 예시들에 따른 신경망 프로세싱 유닛(100)의 메모리의 계층 구조는 NPU 메모리 시스템(420)에 한정되지 않을 수 있으며, 엣지 디바이스(1000)의 메인 메모리 시스템(1070)까지 확장될 수 있다. 이러한 경우, 메인 메모리 시스템(1070)이 제1 계층의 메모리가 될 수 있다. 제1 메모리(421)는 제2 계층의 메모리가 될 수 있다. 제2 메모리(422) 및 제3 메모리(423)는 제3 계층의 메모리가 될 수 있다. 레지스터 파일(RF1 to RF12)은 제4 계층의 메모리가 될 수 있다.
신경망 프로세싱 유닛(400)은 신경망 프로세싱 유닛(400)의 구조 데이터에 기초하여 메모리 재사용율이 높은 데이터 순서로 프로세싱 엘리먼트와 근접한 계층의 메모리에 저장하도록 동작될 수 있다.
즉, 본 개시에 따른 예시들은 메인 메모리 시스템(1070)에 제한되지 않으며, 신경망 프로세싱 유닛(400)이 메인 메모리 시스템(1070)을 포함하도록 구성되는 것도 가능하다.
*
*
*도 11은 본 개시의 일 예시에 따른 신경망 프로세싱 유닛에서 처리 가능한 인공신경망모델을 최적화 할 수 있는 최적화 시스템을 설명하는 개략적인 개념도이다.
최적화 시스템(1500)은 신경망 프로세싱 유닛(100)에서 구동되는 인공신경망모델을 신경망 프로세싱 유닛(100)에 최적화 시키도록 구성될 수 있다.
최적화 시스템(1500)은 엣지 디바이스(1000)의 별도의 외부 시스템으로, 본 개시의 일 예시에 따른 신경망 프로세싱 유닛(100)에서 사용되는 인공신경망모델을 최적화 시키도록 구성된 시스템을 의미한다. 따라서 최적화 시스템(1500)은 신경망 프로세싱 유닛(100)의 전용 인공신경망모델 에뮬레이터 또는 인공신경망모델 시뮬레이터로 지칭되는 것도 가능하다.
부연 설명하면, 종래의 인공신경망모델은 신경망 프로세싱 유닛(100)과 엣지 디바이스(1000)의 하드웨어 특성을 고려하지 않고 학습된 인공신경망모델이다. 즉, 종래의 인공신경망모델은 신경망 프로세싱 유닛(100)과 엣지 디바이스(1000)의 하드웨어적 한계를 고려하지 않고 학습되었다. 따라서 종래의 인공신경망모델을 처리 할 때, 해당 신경망 프로세싱 유닛에서의 처리 성능이 최적화되지 않을 수 있다. 예를 들면, 처리 성능 저하는 엣지 디바이스의 비효율적인 메모리 관리 및 인공신경망모델의 방대한 연산량 처리에 의한 것 일 수 있다. 따라서 종래의 인공신경망모델을 처리하는 종래의 엣지 디바이스는 높은 소비 전력이 요구되거나 또는 낮은 연산 처리 속도 문제를 가질 수 있었다.
본 개시의 일 예시에 따 른 최적화 시스템(1500)은 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보, 신경망 프로세싱 유닛(100)과 엣지 디바이스(1000)의 하드웨어 특성 데이터를 활용해서 인공신경망모델을 최적화 시키도록 구성되었다.
따라서 최적화된 인공신경망모델이 신경망 프로세싱 유닛(100)을 포함하는 엣지 디바이스(1000)에서 처리될 때 최적화되지 않은 인공신경망모델과 비교해서 상대적으로 향상된 성능 및 저감된 전력 소모를 제공할 수 있는 효과가 있다.
최적화 시스템(1500)은 인공신경망모델 읽기 모듈(1510), 최적화 모듈(1520), 인공신경망모델 평가 모듈(1530), 및 인공신경망모델 갱신 모듈(1540)을 포함하도록 구성될 수 있다.
여기서 모듈은 하드웨어로 구성된 모듈, 펌웨어로 구성된 모듈, 또는 소프트웨어로 구성된 모듈일 수 있으며, 최적화 시스템(1500)은 하드웨어, 펌웨어, 또는 소프트웨어 등에 제한되지 않는다.
최적화 시스템(1500)은 엣지 디바이스(1000)와 통신하도록 구성될 수 있다. 단, 이에 제한되지 않으며, 최적화 시스템(1500)은 엣지 디바이스(1000) 및 엣지 디바이스(1000)에 포함된 신경망 프로세싱 유닛(100)의 데이터를 별도로 제공받도록 구성되는 것도 가능하다.
최적화 시스템(1500)은 최적화할 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보를 제공받도록 구성될 수 있다.
인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보는 인공신경망모델의 레이어의 노드 데이터, 연결망의 가중치 데이터, 인공신경망모델의 레이어들의 배치 구조 데이터 또는 인공신경망 데이터 지역성 정보, 활성화 맵, 및 가중치 커널 중 적어도 하나의 데이터를 포함하도록 구성될 수 있다.
여기서 가중치 커널은 입력 데이터의 일정 부분을 스캐닝 하면서 해당 부분의 특징을 추출하기 위한 합성곱에 사용되는 가중치 커널일 수 있다. 가중치 커널은 입력 데이터의 각 채널을 순회하며 합성곱을 계산한 후, 채널 별 특징 맵을 생성할 수 있다.
최적화 시스템(1500)은 신경망 프로세싱 유닛(100)의 구조 데이터를 더 제공받도록 구성될 수 있다. 단, 이에 제한되지 않는다.
신경망 프로세싱 유닛(100)의 구조 데이터는 NPU 메모리 시스템(130)의 메모리 크기, NPU 메모리 시스템(130)의 계층 구조, NPU 메모리 시스템(130)의 계층 구조의 각각의 메모리들의 최대 전송 속도 및 액세스 레이턴시(latency), 프로세싱 엘리먼트들(PE1 to PE12)의 개수, 및 프로세싱 엘리먼트들(PE1 to PE12)의 연산기 구조 중 적어도 하나의 데이터를 포함하도록 구성될 수 있다.
최적화 시스템(1500)은 엣지 디바이스(1000)의 메인 메모리 시스템(1070)의 구조 데이터를 더 제공받도록 구성될 수 있다. 단, 이에 제한되지 않는다.
메모리 시스템(1070)의 구조 데이터는 메모리 시스템(1070)의 메모리 크기, 메모리 시스템(1070)의 계층 구조, 메모리 시스템(1070)의 액세스 레이턴시, 및 메모리 시스템(1070)의 최대 전송 속도 중 적어도 하나의 데이터를 포함하도록 구성될 수 있다.
최적화 시스템(1500)은 인공신경망모델의 구조 데이터, 신경망 프로세싱 유닛(100)의 구조 데이터, 및 엣지 디바이스(1000)의 메인 메모리 시스템(1070)의 구조 데이터를 기초로 인공신경망모델이 엣지 디바이스(1000)에서 동작할 때의 성능을 예측할 수 있는 시뮬레이션 기능을 제공 하도록 구성될 수 있다. 즉, 최적화 시스템(1500)은 엣지 디바이스(1000)에서 동작할 수 있는 인공신경망모델의 에뮬레이터 또는 시뮬레이터일 수 있다.
최적화 시스템(1500)은 최적화 시스템(1500)은 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보, 신경망 프로세싱 유닛(100)의 구조 데이터, 및 엣지 디바이스(1000)의 메인 메모리 시스템(1070)의 구조 데이터를 기초로 인공신경망모델의 다양한 값들을 재조정하도록 구성될 수 있다. 따라서 최적화 시스템(1500)은 인공신경망모델이 엣지 디바이스(1000)에 최적화 되도록 인공신경망모델을 경량화 시키도록 구성될 수 있다.
예를 들면, 최적화 시스템(1500)은 엣지 디바이스(1000)와 신경망 프로세싱 유닛(100)의 각종 데이터를 제공받아서 사용하고자 하는 인공신경망모델을 시뮬레이션 할 수 있다. 최적화 시스템(1500)은 해당 인공신경망모델을 시뮬레이션 하여, 해당 인공신경망모델이 엣지 디바이스(1000)에서 원활히 동작될 수 있는지 여부를 판단할 수 있다. 최적화 시스템(1500)은 엣지 디바이스(1000) 및 신경망 프로세싱 유닛(100)의 연산 처리 능력, 가용 메모리 대역폭, 최대 대역폭, 메모리 액세스 레이턴시 등의 데이터와 인공신경망모델의 각각의 레이어의 연산량, 메모리 사용량을 등의 데이터를 활용하여 특정 인공신경망모델이 특정 신경망 프로세싱 유닛을 포함하는 특정 엣지 디바이스에서 동작할 때의 연산 시간, 초당 추론 횟수, 하드웨어 리소스 사용량, 추론 정확도, 및 전력 소비량 등의 시뮬레이션 결과를 제공 할 수 있다.
예를 들면, 최적화 시스템(1500)은 특정 인공신경망모델이 엣지 디바이스(1000)에서 원활히 동작되기 어렵다고 판단될 경우 최적화 모듈(1520)을 통해서 인공신경망모델을 최적화 하도록 구성될 수 있다.
예를 들면, 최적화 시스템(1500)은 다양한 비용 함수(cost function)을 제공하여 인공신경망모델을 특정 조건에 맞게 최적하도록 구성될 수 있다.
예를 들면, 최적화 시스템(1500)은 추론 정확도 저하가 특정 값 이상으로 유지되는 조건을 만족하도록, 인공신경망모델의 각각의 레이어의 가중치 데이터 및 노드 데이터를 경량화 하도록 구성될 수 있다.
예를 들면, 최적화 시스템(1500)은 인공신경망모델의 데이터 크기가 특정 값 이하가 되면서 추론 정확도 저하가 가장 작은 조건을 만족하도록, 인공신경망모델의 각각의 레이어의 가중치 데이터 및 노드 데이터를 경량화 하도록 구성될 수 있다.
인공신경망모델 읽기 모듈(1510)은 최적화할 인공신경망모델을 외부로부터 제공받도록 구성된다. 여기서 최적화할 인공신경망모델은 신경망 프로세싱 유닛(100)을 활용하고자 하는 사용자가 학습시킨 종래의 인공신경망모델일 수 있다.
인공신경망모델 읽기 모듈(1510)은 최적화할 인공신경망모델을 분석하여 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보를 추출하도록 구성될 수 있다. 단, 이에 제한되지 않으며 인공신경망모델 읽기 모듈(1510)은 외부로부터 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보를 제공받도록 구성되는 것도 가능하다.
인공신경망모델 읽기 모듈(1510)은 추가적으로 신경망 프로세싱 유닛(100)의 구조 데이터를 더 제공받도록 구성될 수 있다.
인공신경망모델 읽기 모듈(1510)은 추가적으로 엣지 디바이스(1000)의 메인 메모리 시스템(1070)의 구조 데이터를 더 제공받도록 구성될 수 있다.
최적화 모듈(1520)은 인공신경망모델 읽기 모듈(1510)에서 제공받은 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보를 기초로 인공신경망모델을 최적화 할 수 있다.
최적화 모듈(1520)은 인공신경망모델 읽기 모듈(1510)에서 신경망 프로세싱 유닛(100)의 구조 데이터 및 메모리 시스템(1070)의 구조 데이터 중 적어도 하나의 데이터를 더 제공받도록 구성될 수 있다. 이러한 경우, 최적화 모듈(1520)은 인공신경망모델 읽기 모듈(1510)에서 제공받은 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보, 신경망 프로세싱 유닛(100)의 구조 데이터, 및 메모리 시스템(1070)의 구조 데이터 중 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보와 추가적인 구조 데이터를 기초로 인공신경망모델을 최적화 할 수 있다.
최적화 모듈(1520)은 양자화(quantization) 알고리즘, 프루닝(pruning) 알고리즘, 재학습(retraining) 알고리즘, 양자화 인식 재학습(quantization aware retraining) 알고리즘, 모델 압축(model compression) 알고리즘, 및 인공지능 기반 최적화(AI based model optimization) 알고리즘을 선택적으로 활용하도록 구성될 수 있다.
프루닝 알고리즘은 인공신경망모델의 연산량을 저감할 수 있는 기술이다. 프루닝 알고리즘은 인공신경망모델의 모든 레이어들의 가중치 데이터 및/또는 가중치 커널 중에서 0에 근접한 작은 값들을 0으로 치환하도록 구성될 수 있다. 프루닝 알고리즘에 의해서 특정 가중치 데이터가 0으로 치환된 경우, 프루닝 알고리즘은 해당 가중치 데이터를 가지는 인공신경망모델의 연결망을 단선 시키는 것과 실질적으로 동일한 효과를 제공할 수 있다.
도 3을 참조하면, 본 개시의 일 예시에 따른 신경망 프로세싱 유닛(100)의 제1 프로세싱 엘리먼트(PE1)의 곱셈기(111)는 컨벌루션 행렬 곱셈을 처리할 수 있다. 만약 곱셈기(111)의 제1 입력부 또는 제2 입력부에 입력되는 값이 0인 경우, 곱셈기(111)의 결과 값은 다른 피연산자의 값과 상관없이 0이 된다. 따라서 제1 프로세싱 엘리먼트(PE1)는 곱셈기(111) 중 적어도 하나의 입력부에 입력되는 데이터가 0일 경우를 판단하여, 해당 곱셈 연산을 건너 뛰도록 구성될 수 있다.
상술한 구성에 따르면, 누산기(113)의 (L)loops의 카운터 값이 0 데이터의 개수만큼 저감될 수 있다. 즉, 곱셈기(111)의 불필요한 곱셈 연산 및 이어지는 가산기(112)의 불필요한 가산 연산 및 누산기(113)의 불필요한 누산 연산을 건너 뛸 수 있는 효과가 있다. 또한, 프루닝 알고리즘에 의해서 0 데이터가 더 증가함에 따라, 신경망 프로세싱 유닛(100)의 프로세싱 엘리먼트 어레이(110)의 연산 효율이 증가하면서 연산 처리 속도가 빨라질 수 있는 효과가 있다.
프루닝 알고리즘은 인공신경망모델의 모든 레이어들의 가중치 데이터 및/또는 가중치 커널 중에서 0에 근접한 작은 값들을 0으로 치환하는 임계 값의 수준을 점진적으로 증가하면서 정확도를 평가하거나 또는 점진적으로 저감하면서 정확도를 평가하도록 구성될 수 있다. 예를 들면, 프루닝 알고리즘은 0.01 이하의 가중치 데이터를 0으로 치환하고, 다음에는 0.02 이하의 가중치 데이터를 0으로 치환하는 방식으로 임계 값의 수준을 증가시키도록 구성될 수 있다. 임계 값의 수준이 증가할 경우, 0으로 치환된 가중치 데이터 변환율이 증가할 수 있는 효과가 있다.
인공신경망모델 평가 모듈(1530)은 프루닝 알고리즘이 적용된 인공신경망모델을 평가할 수 있다. 만약 평가된 추론 정확도가 목표 추론 정확도보다 높은 경우, 인공신경망모델 평가 모듈(1530)은 최적화 모듈(1520)에게 인공신경망모델의 프루닝 알고리즘의 치환 임계 값의 수준을 점진적으로 증가시키도록 지시하도록 구성될 수 있다. 치환 임계 값이 변할 때마다 인공신경망모델 평가 모듈(1530)은 추론 정확도를 평가하도록 구성된다. 인공신경망모델 평가 모듈(1530)은 평가된 추론 정확도가 목표 추론 정확도 이하로 떨어지기 전까지 프루닝 알고리즘을 반복 지시하여 인공신경망모델의 연산량을 점진적으로 저감 하도록 구성될 수 있다. 이때, 인공신경망모델 평가 모듈(1530)은 임계 값이 선택적으로 적용된 다양한 버전(version)의 인공신경망모델을 각각 저장 및 평가하도록 구성될 수 있다.
상술한 구성에 따르면 최적화 시스템(1500)은 다양한 버전의 프루닝된 인공신경망모델을 평가하고 비교하면서 인공신경망모델의 정확도 저하를 최소화 하면서 0으로 치환된 가중치 데이터 변환율이 상대적으로 높은 인공신경망모델을 생성할 수 있는 효과가 있다.
프루닝 알고리즘은 인공신경망모델의 모든 레이어들 중 적어도 하나의 연결망의 가중치 데이터 및/또는 가중치 커널 중에서 0에 근접한 작은 값들을 0으로 치환하는 임계 값의 수준을 증가시키거나 또는 저감하도록 구성될 수 있다. 예를 들면, 프루닝 알고리즘은 특정 레이어의 0.01 이하의 가중치 데이터를 0으로 치환하고 평가하고, 해당 레이어의 0.02 이하의 가중치 데이터를 0으로 치환하고 평가하는 방식으로 특정 레이어의 가중치 데이터의 임계 값의 수준을 증가시키도록 구성될 수 있다. 특정 레이어의 가중치 데이터의 임계 값의 수준이 증가할 경우, 특정 레이어에서 0으로 치환된 가중치 데이터 변환율이 증가할 수 있는 효과가 있다.
프루닝 알고리즘은 복수의 레이어의 가중치 데이터들 중 특정 레이어의 가중치 데이터를 우선적으로 프루닝 하도록 구성될 수 있다.
예를 들면, 프루닝 알고리즘은 복수의 레이어의 가중치 데이터들 중 데이터 크기가 가장 큰 레이어를 우선 적으로 선택하여 프루닝 할 수 있다.
예를 들면, 프루닝 알고리즘은 복수의 레이어의 가중치 데이터들 중 데이터 크기가 가장 큰 순서로 일부 레이어들의 가중치 데이터들을 우선적으로 선택하여 프루닝 할 수 있다. 예를 들면, 데이터 크기가 가장 큰 상위 3개의 레이어의 가중치 데이터들을 우선적으로 프루닝 할 수 있다.
부연 설명하면, 인공신경망모델의 레이어들 중 데이터 크기가 가장 큰 레이어의 가중치 데이터의 프루닝 임계 값 수준을 데이터 크기가 가장 작은 레이어의 가중치 데이터의 프루닝 임계 값 수준보다 높게 할 경우, 데이터 크기가 가장 큰 레이어의 가중치 데이터 변환율이 데이터 크기가 가장 작은 레이어의 가중치 데이터 변환율보다 더 높을 수 있다.
따라서 프루닝 된 인공신경망모델은 데이터 크기가 큰 레이어들의 가중치 데이터 변환율이 데이터 크기가 작은 레이어들의 가중치 데이터 변환율보다 더 높을 수 있다.
상술한 구성에 따르면, 데이터가 큰 레이어들의 가중치 데이터들의 프루닝 정도가 상대적으로 더 커질 수 있으며, 결과적으로 인공신경망모델의 총 연산량을 더 저감하고, 소비 전력을 저감하고, 추론 정확도 저하를 최소화 할 수 있는 효과가 있다.
예를 들면, 프루닝 알고리즘은 복수의 레이어의 가중치 데이터들 중 연산량이 가장 많은 레이어를 우선 적으로 프루닝 할 수 있다.
예를 들면, 프루닝 알고리즘은 복수의 레이어의 가중치 데이터들 중 연산량이 가장 많은 순서로 일부 레이어들의 가중치 데이터들을 우선적으로 선택하여 프루닝 할 수 있다.
예를 들면, 프루닝 알고리즘음 연산량이 가장 많은 상위 3개의 레이어의 가중치 데이터들을 우선적으로 프루닝 할 수 있다.
부연 설명하면, 인공신경망 모델의 레이어들 중 하나의 레이어가 특정 임계 값 수준으로 프루닝 되면, 해당 레이어는 다른 모든 레이어의 연산에 영향을 주게 된다. 즉, 먼저 프루닝 된 레이어에 의해서 나중에 프루닝 되는 레이어의 최적화 정도가 달라질 수 있다.
부연 설명하면, 연산량이 적거나 데이터 크기가 작지만 프루닝에 민감한 레이어의 가중치 데이터를 먼저 프루닝 완료 할 경우, 연산량이 가장 많거나 데이터 크기가 가장 큰 레이어의 가중치 데이터 프루닝이 효율이 저하될 수 있다.
부연 설명하면, 연산량이 크거나 데이터 크기가 크고 프루닝에 덜 민감한 레이어의 가중치 데이터를 먼저 프루닝 완료 할 경우, 연산량이 작거나 데이터 크기가 작은 레이어의 가중치 데이터 프루닝이 효율이 저하되더라도, 인공신경망모델의 전체적인 프루닝 효율은 향상될 수 있는 효과가 있다.
부연 설명하면, 인공신경망모델의 레이어들 중 연산량이 가장 많은 레이어의 가중치 데이터의 프루닝 임계 값 수준을 연산량이 가장 적은 레이어의 가중치 데이터의 프루닝 임계 값 수준보다 높게 할 경우, 연산량이 가장 많은 레이어의 가중치 데이터 변환율이 연산량이 가장 적은 레이어의 가중치 데이터 변환율보다 더 높을 수 있다.
따라서 인공신경망모델의 연산량이 많은 레이어들의 가중치 데이터 변환율이 연산량이 적은 레이어들의 가중치 데이터 변환율보다 더 높을 수 있다.
프루닝 된 레이어의 평가된 추론 정확도가 목표 추론 정확도보다 높은 경우, 인공신경망모델 평가 모듈(1530)은 최적화 모듈(1520)에게 프루닝 중인 레이어의 가중치 데이터의 치환 임계 값의 수준을 점진적으로 증가시키도록 구성될 수 있다. 치환 임계 값이 변할 때마다 인공신경망모델 평가 모듈(1530)은 프루닝 된 레이어가 적용된 인공신경망모델의 추론 정확도를 평가하도록 구성된다. 인공신경망모델 평가 모듈(1530)은 평가된 추론 정확도가 목표 추론 정확도 이하로 떨어지기 전까지 프루닝 알고리즘을 반복 적용하여 인공신경망모델의 연산량을 점진적으로 저감 하도록 구성될 수 있다. 이때, 인공신경망모델 평가 모듈(1530)은 치환 임계 값이 선택적으로 적용된 다양한 버전(version)의 인공신경망모델을 각각 저장 및 평가하도록 구성될 수 있다.
최적화 시스템(1500)은 특정 레이어의 가중치 데이터의 프루닝이 최적화 되면, 해당 레이어의 프루닝을 종료 시키고, 최적화된 레이어의 가중치 데이터를 고정시킨다. 최적화 시스템(1500)은 이어서 다른 레이어의 가중치 데이터의 프루닝을 시작하는 방식으로 인공신경망모델의 각각의 레이어들의 가중치 데이터를 프루닝 할 수 있다. 따라서 인공신경망모델의 각각의 레이어의 가중치 데이터의 프루닝 정도는 레이어 별로 각각 최적화 될 수 있는 효과가 있다.
부연 설명하면, 인공신경망모델의 모든 레이어들의 가중치 데이터들의 프루닝 정도를 동일하게 하면, 인공신경망모델의 추론 정확도 저하 정도가 상당히 증가될 수 있다. 하지만 이러한 경우, 어떤 레이어가 프루닝 알고리즘에 의해서 추론 정확도가 저하되는지 판단할 수 없다는 단점이 있다.
하지만 상술한 구성에 따르면, 인공신경망모델의 특정 레이어 별로 프루닝 정도를 선택적으로 다르게 하면서 인공신경망 모델의 추론 정확도를 평가할 수 있기 때문에, 프루닝에 민감하지 않은 레이어들의 프루닝 정도를 프루닝에 민감한 레이의들의 프루닝 정도보다 더 높게 적용하여, 인공신경망모델의 프루닝 정도를 레이어 별로 최적화 할 수 있는 효과가 있다.
부연 설명하면, VGG16과 같은 인공신경망모델에서는 90% 이상의 가중치 데이터를 0으로 치환하고도 인공신경망모델의 추론 정확도의 저하가 거의 없는 경우도 구현할 수 있다, 따라서 프루닝 알고리즘에 의해서 전체 추론 연산의 90% 정도를 실제 프로세싱 엘리먼트의 연산 없이도 수행 할 수 있게 할 수 있는 효과가 있다. 따라서, 프루닝 알고리즘이 적용된 인공신경망모델은 추론 정확도를 실질적으로 저감 시키지 않으면서 신경망 프로세싱 유닛(100)의 실질적인 연산량을 저감하여 소비 전력 저감 및 연산 속도를 향상시킬 수 있는 효과가 있다.
부연 설명하면, VGG16과 같은 인공신경망모델에서는 ReLU 활성화 함수를 사용한 활성화 맵의 60% 이상을 0으로 치환하고도 인공신경망모델의 추론 정확도의 저하가 거의 없는 경우도 구현할 수 있다.
양자화 알고리즘은 인공신경망모델의 데이터 크기를 저감할 수 있는 기술이다. 양자화 알고리즘은 인공신경망모델 각각의 레이어의 노드 데이터 및 각각의 연결망의 가중치 데이터의 비트 수를 선택적으로 저감하도록 구성될 수 있다. 양자화 알고리즘에 의해서 특정 레이어의 노드 데이터 및 특정 가중치 데이터의 비트 수가 저감될 경우, 양자화 알고리즘은 NPU 메모리 시스템(120)에 저장되는 인공신경망모델의 데이터 크기를 줄일 수 있으며, 프로세싱 엘리먼트의 각각의 입력부에 입력되는 입력 데이터의 크기를 줄일 수 있는 효과를 제공할 수 있다.
도 3을 참조하면, 본 개시의 일 예시에 따른 신경망 프로세싱 유닛(100)의 제1 프로세싱 엘리먼트(PE1)의 제1 입력부는 양자화된 (N)bit 데이터를 입력 받도록 구성되고, 제2 입력부는 양자화된 (M)bit 데이터를 입력 받도록 구성될 수 있다. 제1 프로세싱 엘리먼트(PE1)의 곱셈기(111) 각각의 입력부가 양자화된 비트 수의 데이터를 입력 받게 되면, 대응되는 가산기(112), 누산기(113)도 양자화된 비트 수의 데이터로 연산을 하도록 구성될 수 있다.
예를 들면, 제1 입력부는 (N)bit로 양자화된 레이어의 노드 데이터를 입력 받고, 제2 입력부는 (M)bit로 양자화된 레이어의 가중치 데이터를 입력 받도록 구성될 수 있다. 따라서 제1 입력부에 입력되는 데이터의 비트 수와 제2 입력부에 입력되는 데이터의 비트 수는 서로 상이할 수 있다. 예를 들면 제1 입력부에는 5 비트의 데이터가 입력되고 제2 입력부에는 7비트의 데이터가 입력될 수 있다.
도 3 및 도 5를 참조하면, 비트 양자화 유닛(114)의 출력 데이터는 다음 레이어의 입력 데이터가 될 수 있다. 따라서, 다음 레이어의 노드 데이터가 특정 비트 수로 양자화 되었다면, 비트 양자화 유닛(114)은 출력 데이터의 비트 수를 대응되게 변환시키도록 구성될 수 있다.
도 4를 참조하면 프로세싱 엘리먼트의 곱셈기(111) 및 가산기(112)가 양자화 수준에 따라서 소비 전력이 저감될 수 있는 것을 확인할 수 있다.
최적화 모듈(1520)은 NPU 메모리 시스템(120)의 메모리 크기에 기초해서 인공신경망모델의 특정 레이어의 노드 데이터, 특정 레이어의 가중치 데이터, 특정 가중치 커널, 및/또는 특정 특징 맵을 양자화 하고, 인공신경망모델 평가 모듈(1530)은 양자화된 노드 데이터, 가중치 데이터, 가중치 커널, 및/또는 특징 맵 별로 양자화된 데이터의 크기를 평가하도록 구성될 수 있다. 목표 데이터의 크기는 NPU 메모리 시스템(120)의 메모리 크기를 기초로 결정될 수 있다. 따라서 최적화 모듈(1520)은 목표 데이터 크기를 달성하기 위해서 양자화 할 인공신경망모델의 특정 레이어의 노드 데이터 및/또는 가중치 데이터의 비트 수 점진적으로 감소시키도록 구성될 수 있다. 인공신경망모델의 특정 레이어의 노드 데이터 크기, 특정 레이어의 가중치 데이터 크기, 특정 가중치 커널의 데이터 크기, 및/또는 특정 특징 맵의 데이터 크기는 NPU 메모리 시스템(120)의 메모리 크기보다 작게 양자화 될 수 있다. 이때 인공신경망모델 평가 모듈(1520)은 NPU 메모리 시스템(120)의 메모리 크기보다 작게 양자화된 노드 데이터, 가중치 데이터, 가중치 커널, 및/또는 특징 맵의 추론 정확도를 평가하도록 구성될 수 있다. 부연 설명하면, 인공신경망모델의 특정 데이터의 크기가 NPU 메모리 시스템(120)의 메모리 크기보다 작을 경우, NPU 메모리 시스템(120)의 내부 메모리 만으로 추론 연산을 효율적으로 수행할 수 있게 되는 효과가 있다.
최적화 모듈(1520)은 NPU 메모리 시스템(120)의 메모리 크기 및 메인 메모리 시스템(1070)의 메모리 크기에 기초해서 인공신경망모델의 특정 레이어의 노드 데이터, 특정 레이어의 가중치 데이터, 특정 가중치 커널, 및/또는 특정 특징 맵을 양자화 하고, 인공신경망모델 평가 모듈(1530)은 양자화된 노드 데이터, 가중치 데이터, 가중치 커널, 및/또는 특징 맵 별로 양자화된 데이터의 크기를 평가하도록 구성될 수 있다. 목표 데이터의 크기는 NPU 메모리 시스템(120) 및 메인 메모리 시스템(1070)의 메모리 크기를 기초로 결정될 수 있다. 따라서 최적화 모듈(1520)은 목표 데이터 크기를 달성하기 위해서 양자화 할 인공신경망모델의 특정 레이어의 노드 데이터 및/또는 가중치 데이터의 비트 수 점진적으로 감소시키도록 구성될 수 있다. 인공신경망모델의 특정 레이어의 노드 데이터 크기, 특정 레이어의 가중치 데이터 크기, 특정 가중치 커널의 데이터 크기, 및/또는 특정 특징 맵의 데이터 크기는 NPU 메모리 시스템(120)의 메모리 크기 및/또는 메인 메모리 시스템(1070)의 메모리 크기보다 작게 양자화 될 수 있다. 이때 인공신경망모델 평가 모듈(1520)은 NPU 메모리 시스템(120)의 메모리 크기 및/또는 메인 메모리 시스템(1070)의 메모리 크기보다 작게 양자화된 노드 데이터, 가중치 데이터, 가중치 커널, 및/또는 특징 맵의 추론 정확도를 평가하도록 구성될 수 있다. 부연 설명하면, 인공신경망모델의 특정 데이터의 크기가 NPU 메모리 시스템(120)의 메모리 크기 및/또는 메인 메모리 시스템(1070)의 메모리 크기보다 작을 경우, NPU 메모리 시스템(120)의 메모리 및 메인 메모리 시스템(1070)의 메모리를 선택적으로 사용하여 추론 연산을 효율적으로 수행할 수 있게 되는 효과가 있다.
엣지 디바이스(1000)의 메인 메모리 시스템(1070)은 온-칩(on-chip) 메모리 및/또는 오프-칩(off-chip) 메모리를 포함하도록 구성될 수 있다.
신경망 프로세싱 유닛(100)은 메인 메모리 시스템(1070)의 각각의 메모리의 최대 전송 속도 및 액세스 레이턴시 정보에 기초해서 NPU 메모리 시스템(120)과 메인 메모리 시스템(170)에 인공신경망모델의 데이터를 나눠서 저장하도록 구성될 수 있다.
예를 들면, 특정 데이터의 크기가 NPU 메모리 시스템(120)의 메모리 크기보다 작을 경우, 해당 데이터는 NPU 메모리 시스템(120)에 저장되고 NPU 메모리 시스템(120)의 메모리 크기보다 큰 데이터는 메인 메모리 시스템(1070)에 저장될 수 있다.
예를 들면, 사용 빈도가 높고 데이터 크기가 작은 가중치 커널은 NPU 메모리 시스템(120) 저장될 수 있고, 특징 맵은 메인 메모리 시스템(1070)에 저장될 수 있다.
인공신경망모델의 가중치 데이터, 노드 데이터, 입력 데이터 등이 각각의 메모리에 저장되고 신경망 프로세싱 유닛(100)이 각각의 메모리의 가용 메모리 대역폭, 최대 메모리 대역폭, 메모리 액세스 레이턴시 등의 정보에 기초하면 메모리 관리 효율성이 향상되어 신경망 프로세싱 유닛(100)의 동작 속도가 향상될 수 있다.
최적화 시스템(1500)은 양자화 알고리즘이 적용된 인공신경망모델을 엣지 디바이스(1000)의 신경망 프로세싱 유닛(100)에 제공할 때, 양자화된 인공신경망모델의 각각의 레이어의 노드 데이터 및 각각의 레이어의 가중치 데이터의 양자화된 비트 수 데이터를 제공하도록 구성될 수 있다.
신경망 프로세싱 유닛(100)이 NPU 메모리 시스템(120)에 각각의 양자화된 레이어의 노드 데이터 및 각각의 양자화된 레이어의 가중치 데이터를 저장할 때, 개별적으로 양자화된 비트 수로 NPU 메모리 시스템(120)에 저장되도록 구성될 수 있다. 부연 설명하면, 종래의 메모리는 8비트, 16 비트, 32비트, 64비트 또는 128비트 단위로 데이터를 저장하도록 구성될 수 있다. 하지만 NPU 메모리 시스템(120)은 양자화된 비트 수로 인공신경망모델의 가중치 데이터와 노드 데이터를 저장하도록 구성될 수 있다.
예를 들면, 3비트로 양자화된 레이어의 가중치 데이터는 NPU 메모리 시스템(120) 또는 메인 메모리 시스템(1070)에 3비트 단위로 저장될 수 있다. 7비트로 양자화된 레이어의 노드 데이터는 NPU 메모리 시스템(120)에 7비트 단위로 저장될 수 있다.
예를 들면, NPU 메모리 시스템(120)은 32비트 단위로 저장되는 메모리 셀에 4비트로 양자화된 가중치 데이터 8개를 저장하도록 구성될 수 있다.
따라서 신경망 프로세싱 유닛(100)은 양자화된 비트 수 데이터를 각각의 레이어 별로 가지고 있기 때문에 NPU 메모리 시스템(120)에 양자화된 데이터를 효율적으로 저장할 수 있는 효과가 있다.
상술한 구성에 따르면, 제1 프로세싱 엘리먼트(PE1)는 각각의 입력부의 데이터의 비트 수가 저감될수록 메모리 사용량 및 연산량이 저감될 수 있는 효과가 있다. 또한 NPU 메모리 시스템(120) 또는 메인 메모리 시스템(1070)에 양자화된 비트 수로 데이터를 저장할 수 있기 때문에 메모리 사용 효율이 향상될 수 있는 효과가 있다.
양자화 알고리즘은 인공신경망모델의 모든 레이어들의 노드 데이터 및 가중치 데이터들의 비트 수를 점진적으로 저감하면서 추론 정확도를 평가하도록 구성될 수 있다. 예를 들면, 양자화 알고리즘은 모든 레이어들의 노드 데이터 및 가중치 데이터들의 비트 수를 32 비트에서 31 비트로 저감하고, 다음에는 31 비트에서 30 비트로 저감 시키도록 구성될 수 있다. 이때 비트 수는 각각의 레이어 별로 추론 정확도가 실질적으로 저하되지 않는 범위내에서 양자화 될 수 있다. 비트 수가 저감할 경우, 각각의 레이어의 노드 데이터 및 가중치 데이터들의 크기가 감소할 수 있는 효과가 있다. 따라서 인공신경망모델의 데이터 크기가 감소할 수 있는 효과가 있다.
인공신경망모델 평가 모듈(1530)은 양자화 알고리즘이 적용된 인공신경망모델을 평가할 수 있다. 만약 평가된 추론 정확도가 목표 추론 정확도보다 높은 경우, 인공신경망모델 평가 모듈(1530)은 최적화 모듈(1520)에게 인공신경망모델의 양자화 알고리즘의 비트 수를 점진적으로 저감 시키도록 지시하도록 구성될 수 있다. 비트 수가 감소할 때마다 인공신경망모델 평가 모듈(1530)은 추론 정확도를 평가하도록 구성된다. 인공신경망모델 평가 모듈(1530)은 평가된 추론 정확도가 목표 추론 정확도 이하로 떨어지기 전까지 양자화 알고리즘을 반복 지시하여 인공신경망모델의 데이터 크기를 점진적으로 경량화 시키도록 구성될 수 있다. 이때, 인공신경망모델 평가 모듈(1530)은 비트 수가 선택적으로 적용된 다양한 버전의 인공신경망모델을 각각 저장 및 평가하도록 구성될 수 있다.
상술한 구성에 따르면 최적화 시스템(1500)은 다양한 버전의 양자화된 인공신경망모델을 평가하고 비교하면서 인공신경망모델의 추론 정확도 저하를 최소화 하면서 모든 레이어의 노드 데이터 및 가중치 데이터의 비트 수가 최소화된 인공신경망모델을 생성할 수 있는 효과가 있다.
양자화 알고리즘은 인공신경망모델의 모든 레이어들 중 적어도 하나의 연결망의 노드 데이터 및/또는 가중치 데이터들의 비트 수를 저감하도록 구성될 수 있다. 예를 들면, 양자화 알고리즘은 특정 레이어의 노드 데이터를 32비트에서 31비트로 저감하고 평가하고, 해당 레이어의 노드 데이터를 31비트에서 30비트로 저감하고 평가하는 방식으로 특정 레이어의 노드 데이터의 비트 수를 감소시키도록 구성될 수 있다. 특정 레이어의 노드 데이터 및/ 또는 가중치 데이터의 비트 수가 감소할 경우, 특정 레이어의 양자화 수준이 증가할 수 있는 효과가 있다. 양자화된 비트 수는 특정 비트 단위로 감소되면서 평가될 수 있다. 여기서 특정 비트 단위는 1비트 이상일 수 있으며, 비트 수에 제한되지 않는다. 이때 각각의 레이어의 비트 수는 평가된 추론 정확도가 실질적으로 저하되지 않는 범위내에서 개별적으로 감소 될 수 있다.
양자화 알고리즘은 복수의 레이어의 노드 데이터 및/또는 가중치 데이터들 중 특정 레이어의 노드 데이터 및/또는 가중치 데이터를 우선적으로 양자화 하도록 구성될 수 있다.
예를 들면, 양자화 알고리즘은 복수의 레이어의 노드 데이터 및/또는 가중치 데이터들 중 데이터 크기가 가장 큰 레이어의 노드 데이터 및/또는 가중치 데이터를 우선 적으로 선택하여 양자화 할 수 있다.
예를 들면, 양자화 알고리즘은 복수의 레이어의 노드 데이터 및/또는 가중치 데이터들 중 데이터 크기가 가장 큰 순서로 일부 레이어들의 노드 데이터 및/또는 가중치 데이터들을 우선적으로 선택하여 양자화 할 수 있다. 예를 들면, 데이터 크기가 가장 큰 상위 3개의 레이어의 가중치 데이터들을 우선적으로 양자화 할 수 있다.
부연 설명하면, 인공신경망모델의 레이어들 중 데이터 크기가 가장 큰 레이어의 노드 데이터 및/또는 가중치 데이터의 양자화 수준을 데이터 크기가 가장 작은 레이어의 노드 데이터 및/또는 가중치 데이터의 양자화 수준보다 높게 할 경우, 데이터 크기가 가장 큰 레이어의 양자화 수준이 데이터 크기가 가장 작은 레이어의 양자화 수준보다 더 높을 수 있다.
따라서 양자화 된 인공신경망모델은 데이터 크기가 큰 레이어들의 양자화 수준이 데이터 크기가 작은 레이어들의 양자화 수준보다 더 높을 수 있다.
상술한 구성에 따르면, 데이터가 큰 레이어들의 노드 데이터 및/또는 가중치 데이터들의 양자화 수준이 상대적으로 더 높을 수 있으며, 결과적으로 인공신경망모델의 전체 크기를 더 경량화하고, 소비 전력을 저감하고, 추론 정확도 저하를 최소화 할 수 있는 효과가 있다.
양자화 알고리즘은 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보에 기초하여 최적화를 수행하도록 구성될 수 있다. 양자화 알고리즘의 양자화 순서는 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보에 기초하여 다양한 기준으로 결정될 수 있다. 인공신경망모델 평가 모듈(1530)은 신경망 프로세싱 유닛(100)의 구조 데이터에 기초하여 최적화를 수행하도록 구성될 수 있다.
예를 들면, 양자화 알고리즘은 복수의 레이어의 노드 데이터 및/또는 가중치 데이터들 중 연산량이 가장 많은 레이어를 우선 적으로 양자화 할 수 있다.
예를 들면, 양자화 알고리즘은 복수의 레이어의 노드 데이터 및/또는 가중치 데이터들 중 연산량이 가장 많은 순서대로 일부 레이어들의 노드 데이터 및/또는 가중치 데이터들을 우선적으로 선택하여 양자화 할 수 있다.
예를 들면, 양자화 알고리즘은 연산량이 가장 많은 상위 그룹의 레이어의 노드 데이터 및/또는 가중치 데이터들을 우선적으로 양자화 할 수 있다. 상위 그룹의 개수는 예를 들면 3개, 5개 등 일 수 있다.
예를 들면, 양자화 알고리즘은 사용 빈도가 높은 많은 가중치 데이터부터 우선적으로 양자화 할 수 있다. 예를 들면 VGG16의 인공신경망모델의 경우 특정 레이어의 가중치 데이터를 다른 레이어의 가중치 데이터로 활용하는 것도 가능하다.
부연 설명하면, 인공신경망 모델의 레이어들 중 하나의 레이어가 특정 비트 수로 양자화 되면, 해당 레이어는 다른 모든 레이어의 연산에 영향을 주게 된다. 즉, 먼저 양자화 된 레이어에 의해서 나중에 양자화 되는 레이어의 최적화 정도가 달라질 수 있다.
부연 설명하면, 연산량이 적거나 데이터 크기가 작지만 양자화에 민감한 레이어의 노드 데이터 및/또는 가중치 데이터를 먼저 양자화 완료 할 경우, 연산량이 가장 많거나 데이터 크기가 가장 큰 레이어의 노드 데이터 및/또는 가중치 데이터의 양자화 효율이 저하될 수 있다.
부연 설명하면, 연산량이 크거나 데이터 크기가 크고 프루닝에 덜 민감한 레이어의 노드 데이터 및/또는 가중치 데이터를 먼저 양자화 완료 할 경우, 연산량이 작거나 데이터 크기가 작은 레이어의 노드 데이터 및/또는 가중치 데이터 양자화 효율이 저하되더라도, 인공신경망모델의 전체적인 양자화 효율은 향상될 수 있는 효과가 있다.
부연 설명하면, 인공신경망모델의 레이어들 중 연산량이 가장 많은 레이어의 노드 데이터 및/또는 가중치 데이터의 양자화 수준을 연산량이 가장 적은 레이어의 노드 데이터 및/또는 가중치 데이터의 양자화 수준보다 높게 할 경우, 연산량이 가장 많은 레이어의 데이터의 비트 수가 연산량이 가장 적은 레이어의 데이터의 비트 수보다 더 작을 수 있다. 여기서 특정 레이어의 데이터의 비트 수는 해당 레이어의 노드 데이터의 비트 수와 가중치 데이터의 비트 수의 합일 수 있다.
따라서 인공신경망모델의 연산량이 많은 레이어들의 양자화 수준이 연산량이 적은 레이어들의 양자화 수준보다 더 높을 수 있다.
양자화 된 레이어의 평가된 추론 정확도가 목표 추론 정확도보다 높은 경우, 인공신경망모델 평가 모듈(1530)은 최적화 모듈(1520)에게 양자화 중인 레이어의 노드 데이터 및/또는 가중치 데이터의 비트 수를 점진적으로 감소시키도록 구성될 수 있다. 비트 수가 감소할 때마다 인공신경망모델 평가 모듈(1530)은 양자화 된 레이어가 적용된 인공신경망모델의 추론 정확도를 평가하도록 구성된다. 인공신경망모델 평가 모듈(1530)은 평가된 추론 정확도가 목표 추론 정확도 이하로 떨어지기 전까지 양자화 알고리즘을 반복 적용하여 인공신경망모델의 데이터 크기를 점진적으로 경량화 하도록 구성될 수 있다. 이때, 인공신경망모델 평가 모듈(1530)은 비트 수가 선택적으로 적용된 다양한 버전의 인공신경망모델을 각각 저장 및 평가하도록 구성될 수 있다.
만약 평가된 레이어의 데이터의 크기가 레이어의 목표 데이터 크기보다 상대적으로 더 큰 경우 인공신경망모델 평가 모듈(1530)은 비트 수를 저감하는 행위를 반복하면서 추론 정확도 및 레이어의 데이터 크기를 모두 평가하도록 구성될 수 있다. 양자화된 특정 레이어의 최종 비트 수는 레이어의 데이터 크기가 레이어의 목표 데이터 크기보다 작아지는 비트 수로 결정 될 수 있다. 만약 평가된 추론 정확도가 목표 추론 정확도보다 낮아질 경우, 최종 비트 수는 평가된 추론 정확도가 목표 추론 정확도보다 낮아지기 이전의 비트 수로 결정 될 수 있다
최적화 시스템(1500)은 특정 레이어의 노드 데이터 및/또는 가중치 데이터의 양자화가 최적화 되면, 해당 레이어의 양자화를 종료 시키고, 최적화된 레이어의 노드 데이터 및/또는 가중치 데이터의 비트 수를 고정시킨다. 최적화 시스템(1500)은 이어서 다른 레이어의 노드 데이터 및/또는 가중치 데이터의 양자화를 시작하는 방식으로 인공신경망모델의 각각의 레이어들의 노드 데이터 및/또는 가중치 데이터를 양자화 할 수 있다. 따라서 인공신경망모델의 각각의 레이어의 노드 데이터 및/또는 가중치 데이터의 양자화 정도는 레이어 별로 각각 최적화 될 수 있는 효과가 있다. 즉, 인공신경망모델의 각각의 레이어의 노드 데이터의 양자화 정도는 각각의 레이어마다 최적화 될 수 있는 효과가 있다. 즉, 인공신경망모델의 각각의 레이어의 가중치 데이터의 양자화 정도는 각각의 레이어마다 최적화 될 수 있는 효과가 있다.
부연 설명하면, 인공신경망모델의 모든 레이어들의 노드 데이터 및/또는 가중치 데이터들의 양자화를 동일하게 하면, 인공신경망모델의 추론 정확도 저하 정도가 상당히 증가될 수 있다. 하지만 이러한 경우, 어떤 레이어가 양자화 알고리즘에 의해서 추론 정확도가 저하되는지 판단할 수 없다는 단점이 있다.
하지만 상술한 구성에 따르면, 인공신경망모델의 특정 레이어의 노드 데이터 및/또는 가중치 데이터 별로 양자화 정도를 선택적으로 다르게 하면서 인공신경망 모델의 추론 정확도를 평가할 수 있기 때문에, 양자화에 민감하지 않은 레이어들의 양자화 수준을 양자화에 민감한 레이의들의 양자화 수준보다 더 높게 적용하여, 인공신경망모델의 양자화 수준을 레이어의 노드 데이터 및/또는 가중치 데이터 별로 최적화 할 수 있는 효과가 있다.
인공신경망모델 평가 모듈(1530)은 엣지 디바이스(1000)의 메인 메모리 시스템(1070)의 구조 데이터에 기초하여 최적화를 수행하도록 구성될 수 있다.
최적화 모듈(1520)은 메모리 시스템(1070)의 메모리 크기에 기초해서 인공신경망모델의 특정 레이어의 노드 데이터 및/또는 특정 레이어의 가중치 데이터를 양자화 하고, 인공신경망모델 평가 모듈(1530)은 양자화된 레이어 별로 양자화된 레이어의 데이터의 크기를 평가하도록 구성될 수 있다. 레이어의 목표 데이터 크기는 NPU 메모리 시스템(120)의 메모리 크기를 기초로 결정될 수 있다.
만약 평가된 레이어의 데이터의 크기가 레이어의 목표 데이터 크기보다 상대적으로 더 큰 경우 인공신경망모델 평가 모듈(1530)은 특정 레이어의 비트 수를 저감하는 행위를 반복하면서 추론 정확도 및 레이어의 데이터 크기를 모두 평가하도록 구성될 수 있다. 양자화된 특정 레이어의 최종 비트 수는 레이어의 데이터 크기가 레이어의 목표 데이터 크기보다 작아지는 비트 수로 결정 될 수 있다. 만약 평가된 정확도가 목표 추론 정확도보다 낮아질 경우, 최종 비트 수는 평가된 추론 정확도가 목표 추론 정확도보다 낮아지기 이전의 비트 수로 결정 될 수 있다.
양자화가 완료된 인공신경망모델의 각각의 레이어의 노드 데이터 및 각각의 레이어의 가중치 데이터는 개별적으로 최적화된 비트 수를 가지도록 구성될 수 있다. 상술한 구성에 따르면, 양자화가 완료된 인공신경망모델의 각각의 레이어의 노드 데이터 및 각각의 레이어의 가중치 데이터는 개별적으로 양자화 되면서 추론 정확도가 개별적으로 모두 평가 되었기 때문에 인공신경망모델의 추론 정확도를 실질적으로 저감 시키지 않으면서 각각의 레이어의 노드 데이터 및 각각의 레이어의 가중치 데이터가 개별적으로 최적화 된 비트 수를 가질 수 있는 효과가 있다.
또한 신경망 프로세싱 유닛(100) 및/또는 엣지 디바이스(1000)의 하드웨어 특성을 고려해서 인공신경망모델을 양자화 할 수 있기 때문에, 신경망 프로세싱 유닛(100) 및/또는 엣지 디바이스(1000)에 최적화 될 수 있는 효과가 있다.
이하 양자화 알고리즘을 활용한 인공신경망모델의 최적화 방법에 대해서 일 예를 들어 설명한다.
최적화 시스템(1500)은 양자화 하고자 하는 인공신경망모델을 인공신경망모델 읽기 모듈(1510)을 통해서 제공할 수 있다.
최적화 시스템(1500)은 최적화 하고자 하는 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보를 분석하도록 구성될 수 있다. 더 나아가서, 최적화 시스템(1500)은 최적화 하고자 하는 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보 및 신경망 프로세싱 유닛(100)의 구조 데이터를 더 분석하도록 구성될 수 있다. 더 나아가서, 최적화 시스템(1500)은 최적화 하고자 하는 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보, 신경망 프로세싱 유닛(100)의 구조 데이터, 및 엣지 디바이스(1000)의 구조 데이터를 더 분석하도록 구성될 수 있다.
상술한 구조 데이터 또는 인공신경망 데이터 지역성 정보 분석은 최적화 시스템(1500)의 인공신경망모델 읽기 모듈(1510), 최적화 모듈(1520), 및 인공신경망모델 평가 모듈(1530) 중 하나의 모듈에서 구현될 수 있다. 이하에서는 최적화 모듈(1520)이 적어도 하나의 구조 데이터 또는 인공신경망 데이터 지역성 정보를 분석하는 예로 설명되나, 본 개시는 이에 제한되지 않는다.
최적화 모듈(1520)은 양자화 알고리즘을 최적화하고자 하는 인공신경망모델에 적용하도록 구성될 수 있다.
예를 들면, 최적화 모듈(1520)은 양자화 알고리즘의 그룹화 정책을 수행하도록 구성될 수 있다. 그룹화 정책은 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보 중 양자화 하는 데이터를 특정 기준으로 그룹화 하는 정책일 수 있다.
즉, 양자화 알고리즘은 특징 또는 공통 분모가 있는 데이터들을 그룹화 하여 양자화 할 수 있으며, 이러한 경우 양자화 알고리즘의 비트 수 저감 정도가 향상될 수 있으며 추론 정확도 저감이 최소화 될 수 있는 효과가 있다.
그룹화 정책은 제1 그룹화 정책, 제2 그룹화 정책, 제3 그룹화 정책 및 제4 그룹화 정책으로 세분화 될 수 있다.
제1 그룹화 정책은 인공신경망모델의 연산 순서 또는 스케줄링 순서를 기준으로 그룹화 하는 정책이다. 최적화 시스템(1500)은 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보를 분석하여 인공신경망모델의 연산 순서를 분석할 수 있다. 따라서 제1 그룹화 정책이 선택될 경우, 인공신경망모델의 레이어 별로 또는 가중치 커널 별로 그룹화 되어 양자화 순서가 결정 될 수 있다.
예를 들면, 제1 그룹화 정책은 적어도 하나의 레이어를 그룹화 하여 양자화 순서를 결정할 수 있다. 좀더 자세히 예를 들면, 적어도 하나의 레이어의 노드 데이터 및/또는 가중치 데이터를 그룹화 할 수 있다. 이러한 경우 적어도 하나의 레이어의 노드 데이터 및/또는 가중치 데이터는 그룹화되어 소정의 비트 수 만큼 양자화 될 수 있다. 즉, 하나의 레이어 또는 복수개의 레이어가 분석된 그룹별 연산 순서에 따라서 양자화 될 수 있다.
예를 들면, 제1 그룹화 정책은 적어도 하나의 가중치 커널을 그룹화 하여 양자화 순서를 결정할 수 있다. 좀더 자세히 예를 들면, 적어도 하나의 가중치 커널 및/또는 특징 맵을 그룹화 할 수 있다. 이러한 경우 적어도 하나의 가중치 커널 및/또는 특징 맵은 그룹화되어 소정의 비트 수 만큼 양자화 될 수 있다. 즉, 하나의 가중치 커널 또는 복수개의 가중치 커널이 분석된 그룹별 연산 순서에 따라서 양자화 될 수 있다.
제1 그룹화 정책의 이유는, 특정 인공신경망모델의 경우, 연산 순서가 빠른 레이어일수록 양자화 시 추론 정확도 저하가 클 수 있기 때문이다. 이러한 경우, 양자화에 민감할 수 있는 앞쪽에 배치된 레이어 또는 합성곱을 우선적으로 양자화 하면서 양자화에 따른 추론 정확도 저하를 사전에 검증하면, 양자화된 인공신경망모델의 추론 정확도 저감을 최소화 하면서 뒤쪽에 배치된 양자화에 둔감한 레이어 또는 합성곱의 양자화 수준을 향상시킬 수 있기 때문이다. 단 본 개시는 이에 제한되지 않으며, 특정 인공신경망모델은 뒤쪽에 배치된 레이어가 양자화에 더 민감할 수도 있다.
제2 그룹화 정책은 인공신경망모델의 연산량 크기를 기준으로 그룹화 하는 정책이다. 최적화 시스템(1500)은 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보를 분석하여 인공신경망모델의 연산량 크기를 분석할 수 있다. 따라서 제2 그룹화 정책이 선택될 경우, 인공신경망모델의 레이어 별로 또는 가중치 커널 별로 그룹화 되어 양자화 순서가 결정 될 수 있다.
예를 들면, 제2 그룹화 정책은 적어도 하나의 레이어를 그룹화 하여 양자화 순서를 결정할 수 있다. 좀더 자세히 예를 들면, 적어도 하나의 레이어의 노드 데이터 및/또는 가중치 데이터를 그룹화 할 수 있다. 이러한 경우 적어도 하나의 레이어의 노드 데이터 및/또는 가중치 데이터는 그룹화되어 소정의 비트 수 만큼 양자화 될 수 있다. 즉, 하나의 레이어 또는 복수개의 레이어가 분석된 그룹별 연산량 크기 순서에 따라서 양자화 될 수 있다.
예를 들면, 제2 그룹화 정책은 적어도 하나의 가중치 커널을 그룹화 하여 양자화 순서를 결정할 수 있다. 좀더 자세히 예를 들면, 적어도 하나의 가중치 커널 및/또는 특징 맵을 그룹화 할 수 있다. 이러한 경우 적어도 하나의 가중치 커널 및/또는 특징 맵은 그룹화되어 소정의 비트 수 만큼 양자화 될 수 있다. 즉, 하나의 가중치 커널 또는 복수개의 가중치 커널이 분석된 그룹별 연산량 크기 순서에 따라서 양자화 될 수 있다.
제2 그룹화 정책의 이유는, 특정 인공신경망모델의 경우, 레이어 별 또는 가중치 커널별로 연산량의 크기 차이가 상당히 클 수 있기 때문이다. 이러한 경우, 연산량 크기가 큰 레이어 또는 합성곱을 우선적으로 양자화 하면서 양자화에 따른 추론 정확도 저하를 사전에 검증하면, 연산량을 저감하면서 양자화된 인공신경망모델의 추론 정확도 저감을 최소화 할 수 있기 때문이다. 단 본 개시는 이에 제한되지 않는다.
제3 그룹화 정책은 인공신경망모델의 메모리 사용량 크기를 기준으로 그룹화 하는 정책이다. 최적화 시스템(1500)은 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보를 분석하여 인공신경망모델의 메모리 사용량 크기를 분석할 수 있다. 따라서 제3 그룹화 정책이 선택될 경우, 인공신경망모델의 레이어 별로 또는 가중치 커널 별로 그룹화 되어 양자화 순서가 결정 될 수 있다.
예를 들면, 제3 그룹화 정책은 적어도 하나의 레이어를 그룹화 하여 양자화 순서를 결정할 수 있다. 좀더 자세히 예를 들면, 적어도 하나의 레이어의 노드 데이터 및/또는 가중치 데이터를 그룹화 할 수 있다. 이러한 경우 적어도 하나의 레이어의 노드 데이터 및/또는 가중치 데이터는 그룹화되어 소정의 비트 수 만큼 양자화 될 수 있다. 즉, 하나의 레이어 또는 복수개의 레이어가 분석된 그룹별 메모리 사용량 크기 순서에 따라서 양자화 될 수 있다.
예를 들면, 제3 그룹화 정책은 적어도 하나의 가중치 커널을 그룹화 하여 양자화 순서를 결정할 수 있다. 좀더 자세히 예를 들면, 적어도 하나의 가중치 커널 및/또는 특징 맵을 그룹화 할 수 있다. 이러한 경우 적어도 하나의 가중치 커널 및/또는 특징 맵은 그룹화되어 소정의 비트 수 만큼 양자화 될 수 있다. 즉, 하나의 가중치 커널 또는 복수개의 가중치 커널이 분석된 그룹별 메모리 사용량 크기 순서에 따라서 양자화 될 수 있다.
제3 그룹화 정책의 이유는, 특정 인공신경망모델의 경우, 레이어 별 또는 가중치 커널별로 메모리 사용량의 크기 차이가 상당히 클 수 있기 때문이다. 이러한 경우, 메모리 사용량 크기가 큰 레이어 또는 합성곱을 우선적으로 양자화 하면서 양자화에 따른 추론 정확도 저하를 사전에 검증하면, 메모리 사용량을 저감하면서 양자화된 인공신경망모델의 추론 정확도 저감을 최소화 할 수 있기 때문이다. 단 본 개시는 이에 제한되지 않는다.
제4 그룹화 정책은 제1 내지 제3 그룹화 정책을 선택적으로 적용하는 정책이다. 상술한 각각의 정책은 장점과 단점을 가지고 있을 수 있기 때문에, 인공신경망모델의 특성에 따라서 제1 내지 제3 그룹화 정책을 선택적으로 쓸 수 있다. 예를 들면, 특정 인공신경망모델의 경우 제 1 순위로 메모리 사용량 크기 순서로 양자화 순서를 결정할 수 있다. 하지만, 제 2 순위로 연산량 크기 순서로 양자화 순서를 재조정 할 수 있다. 또한 제 3 순위로 연산 순서로 양자화 순서를 재조정 할 수 있다. 각각의 그룹화 정책이 혼합되어 적용될 때, 최적화 시스템(1500)은 그룹화 정책들에게 각각의 가중치 값을 부여하여 다양한 조합의 그룹화 정책을 제공하도록 구성될 수 있다.
최적화 시스템(1500)은 상술한 그룹화 정책 중 선택된 정책에 따라서 인공신경망모델의 양자화를 위한 데이터 그룹화를 완료하고 순서가 정해진 데이터 그룹들은 순차적으로 양자화될 수 있다.
최적화 시스템(1500)은 그룹화 정책에 따라서 순서가 정해진 그룹화된 데이터들을 순서에 따라서 양자화 하도록 구성된다. 양자화 알고리즘은 양자화 수준에 따라서 양자화 될 수 있다. 양자화 수준이 1이면 1비트씩 그룹화된 데이터들을 양자화 할 수 있다. 양자화 수준이 2이면 2비트씩 그룹화된 데이터들을 양자화 할 수 있다. 즉, 양자화 수준은 1 이상의 정수일 수 있다.
최적화 모듈(1520)은 양자화가 적용된 인공신경망모델의 추론 정확도 향상을 위해서 양자화 인식 학습 알고리즘을 선택적으로 적용할 수 있다. 양자화 인식 학습 알고리즘은 데이터 그룹을 양자화한 다음 재학습을 수행하여 양자화에 의한 인공신경망모델의 추론 정확도 저하를 보상할 수 있는 효과가 있다.
인공신경망모델 평가 모듈(1530)은 그룹화 정책에 의해서 결정된 양자화 중인 데이터 그룹을 포함하는 인공신경망모델의 추론 정확도, 메모리 사용 요구량, 전력 소비량, 연산 성능, 예를 들면, 초당 추론 횟수 등을 평가하도록 구성된다. 예를 들면, 인공신경망모델 평가 모듈(1530)은 다양한 비용 함수를 통해서 상기 평가 결과를 제공하도록 구성될 수 있다.
만약, 양자화 중인 데이터 그룹을 포함하는 인공신경망모델의 평가된 추론 정확도가 인공신경망모델 평가 모듈(1530)에 설정된 목표 추론 정확도보다 높은 경우, 인공신경망모델 평가 모듈(1530)은 최적화 모듈(1520)에게 양자화 중인 데이터 그룹을 포함하는 인공신경망모델의 비트 수를 더 저감 시키도록 지시한다. 그리고 더 저감된 비트 수로 양자화 중인 데이터 그룹을 포함하는 인공신경망모델의 추론 정확도를 다시 평가한다. 상술한 양자화 중인 데이터 그룹의 양자화는 인공신경망모델의 평가된 추론 정확도가 목표 추론 정확도보다 작아질 때까지 반복될 수 있다.
만약, 양자화 중인 데이터 그룹을 포함하는 인공신경망모델의 평가된 추론 정확도가 인공신경망모델 평가 모듈(1530)에 설정된 목표 추론 정확도보다 작을 경우, 인공신경망모델 평가 모듈(1530)은 양자화 중인 데이터 그룹을 목표 추론 정확도가 높았던 순간으로 원복 시키고 양자화 중인 데이터 그룹의 양자화를 종료하여 양자화된 비트 수 결정하도록 구성될 수 있다.
상술한 데이터 그룹의 양자화가 완료되면, 다음 순서의 데이터 그룹의 양자화가 시작될 수 있으며, 각각의 데이터 그룹의 양자화는 동일한 순서로 반복될 수 있다. 따라서 모든 데이터 그룹이 기 설정된 그룹화 정책 순서에 따라서 양자화 될 수 있다.
인공신경망모델 평가 모듈(1530)은 그룹화 정책 순서에 따라서 양자화된 인공신경망모델이 신경망 프로세싱 유닛(100)에서 동작할 때의 성능을 시뮬레이션 하도록 구성될 수 있다.
최적화 시스템(1500)의 인공신경망모델 평가 모듈(1530)은 엣지 디바이스(1000)와 신경망 프로세싱 유닛(100)의 각종 데이터를 제공받아서 그룹화 정책 순서에 따라서 양자화된 인공신경망모델을 시뮬레이션 결과를 제공하도록 구성될 수 있다.
최적화 시스템(1500)은 그룹화 정책 순서에 따라서 양자화된 인공신경망모델을 시뮬레이션 하여, 해당 인공신경망모델이 신경망 프로세싱 유닛(100)을 포함하는 엣지 디바이스(1000)에서 원활히 동작될 수 있는지 여부를 판단할 수 있다.
최적화 시스템(1500)은 엣지 디바이스(1000) 및 신경망 프로세싱 유닛(100)의 연산 처리 능력, 가용 메모리 대역폭, 최대 메모리 대역폭, 메모리 액세스 레이턴시 등의 데이터와 인공신경망모델의 각각의 레이어의 연산량, 메모리 사용량을 등의 데이터를 활용하여 그룹화 정책 순서에 따라서 양자화된 인공신경망모델이 특정 신경망 프로세싱 유닛을 포함하는 특정 엣지 디바이스에서 동작할 때의 연산 시간, 초당 추론 횟수, 하드웨어 리소스 사용량, 추론 정확도, 및 전력 소비량 등의 시뮬레이션 결과 또는 시뮬레이션 추정치를 제공 할 수 있다.
최적화 시스템(1500)은 그룹화 정책의 우선 순위를 엣지 디바이스(1000), 신경망 프로세싱 유닛(100), 및/또는 인공신경망모델의 어플리케이션 요구 사항, 예를 들면, 추론 정확도, 메모리 크기 제한, 소비 전력 제한, 초당 추론 속도 제한 등을 복합적으로 고려하여 결정하도록 구성될 수 있다.
예를 들면, 최적화 시스템(1500)은 특정 엣지 디바이스의 어플리케이션 특성을 고려해서, 특정 엣지 디바이스의 성능 중 초당 추론 속도가 우선시 되어야 할 경우, 최적화 모듈(1520)의 그룹화 정책 순서를 연산량 저감으로 변경해서 인공신경망모델을 최적화 시킬 수 있다.
예를 들면, 최적화 시스템(1500)은 특정 엣지 디바이스의 어플리케이션 특성을 고려해서, 특정 엣지 디바이스의 성능 중 메모리 사용량이 우선시 되어야 할 경우, 최적화 모듈(1520)의 그룹화 정책 순서를 메모리 사용량 저감으로 변경해서 인공신경망모델을 최적화 시킬 수 있다.
모델 압축 알고리즘은 인공신경망모델의 가중치 데이터나, 활성화 맵 또는 특징 맵을 압축하는 기술이다. 압축하는 기술은 종래의 알려진 압축 기술들을 활용할 수 있다. 따라서 인공신경망모델의 데이터 크기가 경량화 될 수 있다.
최적화 모듈(1520)은 상술한 구성에 따르면 상대적으로 더 작은 크기의 데이터로 압축된 인공신경망모델은 NPU 메모리 시스템(120)에 저장 될 때 데이터 크기가 저감될 수 있는 효과가 있다.
재학습 알고리즘은 최적화 모듈(1520)의 다양한 알고리즘 적용시 저하되는 추론 정확도를 보상할 수 있는 기술이다. 예를 들면 양자화 알고리즘, 프루닝 알고리즘, 모델 압축 알고리즘과 같은 기술 적용 시, 인공신경망모델의 추론 정확도가 저하될 수 있다. 이러한 경우 최적화 시스템(1500)은 프루닝, 양자화, 및/또는 모델 압축 된 인공신경망모델을 재학습 시킬 수 있다. 이러한 경우, 재학습 된 인공신경망모델의 정확도가 다시 상승할 수 있는 효과가 있다. 따라서 하드웨어 자원 제약적인 휴대인공신경망장치(100)의 성능을 향상시킬 수 있는 효과가 있다.
최적화 시스템(1500)은 재학습 알고리즘 수행을 위해서 적어도 하나 이상의 학습 데이터 세트 및 대응되는 평가 데이터 세트를 포함하도록 구성될 수 있다.
전이 학습 알고리즘은 재학습 알고리즘의 한 종류로써 재학습 알고리즘에 포함될 수 있는 알고리즘이다. 전이 학습 알고리즘은 지식 증류(Knowledge Distillation) 기술도 사용하도록 구성될 수 있다. 지식 증류 기술은 기존에 잘 학습된 데이터 크기가 상대적으로 더 큰 인공신경망모델을 참조 모델로 활용하여 엣지 디바이스(1000)에 적용하고자 하는 경량화 된 인공신경망 모델을 학습시키는 기술이다. 예를 들면, 기존에 잘 학습된 데이터 크기가 상대적으로 더 큰 인공신경망은 100개 정도의 입력 레이어, 은닉 레이어 및 출력 레이어로 구성된 인공신경망모델일 수 있으며, 엣지 디바이스(1000)에 적용될 인공신경망모델은 50개 정도의 입력 레이어, 은닉 레이어 및 출력 레이어로 구성된 인공신경망모델일 수 있다. 즉, 상대적으로 많은 레이어 수와 상대적으로 많은 가중치 데이터를 가지는 큰 인공신경망모델은 비교적 높은 수준의 인공지능을 구현할 있지만, 엣지 디바이스(1000)와 같이 하드웨어 자원 제약적인 환경에서는 방대한 연산량을 원활하게 처리하기 어렵다. 이러한 경우 비교적 작은 인공신경망모델을 학습 시킬 때 학습이 완료되고 성능이 우수하지만 데이터 크기가 상대적으로 큰 인공신경망모델의 데이터 및 정보를 활용하여 경량화 된 인공신경망모델을 학습시키면, 경량화 된 인공신경망모델의 학습 시간을 단축시키고 추론 정확도 또한 유사해질 수 있게 되는 효과가 있다. 전이 학습 알고리즘은 참조할 인공신경망모델을 저장하도록 구성될 수 있다. 참조할 인공신경망모델은 레퍼런스 모델들로, 최적화 시스템이 저장될 수 있다.
양자화 인식 재학습 알고리즘은 재학습 알고리즘의 한 종류로써 재학습 알고리즘에 포함될 수 있는 알고리즘이다. 양자화 인식 학습 알고리즘은 양자화된 인공신경망모델을 학습 데이터를 활용하여 재학습 시키는 기술이다. 양자화된 인공신경망모델이 다시한번 학습 데이터로 재학습 되면 인공신경망모델의 추론 정확도가 향상될 수 있는 효과가 있다.
인공지능 기반 최적화 알고리즘은 최적화 시스템(1500)이 최적화 모듈(1520)의 다양한 알고리즘들을 인공지능 강화 학습 방식으로 인공신경망모델의 구조를 탐색하는 과정을 거쳐 최적으로 경량화 된 인공신경망모델을 생성하는 방법 또는 양자화 알고리즘, 프루닝 알고리즘, 재학습 알고리즘 모델 압축 알고리즘, 및 모델 압축 알고리즘과 같은 경량화 방법에 기초하지 않고, 최적화 시스템(1500)의 인공지능이 자체적으로 경량화 프로세스를 진행하여 최적의 경량화 결과를 얻는 방법이다.
최적화 시스템(1500)은 최적화 모듈(1520)을 통해서 최적화할 인공신경망모델에 복수의 최적화 알고리즘을 선택적으로 적용하도록 구성될 수 있다.
예를 들면, 최적화 시스템(1500)은 프루닝 알고리즘을 적용하여 경량화 된 인공신경망모델을 제공하도록 구성될 수 있다.
예를 들면, 최적화 시스템(1500)은 프루닝 알고리즘은 적용한 다음 양자화 알고리즘을 적용하여 경량화 된 인공신경망모델을 제공하도록 구성될 수 있다.
예를 들면, 최적화 시스템(1500)은 프루닝 알고리즘은 적용한 다음 양자화 알고리즘을 적용하고 그 다음으로 재학습 알고리즘을 적용하여 경량화 된 인공신경망 모델을 제공하도록 구성될 수 있다.
예를 들면, 최적화 시스템(1500)은 프루닝 알고리즘은 적용한 다음 양자화 알고리즘을 적용하고 그 다음으로 재학습 알고리즘을 적용하고, 그 다음으로 모델 압축 알고리즘을 적용하여 경량화 된 인공신경망모델을 제공하도록 구성될 수 있다.
상술한 구성에 따르면, 알고리즘 적용 순서에 의해서 인공신경망모델의 최적화 효율이 향상될 수 있는 효과가 있다.
상술한 구성에 따르면 최적화 시스템(1500)은 다양한 최적화 모듈(1520)에 포함된 적어도 하나의 최적화 알고리즘들을 순차적으로 적용하여 엣지 디바이스(1000)에 적용된 신경망 프로세싱 유닛(100)에서 동작할 수 있는 인공신경망모델을 최적화 시킬 수 있는 효과가 있다.
인공신경망모델 평가 모듈(1530)은 검증할 인공신경망모델의 평가 데이터 세트를 제공받도록 구성된다. 예를 들면 인공신경망모델이 자동차 추론 모델이면, 평가 데이터 세트는 다양한 자동차의 이미지 파일들일 수 있다. 인공신경망모델 평가 모듈(1530)은 평가 데이터 세트를 인공신경망모델에 입력하여 추론 정확도를 판단하도록 구성된다. 평가된 추론 정확도 및/또는 경량화 정도에 따라서 최적화 시스템(1500)은 최적화를 반복하거나 또는 종료할 수 있다.
인공신경망모델 갱신 모듈(1540)은 최적화가 완료된 모델을 갱신해서 최적화 시스템(1500)과 연결된 외부 시스템에 제공하도록 구성된다. 따라서 엣지 디바이스(1000)는 최적화 시스템(1500)으로부터 최적화된 인공신경망모델을 제공받을 수 있다.
도 12는 본 개시의 또 다른 예시에 따른 엣지 디바이스를 설명하는 개략적인 개념도이다.
본 개시의 또 다른 예시에 따른 엣지 디바이스(2000)는 본 개시의 다양한 예시들을 응용하여 다양한 가치를 사용자에게 제공하도록 구성된 예시다.
엣지 디바이스(2000)는 키워드 인식 및 제스처 인식을 하나의 신경망 프로세싱 유닛(2100)을 통해서 제공하도록 구성된 것을 특징으로 한다. 즉, 하나의 신경망 프로세싱 유닛(2100)이 복수의 추론 기능을 제공하도록 구성된 것을 특징으로 한다. 상술한 구성에 따르면, 엣지 디바이스(2000)는 하나의 신경망 프로세싱 유닛으로 복수의 추론 연산을 수행하여, 엣지 디바이스(2000)의 부품 수 및 제조 비용을 저감할 수 있는 효과가 있다.
상술한 엣지 디바이스(1000)와 본 개시의 또 다른 예시에 따른 엣지 디바이스(2000)는 실질적으로 유사한 구성을 다수 포함하고 있다. 따라서 단지 설명의 편의를 위해, 이하 중복된 설명은 생략될 수 있다.
엣지 디바이스(2000)는 다양하게 변형 실시될 수 있다, 예를 들면, 신경망 프로세싱 유닛(2100)은 상술한 신경망 프로세싱 유닛(100), 신경망 프로세싱 유닛(200), 신경망 프로세싱 유닛(300), 및 신경망 프로세싱 유닛(400) 중 하나의 신경망 프로세싱 유닛과 실질적으로 동일하게 구성될 수 있다.
엣지 디바이스(2000)는 예를 들면, 휴대폰, 스마트 폰, 인공지능 스피커, 디지털 방송 단말기, 네비게이션, 스마트 냉장고, 스마트 TV, 인공지능 CCTV, 태블릿, 노트북 컴퓨터, 자율 주행 자동차, PDA(personal digital assistance), 및 PMP(personal multimedia player) 중 하나일 수 있다. 단 본 개시의 예시들은 이에 제한되지 않는다.
중앙 처리 장치(1080)는 전원 제어부(1090) 및 신경망 프로세싱 유닛(2100)을 제어하도록 구성될 수 있다. 전원 제어부(1090)는 엣지 디바이스(2000)의 각각의 구성 요소의 전원을 선택적으로 공급 또는 차단하도록 구성될 수 있다. 단 본 개시의 예시들은 이에 제한되지 않는다.
엣지 디바이스(2000)는 적어도 신경망 프로세싱 유닛(2100), 카메라(1021) 및 마이크로폰(1022)을 포함하는 입력부(1020)를 포함하도록 구성될 수 있다.
카메라(1021) 및 마이크로폰(1022)은 복수의 감지 데이터를 제공하도록 구성된 입력부(1020)로 지칭되는 것도 가능하다.
입력부(1020)는 카메라(1021) 및 마이크로폰(1022)에 제한되지 않으며, 상술한 입력부(1020)의 구성요소들의 조합으로 구성될 수 있다.
이하 설명의 편의를 위해 카메라(1021)와 마이크로폰(1022)이 적용된 예시를 예를 들어 자세히 설명한다.
엣지 디바이스(2000)는 적어도 음향 데이터를 감지하도록 구성된 마이크로폰(1022), 영상 데이터를 감지하도록 구성된 카메라(1021), 및 적어도 2개의 서로 다른 추론 연산을 수행하도록 구성된 신경망 프로세싱 유닛(2100)을 포함하도록 구성될 수 있다. 신경망 프로세싱 유닛(2100)은 음향 데이터를 기초로 키워드를 추론 하도록 학습된 AI 키워드 인식모델을 구동하도록 구성될 수 있다. 그리고 신경망 프로세싱 유닛(2100)은 키워드 추론 결과에 응답하여 영상 데이터를 기초로 제스처를 추론 하도록 학습된 AI 제스처 인식모델을 구동할 수 있다.
구체적으로 예를 들면, 엣지 디바이스(2000)는 소비 전력 저감을 위해서 제1 모드가 될 수 있다. 제1 모드는 슬립 모드로 지칭되는 것도 가능하다.
제1 모드는, 소정 시간 동안 엣지 디바이스(2000)에 특별한 입력이 없을 때 설정될 수 있다. 중앙 처리 장치(1080)는 소정 시간 동안 입력이 없을 경우, 전원 제어부(1090)에게 엣지 디바이스(2000)가 제1 모드가 되도록 명령할 수 있다. 단, 본 개시의 예시들은 이에 제한되지 않는다. 전원 제어부(1090)는 제1 모드일 때, 마이크로폰(1022)에 전원을 공급하고, 카메라(1021)에 전원을 차단하도록 구성될 수 있다. 상술한 구성에 따르면, 엣지 디바이스(2000)는 제1 모드에서 카메라(1021)의 소비 전력을 차단할 수 있는 효과가 있다. 또한 제1 모드 중 사용자의 의도하지 않은 동작에 의한 제스처 오판을 방지 할 수 있는 효과가 있다.
부연 설명하면, 제1 모드에서 전원 제어부(1090)는 다양한 구성요소들의 전원을 선택적으로 차단하도록 구성될 수 있다.
예를 들면, 엣지 디바이스(2000)가 출력부를 포함할 경우, 전원 제어부(1090)는 출력부의 전원을 차단하도록 구성될 수 있다.
예를 들면, 엣지 디바이스(2000)가 무선 통신부를 포함할 경우, 전원 제어부(1090)는 무선 통신부의 전원을 차단하도록 구성될 수 있다.
즉, 전원 제어부(1090)는 엣지 디바이스(2000)의 구성에 따라 전원 차단 정책을 다양하게 제공할 수 있다.
신경망 프로세싱 유닛(2100)은 제1 모드에서 AI 제스처 인식모델의 추론을 중단하도록 구성될 수 있다. 따라서 엣지 디바이스(2000)는 카메라(1021) 및 신경망 프로세싱 유닛(2100)의 소비 전력을 동시에 저감할 수 있는 효과가 있다.
제1 모드 중 사용자가 엣지 디바이스(2000)의 마이크로폰(1022)에 특정 키워드를 말할 경우, 신경망 프로세싱 유닛(2100)은 음향 데이터를 입력 받고, AI 키워드 인식모델을 구동하여 AI 제스처 인식모델을 구동할 수 있는 키워드를 추론하도록 구성될 수 있다. 즉, 제1 모드 중 특정 키워드가 마이크로폰(1022)에 입력될 경우, 신경망 프로세싱 유닛(400)의 AI 키워드 인식모델의 추론 결과에 대응하여 AI 제스처 인식모델이 구동될 수 있다.
이때, AI 키워드 인식모델은 특정 키워드들만 인식하도록 학습된 인공 신경망일 수 있다. 예를 들면, 특정 키워드들은, “알렉사”, “시리야”, “볼륨업”, “볼륨다운”, “검색”, “켜줘”, “꺼줘”, ”인터넷”, “음악”, “영화” 등의 간단한 키워드 명령어들 일 수 있다. 예를 들면, 특정 키워드들은 1개 내지 100개의 자주 활용되는 키워드 명령어들일 수 있다.
엣지 디바이스(2000)는 추론 결과에 의해서 제1 모드에서 제2 모드로 전환될 수 있다.
중앙 처리 장치(1080)는 신경망 프로세싱 유닛(2100)의 AI 키워드 인식모델의 추론 결과를 전달받아 전원 제어부(1090)에게 엣지 디바이스(2000)가 제2 모드가 되도록 명령할 수 있다. 전원 제어부(1090)는 제2 모드일 때 카메라(1021)에 전원을 공급하도록 구성될 수 있다.
이어서, 신경망 프로세싱 유닛(2100)은 제2 모드에서 AI 제스처 인식모델의 추론 연산을 수행 하도록 구성될 수 있다.
이때, AI 제스처 인식모델은 특정 제스처만 인식하도록 학습된 인공 신경망일 수 있다. 예를 들면, 특정 제스처들은, 특정 손동작, 몸동작, 얼굴 표정 등일 수 있다.
부연 설명하면, 엣지 디바이스(2000)의 신경망 프로세싱 유닛(2100)은 독립형 신경망 프로세싱 유닛으로 구성될 수 있다. 즉, 엣지 디바이스(2000)는 독립형 신경망 프로세싱 유닛에 의해서 독립적으로 추론 연산을 수행하도록 구성될 수 있다. 만약, 엣지 디바이스가 무선 통신망을 통해서 클라우드 컴퓨팅 기반의 서버에서 인공 신경망 추론 서비스를 제공 받을 경우, 추론을 위한 카메라(1021) 및 마이크로폰(1022)의 데이터를 메인 메모리 시스템(1070)에 저장한 다음, 무선 통신부를 통해서 전송해야 한다.
상술하였듯이, 메인 메모리 시스템(1070)은 소비 전력 관점에서 NPU 메모리 시스템과 비교해서 비효율적이다. 하지만 독립적으로 동작할 수 있는 신경망 프로세싱 유닛(2100)에 의해서 엣지 디바이스(2100)의 소비 전력을 저감할 수 있는 효과가 있다.
또한, 음성 데이터와 영상 데이터는 사적인 데이터를 포함할 수 있다. 만약, 엣지 디바이스가 사용자의 대화 내용 또는 사생활을 촬영한 영상을 무선 통신부를 통해서 지속적으로 전송할 경우, 사생활 침해 문제가 발생될 수 있다.
따라서, 엣지 디바이스(2000)는 프라이버시 데이터가 포함될 수 있는 입력부(1020)의 데이터들을 신경망 프로세싱 유닛(2100)에 의해서 추론 연산한 다음 삭제할 수 있다. 즉, 프라이버시 데이터가 포함될 수 있는 영상 데이터 및 음향 데이터는 신경망 프로세싱 유닛(2100)에 의해서 추론 연산 후 삭제될 수 있다.
또한, 엣지 디바이스(2000)는 프라이버시 데이터가 포함될 수 있는 입력부(1020)의 데이터들을 무선 통신부를 통해서 전달하는 것을 차단하도록 구성될 수 있다.
또한, 엣지 디바이스(2000)는 프라이버시 데이터가 포함될 수 있는 입력부(1020)의 데이터들을 메인 메모리 시스템(1070)에 저장하지 않도록 구성될 수 있다.
또한, 엣지 디바이스(2000)는 프라이버시 데이터가 포함될 수 있는 입력부(1020)의 데이터들을 프라이버시 데이터가 포함된 데이터로 분류하도록 구성될 수 있다.
상술한 구성들에 따르면, 엣지 디바이스(2000)는 사용자에게 편의를 제공하고, 소비 전력을 저감하면서 동시에 사생활 데이터 누출 문제를 차단할 수 있는 효과가 있다.
한편으로, 신경망 프로세싱 유닛(2100)은 멀티태스킹 기능을 제공하기 위해서 최적화 될 수 있다. 신경망 프로세싱 유닛(2100)은 적어도 2개의 서로 다른 추론 연산을 제공하기 위해서, 적어도 2개의 인공신경망모델들을 구동하도록 구성될 수 있다. 또한 하나의 인공신경망모델의 추론 결과에 의해서 다른 인공신경망모델을 구동하도록 구성될 수 있다. 즉 하나의 인공신경망모델은 상시 동작하는 인공신경망모델일 수 있으며, 다른 인공신경망모델은 특정 조건에서 동작하는 인공신경망모델일 수 있다.
즉, 엣지 디바이스(2000)는 복수의 감지 데이터를 제공하도록 구성된 입력부(1020), 복수의 인공신경망모델들을 구동하도록 구성된 신경망 프로세싱 유닛(2100)을 포함하고, 복수의 인공신경망모델들 중 제1 인공신경망모델은 상시 동작하는 인공신경망모델이고, 복수의 인공신경망모델들 중 제2 인공신경망모델은 특정 조건에서 동작하는 인공신경망모델로 구성될 수 있다. 그리고 제2 인공신경망모델은 제1 인공신경망모델의 추론 결과에 따라서 구동 여부가 제어될 수 있다.
상술한 구성에 따르면, 특정 조건에서만 동작하는 인공신경망모델이 동작하지 않을 경우, 엣지 디바이스(2000)의 소비 전력을 저감할 수 있는 효과가 있다.
신경망 프로세싱 유닛(2100)의 멀티태스킹을 위해서, 신경망 프로세싱 유닛(2100)의 NPU 스케줄러는 복수의 인공신경망모델들의 구조 데이터 또는 인공신경망 데이터 지역성 정보들에 기초하여 스케줄링 순서를 결정하도록 구성될 수 있다.
신경망 프로세싱 유닛(2100)의 멀티태스킹을 위해서, 신경망 프로세싱 유닛(2100)의 프로세싱 엘리먼트들의 선택적으로 할당할 수 있다. 예를 들면, 프로세싱 엘리먼트들의 개수가 100개일 경우, 제1 인공신경망모델의 추론 연산을 위해서 30개의 프로세싱 엘리먼트들이 할당될 수 있으며, 제2 인공신경망모델의 추론 연산을 위해서 50개의 프로세싱 엘리먼트들이 할당될 수 있다. 그리고 이러한 경우 할당되지 않은 나머지 프로세싱 엘리먼트들 동작 하지 않도록 제어될 수 있다.
NPU 스케줄러는 복수의 인공신경망모델들 각각의 레이어의 노드 데이터 및 각각의 연결망의 가중치 데이터의 크기 및 구조 데이터에 기초하여 스케줄링 순서를 결정하고, 스케줄링 순서에 따라서 프로세싱 엘리먼트들을 할당할 수 있다.
상술한 구성에 따르면, NPU 스케줄러에 의해서 특정 프로세싱 엘리먼트들이 특정 인공신경망모델의 추론을 위해서 할당될 수 있기 때문에, 하나의 신경망 프로세싱 유닛(2100)이 복수의 인공신경망모델들을 동시에 병렬로 추론할 수 있는 효과가 있다.
NPU 스케줄러는 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보를 활용하여 복수의 인공신경망모델들 각각의 레이어의 노드 데이터 및 각각의 연결망의 가중치 데이터의 크기를 확인할 수 있기 때문에, 각각의 스케줄링 별 추론 연산에 필요한 메모리 크기를 계산할 수 있다. 따라서, NPU 스케줄러는 멀티태스킹을 수행할 수 있는 신경망 프로세싱 유닛(2100)의 NPU 메모리 시스템의 메모리 가용 한도 내에서 스케줄링 순서별로 필요한 데이터를 저장할 수 있다.
NPU 스케줄러는 NPU 메모리 시스템에 저장되는 데이터의 우선 순위를 설정하도록 구성될 수 있다.
예를 들면, AI 키워드 인식모델은 신경망 프로세싱 유닛(2100)에서 상시 동작하도록 구성될 수 있다. 따라서 신경망 프로세싱 유닛(2100)은 AI 키워드 인식모델의 데이터의 우선 순위를 높게 설정할 수 있다.
예를 들면, AI 제스처 인식모델은 신경망 프로세싱 유닛(2100)에서 특정 조건에서만 동작하도록 구성될 수 있다. 따라서 신경망 프로세싱 유닛(2100)은 AI 제스처 인식모델의 데이터의 우선 순위를 낮게 설정할 수 있다.
상술한 구성에 따르면, 우선 순위가 높은 데이터가 NPU 메모리 시스템에 유지되기 때문에, 저장된 데이터를 재사용하여 메모리 재사용율을 높일 수 있는 효과가 있다. 따라서 추론 속도와 소비 전력을 저감할 수 있는 효과가 있다.
본 개시의 일 예시에 따른 신경망 프로세싱 유닛은 프로세싱 엘리먼트 어레이, 프로세싱 엘리먼트 어레이에서 처리되는 인공신경망모델을 저장 또는 인공신경망모델의 적어도 일부 데이터를 저장하도록 구성된 NPU 메모리 시스템, 및 상기 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보에 기초하여 상기 프로세싱 엘리먼트 어레이 및 상기 NPU 메모리 시스템을 제어하도록 구성된 NPU 스케줄러를 포함할 수 있다.
프로세싱 엘리먼트 어레이는 MAC 연산을 수행하도록 구성된 복수의 프로세싱 엘리먼트를 포함할 수 있다.
NPU 스케줄러는 프로세싱 엘리먼트 어레이 및 NPU 메모리 시스템의 읽기 및 쓰기 순서를 제어하도록 더 구성될 수 있다.
NPU 스케줄러는 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보를 분석하여 프로세싱 엘리먼트 어레이 및 NPU 메모리 시스템을 제어하도록 더 구성될 수 있다.
NPU 스케줄러는 인공신경망모델의 각각의 레이어의 노드 데이터, 레이어들의 배치 구조 데이터, 및 각각의 레이어의 노드를 연결하는 연결망의 가중치 데이터를 더 포함할 수 있다.
NPU 스케줄러는 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보에 기초하여 인공신경망모델의 연산 순서를 스케줄링 하도록 더 구성될 수 있다.
NPU 스케줄러는 인공신경망모델의 구조 데이터 중 인공신경망모델의 레이어들의 배치 구조 데이터에 기초해서 프로세싱 엘리먼트 어레이에 포함된 복수의 프로세싱 엘리먼트들의 연산 순서를 스케줄링 하도록 구성될 수 있다.
NPU 스케줄러는 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보에 기초하여 인공신경망모델의 레이어의 노드 데이터 및 연결망의 가중치 데이터가 저장된 메모리 어드레스 값을 액세스하도록 구성될 수 있다.
NPU 스케줄러는 설정된 스케줄링 순서대로 연산이 수행되도록 NPU 메모리 시스템과 프로세싱 엘리먼트 어레이를 제어하도록 구성될 수 있다.
인공신경망모델의 인공 신경망의 레이어들의 구조와, 구조에 대응되는 연산 순서 데이터에 기초하여, 프로세싱 순서를 스케줄링 하도록 구성될 수 있다.
NPU 스케줄러는 인공신경망모델의 인공 신경망의 입력 레이어부터 출력 레이어 까지의 구조 데이터 또는 인공신경망 데이터 지역성 정보를 기초로 프로세싱 순서를 스케줄링 하도록 구성된, 신경망 프로세싱 유닛.
NPU 스케줄러는 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보에 기초한 스케줄링 순서를 활용하여, NPU 메모리 시스템을 제어하여 메모리 재사용율을 향상시키도록 구성될 수 있다.
NPU 스케줄러는 제1 스케줄링의 제1 연산 값이 저장된 메모리 어드레스 값을 제1 스케줄링의 다음 스케줄링인 제2 스케줄링의 제2 레이어의 노드 데이터에 대응되는 메모리 어드레스 값으로 재사용 하도록 구성될 수 있다.
NPU 스케줄러는 연산 결과가 저장된 메모리 어드레스의 값을 이어지는 다음 연산에서 재사용하도록 구성될 수 있다.
NPU 메모리 시스템은 정적 메모리를 포함할 수 있다.
NPU 메모리 시스템은 SRAM, MRAM, STT-MRAM, eMRAM, 및 OST-MRAM 중 적어도 하나를 포함할 수 있다.
본 개시의 일 예시에 따른 엣지 디바이스는 중앙 처리 장치, 인공신경망모델을 저장하도록 구성된 메인 메모리 시스템, 중앙 처리 장치 및 메인 메모리 시스템의 통신을 제어하는 시스템 버스 및 프로세싱 엘리먼트 어레이, NPU 메모리 시스템, 프로세싱 엘리먼트 어레이 및 NPU 메모리 시스템을 제어하도록 구성된 NPU 스케줄러, 및 NPU 인터페이스를 포함하는 신경망 프로세싱 유닛을 포함하고, NPU 인터페이스는 시스템 버스를 통해서 상기 중앙 처리 장치와 통신하도록 구성되고, NPU 인터페이스는 인공신경망모델 관련된 데이터는 상기 메인 메모리 시스템과 직접 통신하도록 구성될 수 있다.
엣지 디바이스는 휴대폰, 스마트 폰, 인공지능 스피커, 디지털 방송 단말기, 네비게이션, 웨어러블 디바이스, 스마트 시계, 스마트 냉장고, 스마트 TV, 디지털 사이니지, VR 장치, AR 장치, 인공지능 CCTV, 인공지능 로봇 청소기, 태블릿, 노트북 컴퓨터, 자율 주행 자동차, 자율 주행 드론, 자율 주행 2족 보행 로봇, 자율 주행 4족 보행 로봇, 자율 주행 모빌리티, 인공지능 로봇, PDA, 및 PMP 중 하나일 수 있다.
신경망 프로세싱 유닛의 NPU 메모리 시스템은, 메인 메모리 시스템보다 인공신경망모델의 추론 연산의 읽기/쓰기 속도가 상대적으로 더 빠르고, 소비 전력을 상대적으로 더 적게 소비하도록 구성될 수 있다.
신경망 프로세싱 유닛은 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보에 기초하여, NPU 메모리 시스템의 메모리 재사용율을 향상시키도록 구성될 수 있다.
신경망 프로세싱 유닛은 메인 메모리 시스템의 메모리 개수, 메모리 종류, 데이터 전송 속도, 메모리 크기 중 적어도 하나 이상의 데이터를 획득하도록 구성될 수 있다.
신경망 프로세싱 유닛은 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보에 기초하여 NPU 메모리 시스템 내부에 저장된 데이터의 재사용을 제어하고, 신경망 프로세싱 유닛은 데이터 재사용 시 메인 메모리 시스템에 메모리 액세스 요청을 하지 않도록 구성될 수 있다.
NPU 메모리 시스템은 DRAM을 포함하지 않고, NPU 메모리 시스템은 메인 메모리 시스템보다 상대적으로 읽기 및 쓰기 속도가 더 빠르고 소비 전력을 상대적으로 덜 소비하도록 구성된 정적 메모리를 포함할 수 있다.
NPU 메모리 시스템은 메인 메모리 시스템에서 불러올 상기 인공신경망모델의 데이터 크기와 NPU 메모리 시스템의 메모리 크기를 비교하여 스케줄링을 제어하도록 구성될 수 있다.
본 개시의 다른 예시에 따른 신경망 프로세싱 유닛은 프로세싱 엘리먼트 어레이, 프로세싱 엘리먼트 어레이에서 처리 되는 인공신경망모델을 저장 또는 인공신경망모델의 적어도 일부 데이터를 저장하도록 구성된 NPU 메모리 시스템, 및 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보에 기초하여 프로세싱 엘리먼트 어레이 및 NPU 메모리 시스템을 제어하도록 구성된 NPU 스케줄러를 포함하고, 프로세싱 엘리먼트 어레이는 MAC 연산을 수행하도록 구성되고, 프로세싱 엘리먼트 어레이는 MAC 연산 결과를 양자화해서 출력하도록 구성될 수 있다.
프로세싱 엘리먼트 어레이의 각각의 프로세싱 엘리먼트의 제1 입력부는 변수 값을 입력 받도록 구성되고, 프로세싱 엘리먼트 어레이의 각각의 프로세싱 엘리먼트의 제2 입력부는 상수 값을 입력 받도록 구성될 수 있다.
프로세싱 엘리먼트는 곱셈기, 가산기, 누산기 및 비트 양자화 유닛을 포함하도록 구성될 수 있다.
NPU 스케줄러는 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보에 기초하여 재사용 가능한 변수 값 및 재사용 가능한 상수 값을 인식하고, 재사용 가능한 변수 값 및 재사용 가능한 상수 값을 이용하여 메모리를 재사용 하도록 NPU 메모리 시스템을 제어하도록 구성될 수 있다.
프로세싱 엘리먼트 어레이의 MAC 연산 특성 및 소비 전력 특성을 고려하여 프로세싱 엘리먼트 어레이의 연산 값의 비트 수를 저감하도록 구성될 수 있다.
NPU 메모리 시스템은 인공신경망모델의 데이터 크기 및 연산 단계를 고려하여 가중치 데이터가 저장된 특정 메모리 어드레스를 재사용하도록 구성된 저전력 메모리 시스템일 수 있다.
NPU 스케줄러는 스케줄링 순서에 따른 인공신경망모델의 MAC 연산 값을 NPU 메모리 시스템의 특정 메모리 어드레스에 저장하고, MAC 연산 값이 저장된 특정 메모리 어드레스는 다음 스케줄링 순서의 MAC 연산의 입력 데이터일 수 있다.
NPU 시스템 메모리는 추론 연산이 지속되는 동안 NPU 시스템 메모리에 저장된 연결망들의 가중치 데이터를 보존하도록 구성될 수 있다.
프로세싱 엘리먼트 어레이의 각각의 프로세싱 엘리먼트의 제1 입력부의 입력 데이터가 저장된 메모리 어드레스의 갱신 횟수는 제2 입력부의 입력 데이터가 저장된 메모리 어드레스의 갱신 횟수보다 더 많을 수 있다.
NPU 시스템 메모리는 추론 연산이 지속되는 동안 NPU 시스템 메모리에 저장된 상기 MAC 연산 값을 재사용 하도록 구성될 수 있다.
본 개시의 또 다른 예시에 따른 신경망 프로세싱 유닛은 복수의 프로세싱 엘리먼트들 및 복수의 레지스터 파일들을 포함하는 프로세싱 엘리먼트 어레이, 프로세싱 엘리먼트 어레이에서 처리 되는 인공신경망모델을 저장 또는 인공신경망모델의 적어도 일부 데이터를 저장하도록 구성된 NPU 메모리 시스템, 및 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보에 기초하여 프로세싱 엘리먼트 어레이 및 NPU 메모리 시스템을 제어하도록 구성된 NPU 스케줄러를 포함할 수 있다.
복수의 레지스터 파일들 각각의 메모리 크기는 NPU 메모리 시스템의 메모리 크기보다 상대적으로 더 작으며, 복수의 레지스터 파일들 각각의 최대 전송 속도는 NPU 메모리 시스템의 최대 전송 속도보다 상대적으로 더 빠를 수 있다.
복수의 레지스터 파일들 각각의 메모리 크기는 NPU 메모리 시스템의 메모리 크기보다 상대적으로 더 빠른 최대 전송 속도를 가지는 메모리 크기를 가지도록 구성될 수 있다.
복수의 레지스터 파일들 각각의 메모리 크기는 NPU 메모리 시스템의 메모리 크기보다 상대적으로 더 작으며, 복수의 레지스터 파일들 각각의 동일 전송 속도 기준 전력 소비량은 NPU 메모리 시스템의 동일 전송 속도 기준 전력 소비량 보다 상대적으로 더 적을 수 있다.
복수의 레지스터 파일들 각각의 메모리 크기는 NPU 메모리 시스템의 메모리 크기보다 동일 전송 속도 기준 전력 소비량이 상대적으로 더 작은 메모리 크기를 가지도록 구성될 수 있다.
복수의 레지스터 파일들 각각은 NPU 메모리 시스템보다 상대적으로 더 빠른 최대 전송 속도를 가지고, 동일 전송 속도 기준 전력 소비량이 상대적으로 더 작은 크기의 메모리로 구성될 수 있다.
NPU 메모리 시스템은 계층 구조를 가지는 제1 메모리, 제2 메모리, 및 제3 메모리를 더 포함하고, NPU 스케줄러는 신경망 프로세싱 유닛에서 구동되는 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보에 기초하여 NPU 메모리 시스템의 제1 메모리, 제2 메모리 및 제3 메모리를 계층 구조에 기초하여 제어하여 NPU 메모리 시스템의 메모리 재사용율을 향상시키도록 구성될 수 있다.
제1 메모리는 제2 메모리 및 제3 메모리와 통신하도록 구성되고, 제2 메모리 및 제3 메모리는 복수의 프로세싱 엘리먼트들 및 복수의 레지스터 파일들과 통신하도록 구성될 수 있다.
NPU 메모리 시스템은 메모리 재사용에 최적화된 복수의 메모리 계층 구조를 가지도록 구성될 수 있다.
NPU 스케줄러는 스케줄링 순서 별 데이터의 크기를 판단하고, 제1 메모리의 가용 한도 내에서 스케줄링 순서 별 데이터를 순차적으로 저장하도록 구성될 수 있다.
NPU 스케줄러는 메모리 재사용율을 비교하여 제1 메모리에 저장된 데이터 중 일부를 제2 메모리 및 제3 메모리 중 하나에 선택적으로 저장하도록 구성될 수 있다.
제2 메모리에 저장되는 데이터의 메모리 재사용율은 제3 메모리에 저장되는 데이터의 메모리 재사용율보다 더 높을 수 있다.
NPU 스케줄러는 제2 메모리에 특성의 데이터가 저장될 경우, 제1 메모리의 중복되는 데이터를 삭제하도록 구성될 수 있다.
제3 메모리에 저장되는 데이터는 재사용이 가능한 변수 특성을 가지도록 구성될 수 있다.
본 개시의 또 다른 예시에 따른 엣지 디바이스는 음향 데이터를 감지하도록 구성된 마이크로폰, 영상 데이터를 감지하도록 구성된 카메라, 및 적어도 2개의 서로 다른 추론 연산을 수행하도록 구성된 신경망 프로세싱 유닛을 포함하고, 신경망 프로세싱 유닛은 음향 데이터를 기초로 키워드를 추론 하도록 학습된 AI 키워드 인식모델을 구동하도록 구성되고, 신경망 프로세싱 유닛은 키워드 추론 결과에 응답하여 영상 데이터를 기초로 제스처를 추론 하도록 학습된 AI 제스처 인식모델을 구동하도록 구성될 수 있다.
엣지 디바이스는 중앙 처리 장치 및 전원 제어부를 더 포함하고, 중앙 처리 장치는 소정 시간 동안 입력이 없을 경우 제1 모드가 되도록 명령하고, 전원 제어부는 제1 모드일 때 상기 마이크로폰에 전원을 공급하고 카메라에 전원을 차단하도록 구성될 수 있다.
신경망 프로세싱 유닛은 제1 모드에서 AI 제스처 인식모델의 추론 연산을 중단하도록 구성될 수 있다.
중앙 처리 장치는 신경망 프로세싱 유닛의 AI 키워드 인식모델의 추론 결과를 전달받아 제2 모드가 되도록 명령하고, 전원 제어부는 제2 모드일 때 카메라에 전원을 공급하도록 구성될 수 있다.
신경망 프로세싱 유닛은 제2 모드에서 AI 제스처 인식모델의 추론 연산을 수행 하도록 구성될 수 있다.
신경망 프로세싱 유닛은 독립형 신경망 프로세싱 유닛일 수 있다.
프라이버시 데이터를 포함하는 영상 데이터 및 음향 데이터는 신경망 프로세싱 유닛에 의해서 추론 연산 후 삭제되도록 구성될 수 있다.
제1 모드 중 특정 키워드가 마이크로폰에 입력될 경우, 신경망 프로세싱 유닛의 AI 키워드 인식모델의 추론 결과에 대응하여 AI 제스처 인식모델이 구동하도록 구성될 수 있다.
본 개시의 또 다른 예시에 따른 엣지 디바이스는 복수의 감지 데이터를 제공하도록 구성된 입력부, 복수의 인공신경망모델들을 구동하도록 구성된 신경망 프로세싱 유닛을 포함하고, 복수의 인공신경망모델들 중 제1 인공신경망모델은 상시 동작하는 인공신경망모델이고, 복수의 인공신경망모델들 중 제2 인공신경망모델은 기 설정된 조건에서만 동작하도록 구성된 인공신경망모델일 수 있다.
제2 인공신경망모델은 제1 인공신경망모델의 추론 결과에 따라서 구동 여부가 제어되도록 구성될 수 있다.
신경망 프로세싱 유닛은 NPU 스케줄러를 더 포함하고, NPU 스케줄러는 복수의 인공신경망모델들의 구조 데이터 또는 인공신경망 데이터 지역성 정보들에 기초하여 스케줄링 순서를 결정하도록 구성될 수 있다.
신경망 프로세싱 유닛은 복수의 프로세싱 엘리먼트들을 더 포함하고, NPU 스케줄러는 복수의 인공신경망모델들 각각의 레이어의 노드 데이터 및 각각의 연결망의 가중치의 데이터 크기 및 복수의 인공신경망모델들의 구조 데이터 또는 인공신경망 데이터 지역성 정보에 기초하여 스케줄링 순서를 결정하고, 결정된 스케줄링 순서에 따라서 프로세싱 엘리먼트들을 할당하도록 구성될 수 있다.
신경망 프로세싱 유닛은 NPU 메모리 시스템을 더 포함하고, NPU 스케줄러는 NPU 메모리 시스템에 저장되는 데이터의 우선 순위를 설정하도록 구성될 수 있다.
본 개시의 또 다른 예시에 따른 신경망 프로세싱 유닛은 프로세싱 엘리먼트 어레이, 프로세싱 엘리먼트 어레이에서 처리 되는 인공신경망모델을 저장 또는 인공신경망모델의 적어도 일부 데이터를 저장하도록 구성된 NPU 메모리 시스템, 프로세싱 엘리먼트 어레이 및 NPU 메모리 시스템을 제어하도록 구성된 NPU 스케줄러, 및 인공신경망모델을 활용하여 서로 다른 복수의 입력 데이터들을 추론하도록 구성된 NPU 배치 모드를 포함할 수 있다.
서로 다른 복수의 입력 데이터들은 복수의 영상 데이터들일 수 있다.
NPU 배치 모드는 복수의 영상 데이터들을 합쳐서 동작 프레임을 증가시키도록 구성될 수 있다.
NPU 배치 모드는 인공신경망모델의 가중치 데이터를 재활용하여 서로 다른 복수의 입력 데이터들의 추론 연산을 수행하도록 구성될 수 있다.
NPU 배치 모드는 복수의 입력 데이터를 하나의 연속되는 데이터로 변환하도록 구성될 수 있다.
본 개시의 또 다른 예시에 따른 신경망 프로세싱 유닛은 적어도 하나의 프로세싱 엘리먼트, 적어도 하나의 프로세싱 엘리먼트에 의해서 추론될 수 있는 인공신경망모델을 저장 또는 인공신경망모델의 적어도 일부 데이터를 저장할 수 있는 NPU 메모리 시스템, 및 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보에 기초하여 적어도 하나의 프로세싱 엘리먼트 및 NPU 메모리 시스템을 제어하도록 구성된 NPU 스케줄러를 포함할 수 있다.
NPU 스케줄러는 신경망 프로세싱 유닛의 구조 데이터 또는 인공신경망 데이터 지역성 정보를 더 제공받도록 구성될 수 있다.
신경망 프로세싱 유닛의 구조 데이터는 NPU 메모리 시스템의 메모리 크기, NPU 메모리 시스템의 계층 구조, 적어도 하나의 프로세싱 엘리먼트의 개수 데이터, 및 적어도 하나의 프로세싱 엘리먼트의 연산기 구조 중 적어도 하나를 포함할 수 있다.
신경망 프로세싱 유닛은 추론 기능을 수행하도록 학습된 인공신경망모델, 인공신경망모델을 활용하여 입력 데이터를 추론하도록 구성된 프로세싱 엘리먼트 어레이, 프로세싱 엘리먼트 어레이와 통신하도록 구성된 NPU 메모리 시스템, 및 프로세싱 엘리먼트 어레이 및 NPU 메모리 시스템을 제어하도록 구성된 NPU 스케줄러를 포함하고, 인공신경망모델의 데이터 크기와 NPU 메모리 시스템의 메모리 크기를 비교하고, 인공신경망모델은 양자화 알고리즘, 프루닝 알고리즘, 재학습 알고리즘, 양자화 인식 학습 알고리즘, 모델 압축 알고리즘, 및 인공지능 기반 최적화 알고리즘 중 적어도 하나의 알고리즘으로 NPU 메모리 시스템의 메모리 크기를 고려하여 최적화되도록 구성될 수 있다.
인공신경망모델은 신경망 프로세싱 유닛과 통신하도록 구성된 최적화 시스템을 통해서 신경망 프로세싱 유닛에 최적화될 수 있다.
인공신경망모델은 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보 및 프로세싱 유닛의 구조 데이터 중 적어도 하나를 기초해서 최적화 될 수 있다.
인공신경망모델은 프루닝 알고리즘이 적용된 후 양자화 알고리즘이 적용될 수 있다.
인공신경망모델은 프루닝 알고리즘이 적용된 후 양자화 알고리즘이 적용되고, 재학습 알고리즘이 적용될 수 있다.
인공신경망모델은 프루닝 알고리즘이 적용된 후 양자화 알고리즘이 적용되고, 다음으로 재학습 알고리즘이 적용되고, 다음으로 모델 압축 알고리즘이 적용될 수 있다.
인공신경망모델은 복수의 레이어를 포함하고, 복수의 레이어 각각은 가중치 데이터를 포함하고, 각각의 가중치 데이터들은 각각 프루닝 될 수 있다.
가중치 데이터들 중 데이터 크기가 상대적으로 더 큰 적어도 하나 이상의 가중치 데이터가 우선 적으로 프루닝 될 수 있다.
가중치 데이터들 중 연산량 크기가 상대적으로 더 큰 적어도 하나 이상의 가중치 데이터가 우선적으로 프루닝 될 수 있다.
인공신경망모델은 복수의 레이어를 포함하고, 복수의 레이어 각각은 노드 데이터 및 가중치 데이터를 포함하고, 가중치 데이터들은 각각 양자화될 수 있다.
노드 데이터들은 양자화될 수 있다.
적어도 하나의 레이어의 노드 데이터 및 가중치 데이터는 각각 양자화될 수 있다.
가중치 데이터들 중 크기가 상대적으로 더 큰 적어도 하나 이상의 가중치 데이터를 우선 적으로 양자화 할 수 있다.
노드 데이터들 중 크기가 상대적으로 더 큰 적어도 하나 이상의 노드 데이터가 우선 적으로 양자화 될 수 있다.
프로세싱 엘리먼트 어레이는 적어도 하나의 프로세싱 엘리먼트를 포함하고, 적어도 하나의 프로세싱 엘리먼트는 비트 수가 각각 양자화된 노드 데이터 및 가중치 데이터를 연산하도록 구성될 수 있다.
프로세싱 엘리먼트 어레이는 비트 양자화 유닛을 더 포함하고, 프로세싱 엘리먼트 어레이의 출력 데이터의 비트 수는 비트 양자화 유닛에 의해서 양자화되도록 구성될 수 있다.
인공신경망모델은 양자화된 인공신경망모델이고, NPU 메모리 시스템은 인공신경망모델의 양자화된 복수의 가중치 데이터의 비트 수 및 양자화된 복수의 노드 데이터의 비트 수에 대응하여 인공신경망모델의 데이터를 저장하도록 구성될 수 있다.
인공신경망모델은 양자화된 인공신경망모델이고, 프로세싱 엘리먼트 어레이는 인공신경망모델의 양자화된 복수의 가중치 데이터의 비트 수 및 양자화된 복수의 노드 데이터의 비트 수에 대응하여 NPU 메모리 시스템으로부터 양자화된 복수의 가중치 데이터 및 양자화된 복수의 노드 데이터를 제공받도록 구성될 수 있다.
신경망 프로세싱 유닛은 인공신경망모델, 인공신경망모델을 처리 하도록 구성된 복수의 프로세싱 엘리먼트, 인공신경망모델의 데이터를 프로세싱 엘리먼트 어레이에 공급하도록 구성된 NPU 메모리 시스템, 및 프로세싱 엘리먼트 어레이 및 NPU 메모리 시스템을 제어하도록 구성된 NPU 스케줄러를 포함하고, 인공신경망모델은 적어도 하나의 그룹화 정책에 의해서 양자화될 수 있다.
적어도 하나의 그룹화 정책은, 인공신경망모델의 연산 순서, 인공신경망모델의 연산량 크기, 및 인공신경망모델의 메모리 사용량 크기 중 적어도 하나를 적어도 하나의 그룹화 정책의 판단 기준으로 하할 수 있다.
적어도 하나의 그룹화 정책은 복수의 그룹화 정책들이고, 복수의 그룹화 정책 각각은 각각의 가중치 값에 의해서 그룹화 정책의 순서가 결정될 수 있다.
인공신경망모델은 적어도 하나의 그룹화 정책에 따라서 순서가 정해진 그룹화된 데이터들의 순서로 양자화된, 신경망 프로세싱 유닛.
인공신경망모델은 양자화 인식 학습 알고리즘이 적용될 수 있다.
인공신경망모델은 그룹화 정책에 의해서 양자화 될 때, 양자화 중인 데이터 그룹을 포함하는 인공신경망모델의 추론 정확도를 참조하여 양자화될 수 있다.
인공신경망모델에서, 양자화 중인 데이터 그룹을 포함하는 인공신경망모델의 평가된 추론 정확도가 기 설정된 목표 추론 정확도보다 높은 경우, 양자화 중인 데이터 그룹을 포함하는 인공신경망모델의 비트 수가 저감될 수 있다.
인공신경망모델은 양자화 중인 데이터 그룹을 포함하는 인공신경망모델의 평가된 추론 정확도가 기 설정된 목표 추론 정확도보다 작을 경우, 양자화 중인 데이터 그룹을 목표 추론 정확도가 높았던 순간으로 원복 시켜서 양자화를 종료할 수 있다.
신경망 프로세싱 유닛은 신경망 프로세싱 유닛과 연결된 엣지 디바이스를 더 포함하고, 인공신경망모델은 엣지 디바이스의 연산 처리 능력, 신경망 프로세싱 유닛의 연산 처리 능력, 엣지 디바이스의 가용 메모리 대역폭, 신경망 프로세싱 유닛의 가용 메모리 대역폭, 엣지 디바이스의 최대 메모리 대역폭, 신경망 프로세싱 유닛의 최대 메모리 대역폭, 엣지 디바이스의 최대 메모리 레이턴시, 및 신경망 프로세싱 유닛의 최대 메모리 레이턴시 중 적어도 하나의 데이터에 기초하여 결정된 그룹화 정책 순서에 따라서 양자화될 수 있다.
신경망 프로세싱 유닛은 인공신경망모델, 인공신경망모델을 처리 하도록 구성된 복수의 프로세싱 엘리먼트, 인공신경망모델의 데이터를 프로세싱 엘리먼트 어레이에 공급하도록 구성된 NPU 메모리 시스템, 및 프로세싱 엘리먼트 어레이 및 NPU 메모리 시스템을 제어하도록 구성된 NPU 스케줄러를 포함하고, 인공신경망모델은 NPU 메모리 시스템의 메모리 크기에 기초해서 인공신경망모델의 적어도 하나의 레이어의 노드 데이터 또는 적어도 하나의 레이어의 가중치 데이터가 양자화 될 수 있다.
NPU 메모리 시스템은 인공신경망모델의 적어도 하나의 레이어의 노드 데이터 또는 적어도 하나의 레이어의 가중치 데이터 각각의 양자화된 비트 수 데이터를 저장하도록 구성될 수 있다.
복수의 프로세싱 엘리먼트의 각각의 입력부에 입력되는 데이터의 비트 수는 양자화된 입력 데이터의 비트 수 정보에 대응되어 동작하도록 구성될 수 있다.
엣지 디바이스는 메인 메모리 시스템, 및 메인 메모리 시스템과 통신하도록 구성된 신경망 프로세싱 유닛을 포함하고, 신경망 프로세싱 유닛은 프로세싱 엘리먼트 어레이, NPU 메모리 시스템, 프로세싱 엘리먼트 어레이 및 NPU 메모리 시스템을 제어하도록 구성된 NPU 스케줄러를 포함하고, 메인 메모리 시스템 및 NPU 메모리 시스템에 저장된 인공신경망모델의 양자화된 노드 데이터, 양자화된 가중치 데이터, 양자화된 가중치 커널, 및/또는 양자화된 특징 맵은 메인 메모리 시스템의 메모리 크기 및 NPU 메모리 시스템의 메모리 크기를 참조하여 양자화될 수 있다.
본 개시의 일 실시예에 따른 신경망 프로세싱 유닛은 컴파일러에 의해서 컴파일된 인공신경망모델을 처리하는 신경망 프로세싱 유닛에 관한 것으로서, 프로세싱 엘리먼트 어레이, 프로세싱 엘리먼트 어레이에서 처리되는 컴파일된 인공신경망모델의 적어도 일부 데이터를 저장하도록 구성된 SRAM 메모리 및 프로세싱 엘리먼트 어레이가 처리하는 상기 인공신경망모델의 기 정의된 연산 순서 정보에 기초하여 상기 프로세싱 엘리먼트 어레이 및 상기 SRAM 메모리를 제어하도록 구성된 NPU 스케줄러;를 포함하고, 상기 NPU 스케줄러는 제1 스케줄링의 제1 레이어의 연산 값이 저장된 메모리 어드레스 값을 상기 제1 스케줄링의 다음 스케줄링인 제2 스케줄링의 제2 레이어의 입력 데이터에 대응되는 메모리 어드레스 값으로 재사용 하도록 구성될 수 있다.
프로세싱 엘리먼트 어레이는 MAC 연산을 수행하도록 구성된 복수의 프로세싱 엘리먼트를 포함할 수 있다.
NPU 스케줄러는 상기 프로세싱 엘리먼트 어레이 및 상기 SRAM 메모리의 읽기 및 쓰기 순서를 제어하도록 더 구성될 수 있다.
NPU 스케줄러는 상기 인공신경망모델의 기 정의된 연산 순서 정보에 기초하여 상기 프로세싱 엘리먼트 어레이 및 상기 SRAM 메모리를 제어하도록 더 구성될 수 있다.
NPU 스케줄러는 상기 인공신경망모델의 구조 데이터 또는 인공신경망 데이터 지역성 정보에 기초하여 기 스케줄링 된 상기 인공신경망모델의 연산 순서를 제어하도록 더 구성될 수 있다.
NPU 스케줄러는 상기 인공신경망모델의 기 정의된 연산 순서 정보에 기초하여 상기 인공신경망모델의 레이어의 노드 데이터 및 연결망의 가중치 데이터가 저장된 메모리 어드레스 값을 액세스하도록 구성될 수 있다.
NPU 스케줄러는 컴파일러에 의해서 기 스케줄링 된 상기 인공신경망모델의 인공 신경망의 입력 레이어부터 출력 레이어 까지의 구조 데이터 또는 인공신경망 데이터 지역성 정보를 기초로 프로세싱 순서를 제어하도록 구성될 수 있다.
본 개시의 다른 실시예에 따른 신경망 프로세싱 유닛은 컴파일러에 의해서 컴파일된 인공신경망모델을 처리하는 신경망 프로세싱 유닛에 관한 것으로서, 프로세싱 엘리먼트 어레이, 프로세싱 엘리먼트 어레이에서 처리되는 컴파일된 인공신경망모델의 데이터의 적어도 일부를 저장하도록 구성된 SRAM 메모리 및 프로세싱 엘리먼트 어레이가 처리하는 상기 인공신경망모델의 기 정의된 연산 순서 정보에 기초하여 상기 프로세싱 엘리먼트 어레이 및 상기 SRAM 메모리를 제어하도록 구성된 NPU 스케줄러를 포함하고, 프로세싱 엘리먼트 어레이는 MAC 연산을 수행하도록 구성되고, 프로세싱 엘리먼트 어레이는 MAC 연산 결과를 양자화해서 출력하도록 구성될 수 있다.
프로세싱 엘리먼트 어레이는 곱셈기, 가산기, 누산기 및 비트 양자화 유닛을 포함하도록 구성될 수 있다.
NPU 스케줄러는 상기 인공신경망모델의 기 정의된 연산 순서 정보에 기초하여 재사용 가능한 변수 값 및 재사용 가능한 상수 값을 인식하고, 재사용 가능한 변수 값 및 재사용 가능한 상수 값을 이용하여 메모리를 재사용 하도록 상기 SRAM 메모리를 제어하도록 더 구성될 수 있다.
본 개시의 또 다른 실시예에 따른 신경망 프로세싱 유닛은 컴파일러에 의해서 컴파일된 인공신경망모델을 처리하는 신경망 프로세싱 유닛에 관한 것으로서, 프로세싱 엘리먼트 어레이, 프로세싱 엘리먼트 어레이에서 처리되는 컴파일된 인공신경망모델의 적어도 일부 데이터를 저장하도록 구성된 SRAM 메모리 및 프로세싱 엘리먼트 어레이에서 처리되는 상기 컴파일된 인공신경망모델의 기 정의된 연산 순서 정보에 기초하여 상기 프로세싱 엘리먼트 어레이 및 상기 SRAM 메모리를 제어하도록 구성된 NPU 스케줄러를 포함하고, NPU 스케줄러는 상기 인공신경망모델의 기 정의된 연산 순서 정보에 기초한 스케줄링 순서를 활용하여, 상기 SRAM 메모리를 제어하여 메모리 재사용율을 향상시키도록 구성될 수 있다.
본 개시의 일 예시에 따른 신경망 프로세싱 유닛은 인공신경망모델을 처리하는 프로세싱 엘리먼트 어레이 및 상기 인공신경망모델의 적어도 일부 데이터를 저장하도록 구성된 NPU 메모리 시스템을 포함하고, 프로세싱 엘리먼트는 복수의 프로세싱 엘리먼트들 및 복수의 레지스터 파일들을 포함하고,복수의 레지스터 파일들 각각은 상기 복수의 프로세싱 엘리먼트들 각각에 대응될 수 있다.
복수의 레지스터 파일들 각각의 최대 전송 속도는 상기 NPU 메모리 시스템의 최대 전송 속도보다 더 빠를 수 있다.
복수의 레지스터 파일들 각각의 메모리 크기는 상기 NPU 메모리 시스템의 메모리 크기보다 더 작을 수 있다.
복수의 레지스터 파일들 각각의 동일 전송 속도 기준 전력 소비량은 상기 NPU 메모리 시스템의 동일 전송 속도 기준 전력 소비량보다 더 작을 수 있다.
복수의 레지스터 파일들의 개수는 상기 인공신경망모델의 데이터 크기, 동작 속도 및 소비 전력에 기초하여 결정될 수 있다.
복수의 레지스터 파일들 각각은 상기 복수의 프로세싱 엘리먼트들과 직접 연결된 정적 메모리 유닛일 수 있다.
복수의 레지스터 파일들 각각은 대응되는 프로세싱 엘리먼트의 연산 값을 저장할 수 있다.
복수의 레지스터 파일들 각각은 상기 NPU 메모리 시스템으로부터 가중치 데이터 및 입력 데이터를 제공받을 수 있다.
NPU 메모리 시스템은, 제1 스케줄링의 제1 레이어의 연산 값이 저장된 메모리 어드레스 값을 상기 제1 스케줄링의 다음 스케줄링인 제2 스케줄링의 제2 레이어의 입력 데이터에 대응되는 메모리 어드레스 값으로 재사용 하도록 구성될 수 있다.
복수의 프로세싱 엘리먼트들 각각은 곱셈기, 가산기 및 누산기를 포함하고,곱셈기는 제1 입력부 및 제2 입력부를 포함하고, 곱셈기는 상기 제1 입력부 및 제2 입력부 중 하나의 입력부에 0이 입력될 때 제로 스키핑(zero skipping) 방식으로 동작하도록 구성될 수 있다.
인공신경망모델은 복수의 레이어를 포함하고, 복수의 레이어 각각은 가중치 데이터을 포함하고, 가중치 데이터들은 신경망 프로세싱 유닛의 하드웨어 특성 데이터에 기초하여 프루닝 된 것을 특징으로 할 수 있다.
인공신경망모델은 가중치 데이터를 포함하고, 가중치 데이터 중 데이터 크기가 상대적으로 더 큰 적어도 하나 이상의 가중치 데이터가 신경망 프로세싱 유닛의 하드웨어 특성 데이터에 기초한 최적화 시스템을 통해서 우선적으로 프루닝 된 것을 특징으로 할 수 있다.
복수의 레지스터 파일들 및 상기 NPU 메모리 시스템은, 컴파일러에 의해서 상기 인공신경망모델이 상기 신경망 프로세싱 유닛에서 동작하도록 변환될 때 결정된 프로세싱 순서 정보에 기초하여 제어될 수 있다.
복수의 프로세싱 엘리먼트들 각각은, 비트 양자화 유닛을 더 포함하도록 구성될 수 있다.
이상에서 예시들에 설명된 특징, 구조, 효과 등은 본 개시의 하나의 예시에 포함되며, 반드시 하나의 예시에만 한정되는 것은 아니다. 나아가, 각 예시에서 예시된 특징, 구조, 효과 등은 예시들이 속하는 분야의 통상의 지식을 가지는 자에 의해 다른 예시들에 대해서도 조합 또는 변형되어 실시 가능하다. 따라서 이러한 조합과 변형에 관계된 내용들은 본 개시의 범위에 포함되는 것으로 해석되어야 할 것이다.
또한, 이상에서 예시를 중심으로 설명하였으나 이는 단지 예시일 뿐 본 발명을 한정하는 것이 아니며, 본 개시가 속하는 분야의 통상의 지식을 가진 자라면 본 예시의 본질적인 특성을 벗어나지 않는 범위에서 이상에 예시되지 않은 여러 가지의 변형과 응용이 가능함을 알 수 있을 것이다. 예를 들어, 예시에 구체적으로 나타난 각 구성요소는 변형하여 실시할 수 있는 것이다. 그리고 이러한 변형과 응용에 관계된 차이점들은 첨부된 청구 범위에서 규정하는 본 발명의 범위에 포함되는 것으로 해석되어야 할 것이다.
[이 발명을 지원한 국가연구개발사업]
[과제고유번호] 1711195792
[과제번호] 00228938
[부처명] 과학기술정보통신부
[과제관리(전문)기관명] 정보통신기획평가원
[연구사업명] 인공지능반도체SW통합플랫폼기술개발
[연구과제명] 상용 엣지 AI SoC 반도체 SW 개발 플랫폼 기술개발
[기여율] 1/1
[과제수행기관명] (주)딥엑스
[연구기간] 2020.04.01 ~ 2024.12.31
엣지 디바이스: 1000, 2000
신경망 프로세싱 유닛: 100, 200, 300, 400, 2100
프로세싱 엘리먼트 어레이: 1100
NPU 메모리 시스템: 120
NPU 스케줄러: 130
NPU 인터페이스: 140

Claims (14)

  1. 인공신경망모델을 처리하는 프로세싱 엘리먼트 어레이; 및
    상기 인공신경망모델의 적어도 일부 데이터를 저장하도록 구성된 NPU 메모리 시스템;을 포함하고,
    상기 프로세싱 엘리먼트는 복수의 프로세싱 엘리먼트들 및 복수의 레지스터 파일들을 포함하고,
    상기 복수의 레지스터 파일들 각각은 상기 복수의 프로세싱 엘리먼트들 각각에 대응되는, 신경망 프로세싱 유닛.
  2. 제 1 항에 있어서,
    상기 복수의 레지스터 파일들 각각의 최대 전송 속도는 상기 NPU 메모리 시스템의 최대 전송 속도보다 더 빠른, 신경망 프로세싱 유닛.
  3. 제 1 항에 있어서,
    상기 복수의 레지스터 파일들 각각의 메모리 크기는 상기 NPU 메모리 시스템의 메모리 크기보다 더 작은, 신경망 프로세싱 유닛.
  4. 제 1 항에 있어서,
    상기 복수의 레지스터 파일들 각각의 동일 전송 속도 기준 전력 소비량은 상기 NPU 메모리 시스템의 동일 전송 속도 기준 전력 소비량보다 더 작은, 신경망 프로세싱 유닛.
  5. 제 1 항에 있어서,
    상기 복수의 레지스터 파일들의 개수는 상기 인공신경망모델의 데이터 크기, 동작 속도 및 소비 전력에 기초하여 결정되는, 신경망 프로세싱 유닛.
  6. 제 1 항에 있어서,
    상기 복수의 레지스터 파일들 각각은 상기 복수의 프로세싱 엘리먼트들과 직접 연결된 정적 메모리 유닛인, 신경망 프로세싱 유닛.
  7. 제 1 항에 있어서,
    상기 복수의 레지스터 파일들 각각은 대응되는 프로세싱 엘리먼트의 연산 값을 저장하는, 신경망 프로세싱 유닛.
  8. 제 1 항에 있어서,
    상기 복수의 레지스터 파일들 각각은 상기 NPU 메모리 시스템으로부터 가중치 데이터 및 입력 데이터를 제공받는, 신경망 프로세싱 유닛.
  9. 제 1 항에 있어서,
    상기 NPU 메모리 시스템은, 제1 스케줄링의 제1 레이어의 연산 값이 저장된 메모리 어드레스 값을 상기 제1 스케줄링의 다음 스케줄링인 제2 스케줄링의 제2 레이어의 입력 데이터에 대응되는 메모리 어드레스 값으로 재사용 하도록 구성된, 신경망 프로세싱 유닛.
  10. 제1 항에 있어서,
    상기 복수의 프로세싱 엘리먼트들 각각은 곱셈기, 가산기 및 누산기를 포함하고,
    상기 곱셈기는 제1 입력부 및 제2 입력부를 포함하고,
    상기 곱셈기는 상기 제1 입력부 및 제2 입력부 중 하나의 입력부에 0이 입력될 때 제로 스키핑(zero skipping) 방식으로 동작하도록 구성된, 신경망 프로세싱 유닛.

  11. 제 1 항에 있어서,
    상기 인공신경망모델은 복수의 레이어를 포함하고,
    상기 복수의 레이어 각각은 가중치 데이터을 포함하고,
    상기 가중치 데이터들은 신경망 프로세싱 유닛의 하드웨어 특성 데이터에 기초하여 프루닝 된 것을 특징으로 하는, 신경망 프로세싱 유닛.
  12. 제 1 항에 있어서,
    상기 인공신경망모델은 가중치 데이터를 포함하고,
    상기 가중치 데이터 중 데이터 크기가 상대적으로 더 큰 적어도 하나 이상의 가중치 데이터가 신경망 프로세싱 유닛의 하드웨어 특성 데이터에 기초한 최적화 시스템을 통해서 우선적으로 프루닝 된 것을 특징으로 하는, 신경망 프로세싱 유닛.
  13. 제1 항에 있어서,
    상기 복수의 레지스터 파일들 및 상기 NPU 메모리 시스템은,
    컴파일러에 의해서 상기 인공신경망모델이 상기 신경망 프로세싱 유닛에서 동작하도록 변환될 때 결정된 프로세싱 순서 정보에 기초하여 제어되는, 신경망 프로세싱 유닛.
  14. 제1 항에 있어서,
    상기 복수의 프로세싱 엘리먼트들 각각은, 비트 양자화 유닛을 더 포함하도록 구성된, 신경망 프로세싱 유닛.
KR1020247010033A 2020-08-21 2020-12-31 추론 연산을 수행하는 전자 장치 KR20240042266A (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
KR20200105509 2020-08-21
KR1020200105509 2020-08-21
KR1020200107324 2020-08-25
KR20200107324 2020-08-25
KR1020237015212A KR20230070515A (ko) 2020-08-21 2020-12-31 신경망 프로세싱 유닛
PCT/KR2020/019488 WO2022039334A1 (ko) 2020-08-21 2020-12-31 신경망 프로세싱 유닛

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020237015212A Division KR20230070515A (ko) 2020-08-21 2020-12-31 신경망 프로세싱 유닛

Publications (1)

Publication Number Publication Date
KR20240042266A true KR20240042266A (ko) 2024-04-01

Family

ID=80322962

Family Applications (8)

Application Number Title Priority Date Filing Date
KR1020237015212A KR20230070515A (ko) 2020-08-21 2020-12-31 신경망 프로세싱 유닛
KR1020227004135A KR102530548B1 (ko) 2020-08-21 2020-12-31 신경망 프로세싱 유닛
KR1020237022542A KR102649071B1 (ko) 2020-08-21 2020-12-31 프루닝된 인공신경망 모델을 구동하도록 구성된 신경망 프로세싱 유닛
KR1020237022541A KR20230106733A (ko) 2020-08-21 2020-12-31 신경망 프로세싱 유닛을 포함하는 전자 장치
KR1020237022536A KR102647686B1 (ko) 2020-08-21 2020-12-31 양자화된 인공신경망 모델을 구동하도록 구성된 신경망 프로세싱 유닛
KR1020247008700A KR20240038165A (ko) 2020-08-21 2020-12-31 추론 연산을 수행하는 전자 장치
KR1020237022529A KR102647690B1 (ko) 2020-08-21 2020-12-31 최적화된 인공신경망 모델을 구동하도록 구성된 신경망 프로세싱 유닛
KR1020247010033A KR20240042266A (ko) 2020-08-21 2020-12-31 추론 연산을 수행하는 전자 장치

Family Applications Before (7)

Application Number Title Priority Date Filing Date
KR1020237015212A KR20230070515A (ko) 2020-08-21 2020-12-31 신경망 프로세싱 유닛
KR1020227004135A KR102530548B1 (ko) 2020-08-21 2020-12-31 신경망 프로세싱 유닛
KR1020237022542A KR102649071B1 (ko) 2020-08-21 2020-12-31 프루닝된 인공신경망 모델을 구동하도록 구성된 신경망 프로세싱 유닛
KR1020237022541A KR20230106733A (ko) 2020-08-21 2020-12-31 신경망 프로세싱 유닛을 포함하는 전자 장치
KR1020237022536A KR102647686B1 (ko) 2020-08-21 2020-12-31 양자화된 인공신경망 모델을 구동하도록 구성된 신경망 프로세싱 유닛
KR1020247008700A KR20240038165A (ko) 2020-08-21 2020-12-31 추론 연산을 수행하는 전자 장치
KR1020237022529A KR102647690B1 (ko) 2020-08-21 2020-12-31 최적화된 인공신경망 모델을 구동하도록 구성된 신경망 프로세싱 유닛

Country Status (4)

Country Link
US (2) US11977916B2 (ko)
KR (8) KR20230070515A (ko)
CN (1) CN114402336A (ko)
WO (1) WO2022039334A1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220121927A1 (en) * 2020-10-21 2022-04-21 Arm Limited Providing neural networks
EP4296904A4 (en) * 2021-09-07 2024-10-09 Samsung Electronics Co Ltd ELECTRONIC DEVICE FOR PROCESSING A NEURAL NETWORK MODEL AND OPERATING METHOD THEREFOR
US11886973B2 (en) 2022-05-30 2024-01-30 Deepx Co., Ltd. Neural processing unit including variable internal memory
US20240037150A1 (en) * 2022-08-01 2024-02-01 Qualcomm Incorporated Scheduling optimization in sequence space
KR20240032707A (ko) * 2022-08-29 2024-03-12 주식회사 딥엑스 인공신경망의 분산 연산 시스템 및 방법
WO2024076163A1 (ko) * 2022-10-06 2024-04-11 오픈엣지테크놀로지 주식회사 신경망 연산방법과 이를 위한 npu 및 컴퓨팅 장치
KR102700766B1 (ko) * 2023-08-18 2024-08-30 한국전자기술연구원 메모리 최적화 기반 딥러닝 네트워크 혼합 정밀도 양자화 방법
KR102712272B1 (ko) * 2024-04-23 2024-10-02 리벨리온 주식회사 인공지능 서비스 제공 방법 및 시스템

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110037184A (ko) * 2009-10-06 2011-04-13 한국과학기술원 뉴로-퍼지 시스템과 병렬처리 프로세서가 결합된, 파이프라이닝 컴퓨터 시스템, 이를 이용하여 영상에서 물체를 인식하는 방법 및 장치
US9525636B2 (en) 2014-10-20 2016-12-20 Telefonaktiebolaget L M Ericsson (Publ) QoS on a virtual interface over multi-path transport
US10761849B2 (en) * 2016-09-22 2020-09-01 Intel Corporation Processors, methods, systems, and instruction conversion modules for instructions with compact instruction encodings due to use of context of a prior instruction
CN107016175B (zh) * 2017-03-23 2018-08-31 中国科学院计算技术研究所 适用神经网络处理器的自动化设计方法、装置及优化方法
US10019668B1 (en) 2017-05-19 2018-07-10 Google Llc Scheduling neural network processing
CN107491811A (zh) * 2017-09-01 2017-12-19 中国科学院计算技术研究所 用于加速神经网络处理器的方法和系统及神经网络处理器
US11531877B2 (en) * 2017-11-10 2022-12-20 University of Pittsburgh—of the Commonwealth System of Higher Education System and method of deploying an artificial neural network on a target device
JP7179853B2 (ja) * 2017-12-12 2022-11-29 アマゾン テクノロジーズ インコーポレイテッド オンチップの計算ネットワーク
EP3676704B1 (en) * 2017-12-26 2024-10-02 Samsung Electronics Co., Ltd. Method and system for predicting optimal number of threads for application running on electronic device
US11568269B2 (en) 2017-12-28 2023-01-31 Cambricon Technologies Corporation Limited Scheduling method and related apparatus
US10942767B2 (en) * 2018-02-27 2021-03-09 Microsoft Technology Licensing, Llc Deep neural network workload scheduling
US20190325295A1 (en) * 2018-04-20 2019-10-24 International Business Machines Corporation Time, space, and energy efficient neural inference via parallelism and on-chip memory
US20190332924A1 (en) * 2018-04-27 2019-10-31 International Business Machines Corporation Central scheduler and instruction dispatcher for a neural inference processor
KR102135632B1 (ko) 2018-09-28 2020-07-21 포항공과대학교 산학협력단 뉴럴 프로세싱 장치 및 그것의 동작 방법
KR20200057814A (ko) * 2018-11-13 2020-05-27 삼성전자주식회사 뉴럴 네트워크를 이용한 데이터 처리 방법 및 이를 지원하는 전자 장치
US11275558B2 (en) * 2018-11-30 2022-03-15 Advanced Micro Devices, Inc. Sorting instances of input data for processing through a neural network
KR20200075185A (ko) * 2018-12-17 2020-06-26 삼성전자주식회사 뉴럴 프로세싱 시스템 및 그것의 동작 방법
KR20200095300A (ko) * 2019-01-31 2020-08-10 삼성전자주식회사 뉴럴 네트워크의 컨볼루션 연산을 처리하는 방법 및 장치
US11281496B2 (en) * 2019-03-15 2022-03-22 Intel Corporation Thread group scheduling for graphics processing
US11782755B2 (en) 2019-12-02 2023-10-10 Intel Corporation Methods, systems, articles of manufacture, and apparatus to optimize thread scheduling

Also Published As

Publication number Publication date
US20230168921A1 (en) 2023-06-01
KR102530548B1 (ko) 2023-05-12
US11977916B2 (en) 2024-05-07
KR20240038165A (ko) 2024-03-22
KR102649071B1 (ko) 2024-03-19
CN114402336A (zh) 2022-04-26
WO2022039334A1 (ko) 2022-02-24
KR20230106731A (ko) 2023-07-13
KR20230106732A (ko) 2023-07-13
KR102647686B1 (ko) 2024-03-14
KR102647690B1 (ko) 2024-03-14
KR20230106734A (ko) 2023-07-13
KR20220025143A (ko) 2022-03-03
KR20230106733A (ko) 2023-07-13
KR20230070515A (ko) 2023-05-23
US20240264864A1 (en) 2024-08-08

Similar Documents

Publication Publication Date Title
KR102649071B1 (ko) 프루닝된 인공신경망 모델을 구동하도록 구성된 신경망 프로세싱 유닛
Ray A review on TinyML: State-of-the-art and prospects
US10877924B2 (en) Instruction set processing method based on a chip architecture and apparatus, and storage medium
KR102434728B1 (ko) 처리방법 및 장치
CN110020723B (zh) 神经网络处理单元及包括该神经网络处理单元的片上系统
US20220318606A1 (en) Npu, edge device and operation method thereof
US11175898B2 (en) Compiling code for a machine learning model for execution on a specialized processor
US20180082212A1 (en) Optimizing machine learning running time
US11562214B2 (en) Methods for improving AI engine MAC utilization
CN111684470A (zh) 神经网络的动态存储器映射
US20220114479A1 (en) Systems and methods for automatic mixed-precision quantization search
CN114065900A (zh) 数据处理方法和数据处理装置
WO2024046473A1 (zh) 一种数据处理方法及其装置
WO2024055952A1 (zh) 一种数据处理方法及其装置
CN112015424A (zh) 编译用于机器学习模型的代码以用于在专用处理器上执行
CN115907041A (zh) 一种模型训练方法及装置
WO2019076095A1 (zh) 处理方法及装置
WO2024012171A1 (zh) 二值量化方法、神经网络的训练方法、设备以及存储介质
US20240256874A1 (en) Systems and methods for hybrid optimization training of multinomial logit models
JP2023064695A (ja) ディープ・ニューラル・ネットワークにおけるニアメモリ疎行列計算
CN115982110A (zh) 文件运行方法、装置、计算机设备及可读存储介质
CN118567800A (zh) 任务的调度方法、装置、电子设备及可读存储介质