KR20200026455A - 인공 신경망 시스템 및 인공 신경망의 고정 소수점 제어 방법 - Google Patents

인공 신경망 시스템 및 인공 신경망의 고정 소수점 제어 방법 Download PDF

Info

Publication number
KR20200026455A
KR20200026455A KR1020180104403A KR20180104403A KR20200026455A KR 20200026455 A KR20200026455 A KR 20200026455A KR 1020180104403 A KR1020180104403 A KR 1020180104403A KR 20180104403 A KR20180104403 A KR 20180104403A KR 20200026455 A KR20200026455 A KR 20200026455A
Authority
KR
South Korea
Prior art keywords
quantization
values
fixed point
neural network
virtual
Prior art date
Application number
KR1020180104403A
Other languages
English (en)
Inventor
김재곤
김경영
김도윤
박준석
하상혁
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020180104403A priority Critical patent/KR20200026455A/ko
Priority to US16/367,662 priority patent/US11775807B2/en
Priority to CN201910534156.0A priority patent/CN110874628A/zh
Publication of KR20200026455A publication Critical patent/KR20200026455A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • 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
    • 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/49905Exception handling
    • G06F7/4991Overflow or underflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/18Complex mathematical operations for evaluating statistical data, e.g. average values, frequency distributions, probability functions, regression analysis
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4818Threshold devices
    • G06F2207/4824Neural networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Neurology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Operations Research (AREA)
  • Probability & Statistics with Applications (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Complex Calculations (AREA)
  • Image Analysis (AREA)

Abstract

인공 신경망 시스템은 프로세서, 가상 오버플로우 검출 회로 및 데이터 포맷 콘트롤러를 포함한다. 상기 프로세서는 인공 신경망의 하나의 레이어에 포함되는 복수의 노드들에 대한 노드 연산들을 수행하여 복수의 결과 값들을 발생하고, 상기 하나의 레이어에 대한 현재의 양자화를 위한 K번째(K는 1 이상의 자연수) 고정 소수점 포맷에 기초하여 상기 복수의 결과 값들에 대한 양자화를 수행하여 복수의 양자화 값들을 발생한다. 상기 가상 오버플로우 검출 회로는 상기 복수의 양자화 값들의 유효 비트 개수들의 분포를 나타내는 가상 오버플로우 정보를 발생한다. 상기 데이터 포맷 콘트롤러는 상기 가상 오버플로우 정보에 기초하여 상기 하나의 레이어에 대한 다음의 양자화를 위한 K+1번째 고정 소수점 포맷을 결정한다. 가상 오버플로우 정보를 이용하여 고정 소수점 포맷을 제어함으로써 오버플로우 및 언더플로우를 효율적으로 방지할 수 있다.

Description

인공 신경망 시스템 및 인공 신경망의 고정 소수점 제어 방법{Artificial neural network system and method of controlling fixed point in artificial neural network}
본 발명은 인공 신경망에 관한 것으로서, 더욱 상세하게는 동적 고정 소수점 정책을 수행하는 인공 신경망 시스템 및 인공 신경망의 고정 소수점 제어 방법에 관한 것이다.
고정 소수점 연산(fixed-point operation) 및 부동 소수점 연산(floating point operation)은 프로세서들과 같은 디지털 계산 회로들에 의해 수행되는 기본적인 산술 연산들이다. 부동 소수점 연산 방식은 고정 소수점 연산 방식과 비교하여 표현 범위가 넓고 정확하지만 상대적으로 연산 시간 및 전력 소모가 증가한다. 따라서 경제적인 디지털 신호처리를 위해서는 부동 소수점 연산 방식보다는 고정 소수점 연산 방식을 사용하는 것이 바람직하다. 특히 방대한 계산이 요구되는 인공 신경망의 트레이닝에는 고정 소수점 방식의 연산이 필수적이다. 그러나 고정 소수점 연산 방식은 실수의 표현 범위가 좁아 오버플로우가 발생할 가능성이 있다. 처리할 수 있는 레지스터의 사이즈보다 연산 과정에서 발생되는 데이터의 사이즈가 너무 커져버릴 경우 오버플로우가 발생하게 되는데 이러한 오버플로우를 방지하기 위해 소수 부분의 사이즈에 상응하는 분획 길이(fractional length)를 감소할 수 있다. 그러나 필요 이상으로 분획 길이를 감소하는 경우에는 언더플로우가 발생할 수 있고 수치 분해능(precision or value resolution)이 과도하게 희생될 수 있다.
상기와 같은 문제점을 해결하기 위한 본 발명의 일 목적은, 효율적으로 동적 고정 소수점 정책을 수행할 수 있는 인공 신경망 시스템을 제공하는 것이다.
또한 본 발명의 일 목적은, 효율적으로 동적 고정 소수점 정책을 수행할 수 있는 인공 신경망의 고정 소수점 제어 방법을 제공하는 것이다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 인공 신경망 시스템은 프로세서, 가상 오버플로우 검출 회로 및 데이터 포맷 콘트롤러를 포함한다. 상기 프로세서는 인공 신경망의 하나의 레이어에 포함되는 복수의 노드들에 대한 노드 연산들을 수행하여 복수의 결과 값들을 발생하고, 상기 하나의 레이어에 대한 현재의 양자화를 위한 K번째(K는 1 이상의 자연수) 고정 소수점 포맷에 기초하여 상기 복수의 결과 값들에 대한 양자화를 수행하여 복수의 양자화 값들을 발생한다. 상기 가상 오버플로우 검출 회로는 상기 복수의 양자화 값들의 유효 비트 개수들의 분포를 나타내는 가상 오버플로우 정보를 발생한다. 상기 데이터 포맷 콘트롤러는 상기 가상 오버플로우 정보에 기초하여 상기 하나의 레이어에 대한 다음의 양자화를 위한K+1번째 고정 소수점 포맷을 결정한다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 인공 신경망 시스템은 고정 소수점 포맷에 기초하여 양자화를 수행하여 발생되는 복수의 양자화 값들에 상응하는 복수의 온도계 코드들을 발생하고, 상기 복수의 온도계 코드들에 기초하여 상기 복수의 양자화 값들의 유효 비트 개수들의 분포를 나타내는 가상 오버플로우 정보를 발생하는 가상 오버플로우 검출 회로 및 상기 가상 오버플로우 정보에 기초하여 상기 고정 소수점 포맷을 갱신하는 데이터 포맷 콘트롤러를 포함한다.
상기 일 목적을 달성하기 위해, 본 발명의 실시예들에 따른 인공 신경망 시스템의 고정 소수점 포맷의 제어 방법은, 인공 신경망의 하나의 레이어에 포함되는 복수의 노드들에 대한 노드 연산들을 수행하여 복수의 결과 값들을 발생하는 단계, 상기 하나의 레이어에 대한 현재의 양자화를 위한 K번째(K는 1 이상의 자연수) 고정 소수점 포맷에 기초하여 상기 복수의 결과 값들에 대한 양자화를 수행하여 복수의 양자화 값들을 발생하는 단계, 상기 복수의 양자화 값들의 유효 비트 개수들의 분포를 나타내는 가상 오버플로우 정보를 발생하는 단계 및 상기 가상 오버플로우 정보에 기초하여 상기 하나의 레이어에 대한 다음의 양자화를 위한 K+1번째 고정 소수점 포맷을 결정하는 단계를 포함한다.
본 발명의 실시예들에 따른 인공 신경망 시스템 및 인공 신경망의 고정 소수점 제어 방법은 가상 오버플로우 정보를 이용하여 고정 소수점 포맷을 제어함으로써 오버플로우 및 언더플로우를 효율적으로 방지할 수 있고, 인공 신경망 시스템의 성능을 향상하고 전력 소모를 감소할 수 있다.
도 1은 본 발명의 실시예들에 따른 인공 신경망의 고정 소수점 제어 방법을 나타내는 순서도이다.
도 2는 본 발명의 실시예들에 따른 인공 신경망 시스템을 나타내는 블록도이다.
도 3a 및 3b는 본 발명의 실시예들에 따른 인공 신경망 시스템에 의해 구동되는 딥 러닝 신경망 구조의 일 예를 설명하기 위한 도면들이다.
도 4는 본 발명의 실시예들에 따른 인공 신경망 시스템에 포함되는 프로세서의 일 실시예를 나타내는 블록도이다.
도 5a 및 5b는 고정 소수점 포맷에 기초한 양자화를 설명하기 위한 도면들이다.
도 6은 하나의 레이어에 포함되는 복수의 노드들에 상응하는 복수의 양자화 값들의 일 예를 나타내는 도면이다.
도 7은 도 6의 양자화 값들의 유효 비트 개수들의 도수 분포를 나타내는 도면이다.
도 8은 본 발명의 실시예들에 따른 가상 오버플로우 검출 회로를 나타내는 도면이다.
도 9는 도 8의 가상 오버플로우 검출 회로에 포함되는 누적기의 일 실시예를 나타내는 도면이다.
도 10 및 11은 도 8의 가상 오버플로우 검출 회로의 동작을 설명하기 위한 도면들이다.
도 12는 도 8의 가상 오버플로우 검출 회로에 포함될 수 있는 제로 데이터 검출 회로의 일 실시예를 나타내는 도면이다.
도 13은 본 발명의 실시예들에 따른 가상 오버플로우 검출 회로를 나타내는 도면이다.
도 14는 도 13의 가상 오버플로우 검출 회로의 동작을 설명하기 위한 도면이다.
도 15는 본 발명의 실시예들에 따른 가상 오버플로우 검출 회로를 나타내는 도면이다.
도 16은 본 발명의 실시예들에 따른 고정 소수점 포맷 제어 방법을 나타내는 순서도이다.
도 17a 및 17b는 본 발명의 일 실시예에 따른 오버플로우 방지 방법을 설명하기 위한 도면들이다.
도 18a 및 18b는 본 발명의 일 실시예에 따른 언더플로우 방지 방법을 설명하기 위한 도면들이다.
도 19는 양자화 값들의 유효 비트 개수들의 분포의 일 예를 나타내는 도면이다.
도 20은 본 발명의 실시예들에 따른 인공 신경망 시스템을 나타내는 블록도이다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 실시예들에 따른 인공 신경망의 고정 소수점 제어 방법을 나타내는 순서도이다.
도 1을 참조하면, 인공 신경망의 하나의 레이어에 포함되는 복수의 노드들에 대한 노드 연산들을 수행하여 복수의 결과 값들을 발생한다(단계 S100). 인공 신경망(artificial neural network)은 머신 러닝(machine learning) 기법 중의 하나로서, 연결 선으로 연결된 많은 수의 인공 뉴런들을 사용하여 생물학적인 시스템의 계산 능력을 모방하는 소프트웨어나 하드웨어로 구현된 연산 모델을 나타낸다. 인공 신경망에서는 생물학적인 뉴런의 기능을 단순화시킨 인공 뉴런을 사용하게 된다. 그리고 연결 강도를 갖는 연결 선을 통해 상호 연결시켜 인간의 인지 작용이나 학습 과정을 수행하게 된다. 최근에는 인공 신경망의 한계를 극복하기 위한 딥 러닝(deep learning) 기술이 연구되고 있다. 본 발명의 실시예들이 적용될 수 있는 딥 러닝 신경망 구조에 대하여 도 3a 및 3b를 참조하여 후술한다.
K번째(K는 1 이상의 자연수) 고정 소수점 포맷에 기초하여 상기 복수의 결과 값들에 대한 양자화(quantization)를 수행하여 복수의 양자화 값들을 발생한다(단계 S200). 고정 소수점 포맷에 기초한 양자화에 대해서는 도 5a 및 5b를 참조하여 후술한다.
상기 복수의 양자화 값들의 유효 비트 개수들의 분포를 나타내는 가상 오버플로우 정보를 발생한다(단계 S300). 여기서 가상 오버플로우 정보라 함은 실제로 오버플로우가 발생하였는지에 관한 정보를 나타내는 것은 아니며, 다음의 연산에서 오버플로우가 발생할 가능성에 관한 정보를 나타낸다. 나아가 상기 가상 오버플로우 정보는 다음의 연산에서 언더플로우가 발생할 가능성에 관한 정보를 더 포함할 수 있다.
일 실시예에서, 상기 유효 비트 개수들의 도수 값들(frequency values)을 각각 나타내는 복수의 카운트 신호들을 발생하고 상기 복수의 카운트 신호들을 상기 가상 오버플로우 정보로서 제공할 수 있다. 유효 비트들은 최상위 비트로부터 처음으로 0이 아닌 비트 및 그 하위 비트들을 포함한다. 가상 오버플로우 정보의 발생에 관한 실시예들은 도 6 내지 15를 참조하여 후술한다.
상기 가상 오버플로우 정보에 기초하여 상기 복수의 노드들에 대한 다음의 양자화를 위한 K+1번째 고정 소수점 포맷을 결정한다(단계 S400). 인공 신경망을 학습시킨다는 것 또는 인공 신경망을 트레이닝한다는 것은 현재 인공 신경망이 가지고 있는 가중치 값들을 갱신한다는 것을 나타낸다. 이러한 가중치 값들의 갱신은 순방향 전파(feed forward) 방식 및/또는 역전파(back propagation) 방식에 따라서 노드 연산들을 반복적으로 수행함으로써 진행된다. 이러한 반복적인 노드 연산들을 수행함에 있어서, 본 발명의 실시예들에 따라서 하나의 레이어에 대한 한번(one iteration)의 노드 연산들이 완료될 때마다 고정 소수점 포맷을 갱신할 수 있다. 인공 신경망이 복수의 레이어들로 구성된 경우 고정 소수점 포맷은 레이어마다 결정될 수 있으며, 고정 소수점 포맷의 갱신도 레이어마다 수행될 수 있다. 상기 가상 오버플로우 정보에 따라서, 다음의 노드 연산 결과에 대한 양자화를 위한 K+1번째 고정 소수점 포맷은 현재의 노드 연산 결과에 대한 양자화를 위한 K번째 고정 소수점 포맷과 동일할 수도 있고 상이할 수도 있다. 고정 소수점 포맷의 갱신에 대한 실시예들은 도 16 내지19를 참조하여 후술한다.
이와 같이, 가상 오버플로우 정보를 이용하여 고정 소수점 포맷을 제어함으로써 오버플로우 및 언더플로우를 효율적으로 방지할 수 있고, 인공 신경망 시스템의 성능을 향상하고 전력 소모를 감소할 수 있다.
종래에는 양자화 값들 자체에 대한 분포를 구하고 상기 양자화 값들의 평균 및 분산과 같은 분포도를 계산하여 고정 소수점 정책을 운용하였다. 반면에 본 발명의 실시예들은 양자화 값들 자체가 아닌 양자화 값들의 가상 오버플로우 정보(즉 유효 비트 개수들의 분포)를 구하고 상기 가상 오버플로우 정보에 기초하여 고정 소수점 정책을 운용한다. 본 발명의 실시예들에 따라서 고정 소수점을 동적으로 운용하기 위한 하드웨어 자원(hardware resources) 및 계산량을 현저히 감소하여 효율적인 동적 고정 소수점 정책을 구현할 수 있다.
도 2는 본 발명의 실시예들에 따른 인공 신경망 시스템을 나타내는 블록도이다.
도 2를 참조하면, 인공 신경망 시스템(10)은 복수의 프로세서들(110), 작업 관리자(TKMNG)(120), 데이터 포맷 콘트롤러(DFCON)(130) 및 가상 오버플로우 검출 회로(VODET)(140)를 포함한다. 인공 신경망 시스템(10)은 스페셜 기능 레지스터(special function register; SFR)(150) 및 메모리(memory, MEM)(160)를 더 포함할 수 있다.
복수의 프로세서들(110)에 의해 인공 신경망 시스템(10)이 구동될 수 있다. 일 실시예에서, 도 2에 도시된 바와 같이, 복수의 프로세서들(110)은 이종의(heterogeneous) 프로세서들을 포함할 수도 있다. 실시예에 따라서, 복수의 프로세서들(110)은 적어도 2개 이상의 동종의 프로세서들을 포함할 수도 있다. 예를 들어, 영상 분류 서비스, 사용자 인증 서비스, 운전 보조 시스템 서비스 등과 같은 다양한 서비스(즉, 작업(TK) 또는 어플리케이션)이 복수의 프로세서들(110)에 의해 실행 및 처리될 수 있다.
작업(TK)은 복수의 연산(operation 또는 arithmetic operation)들 중 적어도 하나를 포함한다. 예를 들어, 작업(TK)은 영상 분류(image classify) 서비스, 생체 정보에 기초한 사용자 인증(authentication) 서비스, 운전 보조 시스템(advanced driver assistance system; ADAS) 서비스, 음성 보조(voice assistant) 서비스 등과 같은 어플리케이션(application)을 나타낼 수 있다. 예를 들어, 상기 복수의 연산들은 컨볼루션(convolution) 연산, 정정 선형 유닛(rectified linear unit; RELU) 연산 등과 같은 다양한 연산들을 포함할 수 있다.
복수의 프로세서들(110)은 중앙 처리 장치(central processing unit; CPU)(111), 그래픽 처리 장치(graphic processing unit; GPU)(112), 신경 처리 장치(neural processing unit; NPU)(113), 디지털 신호 프로세서(digital signal processor; DSP)(114), 영상 신호 프로세서(image signal processor; ISP)(115) 및 특정 작업 전용 하드웨어(dedicated hardware, DHW)(116)를 포함할 수 있다. 예를 들어, 특정 작업 전용 하드웨어(116)은 비전 처리 장치(vision processing unit; VPU), 비전 IP(vision intellectual property; VIP) 등을 포함할 수 있다. 프로세서는 프로세싱 소자(processing element; PE)라고 부를 수도 있다.
도 2에서는 복수의 프로세서들(110)의 예로서 연산 프로세서(computing resource)들만을 도시하였으나, 실시예에 따라서 복수의 프로세서들(110)은 메모리(160)에 대한 접근을 제어하는 DMA부(direct memory access), 다양한 내부 및/또는 외부 통신을 지원하는 통신(connectivity)부 등과 같은 통신 프로세서(communication resource)들을 더 포함할 수 있다.
작업 관리자(120)는 외부로부터 또는 사용자 구동에 의해 수행하고자 하는 작업(TK)을 수신하고, 수신된 작업(TK)을 스케줄링하여 복수의 프로세서들(110)에 할당한다. 구체적으로, 작업 관리자(120)는 작업(TK)에 포함되는 연산들을 복수의 프로세서들(110)에 할당하며, 작업(TK)에 포함되는 연산들의 순서 및 복수의 프로세서들(110) 중 작업(TK)에 포함되는 상기 연산들을 수행하는 프로세서들의 구동 순서를 포함하는 연산 처리 경로를 나타내는 경로 정보를 발생할 수 있다.
복수의 프로세서들(110) 중 적어도 하나의 프로세서는 인공 신경망의 하나의 레이어에 포함되는 복수의 노드들에 대한 노드 연산들을 수행하여 복수의 결과 값들을 발생하고, 상기 하나의 레이어에 대한 현재의 양자화(present quantization)를 위한 K번째(K는 1 이상의 자연수) 고정 소수점 포맷(FPFMT)에 기초하여 상기 복수의 결과 값들에 대한 양자화를 수행하여 복수의 양자화 값들을 발생할 수 있다. 즉 복수의 프로세서들(110) 중 적어도 하나는 도 1의 단계 S100 및 단계 S200을 수행할 수 있다.
가상 오버플로우 검출 회로(140)는 상기 복수의 양자화 값들의 유효 비트 개수들의 분포를 나타내는 가상 오버플로우 정보(VOINF)를 발생할 수 있다. 즉 가상 오버플로우 검출 회로(140)는 도 1의 단계 S300을 수행할 수 있다. 가상 오버플로우 검출 회로(140)는, 도 6 및 7을 참조하여 후술하는 바와 같이, 상기 유효 비트 개수들의 도수 값들(frequency values)을 각각 나타내는 복수의 카운트 신호들을 발생하고 상기 복수의 카운트 신호들을 상기 가상 오버플로우 정보로서 제공할 수 있다.
데이터 포맷 콘트롤러(130)는 가상 오버플로우 정보에 기초하여 상기 하나의 레이어에 대한 다음의 양자화(next quantization)를 위한 K+1번째 고정 소수점 포맷(FPFMT)을 결정할 수 있다. 즉 데이터 포맷 콘트롤러(130)는 도 1의 단계 400을 수행할 수 있다.
일 실시예에서, 데이터 포맷 콘트롤러(130)는 상기 결정된 K+1번째 고정 소수점 포맷(FPFMT)을 스페셜 기능 레지스터(150)에 제공하고, 스페셜 기능 레지스터(150)는 이미 저장되어 있는 상기 K번째 고정 소수점 포맷(FPFMT)을 상기 K+1번째고정 소수점 포맷(FPFMT)으로 갱신할 수 있다. 복수의 프로세서들(110)은 스페셜 기능 레지스터(150)로부터 제공되는 상기 동적으로 갱신되는 고정 소수점 포맷(FPFMT)을 이용하여 작업(TK)을 수행할 수 있다.
다른 실시예에서, 데이터 포맷 콘트롤러(130)는 상기 하나의 레이어에 대한 노드 연산들이 반복될 때마다 갱신되는 고정 소수점 포맷(FPFMT)을 복수의 프로세서들(110)에 직접 제공할 수 있다. 즉 상기 하나의 레이어에 대한 현재의 노드 연산들이 수행될 때에는 상기 K번째 고정 소수점 포맷(FPFMT)을 복수의 프로세서들(110)에 직접 제공하고, 상기 하나의 레이어에 대한 다음의 노드 연산들이 수행될 때에는 상기 K+1번째 고정 소수점 포맷(FPFMT)을 복수의 프로세서들(110)에 직접 제공할 수 있다. 복수의 프로세서들(110)은 데이터 포맷 콘트롤러(130)로부터 직접 제공되는 상기 동적으로 갱신되는 고정 소수점 포맷(FPFMT)을 이용하여 작업(TK)을 수행할 수 있다.
메모리(160)는 인공 신경망 시스템(10)에 의해 처리되는 다양한 데이터들을 저장할 수 있다. 실시예에 따라서, 메모리(160)는 DRAM, SDRAM, SRAM 등과 같은 휘발성 메모리, 및 플래시 메모리, PRAM, RRAM, NFGM, PoRAM, MRAM, FRAM 등과 같은 비휘발성 메모리 중 적어도 하나를 포함할 수 있다.
실시예에 따라서, 작업 관리자(120), 데이터 포맷 콘트롤러(130) 및 가상 오버플로우 검출 회로(140)의 일부 또는 전부는 하드웨어의 형태로 구현되거나, 소프트웨어(즉, 프로그램)의 형태로 구현되어 저장 장치에 저장될 수 있다.
도 2에서는 일부 구성요소들 간의 데이터/신호 전송 흐름만을 도시하였으나, 인공 신경망 시스템(10)에 포함되는 모든 구성요소들은 적어도 하나의 버스를 통해 연결될 수 있으며, 따라서 모든 구성요소들은 데이터/신호를 자유롭게 주고받을 수 있다.
또한, 도시하지는 않았으나, 인공 신경망 시스템(10)을 구현/구동하기 위한 소프트웨어적인 구성요소들을 더 포함할 수 있다. 예를 들어, 소프트웨어적인 구성요소들은 프레임워크(framework), 커널(kernel) 또는 장치 드라이버(device driver), 미들웨어(middleware), 어플리케이션 프로그래밍 인터페이스(application programming interface; API), 어플리케이션 프로그램(또는 어플리케이션) 등을 포함할 수 있다. 이러한 소프트웨어적인 구성요소들의 적어도 일부는 운영 체제(operating system OS)라고 부를 수 있다.
도 3a 및 3b는 본 발명의 실시예들에 따른 인공 신경망 시스템에 의해 구동되는 딥 러닝 신경망 구조의 예를 설명하기 위한 도면들이다.
도 3a를 참조하면, 일반적인 신경망의 네트워크 구조는 입력 레이어(IL), 복수의 히든 레이어들(HL1, HL2, ..., HLn) 및 출력 레이어(OL)를 포함할 수 있다.
입력 레이어(IL)는 i(i는 자연수)개의 입력 노드들(x1, x2, ..., xi)을 포함할 수 있고, 길이가 i인 벡터 입력 데이터(IDAT)가 각 입력 노드에 입력될 수 있다.
복수의 히든 레이어들(HL1, HL2, ..., HLn)은 n(n은 자연수)개의 히든 레이어들을 포함하며, 히든 노드들(h11, h12, h13, ..., h1m, h21, h22, h23, ..., h2m, hn1, hn2, hn3, ..., hnm)을 포함할 수 있다. 예를 들어, 히든 레이어(HL1)는 m(m은 자연수)개의 히든 노드들(h11, h12, h13, ..., h1m)을 포함할 수 있고, 히든 레이어(HL2)는 m개의 히든 노드들(h21, h22, h23, ..., h2m)을 포함할 수 있으며, 히든 레이어(HLn)는 m개의 히든 노드들(hn1, hn2, hn3, ..., hnm)을 포함할 수 있다.
출력 레이어(OL)는 분류할 클래스에 대응하는 j(j는 자연수)개의 출력 노드들(y1, y2, ..., yj)을 포함할 수 있고, 입력 데이터(IDAT)에 대하여 각 클래스 별로 결과(예를 들어, 점수 또는 class score)를 출력할 수 있다. 출력 레이어(OL)는 fully connected 레이어라고 부를 수 있으며, 예를 들어 입력 데이터(IDAT)가 자동차에 대응할 확률을 수치로 나타낼 수 있다.
도 3a에 도시된 네트워크 구조는, 두 개의 노드들 사이에 직선으로 도시된 노드들 간의 연결(branch)과, 도시되지는 않았지만 각 연결에서 사용되는 가중치(weight) 값들을 포함할 수 있다. 이 때, 하나의 레이어 내의 노드들 간에는 연결이 되지 않을 수 있고, 서로 다른 레이어들에 포함되는 노드들은 완전하게 혹은 부분적으로 연결될 수 있다.
도 3a의 각 노드(예를 들어, h11)는 이전 노드(예를 들어, x1)의 출력을 입력 받아 연산할 수 있고, 연산 결과를 이후 노드(예를 들어, h21)에 출력할 수 있다. 이 때, 각 노드는 입력된 값을 특정 함수, 예를 들어 비선형 함수에 적용하여 출력할 값을 연산할 수 있다.
일반적으로 신경망의 네트워크 구조는 미리 결정되어 있으며, 노드들 간의 연결에 따른 가중치들은 이미 어떤 클래스에 속할지 정답이 알려진 데이터를 이용하여 적절한 값을 산정할 수 있다. 이와같이 이미 정답이 알려진 데이터들을 '학습 데이터'라고 하고, 가중치를 결정하는 과정을 '학습'이라고 할 수 있다. 또한, 독립적으로 학습이 가능한 구조와 가중치의 묶음을 '모델'이라고 가정하고, 가중치가 결정된 모델이 입력 데이터가 어느 클래스에 속할지를 예측하여 그 예측값을 출력하는 것을'테스트' 과정이라고 한다.
한편, 도 3a에 도시된 일반적인 신경망은 각 노드(예를 들어, h11)가 앞쪽 레이어(previous layer)(예를 들어, IL)의 모든 노드들(예를 들어, x1, x2, ..., xi)과 연결되어 있어, 입력 데이터(IDAT)가 영상(또는 음성)인 경우에 영상의 크기가 증가할수록 필요한 가중치의 개수가 기하급수적으로 증가하며, 따라서 영상을 다루기에 적절하지 않을 수 있다. 이에 따라, 신경망에 필터 기술을 병합하여, 신경망이 2차원 영상을 잘 습득할 수 있도록 구현된 컨볼루션(convolutional) 신경망이 연구되고 있다.
도 3b를 참조하면, 컨볼루션 신경망의 네트워크 구조는 복수의 레이어들(CONV1, RELU1, CONV2, RELU2, POOL1, CONV3, RELU3, CONV4, RELU4, POOL2, CONV5, RELU5, CONV6, RELU6, POOL3, FC)을 포함할 수 있다.
일반적인 신경망과 다르게, 컨볼루션 신경망의 각 레이어는 가로(또는 폭, width), 세로(또는 높이, height), 깊이(depth)의 3개의 차원을 가질 수 있다. 이에 따라, 각 레이어에 입력되는 데이터 또한 가로, 세로, 깊이의 3개의 차원을 가지는 볼륨 데이터일 수 있다. 예를 들어, 도 3b에서 입력 영상이 가로 32, 세로 32의 크기를 가지고 세 개의 컬러 채널(R, G, B)을 가지는 경우에, 상기 입력 영상에 대응하는 입력 데이터(IDAT)는 32*32*3의 크기를 가질 수 있다. 도 3의 입력 데이터(IDAT)는 입력 볼륨 데이터 또는 입력 액티베이션 볼륨(activation volume)이라 부를 수 있다.
컨볼루션 레이어들(CONV1, CONV2, CONV3, CONV4, CONV5, CONV6)은 입력에 대한 컨볼루션 연산을 수행할 수 있다. 영상 처리에서 컨볼루션이란 가중치를 갖는 마스크를 이용하여 데이터를 처리하는 것을 의미할 수 있으며, 입력값과 마스크의 가중치를 곱한 후에 그 합을 출력 값으로 정하는 것을 나타낼 수 있다. 이 때, 마스크를 필터(filter), 윈도우(window) 또는 커널(kernel)이라고 부를 수 있다.
구체적으로, 각 컨볼루션 레이어의 파라미터들은 일련의 학습 가능한 필터들로 이루어져 있을 수 있다. 각 필터는 가로/세로 차원으로는 각 레이어의 전체 크기보다 작지만 깊이 차원으로는 각 레이어의 전체 깊이를 아우를 수 있다. 예를 들어, 각 필터를 입력 볼륨의 가로/세로 차원으로 슬라이딩(정확히는 convolve) 시키며 필터와 입력의 요소들 사이의 내적 연산(dot product)을 수행하여 2차원의 액티베이션 맵(activation map)을 생성할 수 있고, 이러한 액티베이션 맵을 깊이 차원을 따라 쌓아서 출력 볼륨을 생성할 수 있다. 예를 들어, 컨볼루션 레이어(CONV1)가 32*32*3의 크기의 입력 볼륨 데이터(IDAT)에 네 개의 필터들을 제로 패딩(zero-padding)과 함께 적용하면, 컨볼루션 레이어(CONV1)의 출력 볼륨은 32*32*12의 크기를 가질 수 있다(즉, 깊이 증가).
RELU 레이어들(RELU1, RELU2, RELU3, RELU4, RELU5, RELU6)은 입력에 대한 정정 선형 유닛 연산을 수행할 수 있다. 예를 들어, 정정 선형 유닛 연산은 max(0, x)와 같이 음수에 대해서만 0으로 처리하는 함수를 나타낼 수 있다. 예를 들어, RELU 레이어(RELU1)가 컨볼루션 레이어(CONV1)로부터 제공된 32*32*12의 크기의 입력 볼륨에 정정 선형 유닛 연산을 수행하면, RELU 레이어(RELU1)의 출력 볼륨은 32*32*12의 크기를 가질 수 있다(즉, 볼륨 유지).
풀링 레이어들(POOL1, POOL2, POOL3)은 입력 볼륨의 가로/세로 차원에 대해 다운 샘플링을 수행할 수 있다. 예를 들어, 2*2 필터를 적용하는 경우에 2*2 영역의 네 개의 입력들을 하나의 출력으로 변환할 수 있다. 구체적으로, 2*2 최대 값 풀링과 같이 2*2 영역의 네 개의 입력들 중 최대 값을 선택하거나, 2*2 평균 값 풀링과 같이 2*2 영역의 네 개의 입력들의 평균 값을 연산할 수 있다. 예를 들어, 풀링 레이어(POOL1)가 32*32*12의 크기의 입력 볼륨에 2*2 필터를 적용하면, 풀링 레이어(POOL1)의 출력 볼륨은 16*16*12의 크기를 가질 수 있다(즉, 가로/세로 감소, 깊이 유지, 볼륨 감소).
일반적으로 컨볼루션 신경망에서는 하나의 컨볼루션 레이어(예를 들어, CONV1)와 하나의 RELU 레이어(예를 들어, RELU1)가 한 쌍을 형성할 수 있고, 컨볼루션/RELU 레이어들의 쌍이 반복 배치될 수 있으며, 컨볼루션/RELU 레이어들의 쌍이 반복 배치되는 중간 중간에 풀링 레이어를 삽입함으로써, 영상을 줄여나가면서 영상의 특징을 추출할 수 있다.
출력 레이어 또는 fully connected 레이어(FC)는 입력 볼륨 데이터(IDAT)에 대하여 각 클래스 별로 결과를 출력할 수 있다. 예를 들어, 컨볼루션 및 서브 샘플링을 반복 수행함에 따라 2차원 영상에 대응하는 입력 볼륨 데이터(IDAT)가 1차원 행렬(또는 벡터)로 변환될 수 있다. 예를 들어, fully connected 레이어(FC)는 입력 볼륨 데이터(IDAT)가 자동차(CAR), 트럭(TRUCK), 비행기(AIRPLANE), 배(SHIP), 말(HORSE)에 대응할 확률을 수치로 나타낼 수 있다.
한편, 도시하지는 않았으나, 컨볼루션 신경망에 포함되는 레이어들의 종류 및 개수는 실시예에 따라서 다양하게 변경될 수 있다. 또한, 도시하지는 않았으나, 실시예에 따라서 컨볼루션 신경망은 예측된 결과인 점수(score) 값을 확률 값으로 변환하는 Softmax 레이어, 바이어스(bias)를 추가하는 Bias add 레이어 등을 더 포함할 수 있다.
이와 같이 딥 러닝 인공 신경망은 복수의 레이어들을 포함할 수 있고, 복수의 레이어들의 각각에 대하여 고정 소수점 포맷이 독립적으로 설정될 수 있다. 각각의 레이어에 포함되는 노드들은 모두 동일한 고정 소수점 포맷에 기초하여 양자화를 수행할 수 있다. 이와 같이, 인공 신경망이 복수의 레이어들을 포함하는 경우, 가상 오버플로우 검출 회로(140)는, 인공 신경망의 복수의 레이어들에 각각 상응하는 복수의 가상 오버플로우 정보들을 발생하고, 데이터 포맷 콘트롤러(130)는, 상기 복수의 가상 오버플로우 정보들에 기초하여 상기 복수의 레이어들의 각각에 대하여 다음의 양자화를 위한 상기 K+1번째 고정 소수점 포맷을 결정할 수 있다.
도 4는 본 발명의 실시예들에 따른 인공 신경망 시스템에 포함되는 프로세서의 일 실시예를 나타내는 블록도이다.
도 4를 참조하면, 프로세서(200)는 제어부(CTRL)(210), 로직부(LOG)(220), 임베디드 메모리(eMEM)(230), 입력 레지스터(REGI)(240), 가중 레지스터(REGW)(250) 및 결과 레지스터(260)를 포함할 수 있다. 도 4에는 편의상 인공 신경망의 노드 연산을 위한 구성 요소들만이 도시되어 있으며, 버스 등과 같은 일반적인 구성 요소들은 도시를 생략하였다.
제어부(210)는 프로세서(200)의 전반적인 동작을 제어한다. 제어부(210)는 인공 신경망의 구현을 위한 인스트럭션 및 데이터의 흐름을 제어할 수 있다. 임베디드 메모리(230)는 프로세서(200)의 인스트럭션 및 데이터를 저장할 수 있다. 노드 연산을 입력 데이터 및 가중 값은 입력 레지스터(240) 및 가중 레지스터(250)에 저장될 수 있다. 로직부(220)는 입력 레지스터(240) 및 가중 레지스터(250)에 저장된 입력 데이터 및 가중 값에 기초하여 노드 연산을 수행하고 결과 값을 결과 레지스터(260)에 저장할 수 있다. 입력 레지스터(240) 및 가중 레지스터(250)는 임베디드 메모리(230)보다 동작 속도가 빠른 메모리로 구현될 수 있고, 노드 연산을 위한 입력 데이터 및 가중 값이 임베디드 메모리(230)로부터 입력 레지스터(240) 및 가중 레지스터(250)로 로딩될 수 있다.
제어부(210)는 도 2의 데이터 포맷 콘트롤러(130) 또는 스페셜 기능 레지스터(150)로부터 수신되는 고정 소수점 포맷(FPFMT)에 기초하여 결과 레지스터(260)에 저장된 노드 연산의 결과 값에 대한 양자화를 수행할 수 있고 양자화 값(quantized value)은 임베디드 메모리(230)에 저장될 수 있다. 전술한 바와 같이, 본 발명의 실시예들에 따라서, 고정 소수점 포맷(FPFMT)은 동적으로 갱신될 수 있다.
도 5a 및 5b는 고정 소수점 포맷에 기초한 양자화를 설명하기 위한 도면들이다.
도 4 및 5a를 참조하면, 노드 연산의 결과 값(RVL)은 결과 레지스터(260)에 저장될 수 있고, 제어부(210)는 고정 소수점 포맷(FPFMT)에 기초하여 결과 레지스터(260)에 저장된 결과 값(RVL)에 대한 양자화를 수행하여 양자화 값(QVL)을 발생할 수 있다.
일반적으로 고정 소수점 포맷(FPFMT)은 Qm.n 노테이션(notation)으로 표현될 수 있다. Qm.n 노테이션에서 m은 정수 부분(IPRT)의 비트수를 나타내고 n은 소수 부분(FPRT)의 비트수를 나타낸다. 즉 Qm.n은 소수점 위치(radix point position)(RPP)를 기준으로 앞쪽에 m비트가 할당되고 뒤쪽에 n비트가 할당된 것을 나타낸다. 결과적으로 양자화 값(QVL)에 할당되는 전체 비트수에 상응하는 비트 폭(bit width)(BW)는 m+n이 되고 소수 부분의 비트수에 상응하는 분획 길이(fractional length)는 n이 된다.
도 5b에는 비트폭(BW)이 N인, 즉 N개의 비트들(B1~BN)을 포함하는 양자화 값(QVL)의 일 예가 도시되어 있다. 도 5b의 예에서 정수 부분의 비트수는 5이므로 고정 소수점 포맷은 Q5.N-5로 표현될 수 있다. 양자화 값(QVL)의 최상위 비트(BN)으로부터 연속적으로 0의 값을 갖는 3개의 비트들(BN, BN-1, BN-2)은 무효 비트들(invalid bits)에 해당한다. 최상위 비트(BN)로부터 처음으로 0이 아닌 비트(BN-3) 및 그 하위 비트들(B1~BN-4)은 유효 비트들(valid bits)에 해당한다. 결과적으로 도 5b의 양자화 값(QVL)에서 무효 비트 개수는 3이고 유효 비트 개수는 N-3이 된다.
본 발명의 실시예들에 따라서, 전술한 가상 오버플로우 검출 회로(140)는 하나의 레이어에 포함되는 복수의 노드들에 대한 복수의 양자화 값들의 유효 비트 개수들의 도수 값들(frequency values)을 검출하여 가상 오버플로우 정보(VOINF)로서 제공할 수 있다.
도 6은 하나의 레이어에 포함되는 복수의 노드들에 상응하는 복수의 양자화 값들의 일 예를 나타내는 도면이고, 도 7은 도 6의 양자화 값들의 유효 비트 개수들의 도수 분포를 나타내는 도면이다.
이하, 설명 및 도시의 편의상 하나의 레이어에 10개의 노드들이 포함되는 것으로 가정하지만, 이에 한정되는 것을 아니며, 하나의 레이어에 포함되는 노드들의 개수는 다양하게 결정될 수 있다. 도 6에 도시된 제1 내지 제10 양자화 값들(QVL1~QVL10)은 각각 제1 내지 제N 비트들(Q1~QN)을 포함한다.
도 6을 참조하면, 제1 양자화 값(QVL1)은 2개의 무효 비트들(QN, QN-1)을 포함하므로 제1 양자화 값(QVL1)의 유효 비트 개수(VBN)는 N-2가 되고, 제2 양자화 값(QVL2)은 6개의 무효 비트들(QN, QN-1, QN-2, QN3, QN4, QN-5, QN-6)을 포함하므로 제2 양자화 값(QVL2)의 유효 비트 개수(VBN)는 N-6이 되고, 제3 양자화 값(QVL2)은 5개의 무효 비트들(QN, QN-1, QN-2, QN3, QN4, QN-5)을 포함하므로 제3 양자화 값(QVL3)의 유효 비트 개수(VBN)는 N-5이 된다. 이와 같은 방식으로 도 6에 도시된 바와 같이 제1 내지 제10 양자화 값들(QVL1~QVL10)의 각각에 대하여 유효 비트 개수들(VBN)이 결정될 수 있다.
도 6에는 도시 및 설명의 편의상 유효 비트 개수들이 N개 및 N-6개 사이에 속하는 경우를 도시하였으나, 이에 한정되는 것은 아니며, 노드 연산의 결과에 따라서 양자화 값들의 유효 비트 개수들은 0개부터 N개 사이에서 다양하게 분포할 수 있다.
도 6의 양자화 값들(QVL1~QVL10)의 유효 비트 개수들(VBN)의 분포는 도 7의 도수 분포표와 같이 표현될 수 있다. 도수 분포표는 변량에 해당하는 유효 비트 개수(VBN) 및 이에 상응하는 도수 값(f(VBN))의 매핑 관계를 나타낸다. 도 7의 도수 분포표에 도시된 바와 같이, f(N)=f(N-3)=f(N-4)=f(N-5)=f(N-6)=1 이고, f(N-1)=2이고, f(N2)=3 이 되고, f(N-7)~f(0)=0 이고, 도수 값들의 총계(NT)는 10 이 된다.
이와 같이, 하나의 레이어에 포함되는 복수의 노드들에 상응하는 복수의 양자화 값들의 유효 비트 개수들(0~N)을 누적하여 도수 값들(f(0)~f(N))을 검출할 수 있다. 후술하는 바와 같이, 온도계 코드 발생 회로, 누적 회로 등의 하드웨어를 이용하여 이러한 도수 값들(f(0)~f(N))을 나타내는 복수의 카운트 신호들(SC(0)~SC(N))을 발생하고 복수의 카운트 신호들(SC(0)~SC(N))을 전술한 가상 오버플로우 정보(VOINF)로서 제공할 수 있다.
도 8은 본 발명의 실시예들에 따른 가상 오버플로우 검출 회로를 나타내는 도면이다.
도 8을 참조하면, 가상 오버플로우 검출 회로(300)는 온도계 코드 발생 회로(310), 누적 회로(320) 및 감산 회로(330)를 포함할 수 있다.
온도계 코드 발생 회로(310)는 각각의 양자화 값(QVLi)의 유효 비트들을 모두 1의 값으로 치환하여 각각의 온도계 코드(TCDi)를 발생할 수 있다. 온도계 코드 발생 회로(310)는 인공 신경망의 하나의 레이어에 포함되는 복수의 노드들에 상응하는 복수의 양자화 값들을 순차적으로 수신하고 상기 복수의 양자화 값들에 각각 상응하는 복수의 온도계 코드들을 순차적으로 발생할 수 있다.
일 실시예에서, 도 8에 도시된 바와 같이, 온도계 코드 발생 회로(310)는 복수의 논리합 게이트(OR)들(311~315)을 포함하여 구현될 수 있다.
복수의 논리합 게이트들(311~315)은 각각의 양자화 값(QVLi)의 인접한 2개의 비트 값들을 논리합 연산하여 온도계 코드(TCDi)를 발생한다. 예를 들어, 논리합 게이트(311)는 양자화 값(QVLi)의 제N 비트(QN) 및 제N-1 비트(QN-1)를 논리합 연산하여 온도계 코드(TCDi)의 제N-1 비트(TN-1)를 발생하고, 논리합 게이트(312)는 양자화 값(QVLi)의 제N-1 비트(QN-1) 및 제N-2 비트(QN-2)를 논리합 연산하여 온도계 코드(TCDi)의 제N-2 비트(TN-2)를 발생한다. 양자화 값(QVLi)의 최상위 비트에 해당하는 제N 비트(QN)는 온도계 코드(TCDi)의 최상위 코드에 상응하는 제N 비트(TN)로서 제공될 수 있다. 이와 같이, 복수의 논리합 게이트들(311~315)은 양자화 값(QVLi)의 제1 내지 제N 비트들(Q1~QN)에 기초하여 온도계 코드(TCDi)의 제1 내지 제N 비트들(T1~TN)을 발생할 수 있다.
누적 회로(320)는 순차적으로 수신되는 상기 복수의 온도계 코드들의 비트 값들을 비트 단위로 누적하여 복수의 누적 값들(ACC(1)~ACC(N))을 발생할 수 있다. 누적 회로(320)는 온도계 코드(TCDi)의 비트들(T1~TN)의 각각을 수신하는 복수의 누적기(AU)(321~326)들을 포함하여 구현될 수 있다. 복수의 누적기(AU)(321~326)들은 하나의 레이어에 포함되는 복수의 노드들에 상응하는 상기 복수의 온도계 코드들에 대한 누적이 완료된 후에 저장된 값들을 복수의 누적 값들(ACC(1)~ACC(N))로서 출력할 수 있다. 누적기(AU)의 일 실시예는 도 9를 참조하여 후술한다.
감산 회로(330)는 복수의 누적 값들(ACC(1)~ACC(N)) 중 인접한 2개의 누적 값들 사이의 감산을 수행하여 복수의 카운트 신호들(SC(1)~SC(N))을 발생할 수 있다. 복수의 카운트 신호들(SC(1)~SC(N))은 전술한 가상 오버플로우 정보(VOINF)로서 도 2의 데이터 포맷 콘트롤러(130)에 제공될 수 있다.
일 실시예에서 감산 회로(330)는 복수의 감산기들(331~335)을 포함하여 구현될 수 있다. 예를 들어, 감산기(331)는 제N-1 누적 값(ACC(N-1))에서 제N 누적 값(ACC(N))을 감산하여 제N-1 카운트 신호(SC(N-1))을 발생하고, 감산기(332)는 제N-2 누적 값(ACC(N-2))에서 제N-1 누적값(ACC(N-1))을 감산하여 제N-2 카운트 신호(SC(N-2))을 발생한다. 제N 누적 값(ACC(N))은 제N 카운트 신호(SC(N))로서 제공될 수 있다. 이와 같이, 복수의 감산기들(331~335)은 제1 내지 제N 누적 값들(ACC(1))~ACC(N))에 기초하여 제1 내지 제N 카운트 신호들(SC(1)~SC(N))을 발생할 수 있다.
도 9는 도 8의 가상 오버플로우 검출 회로에 포함되는 누적기의 일 실시예를 나타내는 도면이다.
도 9를 참조하면, 도 8의 누적 회로(320)에 포함되는 각각의 누적기(AU)는 덧셈기(ADDER)와 버퍼(BUFFER)를 포함하여 구현될 수 있고, 온도계 코드의 각각의 비트(Tj)를 누적하여 각각의 누적 값(ACC(j))를 제공할 수 있다. 버퍼는 리셋 신호(RST)에 응답하여 초기화될 수 있고, 하나의 레이어에 포함되는 복수의 노드들에 상응하는 복수의 온도계 코드들에 대한 누적이 완료된 후 활성화되는 출력 제어 신호(OUTEN)에 응답하여 저장된 값을 누적 값(ACC(j))로서 출력할 수 있다.
도 10 및 11은 도 8의 가상 오버플로우 검출 회로의 동작을 설명하기 위한 도면들이다.
도 10에는 도 6의 복수의 양자화 값들(QVL1~QVL10)에 상응하는 복수의 온도계 코드들(TCD1~TCD10)이 도시되어 있다.
도 8 및 10을 참조하면, 온도계 코드 발생 회로(310)는 도 6에 도시된 바와 같은 복수의 양자화 값들(QVL1~QVL10)을 순차적으로 수신하고 복수의 양자화 값들(QVL1~QVL10)에 각각 상응하는 복수의 온도계 코드들(TCD1~TCD10)을 순차적으로 발생할 수 있다. 도 10에 도시된 바와 같이, 복수의 온도계 코드들(TCD1~TCD10)의 무효 비트들은 모두 0의 값을 가지며 유효 비트들을 모두 1의 값을 갖는다.
도 11에는 도 10의 복수의 온도계 코드들(TCD1~TCD10)을 비트 단위로 누적한 복수의 누적 값들(ACC(1)~ACC(N))이 도시되어 있다. 전술한 바와 같이, 감산 회로(330)는 복수의 누적 값들(ACC(1)~ACC(N)) 중 인접한 2개의 누적 값들 사이의 감산을 수행하여 복수의 카운트 신호들(SC(1)~SC(N))을 발생할 수 있다. 결과적으로, 도 8의 가상 오버플로우 검출 회로(300)에 의해 발생되는 복수의 카운트 신호들(SC(1)~SC(N))은 도 7에 도시된 도수 값들(f(1)~f(N))과 일치함을 알 수 있다.
도 12는 도 8의 가상 오버플로우 검출 회로에 포함될 수 있는 제로 데이터 검출 회로의 일 실시예를 나타내는 도면이다.
도 12를 참조하면, 제로 데이터 검출 회로는 하나의 감산기를 포함하여 구현될 수 있다. 상기 감산기는 하나의 레이어에 포함되는 복수의 노드들의 전체 개수(NT)에서 전술한 제1 누적 값(ACC(1))을 감산하여 제로 데이터 카운트 신호(SC(0))를 발생할 수 있다. 복수의 노드들의 전체 개수(NT)는 양자화 값들의 전체 개수와 동일하며, 도 7을 참조하여 설명한 유효 비트 개수들의 도수 값들의 합(NT)과 동일하다.
제로 데이터는 모든 비트들이 0의 값을 갖는 양자화 값을 나타낸다. 제로 데이터에 상응하는 온도계 코드는 마찬가지로 모든 비트들이 0의 값을 가지므로 누적 회로(320)의 누적 값들(ACC(1)~ACC(N))에 전혀 기여를 하지 않는다. 한편, 제1 누적 값(ACC(1))은 적어도 하나의 유효 비트를 갖는 양자화 값들의 개수를 나타낸다. 결과적으로 양자화 값들의 전체 개수(NT)에서 적어도 하나의 유효 비트를 갖는 양자화 값들의 개수를 나타내는 제1 누적 값(ACC(1))을 감산함으로써 유효 비트의 개수가 0인, 즉 모든 비트들이 0의 값을 갖는 양자화 값들의 개수를 나타내는 제로 데이터 카운트 신호(SC(0))를 발생할 수 있다. 이러한 제로 데이터 카운트 신호(SC(0))는 가상 오버플로우 정보(VOINF)에 포함되어 도 2의 데이터 포맷 콘트롤러(130)에 제공될 수 있다.
도 8 내지 12를 참조하여 설명한 바와 같이, 가상 오버플로우 검출 회로(300)는, 복수의 양자화 값들에 각각 상응하는 복수의 온도계 코드들을 발생하고, 상기 복수의 온도계 코드들에 기초하여 가상 오버플로우 정보(VOINF)를 발생할 수 있다. 가상 오버플로우 검출 회로(300)는, 하나의 레이어에 포함되는 상기 유효 비트 개수들의 도수 값들(frequency values)을 각각 나타내는 복수의 카운트 신호들(SC(0)~SC(N))을 발생하고 복수의 카운트 신호들(SC(0)~SC(N))을 가상 오버플로우 정보(VOINF)로서 제공할 수 있다.
이와 같이, 본 발명의 실시예들에 따른 인공 신경망 시스템 및 인공 신경망의 고정 소수점 제어 방법은 가상 오버플로우 정보(VOINF)를 이용하여 고정 소수점 포맷(FPFMT)을 제어함으로써 오버플로우 및 언더플로우를 효율적으로 방지할 수 있고, 인공 신경망 시스템의 성능을 향상하고 전력 소모를 감소할 수 있다.
도 13은 본 발명의 실시예들에 따른 가상 오버플로우 검출 회로를 나타내는 도면이다.
도 13을 참조하면, 가상 오버플로우 검출 회로(400)는 온도계 코드 발생 회로(410), 카운트 코드 발생 회로(420) 및 누적 회로(430)를 포함할 수 있다.
온도계 코드 발생 회로(410)는 각각의 양자화 값(QVLi)의 유효 비트들을 모두 1의 값으로 치환하여 각각의 온도계 코드(TCDi)를 발생할 수 있다. 온도계 코드 발생 회로(410)는 인공 신경망의 하나의 레이어에 포함되는 복수의 노드들에 상응하는 복수의 양자화 값들을 순차적으로 수신하고 상기 복수의 양자화 값들에 각각 상응하는 복수의 온도계 코드들을 순차적으로 발생할 수 있다.
일 실시예에서, 도 13에 도시된 바와 같이, 온도계 코드 발생 회로(410)는 복수의 논리합 게이트들(411~415)을 포함하여 구현될 수 있다.
복수의 논리합 게이트들(411~415)은 양자화 값(QVLi)의 인접한 2개의 비트 값들을 논리합 연산하여 온도계 코드(TCDi)를 발생한다. 예를 들어, 논리합 게이트(411)는 양자화 값(QVLi)의 제N 비트(QN) 및 제N-1 비트(QN-1)를 논리합 연산하여 온도계 코드(TCDi)의 제N-1 비트(TN-1)를 발생하고, 논리합 게이트(412)는 양자화 값(QVLi)의 제N-1 비트(QN-1) 및 제N-2 비트(QN-2)를 논리합 연산하여 온도계 코드(TCDi)의 제N-2 비트(TN-2)를 발생한다. 양자화 값(QVLi)의 최상위 비트에 해당하는 제N 비트(QN)는 온도계 코드(TCDi)의 최상위 코드에 상응하는 제N 비트(TN)로서제공될 수 있다. 이와 같이, 복수의 논리합 게이트들(411~415)은 양자화 값(QVLi)의 제1 내지 제N 비트들(Q1~QN)에 기초하여 온도계 코드(TCDi)의 제1 내지 제N 비트들(T1~TN)을 발생할 수 있다.
카운트 코드 발생 회로(420)는 각각의 온도계 코드(QCDi)의 유효 비트들 중 최상위의 유효 비트만을 1로 유지하고 나머지 유효 비트들을 0으로 치환하여 각각의 카운트 코드(CCDi)를 발생할 수 있다. 카운트 코드 발생 회로(420)는 하나의 레이어에 포함되는 복수의 노드들에 상응하는 복수의 온도계 코드들을 순차적으로 수신하고 상기 복수의 온도계 코드들에 각각 상응하는 복수의 카운트 코드들을 순차적으로 발생할 수 있다.
일 실시예에서, 도 13에 도시된 바와 같이, 카운트 코드 발생 회로(420)는 복수의 배타적 논리합 게이트(XOR)들(421~425)을 포함하여 구현될 수 있다.
복수의 배타적 논리합 게이트들(421~425)은 각각의 온도계 코드(TCDi)의 인접한 2개의 비트 값들을 배타적 논리합 연산하여 각각의 온도계 코드(QCDi)에 상응하는 각각의 카운트 코드(CCDi)를 발생한다. 예를 들어, 배타적 논리합 게이트(421)은 온도계 코드(TCDi)의 제N 비트(TN) 및 제N-1 비트(TN-1)를 배타적 논리합 연산하여 카운트 코드(CCDi)의 제N-1비트(CN-1)를 발생하고, 배타적 논리합 게이트(422)은 온도계 코드(TCDi)의 제N-1 비트(TN-1) 및 제N-2 비트(TN-2)를 배타적 논리합 연산하여 카운트 코드(CCDi)의 제N-2비트(CN-2)를 발생한다. 온도계 코드(TCDi)의 최상위 비트에 해당하는 제N 비트(TN)는 카운트 코드(CCDi)의 최상위 코드에 상응하는 제N 비트(CN)로서 제공될 수 있다. 이와 같이, 복수의 배타적 논리합 게이트들(421~425)은 온도계 코드(TCDi)의 제1 내지 제N 비트들(T1~TN)에 기초하여 카운트 코드(CCDi)의 제1 내지 제N 비트들(C1~CN)을 발생할 수 있다.
누적 회로(430)는 순차적으로 수신되는 상기 복수의 카운트 코드들의 비트 값들을 비트 단위로 누적하여 복수의 카운트 신호들(SC1~SCN)을 발생할 수 있다. 누적 회로(430)는 카운트 코드(CCDi)의 비트들(C1~CN)의 각각을 수신하는 복수의 누적기(AU)(431~436)들을 포함하여 구현될 수 있다. 복수의 누적기(431~436)들은 하나의 레이어에 포함되는 복수의 노드들에 상응하는 상기 복수의 카운트 코드들에 대한 누적이 완료된 후에 저장된 값들을 복수의 누적 값들(ACC(1)~ACC(N))로서 출력할 수 있다. 누적기(AU)의 일 실시예는 도 9를 참조하여 전술한 바와 같다.
도 14는 도 13의 가상 오버플로우 검출 회로의 동작을 설명하기 위한 도면이다.
도 14에는 도 6의 복수의 양자화 값들(QVL1~QVL10) 및 도 10의 복수의 온도계 코드들(TCD1~TCD10)에 상응하는 복수의 카운트 코드들(CCD1~CCD10)이 도시되어 있다.
도 13 및 14를 참조하면, 카운트 코드 발생 회로(420)는 복수의 온도계 코드들(TCD1~TCD10)을 순차적으로 수신하고 복수의 온도계 코드들(TCD1~TCD10)에 각각 상응하는 복수의 카운트 코드들(CCD1~CCD10)을 각각 순차적으로 발생할 수 있다. 도 14에 도시된 바와 같이, 복수의 카운트 코드들(CCD1~CCD10)의 무효 비트들은 모두 0의 값을 가지며, 최상위의 유효 비트들은 1의 값을 가지며, 나머지 유효 비트들은 모두 0의 값을 갖는다.
도 14의 하부에는 누적 회로(430)가 복수의 카운트 코드들(CCD1~CCD10)을 비트 단위로 누적(bitwise accumulation)하여 발생하는 복수의 카운트 신호들(SC1~SCN)이 도시되어 있다. 결과적으로, 도 13의 가상 오버플로우 검출 회로(400)에 의해 발생되는 복수의 카운트 신호들(SC(1)~SC(N))은 도 7에 도시된 도수 값들(f(1)~f(N))과 일치함을 알 수 있다.
도 13 및 14를 참조하여 설명한 바와 같이, 가상 오버플로우 검출 회로(400)는, 복수의 양자화 값들에 각각 상응하는 복수의 온도계 코드들을 발생하고, 상기 복수의 온도계 코드들에 기초하여 가상 오버플로우 정보(VOINF)를 발생할 수 있다. 가상 오버플로우 검출 회로(400)는, 하나의 레이어에 포함되는 상기 유효 비트 개수들의 도수 값들(frequency values)을 각각 나타내는 복수의 카운트 신호들(SC(0)~SC(N))을 발생하고 복수의 카운트 신호들(SC(0)~SC(N))을 가상 오버플로우 정보(VOINF)로서 제공할 수 있다.
이와 같이, 본 발명의 실시예들에 따른 인공 신경망 시스템 및 인공 신경망의 고정 소수점 제어 방법은 가상 오버플로우 정보(VOINF)를 이용하여 고정 소수점 포맷(FPFMT)을 제어함으로써 오버플로우 및 언더플로우를 효율적으로 방지할 수 있고, 인공 신경망 시스템의 성능을 향상하고 전력 소모를 감소할 수 있다.
도 15는 본 발명의 실시예들에 따른 가상 오버플로우 검출 회로를 나타내는 도면이다.
도 15를 참조하면, 가상 오버플로우 검출 회로(500)는 멀티플렉서(MUX)(510), 제1 검출 회로(DET1)(520) 및 제2 검출 회로(DET2)(530)를 포함하여 구현될 수 있다.
멀티플렉서(510)는 하나의 레이어에 포함되는 복수의 양자화 값들을 순차적으로 수신하고 각각의 양자화 값(QVLi)에 포함되는 부호 비트(QS)에 기초하여 상기 복수의 양자화 값들을 양의 양자화 값들(PQVL)및 음의 양자화 값들(NQVL)로 구분하여 출력한다.
제1 검출 회로(520)는 양의 양자화 값들(PQVL)의 유효 비트 개수들의 도수 값들을 각각 나타내는 양의 카운트 신호들(PSC(1)~PSC(N)))을 발생할 수 있다. 제2 검출 회로(530)는 음의 양자화 값들(NQVL)의 유효 비트 개수들의 도수 값들을 각각 나타내는 음의 카운트 신호들(NSC(1)~NSC(N)))을 발생한다. 제1 검출 회로(520) 및 제2 검출 회로(530)의 각각은 도 8 내지 14를 참조하여 설명한 바와 같은 가상 오버플로우 검출 회로의 구성을 가질 수 있다.
결과적으로, 도 15의 가상 오버플로우 검출 회로(500)는 복수의 양의 양자화 값들(PQVL)에 대한 유효 비트 개수들의 도수 값들을 각각 나타내는 복수의 양의 카운트 신호들(PSC(1)~PSC(N))을 발생하고, 복수의 음의 양자화 값들(NQVL)에 대한 유효 비트 개수들의 도수 값들을 각각 나타내는 복수의 음의 카운트 신호들(NSC(1)~NSC(N))을 발생할 수 있다. 복수의 양의 카운트 신호들(PSC(1)~PSC(N)) 및 복수의 음의 카운트 신호들(NSC(1)~NSC(N))은 전술한 가상 오버플로우 정보(VOINF)로서 제공될 수 있다. 한편, 도 12를 참조하여 설명한 바와 같은 제로 데이터 카운트 신호(SC(0))도 가상 오버플로우 정보(VOINF)에 포함될 수 있다.
본 발명의 실시예들에 따라서, 전술한 가상 오버플로우 정보에 기초하여 상기 복수의 양자화 값들이 오버플로우 근접 상태(overflow proximity state) 또는 언더플로우 근접 상태(underflow proximity state)에 있는지를 판단할 수 있다. 일 실시예에서, 도 16을 참조하여 후술하는 바와 같이, 하나의 레이어에 포함되는 복수의 노드들에 상응하는 복수의 양자화 값들의 최대 유효 비트 개수(N)의 도수 값(f(N))에 기초하여 상기 복수의 양자화 값들이 오버플로우 근접 상태 또는 언더플로우 근접 상태에 있는지를 판단할 수 있다.
도 16은 본 발명의 실시예들에 따른 고정 소수점 포맷 제어 방법을 나타내는 순서도이다.
도 16을 참조하면, 하나의 레이어에 포함되는 복수의 노드들에 상응하는 복수의 양자화 값들의 최대 유효 비트 개수(N)의 도수 값(f(N))을 획득한다(단계 S510). 최대 유효 비트 개수(N)는 상기 복수의 양자화 값들의 비트 폭(bit width) 또는 자리수에 상응한다.
최대 유효 비트 개수(N)의 도수 값(f(N))에 기초하여 상기 복수의 양자화 값들이 오버플로우 근접 상태 또는 언더플로우 근접 상태에 있는지를 판단할 수 있다. 일 실시예에서, 최대 유효 비트 개수(N)의 도수 값(f(N))의 유효 비트 개수들(0~N)의 도수 값들(f(0)~f(N))의 합(NT)에 대한 비율(f(N)/NT)을 오버플로우 기준 비율(RH) 또는 언더플로우 기준 비율(RL)과 비교함으로써 상기 복수의 양자화 값들이 상기 오버플로우 근접 상태 또는 상기 언더플로우 근접 상태에 있다고 판단할 수 있다.
최대 유효 비트 개수(N)의 도수 값(f(N))의 도수 값들의 합(NT)에 대한 비율(f(N)/NT)이 오버플로우 기준 비율(RH)보다 큰 경우(단계 S520: YES), 양자화를 위한 고정 소수점 포맷의 분획 길이(FL)를 감소한다(단계 S540). 분획 길이(FL)의 감소에 대해서는 도 17a 및 17b를 참조하여 후술한다.
최대 유효 비트 개수(N)의 도수 값(f(N))의 도수 값들의 합(NT)에 대한 비율(f(N)/NT)이 언더플로우 기준 비율(RL)보다 작은 경우(단계 S530: YES), 양자화를 위한 고정 소수점 포맷의 분획 길이(FL)를 증가한다(단계 S550). 분획 길이(FL)의 증가에 대해서는 도 18a 및 18b를 참조하여 후술한다.
최대 유효 비트 개수(N)의 도수 값(f(N))의 도수 값들의 합(NT)에 대한 비율(f(N)/NT)이 오버플로우 기준 비율(RH) 이하이고(단계 S520: NO), 언더플로우 기준 비율(RL) 이상인 경우(단계 S530: NO), 양자화를 위한 고정 소수점 포맷의 분획 길이(FL)를 유지한다(단계 S560).
도 17a 및 17b는 본 발명의 일 실시예에 따른 오버플로우 방지 방법을 설명하기 위한 도면들이다.
도 2 및 17a를 참조하면, 데이터 포맷 콘트롤러(130)는 하나의 레이어에 포함되는 복수의 노드들에 상응하는 복수의 양자화 값들의 유효 비트 개수들(0~N) 중 최대 유효 비트 개수(N)의 도수 값(f(N))의 유효 비트 개수들(0~N)의 도수 값들(f(0)~f(N))의 합(N)에 대한 비율(f(N)/NT)이 오버플로우 기준 비율(RH)보다 큰 경우, 상기 복수의 양자화 값들이 상기 오버플로우 근접 상태에 있다고 판단할 수 있다. 여기서 상기 오버플로우 근접 상태라 함은 상기 하나의 레이어에 대한 다음의 노드 연산들에서 오버플로우가 발생할 개연성이 상당히 높은 상태를 나타낸다.
도 17b에는 하나의 레이어에 대한 현재의 양자를 위한 K번째 고정 소수점 포맷(Qm.n)에 기초한 양자화 값(QVL(K)) 및 상기 하나의 레이어에 대한 다음의 양자를 위한 K+1번째 고정 소수점 포맷(Qm+1.n-1)에 기초한 양자화 값(QVL(K+1))이 도시되어 있다.
도 17b를 참조하면, K번째 고정 소수점 포맷(Qm.n)은 소수점 위치(RPP(K))를 기준으로 m비트의 정수 부분(IPRT)과 n비트의 소수 부분(FPRT)을 포함할 수 있다. K+1번째 고정 소수점 포맷(Qm+1.n-1)은 소수점 위치(RPP(K+1))를 기준으로 m+1비트의 정수 부분(IPRT)과 n-1비트의 소수 부분(FPRT)을 포함할 수 있다. 즉, K번째 고정 소수점 포맷(Qm.n)의 분획 길이(FL(K))는 n 이고, K+번째 고정 소수점 포맷(Qm+1.n-1)의 분획 길이(FL(K+1))는 n-1 이다.
이와 같이, 데이터 포맷 콘트롤러(130)는 상기 복수의 양자화 값들이 도 17a를 참조하여 설명한 바와 같은 상기 오버플로우 근접 상태에 있다고 판단한 경우, K+1번째 고정 소수점 포맷(Qm+1.n-1)의 분획 길이(FL(K+1)=n-1)를 K번째 고정 소수점 포맷(Qm.n)의 분획 길이(FL(K)=n)보다 감소시킬 수 있다. K번째 노드 연산의 결과가 오버플로우 근접 상태에 있는 것으로 판단된 경우 K+1째 노드 연산 결과에 대한 분획 길이를 감소함으로써 수치 분해능을 감소하면서 오버플로우를 방지할 수 있다.
도 18a 및 18b는 본 발명의 일 실시예에 따른 언더플로우 방지 방법을 설명하기 위한 도면들이다.
도 2 및 18a를 참조하면, 데이터 포맷 콘트롤러(130)는 하나의 레이어에 포함되는 복수의 노드들에 상응하는 복수의 양자화 값들의 유효 비트 개수들(0~N) 중 최대 유효 비트 개수(N)의 도수 값(f(N))의 유효 비트 개수들(0~N)의 도수 값들(f(0)~f(N))의 합(N)에 대한 비율(f(N)/NT)이 언더플로우 기준 비율(RL)보다 작은 경우, 상기 복수의 양자화 값들이 상기 언더플로우 근접 상태에 있다고 판단할 수 있다. 여기서 상기 언더플로우 근접 상태라 함은 상기 하나의 레이어에 대한 다음의 노드 연산들에서 언더플로우가 발생할 개연성이 상당히 높은 상태를 나타낸다.
도 18b에는 하나의 레이어에 대한 현재의 양자를 위한 K번째 고정 소수점 포맷(Qm.n)에 기초한 양자화 값(QVL(K)) 및 상기 하나의 레이어에 대한 다음의 양자를 위한 K+1번째 고정 소수점 포맷(Qm+1.n-1)에 기초한 양자화 값(QVL(K+1))이 도시되어 있다.
도 18b를 참조하면, K번째 고정 소수점 포맷(Qm.n)은 소수점 위치(RPP(K))를 기준으로 m비트의 정수 부분(IPRT)과 n비트의 소수 부분(FPRT)을 포함할 수 있다. K+1번째 고정 소수점 포맷(Qm-1.n+1)은 소수점 위치(RPP(K+1))를 기준으로 m-1비트의 정수 부분(IPRT)과 n+1비트의 소수 부분(FPRT)을 포함할 수 있다. 즉, K번째 고정 소수점 포맷(Qm.n)의 분획 길이(FL(K))는 n 이고, K+번째 고정 소수점 포맷(Qm-1.n+1)의 분획 길이(FL(K+1))는 n+1 이다.
이와 같이, 데이터 포맷 콘트롤러(130)는 상기 복수의 양자화 값들이 도 18a를 참조하여 설명한 바와 같은 상기 언더플로우 근접 상태에 있다고 판단한 경우, K+1번째 고정 소수점 포맷(Qm-1.n+1)의 분획 길이(FL(K+1)=n+1)를 K번째 고정 소수점 포맷(Qm.n)의 분획 길이(FL(K)=n)보다 증가시킬 수 있다. K번째 노드 연산의 결과가 언더플로우 근접 상태에 있는 것으로 판단된 경우 K+1째 노드 연산 결과에 대한 분획 길이를 증가함으로써 수치 분해능을 증가하면서 언더플로우를 방지할 수 있다.
도 19는 양자화 값들의 유효 비트 개수들의 분포의 일 예를 나타내는 도면이다.
도 19를 참조하면, 양자화 값들의 유효 비트 개수들(VBN)의 도수 값들(f(VBN))은 정규 분포에 근접할 수 있다. 이 경우, 도 2의 데이터 포맷 콘트롤러(130)는, 유효 비트 개수들(VBN)의 평균(M) 및 분산(σ2)을 계산하고, 평균(M) 및 분산(σ2)에 기초하여 다음의 양자화를 위한 K+1번째 고정 소수점 포맷의 분획 길이(fractional length)를 결정할 수 있다.
도 19에는 일 예로서 유효 비트 개수들(VBN)의 도수 값들(f(VBN))이 정규 분포에 근접하는 예를 도시하였으나 본 발명의 실시예들이 이에 한정되는 것은 아니다. 예를 들어, 컨볼류션 신경망(CNN, convolutional neural network)에서 확인된 바와 같이 유효 비트 개수들(VBN)의 도수 값들(f(VBN))은 싱글-엔디드 감마 분포(single-ended gamma distribution)에 근접할 수 있다. 이 경우, 감마 분포의 평균 및 분산에 기초하여 스텝 사이즈를 계산하고 상기 스텝 사이즈에 기초하여 최종적인 분획 길이를 결정할 수 있다.
도 20은 본 발명의 실시예들에 따른 인공 신경망 시스템을 나타내는 블록도이다.
도 20을 참조하면, 인공 신경망 시스템은 제1 전자 기기(1101) 및 제2 전자 기기(1201)를 포함한다. 제1 및 제2 전자 기기들(1101, 1201)에 의해 딥 러닝 시스템이 구동될 수 있다.
제1 전자 기기(1101)는 복수의 이종 프로세서들(1110), 작업 관리자(TKMNG)(1120), 데이터 포맷 콘트롤러(DFCON)(1130), 가상 오버플로우 검출 회로(VODET)(1140), 스페셜 기능 레지스터(SFR)(1150) 및 메모리(MEM)(1160)를 포함할 수 있다. 제2 전자 기기(1201)는 복수의 이종 프로세서들(1210), 작업 관리자(1220), 데이터 포맷 콘트롤러(1230), 가상 오버플로우 검출 회로(1240), 스페셜 기능 레지스터(1250) 및 메모리(1260)를 포함할 수 있다. 복수의 이종 프로세서들(1110, 1210)은 중앙 처리 장치들(1111, 1211), 그래픽 처리 장치들(1112, 1212), 신경 처리 장치들(1113, 1213), 디지털 신호 프로세서들(1114, 1214), 영상 신호 프로세서들(1115, 1215) 및 특정 작업 전용 하드웨어들(1116, 1216)을 포함할 수 있다.
복수의 이종 프로세서들(1110, 1210), 작업 관리자들(1120, 1220), 데이터 포맷 콘트롤러들(1130, 1230), 가상 오버플로우 검출 회로들(1140, 1240), 스페셜 기능 레지스터들(1150, 1250) 및 메모리들(1160, 1260)은 각각 도 2 내지 19를 참조하여 설명한 바와 같다.
일 실시예에서, 복수의 이종 프로세서들(1110, 1210) 중 일부(1111, 1112, 1113, 1114, 1115, 1116)는 제1 전자 기기(1101)에 포함될 수 있고, 복수의 이종 프로세서들(1110, 1210) 중 다른 일부(1211, 1212, 1213, 1214, 1215, 1216)는 제2 전자 기기(1201)에 포함될 수 있다. 제1 전자기기(1101)는 사용자 경험(user experience)이 직접적으로 수행되는 전자 기기일 수 있다. 제2 전자 기기(1201)는 제1 전자 기기(1101)와 물리적으로 분리되며, 제1 전자 기기(1101)와 연동하여 동작할 수 있다.
일 실시예에서, 제1 전자 기기(1101)는 개인용 컴퓨터(personal computer; PC), 노트북(laptop), 휴대폰(mobile phone), 스마트 폰(smart phone), 태블릿(tablet) PC, PDA(personal digital assistant), PMP(portable multimedia player), 디지털 카메라(digital camera), 캠코더(camcoder), 음악 재생기(music player), 휴대용 게임 콘솔(portable game console), 네비게이션(navigation), 웨어러블(wearable) 기기, 가상 현실(virtual reality; VR) 기기, 증강 현실(augmented reality; AR) 기기 등과 같은 임의의 컴퓨팅 기기 및/또는 모바일 기기일 수 있다.
일 실시예에서, 제2 전자 기기(1201)는 제1 전자기기(1101)와 연동하여 동작하는 임의의 컴퓨팅 기기 및/또는 모바일 기기일 수 있다. 예를 들어, 제2 전자 기기(1201)는 웨어러블(wearable) 기기(예를 들어, 스마트 워치(smart watch))와 같이 제1 전자기기(1101)에 종속하여 동작하는 컴패니언 기기일 수 있다. 다른 예에서, 제2 전자기기(1201)는 사물 인터넷(internet of things: IoT) 기기, 만물 인터넷(internet of everything: IoE) 기기 등을 제어하는 홈 게이트웨이(home gateway)와 같은 내부 서버(in-house server), 또는 클라우드 서버(cloud server)와 같은 외부 서버(outside server)일 수 있다.
본 발명의 실시예들은 인공 신경망 및/또는 머신 러닝이 구현될 수 있는 다양한 장치 및 시스템에 적용될 수 있다. 예를 들어, 본 발명은 컴퓨터, 노트북, 핸드폰, 스마트폰, MP3 플레이어, PDA, PMP, 디지털 TV, 디지털 카메라, 휴대용 게임 콘솔, 네비게이션 기기, 웨어러블 기기, 사물 인터넷 기기, VR 기기, AR 기기 등과 같은 다양한 전자 기기에 유용하게 적용될 수 있다.
상기에서는 본 발명이 바람직한 실시예를 참조하여 설명하였지만, 해당 기술분야의 숙련된 당업자는 하기의 특허청구범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 것이다.

Claims (20)

  1. 인공 신경망의 하나의 레이어에 포함되는 복수의 노드들에 대한 노드 연산들을 수행하여 복수의 결과 값들을 발생하고, 상기 하나의 레이어에 대한 현재의 양자화를 위한 K번째(K는 1 이상의 자연수) 고정 소수점 포맷에 기초하여 상기 복수의 결과 값들에 대한 양자화를 수행하여 복수의 양자화 값들을 발생하는 프로세서
    상기 복수의 양자화 값들의 유효 비트 개수들의 분포를 나타내는 가상 오버플로우 정보를 발생하는 가상 오버플로우 검출 회로 및
    상기 가상 오버플로우 정보에 기초하여 상기 하나의 레이어에 대한 다음의 양자화를 위한 K+1번째 고정 소수점 포맷을 결정하는 데이터 포맷 콘트롤러를 포함하는 인공 신경망 시스템.
  2. 제1 항에 있어서,
    상기 가상 오버플로우 검출 회로는,
    상기 복수의 양자화 값들에 각각 상응하는 복수의 온도계 코드들을 발생하고, 상기 복수의 온도계 코드들에 기초하여 상기 가상 오버플로우 정보를 발생하는 것을 특징으로 하는 인공 신경망 시스템.
  3. 제1 항에 있어서,
    상기 가상 오버플로우 검출 회로는,
    상기 유효 비트 개수들의 도수 값들(frequency values)을 각각 나타내는 복수의 카운트 신호들을 발생하고 상기 복수의 카운트 신호들을 상기 가상 오버플로우 정보로서 제공하는 것을 특징으로 하는 인공 신경망 시스템.
  4. 제1 항에 있어서,
    상기 데이터 포맷 콘트롤러는,
    상기 유효 비트 개수들의 평균 및 분산을 계산하고, 상기 평균 및 상기 분산에 기초하여 상기 K+1번째 고정 소수점 포맷의 분획 길이(fractional length)를 결정하는 것을 특징으로 하는 인공 신경망 시스템.
  5. 제1 항에 있어서,
    상기 데이터 포맷 콘트롤러는,
    상기 가상 오버플로우 정보에 기초하여 상기 복수의 양자화 값들이 오버플로우 근접 상태 또는 언더플로우 근접 상태에 있는지를 판단하는 것을 특징으로 하는 인공 신경망 시스템.
  6. 제5 항에 있어서,
    상기 데이터 포맷 콘트롤러는,
    상기 복수의 양자화 값들이 상기 오버플로우 근접 상태에 있다고 판단한 경우, 상기 K+1번째 고정 소수점 포맷의 분획 길이를 상기 K번째 고정 소수점 포맷의 분획 길이보다 감소시키는 것을 특징으로 하는 인공 신경망 시스템.
  7. 제5 항에 있어서,
    상기 데이터 포맷 콘트롤러는,
    상기 복수의 양자화 값들이 상기 언더플로우 근접 상태에 있다고 판단한 경우, 상기 K+1번째 고정 소수점 포맷의 분획 길이를 상기 K번째 고정 소수점 포맷의 분획 길이보다 증가시키는 것을 특징으로 하는 인공 신경망 시스템.
  8. 제5 항에 있어서,
    상기 데이터 포맷 콘트롤러는,
    상기 유효 비트 개수들 중 최대 유효 비트 개수의 도수 값의 상기 유효 비트 개수들의 도수 값들의 합에 대한 비율이 오버플로우 기준 비율보다 큰 경우 상기 복수의 양자화 값들이 상기 오버플로우 근접 상태에 있다고 판단하는 것을 특징으로 하는 인공 신경망 시스템.
  9. 제5 항에 있어서,
    상기 데이터 포맷 콘트롤러는,
    상기 유효 비트 개수들 중 최대 유효 비트 개수의 도수 값의 상기 유효 비트 개수들의 도수 값들의 합에 대한 비율이 언더플로우 기준 비율보다 작은 경우 상기 복수의 양자화 값들이 언더플로우 근접 상태에 있다고 판단하는 것을 특징으로 하는 인공 신경망 시스템.
  10. 제1 항에 있어서,
    상기 가상 오버플로우 검출 회로는,
    상기 복수의 양자화 값들을 순차적으로 수신하고 각각의 양자화 값의 유효 비트들을 모두 1의 값으로 치환하여 상기 복수의 양자화 값들에 상응하는 복수의 온도계 코드들을 순차적으로 발생하는 온도계 코드 발생 회로를 포함하는 것을 특징으로 하는 인공 신경망 시스템.
  11. 제10 항에 있어서,
    상기 온도계 코드 발생 회로는,
    상기 각각의 양자화 값의 인접한 2개의 비트 값들을 논리합 연산하여 상기 각각의 온도계 코드를 발생하는 복수의 논리합 게이트들을 포함하는 것을 특징으로 하는 인공 신경망 시스템.
  12. 제10 항에 있어서,
    상기 가상 오버플로우 검출 회로는,
    순차적으로 수신되는 상기 복수의 온도계 코드들의 비트 값들을 비트 단위로 누적하여 복수의 누적 값들을 발생하는 누적 회로 및
    상기 복수의 누적 값들 중 인접한 2개의 누적 값들 사이의 감산을 수행하여 복수의 카운트 신호들을 발생하고 상기 복수의 카운트 신호들을 상기 가상 오버플로우 정보로서 제공하는 감산 회로를 더 포함하는 것을 특징으로 하는 인공 신경망 시스템.
  13. 제10 항에 있어서,
    상기 가상 오버플로우 검출 회로는,
    상기 복수의 온도계 코드들을 순차적으로 수신하고 각각의 온도계 코드의 유효 비트들 중 최상위의 유효 비트만을 1로 유지하고 나머지 유효 비트들을 0으로 치환하여 상기 복수의 온도계 코드들에 각각 상응하는 복수의 카운트 코드들을 순차적으로 발생하는 카운트 코드 발생 회로 및
    순차적으로 수신되는 상기 복수의 카운트 코드들의 비트 값들을 비트 단위로 누적하여 복수의 카운트 신호들을 발생하고 상기 복수의 카운트 신호들을 상기 가상 오버플로우 정보로서 제공하는 누적 회로를 더 포함하는 것을 특징으로 하는 인공 신경망 시스템.
  14. 제13 항에 있어서,
    상기 카운트 코드 발생 회로는,
    상기 각각의 온도계 코드의 인접한 2개의 비트 값들을 배타적 논리합 연산하여 상기 각각의 온도계 코드에 상응하는 각각의 카운트 코드를 발생하는 복수의 배타적 논리합 게이트들을 포함하는 것을 특징으로 하는 인공 신경망 시스템.
  15. 제1 항에 있어서,
    상기 가상 오버플로우 검출 회로는,
    상기 복수의 양자화 값들을 순차적으로 수신하고 각각의 양자화 값에 포함되는 부호 비트에 기초하여 상기 복수의 양자화 값들을 양의 양자화 값들 및 음의 양자화 값들로 구분하여 출력하는 멀티플렉서
    상기 양의 양자화 값들의 유효 비트 개수들의 도수 값들을 각각 나타내는 양의 카운트 신호들을 발생하는 제1 검출 회로 및
    상기 음의 양자화 값들의 유효 비트 개수들의 도수 값들을 각각 나타내는 음의 카운트 신호들을 발생하는 제2 검출 회로를 포함하는 것을 특징으로 하는 인공 신경망 시스템.
  16. 제1 항에 있어서,
    상기 가상 오버플로우 검출 회로는, 상기 인공 신경망의 복수의 레이어들에 각각 상응하는 복수의 가상 오버플로우 정보들을 발생하고,
    상기 데이터 포맷 콘트롤러는, 상기 복수의 가상 오버플로우 정보들에 기초하여 상기 복수의 레이어들의 각각에 대하여 다음의 양자화를 위한 상기 K+1번째 고정 소수점 포맷을 결정하는 것을 특징으로 하는 인공 신경망 시스템.
  17. 고정 소수점 포맷에 기초하여 양자화를 수행하여 발생되는 복수의 양자화 값들에 상응하는 복수의 온도계 코드들을 발생하고, 상기 복수의 온도계 코드들에 기초하여 상기 복수의 양자화 값들의 유효 비트 개수들의 분포를 나타내는 가상 오버플로우 정보를 발생하는 가상 오버플로우 검출 회로 및
    상기 가상 오버플로우 정보에 기초하여 상기 고정 소수점 포맷을 갱신하는 데이터 포맷 콘트롤러를 포함하는 인공 신경망 시스템.
  18. 인공 신경망의 하나의 레이어에 포함되는 복수의 노드들에 대한 노드 연산들을 수행하여 복수의 결과 값들을 발생하는 단계
    상기 하나의 레이어에 대한 현재의 양자화를 위한 K번째(K는 1 이상의 자연수) 고정 소수점 포맷에 기초하여 상기 복수의 결과 값들에 대한 양자화를 수행하여 복수의 양자화 값들을 발생하는 단계
    상기 복수의 양자화 값들의 유효 비트 개수들의 분포를 나타내는 가상 오버플로우 정보를 발생하는 단계 및
    상기 가상 오버플로우 정보에 기초하여 상기 하나의 레이어에 대한 다음의 양자화를 위한 K+1번째 고정 소수점 포맷을 결정하는 단계를 포함하는 인공 신경망의 고정 소수점 포맷의 제어 방법.
  19. 제18 항에 있어서,
    상기 가상 오버플로우 정보를 발생하는 단계는,
    상기 복수의 양자화 값들에 각각 상응하는 복수의 온도계 코드들을 발생하는 단계
    상기 복수의 온도계 코드들에 기초하여 상기 유효 비트 개수들의 도수 값들(frequency values)을 각각 나타내는 복수의 카운트 신호들을 발생하는 단계 및
    상기 복수의 카운트 신호들을 상기 가상 오버플로우 정보로서 제공하는 단계를 포함하는 것을 특징으로 하는 인공 신경망의 고정 소수점 포맷의 제어 방법.
  20. 제18 항에 있어서,
    상기 다음의 양자화를 위한 K+1번째 고정 소수점 포맷을 결정하는 단계는,
    상기 가상 오버플로우 정보에 기초하여 상기 복수의 양자화 값들이 오버플로우 근접 상태 또는 언더플로우 근접 상태에 있는지를 판단하는 단계를 포함하는 것을 특징으로 하는 인공 신경망의 고정 소수점 포맷의 제어 방법.
KR1020180104403A 2018-09-03 2018-09-03 인공 신경망 시스템 및 인공 신경망의 고정 소수점 제어 방법 KR20200026455A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020180104403A KR20200026455A (ko) 2018-09-03 2018-09-03 인공 신경망 시스템 및 인공 신경망의 고정 소수점 제어 방법
US16/367,662 US11775807B2 (en) 2018-09-03 2019-03-28 Artificial neural network and method of controlling fixed point in the same
CN201910534156.0A CN110874628A (zh) 2018-09-03 2019-06-19 人工神经网络及其中控制定点的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180104403A KR20200026455A (ko) 2018-09-03 2018-09-03 인공 신경망 시스템 및 인공 신경망의 고정 소수점 제어 방법

Publications (1)

Publication Number Publication Date
KR20200026455A true KR20200026455A (ko) 2020-03-11

Family

ID=69641379

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180104403A KR20200026455A (ko) 2018-09-03 2018-09-03 인공 신경망 시스템 및 인공 신경망의 고정 소수점 제어 방법

Country Status (3)

Country Link
US (1) US11775807B2 (ko)
KR (1) KR20200026455A (ko)
CN (1) CN110874628A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220100440A (ko) * 2021-01-08 2022-07-15 한국과학기술원 저비트 정밀도 심층신경망 학습 장치 및 그 방법
KR20220125116A (ko) * 2021-03-04 2022-09-14 삼성전자주식회사 뉴럴 프로세서 및 뉴럴 프로세서의 제어 방법

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11663464B2 (en) * 2018-09-20 2023-05-30 Kneron (Taiwan) Co., Ltd. Deep neural network with low-precision dynamic fixed-point in reconfigurable hardware design
CN109359732B (zh) * 2018-09-30 2020-06-09 阿里巴巴集团控股有限公司 一种芯片及基于其的数据处理方法
US20230308467A1 (en) * 2022-03-24 2023-09-28 At&T Intellectual Property I, L.P. Home Gateway Monitoring for Vulnerable Home Internet of Things Devices
TWI846454B (zh) * 2023-04-28 2024-06-21 緯創資通股份有限公司 用於深度學習網路的優化方法及運算系統

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4945494A (en) * 1989-03-02 1990-07-31 Texas Instruments Incorporated Neural network and system
US6879971B1 (en) * 1995-12-22 2005-04-12 Pavilion Technologies, Inc. Automated method for building a model
CN101373957B (zh) * 2007-08-24 2010-08-25 锐迪科创微电子(北京)有限公司 数字增益控制方法及电路
WO2016039651A1 (en) 2014-09-09 2016-03-17 Intel Corporation Improved fixed point integer implementations for neural networks
US20170061279A1 (en) 2015-01-14 2017-03-02 Intel Corporation Updating an artificial neural network using flexible fixed point representation
US10373050B2 (en) * 2015-05-08 2019-08-06 Qualcomm Incorporated Fixed point neural network based on floating point neural network quantization
US20160328645A1 (en) 2015-05-08 2016-11-10 Qualcomm Incorporated Reduced computational complexity for fixed point neural network
KR101644039B1 (ko) 2015-06-11 2016-07-29 에스케이텔레콤 주식회사 고정소수점 연산 방법 및 고정소수점 연산 장치
US20170083813A1 (en) * 2015-09-23 2017-03-23 Charles Augustine Electronic neural network circuit having a resistance based learning rule circuit
CN105512724B (zh) * 2015-12-01 2017-05-10 中国科学院计算技术研究所 加法器装置、数据累加方法及数据处理装置
GB201607713D0 (en) 2016-05-03 2016-06-15 Imagination Tech Ltd Convolutional neural network
CN107688855B (zh) * 2016-08-12 2021-04-13 赛灵思公司 针对于复杂神经网络的分层量化方法与装置
US10643124B2 (en) 2016-08-12 2020-05-05 Beijing Deephi Intelligent Technology Co., Ltd. Method and device for quantizing complex artificial neural network
CN108345939B (zh) * 2017-01-25 2022-05-24 微软技术许可有限责任公司 基于定点运算的神经网络
US10491239B1 (en) * 2017-02-02 2019-11-26 Habana Labs Ltd. Large-scale computations using an adaptive numerical format
US10650303B2 (en) 2017-02-14 2020-05-12 Google Llc Implementing neural networks in fixed point arithmetic computing systems
CN107844322B (zh) * 2017-07-20 2020-08-04 上海寒武纪信息科技有限公司 用于执行人工神经网络正向运算的装置和方法
CN107862374B (zh) * 2017-10-30 2020-07-31 中国科学院计算技术研究所 基于流水线的神经网络处理系统和处理方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220100440A (ko) * 2021-01-08 2022-07-15 한국과학기술원 저비트 정밀도 심층신경망 학습 장치 및 그 방법
KR20220125116A (ko) * 2021-03-04 2022-09-14 삼성전자주식회사 뉴럴 프로세서 및 뉴럴 프로세서의 제어 방법

Also Published As

Publication number Publication date
CN110874628A (zh) 2020-03-10
US20200074285A1 (en) 2020-03-05
US11775807B2 (en) 2023-10-03

Similar Documents

Publication Publication Date Title
KR20200026455A (ko) 인공 신경망 시스템 및 인공 신경망의 고정 소수점 제어 방법
US20210004663A1 (en) Neural network device and method of quantizing parameters of neural network
US20240104378A1 (en) Dynamic quantization of neural networks
US11580719B2 (en) Dynamic quantization for deep neural network inference system and method
US11928595B2 (en) Method of managing data representation for deep learning, method of processing data for deep learning and deep learning system performing the same
US9411726B2 (en) Low power computation architecture
TWI818944B (zh) 神經網路處理單元及系統晶片
JP2020009444A (ja) ニューラルネットワークにおいてパラメータを処理する方法及び装置
CN112085186A (zh) 一种神经网络的量化参数确定方法及相关产品
CN114341892A (zh) 具有用于高效参数更新的降低精度参数分量的机器学习硬件
KR20190098671A (ko) 뉴럴 네트워크의 고속 처리 방법 및 그 방법을 이용한 장치
CN111767986A (zh) 一种基于神经网络的运算方法及装置
KR20190140841A (ko) 확률 적응적 자원 할당을 통한 신경망 하드웨어 가속
WO2022163861A1 (ja) ニューラルネットワーク生成装置、ニューラルネットワーク演算装置、エッジデバイス、ニューラルネットワーク制御方法およびソフトウェア生成プログラム
WO2021081854A1 (zh) 一种卷积运算电路和卷积运算方法
KR102478256B1 (ko) 랭크 오더 코딩 기반 스파이킹 cnn 연산 방법 및 그 처리기
CN112561050B (zh) 一种神经网络模型训练方法及装置
WO2020041934A1 (zh) 一种数据处理设备以及一种数据处理方法
CN113570053A (zh) 一种神经网络模型的训练方法、装置以及计算设备
CN110852202A (zh) 一种视频分割方法及装置、计算设备、存储介质
WO2022230906A1 (ja) ニューラルネットワーク生成装置、ニューラルネットワーク演算装置、エッジデバイス、ニューラルネットワーク制御方法およびソフトウェア生成プログラム
US11586895B1 (en) Recursive neural network using random access memory
US20240256901A1 (en) Information processing apparatus, information processing method and non-transitory computer-readable storage medium
CN110020723B (zh) 神经网络处理单元及包括该神经网络处理单元的片上系统
CN116384445A (zh) 神经网络模型的处理方法和相关装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal