KR20220046796A - 전자 장치 및 그 제어 방법 - Google Patents

전자 장치 및 그 제어 방법 Download PDF

Info

Publication number
KR20220046796A
KR20220046796A KR1020200129873A KR20200129873A KR20220046796A KR 20220046796 A KR20220046796 A KR 20220046796A KR 1020200129873 A KR1020200129873 A KR 1020200129873A KR 20200129873 A KR20200129873 A KR 20200129873A KR 20220046796 A KR20220046796 A KR 20220046796A
Authority
KR
South Korea
Prior art keywords
data
group
compressed data
matrix
neural network
Prior art date
Application number
KR1020200129873A
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 KR1020200129873A priority Critical patent/KR20220046796A/ko
Priority to PCT/KR2021/012371 priority patent/WO2022075613A1/ko
Priority to US17/519,285 priority patent/US20220114454A1/en
Publication of KR20220046796A publication Critical patent/KR20220046796A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • 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/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

전자 장치가 개시된다. 본 전자 장치는 인공 지능 모델의 신경망 연산에서 압축 해제되어 이용되는 압축 데이터가 저장된 메모리, 압축 데이터를 기설정된 개수의 비트를 포함하는 그룹 단위로 순차적으로 입력받고, 적어도 두 개의 그룹의 데이터를 출력하는 시프트 레지스터, 압축 데이터의 압축 방법과 관련된 복수의 논리 회로를 통해 시프트 레지스터로부터 출력된 데이터의 압축을 해제하고, 압축 해제된 데이터를 출력하는 디코더 및 디코더로부터 출력되는 데이터로부터 신경망 연산 가능한 형태의 데이터를 획득하는 프로세서를 포함한다.

Description

전자 장치 및 그 제어 방법 { ELECTRONIC APPARATUS AND CONTROL METHOD THEREOF }
본 개시는 딥러닝 등의 기계 학습 알고리즘을 활용하여 인간 두뇌의 인지, 판단 등의 기능을 모사하는 인공 지능(Artificial Intelligence, AI) 시스템 및 그 응용 중 압축된 인공 지능 모델의 압축을 해제하기 위한 전자 장치 및 그 제어 방법에 대한 것이다.
최근 딥러닝 모델의 성능 저하를 최소화하면서 압축률을 높이기 위한 다양한 방법이 개발되고 있다. 성능 저하 없이 압축이 효율적으로 진행될수록 작은 하드웨어를 이용할 수 있으며, 디바이스 제작에 필요한 비용이 감소하게 된다. 또한, 딥러닝 수행 속도 역시 향상되므로, 용량이 매우 크거나 응답 속도가 느렸던 모델들이 모바일 기기에서 이용될 수도 있다.
이를 해결하기 위한 다양한 방법 중 가장 대표적인 것은 프루닝(Pruning)이다. 프루닝은 웨이트(weight) 중 특정 값 이하인 웨이트는 0으로 만들고 남은 웨이트를 이용하여 딥러닝 모델을 리트레이닝(re-training)함으로써 딥러닝의 accuracy를 복구하는 방식이다. 도 1a의 좌측은 트레이닝 직후의 웨이트 값의 분포이고, 도 1a의 우측 상단은 프루닝 후의 분포이며, 도 1a의 우측 하단은 남은 웨이트를 리트레이닝한 후의 분포이다. 프루닝과 리트레이닝을 반복하여 accuracy가 저하되지 않는 웨이트 값의 분포를 획득할 수 있다.
프루닝과 리트레이닝을 반복하면 웨이트의 상당 수가 0이 되고, 나머지가 non-zero 값을 가지게 되며, 상당 수의 0을 효과적으로 매트릭스에서 제거하게 되면 매트릭스 크기를 줄여 웨이트 크기가 줄어들게 된다. 예를 들면, 도 1b의 좌측과 같은 웨이트 매트릭스를 가정하면, 0을 제거하기 위해 도 1b의 우측과 같이 sparse matrix format으로 치환이 가능하다. A는 non-zero 값만을 저장하게 되며 IA는 맨 처음 기본적으로 가지는 0을 제외하면 matrix의 각각의 row에 해당하는 non-zero weight의 수를 누적하게 되고, 마지막으로 JA는 A의 각 non-zero값에 해당하는 column index를 저장한다. 즉, A와 IA, JA를 이용하여 0이 아닌 값들의 magnitude와 위치 정보를 저장하게 된다. 프루닝 레이트(Pruning rate)가 크면 클수록 매트릭스는 더욱 sparse 해지고 위의 format은 본래의 매트릭스 크기에 비해 점점 작아지게 된다. A, IA, JA로 구성되는 sparse matrix는 CSR(Compressed Sparse Row) format이라 불린다.
프루닝을 마치고 남은 non-zero 값들은 양자화(quantization) 과정을 거치게 되며, 프루닝 후에는 양자화된 정보의 양이 줄어들 뿐 아니라 값들의 분포율도 줄어들어 프루닝과 양자화는 함께 이용되는 경우가 대부분이다.
다만, CSR format은 A에 해당하는 non-zero weight의 magnitude보다 index의 양이 항상 더 큰 문제가 있다. 따라서, index의 압축율을 더욱 효과적으로 높여야 하는 문제점이 있다. 그리고, CSR format을 이용하여 본래의 matrix를 구성하는 경우, CSR format을 읽어내는 방식 자체가 parallel computing에 적합하지 않다는 문제도 있다.
한편, 딥러닝 모델의 성능 저하를 최소화하면서 압축률을 높이기 위한 방법 중 프루닝 및 양자화 후 XOR Gate를 이용하여 다시 한번 압축하는 방법이 있다. 프루닝 후 양자화하는 경우 도 1c에 도시된 바와 같이, Pruning Mask, Quantized Bits, Coefficient가 획득될 수 있다. Quantized Bits은 Care Bits(0 or 1), Don't Care Bits(x)로 구분될 수 있다. Don't Care Bit은 해당 위치에 어떠한 값이 들어가도 무관한 비트이고, Care Bit은 Don't Care Bit을 제외한 나머지 비트이다. 이때, XOR Network를 이용하여 Quantized Bits를 압축하게 된다. 먼저, Quantized Bits를 1D vector로 변환 후 이를 일정 개수로 그룹화하며, 그룹화된 비트 중 Care Bits의 부분이 XOR Gates의 출력 값과 동일해지는 입력을 도 1d와 같은 방법으로 찾는다.
압축률은 출력의 크기/입력의 크기이며, 도 1d의 경우 8/4, 즉 2배 압축률을확보할 수 있다. 다만, 모든 Care Bits이 같게 만드는 입력을 찾을 수 없는 경우가 발생하므로, XOR Gate의 출력 값과 원본 값이 다른 위치를 패치(Patch)로서 기억하여 Decompression 후에 다시 값을 바꾸는 방법이 이용된다.
패치란 XOR Gates의 출력 값이 Quantized Bits와 다를 경우, 도 1e와 같이 해당 값을 Flipping(0->1, 1->0)하는 것을 의미하며, 결국 패치가 많아질수록 압축률이 낮아지게 되는 문제가 있다. 특히, 그룹화 과정에서 각 그룹의 프루닝 레이트가 불규칙적인 경우, 다량의 에러가 발생하여 패치가 많아지거나 패치를 줄이기 위해 압축률을 낮추게 되어, 결국 압축 해제 속도가 저하되거나 하드웨어 비용이 증가하는 문제가 있다.
한편, 딥러닝 모델의 성능 저하를 최소화하면서 압축률을 높이기 위한 방법으로 Viterbi 기술을 이용한 압축 방법이 있다. 도 1f에 도시된 바와 같이, D Flip-Flop(D로 표시) 및 XOR Gate(+로 표시)를 포함하는 회로는 매 시간 1개의 비트가 입력되면, 현재 입력과 이전의 입력들을 이용하여 다수의 비트들를 출력할 수 있다. 이러한 방식은 인코딩의 시간은 길지만 디코딩의 시간이 짧아 하드웨어에 적합한 압축 방법이라는 장점이 있으나, 해를 찾는 시간이 너무 오래 걸려 여러 번의 압축을 시도하기에 적합하지 않고 Viterbi를 이용하기 위한 여러 parameter값들을 찾는 방법에 많은 노력과 시간이 필요한 단점이 있다.
그에 따라, 기존의 방법을 좀더 개선하여 더 높은 압축율을 확보하면서도 더 안정적으로 병렬적인 압축 해제가 가능한 방법이 개발될 필요가 있다.
본 개시는 상술한 필요성에 따른 것으로, 본 개시의 목적은 데이터 용량이 축소된 인공 지능 모델을 이용하며, 데이터 용량이 축소된 인공 지능 모델의 압축을 해제하는 전자 장치 및 그 제어 방법을 제공함에 있다.
이상과 같은 목적을 달성하기 위한 본 개시의 일 실시 예에 따른 전자 장치는 인공 지능 모델의 신경망 연산에서 압축 해제되어 이용되는 압축 데이터가 저장된 메모리, 상기 압축 데이터를 기설정된 개수의 비트를 포함하는 그룹 단위로 순차적으로 입력받고, 적어도 두 개의 그룹의 데이터를 출력하는 시프트 레지스터, 및 상기 시프트 레지스터로부터 출력된 데이터의 압축을 해제하고, 상기 압축 해제된 데이터를 출력하는 복수의 논리 회로를 포함하는 디코더 및 상기 디코더로부터 출력되는 데이터로부터 신경망 연산 가능한 형태의 데이터를 획득하는 프로세서를 포함한다.
또한, 상기 시프트 레지스터는 제1 싸이클에서, 상기 압축 데이터 중 제1 그룹의 데이터를 입력받고, 제2 싸이클에서, 상기 제1 그룹의 데이터를 시프트하며, 상기 압축 데이터 중 제2 그룹의 데이터를 입력받고, 상기 제1 그룹의 데이터 및 상기 제2 그룹의 데이터를 출력할 수 있다.
그리고, 상기 시프트 레지스터는 n번째 싸이클(n>2인 자연수)에서, n-2번째 싸이클에서 입력된 제1 그룹의 데이터를 삭제하고, n-1번째 싸이클에서 입력된 제2 그룹의 데이터를 시프트하며, 상기 압축 데이터 중 제3 그룹의 데이터를 입력받고, 상기 제2 그룹의 데이터 및 상기 제3 그룹의 데이터를 출력할 수 있다.
또한, 상기 복수의 논리 회로는 상기 압축 데이터의 압축 방법과 관련된 복수의 XOR 게이트를 통해 상기 시프트 레지스터로부터 출력된 데이터의 압축을 해제하고, 상기 압축 해제된 데이터를 출력할 수 있다.
그리고, 상기 메모리는 상기 압축 데이터에 대응되는 패치 정보를 더 저장하며, 상기 프로세서는 상기 패치 정보에 기초하여 상기 압축 해제된 데이터에 포함된 상기 복수의 엘리먼트 중 일부의 바이너리 데이터 값을 변경함으로써 상기 압축 해제된 데이터를 업데이트하고, 상기 패치 정보는 상기 압축 데이터를 획득하는 과정에서 발생하는 에러 정보를 포함할 수 있다.
또한, 상기 압축 데이터의 복수의 그룹 각각은 패치의 존재 여부를 나타내는 제1 플래그를 포함하고, 상기 패치 정보는 상기 복수의 그룹 중 적어도 하나의 그룹 각각에 대한 패치 위치 및 추가 패치의 존재 여부를 나타내는 제2 플래그를 포함할 수 있다.
그리고, 상기 메모리는 상기 압축 데이터에 대응되는 대표 값 매트릭스를 더 저장하며, 상기 프로세서는 상기 업데이트된 데이터 및 상기 대표 값 매트릭스에 기초하여 상기 신경망 연산 가능한 형태의 데이터를 획득하며, 상기 신경망 연산 가능한 형태의 데이터를 이용하여 상기 신경망 연산을 수행하고, 상기 업데이트된 데이터 및 상기 대표 값 매트릭스는 상기 인공 지능 모델에 포함된 원본 매트릭스를 양자화하여 획득된 매트릭스들일 수 있다.
또한, 상기 메모리는 상기 압축 데이터에 대응되는 프루닝 인덱스 매트릭스를 더 저장하며, 상기 프로세서는 상기 프루닝 인덱스 매트릭스에 기초하여 상기 신경망 연산 가능한 형태의 데이터를 업데이트하며, 상기 프루닝 인덱스 매트릭스는 상기 원본 매트릭스의 프루닝(pruning) 과정에서 획득된 매트릭스이고, 상기 압축 데이터를 획득하는 과정에서 이용될 수 있다.
그리고, 상기 프로세서는 매트릭스 형태로 배열된 복수의 연산 소자(Processing Element)를 포함하며, 상기 복수의 연산 소자를 이용하여 상기 신경망 연산 가능한 형태의 데이터에 대한 상기 신경망 연산을 수행할 수 있다.
또한, 상기 전자 장치는 하나의 칩으로 구현될 수 있다.
한편, 본 개시의 일 실시 예에 따른 전자 장치의 제어 방법은 시프트 레지스터가 인공 지능 모델의 신경망 연산에서 압축 해제되어 이용되는 압축 데이터를 기설정된 개수의 비트를 포함하는 그룹 단위로 순차적으로 수신하는 단계, 상기 시프트 레지스터가 적어도 두 개의 그룹의 데이터를 출력하는 단계, 복수의 논리 회로가 상기 시프트 레지스터로부터 출력된 데이터의 압축을 해제하고, 상기 압축 해제된 데이터를 출력하는 단계 및 상기 복수의 논리 회로로부터 출력되는 데이터로부터 신경망 연산 가능한 형태의 데이터를 획득하는 단계를 포함한다.
또한, 상기 수신하는 단계는 제1 싸이클에서 상기 압축 데이터 중 제1 그룹의 데이터를 수신하고, 제2 싸이클에서 상기 제1 그룹의 데이터를 시프트하며, 상기 압축 데이터 중 제2 그룹의 데이터를 수신하며, 상기 적어도 두 개의 그룹의 데이터를 출력하는 단계는 상기 제1 그룹의 데이터 및 상기 제2 그룹의 데이터를 출력할 수 있다.
그리고, 상기 수신하는 단계는 n번째 싸이클(n>2인 자연수)에서 n-2번째 싸이클에서 입력된 제1 그룹의 데이터를 삭제하고, n-1번째 싸이클에서 입력된 제2 그룹의 데이터를 시프트하며, 상기 압축 데이터 중 제3 그룹의 데이터를 수신하고, 상기 적어도 두 개의 그룹의 데이터를 출력하는 단계는 상기 제2 그룹의 데이터 및 상기 제3 그룹의 데이터를 출력할 수 있다.
또한, 상기 압축 해제된 데이터를 출력하는 단계는 복수의 XOR 게이트가 상기 시프트 레지스터로부터 출력된 데이터의 압축을 해제하고, 상기 압축 해제된 데이터를 출력할 수 있다.
그리고, 상기 획득하는 단계는 상기 압축 데이터에 대응되는 패치 정보에 기초하여 상기 압축 해제된 데이터에 포함된 상기 복수의 엘리먼트 중 일부의 바이너리 데이터 값을 변경함으로써 상기 압축 해제된 데이터를 업데이트하고, 상기 패치 정보는 상기 압축 데이터를 획득하는 과정에서 발생하는 에러 정보를 포함할 수 있다.
또한, 상기 압축 데이터의 복수의 그룹 각각은, 패치의 존재 여부를 나타내는 제1 플래그를 포함하고, 상기 패치 정보는 상기 복수의 그룹 중 적어도 하나의 그룹 각각에 대한 패치 위치 및 추가 패치의 존재 여부를 나타내는 제2 플래그를 포함할 수 있다.
그리고, 상기 획득하는 단계는 상기 업데이트된 데이터 및 상기 압축 데이터에 대응되는 대표 값 매트릭스에 기초하여 상기 신경망 연산 가능한 형태의 데이터를 획득하며, 상기 제어 방법은 상기 신경망 연산 가능한 형태의 데이터를 이용하여 상기 신경망 연산을 수행하는 단계를 더 포함하고, 상기 업데이트된 데이터 및 상기 대표 값 매트릭스는 상기 인공 지능 모델에 포함된 원본 매트릭스를 양자화하여 획득된 매트릭스들일 수 있다.
또한, 상기 획득하는 단계는 상기 압축 데이터에 대응되는 프루닝 인덱스 매트릭스에 기초하여 상기 신경망 연산 가능한 형태의 데이터를 업데이트하며, 상기 프루닝 인덱스 매트릭스는 상기 원본 매트릭스의 프루닝(pruning) 과정에서 획득된 매트릭스이고, 상기 압축 데이터를 획득하는 과정에서 이용될 수 있다.
그리고, 매트릭스 형태로 배열된 복수의 연산 소자(Processing Element)를 이용하여 상기 신경망 연산 가능한 형태의 데이터에 대한 상기 신경망 연산을 수행하는 단계를 더 포함할 수 있다.
또한, 상기 전자 장치는 하나의 칩으로 구현될 수 있다.
이상과 같은 본 개시의 다양한 실시 예에 따르면, 전자 장치는 시프트 레지스터를 이용하여 압축 과정에서 공유된 데이터를 복수 회 이용하여 압축을 해제할 수 있으며, 그에 따라 높은 압축률을 확보하면서도 오차를 줄여 패치 정보의 크기를 줄일 수 있다.
또한, 데이터에 대한 병렬 처리가 가능하며, 하드웨어를 통한 실시간 압축 해제가 가능하며 모든 가속기에 적용될 수 있다.
도 1a 및 도 1f는 종래 기술을 설명하기 위한 도면들이다.
도 2a는 본 개시의 일 실시 예에 따른 전자 장치의 구성을 나타내는 블럭도이다.
도 2b는 본 개시의 일 실시 예에 따른 전자 장치의 세부 구성을 나타내는 블럭도이다.
도 3a 내지 도 3c는 본 개시의 일 실시 예에 따른 압축 방법을 단계적으로 설명하기 위한 도면들이다.
도 4a 내지 도 4c는 본 개시의 일 실시 예에 따른 압축 데이터의 획득 방법을 설명하기 위한 도면들이다.
도 5는 본 개시의 일 실시 예에 따른 압축 해제 방법을 설명하기 위한 도면이다.
도 6a 및 도 6b는 본 개시의 일 실시 예에 따른 디코더의 구현 방법을 설명하기 위한 도면들이다.
도 7은 본 개시의 일 실시 예에 따른 제1 플래그 및 제2 플래그를 설명하기 위한 도면이다.
도 8a 및 도 8b는 본 개시의 일 실시 예에 따른 전자 장치의 구현 방법을 설명하기 위한 도면들이다.
도 9는 본 개시의 일 실시 예에 따른 전자 장치의 제어 방법을 설명하기 위한 흐름도이다.
이하에서는 첨부 도면을 참조하여 본 개시를 상세히 설명한다.
본 개시의 실시 예에서 사용되는 용어는 본 개시에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 개시의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 개시에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 개시의 전반에 걸친 내용을 토대로 정의되어야 한다.
본 명세서에서, "가진다," "가질 수 있다," "포함한다," 또는 "포함할 수 있다" 등의 표현은 해당 특징(예: 수치, 기능, 동작, 또는 부품 등의 구성요소)의 존재를 가리키며, 추가적인 특징의 존재를 배제하지 않는다.
A 또는/및 B 중 적어도 하나라는 표현은 "A" 또는 "B" 또는 "A 및 B" 중 어느 하나를 나타내는 것으로 이해되어야 한다.
본 명세서에서 사용된 "제1," "제2," "첫째," 또는 "둘째,"등의 표현들은 다양한 구성요소들을, 순서 및/또는 중요도에 상관없이 수식할 수 있고, 한 구성요소를 다른 구성요소와 구분하기 위해 사용될 뿐 해당 구성요소들을 한정하지 않는다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "구성되다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
본 명세서에서, 사용자라는 용어는 전자 장치를 사용하는 사람 또는 전자 장치를 사용하는 장치(예: 인공 지능 전자 장치)를 지칭할 수 있다.
이하 첨부된 도면들을 참조하여 본 개시의 일 실시 예를 보다 상세하게 설명한다.
도 2a는 본 개시의 일 실시 예에 따른 전자 장치(100)의 구성을 나타내는 블록도이다. 전자 장치(100)는 도 2a에 도시된 바와 같이, 메모리(110), 디코더(120) 및 프로세서(130)를 포함한다.
전자 장치(100)는 인공 지능 모델에 기초하여 신경망 연산을 수행하는 장치일 수 있다. 예를 들어, 전자 장치(100)는 인공 지능 모델을 저장하고, 입력 데이터가 수신되면, 인공 지능 모델에 기초하여 입력 데이터에 대한 신경망 연산을 수행하는 장치로서, 데스크탑 PC, 노트북, TV 등으로 구현될 수 있다. 다만, 이에 한정되는 것은 아니며, 전자 장치(100)는 인공 지능 모델에 기초하여 신경망 연산을 수행할 수 있는 장치라면 어떠한 장치라도 무방하다.
특히, 전자 장치(100)는 스마트폰, 태블릿 PC, 웨어러블 기기 등과 같이 리소스가 한정된 장치로서, 인공 지능 모델이 압축된 데이터를 저장하고, 압축된 데이터로부터 신경망 연산 가능한 형태의 데이터를 획득하며, 신경망 연산 가능한 형태의 데이터에 기초하여 입력 데이터에 대한 신경망 연산을 수행할 수 있다.
여기서, 인공 지능 모델은 프루닝(Pruning), 양자화(quantization) 등과 같은 다양한 방법을 통해 압축될 수 있으며, 그 밖에 얼마든지 다양한 방법으로 압축될 수 있다.
메모리(110)는 디코더(120), 프로세서(130) 등이 접근할 수 있도록 데이터 등의 정보를 전기 또는 자기 형태로 저장하는 하드웨어를 지칭할 수 있다. 이를 위해, 메모리(110)는 비휘발성 메모리, 휘발성 메모리, 플래시 메모리(Flash Memory), 하드디스크 드라이브(HDD) 또는 솔리드 스테이트 드라이브(SSD), RAM, ROM 등 중에서 적어도 하나의 하드웨어로 구현될 수 있다.
메모리(110)에는 전자 장치(100) 또는 프로세서(130)의 동작에 필요한 적어도 하나의 인스트럭션(instruction) 또는 모듈이 저장될 수 있다. 여기서, 인스트럭션은 전자 장치(100) 또는 프로세서(130)의 동작을 지시하는 부호 단위로서, 컴퓨터가 이해할 수 있는 언어인 기계어로 작성된 것일 수 있다. 모듈은 작업 단위의 특정 작업을 수행하는 일련의 인스트럭션의 집합체(instruction set)일 수 있다.
메모리(110)에는 문자, 수, 영상 등을 나타낼 수 있는 비트 또는 바이트 단위의 정보인 데이터가 저장될 수 있다. 예를 들어, 메모리(110)에는 인공 지능 모델과 관련된 데이터가 저장될 수 있다.
메모리(110)에는 인공 지능 모델의 신경망 연산에서 압축 해제되어 이용되는 압축 데이터가 저장될 수 있다. 여기서, 압축 데이터는 인공 지능 모델의 압축 후 획득된 데이터로서, 바이너리 데이터를 포함할 수 있다. 가령, 압축 데이터는 0 또는 1의 비트 열로 표현될 수 있다.
메모리(110)에는 압축 데이터에 대응되는 패치 정보, 압축 데이터에 대응되는 대표 값 매트릭스 및 압축 데이터에 대응되는 프루닝 인덱스 매트릭스가 더 저장될 수 있다.
압축 데이터, 패치 정보, 대표 값 매트릭스 및 프루닝 인덱스 매트릭스는 인공 지능 모델의 압축 과정에서 획득되는 데이터로, 먼저 전자 장치(100)의 압축 해제 동작을 설명하고, 인공 지능 모델의 압축 방법 및 각 데이터의 획득 방법에 대하여는 도면을 통해 후술한다.
디코더(120)는 압축 데이터를 기설정된 개수의 비트를 포함하는 그룹 단위로 순차적으로 입력받고, 적어도 두 개의 그룹의 데이터를 출력하는 시프트 레지스터(shift register), 및 시프트 레지스터로부터 출력된 데이터의 압축을 해제하고, 압축 해제된 데이터를 출력하는 복수의 논리 회로를 포함할 수 있다. 여기서, 시프트 레지스터는 디지털 회로에서 선형 방식으로 설치된 레지스터의 집합으로, 저장된 데이터를 일측으로 순차 이동할 수 있는 회로이다.
예를 들어, 시프트 레지스터는 압축 데이터를 4비트 단위로 순차적으로 입력받고, 순차적으로 8비트의 데이터를 출력할 수 있다. 복수의 논리 회로는 시프트 레지스터로부터 순차적으로 출력된 8비트의 데이터를 압축 해제하여 10비트의 데이터를 획득하고, 순차적으로 10비트의 데이터를 출력할 수 있다. 즉, 디코더(120)는 압축 데이터를 4비트 단위로 순차적으로 입력받고, 순차적으로 10비트의 압축 해제된 데이터를 출력할 수 있다.
프로세서(130)는 전자 장치(100)의 동작을 전반적으로 제어한다. 구체적으로, 프로세서(130)는 전자 장치(100)의 각 구성과 연결되어 전자 장치(100)의 동작을 전반적으로 제어할 수 있다. 예를 들어, 프로세서(130)는 메모리(110), 디코더(120), 통신 인터페이스(미도시) 등과 같은 구성과 연결되어 전자 장치(100)의 동작을 제어할 수 있다.
일 실시 예에 따라 프로세서(130)는 디지털 시그널 프로세서(digital signal processor(DSP), 마이크로 프로세서(microprocessor), TCON(Time controller)으로 구현될 수 있다. 다만, 이에 한정되는 것은 아니며, 중앙처리장치(central processing unit(CPU)), MCU(Micro Controller Unit), MPU(micro processing unit), 컨트롤러(controller), 어플리케이션 프로세서(application processor(AP)), 또는 커뮤니케이션 프로세서(communication processor(CP)), ARM 프로세서 중 하나 또는 그 이상을 포함하거나, 해당 용어로 정의될 수 있다. 또한, 프로세서(130)는 프로세싱 알고리즘이 내장된 SoC(System on Chip), LSI(large scale integration)로 구현될 수도 있고, FPGA(Field Programmable gate array) 형태로 구현될 수도 있다.
프로세서(130)는 디코더(120)로부터 출력되는 데이터로부터 신경망 연산 가능한 형태의 데이터를 획득할 수 있다. 예를 들어, 프로세서(130)는 디코더(120)로부터 출력되는 데이터로부터 압축되기 전의 인공 지능 모델을 획득할 수 있다. 이때, 프로세서(130)는 메모리(110)에 저장된 패치 정보, 대표 값 매트릭스 및 프루닝 인덱스 매트릭스를 더 이용하여 압축되기 전의 인공 지능 모델을 획득할 수도 있다.
이러한 디코더(120) 및 프로세서(130)의 동작에 대하여 도 2b의 각종 모듈을 통해 좀더 구체적으로 설명한다.
디코더(120)는 시프트 레지스터 및 복수의 논리 회로를 포함할 수 있다. 시프트 레지스터는 제1 싸이클에서, 압축 데이터 중 제1 그룹의 데이터를 입력받고, 제2 싸이클에서 제1 그룹의 데이터를 시프트하며, 압축 데이터 중 제2 그룹의 데이터를 입력받고, 제1 그룹의 데이터 및 제2 그룹의 데이터를 출력할 수 있다. 여기서, 제1 싸이클은 압축 데이터가 시프트 레지스터에 최초 입력되는 싸이클이다.
시프트 레지스터는 n번째 싸이클(n>2인 자연수)에서, n-2번째 싸이클에서 입력된 제1 그룹의 데이터를 삭제하고, n-1번째 싸이클에서 입력된 제2 그룹의 데이터를 시프트하며, 압축 데이터 중 제3 그룹의 데이터를 입력받고, 제2 그룹의 데이터 및 제3 그룹의 데이터를 출력할 수 있다.
좀더 구체적인 예를 들기 위해 8비트의 시프트 레지스터를 가정하면, 시프트 레지스터는 제1 싸이클에서, 4비트의 압축 데이터를 수신할 수 있다. 제1 싸이클에서 시프트 레지스터에는 4비트의 압축 데이터만이 저장된 상태일 수 있다. 그리고, 시프트 레지스터는 제2 싸이클에서, 기 저장되어 있던 4비트의 압축 데이터를 시프트하며, 추가로 4비트의 압축 데이터를 수신할 수 있다. 제2 싸이클에서 시프트 레지스터에는 8비트의 압축 데이터가 저장된 상태일 수 있다. 또한, 시프트 레지스터는 제2 싸이클에서 8비트의 압축 데이터를 복수의 논리 회로로 제공할 수 있다.
시프트 레지스터는 제3 싸이클에서, 제1 싸이클에서 저장된 4비트의 압축 데이터를 삭제하고, 제2 싸이클에서 수신된 4비트의 압축 데이터를 시프트하며, 추가로 4비트의 압축 데이터를 수신할 수 있다. 제3 싸이클에서 시프트 레지스터에는 8비트의 압축 데이터가 저장된 상태일 수 있다. 또한, 시프트 레지스터는 제3 싸이클에서 8비트의 압축 데이터를 복수의 논리 회로로 제공할 수 있다. 제3 싸이클 이후의 싸이클의 동작은 제3 싸이클과 동일하다.
시프트 레지스터의 동작을 좀더 직관적으로 설명하기 위해 도 2b에서는 시프트 레지스터가 제1 시프트 레지스터 및 제2 시프트 레지스터로 구분된 것으로 도시하였다.
상술한 예에 의하면, 제1 시프트 레지스터 및 제2 시프트 레지스터는 각각 4비트를 저장하도록 구현되며, 제1 시프트 레지스터는 제1 싸이클에서 4비트의 압축 데이터를 수신할 수 있다. 제2 싸이클에서 제1 시프트 레지스터에 저장된 4비트의 압축 데이터는 제2 시프트 레지스터로 시프트되고, 제1 시프트 레지스터는 추가로 4비트의 압축 데이터를 수신할 수 있다. 그리고, 제1 시프트 레지스터 및 제2 시프트 레지스터는 저장된 압축 데이터를 복수의 논리 회로로 제공할 수 있다. 제3 싸이클에서 제1 시프트 레지스터에 저장된 4비트의 압축 데이터는 제2 시프트 레지스터로 시프트될 수 있다. 제2 시프트 레지스터는 시프트 전에 기 저장된 데이터를 삭제할 수 있다. 또는, 제2 시프트 레지스터는 제1 시프트 레지스터로부터 시프트되는 4비트의 압축 데이터를 기 저장된 데이터에 덮어씌울 수도 있다. 제1 시프트 레지스터는 추가로 4비트의 압축 데이터를 수신하고, 제1 시프트 레지스터 및 제2 시프트 레지스터는 저장된 압축 데이터를 복수의 논리 회로로 제공할 수 있다.
도 1b에서는 시프트 레지스터가 제1 시프트 레지스터 및 제2 시프트 레지스터로 구분된 것으로 도시하였으나, 이는 일 실시 예에 불과하며, 시프트 레지스터는 N개의 시프트 레지스터로 구분될 수도 있다. 예를 들어, 시프트 레지스터는 제1 시프트 레지스터, 제2 시프트 레지스터 및 제3 시프트 레지스터로 구분될 수도 있다. 즉, 한 사이클에서 입력되는 데이터가 세 싸이클 동안 복수의 논리 회로로 제공될 수도 있으며, 이 경우 도 1b의 실시 예보다 압축률이 높아질 수 있다.
복수의 논리 회로는 압축 데이터의 압축 방법과 관련된 복수의 XOR 게이트를 통해 시프트 레지스터로부터 출력된 데이터의 압축을 해제하고, 압축 해제된 데이터를 출력할 수 있다. 상술한 예에서 복수의 논리 회로는 8비트의 압축 데이터를 입력받아 10비트의 압축 해제된 데이터를 출력할 수 있다.
여기서, 복수의 논리 회로는 압축 과정에서 이용되는 인코딩 매트릭스에 기초하여 구현될 수 있다. 인코딩 매트릭스는 0 또는 1을 포함하며, 상술한 예에 의하면 10×8의 매트릭스 형태일 수 있다. 복수의 논리 회로를 복수의 XOR 게이트로 구현하는 경우, 복수의 XOR 게이트의 입출력 단자는 인코딩 매트릭스에 대응되도록 연결될 수 있다. 즉, 복수의 XOR 게이트의 입력 단자를 통해 8비트의 압축 데이터가 입력되면 복수의 XOR 게이트의 출력 단자를 통해 10비트의 압축 해제된 데이터가 출력될 수 있다. 그리고, 10비트의 압축 해제된 데이터는 인코딩 매트릭스와 8비트의 압축 데이터의 곱셈 결과와 동일할 수 있다.
압축 과정에서는 인코딩 매트릭스와 미지수인 8비트의 압축 데이터의 곱셈 연산이 10비트의 데이터가 되도록 가우시안 엘리미네이션(gaussian elimination)과 같은 방법을 통해 미지수인 8비트의 압축 데이터가 결정될 수 있다. 이때, 10비트의 데이터가 8비트의 압축 데이터로 압축되는 경우, 오차가 발생할 수 있는데, 이러한 오차를 제거하기 위해 압축 과정에서 프루닝 여부에 따른 don't care 비트가 이용되고, 압축 해제 과정에서 오차를 보정하기 위한 패치 정보가 생성될 수 있다. don't care 비트를 고려한 압축 방법은 도면을 통해 후술한다.
이상과 같이 특정 싸이클에서 복수의 논리 회로는 8비트의 압축 데이터를 수신하나, 디코더(120)는 4비트의 압축 데이터만을 수신할 뿐이다. 즉, 상술한 예에서 10비트의 데이터는 4비트의 압축 데이터로 압축이 가능하다. 이는 압축 과정에서 10비트의 데이터를 8비트로 압축하되, 다음 10비트의 데이터를 8비트로 압축하는 과정에서 이전 압축된 8비트 중 4비트를 그대로 이용하기 때문이다. 이러한 압축 방법에 따라, 압축 해제 과정에서는 시프트 레지스터가 필요하다.
또한, 종래의 압축 데이터의 일부가 공유되지 않는 경우에 상술한 예와 동일한 압축률을 확보하기 위해서는 10비트가 각각 4비트로 압축되어야 한다. 반면, 본 개시에 따르면 10비트가 4비트로 압축되나, 압축 과정에서는 8비트로 압축되어, 패치 정보의 양이 종래보다 감소하게 된다.
이상과 같이 본 개시에 따르면, 압축률을 높이거나 패치 정보의 개수를 줄일 수 있다.
한편, 이상에서는 복수의 논리 회로가 복수의 XOR 게이트를 포함하는 것으로 설명하였으나, 얼마든지 다른 형태의 게이트를 포함할 수도 있다. 또한, 이상에서는 10비트 단위의 데이터가 4비트 단위의 압축 데이터로 압축된 것으로 설명하였으나, 얼마든지 다른 압축률로 압축될 수도 있다. 경우에 따라, 10비트 단위를 데이터를 4비트 이상의 단위로 압축할 수도 있으며, 이 경우 점점 패치 정보가 감소하거나 패치 정보가 생성되지 않을 수도 있다.
한편, 프로세서(130)는 메모리(110)에 저장된 모듈 또는 인스트럭션을 실행함으로써 전자 장치(100)의 전반적인 동작을 제어할 수 있다. 구체적으로, 프로세서(130)는 모듈 또는 인스트럭션을 읽고 해석하며 데이터 처리를 위한 시퀀스를 결정할 수 있으며, 그에 따라 메모리(110) 등 다른 구성의 동작을 제어하는 제어 신호를 전송함으로써 다른 구성의 동작을 제어할 수 있다.
도 2b에서 프로세서(130) 내부에 복수의 모듈이 위치하는 것은 복수의 모듈이 프로세서(130)에 의해 로딩(또는 실행)되어 프로세서(130)에서 동작되는 상태를 나타내기 위한 것이며, 복수의 모듈은 메모리(110)에 기저장된 상태일 수 있다.
프로세서(130)는 신경망 연산 가능한 형태의 데이터 획득 모듈을 실행함으로써 압축 해제된 데이터로부터 신경망 연산 가능한 형태의 데이터를 획득할 수 있다.
프로세서(130)는 메모리(110)로부터 압축 데이터에 대응되는 패치 정보를 수신하고, 패치 정보에 기초하여 압축 해제된 데이터에 포함된 복수의 엘리먼트 중 일부의 바이너리 데이터 값을 변경함으로써 압축 해제된 데이터를 업데이트할 수 있다. 가령, 프로세서(130)는 패치 정보에 기초하여 0을 1로 변경하거나 1을 0으로 변경할 수 있다. 여기서, 패치 정보는 압축 데이터를 획득하는 과정에서 발생하는 에러 정보를 포함할 수 있다.
압축 데이터의 복수의 그룹 각각은 패치의 존재 여부를 나타내는 제1 플래그를 포함하고, 패치 정보는 복수의 그룹 중 적어도 하나의 그룹 각각에 대한 패치 위치 및 추가 패치의 존재 여부를 나타내는 제2 플래그를 포함할 수 있다.
프로세서(130)는 제1 플래그에 기초하여 패치 정보의 존재 여부를 식별하고, 패치 정보가 존재하는 것으로 식별되면 패치 정보가 나타내는 패치 위치에 기초하여 압축 데이터의 일부의 바이너리 데이터를 변경할 수 있다. 그리고, 프로세서(130)는 제2 플래그에 기초하여 추가 패치 정보의 존재 여부를 식별하고, 추가 패치 정보가 존재하는 것으로 식별되면 추가 패치 정보가 나타내는 패치 위치에 기초하여 압축 데이터의 일부의 바이너리 데이터를 변경할 수 있다.
프로세서(130)는 메모리(110)로부터 압축 데이터에 대응되는 대표 값 매트릭스를 수신하고, 업데이트된 데이터 및 대표 값 매트릭스에 기초하여 신경망 연산 가능한 형태의 데이터를 획득할 수 있다. 여기서, 업데이트된 데이터 및 대표 값 매트릭스는 인공 지능 모델에 포함된 원본 매트릭스를 양자화하여 획득된 매트릭스들일 수 있다.
그리고, 프로세서(130)는 메모리(110)로부터 압축 데이터에 대응되는 프루닝 인덱스 매트릭스를 수신하고, 프루닝 인덱스 매트릭스에 기초하여 신경망 연산 가능한 형태의 데이터를 업데이트하여 신경망 연산을 수행할 수도 있다. 여기서, 프루닝 인덱스 매트릭스는 원본 매트릭스의 프루닝 과정에서 획득된 매트릭스이고, 압축 데이터를 획득하는 과정에서 이용될 수 있다.
다만, 이에 한정되는 것은 아니며, 패치 정보를 이용하는 동작과 프루닝 인덱스 매트릭스를 이용하는 동작은 병렬적으로 수행될 수도 있다. 특히, 프루닝 인덱스 매트릭스를 이용하는 동작은 신경망 연산 전이라면 어느 시점이라도 무방하다.
프로세서(130)는 신경망 연산 모듈을 실행함으로써, 최종적으로 획득된 신경망 연산 가능한 형태의 데이터를 이용하여 메모리(110)로부터 수신된 입력 데이터에 대한 신경망 연산을 수행할 수 있다.
여기서, 프로세서(130)는 매트릭스 형태로 배열된 복수의 연산 소자(Processing Element)를 포함하며, 복수의 연산 소자를 이용하여 신경망 연산 가능한 형태의 데이터에 대한 신경망 연산을 수행할 수 있다.
이상에서 설명한 전자 장치(100)는 하나의 칩으로 구현될 수 있다. 다만, 이에 한정되는 것은 아니며, 메모리(110)와 프로세서(130)가 별개의 구성으로 구현되고, 프로세서(130)가 디코더(120)를 포함하는 형태로 구현될 수도 있다.
한편, 이상에서는 압축 데이터가 바이너리 값을 갖는 것으로 설명하였으나, 이에 한정되는 것은 아니다. 예를 들어, 압축 데이터는 프루닝된 모든 형태의 데이터(ex : int8, float32, binary 등)일 수도 있으며, 이 경우에도 본 개시가 적용될 수 있다.
이상과 같이 디코더(120)가 시프트 레지스터를 포함하고, 시프트 레지스터의 동작에 따라 압축 데이터의 일부가 공유됨으로써, 압축률을 높이면서도 오차를 줄여 패치 정보의 크기를 줄일 수 있다.
이하에서는 설명의 편의를 위하여 압축 데이터를 획득하는 방법을 먼저 설명한다.
도 3a 내지 도 3c는 본 개시의 이해를 돕기 위한 압축 방법을 단계적으로 설명하기 위한 도면들이다. 먼저, 압축 동작은 서버에서 수행될 수 있다. 다만, 이에 한정되는 것은 아니며, 전자 장치(100)가 직접 압축 동작을 수행할 수도 있다. 도 3a 내지 도 3c에서는 설명의 편의를 위해 서버가 압축 동작을 수행하는 것으로 설명한다.
도 3a는 인공 지능 모델에 포함된 원본 매트릭스의 일 예를 나타내는 도면으로, 원본 매트릭스는 압축되기 전의 데이터로 m × n의 형태일 수 있다. 예를 들어, 원본 매트릭스는 10000 × 8000의 형태일 수 있다. 그리고, 원본 매트릭스 내의 복수의 엘리먼트는 각각 32 비트일 수 있다. 즉, 원본 매트릭스는 32 비트인 엘리먼트를 10000 × 8000개 포함할 수 있다. 다만, 이에 한정되는 것은 아니며, 원본 매트릭스의 크기 및 각 엘리먼트의 비트수는 얼마든지 다를 수도 있다.
도 3b는 도 3a에 도시된 원본 매트릭스를 프루닝 및 양자화한 결과를 나타내는 도면이다.
서버는 제1 임계 값에 기초하여 원본 매트릭스에 포함된 복수의 엘리먼트 각각을 프루닝하고, 복수의 엘리먼트 각각의 프루닝 여부를 바이너리 데이터로 나타내는 프루닝 인덱스 매트릭스(Pruning Mask, 310)를 획득할 수 있다.
예를 들어, 서버는 원본 매트릭스에 포함된 복수의 엘리먼트 중 30보다 작은 엘리먼트를 0으로 변환하고, 나머지 엘리먼트를 그대로 유지하는 방식으로 원본 매트릭스를 프루닝할 수 있다. 그리고, 서버는 복수의 엘리먼트 중 0으로 변환된 엘리먼트는 0으로, 나머지 엘리먼트는 1로 변환하여 프루닝 인덱스 매트릭스(310)를 획득할 수 있다. 즉, 프루닝 인덱스 매트릭스(310)는 원본 매트릭스와 크기가 동일하며, 0 또는 1을 포함할 수 있다.
그리고, 서버는 원본 매트릭스에 포함된 복수의 엘리먼트 중 프루닝되지 않는 엘리먼트들을 양자화하여 대표 값 매트릭스(Coefficient, 330)와 양자화된 매트릭스(Quantized Bits, 320)를 획득할 수 있다.
서버는 도 3a의 원본 매트릭스에서 n 개의 엘리먼트를 하나의 대표 값을 이용하여 양자화할 수 있다. 그에 따라, 도 3b에서는 m 개의 엘리먼트를 포함하는 대표 값 매트릭스(330)를 도시하였다. 여기서, 하나의 대표 값으로 양자화되는 엘리먼트의 개수 n은 일 실시 예에 불과하며, 얼마든지 다른 값이 이용될 수도 있으며, 다른 값이 이용되면 대표 값 매트릭스(330)에 포함된 엘리먼트의 개수도 달라질 수 있다. 그리고, 서버는 양자화된 매트릭스(320)를 획득할 수 있으며, 양자화된 매트릭스(320)는 원본 매트릭스와 크기가 동일하며, 0 또는 1을 포함할 수 있다.
서버는 도 3c에 도시된 바와 같이, 양자화된 매트릭스(320)를 압축 데이터(10)로 압축할 수 있다. 압축 데이터(10)에 포함된 엘리먼트의 개수는 양자화된 매트릭스(320)에 포함된 엘리먼트의 개수보다 적다. 압축 방법은 도 1d에 도시된 바와 유사하게 인코딩 매트릭스를 이용하나, 구체적인 압축 방법에는 차이가 있으며, 도 4a 내지 도 4c를 통해 압축 데이터(10)의 획득 방법 및 차이점에 대해 설명한다.
도 4a 내지 도 4c는 본 개시의 일 실시 예에 따른 압축 데이터(10)의 획득 방법을 설명하기 위한 도면들이다.
도 4a는 인코딩 매트릭스(A)를 이용하여 양자화된 매트릭스에 포함된 기설정된 개수의 엘리먼트(B)를 x로 압축하는 방법을 도시하였다. x는 압축 데이터에 포함될 수 있다. 예를 들어, 양자화된 매트릭스에 포함된 10개의 바이너리 데이터는 8개의 바이너리 데이터로 압축될 수 있다. 이때, 10개의 바이너리 데이터 중 프루닝된 데이터는 -로서 표시되며, 압축 이후 복원될 필요가 없다. 즉, 도 4a의 매트릭스 곱셈에 따라 10개의 방정식이 만들어질 수 있으나, -를 포함하는 방정식은 고려할 필요가 없다.
여기서, 각 바이너리 데이터 간의 곱셈 연산은 AND 게이트와 동일한 방식으로 수행되고, 곱셈 연산 결과 간의 덧셈 연산은 XOR 게이트와 동일한 방식으로 수행될 수 있으며, AND 게이트는 XOR 게이트보다 계산의 우선 순위가 높다. 그리고, 여기서, 인코딩 매트릭스는 제1 타입의 엘리먼트 및 제2 타입의 엘리먼트를 포함하며, 인코딩 메트릭스에 포함된 제1 타입의 엘리먼트의 개수 및 인코딩 매트릭스에 포함된 제2 타입의 엘리먼트의 개수는 서로 동일할 수 있다. 예를 들어, 인코딩 매트릭스는 0 및 1을 포함하며, 0의 개수와 1의 개수는 동일할 수 있다. 다만, 이에 한정되는 것은 아니며, 인코딩 매트릭스에 포함된 엘리먼트의 개수가 홀수인 경우, 0의 개수와 1의 개수 간의 차이는 기설정된 개수(ex : 1개) 이내일 수도 있다.
이상의 방정식의 해를 구하면, 양자화된 매트릭스에 포함된 10개의 바이너리 데이터가 8개의 바이너리 데이터로 압축될 수 있다. 즉, 압축 데이터에 포함된 제1 개수 단위의 바이너리 데이터(x)와 인코딩 매트릭스(A)의 매트릭스 곱셈 결과는 양자화된 매트릭스에 포함된 제2 개수 단위의 대응되는 바이너리 데이터(B)와 동일할 수 있다.
도 4b는 도 4a의 10개의 바이너리 데이터 다음의 10개의 바이너리 데이터를 압축하는 방법을 도시하였다. 이때, 도 4a에서는 압축된 결과가 X0 내지 X7로서 출력되나, 도 4b에서는 압축된 결과가 X4 내지 X11로서 출력된다. 즉, 도 4a의 압축 과정과 도 4b의 압축 과정에서 X4 내지 X7이 공유될 수 있다.
이상의 압축 과정은 이후의 과정에서 동일하게 적용될 수 있다. 예를 들어, 도 4b의 10개의 바이너리 데이터 다음의 10개의 바이너리 데이터를 압축하는 과정에서는 도 4b의 X8 내지 X11이 공유될 수 있다.
즉, 도 4a에서는 10개의 방정식이 만들어지나, 서버는 도 4a의 10개의 방정식만이 아니라 도 4b의 10개의 방정식 등 이후의 모든 방정식을 고려하여 압축 데이터를 획득하게 된다. 예를 들어, 서버는 도 4c와 같이 가우시안 엘리미네이션(gaussian elimination)을 통해 모든 방정식을 고려한 압축 데이터를 획득할 수 있다. 도 4c의 L은 Quantized Weight의 비트 수를 M으로 나눈 값, M은 디코더의 출력 크기, N은 디코더의 입력 크기, dp, dp_index는 다이나믹 알고리즘을 위한 데이터, quantized_bits는 quantized weight의 값을 1차원 벡터로 변환 후 M의 크기로 자른 값, encoding_data는 compessed bits, 디코더의 입력 어레이, patch_data는 encoding data와 함께 인퍼런스(inference)에 사용되는 패치 정보, Sequence_XOR_Decoder(I1, I2)는 I1, I2의 입력이 들어갈 때 Sequence XOR Decoder의 출력, Number_patchs(I1, I2, quantized_bits)는 I1, I2의 입력일 때 패치의 개수, Generate_patch_data(O1, O2)는 두 입력을 비교하여 patch data 생성하는 명령을 나타낸다.
다만, 이에 한정되는 것은 아니며, 압축 데이터를 획득하기 위한 방법이라면 얼마든지 다른 방법이 이용될 수도 있다.
도 4a 내지 도 4c의 예에 의하면, 10개의 바이너리 데이터는 실질적으로 4개의 바이너리 데이터로 변환되며, 변환되며, 변환된 바이너리 데이터들이 압축 데이터를 형성할 수 있다.
한편, 이 경우에도 모든 방정식을 만족하는 해가 없을 수도 있다. 이 경우, 서버는 최대한 많은 수의 방정식을 만족하는 해를 구하고, 구해진 해가 만족하지 못하는 방정식에 대한 패치 정보를 생성할 수 있다.
서버는 각 그룹의 압축 과정에서 패치 정보가 발생했는지를 나타내는 제1 플래그를 각 그룹에 대응되는 압축 데이터에 추가할 수 있다. 예를 들어, 도 4a에서 패치 정보가 발생했다면, 서버는 X0 내지 X7 및 패치 정보가 발생했음을 나타내는 제1 플래그를 생성할 수 있다. 가령, 서버는 패치 정보가 발생한 경우 1의 값을 갖는 제1 플래그를 생성하고, 패치 정보가 발생하지 않은 경우 0의 값을 갖는 제1 플래그를 생성할 수 있다.
서버는 압축 데이터와는 별도로 패치 정보를 생성할 수 있으며, 패치 정보는 패치 정보가 발생한 그룹 각각에 대한 패치 위치 및 추가 패치의 존재 여부를 나타내는 제2 플래그를 포함할 수 있다. 예를 들어, 서버는 도 4a에서 1개의 패치가 필요한 경우, 1개의 패치 위치 및 추가 패치가 없음을 나타내는 제2 플래그(가령, 0의 값으로 표현)를 포함할 수 있다. 또는, 서버는 도 4a에서 2개의 패치가 필요한 경우, 첫 번째 패치에 대한 패치 정보 및 두 번째 패치에 대한 패치 정보를 생성할 수 있다. 첫 번재 패치에 대한 패치 정보는 첫 번째 패치의 위치 및 추가 패치가 있음을 나타내는 제2 플래그(가령, 1의 값으로 표현)를 포함하고, 두 번재 패치에 대한 패치 정보는 두 번째 패치의 위치 및 추가 패치가 없음을 나타내는 제2 플래그(가령, 0의 값으로 표현)를 포함할 수 있다.
이상과 같이 서버는 일부 압축 데이터가 공유되는 방식으로 압축을 수행할 수 있다.
다만, 이에 한정되는 것은 아니며, 압축 전의 바이너리 데이터의 개수 및 압축 후의 바이너리 데이터의 개수는 얼마든지 다양할 수 있다. 특히, 서버는 패치 정보가 발생하지 않도록 압축을 수행할 수도 있다. 상술한 예에서, 서버는 10개의 바이너리 데이터를 4개의 바이너리 데이터로 압축한 후 패치 정보가 발생했다면, 10개의 바이너리 데이터를 5개의 바이너리 데이터로 압축할 수도 있다. 서버는 패치 정보가 발생하지 않을 때까지 압축 후의 바이너리 데이터의 개수를 변경할 수도 있다. 이 경우, 압축률은 낮아지나, 패치 정보가 발생하지 않아 압축 후의 데이터가 감소할 수도 있다.
도 5는 본 개시의 일 실시 예에 따른 압축 해제 방법을 설명하기 위한 도면이다.
디코더(120)는 T1(Time 1)에서 N비트의 I0 및 N비트의 I1의 압축 데이터로부터 M비트의 O1을 출력할 수 있다. 예를 들어, 디코더(120)는 T1에서 5비트의 I0 및 5비트의 I1의 압축 데이터로부터 20비트의 O1을 출력할 수 있다.
디코더(120)는 T2에서 N비트의 I1 및 N비트의 I2의 압축 데이터로부터 M비트의 O2을 출력할 수 있다. 예를 들어, 디코더(120)는 T2에서 5비트의 I1 및 5비트의 I2의 압축 데이터로부터 20비트의 O2를 출력할 수 있다. 이때, 디코더(120)는 T1에서 이용했던 N비트의 I1의 압축 데이터를 다시 한번 이용하게 된다.
이러한 동작을 반복하여, 디코더(120)는 Tt에서 N비트의 It-1 및 N비트의 It의 압축 데이터로부터 M비트의 Ot을 출력할 수 있다. 예를 들어, 디코더(120)는 Tt에서 5비트의 It-1 및 5비트의 It의 압축 데이터로부터 20비트의 Ot를 출력할 수 있다. 마찬가지로, 디코더(120)는 Tt-1에서 이용했던 N비트의 It-1의 압축 데이터를 다시 한번 이용하게 된다.
결국, 디코더(120)는 2N비트를 이용하여 M비트를 출력하게 된다. 즉, 각 그룹 단위로 보면 M비트가 2N비트로 압축되어, M비트가 N비트로 압축되는 경우보다 패치 정보의 발생이 감소하게 된다. 반면, 전체 데이터로 보면, T1부터 Tt까지 총 M×t의 비트는 N×(t+1)의 비트로 압축되어 압축률은 M비트를 N비트로 압축하는 경우와 거의 동일하다.
도 6a 및 도 6b는 본 개시의 일 실시 예에 따른 디코더(120)의 구현 방법을 설명하기 위한 도면들이다.
이상에서 설명한 바와 같이, 디코더(120)는 압축 데이터를 기설정된 개수의 비트를 포함하는 그룹 단위로 순차적으로 입력받고, 적어도 두 개의 그룹의 데이터를 출력하는 시프트 레지스터, 및 시프트 레지스터로부터 출력된 데이터의 압축을 해제하고, 압축 해제된 데이터를 출력하는 복수의 논리 회로를 포함할 수 있다.
시프트 레지스터는 도 6a에 도시된 바와 같이, 두 개의 시프트 레지스터가 구분된 형태로 구현될 수 있다. 상단의 제1 시프트 레지스터는 각 싸이클마다 N비트의 압축 데이터를 입력받고, 싸이클이 변경되면 저장된 압축 데이터를 하단의 제2 시프트 레지스터로 시프트할 수 있다.
제1 시프트 레지스터 및 제2 시프트 레지스터는 입력된 데이터를 복수의 논리 회로로 제공할 수 있다. 즉, 복수의 논리 회로는 2N비트의 압축 데이터를 수신할 수 있다.
복수의 논리 회로는 도 6b에 도시된 바와 같이, 인코딩 매트릭스에 기초하여 각 입출력 단자가 연결된 복수의 XOR 게이트로 구현될 수 있다. 다만, 이에 한정되는 것은 아니며, 복수의 XOR 게이트가 아닌 다른 논리 회로를 이용하여 디코더(120)를 구현할 수도 있으며, 인코딩 매트릭스에 대응되는 동작을 수행할 수 있다면 얼마든지 다른 방법이 이용될 수도 있다.
도 7은 본 개시의 일 실시 예에 따른 제1 플래그 및 제2 플래그를 설명하기 위한 도면이다.
서버는 각 그룹의 압축 과정에서 패치 정보가 발생했는지를 나타내는 제1 플래그를 각 그룹에 대응되는 압축 데이터에 추가할 수 있다. 예를 들어, 제1 그룹의 압축 과정에서 패치 정보가 발생했다면, 서버는 압축 데이터 및 패치 정보가 발생했음을 나타내는 제1 플래그를 생성할 수 있다. 가령, 서버는 패치 정보가 발생한 경우 1의 값을 갖는 제1 플래그를 생성하고, 패치 정보가 발생하지 않은 경우 0의 값을 갖는 제1 플래그를 생성할 수 있다.
또한, 서버는 패치가 필요한 경우 패치 정보를 생성할 수 있으며, 패치 정보는 패치 정보가 발생한 그룹 각각에 대한 패치 위치 및 추가 패치의 존재 여부를 나타내는 제2 플래그를 포함할 수 있다. 예를 들어, 서버는 1개의 패치가 필요한 경우, 1개의 패치 위치 및 추가 패치가 없음을 나타내는 제2 플래그(가령, 0의 값으로 표현)를 포함할 수 있다. 또는, 서버는 2개의 패치가 필요한 경우, 첫 번째 패치에 대한 패치 정보 및 두 번째 패치에 대한 패치 정보를 생성할 수 있다. 첫 번재 패치에 대한 패치 정보는 첫 번째 패치의 위치 및 추가 패치가 있음을 나타내는 제2 플래그(가령, 1의 값으로 표현)를 포함하고, 두 번재 패치에 대한 패치 정보는 두 번째 패치의 위치 및 추가 패치가 없음을 나타내는 제2 플래그(가령, 0의 값으로 표현)를 포함할 수 있다.
프로세서(130)는 패치 정보에 기초하여 압축 해제된 데이터에 포함된 복수의 엘리먼트 중 일부의 바이너리 데이터 값을 변경할 수 있다. 예를 들어, 프로세서(130)는 제1 플래그가 0이면 아무런 동작을 수행하지 않을 수 있다. 또는, 프로세서(130)는 제1 플래그가 1이면 패치 정보에 기초하여 압축 해제된 데이터에 포함된 복수의 엘리먼트 중 하나의 바이너리 데이터 값을 변경할 수 있다. 그리고, 프로세서(130)는 패치 정보에 포함된 제2 플래그가 0이면 하나의 바이너리 데이터 값을 변경한 후 추가 동작을 수행하지 않을 수 있다. 또는, 프로세서(130)는 패치 정보에 포함된 제2 플래그가 1이면 다음 패치 정보에 기초하여 압축 해제된 데이터에 포함된 복수의 엘리먼트 중 하나의 바이너리 데이터 값을 변경할 수 있다. 프로세서(130)는 패치 정보에 포함된 제2 플래그가 0이 될 때까지 동일한 동작을 반복할 수 있다.
이상과 같이 압축 데이터와 패치 정보는 별도로 저장되며, 특히 패치 정보는 별도의 인덱스가 없기 때문에 인덱스로 인한 데이터 용량을 줄일 수 있다.
도 8a 및 도 8b는 본 개시의 일 실시 예에 따른 전자 장치(100)의 구현 방법을 설명하기 위한 도면들이다.
먼저, 좌측의 시프트 레지스터 및 복수의 논리 회로를 포함하는 디코더(120)의 동작은 도 6a 및 도 6b에서 설명한 바와 동일하므로 중복되는 설명은 생략한다.
도 8a에서 디코더(120)는 512비트의 데이터를 출력하는 것으로 가정하였고, 디코더(120)로부터 출력되는 데이터는 압축 과정에서 발생한 손실을 포함할 수 있으며, 이를 패치 정보에 기초하여 바이너리 데이터 값을 변경할 필요가 있다.
이를 위해 프로세서(130)는 패치 생성기(Patch Generator), 패치 버퍼(Patch Buffer) 및 XOR(Element wise)로 구현될 수 있다. 패치 생성기는 패치 정보에 기초하여 바이너리 데이터 값을 변경할 위치의 값을 1로, 나머지를 0으로 만들어 줄 수 있다. 이때, 입력에 대하여 패치가 P개가 넘을 경우 이상의 작업은 복수 회 반복될 수 있으며, 이러한 작업이 종료되면 512비트의 데이터가 생성될 수 있다.
패치 버퍼는 패치 생성기로부터 생성된 512비트의 데이터를 저장하고, 입력된 순서대로 출력할 수 있다.
XOR(Element wise)은 디코더(120)의 출력 및 패치 버퍼의 출력에 기초하여 Element wise XOR 작업을 수행하여 최종 출력을 획득할 수 있다. 즉, XOR(Element wise)은 도 8b와 같이 디코더(120)의 출력 중 일부의 바이너리 데이터를 변경할 수 있다.
한편, 패치 버퍼의 데이터가 없을 경우 디코더(120)는 패치 버퍼에 데이터가 쌓일 때까지 쉬게 되며 이로 인해 시간적 손실이 있을 수 있다. 이 문제는 패치 생성기 및 패치 버퍼의 성능을 올려 해결할 수 있으며, 하드웨어의 비용과 실행 시간의 Trade Off가 필요한 문제이다.
이상의 하드웨어는 다양한 상황에 따라 조절될 수 있으며, P를 3으로, 버퍼 크기를 4로 잡았을 때 91% 프루닝의 경우 5%, 70% 프루닝의 경우 61%의 메모리 감소율을 가지게 된다. 이때, 속도 저하는 10% 미만이다. 결과적으로, 간단한 하드웨어 설계로 회로 면적 및 소비 전력이 작으면서도, 종래보다 더욱 압축된 데이터를 저장함으로써 저장에 필요한 전력 소비도 줄일 수 있다. 또한, 데이터를 독출하면서 실시간으로 압축을 해제할 수 있어, 다양한 가속기에 적용 가능될 수 있다.
도 9는 본 개시의 일 실시 예에 따른 전자 장치의 제어 방법을 설명하기 위한 흐름도이다.
먼저, 시프트 레지스터가 인공 지능 모델의 신경망 연산에서 압축 해제되어 이용되는 압축 데이터를 기설정된 개수의 비트를 포함하는 그룹 단위로 순차적으로 수신한다(S910). 그리고, 시프트 레지스터가 적어도 두 개의 그룹의 데이터를 출력한다(S920). 그리고, 복수의 논리 회로가 시프트 레지스터로부터 출력된 데이터의 압축을 해제하고, 압축 해제된 데이터를 출력한다(S930). 그리고, 복수의 논리 회로로부터 출력되는 데이터로부터 신경망 연산 가능한 형태의 데이터를 획득한다(S940).
여기서, 수신하는 단계(S910)는 제1 싸이클에서 압축 데이터 중 제1 그룹의 데이터를 수신하고, 제2 싸이클에서 제1 그룹의 데이터를 시프트하며, 압축 데이터 중 제2 그룹의 데이터를 수신하며, 적어도 두 개의 그룹의 데이터를 출력하는 단계(S920)는 제1 그룹의 데이터 및 제2 그룹의 데이터를 출력할 수 있다.
그리고, 수신하는 단계(S910)는 n번째 싸이클(n>2인 자연수)에서 n-2번째 싸이클에서 입력된 제1 그룹의 데이터를 삭제하고, n-1번째 싸이클에서 입력된 제2 그룹의 데이터를 시프트하며, 압축 데이터 중 제3 그룹의 데이터를 수신하고, 적어도 두 개의 그룹의 데이터를 출력하는 단계(S920)는 제2 그룹의 데이터 및 제3 그룹의 데이터를 출력할 수 있다.
한편, 압축 해제된 데이터를 출력하는 단계(S930)는 복수의 XOR 게이트가 시프트 레지스터로부터 출력된 데이터의 압축을 해제하고, 압축 해제된 데이터를 출력할 수 있다.
또한, 획득하는 단계(S940)는 압축 데이터에 대응되는 패치 정보에 기초하여 압축 해제된 데이터에 포함된 복수의 엘리먼트 중 일부의 바이너리 데이터 값을 변경함으로써 압축 해제된 데이터를 업데이트하고, 패치 정보는 압축 데이터를 획득하는 과정에서 발생하는 에러 정보를 포함할 수 있다.
여기서, 압축 데이터의 복수의 그룹 각각은 패치의 존재 여부를 나타내는 제1 플래그를 포함하고, 패치 정보는 복수의 그룹 중 적어도 하나의 그룹 각각에 대한 패치 위치 및 추가 패치의 존재 여부를 나타내는 제2 플래그를 포함할 수 있다.
그리고, 획득하는 단계(S940)는 업데이트된 데이터 및 압축 데이터에 대응되는 대표 값 매트릭스에 기초하여 신경망 연산 가능한 형태의 데이터를 획득하며, 제어 방법은 신경망 연산 가능한 형태의 데이터를 이용하여 신경망 연산을 수행하는 단계를 더 포함하고, 업데이트된 데이터 및 대표 값 매트릭스는 인공 지능 모델에 포함된 원본 매트릭스를 양자화하여 획득된 매트릭스들일 수 있다.
여기서, 획득하는 단계(S940)는 압축 데이터에 대응되는 프루닝 인덱스 매트릭스에 기초하여 신경망 연산 가능한 형태의 데이터를 업데이트하며, 프루닝 인덱스 매트릭스는 원본 매트릭스의 프루닝(pruning) 과정에서 획득된 매트릭스이고, 압축 데이터를 획득하는 과정에서 이용될 수 있다.
한편, 매트릭스 형태로 배열된 복수의 연산 소자(Processing Element)를 이용하여 신경망 연산 가능한 형태의 데이터에 대한 신경망 연산을 수행하는 단계를 더 포함할 수 있다.
그리고, 전자 장치는 하나의 칩으로 구현될 수 있다.
이상과 같은 본 개시의 다양한 실시 예에 따르면, 전자 장치는 시프트 레지스터를 이용하여 압축 과정에서 공유된 데이터를 복수 회 이용하여 압축을 해제할 수 있으며, 그에 따라 높은 압축률을 확보하면서도 오차를 줄여 패치 정보의 크기를 줄일 수 있다.
또한, 데이터에 대한 병렬 처리가 가능하며, 하드웨어를 통한 실시간 압축 해제가 가능하며 모든 가속기에 적용될 수 있다.
한편, 본 개시의 일시 예에 따르면, 이상에서 설명된 다양한 실시 예들은 기기(machine)(예: 컴퓨터)로 읽을 수 있는 저장 매체(machine-readable storage media)에 저장된 명령어를 포함하는 소프트웨어로 구현될 수 있다. 기기는, 저장 매체로부터 저장된 명령어를 호출하고, 호출된 명령어에 따라 동작이 가능한 장치로서, 개시된 실시 예들에 따른 전자 장치(예: 전자 장치(A))를 포함할 수 있다. 명령이 프로세서에 의해 실행될 경우, 프로세서가 직접, 또는 프로세서의 제어 하에 다른 구성요소들을 이용하여 명령에 해당하는 기능을 수행할 수 있다. 명령은 컴파일러 또는 인터프리터에 의해 생성 또는 실행되는 코드를 포함할 수 있다. 기기로 읽을 수 있는 저장매체는, 비일시적(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 : 디코더 130 : 프로세서

Claims (20)

  1. 전자 장치에 있어서,
    인공 지능 모델의 신경망 연산에서 압축 해제되어 이용되는 압축 데이터가 저장된 메모리;
    상기 압축 데이터를 기설정된 개수의 비트를 포함하는 그룹 단위로 순차적으로 입력받고, 적어도 두 개의 그룹의 데이터를 출력하는 시프트 레지스터, 및 상기 시프트 레지스터로부터 출력된 데이터의 압축을 해제하고, 상기 압축 해제된 데이터를 출력하는 복수의 논리 회로를 포함하는 디코더; 및
    상기 디코더로부터 출력되는 데이터로부터 신경망 연산 가능한 형태의 데이터를 획득하는 프로세서;를 포함하는 전자 장치.
  2. 제1항에 있어서,
    상기 시프트 레지스터는,
    제1 싸이클에서,
    상기 압축 데이터 중 제1 그룹의 데이터를 입력받고,
    제2 싸이클에서,
    상기 제1 그룹의 데이터를 시프트하며, 상기 압축 데이터 중 제2 그룹의 데이터를 입력받고,
    상기 제1 그룹의 데이터 및 상기 제2 그룹의 데이터를 출력하는, 전자 장치.
  3. 제1항에 있어서,
    상기 시프트 레지스터는,
    n번째 싸이클(n>2인 자연수)에서,
    n-2번째 싸이클에서 입력된 제1 그룹의 데이터를 삭제하고, n-1번째 싸이클에서 입력된 제2 그룹의 데이터를 시프트하며, 상기 압축 데이터 중 제3 그룹의 데이터를 입력받고,
    상기 제2 그룹의 데이터 및 상기 제3 그룹의 데이터를 출력하는, 전자 장치.
  4. 제1항에 있어서,
    상기 복수의 논리 회로는,
    상기 압축 데이터의 압축 방법과 관련된 복수의 XOR 게이트를 통해 상기 시프트 레지스터로부터 출력된 데이터의 압축을 해제하고, 상기 압축 해제된 데이터를 출력하는, 전자 장치.
  5. 제1항에 있어서,
    상기 메모리는,
    상기 압축 데이터에 대응되는 패치 정보를 더 저장하며,
    상기 프로세서는,
    상기 패치 정보에 기초하여 상기 압축 해제된 데이터에 포함된 상기 복수의 엘리먼트 중 일부의 바이너리 데이터 값을 변경함으로써 상기 압축 해제된 데이터를 업데이트하고,
    상기 패치 정보는,
    상기 압축 데이터를 획득하는 과정에서 발생하는 에러 정보를 포함하는, 전자 장치.
  6. 제5항에 있어서,
    상기 압축 데이터의 복수의 그룹 각각은, 패치의 존재 여부를 나타내는 제1 플래그를 포함하고,
    상기 패치 정보는,
    상기 복수의 그룹 중 적어도 하나의 그룹 각각에 대한 패치 위치 및 추가 패치의 존재 여부를 나타내는 제2 플래그를 포함하는, 전자 장치.
  7. 제5항에 있어서,
    상기 메모리는,
    상기 압축 데이터에 대응되는 대표 값 매트릭스를 더 저장하며,
    상기 프로세서는,
    상기 업데이트된 데이터 및 상기 대표 값 매트릭스에 기초하여 상기 신경망 연산 가능한 형태의 데이터를 획득하며,
    상기 신경망 연산 가능한 형태의 데이터를 이용하여 상기 신경망 연산을 수행하고,
    상기 업데이트된 데이터 및 상기 대표 값 매트릭스는,
    상기 인공 지능 모델에 포함된 원본 매트릭스를 양자화하여 획득된 매트릭스들인, 전자 장치.
  8. 제7항에 있어서,
    상기 메모리는,
    상기 압축 데이터에 대응되는 프루닝 인덱스 매트릭스를 더 저장하며,
    상기 프로세서는,
    상기 프루닝 인덱스 매트릭스에 기초하여 상기 신경망 연산 가능한 형태의 데이터를 업데이트하며,
    상기 프루닝 인덱스 매트릭스는,
    상기 원본 매트릭스의 프루닝(pruning) 과정에서 획득된 매트릭스이고, 상기 압축 데이터를 획득하는 과정에서 이용되는, 전자 장치.
  9. 제1항에 있어서,
    상기 프로세서는,
    매트릭스 형태로 배열된 복수의 연산 소자(Processing Element)를 포함하며,
    상기 복수의 연산 소자를 이용하여 상기 신경망 연산 가능한 형태의 데이터에 대한 상기 신경망 연산을 수행하는, 전자 장치.
  10. 제1항에 있어서,
    상기 전자 장치는,
    하나의 칩으로 구현된, 전자 장치.
  11. 전자 장치의 제어 방법에 있어서,
    시프트 레지스터가 인공 지능 모델의 신경망 연산에서 압축 해제되어 이용되는 압축 데이터를 기설정된 개수의 비트를 포함하는 그룹 단위로 순차적으로 수신하는 단계;
    상기 시프트 레지스터가 적어도 두 개의 그룹의 데이터를 출력하는 단계;
    복수의 논리 회로가 상기 시프트 레지스터로부터 출력된 데이터의 압축을 해제하고, 상기 압축 해제된 데이터를 출력하는 단계; 및
    상기 복수의 논리 회로로부터 출력되는 데이터로부터 신경망 연산 가능한 형태의 데이터를 획득하는 단계;를 포함하는 제어 방법.
  12. 제11항에 있어서,
    상기 수신하는 단계는,
    제1 싸이클에서 상기 압축 데이터 중 제1 그룹의 데이터를 수신하고, 제2 싸이클에서 상기 제1 그룹의 데이터를 시프트하며, 상기 압축 데이터 중 제2 그룹의 데이터를 수신하며,
    상기 적어도 두 개의 그룹의 데이터를 출력하는 단계는,
    상기 제1 그룹의 데이터 및 상기 제2 그룹의 데이터를 출력하는, 제어 방법.
  13. 제11항에 있어서,
    상기 수신하는 단계는,
    n번째 싸이클(n>2인 자연수)에서 n-2번째 싸이클에서 입력된 제1 그룹의 데이터를 삭제하고, n-1번째 싸이클에서 입력된 제2 그룹의 데이터를 시프트하며, 상기 압축 데이터 중 제3 그룹의 데이터를 수신하고,
    상기 적어도 두 개의 그룹의 데이터를 출력하는 단계는,
    상기 제2 그룹의 데이터 및 상기 제3 그룹의 데이터를 출력하는, 제어 방법.
  14. 제11항에 있어서,
    상기 압축 해제된 데이터를 출력하는 단계는,
    복수의 XOR 게이트가 상기 시프트 레지스터로부터 출력된 데이터의 압축을 해제하고, 상기 압축 해제된 데이터를 출력하는, 제어 방법.
  15. 제11항에 있어서,
    상기 획득하는 단계는,
    상기 압축 데이터에 대응되는 패치 정보에 기초하여 상기 압축 해제된 데이터에 포함된 상기 복수의 엘리먼트 중 일부의 바이너리 데이터 값을 변경함으로써 상기 압축 해제된 데이터를 업데이트하고,
    상기 패치 정보는,
    상기 압축 데이터를 획득하는 과정에서 발생하는 에러 정보를 포함하는, 제어 방법.
  16. 제15항에 있어서,
    상기 압축 데이터의 복수의 그룹 각각은, 패치의 존재 여부를 나타내는 제1 플래그를 포함하고,
    상기 패치 정보는,
    상기 복수의 그룹 중 적어도 하나의 그룹 각각에 대한 패치 위치 및 추가 패치의 존재 여부를 나타내는 제2 플래그를 포함하는, 제어 방법.
  17. 제15항에 있어서,
    상기 획득하는 단계는,
    상기 업데이트된 데이터 및 상기 압축 데이터에 대응되는 대표 값 매트릭스에 기초하여 상기 신경망 연산 가능한 형태의 데이터를 획득하며,
    상기 제어 방법은,
    상기 신경망 연산 가능한 형태의 데이터를 이용하여 상기 신경망 연산을 수행하는 단계;를 더 포함하고,
    상기 업데이트된 데이터 및 상기 대표 값 매트릭스는,
    상기 인공 지능 모델에 포함된 원본 매트릭스를 양자화하여 획득된 매트릭스들인, 제어 방법.
  18. 제17항에 있어서,
    상기 획득하는 단계는,
    상기 압축 데이터에 대응되는 프루닝 인덱스 매트릭스에 기초하여 상기 신경망 연산 가능한 형태의 데이터를 업데이트하며,
    상기 프루닝 인덱스 매트릭스는,
    상기 원본 매트릭스의 프루닝(pruning) 과정에서 획득된 매트릭스이고, 상기 압축 데이터를 획득하는 과정에서 이용되는, 제어 방법.
  19. 제11항에 있어서,
    매트릭스 형태로 배열된 복수의 연산 소자(Processing Element)를 이용하여 상기 신경망 연산 가능한 형태의 데이터에 대한 상기 신경망 연산을 수행하는 단계;를 더 포함하는, 제어 방법.
  20. 제11항에 있어서,
    상기 전자 장치는,
    하나의 칩으로 구현된, 제어 방법.
KR1020200129873A 2020-10-08 2020-10-08 전자 장치 및 그 제어 방법 KR20220046796A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020200129873A KR20220046796A (ko) 2020-10-08 2020-10-08 전자 장치 및 그 제어 방법
PCT/KR2021/012371 WO2022075613A1 (ko) 2020-10-08 2021-09-10 압축된 인공 지능 모델을 압축 해제하기 위한 전자 장치 및 그 제어 방법
US17/519,285 US20220114454A1 (en) 2020-10-08 2021-11-04 Electronic apparatus for decompressing a compressed artificial intelligence model and control method therefor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200129873A KR20220046796A (ko) 2020-10-08 2020-10-08 전자 장치 및 그 제어 방법

Publications (1)

Publication Number Publication Date
KR20220046796A true KR20220046796A (ko) 2022-04-15

Family

ID=81126602

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200129873A KR20220046796A (ko) 2020-10-08 2020-10-08 전자 장치 및 그 제어 방법

Country Status (2)

Country Link
KR (1) KR20220046796A (ko)
WO (1) WO2022075613A1 (ko)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008100520A2 (en) * 2007-02-12 2008-08-21 Mentor Graphics Corporation Low power scan testing techniques and apparatus
US7996741B2 (en) * 2009-08-24 2011-08-09 Syntest Technologies, Inc. Method and apparatus for low-pin-count scan compression
US10535161B2 (en) * 2017-11-09 2020-01-14 Samsung Electronics Co., Ltd. Point cloud compression using non-orthogonal projection
KR102017997B1 (ko) * 2018-01-16 2019-09-03 한국과학기술원 특징맵 압축을 이용한 이미지 처리 방법 및 장치

Also Published As

Publication number Publication date
WO2022075613A1 (ko) 2022-04-14

Similar Documents

Publication Publication Date Title
US11595062B2 (en) Decompression apparatus for decompressing a compressed artificial intelligence model and control method thereof
US20220114454A1 (en) Electronic apparatus for decompressing a compressed artificial intelligence model and control method therefor
US11481613B2 (en) Execution method, execution device, learning method, learning device, and recording medium for deep neural network
KR20070086661A (ko) 선택적 압축과 복원 및 압축 데이터에 대한 데이터 포맷을위한 장치 및 방법
JP2023505647A (ja) ニューラルネットワークモデルの圧縮
CN112398484A (zh) 一种编码方法及相关设备
US10897635B2 (en) Memory compression systems and methods
CN113222159A (zh) 一种量子态的确定方法及装置
US8018359B2 (en) Conversion of bit lengths into codes
KR20220054651A (ko) 다중 심볼 디코더
US11615286B2 (en) Computing system and compressing method for neural network parameters
KR20220046796A (ko) 전자 장치 및 그 제어 방법
KR101810863B1 (ko) 누적 심볼 빈도수 기반 Deflate 부호화 방법 및 장치
JP2016170750A (ja) データ管理プログラム、情報処理装置およびデータ管理方法
JP2022162930A (ja) ウェイトデータ圧縮方法、ウェイトデータ伸長方法、ウェイトデータ圧縮装置及びウェイトデータ伸長装置
TWI498891B (zh) 解壓縮電路與相關的壓縮方法與解壓縮方法
CN113364466A (zh) 数据处理系统
CN114819122B (zh) 基于脉冲神经网络的数据处理方法及装置
US11461275B2 (en) Compression techniques for vertices of graphic models
JP6303636B2 (ja) 画像処理装置及び画像処理方法
US11907329B2 (en) Convolution calculation apparatus and method
US8819093B2 (en) Systems and methods to reduce I/O and/or speed up out-of-core linear solvers
JP7345831B2 (ja) 情報処理装置、情報処理方法及びプログラム
US20220188077A1 (en) Arithmetic processing device, arithmetic processing method, and storage medium
CN113452377A (zh) 权值的压缩和解压缩