KR20200139909A - 전자 장치 및 그의 연산 수행 방법 - Google Patents

전자 장치 및 그의 연산 수행 방법 Download PDF

Info

Publication number
KR20200139909A
KR20200139909A KR1020190066396A KR20190066396A KR20200139909A KR 20200139909 A KR20200139909 A KR 20200139909A KR 1020190066396 A KR1020190066396 A KR 1020190066396A KR 20190066396 A KR20190066396 A KR 20190066396A KR 20200139909 A KR20200139909 A KR 20200139909A
Authority
KR
South Korea
Prior art keywords
neural network
data
network model
electronic device
perform
Prior art date
Application number
KR1020190066396A
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 KR1020190066396A priority Critical patent/KR20200139909A/ko
Priority to PCT/KR2020/006411 priority patent/WO2020246724A1/en
Priority to EP20819392.0A priority patent/EP3908985A4/en
Priority to US16/876,688 priority patent/US11734577B2/en
Priority to CN202010493206.8A priority patent/CN112052943A/zh
Publication of KR20200139909A publication Critical patent/KR20200139909A/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/10Interfaces, programming languages or software development kits, e.g. for simulating neural 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
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Neurology (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • User Interface Of Digital Computer (AREA)
  • Power Sources (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Image Analysis (AREA)

Abstract

전자 장치가 인공 신경망 모델의 연산을 수행하는 방법이 개시된다. 상기 연산 방법은, 신경망 모델의 연산에 이용되는, 서로 다른 각각의 중요도를 갖는 복수 개의 데이터들이 메모리에 저장된 상태에서, 상기 전자 장치의 하드웨어에 관한 자원 정보를 획득하고, 상기 획득된 자원 정보에 기반하여, 상기 복수 개의 데이터들 각각의 중요도에 따라 상기 복수 개의 데이터들 중에서 상기 신경망 모델의 연산에 이용될 일부 데이터를 결정하고, 상기 결정된 일부 데이터를 이용하여, 상기 신경망 모델의 연산을 수행하는 동작을 포함한다.

Description

전자 장치 및 그의 연산 수행 방법{ELECTRONIC APPARATUS AND METHOD OF PERFORMING OPERATIONS THEREOF}
본 개시는 전자 장치 및 전자 장치의 연산 수행 방법으로서, 상세하게는 인공 신경망 모델의 연산을 수행하는 방법에 관한 것이다.
최근, 인공지능 모델(예: 딥러닝 모델)을 하드웨어를 이용하여 구현하는 연구가 계속되고 있다. 하드웨어를 이용하여 구현하는 경우, 인공지능 모델의 연산 속도를 크게 향상시키고, 기존에 메모리 사이즈 또는 응답 시간의 한계 때문에 이용하기 어려웠던 다양한 딥러닝 모델의 이용이 가능할 수 있다.
한편, 하드웨어 구현 관점에서 인공지능 모델의 성능을 지속적으로 향상시키기 위한 알고리즘들이 제안되고 있다. 예로, 연산 지연 및 전력 소모량을 줄이기 위하여 연산 데이터 량을 줄이는 데이터 양자화 기술이 있을 수 있다.
데이터 양자화는, 예로, 매트릭스의 파라미터를 표현하는 정보량을 줄이는 방법으로, 실수 데이터를 이진 데이터와 계수 인자(scaling factor)로 분해하여 근사 값으로 표현할 수 있다. 양자화된 데이터는 원래 데이터의 정밀도(precision)에는 미치지 못하기 때문에, 양자화된 데이터를 이용하는 인공지능 모델의 추론의 정확도는 원래 인공지능 모델의 추론의 정확도 보다 낮을 수 있다. 그러나, 제한된 하드웨어의 상황을 고려할 때 어느 정도의 양자화는 메모리의 사용량이나 컴퓨팅 자원의 소모를 절약할 수 있기 때문에, 온 디바이스(on-device) 인공지능 분야에서 활발히 연구되고 있다.
본 개시는 상술한 필요성에 따른 것으로, 본 개시의 목적은 인공지능 모델의 데이터 용량을 줄이면서, 인공지능 모델의 성능 저하를 최소화시키는 전자 장치 및 이의 인공지능 모델의 연산 수행 방법을 제공함에 있다.
일 실시예에 따른, 전자 장치가 인공 신경망 모델의 연산을 수행하는 방법은, 신경망 모델의 연산에 이용되는, 서로 다른 각각의 중요도를 갖는 복수 개의 데이터들이 메모리에 저장된 상태에서, 상기 전자 장치의 하드웨어에 관한 자원 정보를 획득하는 동작, 상기 획득된 자원 정보에 기반하여, 상기 복수 개의 데이터들 각각의 중요도에 따라 상기 복수 개의 데이터들 중에서 상기 신경망 모델의 연산에 이용될 일부 데이터를 결정하는 동작, 및 상기 결정된 일부 데이터를 이용하여, 상기 신경망 모델의 연산을 수행하는 동작을 포함한다.
일 실시예에 따른, 전자 장치는, 서로 다른 각각의 중요도를 갖는 복수 개의 데이터들을 저장 중인 메모리, 및 상기 전자 장치의 하드웨어에 관한 자원 정보 기반하여, 상기 메모리에 저장 중인 상기 복수 개의 데이터들 각각의 중요도에 따라 상기 복수 개의 데이터들 중에서 상기 신경망 모델의 연산에 이용할 일부 데이터를 결정하고, 상기 결정된 일부 데이터를 이용하여 상기 신경망 모델의 연산을 수행하는 프로세서를 포함한다.
본 개시에 따르면, 제한된 하드웨어의 요구 사항에 따라 유동적으로 신경망 모델에 이용되는 데이터의 양을 조절하는 것이 가능해진다. 예로, 본 개시에 따르면 레이턴시 측면, 전력 소모 측면 또는 사용자 측면 중 적어도 하나에서 향상된 효과를 기대할 수 있다.
레이턴시 측면에서는, 신경망 모델의 실행 요청 시간을 고려하여 중요도가 낮은 이진 데이터는 제외하고 중요도가 높은 이진 데이터만 선택적으로 신경망 모델의 연산에 이용하여, 최소한의 정확도 감소로써 상기 요청 사항을 만족시키는 것이 가능할 수 있다.
또한, 전력 소모 측면에서는, 하드웨어 조건을 고려하여 전자 장치의 배터리 잔여 량이 낮다고 판단되는 경우에는 신경망 모델이 최소한의 성능으로 동작하도록 데이터의 양을 제어하여, 전자 장치의 전반적인 구동 시간을 연장할 수 있다.
또한, 사용자(또는, 개발자) 측면에서는, 기존에는 전자 장치에 탑재되는 인공 지능 어플리케이션들의 연산량 및 기타 제약 사항들을 고려하여, 신경망 모델에 이용되는 최적의 데이터의 양을 고민할 필요가 있었다. 그러나, 본 개시에 따르면, 하드웨어 조건에 기반하여, 레이턴시와 전력 소모량을 고려한 적절한 데이터 양의 조절이 가능하여, 일정 수준 이상의 인공지능 모델의 추론 정확도를 유지하면서, 신경망 모델을 효과적으로 실행하는 것이 가능하게 된다.
또한, 본 개시에 따르면, 하드웨어 자원이 한정된 상황에서, 신경망 모델이 실행되지 않거나, 레이턴시가 늦어지는 문제가 극복이 가능하다. 즉, 하드웨어의 자원을 고려하여 데이터 양이 유동적인 조절이 가능하여, 데이터 양이 많아지더라도 레이턴시가 일정 수준을 이상을 나타내고, 신경망 모델이 중단 없이 동작될 수 있다.
도 1는, 일 실시 예에 따른 전자 장치의 구성을 나타내는 블록도이다.
도 2는, 일 실시예에 따른 일 연산기를 포함하는 신경망 연산에 필요한 구성을 나타내는 블록도이다.
도 3은, 일 실시예에 따른 스케쥴러에서 수행되는 스케쥴링 신택스의 일 예를 나타낸다.
도 4는, 일 실시예에 따른 복수 개의 연산기들을 포함하는 신경망 연산에 필요한 구성을 나타내는 블록도이다.
도 5는, 일 실시예에 따른 양자화된 파라미터 값들이 비트 순서 별로 메모리에 저장되는 과정을 나타내는 도면이다.
도 6은, 일 실시예에 따른 양자화된 파라미터 값들이 비트 순서 별로 메모리에 저장된 상태를 나타내는 도면이다.
도 7은, 일 실시예에 따른 전자 장치의 연산 수행 방법을 나타내는 흐름도이다.
도 8은, 일 실시 예에 따른 전자 장치의 세부 구성을 나타내는 블록도이다.
이하에서, 첨부된 도면을 이용하여 본 개시의 다양한 실시 예들에 대하여 구체적으로 설명한다.
도 1은 본 개시의 일 실시 예에 따른 전자 장치(100)의 구성을 나타내는 블록도이다. 도 1에 도시된 바와 같이, 전자 장치(100)는 메모리(110) 및 프로세서(120)를 포함한다.
전자 장치(100)는 서버, 데스크탑 PC, 노트북, 스마트폰, 태블릿 PC 등일 수 있다. 또는, 전자 장치(100)는 인공지능 모델을 이용하는 장치로서, 청소 로봇, 웨어러블 장치, 가전 장치, 의료 장치, IoT(Internet of Things) 장치 또는 자율주행 자동차일 수 있다.
도 1의 메모리(110)는 서로 다른 각각의 중요도를 갖는 복수 개의 데이터들을 저장할 수 있다. 서로 다른 각각의 중요도를 갖는 복수 개의 데이터들은, 예로, 신경망 모델의 연산에 이용되는 양자화된 매트릭스의 파라미터 값을 포함할 수 있다. 이 경우, 신경망 모델의 연산에 이용되는 매트릭스가 복수 개가 존재하는 경우, 전자 장치(100)는 양자화된 복수 개의 매트릭스 각각에 대하여 서로 다른 각각의 중요도를 갖는 파라미터 값을 포함할 수 있다.
다른 실시예로, 서로 다른 각각의 중요도를 갖는 복수 개의 데이터들은, 일 신경망 모델의 연산에 이용되는 서로 다른 각각의 중요도를 갖는 복수 개의 신경망 레이어들이 될 수 있다.
또 다른 실시예로, 서로 다른 중요도를 갖는 복수 개의 데이터들은 양자화되기 전의 매트릭스의 파라미터 값일 수도 있다. 이 경우, 매트릭스의 파라미터 값은 서로 다른 각각의 중요도를 갖는 이진 데이터들로 구성되어, 예로, 비트 순서에 따라 중요도가 상승할 수 있다.
복수 개의 데이터들이, 양자화된 매트릭스의 파라미터 값인 경우, 상기 파라미터 값을 획득하기 위하여 수행되는 매트릭스의 양자화 과정은, 전자 장치(100)에 의하여 수행될 수 있으나, 또는, 외부 장치에서 수행되어 양자화된 매트릭스의 파라미터 값이 메모리(110)에 기 저장될 수도 있다.
매트릭스의 파라미터 값이 양자화되는 경우, Full-precision 값의 매트릭스의 파라미터 값은 k 개의 이진 데이터(또는, 양자화 비트)(예: +1 및 -1) bi 와 스케일링 계수 인자 αi 값으로 변환될 수 있다. 양자화된 매트릭스의 파라미터 값을 이용하여 신경망 모델의 연산을 수행하는 경우, 신경망 레이어 간 인퍼런스(inference) 시의 메모리 사용량과 컴퓨터 사용량은 줄어드나 추론의 정확도가 떨어질 수 있다.
이에, 추론의 정확도를 높이기 위한 다양한 양자화 알고리즘들이 이용될 수 있다.
예로, k 개의 비트 개수를 갖도록 w 매트릭스의 파라미터 값을 양자화하는 경우, [수학식 1]의 조건을 만족하는 다양한 알고리즘이 이용될 수 있다.
[수학식 1]
Figure pat00001
[수학식 1]의 조건을 만족하기 위하여, 일 예로, 교차 알고리즘(예: 다중 비트 교차(alternating multi-bit) 알고리즘) 등이 이용될 수 있다. 교차 알고리즘은 이진 데이터 및 계수 인자를 반복적으로 업데이트하면서 [수학식 1]이 최소가 되는 값을 찾아가는 알고리즘이다. 예로, 교차 알고리즘에서는, 업데이트된 계수 인자에 기반하여, 이진 데이터를 다시 계산하여 업데이트하고, 업데이트된 이진 데이터에 기반하여 계수 인자를 다시 계산하여 업데이트할 수 있다. 이 과정은, 오차 값이 일정 값 이하가 될 때까지 반복될 수 있다.
교차 알고리즘은 높은 정확도를 보장할 수 있으나, 이진 데이터 및 계수 인자를 업데이트하기 위하여, 많은 양의 컴퓨팅 자원 및 연산 시간을 요구할 수 있다. 특히, 교차 알고리즘에서는 파라미터 값이 k 개의 비트로 양자화된 경우, k 비트 모두가 유사한 중요도를 가지기 때문에, k 개의 비트를 모두 이용하여 신경망 모델의 연산을 수행해야 정확한 추론이 가능할 수 있다.
다시 말해, 일부 비트를 누락하고 신경망 모델의 연산을 수행하는 경우에는, 신경망 연산의 정확도가 하락할 수 있다. 예로, 전자 장치(100)의 자원이 한정된 환경(예로, 온 디바이스 인공지능 칩 환경)에서, 전자 장치(100)의 자원을 고려하여 일부 비트만을 이용하여 신경망 모델의 연산을 수행하는 경우에는 신경망 연산의 정확도가 하락할 수 있다.
이에 따라, 한정된 하드웨어 자원을 대상으로 유연하게 대응이 가능한 알고리즘이 요구될 수 있다. 예로, 매트릭스 파라미터 값의 양자화를 위하여 이진 데이터의 비트 별로 서로 다른 중요도를 갖도록 양자화하는 그리드(greedy) 알고리즘이 이용될 수 있다.
그리드 알고리즘을 이용하여 매트릭스의 파라미터 값을 k 개의 비트로 양자화하는 경우, 전술한 [수학식 1]에서 k 개의 비트의 첫 번째 이진 데이터 및 계수 인자는, [수학식 2]를 이용하여 계산될 수 있다.
[수학식 2]
Figure pat00002
다음으로 i (1 < i ≤ k) 번째 비트들은, 원본 파라미터 값과 첫 번째 양자화된 값과의 차이인 r 을 대상으로 [수학식 3]과 같이 동일한 계산을 반복할 수 있다. 즉, (i - 1) 비트를 계산하고 남은 나머지(residues) 값을 이용하여 i 번째 비트를 계산하여, k 개의 비트를 갖는 양자화된 매트릭스의 파라미터 값을 획득할 수 있다.
[수학식 3]
Figure pat00003
이에 따라, k 개의 비트를 갖는 양자화된 매트릭스의 파라미터 값이 획득될 수 있다.
그밖에, 매트릭스의 원본 파라미터 값과 양자화된 파라미터 값 간의 오차를 더욱 최소화하기 위하여, 그리드 알고리즘에 기반한 개선 그리드(refined greedy) 알고리즘이 이용될 수 있다. 개선 그리드 알고리즘은 그리드를 통하여 결정된 벡터 b를 이용하여 계수 인자를 [수학식 4]와 같이 업데이트할 수 있다.
[수학식 4]
Figure pat00004
그리드 알고리즘(또는, 개선 그리드 알고리즘)을 이용하는 경우, 비트의 순서가 높아질수록 계수 인자의 값이 작아짐에 따라 비트의 중요도가 하락하기 때문에, 높은 비트 순서를 갖는 비트를 대상으로 연산을 생략하여도 신경망 추론에 영향이 적을 수가 있다. 한편, 신경망 모델에서는 추론의 정확도를 향상하기 위하여 파라미터 값의 약 10%에 의도적으로 노이즈를 가하는 방식이 이용되기도 한다. 이 경우, 그리드 알고리즘으로 양자화된 이진 데이터의 일부 비트를 생략하여 연산을 수행하여도, 일률적으로 신경망 추론의 정확도가 떨어진다고 보기는 어렵고, 오히려, 신경망 추론의 정확도가 오히려 향상되는 상황이 발생될 수도 있다.
서로 다른 중요도를 갖는 비트들을 포함하도록 매트릭스의 파라미터 값을 양자화하는 경우, 주어진 컴퓨팅 자원의 요구 사항(예: 소모 전력, 연산 시간)을 고려한 적응적인 신경망 모델의 연산이 가능하게 된다. 즉, 다양한 신경망 모델 별로 중요도에 따라 신경망 모델의 성능을 조절하는 것이 가능하게 된다.
또한, 신경망 모델 별 최적의 양자화 비트 개수를 고려하는 수고를 할 필요 없이, 어느 정도 양자화된 매트릭스를 탑재한 후에, 필요 조건 또는 제약 조건에 따라 유동적으로 신경망 모델에 적용할 양자화 비트 개수를 조절하는 것이 가능하게 된다. 신경망 모델 별 최적의 실행 조건을 찾는데 요구되는 개발 비용 또한 절감될 수 있다.
도 1의 프로세서(120)는 전자 장치(100)의 동작을 전반적으로 제어할 수 있다. 프로세서(120)는 범용 프로세서(예: CPU 또는 application processor), 그래픽 전용 프로세서(예: GPU), 또는 프로세싱이 수행되는 SoC(System on Chip)(예: 온 디바이스 인공 지능 칩(On-device AI Chip)), LSI(large scale integration) 또는 FPGA(Field Programmable gate array)가 될 수 있다. 또한, 프로세서(120)는 중앙처리장치(central processing unit(CPU)), MCU(Micro Controller Unit), MPU(micro processing unit), 컨트롤러(controller), 어플리케이션 프로세서(application processor(AP)), 또는 커뮤니케이션 프로세서(communication processor(CP)), ARM 프로세서 중 하나 또는 그 이상을 포함하거나, 해당 용어로 정의될 수 있다.
프로세서(120)는, 메모리(110)에 서로 다른 각각의 중요도를 갖는 복수 개의 데이터들을 저장 중인 상태에서, 전자 장치(100)의 하드웨어에 관한 자원 정보 기반하여, 메모리(110)에 저장 중인 복수 개의 데이터들 각각의 중요도에 따라 복수 개의 데이터들 중에서 신경망 모델의 연산에 이용할 일부 데이터를 결정할 수 있다. 예로, 복수 개의 데이터들이 양자화된 매트릭스의 파라미터 값으로서 이진 데이터들을 포함하는 경우, 프로세서(100)는 복수 개의 데이터들 중에서 신경망 모델의 연산에 이용될 이진 데이터의 개수를 결정할 수 있다. 이때, 이진 데이터들은 비트 순서가 증가할수록 중요도는 하락할 수 있다.
신경망 모델의 연산에 이용할 일부 데이터를 결정되면, 프로세서(120)는 결정된 일부 데이터를 이용하여 신경망 모델의 연산을 수행할 수 있다. 예로, 프로세서(120)는 입력 값과 상기 이진 데이터들의 각 비트를 대상으로 매트릭스 연산을 수행하고, 각 비트 별 연산 결과를 합산하여 출력 값을 획득할 수 있다. 또한, 복수 개의 신경망 연산기들이 존재하는 경우, 프로세서(120)는 이진 데이터들의 각 비트의 순서에 기반하여, 복수 개의 신경망 연산기들을 이용한 매트릭스 병렬 연산을 수행할 수 있다.
이하, 본 개시의 일 실시 예에 따른 전자 장치(100)의 상세 구성은 도 8을. 통하여 추가로 설명된다.
도 2는, 본 개시의 실시예에 따른 일 연산기를 포함하는 신경망 연산에 필요한 구성을 나타내는 블록도이다.
도 2의 블록도가 포함되는 전자 장치(100)는, 예로, 하드웨어를 이용하여 신경망 추론을 수행하는 온 디바이스 인공 지능 칩을 포함할 수 있다.
하드웨어를 이용한 신경망 추론에 이용되는 매트릭스의 파라미터 값은, 중요한 이진 데이터들을 선택적으로 이용할 수 있도록, 예로, 그리드 알고리즘을 이용하여 양자화된 상태일 수 있다. 상기 양자화된 파라미터 값인 이진 데이터들은 비트 순서가 증가할 수록 중요도가 감소될 수 있다.
도 2에서, 전자 장치(100)는 스케쥴러(scheduler)(210), 적응 제어부(adaptive controller)(220), 메모리 제어부(Direct Memory Access Controller, DMAC)(230), 연산기(processing unit) (240) 및 누산기(accumulator)(250)를 포함할 수 있다. 스케쥴러(210), 적응 제어부(220), 메모리 제어부(230), 연산기(240) 또는 누산기(250) 중 적어도 하나는 소프트웨어 또는 하드웨어 형태로 구현될 수 있다. 예로, 스케쥴러(210), 적응 제어부(220), 메모리 제어부(230), 연산기(240) 및 누산기(250)는 전술한 프로세서(120)의 기능 블록들일 수 있다. 다른 예로, 스케쥴러(210), 적응 제어부(220) 및 메모리 제어부(230)는 프로세서(120)의 서브 프로세서인 제1 프로세서의 기능 블록들이고, 연산기(240) 및 누산기(250)는 프로세서(120)의 또 다른 서브 프로세서인 제2 프로세서의 기능 블록들일 수 있다. 이때, 제1 프로세서는 제2 프로세서의 제어를 담당하는 프로세서이고, 제2 프로세서는 연산에 최적화된 프로세서로서, 예로, 인공지능 프로세서 또는 그래픽 프로세서일 수 있다.
스케쥴러(210)는 하드웨어에 관한 자원 정보, 및 신경망 모델의 실행 요청 명령을 수신할 수 있다.
신경망 모델의 실행 요청 명령에 응답하여, 스케쥴러(210)는 룩업 테이블을 참조하여, 신경망 모델들 별 연산에 이용될 양자화 비트 개수를 결정할 수 있다. 룩업 테이블은, 프로세서(120)의 롬 또는 램 영역에 저장되어 있을 수도 있고, 프로세서(120) 외부의 메모리(110)에 저장되어 있을 수도 있다.
룩업 테이블은, 예로, k 개의 스케쥴링 모드들을 저장할 수 있다. 이 경우, 각각의 스케쥴링 모드들 별로 신경망 모델들의 연산에 이용될 양자화 비트 개수가 기 정의될 수 있다. 예로, 양자화 비트 개수는 신경망 모델들의 중요도에 따라 서로 다르게 정의될 수 있다.
스케쥴러(210)는 먼저, 요청 명령에 따른 추론 작업을 일정 이상의 정확도로 실행하기 위한 하드웨어 조건을 결정할 수 있다. 예로. 스케쥴러(210)는 하드웨어 조건으로서, 추론 작업을 수행하는데 필요한 연산기(240)의 총 연산 횟수, 신경망 모델의 연산 과정에 필요한 전력인 소모 전력(consumption power), 신경망 모델의 연산 시간인 출력 값을 획득하기까지의 시간인 레이턴시(latency)을 결정할 수 있다. 스케쥴러(210)는 현재 가용한 하드웨어 자원 정보(예: 시간 당 소모 전력, 요구되는 레이턴시)와 전술한 추론 작업을 수행하는데 필요한 하드웨어 조건을 비교하여, 신경망 모델들 별 양자화 비트 개수를 결정할 수 있다.
스케쥴러(210)가 신경망 모델들 별 양자화 비트 개수를 결정하는 과정은 도 3의 스케쥴링 신택스를 통하여 좀더 상세히 후술된다.
적응 제어부(220)는 신경망 모델들의 연산 순서를 제어하거나, 신경망 모델들 별로 서로 다른 비트량을 가지고 연산이 수행되도록 제어할 수 있다.
예로, 적응 제어부(220)는 스케쥴러(210)로부터 획득된 신경망 모델들 별 양자화 비트 개수를 고려하여, 연산기(240) 및 메모리 제어부(250)를 제어할 수 있다. 또는, 적응 제어부(220)는 스케쥴러(210)로부터 하드웨어 자원에 관한 자원 정보를 획득하고, 이를 고려하여, 신경망 모델의 연산에 이용될 양자화 비트 개수를 결정할 수도 있다.
적응 제어부(220)는 연산기(240) 및 메모리 제어부(250)를 제어하여, 특정 순번 이후의 양자화 비트는 신경망 모델의 연산에 이용되지 않도록 제어할 수 있다.
메모리 제어부(230)는 적응 제어부(220)의 제어에 의하여 메모리(110)에 저장된 입력 값과 양자화된 파라미터 값이 연산기(240)로 제공되도록 제어할 수 있다. 메모리(110)는 양자화된 파라미터 값들이 비트의 순서에 따라 정렬되어 저장될 수 있다. 예로, 첫 번째 비트의 양자화된 파라미터 값들이 일 데이터 포맷으로 정렬되어 저장되고, 두 번째 비트의 양자화된 파라미터 값들이 일 데이터 포맷으로 정렬되어 저장되고, 계속하여 N 번째 비트의 양자화된 파라미터 값들이 일 데이터 포맷으로 정렬되어 저장될 수 있다. 이 경우, 메모리 제어부(230)는 적응 제어부(220)의 제어에 의하여, 메모리(110)에 저장된 첫 번째 비트의 양자화된 파라미터 값부터 N 번째 비트의 양자화된 파라미터 값들이 순차적으로 연산기(240)로 제공되도록 제어할 수도 있고, 또는 첫 번째 비트부터 M(N < M) 번째의 비트의 양자화된 파라미터 값들이 순차적으로 연산기(240)로 제공되도록 제어할 수도 있다.
연산기(240)는 메모리(110)로부터 수신된 입력 값(input)과, 양자화된 파라미터 값을 이용하여 매트릭스 연산을 수행하여 비트 순서 별로 연산 결과를 획득하고, 누산기(250)는 각 비트 순서 별 연산 결과를 합산하여 출력 결과(또는, 출력 값)을 획득할 수 있다.
일 실시예로, 파라미터 값이 N 비트로 양자화되는 경우, 매트릭스의 곱 연산을 위하여 연산기(230)가 N 번 호출이 되면서, 1 비트부터 N 비트까지 순차적으로 연산이 수행될 수 있다.
도 3은, 일 실시예에 따른 스케쥴러(210)에서 수행되는 스케쥴링 신택스의 일 예를 나타낸다.
도 3에서, 스케쥴링 신택스의 정의부(310)는 실행 대상이 되는 신경망 모델들(예: 음성 인식 모델, 영상 인식 모델 등)을 값으로 갖는 'Execution Model', 하드웨어 자원(예: 소모 전력 레이턴시)에 관한 정보를 값으로 갖는 'Constraints', 스케쥴링 모드들을 값으로 갖는 'mode', 룩업 테이블로부터 획득된 하드웨어 자원을 고려한 최대 연산 코스트인 'max_cost', 신경망 모델들을 대상으로 룩업 테이블로부터 획득된 연산 코스트인 'cost'를 사전 정의할 수 있다.
여기서, 스케쥴링 모드들은, 예로, 룩업 테이블에 포함되어 신경망 모델 별로 연산에 이용할 최적의 양자화 비트 개수를 정의할 수 있다. 일 예로, 도 3에서는, 16개의 스케쥴링 모드를 정의하고 있는데, 0 모드의 경우에는 모든 신경망 모델들을 Full-precision으로 실행하고, 15번 모드의 경우에는 모든 신경망 모델을 1비트만 이용하여 계산하고, 2번 모드는 예로, 음성 인식 모델은, 양자화 비트 데이터로 3비트를 이용하고, 영상 인식 모델은 양자화 비트 데이터로 2비트를 이용한다고 정의할 수 있다.
도 3에서, while 조건문(320)은, 현재 스케쥴링 모드에 따른 신경망 모델들의 연산 코스트와, 하드웨어 자원을 고려한 최대 연산 코스트를 비교할 수 있다.
비교 결과로서, 하드웨어 자원을 고려하여 신경망 모델들 별 최적의 스케쥴링 모드가 결정되면, 스케쥴링 신택스의 반환 값(330)으로, 스케쥴러(210)는 현재 하드웨어 조건에서 신경망 모델들 별로 이용할 최적의 양자화 비트 개수를 룩업 테이블로부터 획득하여 적응 제어부(220)로 제공할 수 있다.
도 4는, 본 개시의 일 실시예에 따른 복수 개의 연산기들을 포함하는 신경망 연산에 필요한 구성을 나타내는 블록도이다.
도 4에서, 프로세서(120)의 연산 면적에 여유가 있는 경우, 프로세서(120)에는 복수 개의 연산기들(241 ~ 244)이 마련될 수 있다. 이 경우, 복수 개의 연산기들(241 ~ 244)을 이용하여 병렬 연산을 수행하는 것이 가능할 수 있다.
도 4에서, 스케쥴러(210), 적응 제어부(220), 메모리 제어부(230) 및 누산기(250)는 전술한 도 3의 스케쥴러(210), 적응 제어부(220), 메모리 제어부(230) 및 누산기(250)에 대응되어 중복되는 설명은 생략한다.
도 4에서, 복수 개의 연산기들(241 ~ 244)은 비트 순서에 기반하여, 매트릭스 병렬 연산을 수행할 수 있다. 예로, 제1 연산기(241)는 입력 값과 첫 번째 양자화 비트를 대상으로 연산을 수행할 수 있고, 제2 연산기(242)는 입력 값과 두 번째 양자화 비트를 대상으로 연산을 수행할 수 있고, 제3 연산기(243)는 입력 값과 세 번째 양자화 비트를 대상으로 연산을 수행할 수 있고, 제4 연산기(244)는 입력 값과 네 번째 양자화 비트를 대상으로 연산을 수행할 수 있다. 가산기(260)는 복수 개의 연산기들(241 ~ 244)의 연산 결과를 수집하여 누산기(250)로 전달할 수 있다.
한편, 복수 개의 연산기들(241 ~ 244)을 이용하는 경우, 적응 제어부(220)는 복수 개의 연산기들(241 ~ 244) 각각을 제어할 수 있다. 또한, 메모리 제어부(230)는 복수 개의 연산기들(241 ~ 244) 각각이 담당하는 비트 순서를 고려하여 양자화된 파라미터 값이 비트 순서에 따라 구분되어 입력되도록 메모리(110)를 제어할 수 있다. 특히, 복수 개의 연산기들(241 ~ 244)을 이용하는 상항에서, 스케쥴러(210)는 신경망 연산의 레이턴시(latency) 보다 복수의 연산기들(241 ~ 244)의 운용에 따른 프로세서의 소모 전력을 더 고려하여, 스케쥴링 모드를 결정할 수 있다.
복수 개의 연산기들(241 ~ 244)을 이용하여 신경망 모델의 연산을 수행하는 경우에, 메모리(110)에는 양자화된 파라미터 값들이 비트 순서 별로 재정렬되어 저장될 수 있다.
도 5는, 양자화된 파라미터 값들이 비트 순서 별로 메모리(110)에 저장되는 과정을 나타내는 도면이다.
예로, 도 5의 510과 같이, 신경망 모델의 파라미터 값으로 실수 타입의 32 비트 파라미터 값들이 존재할 수 있다. 이 경우, 파라미터 값들이 3 비트로 양자화되면, 도 5의 520과 같이, 실수 타입의 파라미터 값들은 계수 인자들(521)과, 3비트의 이진 데이터들(522, 523, 524)로 표현될 수 있다.
이 경우, 복수의 연산기(241 ~ 244)들의 효율적인 운용을 위하여, 양자화된 파라미터 값들은, 도 5의 530과 같이 재정렬될 수 있다. 도 5의 530에서, 양자화된 파라미터 값들은 비트 순서에 따라 재정렬될 수 있다. 예로, 도 4의 제1 연산기(241), 제2 연산기(242) 및 제3 연산기(243) 각각을 대상으로, 양자화된 파라미터 값들이 도 5의 531, 532, 533과 같이 재정렬되어 메모리(110)에 저장될 수 있다.
도 6은, 양자화된 파라미터 값들이 메모리(110)에 저장된 상태를 나타낸다. 도 6에서, 메모리(110)(예: DRAM)에는 양자화된 파라미터 값들이 비트 순서에 따라 정렬되어 저장될 수 있다. 이 경우, 32 개의 이진 데이터가 32 비트-워드 값에 포함될 수 있다.
이와 같이, 양자화된 파라미터 값들이 복수 연산기(241 ~ 244)들 각각의 연산에 대응되도록 워드 단위로 메모리(110)에 저장됨에 따라, 신경망 연산에 필요한 양자화된 파라미터 값들이 효율적으로 메모리(110)로부터 독출되어 복수 연산기(241 ~ 244)들 각각에 전송될 수 있다.
도 7은, 본 개시의 일 실시예에 전자 장치(100)의 연산 수행 방법을 나타내는 흐름도이다.
신경망 모델의 연산에 이용되는 서로 다른 각각의 중요도를 갖는 복수 개의 데이터들이 메모리에 저장된 상태일 수 있다. 서로 다른 각각의 중요도를 갖는 복수 개의 데이터들은, 신경망 모델의 연산에 이용되는 양자화된 매트릭스의 파라미터 값을 포함할 수 있다. 양자화된 매트릭스의 파라미터 값은, 서로 다른 각각의 중요도를 갖는 이진 데이터들을 포함할 수 있다. 예로, 이진 데이터들의 비트 순서가 증가할수록 이진 데이터들의 중요도는 하락할 수 있다. 또한, 양자화된 매트릭스의 파라미터 값은, 그리드 알고리즘을 이용하여 양자화된 매트릭스의 파라미터 값을 포함할 수 있다.
도 7의 701에서, 서로 다른 각각의 중요도를 갖는 복수 개의 데이터들이 메모리에 저장된 상태에서, 전자 장치(100)는 하드웨어에 관한 자원 정보를 획득할 수 있다. 하드웨어에 관한 자원 정보는, 예로, 전자 장치(100)의 소모 전력, 신경망 모델의 연산을 수행하는 연산기의 개수/종류/사양 또는 신경망 모델의 레이턴시 중 적어도 하나를 포함할 수 있다.
도 7의 703에서, 획득된 자원 정보에 기반하여, 전자 장치(100)는 복수 개의 데이터들 각각의 중요도에 따라 복수 개의 데이터들 중에서 신경망 모델의 연산에 이용될 일부 데이터를 결정할 수 있다. 예로, 전자 장치(100)는 복수 개의 스케쥴링 모드들이 정의된 룩업 테이블을 참조하여, 신경망 모델의 연산에 이용될 일부 데이터를 결정할 수 있다. 또한, 전자 장치(100)는 복수 개의 데이터들 중에서 신경망 모델에 이용된 이진 데이터의 개수를 결정할 수 있다.
도 7의 705에서, 전자 장치(100)는 결정된 일부 데이터를 이용하여, 신경망 모델의 연산을 수행할 수 있다. 예로, 전자 장치(100)는 입력 값과 이진 데이터들의 각 비트를 대상으로 매트릭스 연산을 수행하고, 각 비트 별 연산 결과를 합산하여 출력 값을 획득할 수 있다. 또는, 복수 개의 신경망 연산기들이 존재하는 경우, 전자 장치(100)는 복수 개의 신경망 연산기들을 이용한 매트릭스 병렬 연산을 수행할 수 있다.
다양한 실시예로, 복수 개의 신경망 모델들이 전자 장치(100)에 마련될 수도 있다. 복수 개의 신경망 모델들은, 예로, 하나 이상의 온 디바이스 칩으로 구현되어 전자 장치(100)에 마련되거나, 전자 장치(100)의 메모리(110)에 소프트웨어 형태로 저장되어 있을 수도 있다. 이 경우, 전자 장치(100)는 한정된 하드웨어 자원을 고려한 적응적인 운영을 위하여, 전자 장치(100)의 하드웨어에 관한 자원 정보를 획득하고, 획득된 자원 정보에 기반하여 복수 개의 신경망 모델들 중 운용할 적어도 하나의 신경망 모델을 결정할 수 있다. 예로, 전자 장치(100)는 신경망 모델의 추론의 정확도 또는 연산 속도를 고려한 우선 순위에 따라 적어도 하나의 신경망 모델을 결정할 수 있다.
다양한 실시예로, 전자 장치(100)는 복수 개의 신경망 모델들 중 운용할 적어도 하나의 신경망 모델을 필요 시에 외부 장치(미도시)로부터 다운로드할 수도 있다. 예로, 전자 장치(100)는 한정된 하드웨어 자원을 고려한 적응적인 운영을 위하여, 전자 장치(100)의 하드웨어에 관한 자원 정보를 획득하고, 획득된 자원 정보를 외부 장치(미도시)에게 전송할 수 있다. 외부 장치(미도시)가 획득된 자원 정보에 기반한 적어도 하나의 신경망 모델을 전자 장치(100)에게 전송하면, 전자 장치(100)는 수신된 신경망 모델을 메모리(100)에 저장하여 추론 기능을 수행 시 이용할 수 있다. 이 경우, 전자 장치(100)는 추론에 필요한 최소한의 신경망 모델을 제공받을 수 있어, 전자 장치(100)의 내부 자원 소모 또는 서버와의 통신에 필요한 네트워크 자원 소모를 줄이고, 추론 요청에 대한 빠른 결과 제공이 가능할 수 있다.
도 8은, 본 개시의 일 실시 예에 따른 전자 장치(100)의 세부 구성을 나타내는 블록도이다.
도 8에 따르면, 전자 장치(100)는 메모리(110), 프로세서(120), 통신부(130), 사용자 인터페이스부(140), 디스플레이(150), 오디오 처리부(160), 비디오 처리부(170)를 포함한다. 도 8에 도시된 구성요소들 중 도 1에 도시된 구성요소와 중복되는 부분에 대해서는 자세한 설명을 생략하도록 한다.
프로세서(120)는 메모리(110)에 저장된 각종 프로그램을 이용하여 전자 장치(100)의 동작을 전반적으로 제어한다.
구체적으로, 프로세서(120)는 RAM(121), ROM(122), 메인 CPU(123), 그래픽 처리부(124), 제1 내지 n 인터페이스(125-1 ~ 125-n), 버스(126)를 포함한다.
RAM(121), ROM(122), 메인 CPU(123), 그래픽 처리부(124), 제1 내지 n 인터페이스(125-1 ~ 125-n) 등은 버스(126)를 통해 서로 연결될 수 있다.
제1 내지 n 인터페이스(125-1 내지 125-n)는 상술한 각종 구성요소들과 연결된다. 인터페이스들 중 하나는 네트워크를 통해 외부 장치와 연결되는 네트워크 인터페이스가 될 수도 있다.
메인 CPU(123)는 메모리(110)에 액세스하여, 메모리(110)에 저장된 O/S를 이용하여 부팅을 수행한다. 그리고, 메모리(110)에 저장된 각종 프로그램 등을 이용하여 다양한 동작을 수행한다.
ROM(122)에는 시스템 부팅을 위한 명령어 세트 등이 저장된다. 턴온 명령이 입력되어 전원이 공급되면, 메인 CPU(123)는 ROM(122)에 저장된 명령어에 따라 메모리(110)에 저장된 O/S를 RAM(121)에 복사하고, O/S를 실행시켜 시스템을 부팅시킨다. 부팅이 완료되면, 메인 CPU(123)는 메모리(110)에 저장된 각종 어플리케이션 프로그램을 RAM(121)에 복사하고, RAM(121)에 복사된 어플리케이션 프로그램을 실행시켜 각종 동작을 수행한다.
그래픽 처리부(124)는 연산부(미도시) 및 렌더링부(미도시)를 이용하여 아이콘, 이미지, 텍스트 등과 같은 다양한 객체를 포함하는 화면을 생성한다. 연산부(미도시)는 수신된 제어 명령에 기초하여 화면의 레이아웃에 따라 각 객체들이 표시될 좌표값, 형태, 크기, 컬러 등과 같은 속성값을 연산한다. 렌더링부(미도시)는 연산부(미도시)에서 연산한 속성값에 기초하여 객체를 포함하는 다양한 레이아웃의 화면을 생성한다. 렌더링부(미도시)에서 생성된 화면은 디스플레이(150)의 디스플레이 영역 내에 표시된다.
한편, 상술한 프로세서(120)의 동작은 메모리(110)에 저장된 프로그램에 의해 이루어질 수 있다.
메모리(110)는 프로세서(120)와는 별도로 구비되며, 하드디스크, 비휘발성 메모리 및 휘발성 메모리 등으로 구현될 수 있다.
메모리(110)는 신경망 모델의 연산에 이용되는 복수 개의 데이터들을 저장할 수 있다. 복수 개의 데이터들은, 예로, 양자화된 매트릭스의 파라미터 값을 포함할 수 있다.
일 실시예에 따라 메모리(110)는 전자 장치(100)를 구동시키기 위한 O/S(Operating System) 소프트웨어 모듈, 인공지능 모델, 양자화된 인공지능 모델 또는 인공지능 모델을 양자화하기 위한 양자화 모듈(예: 그리드 알고리즘 모듈) 중 적어도 하나를 포함할 수 있다.
통신부(130)는 다양한 유형의 통신방식에 따라 다양한 유형의 외부 장치와 통신을 수행하는 구성이다. 통신부(130)는 와이파이 칩(131), 블루투스 칩(132), 무선 통신 칩(133), NFC 칩(134) 등을 포함한다. 프로세서(120)는 통신부(130)를 이용하여 각종 외부 장치와 통신을 수행한다.
와이파이 칩(131), 블루투스 칩(132)은 각각 WiFi 방식, 블루투스 방식으로 통신을 수행한다. 와이파이 칩(131)이나 블루투스 칩(132)을 이용하는 경우에는 SSID 및 세션 키 등과 같은 각종 연결 정보를 먼저 송수신하여, 이를 이용하여 통신 연결한 후 각종 정보들을 송수신할 수 있다. 무선 통신 칩(133)은 IEEE, 지그비(zigbee), 3G(3rd Generation), 3GPP(3rd Generation Partnership Project), LTE(Long Term Evoloution) 등과 같은 다양한 통신 규격에 따라 통신을 수행하는 칩을 의미한다. NFC 칩(134)은 135kHz, 13.56MHz, 433MHz, 860~960MHz, 2.45GHz 등과 같은 다양한 RF-ID 주파수 대역들 중에서 13.56MHz 대역을 사용하는 NFC(Near Field Communication) 방식으로 동작하는 칩을 의미한다.
프로세서(130)는 통신부(130)를 통해 외부 장치로부터 인공지능 모듈, 인공지능 모델에 포함된 매트릭스 또는 양자화된 매트릭스의 파라미터 값 중 적어도 하나를 수신하고, 수신된 데이터를 메모리(110)에 저장할 수 있다. 또는, 프로세서(130)는 인공지능 알고리즘을 통해 인공지능 모델을 직접 학습시키고, 학습된 인공지능 모델을 메모리(110)에 저장할 수도 있다. 여기서, 인공지능 모델은 적어도 하나의 매트릭스를 포함할 수 있다.
사용자 인터페이스부(140)는 다양한 사용자 인터랙션(interaction)을 수신한다. 여기서, 사용자 인터페이스부(140)는 전자 장치(100)의 구현 예에 따라 다양한 형태로 구현 가능하다. 예를 들어, 사용자 인터페이스부(140)는 전자 장치(100)에 구비된 버튼, 사용자 음성을 수신하는 마이크, 사용자 모션을 감지하는 카메라 등일 수 있다. 또는, 전자 장치(100)가 터치 기반의 전자 장치로 구현되는 경우 사용자 인터페이스부(140)는 터치패드와 상호 레이어 구조를 이루는 터치 스크린 형태로 구현될 수도 있다. 이 경우, 사용자 인터페이스부(140)는 상술한 디스플레이(150)로 사용될 수 있게 된다.
오디오 처리부(160)는 오디오 데이터에 대한 처리를 수행하는 구성요소이다. 오디오 처리부(160)에서는 오디오 데이터에 대한 디코딩이나 증폭, 노이즈 필터링 등과 같은 다양한 처리가 수행될 수 있다.
비디오 처리부(170)는 비디오 데이터에 대한 처리를 수행하는 구성요소이다. 비디오 처리부(170)에서는 비디오 데이터에 대한 디코딩, 스케일링, 노이즈 필터링, 프레임 레이트 변환, 해상도 변환 등과 같은 다양한 이미지 처리를 수행할 수 있다.
이상과 같은 방법을 통해 프로세서(120)는 인공지능 모델에 포함된 매트릭스를 양자화할 수 있다.
한편, 본 개시의 일시 예에 따르면, 이상에서 설명된 다양한 실시 예들은 기기(machine)(예: 컴퓨터)로 읽을 수 있는 저장 매체(machine-readable storage media)에 저장된 명령어를 포함하는 소프트웨어로 구현될 수 있다. 기기는, 저장 매체로부터 저장된 명령어를 호출하고, 호출된 명령어에 따라 동작이 가능한 장치로서, 개시된 실시 예들에 따른 전자 장치(예: 전자 장치(100))를 포함할 수 있다. 명령이 프로세서에 의해 실행될 경우, 프로세서가 직접, 또는 프로세서의 제어 하에 다른 구성요소들을 이용하여 명령에 해당하는 기능을 수행할 수 있다. 명령은 컴파일러 또는 인터프리터에 의해 생성 또는 실행되는 코드를 포함할 수 있다. 기기로 읽을 수 있는 저장매체는, 비일시적(non-transitory) 저장매체의 형태로 제공될 수 있다. 여기서, '비일시적'은 저장매체가 신호(signal)를 포함하지 않으며 실재(tangible)한다는 것을 의미할 뿐 데이터가 저장매체에 반영구적 또는 임시적으로 저장됨을 구분하지 않는다.
또한, 본 개시의 일 실시 예에 따르면, 이상에서 설명된 다양한 실시 예들에 따른 방법은 컴퓨터 프로그램 제품(computer program product)에 포함되어 제공될 수 있다. 컴퓨터 프로그램 제품은 상품으로서 판매자 및 구매자 간에 거래될 수 있다. 컴퓨터 프로그램 제품은 기기로 읽을 수 있는 저장 매체(예: compact disc read only memory (CD-ROM))의 형태로, 또는 어플리케이션 스토어(예: 플레이 스토어TM)를 통해 온라인으로 배포될 수 있다. 온라인 배포의 경우에, 컴퓨터 프로그램 제품의 적어도 일부는 제조사의 서버, 어플리케이션 스토어의 서버, 또는 중계 서버의 메모리와 같은 저장 매체에 적어도 일시 저장되거나, 임시적으로 생성될 수 있다.
또한, 본 개시의 일 실시 예에 따르면, 이상에서 설명된 다양한 실시 예들은 소프트웨어(software), 하드웨어(hardware) 또는 이들의 조합을 이용하여 컴퓨터(computer) 또는 이와 유사한 장치로 읽을 수 있는 기록 매체 내에서 구현될 수 있다. 일부 경우에 있어 본 명세서에서 설명되는 실시 예들이 프로세서 자체로 구현될 수 있다. 소프트웨어적인 구현에 의하면, 본 명세서에서 설명되는 절차 및 기능과 같은 실시 예들은 별도의 소프트웨어 모듈들로 구현될 수 있다. 소프트웨어 모듈들 각각은 본 명세서에서 설명되는 하나 이상의 기능 및 동작을 수행할 수 있다.
한편, 상술한 다양한 실시 예들에 따른 기기의 프로세싱 동작을 수행하기 위한 컴퓨터 명령어(computer instructions)는 비일시적 컴퓨터 판독 가능 매체(non-transitory computer-readable medium)에 저장될 수 있다. 이러한 비일시적 컴퓨터 판독 가능 매체에 저장된 컴퓨터 명령어는 특정 기기의 프로세서에 의해 실행되었을 때 상술한 다양한 실시 예에 따른 기기에서의 처리 동작을 특정 기기가 수행하도록 한다. 비일시적 컴퓨터 판독 가능 매체란 레지스터, 캐쉬, 메모리 등과 같이 짧은 순간 동안 데이터를 저장하는 매체가 아니라 반영구적으로 데이터를 저장하며, 기기에 의해 판독(reading)이 가능한 매체를 의미한다. 비일시적 컴퓨터 판독 가능 매체의 구체적인 예로는, CD, DVD, 하드 디스크, 블루레이 디스크, USB, 메모리카드, ROM 등이 있을 수 있다.
또한, 상술한 다양한 실시 예들에 따른 구성 요소(예: 모듈 또는 프로그램) 각각은 단수 또는 복수의 개체로 구성될 수 있으며, 전술한 해당 서브 구성 요소들 중 일부 서브 구성 요소가 생략되거나, 또는 다른 서브 구성 요소가 다양한 실시 예에 더 포함될 수 있다. 대체적으로 또는 추가적으로, 일부 구성 요소들(예: 모듈 또는 프로그램)은 하나의 개체로 통합되어, 통합되기 이전의 각각의 해당 구성 요소에 의해 수행되는 기능을 동일 또는 유사하게 수행할 수 있다. 다양한 실시예들에 따른, 모듈, 프로그램 또는 다른 구성 요소에 의해 수행되는 동작들은 순차적, 병렬적, 반복적 또는 휴리스틱하게 실행되거나, 적어도 일부 동작이 다른 순서로 실행되거나, 생략되거나, 또는 다른 동작이 추가될 수 있다.
이상에서는 본 개시의 바람직한 실시 예에 대하여 도시하고 설명하였지만, 본 개시는 상술한 특정의 실시 예에 한정되지 아니하며, 청구범위에서 청구하는 본 개시의 요지를 벗어남이 없이 당해 개시에 속하는 기술분야에서 통상의 지식을 가진 자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형실시들은 본 개시의 기술적 사상이나 전망으로부터 개별적으로 이해되어서는 안될 것이다.
100 : 전자 장치 110 : 메모리
120 : 프로세서

Claims (20)

  1. 전자 장치가 인공 신경망 모델의 연산을 수행하는 방법에 있어서,
    신경망 모델의 연산에 이용되는, 서로 다른 각각의 중요도를 갖는 복수 개의 데이터들이 메모리에 저장된 상태에서, 상기 전자 장치의 하드웨어에 관한 자원 정보를 획득하는 동작;
    상기 획득된 자원 정보에 기반하여, 상기 복수 개의 데이터들 각각의 중요도에 따라 상기 복수 개의 데이터들 중에서 상기 신경망 모델의 연산에 이용될 일부 데이터를 결정하는 동작; 및
    상기 결정된 일부 데이터를 이용하여, 상기 신경망 모델의 연산을 수행하는 동작을 포함하는,
    연산 수행 방법.
  2. 제1항에 있어서,
    상기 서로 다른 각각의 중요도를 갖는 복수 개의 데이터들은, 상기 신경망 모델의 연산에 이용되는 양자화된 매트릭스의 파라미터 값을 포함하는,
    연산 수행 방법.
  3. 제2항에 있어서,
    상기 양자화된 매트릭스의 파라미터 값은, 서로 다른 각각의 중요도를 갖는 이진 데이터들을 포함하는,
    연산 수행 방법.
  4. 제3항에 있어서,
    상기 이진 데이터들은,
    상기 이진 데이터들의 비트 순서가 증가할수록 상기 이진 데이터들의 중요도는 하락하는,
    연산 수행 방법.
  5. 제3항에 있어서,
    상기 신경망 모델의 연산을 수행하는 동작은,
    입력 값과 상기 이진 데이터들의 각 비트를 대상으로 매트릭스 연산을 수행하고, 각 비트 별 연산 결과를 합산하여 출력 값을 획득하는 동작을 포함하는,
    연산 수행 방법.
  6. 제3항에 있어서,
    상기 신경망 모델의 연산을 수행하는 동작은,
    상기 이진 데이터들의 각 비트의 순서에 기반하여, 복수 개의 신경망 연산기들을 이용한 매트릭스 병렬 연산을 수행하는 동작을 포함하는,
    연산 수행 방법.
  7. 제2항에 있어서,
    상기 양자화된 매트릭스의 파라미터 값은, 그리드 알고리즘을 이용하여 양자화된 매트릭스의 파라미터 값을 포함하는,
    연산 수행 방법.
  8. 제1항에 있어서,
    상기 신경망 모델의 연산에 이용될 일부 데이터를 결정하는 동작은,
    복수 개의 스케쥴링 모드들이 정의된 룩업 테이블을 참조하여, 상기 신경망 모델의 연산에 이용될 일부 데이터를 결정하는 동작을 포함하는,
    연산 수행 방법.
  9. 제1항에 있어서,
    상기 신경망 모델의 연산에 이용될 일부 데이터를 결정하는 동작은,
    상기 복수 개의 데이터들 중에서 상기 신경망 모델의 연산에 이용될 이진 데이터의 개수를 결정하는 동작을 포함하는,
    연산 수행 방법.
  10. 제1항에 있어서,
    상기 하드웨어에 관한 자원 정보는,
    상기 전자 장치의 소모 전력, 상기 신경망 모델의 연산을 수행하는 연산기의 개수 또는 상기 신경망 모델의 레이턴시 중 적어도 하나를 포함하는,
    연산 수행 방법.
  11. 전자 장치에 있어서,
    서로 다른 각각의 중요도를 갖는 복수 개의 데이터들을 저장 중인 메모리; 및
    상기 전자 장치의 하드웨어에 관한 자원 정보 기반하여, 상기 메모리에 저장 중인 상기 복수 개의 데이터들 각각의 중요도에 따라 상기 복수 개의 데이터들 중에서 상기 신경망 모델의 연산에 이용할 일부 데이터를 결정하고,
    상기 결정된 일부 데이터를 이용하여 상기 신경망 모델의 연산을 수행하는 프로세서를 포함하는,
    전자 장치.
  12. 제11항에 있어서,
    상기 서로 다른 각각의 중요도를 갖는 복수 개의 데이터들은, 상기 신경망 모델의 연산에 이용되는 양자화된 매트릭스의 파라미터 값을 포함하는,
    전자 장치.
  13. 제12항에 있어서,
    상기 양자화된 매트릭스의 파라미터 값은, 서로 다른 각각의 중요도를 갖는 이진 데이터들을 포함하는,
    전자 장치.
  14. 제13항에 있어서,
    상기 이진 데이터들은,
    상기 이진 데이터들의 비트 순서가 증가할수록 상기 이진 데이터들의 중요도는 하락하는,
    전자 장치.
  15. 제13항에 있어서,
    상기 프로세서는,
    입력 값과 상기 이진 데이터들의 각 비트를 대상으로 매트릭스 연산을 수행하고, 각 비트 별 연산 결과를 합산하여 출력 값을 획득하는,
    전자 장치.
  16. 제13항에 있어서,
    상기 프로세서는,
    상기 이진 데이터들의 각 비트의 순서에 기반하여, 복수 개의 신경망 연산기들을 이용한 매트릭스 병렬 연산을 수행하는,
    전자 장치.
  17. 제12항에 있어서,
    상기 양자화된 매트릭스의 파라미터 값은, 그리드 알고리즘을 이용하여 양자화된 매트릭스의 파라미터 값을 포함하는,
    전자 장치.
  18. 제11항에 있어서,
    상기 프로세서는,
    복수 개의 스케쥴링 모드들이 정의된 룩업 테이블을 참조하여, 상기 신경망 모델의 연산에 이용될 일부 데이터를 결정하는,
    전자 장치.
  19. 제11항에 있어서,
    상기 프로세서는,
    상기 복수 개의 데이터들 중에서 상기 신경망 모델의 연산에 이용될 이진 데이터의 개수를 결정하는,
    전자 장치.
  20. 제11항에 있어서,
    상기 하드웨어에 관한 자원 정보는,
    상기 전자 장치의 소모 전력, 상기 신경망 모델의 연산을 수행하는 연산기의 개수 또는 상기 신경망 모델의 레이턴시 중 적어도 하나를 포함하는,
    전자 장치.
KR1020190066396A 2019-06-05 2019-06-05 전자 장치 및 그의 연산 수행 방법 KR20200139909A (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020190066396A KR20200139909A (ko) 2019-06-05 2019-06-05 전자 장치 및 그의 연산 수행 방법
PCT/KR2020/006411 WO2020246724A1 (en) 2019-06-05 2020-05-15 Electronic apparatus and method of performing operations thereof
EP20819392.0A EP3908985A4 (en) 2019-06-05 2020-05-15 Electronic apparatus and method of performing operations thereof
US16/876,688 US11734577B2 (en) 2019-06-05 2020-05-18 Electronic apparatus and method of performing operations thereof
CN202010493206.8A CN112052943A (zh) 2019-06-05 2020-06-03 电子装置和执行该电子装置的操作的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190066396A KR20200139909A (ko) 2019-06-05 2019-06-05 전자 장치 및 그의 연산 수행 방법

Publications (1)

Publication Number Publication Date
KR20200139909A true KR20200139909A (ko) 2020-12-15

Family

ID=73608856

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190066396A KR20200139909A (ko) 2019-06-05 2019-06-05 전자 장치 및 그의 연산 수행 방법

Country Status (5)

Country Link
US (1) US11734577B2 (ko)
EP (1) EP3908985A4 (ko)
KR (1) KR20200139909A (ko)
CN (1) CN112052943A (ko)
WO (1) WO2020246724A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220142162A (ko) * 2021-04-14 2022-10-21 한국전자통신연구원 인공 지능 반도체 프로세서 및 인공 지능 반도체 프로세서의 동작 방법

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110727633A (zh) * 2019-09-17 2020-01-24 广东高云半导体科技股份有限公司 基于SoC FPGA的边缘人工智能计算系统构架

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5809490A (en) * 1996-05-03 1998-09-15 Aspen Technology Inc. Apparatus and method for selecting a working data set for model development
KR100248072B1 (ko) 1997-11-11 2000-03-15 정선종 신경망을 이용한 영상 데이터 압축/복원 장치의 구조 및압축/복원 방법
HUP0301368A3 (en) 2003-05-20 2005-09-28 Amt Advanced Multimedia Techno Method and equipment for compressing motion picture data
KR100662516B1 (ko) 2004-11-16 2006-12-28 한국전자통신연구원 변조된 수신 신호의 신호 대 잡음비 추정 장치 및 그 방법
KR100790900B1 (ko) 2006-12-14 2008-01-03 삼성전자주식회사 영상 부호화를 위한 초기 QP (QuantizationParameter) 값 예측 방법 및 장치
US9400955B2 (en) 2013-12-13 2016-07-26 Amazon Technologies, Inc. Reducing dynamic range of low-rank decomposition matrices
US10417525B2 (en) * 2014-09-22 2019-09-17 Samsung Electronics Co., Ltd. Object recognition with reduced neural network weight precision
US20160328645A1 (en) 2015-05-08 2016-11-10 Qualcomm Incorporated Reduced computational complexity for fixed point neural network
US10262259B2 (en) * 2015-05-08 2019-04-16 Qualcomm Incorporated Bit width selection for fixed point neural networks
US20190073582A1 (en) 2015-09-23 2019-03-07 Yi Yang Apparatus and method for local quantization for convolutional neural networks (cnns)
US10831444B2 (en) 2016-04-04 2020-11-10 Technion Research & Development Foundation Limited Quantized neural network training and inference
US10832136B2 (en) 2016-05-18 2020-11-10 Nec Corporation Passive pruning of filters in a convolutional neural network
CN106203624B (zh) 2016-06-23 2019-06-21 上海交通大学 基于深度神经网络的矢量量化系统及方法
KR102608467B1 (ko) 2016-07-28 2023-12-04 삼성전자주식회사 뉴럴 네트워크의 경량화 방법, 이를 이용한 인식 방법, 및 그 장치
US20180046903A1 (en) 2016-08-12 2018-02-15 DeePhi Technology Co., Ltd. Deep processing unit (dpu) for implementing an artificial neural network (ann)
US11321609B2 (en) 2016-10-19 2022-05-03 Samsung Electronics Co., Ltd Method and apparatus for neural network quantization
CN107103113B (zh) * 2017-03-23 2019-01-11 中国科学院计算技术研究所 面向神经网络处理器的自动化设计方法、装置及优化方法
US10795836B2 (en) * 2017-04-17 2020-10-06 Microsoft Technology Licensing, Llc Data processing performance enhancement for neural networks using a virtualized data iterator
US10410098B2 (en) * 2017-04-24 2019-09-10 Intel Corporation Compute optimizations for neural networks
KR102034661B1 (ko) 2017-04-28 2019-10-21 서울대학교산학협력단 뉴럴네트워크를 위한 데이터 양자화 방법 및 장치
KR102526650B1 (ko) 2017-05-25 2023-04-27 삼성전자주식회사 뉴럴 네트워크에서 데이터를 양자화하는 방법 및 장치
US9916531B1 (en) 2017-06-22 2018-03-13 Intel Corporation Accumulator constrained quantization of convolutional neural networks
US20200184318A1 (en) 2017-07-07 2020-06-11 Mitsubishi Electric Corporation Data processing device, data processing method, and non-transitory computer-readble storage medium
KR102601604B1 (ko) 2017-08-04 2023-11-13 삼성전자주식회사 뉴럴 네트워크의 파라미터들을 양자화하는 방법 및 장치
JP2019032729A (ja) 2017-08-09 2019-02-28 富士通株式会社 演算時間算出方法、演算時間算出装置、演算時間算出プログラム及び演算時間算出システム
KR102413028B1 (ko) 2017-08-16 2022-06-23 에스케이하이닉스 주식회사 중첩 신경망을 프루닝하는 방법 및 장치
US11308418B2 (en) * 2017-09-15 2022-04-19 Sap Se Automatic selection of variables for a machine-learning model
WO2019088657A1 (ko) 2017-10-30 2019-05-09 한국전자통신연구원 은닉 변수를 이용하는 영상 및 신경망 압축을 위한 방법 및 장치
KR20190054449A (ko) * 2017-11-13 2019-05-22 한국과학기술원 이종 클러스터 환경에서 신경망 트레이닝 가속화를 위한 연산 노드 배치 기법
US11645520B2 (en) * 2017-12-15 2023-05-09 Nokia Technologies Oy Methods and apparatuses for inferencing using a neural network
US11755901B2 (en) 2017-12-28 2023-09-12 Intel Corporation Dynamic quantization of neural networks
KR20190093932A (ko) 2018-02-02 2019-08-12 한국전자통신연구원 딥러닝 시스템에서의 연산 처리 장치 및 방법
US11423312B2 (en) 2018-05-14 2022-08-23 Samsung Electronics Co., Ltd Method and apparatus for universal pruning and compression of deep convolutional neural networks under joint sparsity constraints
JP7045947B2 (ja) 2018-07-05 2022-04-01 株式会社日立製作所 ニューラルネットワークの学習装置および学習方法
US20200082269A1 (en) 2018-09-12 2020-03-12 Nvidia Corporation Memory efficient neural networks
US20200097818A1 (en) 2018-09-26 2020-03-26 Xinlin LI Method and system for training binary quantized weight and activation function for deep neural networks
US20210232894A1 (en) 2018-10-10 2021-07-29 Leapmind Inc. Neural network processing apparatus, neural network processing method, and neural network processing program
KR102153192B1 (ko) 2018-10-31 2020-09-08 주식회사 노타 시뮬레이션-가이드된 반복적 프루닝을 사용하는 효율적인 네트워크 압축
US11588499B2 (en) 2018-11-05 2023-02-21 Samsung Electronics Co., Ltd. Lossless compression of neural network weights

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220142162A (ko) * 2021-04-14 2022-10-21 한국전자통신연구원 인공 지능 반도체 프로세서 및 인공 지능 반도체 프로세서의 동작 방법

Also Published As

Publication number Publication date
US11734577B2 (en) 2023-08-22
WO2020246724A1 (en) 2020-12-10
EP3908985A4 (en) 2022-06-29
US20200387801A1 (en) 2020-12-10
CN112052943A (zh) 2020-12-08
EP3908985A1 (en) 2021-11-17

Similar Documents

Publication Publication Date Title
KR102521054B1 (ko) 조기 중단에 기반한 심층 신경망의 연산 제어 방법 및 시스템
US11436050B2 (en) Method, apparatus and computer program product for resource scheduling
CN111931922A (zh) 一种提高模型推断精度的量化方法
US11941533B1 (en) Compiler for performing zero-channel removal
CN114723033B (zh) 数据处理方法、装置、ai芯片、电子设备及存储介质
KR20180103671A (ko) 언어 모델을 압축하기 위한 전자 장치, 추천 워드를 제공하기 위한 전자 장치 및 그 동작 방법들
CN104937551B (zh) 用于管理设备中的功率的计算机实现的方法和用于管理设备中的功率的系统
JP7408723B2 (ja) ニューラルネットワークプロセッシングユニット、ニューラルネットワークの処理方法及びその装置
US11734577B2 (en) Electronic apparatus and method of performing operations thereof
JP2023084094A (ja) 面積高効率畳み込みブロック
CN114286985A (zh) 用于预测内核调谐参数的方法和设备
US20240095522A1 (en) Neural network generation device, neural network computing device, edge device, neural network control method, and software generation program
KR20200027080A (ko) 전자 장치 및 그 제어 방법
CN115470901B (zh) 支持移动端异构处理器分载的混合精度训练方法及设备
US20220405561A1 (en) Electronic device and controlling method of electronic device
US20230244921A1 (en) Reduced power consumption analog or hybrid mac neural network
US20220383121A1 (en) Dynamic activation sparsity in neural networks
US11475281B2 (en) Electronic apparatus and control method thereof
CN115130659A (zh) 用于操作系统内核数据路径的自适应神经网络
US11861452B1 (en) Quantized softmax layer for neural networks
CN115222028A (zh) 基于fpga的一维cnn-lstm加速平台及实现方法
US20200110635A1 (en) Data processing apparatus and method
KR20220036493A (ko) 뉴럴 네트워크 추론을 위한 최적화 방법 및 이를 수행하는 컴퓨팅 장치
CN111027682A (zh) 神经网络处理器、电子设备及数据处理方法
WO2024045175A1 (en) Optimization of executable graph for artificial intelligence model inference

Legal Events

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