KR20190084705A - 근사 곱셈기를 구비하는 뉴럴 네트워크 처리 장치 및 이를 포함하는 시스템온 칩 - Google Patents

근사 곱셈기를 구비하는 뉴럴 네트워크 처리 장치 및 이를 포함하는 시스템온 칩 Download PDF

Info

Publication number
KR20190084705A
KR20190084705A KR1020180002776A KR20180002776A KR20190084705A KR 20190084705 A KR20190084705 A KR 20190084705A KR 1020180002776 A KR1020180002776 A KR 1020180002776A KR 20180002776 A KR20180002776 A KR 20180002776A KR 20190084705 A KR20190084705 A KR 20190084705A
Authority
KR
South Korea
Prior art keywords
value
output
neural network
approximate
neural
Prior art date
Application number
KR1020180002776A
Other languages
English (en)
Other versions
KR102637735B1 (ko
Inventor
박준석
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020180002776A priority Critical patent/KR102637735B1/ko
Priority to US16/239,046 priority patent/US20190212981A1/en
Priority to DE102019100292.3A priority patent/DE102019100292A1/de
Priority to TW108100877A priority patent/TWI818944B/zh
Priority to CN201910018283.5A priority patent/CN110020723A/zh
Publication of KR20190084705A publication Critical patent/KR20190084705A/ko
Application granted granted Critical
Publication of KR102637735B1 publication Critical patent/KR102637735B1/ko

Links

Images

Classifications

    • 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/487Multiplying; Dividing
    • G06F7/4876Multiplying
    • 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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • 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/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • G06F7/49947Rounding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06GANALOGUE COMPUTERS
    • G06G7/00Devices in which the computing operation is performed by varying electric or magnetic quantities
    • G06G7/12Arrangements for performing computing operations, e.g. operational amplifiers
    • G06G7/14Arrangements for performing computing operations, e.g. operational amplifiers for addition or subtraction 
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06GANALOGUE COMPUTERS
    • G06G7/00Devices in which the computing operation is performed by varying electric or magnetic quantities
    • G06G7/12Arrangements for performing computing operations, e.g. operational amplifiers
    • G06G7/16Arrangements for performing computing operations, e.g. operational amplifiers for multiplication or division
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06GANALOGUE COMPUTERS
    • G06G7/00Devices in which the computing operation is performed by varying electric or magnetic quantities
    • G06G7/12Arrangements for performing computing operations, e.g. operational amplifiers
    • G06G7/26Arbitrary function generators
    • 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/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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computer Hardware Design (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Neurology (AREA)
  • Power Engineering (AREA)
  • Nonlinear Science (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Image Analysis (AREA)
  • Investigating Or Analysing Biological Materials (AREA)

Abstract

근사 곱셈기를 구비하는 뉴럴 네트워크 처리 장치 및 이를 포함하는 시스템 온 칩이 개시된다. 본 개시의 실시 예에 따라 복수의 뉴럴 처리기들을 포함하고, 하나 이상의 입력 데이터 및 복수의 웨이트들에 기반하여 연산을 수행하는 뉴럴 네트워크 처리 장치에 있어서, 상기 복수의 뉴럴 처리기들 중 적어도 하나는, 제1 값 및 제2 값을 수신하고 상기 제1 값 및 제2 값에 기반하여 근사 곱셈 연산을 수행하는 근사 곱셈기를 구비하는 산술 논리 연산 장치; 및 상기 산술 논리 연산 장치의 출력에 기반하여 통계적 반올림 연산을 수행하는 반올림기를 구비하는 활성화 함수 장치를 포함할 수 있다.

Description

근사 곱셈기를 구비하는 뉴럴 네트워크 처리 장치 및 이를 포함하는 시스템온 칩{NEURAL NETWORK PROCESSING UNIT INCLUDING APPROXIMATE MULTIPLIER AND SYSTEM ON CHIP INCLUDING THE SAME}
본 개시의 기술적 사상은 뉴럴 네트워크 처리 장치에 관한 것으로서, 더욱 상세하게는, 근사 곱셈기를 구비하는 뉴럴 네트워크 처리 장치 및 이를 포함하는 시스템 온 칩에 관한 것이다.
뉴럴 네트워크(neural network)는 생물학적 뇌를 모델링한 컴퓨터 과학적 아키텍쳐(computational architecture)를 참조한다. 최근 뉴럴 네트워크 기술이 발전함에 따라, 다양한 종류의 전자 시스템에서 뉴럴 네트워크 처리 장치를 사용하여 입력 데이터를 분석하고 유효한 정보를 추출하는 연구가 활발히 진행되고 있다.
뉴럴 네트워크 처리 장치는 복잡한 입력 데이터에 대한 많은 양의 연산을 필요로 한다. 뉴럴 네트워크 처리 장치가 입력을 실시간으로 분석하고, 정보를 추출하기 위해서 뉴럴 네트워크 연산을 효율적으로 처리할 수 있는 기술이 요구된다. 특히, 스마트폰과 같은, 저전력 고성능 임베디드 시스템은 제한된 리소스를 가지므로, 복잡한 입력 데이터를 처리하는데 필요한 연산량을 감소시키면서도 정확도 손실을 최소화할 수 있는 기술이 요구된다.
본 개시의 기술적 사상은 근사 곱셈기를 구비하여 고정 소수점 타입의 훈련 연산을 수행하는 뉴럴 네트워크 처리 장치 및 이를 포함하는 시스템 온 칩을 제공하는 데 있다.
상기와 같은 목적을 달성하기 위하여, 본 개시의 기술적 사상의 일 측면에 따라 복수의 뉴럴 처리기들을 포함하고, 하나 이상의 입력 데이터 및 복수의 웨이트들에 기반하여 연산을 수행하는 뉴럴 네트워크 처리 장치에 있어서, 상기 복수의 뉴럴 처리기들 중 적어도 하나는, 제1 값 및 제2 값을 수신하고 상기 제1 값 및 제2 값에 기반하여 근사 곱셈 연산을 수행하는 근사 곱셈기(approximate multiplier)를 구비하는 산술 논리 연산 장치(arithmetic logic unit); 및 상기 산술 논리 연산 장치의 출력에 기반하여 통계적 반올림 연산을 수행하는 반올림기(rounder)를 구비하는 활성화 함수 장치(activation function unit)를 포함할 수 있다.
본 개시의 기술적 사상의 다른 일 측면에 따른 시스템 온 칩은, 하나 이상의 IP(Intellectual Property); 및 상기 하나 이상의 IP로부터 입력 데이터를 수신하고, 복수의 뉴럴 처리기들을 포함하고, 상기 입력 데이터 및 복수의 웨이트들에 기반하여 뉴럴 네트워크 연산을 수행하는 뉴럴 네트워크 처리 장치를 구비하고, 상기 복수의 뉴럴 처리기 중 적어도 하나는, 제1 값 및 제2 값을 제공받고 상기 제1 값 및 제2 값에 대한 근사 곱셈 연산을 수행하는 근사 곱셈기를 구비하는 산술 논리 연산 장치; 및 상기 산술 논리 연산 장치의 출력에 기반하여 통계적 반올림 연산을 수행하는 반올림기를 구비하고, 상기 산술 논리 연산 장치의 출력에 대한 포스트 액티베이션을 출력하는 활성화 함수 장치를 포함할 수 있다.
본 개시의 기술적 사상의 또 다른 일 측면에 따라 훈련 모드에서, 하나 이상의 훈련 데이터 및 복수의 웨이트들에 기반하여 훈련 연산을 수행하고, 복수의 뉴럴 처리기들을 구비하는 뉴럴 네트워크 처리 장치에 있어서, 상기 복수의 뉴럴 처리기들 중 적어도 하나는, 상기 훈련 모드에서, 제1 값 및 제2 값을 수신하고 상기 제1 값 및 제2 값을 근사 곱셈 연산하는 근사 곱셈기 및 상기 근사 곱셈기의 출력값 및 제3 값에 기반하여 덧셈 연산을 수행하는 덧셈기를 구비하는 산술 논리 연산 장치; 상기 산술 논리 연산 장치의 출력을 누산하는 누산기; 및 상기 누산기에서 출력되는 누산값에 대해 통계적 반올림 연산을 수행하는 반올림기를 구비하고, 상기 누산값에 대한 포스트 액티베이션을 출력하는 활성화 함수 장치를 포함할 수 있다.
본 개시의 기술적 사상에 따른 뉴럴 네트워크 처리 장치는, 근사 곱셈기에 기반한 통계적 반올림(stochastic round)을 통해 뉴럴 네트워크 훈련 연산을 수행하여, 고정 소수점 기반의 훈련이 가능할 수 있다. 또한, 별도의 랜덤 수 발생기 없이도, 근사 곱셈기를 통해 통계적 반올림 연산이 가능함에 따라, 뉴럴 네트워크 처리 장치가 차지하는 면적 및 전력 소모가 감소될 수 있다.
도 1은 본 개시의 예시적 실시 예에 따른 시스템 온 칩(System on Chip; SoC)을 나타내는 블록도이다.
도 2는 본 개시의 예시적 실시 예에 따른 뉴럴 네트워크의 일 예를 설명하기 위한 도면이다.
도 3은 본 개시의 예시적 실시 예에 따른 뉴럴 네트워크의 훈련 과정을 설명하기 위한 순서도를 도시한다. 도 3은 도 2를 참조하여 설명될 수 있다.
도 4는 고정 소수점 값의 일 예를 설명하기 위한 도면이다.
도 5는 본 개시의 예시적 실시 예에 따른 뉴럴 네트워크 처리 장치 구성의일 예를 나타내는 블록도이다.
도 6은 본 개시의 예시적 실시 예에 따른 뉴럴 처리기의 구체적인 구성을 설명하는 블록도이다.
도 7은 본 개시의 예시적 실시 예에 따른 산술 논리 연산 장치를 나타내는 블록도이다.
도 8은 본 개시의 예시적 실시 예에 따른 활성화 함수 장치를 나타내는 블록도이다.
도 9는 본 개시의 예시적 실시 예에 따른 뉴럴 네트워크 처리 장치의 훈련을 설명하기 위한 순서도를, 도 10은 본 개시의 예시적 실시 예에 따른 통계적 반올림을 설명하기 위한 도면을 각각 도시한다.
도 11은 본 개시의 다른 예시적 실시 예에 따른 산술 논리 연산 장치를 나타내는 블록도이다.
도 12는 본 개시의 다른 예시적 실시 예에 따른 산술 논리 연산 장치를 나타내는 블록도이다.
도 13은 본 개시의 예시적 실시 예에 따른 휴대용 컴퓨팅 장치(1000)를 나타내는 블록도이다.
이하, 첨부한 도면을 참조하여 본 발명의 실시 예에 대해 상세히 설명한다.
도 1은 본 개시의 예시적 실시 예에 따른 시스템 온 칩(System on Chip; SoC)을 나타내는 블록도이다.
도 1을 참조하면, 시스템 온 칩(10)은 복수의 IP(Intellectual Property)들 및 뉴럴 네트워크 처리 장치(Neural Network Processing Unit; NPU)(100)를 포함할 수 있다. 시스템 온 칩(10)은 반도체 시스템에서 다양한 기능을 수행하도록 설계될 수 있으며, 예컨대 시스템 온 칩(10)은 어플리케이션 프로세서(Application Processor)일 수 있다. 시스템 온 칩(10)은 뉴럴 네트워크를 기초로 입력 데이터를 실시간 분석하여 유효한 정보를 추출하고, 추출된 정보를 기초로 상황 판단을 하거나 또는 시스템 온 칩(10)이 탑재되는 전자 디바이스의 구성들을 제어할 수 있다. 예를 들어, 시스템 온 칩(10)은 드론(drone), 첨단 운전자 보조 시스템(Advanced Drivers Assistance System; ADAS) 등과 같은 로봇 장치, 스마트 TV, 스마트폰, 의료 디바이스, 모바일 디바이스, 영상 표시 디바이스, 계측 디바이스, IoT(Internet of Things) 디바이스 등에 적용될 수 있으며, 이 외에도 다양한 종류의 전자 디바이스들 중 적어도 하나에 탑재될 수 있다.
시스템 온 칩(10)은 다양한 종류의 IP들을 포함할 수 있다. 예를 들어, IP들은 프로세싱 유닛(processing unit), 프로세싱 유닛에 포함된 복수의 코어들(cores), MFC(Multi-Format Codec), 비디오 모듈(예컨대, 카메라 인터페이스(camera interface), JPEG(Joint Photographic Experts Group) 프로세서, 비디오 프로세서(video processor), 또는 믹서(mixer) 등), 3D 그래픽 코어(graphic core), 오디오 시스템(audio system), 드라이버(driver), 디스플레이 드라이버(display driver), 휘발성 메모리(volatile memory), 비휘발성 메모리(non-volatile memory), 메모리 컨트롤러(memory controller), 입출력 인터페이스 블록(input and output interface block), 또는 캐시 메모리(cache memory) 등을 포함할 수 있다.
IP들을 연결하기 위한 기술로는 시스템 버스(System Bus)를 기반으로 한 연결방식이 주를 이루고 있다. 예컨대, 표준 버스 규격으로서, ARM(Advanced RISC Machine) 사의 AMBA(Advanced Microcontroller Bus Architecture) 프로토콜이 적용될 수 있다. AMBA 프로토콜의 버스 타입에는 AHB(Advanced High-Performance Bus), APB(Advanced Peripheral Bus), AXI(Advanced eXtensible Interface), AXI4, ACE(AXI Coherency Extensions) 등이 포함될 수 있다. 전술한 버스 타입들 중 AXI는 IP들 사이의 인터페이스 프로토콜로서, 다중 아웃스탠딩 어드레스(multiple outstanding address) 기능과 데이터 인터리빙(data interleaving) 기능 등을 제공할 수 있다. 이 외에도, 소닉사(SONICs Inc.)의 uNetwork 나 IBM의 CoreConnect, OCP-IP의 오픈 코어 프로토콜(Open Core Protocol) 등 다른 타입의 프로토콜이 시스템 버스에 적용되어도 무방하다.
뉴럴 네트워크 처리 장치(100)는 뉴럴 네트워크를 생성하거나, 뉴럴 네트워크를 훈련(train)(또는 학습(learn))하거나, 수신되는 입력 데이터를 기초로 연산을 수행하고, 수행 결과를 기초로 정보 신호를 생성하거나, 또는 뉴럴 네트워크를 재훈련(retrain)할 수 있다. 예시적 실시 예에 있어서, 뉴럴 네트워크 처리 장치(100)는 고정 소수점 기반 하에 뉴럴 네트워크를 훈련할 수 있다. 이에 대한 자세한 설명은 후술하기로 한다.
뉴럴 네트워크 처리 장치(100)는 시스템 버스를 통해 IP들로부터 다양한 종류의 입력 데이터를 수신하고, 이에 기반하여 정보 신호를 생성할 수 있다. 뉴럴 네트워크가 생성하는 정보 신호는 음성 인식 신호, 사물 인식 신호, 영상 인식 신호, 생체 정보 인식 신호 등과 같은 다양한 종류의 인식 신호 중 하나를 포함할 수 있다. 예를 들어, 뉴럴 네트워크 처리 장치(100)는 비디오 스트림에 포함되는 프레임 데이터를 입력 데이터로서 수신하고, 프레임 데이터로부터 프레임 데이터가 나타내는 이미지에 포함된 사물에 대한 인식 신호를 생성할 수 있다. 그러나, 이에 제한되는 것은 아니며, 뉴럴 네트워크 처리 장치(100)는 다양한 종류의 입력 데이터를 수신할 수 있고, 입력 데이터에 따른 인식 신호를 생성할 수 있다.
도 2는 본 개시의 예시적 실시 예에 따른 뉴럴 네트워크의 일 예를 설명하기 위한 도면이다.
도 2를 참조하면, 뉴럴 네트워크(1)는 입력 레이어, 히든 레이어들 및 출력 레이어를 포함하는 구조를 가질 수 있다. 뉴럴 네트워크(1)는 수신되는 입력 데이터(예를 들어, I1 및 I2)를 기초로 연산을 수행하고, 수행 결과를 기초로 출력 데이터(예를 들어, O1 및 O2)를 생성할 수 있다. 예시적 실시 예에서, 뉴럴 네트워크(1)는 입력 데이터에 기반한 연산 수행을 통해 훈련될 수 있다. 뉴럴 네트워크(1)의 훈련 시, 입력 데이터는 훈련용 데이터일 수 있다.
뉴럴 네트워크(1)는 2개 이상의 히든 레이어들을 포함하는 딥 뉴럴 네트워크(Deep Neural Network, DNN) 또는 n-레이어 뉴럴 네트워크(n-layers neural networks)일 수 있다. 예를 들어, 도 2에 도시된 바와 같이, 뉴럴 네트워크(1)는 입력 레이어(2), 제1 및 제2 히든 레이어(3, 4) 및 출력 레이어(5)를 포함하는 DNN일 수 있다. DNN은 Convolutional Neural Networks(CNN), Recurrent Neural Networks(RNN), Deep Belief Networks, Restricted Boltzman Machines 등을 포함할 수 있으나, 이에 제한되지 않는다.
뉴럴 네트워크(1)가 DNN 구조를 갖는 경우 유효한 정보를 추출할 수 있는 보다 많은 레이어들을 포함하므로, 뉴럴 네트워크(1)는 복잡한 데이터 집합들을 처리할 수 있다. 한편, 뉴럴 네트워크(1)는 4개의 레이어들(2, 3, 4, 5)을 포함하는 것으로 도시되었으나, 이는 예시에 불과할 뿐 뉴럴 네트워크(1)는 더 적거나 많은 레이어들을 포함할 수 있다. 또한, 뉴럴 네트워크(1)는 도 2에 도시된 것과는 다른 다양한 구조의 레이어들을 포함할 수 있다.
뉴럴 네트워크(1)에 포함된 레이어들(2, 3, 4, 5) 각각은 복수의 뉴런(neuron)들을 포함할 수 있다. 뉴런은, 프로세싱 엘리먼트(Processing Element, PE), 유닛(unit) 또는 이와 유사한 용어들로 알려진, 복수의 인공 노드(artificial node)들에 해당될 수 있다. 예를 들어, 도 2에 도시된 바와 같이, 입력 레이어(2)는 2개의 뉴런들(노드들), 제1 및 제2 히든 레이어(3, 4) 각각은 3개의 뉴런들(노드들)을 포함할 수 있다. 다만, 이는 예시에 불과할 뿐 뉴럴 네트워크(1)에 포함된 레이어들 각각은 다양한 개수의 뉴런들(노드들)을 포함할 수 있다.
뉴럴 네트워크(1)에 포함된 레이어들 각각에 포함된 뉴런들은 서로 연결되어 데이터를 교환할 수 있다. 하나의 뉴런은 다른 뉴런들로부터 데이터를 수신하여 연산할 수 있고, 연산 결과를 또 다른 뉴런들로 출력할 수 있다.
뉴런들(노드들) 각각의 입력 및 출력은 입력 액티베이션(activation)및 출력 액티베이션으로 지칭될 수 있다. 즉, 액티베이션은 한 뉴런의 출력임과 동시에, 다음 레이어에 포함된 뉴런들의 입력에 해당되는 파라미터일 수 있다. 한편, 뉴런들 각각은 이전 레이어에 포함된 뉴런들로부터 수신된 액티베이션들 및 웨이트(weight)들에 기초하여 자신의 액티베이션을 결정할 수 있다. 웨이트는 각 뉴런에서의 출력 액티베이션을 계산하기 위해 이용되는 파라미터로서, 뉴런들 간의 연결관계에 할당되는 값일 수 있다.
뉴런들 각각은 입력을 수신하여 액티베이션을 출력하는 뉴럴 처리기(Neural processing unit)(또는 프로세싱 엘리먼트)에 의해 처리될 수 있고, 뉴런들 각각의 입력-출력은 매핑될 수 있다. 예를 들어,
Figure pat00001
는 활성화 함수(activation function)이고,
Figure pat00002
는 (i-1) 번째 레이어에 포함된 k 번째 뉴런으로부터 i 번째 레이어에 포함된 j 번째 뉴런으로의 웨이트 값일 수 있다.
Figure pat00003
는 i 번째 레이어에 포함된 j 번째 뉴런의 바이어스(bias)값이고,
Figure pat00004
는 i 번째 레이어의 j 번째 뉴런의 액티베이션, 다시 말해서 포스트 액티베이션(post activation)으로 지칭될 수 있다. 포스트 액티베이션
Figure pat00005
는 다음의 [수학식 1]을 이용하여 계산될 수 있다.
Figure pat00006
도 2에 도시된 바와 같이, 제1 히든 레이어(3)의 첫 번째 뉴런의 포스트 액티베이션은
Figure pat00007
로 표현될 수 있다. 또한,
Figure pat00008
은 [수학식 1]에 따라
Figure pat00009
의 값을 가질 수 있다. 다시 말해서, 포스트 액티베이션은 이전 레이어로부터 수신된 액티베이션들의 합(sum)에 활성화 함수를 적용하여 획득된 값일 수 있다. 다만, [수학식 1]은 뉴럴 네트워크에서 데이터를 처리하기 위해 이용되는 액티베이션 및 웨이트를 설명하기 위한 예시일 뿐, 이에 제한되지 않는다.
전술한 바와 같이, 뉴럴 네트워크(1)에서는 수많은 데이터 집합들이 상호 연결된 복수의 뉴런들 간에 교환되고, 레이어를 지나면서 수많은 연산 과정을 거친다. 한편, 이러한 연산 수행을 통해 뉴럴 네트워크(1)는 훈련되고, 이에 기반하여 웨이트들 및 바이어스들이 최적화될 수 있다. 본 개시의 예시적 실시 예에 따른 뉴럴 네트워크 처리 장치는 근사 곱셈기를 구비하고, 고정 소수점 타입의 액티베이션, 웨이트 및 바이어스에 기반하여 뉴럴 네트워크(1)를 훈련 시킬 수 있다. 이에 대한 자세한 설명은 후술하기로 한다.
도 3은 본 개시의 예시적 실시 예에 따른 뉴럴 네트워크의 훈련 과정을 설명하기 위한 순서도를 도시한다. 도 3은 도 2를 참조하여 설명될 수 있다.
도 3을 참조하면, 훈련 데이터(training data)에 기반하여 뉴럴 네트워크(1)의 연산이 수행되고, 또한 출력 데이터가 생성될 수 있다(S100). 다시 말해서, 입력 레이어(2)에 훈련 데이터가 입력 데이터(I1, I2)로서 인가되면, 뉴럴 네트워크(1)는 훈련 데이터에 대응되는 출력 데이터(O1, O2)를 생성할 수 있다. 훈련 데이터는, 학습을 위해 뉴럴 네트워크(1)에 인가되는 입력 데이터로서, 대응되는 목표 값 또는 레이블을 미리 알고 있는 데이터일 수 있다.
뉴럴 네트워크(1)는 고정 소수점 타입의 액티베이션, 웨이트 및 바이어스 에 기반하여 훈련될 수 있다. 예시적 실시 예에 있어서, 각 뉴런에서 포스트 액티베이션은, 고정 소수점 기반의 근사 곱셈기, 고정 소수점 기반의 덧셈기 및 고정 소수점 기반의 반올림기에 기반하여 계산될 수 있다. 예를 들어, 근사 곱셈기를 통해 이전 레이어의 포스트 액티베이션과 웨이트가 근사 곱셈되고, 복수의 근사 곱셈들이 더해진 값에 대해 반올림이 수행될 수 있다. 예컨대, 반올림기는 통계적 반올림(stochastic round)을 수행할 수 있다.
다음, 훈련 데이터에 대응되는 출력 데이터에 기반하여 로스(loss)가 계산될 수 있다(S200). 예를 들어, 로스는 훈련 데이터에 대응하는 목표 값과 훈련 데이터에 대응하여 생성된 출력 데이터 간 차이를 의미할 수 있다.
다음, 뉴럴 네트워크(1)로 로스가 역전파(back propagation)되고, 각 뉴런의 파라미터들이 결정될 수 있다(S300). 뉴런의 파라미터들은, 예를 들어 웨이트 들, 바이어스들 등 뉴럴 네트워크 연산에 기반이 되는 다양한 종류의 데이터를 포함할 수 있다. 뉴럴 네트워크의 훈련이 반복 진행됨에 따라, 뉴럴 네트워크(1)의 파라미터들은 주어진 입력에 대해 보다 정확한 출력을 연산하기 위해 조정될(tuned) 수 있다.
도 4는 고정 소수점 값의 일 예를 설명하기 위한 도면이다.
도 4를 참조하면, 고정 소수점 값(FX)은 정수부(IL), 소수점(DP) 및 소수부(FL)로 구분될 수 있다. 고정 소수점은 소수점을 사용하여 고정된 자리수의 소수를 나타내는 표기법을 의미한다.
정수부(IL)는 부호비트(SB)를 포함할 수 있다. 부호비트(SB)는 고정 소수점 값(FX)의 부호를 결정할 수 있다. 정수부(IL)는 고정 소수점 값(FX)의 정수를 나타내는 부분에 대응되며, 소수부(FL)는 고정 소수점 값(FX)의 소수를 나타내는 부분에 대응될 수 있다. 소수점(DP)은 고정 소수점 값(FX)의 정수부(IL) 및 소수부(FL)를 구분하는 기준이 되는 점을 의미할 수 있다.
예를 들어, 고정 소수점 값(FX)이 8비트의 고정 소수점 값인 경우, 정수부(IL) 및 소수부(FL)를 나타내는 비트들 각각은 1 또는 0 값을 가질 수 있다. 정수부(IL)를 나타내는 비트들은, 부호비트(SB)부터 순서대로 -8, +4, +2, +1의 값을 나타낼 수 있다. 또한, 소수부(FL)를 나타내는 비트들은 소수점(DP) 기준으로 순서대로 +0.5, +0.25, +0.125 및 +0.0625의 값을 나타낼 수 있다. 일 예로, 부호비트(SB)가 1일 경우는 정수부(IL)의 최상위 비트가 나타내는 값이 -8인 경우로, 정수부(IL) 및 소수부(FL)에 포함되는 다른 비트들의 값에 관계없이 고정 소수점 값(FX)이 나타내는 값은 음수이다.
도 4에서는 8비트의 고정 소수점 값(FX)이 설명되었으나, 이는 하나의 예시에 불과하며, 고정 소수점 값(FX)은 임의의 적절한 수의 비트 개수를 갖는 고정 소수점 값일 수 있다. 또한, 고정 소수점 값(FX)은 부호화 표현법, 1의 보수법 및 2의 보수법 중 어느 하나의 표현법에 의해 음수를 나타낼 수 있다.
도 5는 본 개시의 예시적 실시 예에 따른 뉴럴 네트워크 처리 장치 구성의일 예를 나타내는 블록도이다. 도 5는, 예를 들어 도 1의 뉴럴 네트워크 처리 장치(100)의 구체적인 구성을 도시한다. 이하, 도 5는 도 1을 참조하여 설명될 것이다.
도 5를 참조하면, 뉴럴 네트워크 처리 장치(100)는 데이터 램(110), 웨이트 램(120), 컨트롤러(130) 및 복수의 뉴럴 처리기들(140-1~140-n)을 포함할 수 있다. 도시되지는 않았으나, 뉴럴 네트워크 처리 장치(100)는 시퀀서(sequencer), 복수의 레지스터(register)들, 프로그램 메모리 등을 더 포함할 수 있다.
데이터 램(110)은 하나 이상의 입력 데이터(I)를 저장하고, 입력 데이터(I)를 뉴럴 처리기들(140-1~140-n)에 인가할 수 있다. 예를 들어, 입력 데이터(I)는 복수의 IP들 중 적어도 하나로부터 제공될 수 있다. 또한, 뉴럴 처리기들(140-1~140-n)의 연산에 기반하여 생성된 출력 데이터(O)를 제공받고, 이를 저장할 수 있다. 예시적 실시 예에 있어서, 입력 데이터(I) 및 출력 데이터(O)는 고정 소수점 타입일 수 있다.
예를 들어, 뉴럴 네트워크 처리 장치(100)의 훈련 모드(또는 학습 모드)에서, 데이터 램(110)은 훈련 데이터를 저장하고, 이를 입력 데이터(I)로서 뉴럴 처리기들(140-1~140-n)에 인가할 수 있다. 예를 들어, 뉴럴 네트워크 처리 장치(100)의 추론(inference) 모드에서, 데이터 램(110)은 뉴럴 네트워크 처리 장치(100)의 추론 연산을 위한 데이터를 저장하고, 이를 입력 데이터(I)로서 뉴럴 처리기들(140-1~140-n)에 인가할 수 있다. 뉴럴 네트워크 처리 장치(100)가 시스템 온 칩(예를 들어, 도 1의 10)에 구비되는 경우, 데이터 램(110)은 시스템 온 칩(예를 들어, 도 1의 10)에 구비된 다양한 IP로부터 출력되는 데이터를 입력 데이터(I)로서 저장할 수 있다.
웨이트 램(120)은 복수의 웨이트(W)들을 저장하고, 각 웨이트를 대응하는 뉴럴 처리기에 인가할 수 있다. 다시 말해서, 뉴럴 처리기들(140-1~140-n) 각각에 할당된 웨이트(W)들이 웨이트 램(120)에 저장될 수 있다. 예를 들어, 뉴럴 네트워크 처리 장치(100)의 훈련 모드(또는 학습 모드)에서, 웨이트 램(120)은 훈련 과정을 통해 조정된 웨이트(W)들을 뉴럴 처리기들(140-1~140-n)로부터 제공받고 이를 저장할 수 있다. 예시적 실시 예에 있어서, 웨이트(W)는 고정 소수점 타입일 수 있다.
데이터 램(110) 및 웨이트 램(120)은, 예를 들어 DRAM(Dynamic RAM), SRAM(Static RAM), SDRAM(Synchronous RAM), PRAM(Phase-change RAM) 등일 수 있다. 다만, 이에 한정되는 것은 아니고, 데이터 램(110) 및 웨이트 램(120)은 다양한 종류의 메모리로서 구현될 수 있다.
컨트롤러(130)는 뉴럴 처리기들(140-1~140-n)에 대한 전반적인 제어 동작을 수행할 수 있다. 예를 들어, 컨트롤러(130)는 각 뉴럴 처리기에 구비된 멀티플렉서를 제어하는 제1 제어신호(CTRL_1)를 뉴럴 처리기들(140-1~140-n)로 인가할 수 있다. 또한, 예시적 실시 예에 있어서, 컨트롤러(130)는 각 뉴럴 처리기에 구비된 근사 곱셈기를 제어하는 제2 제어신호(CTRL_2)를 뉴럴 처리기들(140-1~140-n)로 인가할 수 있다. 예를 들어, 제2 제어신호(CTRL_2)는 근사 곱셈기의 모드 선택에 기반이 될 수 있다.
복수의 뉴럴 처리기들(140-1~140-n) 각각은 뉴럴 네트워크(예를 들어, 도 2의 10)의 레이어들(예를 들어, 도 2의 2, 3, 4, 5)에 포함된 뉴런으로서 동작할 수 있다. 예를 들어, 복수의 뉴럴 처리기들(140-1~140-n) 중 적어도 일부는 입력 레이어(예를 들어, 도 2의 2)에 포함된 뉴런에 대응하여 동작하며, 이에 따라 입력 데이터(I) 및 웨이트(W)를 수신하고 이에 기반하여 액티베이션을 출력할 수 있다. 예를 들어, 복수의 뉴럴 처리기들(140-1~140-n) 중 다른 일부는 히든 레이어(예를 들어, 도 2의 3, 4)에 포함된 뉴런에 대응하여 동작하며, 이에 따라 이전 레이어에 포함된 뉴런들로부터 수신된 액티베이션들 및 웨이트(W)를 수신하고 이에 기반하여 액티베이션을 출력할 수 있다. 예를 들어, 복수의 뉴럴 처리기들(140-1~140-n) 중 또 다른 일부는 출력 레이어(예를 들어, 도 2의 5)에 포함된 뉴런에 대응하여 동작하며, 이에 따라 이전 레이어에 포함된 뉴런들로부터 수신된 액티베이션들 및 웨이트(W)를 수신하고 이에 기반하여 출력 데이터를 생성할 수 있다.
예시적 실시 예에 있어서, 복수의 뉴럴 처리기들(140-1~140-n) 중 적어도 하나는 근사 곱셈기 및 반올림기를 구비할 수 있다. 예를 들어, 복수의 뉴럴 처리기들(140-1~140-n) 중 적어도 하나는 근사 곱셈기를 통해, 액티베이션과 웨이트(W)에 대한 근사 곱셈 연산을 수행할 수 있다. 또한, 복수의 뉴럴 처리기들(140-1~140-n) 중 적어도 하나는 반올림기를 통해, 복수의 근사 곱셈 연산된 값들의 합에 대한 통계적 반올림을 수행할 수 있다.
본 실시 예에서는 도시되지 않았으나, 뉴럴 네트워크 처리 장치(100)는 클럭을 더 포함할 수 있고, 각 클럭 사이클마다 뉴럴 처리기들(140-1~140-n)은 연산 동작을 수행할 수 있다. 예시적 실시 예에 있어서, 뉴럴 처리기들(140-1~140-n)은 파이프라인 형식(pipelined fashion)으로 동작할 수 있다.
도 6은 본 개시의 예시적 실시 예에 따른 뉴럴 처리기의 구체적인 구성을 설명하는 블록도이다. 예를 들어, 도 6에 도시된 뉴럴 처리기(140-m)는 도 5의 뉴럴 처리기들(140-1~140-n) 중 하나일 수 있다. 이하, 도 6은 도 5를 참조하여 설명될 것이다.
도 6을 참조하면, 뉴럴 처리기(140-m)는 산술 논리 연산 장치(Arithmetic Logic Unit; ALU)(160m), 누산기(accumulator)(170m) 및 활성화 함수 장치(Activation Function Unit, AFU)(180m)를 구비할 수 있다. 또한, 뉴럴 처리기(140-m)는, 멀티플렉서(multiplexer)(150m)를 더 구비할 수 있다.
멀티플렉서(150m)는 입력 데이터(I) 및 입력 액티베이션(A_I)을 수신하고, 제1 제어신호(CTRL_1)에 기반하여 입력 데이터(I) 및 입력 액티베이션(A_I) 중 하나를 택일적으로 선택하여 제1 값(mo)으로서 출력할 수 있다. 예를 들어, 제1 제어신호(CTRL_1)는 컨트롤러(130)에서 제공될 수 있다.
예를 들어, 입력 데이터(I)는 데이터 램(110)으로부터 제공받을 수 있다. 또한, 입력 액티베이션(A_I)은 뉴럴 처리기들(130-1~130-n) 중 하나로부터 제공받을 수 있다. 예컨대, 입력 액티베이션(A_I)은, 뉴럴 처리기(130-m)에 대응하는 뉴런이 포함된 레이어를 기준으로, 이전 레이어에 포함된 뉴런에 대응하는 뉴럴 처리기로부터 제공받을 수도 있고, 동일한 레이어에 포함된 뉴런에 대응하는 뉴럴 처리기로부터 제공받을 수도 있다.
산술 논리 연산 장치(160m)는 다수의 데이터들을 수신하고, 이에 기반하여 산술 및 논리 연산을 수행할 수 있다. 예를 들어, 산술 논리 연산 장치(160m)는 제1 값(mo) 및 웨이트(W)를 수신하고, 제1 값(mo) 및 웨이트(W)에 대한 곱셈 연산을 수행할 수 있다. 또한, 누산기(170m)로부터 출력된 누산값(aco)을 더 제공받고, 상기 제1 값(mo) 및 웨이트(W)에 대한 곱셈 연산의 결과와 누산값(aco)에 대한 덧셈 연산을 수행하여 출력값(alo)을 생성할 수 있다.
예시적 실시 예에 있어서, 뉴럴 네트워크 처리 장치(100)의 훈련 모드에서, 산술 논리 연산 장치(160m)는 제1 값(mo) 및 웨이트(W)에 대한 근사 곱셈 연산을 수행할 수 있다. 근사 곱셈 연산은 근사 컴퓨팅(approximate computing)의 일종으로서, 계산된 결과값의 오차를 일정 부분 허용하는 곱셈 연산을 의미할 수 있다. 또한, 뉴럴 네트워크 처리 장치(100)의 추론 모드에서, 산술 논리 연산 장치(160m)는 제1 값(mo) 및 웨이트(W)에 대한 일반 곱셈 연산을 수행할 수 있다.
누산기(170m)는 산술 논리 연산 장치(160m)의 연산 결과를 일시적으로 저장할 수 있다. 구체적으로, 누산기(170m)는 산술 논리 연산 장치(160m)의 출력값(alo)을 수신하고, 이럴 일시적으로 저장하는 레지스터를 포함할 수 있다. 예를 들어, 누산기(170m)는 다수의 플립플롭(flipflop)이 연결된 구성을 포함할 수 있다. 누산기(170m)는 일시적으로 저장된 출력값(alo)을 누산값(aco)으로서 산술 논리 연산 장치(160m) 또는 활성화 함수 장치(180m)로 출력할 수 있다.
활성화 함수 장치(180m)는 누산기(170m)로부터 누산값(aco)을 수신할 수 있다. 예시적 실시 예에 있어서, 활성화 함수 장치(180m)는 누산값(aco)에 대해 반올림 연산을 수행하고, 누산값(aco)에 대한 포스트 액티베이션(A_O)을 생성할 수 있다. 일 예로, 활성화 함수 장치(180m)는 누산값(aco)에 대해 반올림 연산을 수행하고, 이에 대해 활성화 함수를 적용할 수 있다. 또는, 활성화 함수 장치(180m)는 누산값(aco)에 대해 활성화 함수를 적용하고, 이에 대해 반올림 연산을 수행할 수 있다. 또는, 활성화 함수 장치(180m)는 누산값(aco)에 대해 반올림 연산을 수행하고, 활성화 함수 적용을 바이패스할 수 있다. 예를 들어, 활성화 함수 장치(180m)는 누산값(aco)에 대해 통계적 반올림 연산을 수행할 수 있다. 이에 따라, 활성화 함수 장치(180m)는 출력 액티베이션(A_O)을 생성할 수 있다.
도 7은 본 개시의 예시적 실시 예에 따른 산술 논리 연산 장치를 나타내는 블록도이다. 예를 들어, 도 7은 도 6에 도시된 산술 논리 연산 장치(160m)에 대한 구체적인 블록도일 수 있다. 이하, 도 7은 도 5 및 도 6을 참조하여 설명될 것이다.
도 7을 참조하면, 산술 논리 연산 장치(160m)는 근사 곱셈기(162m) 및 덧셈기(164m)를 구비할 수 있다. 근사 곱셈기(162m)는 복수의 입력 값에 대한 근사 곱셈 연산을 수행할 수 있다. 구체적으로, 근사 곱셈기(162m)는 제1 값(mo) 및 웨이트(W)를 수신하고, 제1 값(mo) 및 웨이트(W)의 근사곱을 도출할 수 있다. 근사 곱셈기(162m)는, 예를 들어 근사 4:2 compressor 기반 곱셈기, 근사 modified booth 곱셈기 등 다양한 형태로 구현될 수 있다.
근사 곱셈기(162m)에서 도출된 제1 값(mo) 및 웨이트(W)의 근사곱은, 제1 값(mo) 및 웨이트(W)의 일반 곱에 비해 랜덤적으로 하나 이상의 비트에 오차가 발생할 수 있다. 즉, 근사 곱셈을 통해 제1 값(mo) 및 웨이트(W)의 곱은 랜덤성을 갖게 되고, 이에 기반하여 차후 활성화 함수 장치(180m)에서 통계적 반올림 연산이 가능할 수 있다.
예시적 실시 예에 있어서, 근사 곱셈기(162m)는, 뉴럴 네트워크 처리 장치(100)의 훈련 모드에서 근사 곱을 수행하고, 뉴럴 네트워크 처리 장치(100)의 추론 모드에서 일반 곱을 수행하도록 제어될 수 있다. 예를 들어, 근사 곱셈기(162m)는 컨트롤러(130)로부터 수신한 제2 제어신호(CTRL_2)에 기반하여 근사 곱 및 일반 곱 중 하나의 연산을 수행하도록 제어될 수 있다.
덧셈기(164m)는 근사 곱셈기(162m)의 출력 및 누산기(170m)로부터 출력된 누산값(aco)에 대해 덧셈 연산을 수행할 수 있다. 즉, 덧셈기(164m)는 훈련 모드에서, 제1 값(mo) 및 웨이트(W)에 대한 곱셈 연산의 결과와 누산값(aco)에 대한 덧셈 연산을 수행하여 출력값(alo)을 생성할 수 있다. 출력값(alo)은, 예를 들어 이전 레이어로부터 수신된 액티베이션들의 합과 대응하는 값일 수 있다.
도 8은 본 개시의 예시적 실시 예에 따른 활성화 함수 장치를 나타내는 블록도이다. 예를 들어, 도 8은 도 6에 도시된 활성화 함수 장치(180m)에 대한 블록도일 수 있다. 이하, 도 8은 도 5 및 도 6을 참조하여 설명된다.
도 8을 참조하면, 활성화 함수 장치(180m)는 반올림기(182m) 및 활성화 함수 모듈(184m)을 포함할 수 있다. 반올림기(182m)는 누산기(170m)로부터 출력된 누산값(aco)에 대해 반올림 연산을 수행할 수 있다. 예시적 실시 예에 있어서, 뉴럴 네트워크 처리 장치(100)의 훈련 모드에서 누산값(aco)은 근사 곱셈 연산에 기반하여 랜덤적으로 오차가 발생하고, 반올림기(182m)는 이에 기반하여 누산값(aco)에 대해 통계적 반올림 연산을 수행할 수 있다. 누산값(aco)에 대한 반올림 연산을 통해, 누산값(aco)은 양자화(quantize)될 수 있다.
통계적 반올림 연산은 확률에 기반하여 반올림이 수행되는 연산을 의미할 수 있다. 예를 들어, 지수부가 IL, 소수부가 FL인 고정 소수점 기반에서, 통계적 반올림 연산은 다음의 [수학식 2]로 정의될 수 있다.
Figure pat00010
[수학식 2]에서
Figure pat00011
는 x보다 작은 값 중,
Figure pat00012
의 가장 큰 정수 배 수(largest integer multiple of
Figure pat00013
)를 의미할 수 있다. [수학식 2]에 따른 통계적 반올림 연산은, 확률에 기반하여 반올림 연산이 수행되므로, 예를 들어
Figure pat00014
범위의 작은 변화가 훈련 중 반영될 수 있다.
본 개시의 기술적 사상에 따른 뉴럴 네트워크 처리 장치(100)는 근사 곱셈기(162m) 및 반올림기(182m)를 통해 통계적 반올림을 구현하는 복수의 뉴런 처리기를 구비할 수 있다. 본 실시 예에 따른 뉴런 처리기에서 구현되는 통계적 반올림은 다음의 [수학식 3]으로 정의될 수 있다.
Figure pat00015
[수학식 3]에서, uniform 함수는 입력된 두 변수(
Figure pat00016
) 사이의 랜덤한 소수를 리턴시켜주는 함수로 정의될 수 있다.
예시적 실시 예에 있어서, 활성화 함수 모듈(184m)은 반올림 된 누산값(aco)에 대해 활성화 함수를 적용할 수 있다. 활성화 함수 모듈(184m)은 반올림 된 누산값(aco)에 활성화 함수를 적용하여 포스트 액티베이션(A_O)으로서 출력할 수 있다. 즉, 활성화 함수 모듈(184m)은 이전 레이어로부터 수신된 액티베이션들의 합에 활성화 함수를 적용하여 포스트 액티베이션(A_O)을 출력할 수 있다. 활성화 함수 모듈(184m)은, 예를 들어 계단 함수(step function), 시그모이드 함수(sigmoid function), 쌍곡-탄젠트 함수(heperbolic-tangent function) 또는 ReLU(Rectified Linear Unit)를 적용할 수 있으나, 이에 한정되는 것은 아니다.
본 실시 예에서는 반올림기(182m)에서 반올림 된 누산값(aco)이 활성화 함수 모듈(184m)로 입력되는 것으로 설명되었으나, 이는 하나의 예일 뿐 이에 한정되는 것은 아니다. 일 예로, 누산값(aco)은 활성화 함수 모듈(184m)로 입력되어 활성화 함수가 적용되고, 활성화 함수가 적용된 누산값(aco)이 반올림기(182m)로 입력되어 통계적 반올림 연산이 수행될 수 있다. 다른 예로, 누산값(aco)은 반올림기(182m)에서 통계적 반올림 연산이 수행되고, 활성화 함수 모듈(184m)을 바이패스하여 활성화 함수 장치(180m)에서 출력될 수 있다.
도 9는 본 개시의 예시적 실시 예에 따른 뉴럴 네트워크 처리 장치의 훈련을 설명하기 위한 순서도를, 도 10은 본 개시의 예시적 실시 예에 따른 통계적 반올림을 설명하기 위한 도면을 각각 도시한다. 이하, 도 9 및 도 10은 도 6 내지 도 8을 참조하여 설명될 것이다.
도 9를 참조하면, 뉴럴 네트워크 처리 장치(100)의 훈련 모드에서, 각 뉴럴 처리기는 입력 액티베이션(A_I)과 웨이트(W)에 대한 근사 곱셈 연산이 수행할 수 있다(S110). 예를 들어, 근사 곱셈 연산은 산술 논리 연산 장치(160m)에 구비된 근사 곱셈기(162m)를 통해 수행될 수 있다.
다음, 근사 곱셈 연산이 수행된 값들에 대한 누산(accumulate)을 수행할 수 있다(S120). 근사 곱셈 연산이 수행된 값들에 대한 누산은, 예를 들어 산술 논리 연산 장치(160m)에 구비된 덧셈기(164m), 및 누산기(170m)를 통해 수행될 수 있다. 누산된 값들은, 예를 들어 이전 레이어로부터 수신된 액티베이션들의 합에 대응될 수 있다.
다음, 각 뉴럴 처리기는 누산값(aco)에 대한 통계적 반올림을 수행할 수 있다(S130). 예를 들어, 통계적 반올림 연산은 활성화 함수 장치(180m)에 구비된 반올림기(182m)를 통해 수행될 수 있다. 통계적 반올림 수행 다음, 통계적 반올림 수행 값에 대한 활성화 함수가 적용될 수 있다(S140). 활성화 함수의 적용은, 예를 들어 활성화 함수 장치(180m) 내의 활성화 함수 모듈(184m)을 통해 수행될 수 있다.
도 10을 더 참조하면, 임의의 수에 대한 통계적 반올림 구현이 도시된다. 예를 들어, 반올림기(182m)로 입력되는 누산값(aco)이 3.3인 경우, 본 개시의 실시 예에 따른 통계적 반올림에 따르면, 3으로 반올림 될 확률과 4로 반올림 될 확률이 각각 70%, 30% 일 수 있다. 즉, 고정 소수점 기반의 연산에서도 작은 변화가 확률에 따라 반영될 수 있으므로, 본 개시의 기술적 사상에 따른 뉴럴 네트워크 처리 장치(100)는 고정 소수점 기반의 훈련이 가능할 수 있다. 또한, 별도의 랜덤 수 발생기 없이도 근사 곱셈기를 통해 통계적 반올림 연산이 가능함에 따라, 뉴럴 네트워크 처리 장치(100)가 차지하는 면적 및 전력 소모가 감소될 수 있다.
도 11은 본 개시의 다른 예시적 실시 예에 따른 산술 논리 연산 장치를 나타내는 블록도이다. 도 11에 개시된 구성 중, 도 7과 비교하여 중복되는 설명은 피하기로 한다.
도 11을 참조하면, 산술 논리 연산 장치(260m)는 근사 곱셈기(262m) 및 근사 덧셈기(264m)를 구비할 수 있다. 예시적 실시 예에 있어서, 근사 덧셈기(264m)는 근사 곱셈기(262m)의 출력 및 누산값(aco)에 대해 근사 덧셈 연산을 수행할 수 있다. 근사 덧셈 연산은 근사 컴퓨팅의 일종으로서, 계산된 결과값의 오차를 일정 부분 허용하는 덧셈 연산을 의미할 수 있다.
예시적 실시 예에 있어서, 근사 덧셈기(264m)는, 뉴럴 네트워크 처리 장치(도 5의 100)의 훈련 모드에서 근사 덧셈을 수행하고, 뉴럴 네트워크 처리 장치(도 5의 100)의 추론 모드에서 일반 덧셈을 수행하도록 제어될 수 있다. 예를 들어, 근사 덧셈기(264m)는 컨트롤러(도 5의 130)로부터 수신한 제3 제어신호(CTRL_3)에 기반하여 근사 덧셈 및 일반 덧셈 중 하나의 연산을 수행하도록 제어될 수 있다. 예를 들어, 뉴럴 네트워크 처리 장치(도 5의 100)의 훈련 모드에서, 근사 곱셈기(262m)의 근사 곱셈 연산 및 근사 덧셈기(264m)의 근사 덧셈을 통해 출력값(alo)은 랜덤성을 갖게 되고, 이에 기반하여 차후 활성화 함수 장치(도 6의 180m)에서 통계적 반올림 연산이 가능할 수 있다.
도 12는 본 개시의 다른 예시적 실시 예에 따른 산술 논리 연산 장치를 나타내는 블록도이다. 도 12에 개시된 구성 중, 도 7 및 도 11과 비교하여 중복되는 설명은 피하기로 한다.
도 12를 참조하면, 산술 논리 연산 장치(360m)는 일반 곱셈기(362m) 및 근사 덧셈기(364m)를 구비할 수 있다. 예시적 실시 예에 있어서, 일반 곱셈기(362m)는, 뉴럴 네트워크 처리 장치(도 5의 100)의 훈련 모드 및 추론 모드에서 일반 곱을 수행할 수 있다. 또한, 근사 덧셈기(364m)는, 뉴럴 네트워크 처리 장치(도 5의 100)의 훈련 모드에서 근사 덧셈을 수행하고, 뉴럴 네트워크 처리 장치(도 5의 100)의 추론 모드에서 일반 덧셈을 수행하도록 제어될 수 있다. 예를 들어, 뉴럴 네트워크 처리 장치(도 5의 100)의 훈련 모드에서, 근사 덧셈기(264m)의 근사 덧셈을 통해 출력값(alo)은 랜덤성을 갖게 되고, 이에 기반하여 차후 활성화 함수 장치(도 6의 180m)에서 통계적 반올림 연산이 가능할 수 있다.
도 13은 본 개시의 예시적 실시 예에 따른 휴대용 컴퓨팅 장치(1000)를 나타내는 블록도이다. 휴대용 컴퓨팅 장치(1000)는 비제한적인 예시로서, 모바일 폰, 태플릿 PC, 웨어러블 기기, 사물 인터넷 장치 등과 같이 배터리 또는 자가 발전을 통해서 전력이 공급되는 임의의 휴대용 전자기기일 수 있다.
도 13에 도시된 바와 같이, 휴대용 컴퓨팅 장치(1000)는 메모리 서브시스템(1010), 입출력 장치들(1030), 프로세싱 유닛(1050) 및 네트워크 인터페이스(1070)를 포함할 수 있고, 메모리 서브시스템(1010), 입출력 장치들(1030), 프로세싱 유닛(1050) 및 네트워크 인터페이스(1070)는 버스(1090)를 통해서 상호 통신할 수 있다. 일부 실시 예들에서, 메모리 서브시스템(1010), 입출력 장치들(1030), 프로세싱 유닛(1050) 및 네트워크 인터페이스(1070) 중 적어도 2개 이상은, 시스템 온 칩으로서 하나의 패키지에 포함될 수 있다.
메모리 서브시스템(1010)은 RAM(1012) 및 스토리지(1014)를 포함할 수 있다. RAM(1012) 및/또는 스토리지(1014)는 프로세싱 유닛(1050)에 의해서 실행되는 명령어들 및 처리되는 데이터를 저장할 수 있다. 예를 들면, RAM(1012) 및/또는 스토리지(1014)는 뉴럴 네트워크의 신호들, 웨이트들, 바이어스들과 같은 변수들을 저장할 수 있고, 뉴럴 네트워크의 뉴런(또는 노드)의 파라미터들을 저장할 수도 있다. 일부 실시 예들에서, 스토리지(1014)는 비휘발성 메모리를 포함할 수 있다.
프로세싱 유닛(1050)은 CPU(Central Processing Unit)(1052), GPU(Graphic Processing Unit)(1054), DSP(Digital Signal Processor)(1056) 및 NPU(Neural Network Processing Unit)(1058)를 포함할 수 있다. 도 13에 도시된 바와 상이하게, 일부 실시 예들에서, 프로세싱 유닛(1050)은 CPU(1052), GPU(1054), DSP(1056) 및 NPU(1058) 중 적어도 일부만을 포함할 수도 있다.
CPU(1052)는 휴대용 컴퓨팅 장치(1000)의 전체적인 동작, 예컨대 입출력 장치들(1030)을 통해서 수신된 외부 입력에 응답하여 특정 작업을 직접 수행하거나, 프로세싱 유닛(1050)의 다른 구성요소들에게 수행을 지시할 수 있다. GPU(1054)는 입출력 장치들(1030)에 포함된 디스플레이 장치를 통해서 출력되는 영상을 위한 데이터를 생성할 수도 있고, 입출력 장치들(1030)에 포함된 카메라로부터 수신되는 데이터를 인코딩할 수도 있다. DSP(1056)는 디지털 신호, 예컨대 네트워크 인터페이스(1070)로부터 제공되는 디지털 신호를 처리함으로써 유용한 데이터를 생성할 수 있다.
NPU(1058)는 뉴럴 네트워크를 위한 전용의 하드웨어로서, 뉴럴 네트워크를 구성하는 적어도 일부의 뉴런에 대응하는 뉴럴 처리기들을 포함할 수 있고, 뉴럴 처리기들 중 적어도 일부는 병렬적으로 신호를 처리할 수 있다. 본 개시의 예시적 실시 예에 따른 NPU(1058)는, 근사 곱셈기 및 반올림기를 구비하고 이에 기반하여 뉴럴 네트워크 훈련을 수행함으로써, 높은 정확성을 갖는 고정 소수점 기반의 훈련이 가능할 수 있다. 또한, 별도의 랜덤 수 발생기가 없이도 통계적 반올림을 수행할 수 있으므로, NPU(1058)가 차지하는 면적 및 전력 소모가 감소될 수 있다.
입출력 장치들(1030)은 터치 입력 장치, 사운드 입력 장치, 카메라 등과 같은 입력 장치들 및 디스플레이 장치 및 사운드 출력 장치 등과 같은 출력 장치들을 포함할 수 있다. 예를 들면, 사운드 입력 장치를 통해서 사용자의 음성이 입력되는 경우, 휴대용 컴퓨팅 장치(1000)에 구현된 뉴럴 네트워크에 의해서 음성이 인식될 수 있고, 그에 따른 동작이 트리거링될 수 있다. 또한, 카메라를 통해서 이미지가 입력되는 경우, 휴대용 컴퓨팅 장치(1000)에 구현된 뉴럴 네트워크에 의해서 이미지에 포함된 오브젝트가 인식될 수 있고, 가상 현실(virtual reality)과 같은 출력을 사용자에게 제공할 수 있다. 네트워크 인터페이스(1070)는 휴대용 컴퓨팅 장치(1000)에 LTE(Long Term Evolution), 5G 등과 같은 이동 통신 네트워크에 대한 액세스를 제공할 수도 있고, 와이파이와 같은 로컬 네트워크에 대한 액세스를 제공할 수도 있다.
이상에서와 같이 도면과 명세서에서 예시적인 실시 예들이 개시되었다. 본 명세서에서 특정한 용어를 사용하여 실시 예들이 설명되었으나, 이는 단지 본 개시의 기술적 사상을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 개시의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 개시의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (20)

  1. 복수의 뉴럴 처리기(neural processing unit)들을 포함하고, 하나 이상의 입력 데이터 및 복수의 웨이트들에 기반하여 연산을 수행하는 뉴럴 네트워크 처리 장치(neural network processing unit)에 있어서,
    상기 복수의 뉴럴 처리기들 중 적어도 하나는,
    제1 값 및 제2 값을 수신하고 상기 제1 값 및 제2 값에 기반하여 근사 곱셈 연산을 수행하는 근사 곱셈기(approximate multiplier)를 구비하는 산술 논리 연산 장치(arithmetic logic unit); 및
    상기 산술 논리 연산 장치의 출력에 기반하여 통계적 반올림 연산을 수행하는 반올림기(rounder)를 구비하는 활성화 함수 장치(activation function unit)를 포함하는 뉴럴 네트워크 처리 장치.
  2. 제1 항에 있어서,
    상기 복수의 뉴럴 처리기들 중 적어도 하나는,
    상기 하나 이상의 입력 데이터 및 상기 복수의 뉴럴 처리기들 중 하나의 출력 값 중 하나를 택일적으로 선택하여 상기 제1 값으로서 출력하는 멀티플렉서를 더 포함하는 뉴럴 네트워크 처리 장치.
  3. 제1 항에 있어서,
    상기 제2 값은 상기 복수의 웨이트들 중 적어도 하나인 것을 특징으로 하는 뉴럴 네트워크 처리 장치.
  4. 제1 항에 있어서,
    상기 복수의 뉴럴 처리기들 중 적어도 하나는,
    상기 산술 논리 연산 장치의 출력을 누산(accumulate)하는 누산기(accumulator); 및
    상기 근사 곱셈기의 출력값 및 상기 누산기의 출력값에 기반하여 덧셈 연산을 수행하는 덧셈기(adder)를 더 포함하는 뉴럴 네트워크 처리 장치.
  5. 제4 항에 있어서,
    상기 반올림기는 상기 누산기에서 출력되는 누산값에 대해 상기 통계적 반올림 연산을 수행하는 것을 특징으로 하는 뉴럴 네트워크 처리 장치.
  6. 제1 항에 있어서,
    상기 근사 곱셈기는 상기 뉴럴 네트워크 처리 장치의 훈련(train) 모드에서 근사 곱셈 연산을 수행하는 것을 특징으로 하는 뉴럴 네트워크 처리 장치.
  7. 제6 항에 있어서,
    상기 근사 곱셈기의 모드를 제어하는 제어신호를 출력하는 컨트롤러를 더 포함하고,
    상기 근사 곱셈기는 상기 제어신호에 기반하여, 근사 곱셈 연산을 수행하는 제1 모드 및 일반 곱셈 연산을 수행하는 제2 모드 중 하나의 모드로 동작하는 것을 특징으로 하는 뉴럴 네트워크 처리 장치.
  8. 제7 항에 있어서,
    상기 근사 곱셈기는 상기 제어신호에 기반하여, 상기 뉴럴 네트워크 처리 장치의 추론(inference) 모드에서 상기 제2 모드로 동작하는 것을 특징으로 하는 뉴럴 네트워크 처리 장치.
  9. 제1 항에 있어서,
    상기 산술 논리 연산 장치는 고정 소수점(fixed point) 타입의 장치인 것을 특징으로 하는 뉴럴 네트워크 처리 장치.
  10. 하나 이상의 IP(Intellectual Property); 및
    상기 하나 이상의 IP로부터 입력 데이터를 수신하고, 복수의 뉴럴 처리기들을 포함하고, 상기 입력 데이터 및 복수의 웨이트들에 기반하여 뉴럴 네트워크 연산을 수행하는 뉴럴 네트워크 처리 장치를 구비하고,
    상기 복수의 뉴럴 처리기 중 적어도 하나는,
    제1 값 및 제2 값을 제공받고 상기 제1 값 및 제2 값에 대한 근사 곱셈 연산을 수행하는 근사 곱셈기를 구비하는 산술 논리 연산 장치; 및
    상기 산술 논리 연산 장치의 출력에 기반하여 통계적 반올림 연산을 수행하는 반올림기를 구비하고, 상기 산술 논리 연산 장치의 출력에 대한 포스트 액티베이션을 출력하는 활성화 함수 장치를 포함하는 시스템 온 칩.
  11. 제10 항에 있어서,
    상기 뉴럴 네트워크 처리 장치는 상기 근사 곱셈기를 제어하는 컨트롤러를 더 포함하고,
    상기 근사 곱셈기는 상기 컨트롤러의 제어에 기반하여, 상기 뉴럴 네트워크 처리 장치의 훈련 모드에서는 근사 곱셈 연산을 수행하는 것을 특징으로 하는 시스템 온 칩.
  12. 제11 항에 있어서,
    상기 근사 곱셈기는 상기 컨트롤러의 제어에 기반하여, 상기 뉴럴 네트워크 처리 장치의 추론 모드에서는 일반 곱셈 연산을 수행하는 것을 특징으로 하는 시스템 온 칩.
  13. 제10 항에 있어서,
    상기 뉴럴 네트워크 처리 장치는, 훈련 모드에서, 상기 하나 이상의 IP로부터 훈련 데이터를 수신하고, 상기 훈련 데이터를 저장하는 데이터 램을 더 포함하는 것을 특징으로 하는 시스템 온 칩.
  14. 제13 항에 있어서,
    상기 복수의 뉴럴 처리기 중 적어도 하나는,
    상기 데이터 램으로부터 출력된 상기 훈련 데이터 및 상기 복수의 뉴럴 처리기 중 하나의 출력 값을 수신하고, 상기 훈련 데이터 및 상기 출력 값 중 하나를 선택하여 상기 제1 값으로서 출력하는 멀티플렉서를 더 포함하는 시스템 온 칩.
  15. 제10 항에 있어서,
    상기 제2 값은 상기 복수의 웨이트들 중 적어도 하나인 것을 특징으로 하는 시스템 온 칩.
  16. 제10 항에 있어서,
    상기 복수의 뉴럴 처리기들 중 적어도 하나는,
    상기 산술 논리 연산 장치의 출력을 누산하는 누산기; 및
    상기 근사 곱셈기의 출력값 및 상기 누산기의 출력값에 기반하여 덧셈 연산을 수행하는 덧셈기를 더 포함하고,
    상기 반올림기는, 상기 누산기에서 출력되는 누산값에 대해 상기 통계적 반올림 연산을 수행하는 것을 특징으로 하는 시스템 온 칩.
  17. 훈련 모드에서, 하나 이상의 훈련 데이터 및 복수의 웨이트들에 기반하여 훈련 연산을 수행하고, 복수의 뉴럴 처리기들을 구비하는 뉴럴 네트워크 처리 장치에 있어서,
    상기 복수의 뉴럴 처리기들 중 적어도 하나는,
    상기 훈련 모드에서, 제1 값 및 제2 값을 수신하고 상기 제1 값 및 제2 값을 근사 곱셈 연산하는 근사 곱셈기 및 상기 근사 곱셈기의 출력값 및 제3 값에 기반하여 덧셈 연산을 수행하는 덧셈기를 구비하는 산술 논리 연산 장치;
    상기 산술 논리 연산 장치의 출력을 누산하는 누산기; 및
    상기 누산기에서 출력되는 누산값에 대해 통계적 반올림 연산을 수행하는 반올림기를 구비하고, 상기 누산값에 대한 포스트 액티베이션을 출력하는 활성화 함수 장치를 포함하는 뉴럴 네트워크 처리 장치.
  18. 제17 항에 있어서,
    상기 제1 값은, 상기 하나 이상의 훈련 데이터 및 상기 복수의 뉴럴 처리기들 중 하나의 출력 값 중 하나이고,
    상기 제2 값은 상기 복수의 웨이트들 중 적어도 하나인 것을 특징으로 하는 뉴럴 네트워크 처리 장치.
  19. 제17 항에 있어서,
    상기 제3 값은 상기 누산기의 출력값인 것을 특징으로 하는 뉴럴 네트워크 처리 장치.
  20. 제17 항에 있어서,
    상기 훈련 연산은 고정 소수점 타입의 훈련 연산인 것을 특징으로 하는 뉴럴 네트워크 처리 장치.
KR1020180002776A 2018-01-09 2018-01-09 근사 곱셈기를 구비하는 뉴럴 네트워크 처리 장치 및 이를 포함하는 시스템온 칩 KR102637735B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020180002776A KR102637735B1 (ko) 2018-01-09 2018-01-09 근사 곱셈기를 구비하는 뉴럴 네트워크 처리 장치 및 이를 포함하는 시스템온 칩
US16/239,046 US20190212981A1 (en) 2018-01-09 2019-01-03 Neural network processing unit including approximate multiplier and system on chip including the same
DE102019100292.3A DE102019100292A1 (de) 2018-01-09 2019-01-08 Neuronalnetz-Verarbeitungseinheit mit Approximationsmultiplizierer und System-on-Chip mit einer solchen Einheit
TW108100877A TWI818944B (zh) 2018-01-09 2019-01-09 神經網路處理單元及系統晶片
CN201910018283.5A CN110020723A (zh) 2018-01-09 2019-01-09 神经网络处理单元及包括该神经网络处理单元的片上系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180002776A KR102637735B1 (ko) 2018-01-09 2018-01-09 근사 곱셈기를 구비하는 뉴럴 네트워크 처리 장치 및 이를 포함하는 시스템온 칩

Publications (2)

Publication Number Publication Date
KR20190084705A true KR20190084705A (ko) 2019-07-17
KR102637735B1 KR102637735B1 (ko) 2024-02-19

Family

ID=66995591

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180002776A KR102637735B1 (ko) 2018-01-09 2018-01-09 근사 곱셈기를 구비하는 뉴럴 네트워크 처리 장치 및 이를 포함하는 시스템온 칩

Country Status (5)

Country Link
US (1) US20190212981A1 (ko)
KR (1) KR102637735B1 (ko)
CN (1) CN110020723A (ko)
DE (1) DE102019100292A1 (ko)
TW (1) TWI818944B (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220089712A (ko) * 2019-11-05 2022-06-28 애플 인크. 뉴럴 프로세서 회로에서의 보안 모드 스위칭
KR102607328B1 (ko) * 2023-02-01 2023-11-29 (주) 한국주택정보 소규모 주택의 관리비 정산 방법 및 시스템

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102098713B1 (ko) * 2018-01-29 2020-04-08 주식회사 유엑스팩토리 Cnn과 rnn이 하나의 고성능 저전력 칩으로 집적된 이기종 프로세서 구조
US11410040B2 (en) * 2018-10-23 2022-08-09 Qualcomm Incorporated Efficient dropout inference for bayesian deep learning
TWI723634B (zh) * 2019-10-01 2021-04-01 創鑫智慧股份有限公司 資料處理系統及其資料處理方法
CN111832719A (zh) * 2020-07-28 2020-10-27 电子科技大学 一种定点量化的卷积神经网络加速器计算电路
CN112098845B (zh) * 2020-08-17 2021-08-31 四川大学 一种用于分布式储能系统的锂电池状态估计方法
CN112035398B (zh) * 2020-08-25 2023-10-24 青岛信芯微电子科技股份有限公司 一种系统级芯片SoC及适用于SoC的数据处理方法
US11099854B1 (en) * 2020-10-15 2021-08-24 Gigantor Technologies Inc. Pipelined operations in neural networks
US11256981B1 (en) * 2020-10-15 2022-02-22 Gigantor Technologies Inc. Unbounded parallel implementation of deep neural networks
WO2022126630A1 (zh) * 2020-12-18 2022-06-23 清华大学 可重构处理器及其上多种神经网络激活函数计算方法
WO2022221092A1 (en) * 2021-04-15 2022-10-20 Gigantor Technologies Inc. Pipelined operations in neural networks
TWI819645B (zh) * 2022-06-08 2023-10-21 緯創資通股份有限公司 更新神經網路模型的方法和電子裝置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2905699A2 (en) * 2014-02-10 2015-08-12 VIA Technologies, Inc. Processor that performs approximate computing instructions
US20170102920A1 (en) * 2015-10-08 2017-04-13 Via Alliance Semiconductor Co., Ltd. Neural network unit that performs stochastic rounding

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7711765B2 (en) * 2006-02-17 2010-05-04 Telefonaktiebolaget L M Ericsson (Publ) Method and apparatus to perform multiply-and-accumulate operations
US10049322B2 (en) * 2015-05-21 2018-08-14 Google Llc Prefetching weights for use in a neural network processor
US10192162B2 (en) * 2015-05-21 2019-01-29 Google Llc Vector computation unit in a neural network processor
US11244225B2 (en) * 2015-07-10 2022-02-08 Samsung Electronics Co., Ltd. Neural network processor configurable using macro instructions
CN106485319B (zh) * 2015-10-08 2019-02-12 上海兆芯集成电路有限公司 具有神经处理单元可动态配置以执行多种数据尺寸的神经网络单元
CN107153522B (zh) * 2017-04-21 2020-10-02 东南大学 一种面向人工神经网络计算的动态精度可配近似乘法器
US10474458B2 (en) * 2017-04-28 2019-11-12 Intel Corporation Instructions and logic to perform floating-point and integer operations for machine learning
US11361215B2 (en) * 2017-11-29 2022-06-14 Anaflash Inc. Neural network circuits having non-volatile synapse arrays
EP3502978A1 (en) * 2017-12-22 2019-06-26 Siemens Healthcare GmbH Meta-learning system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2905699A2 (en) * 2014-02-10 2015-08-12 VIA Technologies, Inc. Processor that performs approximate computing instructions
US20170102920A1 (en) * 2015-10-08 2017-04-13 Via Alliance Semiconductor Co., Ltd. Neural network unit that performs stochastic rounding

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220089712A (ko) * 2019-11-05 2022-06-28 애플 인크. 뉴럴 프로세서 회로에서의 보안 모드 스위칭
KR102607328B1 (ko) * 2023-02-01 2023-11-29 (주) 한국주택정보 소규모 주택의 관리비 정산 방법 및 시스템

Also Published As

Publication number Publication date
CN110020723A (zh) 2019-07-16
TW201933194A (zh) 2019-08-16
US20190212981A1 (en) 2019-07-11
KR102637735B1 (ko) 2024-02-19
TWI818944B (zh) 2023-10-21
DE102019100292A1 (de) 2019-07-11

Similar Documents

Publication Publication Date Title
KR102637735B1 (ko) 근사 곱셈기를 구비하는 뉴럴 네트워크 처리 장치 및 이를 포함하는 시스템온 칩
US11307865B2 (en) Data processing apparatus and method
TWI759361B (zh) 用於稀疏神經網路加速的架構、方法、電腦可讀取媒體和裝備
US7082419B1 (en) Neural processing element for use in a neural network
US11934826B2 (en) Vector reductions using shared scratchpad memory
CN111105023B (zh) 数据流重构方法及可重构数据流处理器
Choi et al. An energy-efficient deep convolutional neural network training accelerator for in situ personalization on smart devices
Li et al. Dynamic dataflow scheduling and computation mapping techniques for efficient depthwise separable convolution acceleration
US20230139623A1 (en) Data path circuit design using reinforcement learning
Fujii et al. A threshold neuron pruning for a binarized deep neural network on an FPGA
Cho et al. FARNN: FPGA-GPU hybrid acceleration platform for recurrent neural networks
Podobas et al. Streambrain: an hpc framework for brain-like neural networks on cpus, gpus and fpgas
US10990525B2 (en) Caching data in artificial neural network computations
Liu et al. A cloud server oriented FPGA accelerator for LSTM recurrent neural network
Devic et al. Highly-adaptive mixed-precision MAC unit for smart and low-power edge computing
JP2021517310A (ja) 複数の入力データセットのための処理
Chen et al. Exploiting on-chip heterogeneity of versal architecture for GNN inference acceleration
US11307866B2 (en) Data processing apparatus and method
US11086634B2 (en) Data processing apparatus and method
Que Reconfigurable acceleration of recurrent neural networks
Viebke et al. Performance modelling of deep learning on intel many integrated core architectures
Kästner et al. Analysis of hardware implementations to accelerate convolutional and recurrent neuronal networks
WO2020121030A1 (en) Caching data in artificial neural network computations
Andersen et al. A Hardware Accelerated Low Power DSP for Recurrent Neural Networks
WO2024058810A1 (en) Reducing memory bank conflicts in a hardware accelerator

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant