KR20210119907A - 가중치 값의 압축 및 압축 해제 - Google Patents

가중치 값의 압축 및 압축 해제 Download PDF

Info

Publication number
KR20210119907A
KR20210119907A KR1020210037886A KR20210037886A KR20210119907A KR 20210119907 A KR20210119907 A KR 20210119907A KR 1020210037886 A KR1020210037886 A KR 1020210037886A KR 20210037886 A KR20210037886 A KR 20210037886A KR 20210119907 A KR20210119907 A KR 20210119907A
Authority
KR
South Korea
Prior art keywords
weight
values
weight values
value
index
Prior art date
Application number
KR1020210037886A
Other languages
English (en)
Inventor
데렉 데이비드 화이트맨
Original Assignee
암, 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 암, 리미티드 filed Critical 암, 리미티드
Publication of KR20210119907A publication Critical patent/KR20210119907A/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/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/04Architecture, e.g. interconnection topology
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks

Landscapes

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

Abstract

비압축 가중치 값들의 세트가 획득되는 가중치 값들의 세트를 압축하는 방법이 제공되며, 비압축 가중치 값들의 세트는 신경망과 연관된 복수의 가중치 값들을 포함한다. 가중치 값들의 세트 내의 복수의 가중치 값들 중 자주 발생하는 값이 식별되고, 자주 발생하는 가중치 값의 각 발생은 가중치 값들의 세트 내에서 인덱스 값으로 대체된다. 자주 발생하는 가중치 값과 지수 값은 가중치 값들의 세트와 연관된다. 인덱스 값은 대체되는 자주 발생하는 가중치 값보다 저장 집약적이지 않도록 선택된다.

Description

가중치 값의 압축 및 압축 해제{COMPRESSION AND DECOMPRESSION OF WEIGHT VALUES}
본 발명은 가중치 값의 압축 및 압축 해제에 관한 것이다.
신경망(neural network) 모델들이 알려져 있으며 미리-훈련된 가중치 값들의 세트와 이러한 가중치 값들을 사용하는 작업들의 시퀀스(sequence)를 활용한다. 예를 들어, 신경망 내에서, 숨겨진 계층의 노드(node)는 그 위의 계층 또는 입력 계층의 여러 노드들로부터 입력을 수신할 수 있다. 이러한 입력들 각각은 연관된 가중치 값을 갖는다. 하나의 예에서, 노드는 입력 노드들 각각으로부터의 입력들에 연관된 가중치 값을 곱하고 결과물(resulting product)들을 함께 더할 수 있다. 결과물을 기반으로, 노드는 활성화 기능(activation function)에 의해 결정되는 출력 값을 제공한다.
프로세서와 같은 하드웨어가 신경망과 연관된 계산을 수행할 때, 각 가중치 값이 저장소로부터 로딩(loading)되어 계산에 사용되어야 한다. 순환 신경망(recurrent neural network)과 같은 일부 신경망에서는, 가중치 값을 수 차례 로딩해야 할 수 있다. 이 프로세스는 하드웨어의 메모리와 내부 대역폭을 모두 사용한다.
제1 양태에 따르면, 가중치 값들의 세트를 압축하는 방법이 제공되며, 방법은: 비압축 가중치 값들의 세트를 획득하는 단계로, 상기 비압축 가중치 값들의 세트는 신경망과 관련된 복수의 가중치 값들을 포함하고; 가중치 값들의 세트 내에서 자주 발생하는 가중치 값을 식별하는 단계; 가중치 값들의 세트 내에서 자주 발생하는 가중치 값의 각 발생을 인덱스 값으로 대체하는 단계; 및 자주 발생하는 가중치 값과 인덱스 값을 가중치 값들의 세트와 연관시키는 단계를 포함하고, 인덱스 값은 대체되는 자주 발생하는 가중치 값보다 덜 저장 집약적이다.
제2 양태에 따르면, 신경망과 관련된 복수의 가중치 값들을 포함하는 압축된 가중치 값들의 세트를 압축 해제하는 방법이 제공되며, 방법은: 압축된 가중치 값들의 세트와 연관된 인덱스 값 및 대응하는 자주 발생하는 가중치 값을 식별하는 단계; 압축된 가중치 값들의 세트를 판독하고 가중치 값들의 세트에서 인덱스 값의 하나 이상의 인스턴스들을 식별하는 단계; 가중치 값들의 세트의 인덱스 값의 각 인스턴스를 자주 발생하는 가중치 값으로 대체하는 단계를 포함한다.
제3 양태에 따르면, 압축된 가중치 값들의 세트를 압축 해제하도록 구성된 처리 요소가 제공되며, 압축된 가중치 값들의 세트는 신경망과 연관된 복수의 가중치 값들을 포함하며, 상기 처리 요소: 압축된 가중치 값들의 세트와 연관된 인덱스 값 및 대응하는 자주 발생하는 가중치 값을 식별하고; 압축된 가중치 값들의 세트를 판독하고 가중치 값들의 세트의 인덱스 값의 하나 이상의 인스턴스들을 식별하고; 가중치 값들의 세트의 인덱스 값의 각 인스턴스를 자주 발생하는 가중치 값으로 대체하도록 적응된다.
본 기술은 첨부된 도면에 예시된 실시 예들을 참조하여 단지 예로서 더 설명될 것이며, 여기서:
도 1a는 모바일 디바이스를 도시하고;
도 1b는 모바일 디바이스의 하드웨어를 보여주는 도면이고;
도 2는 모바일 디바이스에 설치된 시스템 아키텍처(system architecture)를 보여주는 도면이고;
도 3은 신경망 처리 유닛(neural processing unit)의 구성 요소들을 보여주는 도면이고;
도 4는 데이터 스트림을 압축하는 단계들을 보여주는 흐름도이고;
도 5a는 인덱스 값(index value)들 및 연관된 가중치 값들을 보여주는 테이블이고;
도 5b는 가중치 값들의 시퀀스에서 인덱스 값들을 수용하도록 조정된 후 도 5a에 도시된 인덱스 값들 및 연관된 가중치 값들을 보여주는 테이블이고;
도 6은 가중치들의 세트에 인덱스 값을 더하는 프로세스를 반복할지 여부를 결정하기 위한 단계들을 나타내는 흐름도이고;
도 7은 압축된 가중치 값들의 세트를 디코딩(decoding)하는 단계들을 나타내는 흐름도이고;
도 8a는 제2 실시 예에 따른 인덱스 값들 및 연관된 가중치들을 보여주는 테이블이고;
도 8b는 가중치 값들의 시퀀스에서 인덱스 값들을 수용하도록 조정된 후 도 8a에 도시된 인덱스 값들 및 연관된 가중치 값들을 보여주는 테이블이다.
첨부된 도면을 참조하여 실시 예들을 논의하기 전에, 실시 예들 및 관련 이점들에 대한 다음 설명이 제공된다.
일 실시 예에 따르면, 가중치 값들의 세트를 압축하는 방법이 제공되며, 상기 방법은: 비압축 가중치 값들의 세트를 획득하는 단계로, 상기 비압축 가중치 값들의 세트는 신경망과 관련된 복수의 가중치 값들을 포함하고; 상기 가중치 값들의 세트 내에서 자주 발생하는 가중치 값을 식별하는 단계; 상기 가중치 값들의 세트 내에서 자주 발생하는 가중치 값의 각 발생을 인덱스 값으로 대체하는 단계; 및 상기 자주 발생하는 가중치 값과 상기 인덱스 값을 상기 가중치 값들의 세트와 연관시키는 단계를 포함하고, 상기 인덱스 값은 대체되는 상기 자주 발생하는 가중치 값보다 덜 저장 집약적이다. 자주 발생하는 가중치 값을 저장 집약도가 낮은 인덱스 값으로 대체하면, 가중치 값들의 세트의 저장 크기가 압축될 수 있다.
자주 발생하는 가중치 값을 식별, 상기 자주 발생하는 가중치 값의 각 발생을 대체, 및 상기 자주 발생하는 가중치 값 및 상기 인덱스 값을 연관시키는 상기 단계들은 복수의 서로 다른 인덱스 값들 및 연관된 자주 발생하는 가중치 값들을 생성하기 위해 반복되는 단계들의 시퀀스를 형성한다. 이러한 방식으로, 가중치 값들의 세트 내의 다중 가중치 값들은 저장 집약도가 낮은 인덱스 값들로 대체될 수 있으며 가중치 값들의 세트는 더 압축될 수 있다.
상기 단계들의 시퀀스의 각 반복 이후, 상기 방법은 상기 가중치 값들의 세트의 크기 감소를 측정하는 단계를 포함한다. 상기 방법은 상기 압축된 가중치 값들의 세트의 크기에서 측정된 감소가 미리 결정된 임계 값보다 작을 때까지 상기 단계들의 시퀀스의 추가 반복을 수행하는 단계를 포함한다. 이러한 방식으로 가중치 값들의 세트에 추가될 최적의 인덱스 값들의 수가 결정될 수 있다.
복수의 가중치 값들은 수치의 값들이고, 복수의 자주 발생하는 가중치 값들을 나타내는 데 사용되는 인덱스들은 수치의 시퀀스에서 가장 낮은 값들이다. 이러한 경우, 방법은 비압축 가중치 값들의 세트에 추가된 상이한 인덱스 값들의 수와 동일한 양만큼 인덱스 값들로 대체되지 않은 상기 가중치 값들의 세트 내의 상기 가중치 값들의 각각의 값을 증가시키는 단계를 포함한다. 이를 통해 시퀀스에서 가장 낮은 값 번호들을 인덱스 값들에 할당할 수 있으며, 일부 압축 방법의 경우 인덱스 값들이 최소의 저장 집약적인 값들이 된다. 추가적으로, 비압축 가중치 값들의 세트에 추가된 서로 다른 인덱스 값들의 수와 동일한 양만큼 가중치 값들을 증가시킴으로써, 인덱스 값들은 가중치 값들과 인덱스 값들 사이에 어떠한 모호함도 생성하지 않고 수치의 시퀀스 내에 수용될 수 있다.
일부 실시 예들에서, 상기 복수의 가중치 값들은 양의 또는 음의 값을 취할 수 있는 수치의 값들이고, 상기 복수의 인덱스 값들은 상기 수치의 시퀀스에서 가장 낮은 절대 값들이다. 이러한 케이스에서, 상기 방법은 인덱스 값으로 대체되지 않은 상기 가중치 값들의 세트 내에서 상기 양의 가중치 값들의 각각의 값을 증가시키는 단계 및 상기 비압축 가중치 값들의 세트에 상기 인덱스 값들이 명확하게 추가될 수 있도록 상기 가중치 값들의 세트 내의 인덱스 값으로 대체되지 않은 상기 음의 가중치 값들의 각각을 충분한 감소시키는 단계를 포함한다. 이러한 방식으로 인덱스 값들은 가중치 값들과 인덱스 값들 사이에 어떠한 모호함도 생성하지 않고 수치의 시퀀스 내에 수용될 수 있다.
상기 가중치 값들은 가변 길이 코드이다. 가변 길이 코드는 골룸 라이스 코드(Golomb Rice code)와 같은 골룸 코드일 수 있다. 가변 길이 코드가 이용되는 경우, 각 인덱스 값은 상기 비압축 가중치 값들의 세트 내에서 대체되는 상기 자주 발생하는 가중치 값보다 더 짧은 길이를 갖도록 선택된 가변 길이 코드이다. 이러한 방식으로 인덱스 값들은 대체하는 가중치 값들보다 저장 집약도가 낮을 수 있다.
추가 실시 예에 따라 신경망과 연관된 복수의 가중치 값들을 포함하는 압축된 가중치 값들의 세트를 압축 해제하는 방법이 제공될 수 있으며, 상기 방법은: 상기 압축된 가중치 값들의 세트와 연관된 인덱스 값 및 대응하는 자주 발생하는 가중치 값을 식별하는 단계; 상기 압축된 가중치 값들의 세트를 판독하고 상기 가중치 값들의 세트에서 상기 인덱스 값의 하나 이상의 인스턴스들을 식별하는 단계; 상기 가중치 값들의 세트에서 상기 인덱스 값의 각 인스턴스를 상기 자주 발생하는 가중치 값으로 대체하는 단계를 포함한다.
압축된 가중치 값들의 세트를 압축 해제하는 방법 내에서 인덱스 값 및 대응하는 자주 발생하는 가중치 값을 식별, 상기 가중치 값들의 세트에서 상기 인덱스 값을 판독하고 식별, 및 상기 가중치 값들의 세트에서 상기 인덱스 값의 각 인스턴스를 대체하는 상기 단계들은 단계들의 시퀀스를 형성하고, 상기 단계들의 시퀀스는 복수의 인덱스 값들 및 상기 압축된 가중치 값들의 세트와 연관된 대응하는 자주 발생하는 가중치 값들 각각에 대해 반복된다.
압축된 가중치 값들의 세트를 압축 해제하는 방법은 먼저 상기 복수의 인덱스 값들 및 자주 발생하는 가중치 값들을 처리 요소의 저장소에 로딩하고 이어서 상기 압축된 가중치 값들의 세트로부터 상기 복수의 가중치 값들 중 각각을 판독하여 상기 압축된 가중치 값들의 세트를 순차적으로 디코딩하는 단계를 포함하고, 처리되는 상기 압축된 가중치 값들의 세트에서 인덱스 값이 판독될 때마다, 상기 처리 요소는 상기 저장소로부터 상기 인덱스 값과 연관된 상기 자주 발생하는 가중치 값을 판독하고 상기 인덱스 값을 상기 처리된 가중치 값들의 세트에서 상기 연관된 자주 발생하는 가중치 값으로 대체한다.
가중치 값들의 세트의 상기 인덱스 값의 각 인스턴스를 상기 자주 발생하는 가중치 값으로 대체하는 단계는 상기 압축된 가중치 값들의 세트에서 가중치 값의 수치의 값을 식별하는 단계 및 상기 가중치 값의 상기 수치의 값이 상기 가중치 값들의 세트와 연관된 인덱스 값들의 수보다 작거나 같은 값을 갖는지 여부를 결정하는 단계를 포함한다.
추가 실시 예는 압축된 가중치 값들의 세트를 압축 해제하도록 적응된 처리 요소를 제공하며, 상기 압축된 가중치 값들의 세트는 신경망과 관련된 복수의 가중치 값들을 포함하며, 상기 처리 요소는: 상기 압축된 가중치 값들의 세트와 연관된 인덱스 값 및 대응하는 자주 발생하는 가중치 값을 식별하고; 상기 압축된 가중치 값들의 세트를 판독하고 상기 가중치 값들의 세트의 상기 인덱스 값의 하나 이상의 인스턴스를 식별하고; 상기 가중치 값들의 세트의 상기 인덱스 값의 각 인스턴스를 상기 자주 발생하는 가중치 값으로 대체하도록 적응된다.
추가 실시 예는, 처리 요소에서 실행될 때, 처리 요소로 하여금 가중치 값들의 세트를 압축하는 방법을 수행하게 하는 코드 부분을 저장하는 비 일시적 컴퓨터 판독 가능 저장 매체를 제공하며, 상기 방법은: 비압축 가중치 값들의 세트를 획득하는 단계로, 상기 비압축 가중치 값들의 세트는 신경망과 관련된 복수의 가중치 값들을 포함하고; 상기 가중치 값들의 세트 내에서 자주 발생하는 가중치 값을 식별하는 단계; 상기 가중치 값들의 세트 내에서 자주 발생하는 가중치 값의 각 발생을 인덱스 값으로 대체하는 단계; 및 상기 자주 발생하는 가중치 값과 상기 인덱스 값을 상기 가중치 값들의 세트와 연관시키는 단계를 포함하고, 상기 인덱스 값은 대체되는 상기 자주 발생하는 가중치 값보다 저장 집약도가 낮을 수 있다.
추가 실시 예는, 처리 요소에서 실행될 때, 처리 요소가 압축된 신경망과 관련된 복수의 가중치 값을 포함하는 가중치 값들의 세트를 압축 해제하는 방법을 수행하게 하는 코드 부분을 저장하는 비 일시적 컴퓨터 판독 가능 저장 매체를 제공하며, 상기 방법은: 상기 압축된 가중치 값들의 세트와 연관된 인덱스 값 및 대응하는 자주 발생하는 가중치 값을 식별하는 단계; 상기 압축된 가중치 값들의 세트를 판독하고 상기 가중치 값들의 세트에서 상기 인덱스 값의 하나 이상의 인스턴스들을 식별하는 단계; 상기 가중치 값들의 세트에서 상기 인덱스 값의 각 인스턴스를 상기 자주 발생하는 가중치 값으로 대체하는 단계를 포함한다.
추가 실시 예는 처리 요소 및 저장소를 포함하는 데이터 처리 장치를 제공하며, 저장소는, 처리 요소에 의해 실행될 때, 데이터 처리 장치가 가중치 값들의 세트를 압축하는 방법을 수행하게 하는 코드 부분을 저장하고, 상기 방법은: 비압축 가중치 값들의 세트를 획득하는 단계로, 상기 비압축 가중치 값들의 세트는 신경망과 관련된 복수의 가중치 값들을 포함하고; 상기 가중치 값들의 세트 내에서 자주 발생하는 가중치 값을 식별하는 단계; 상기 가중치 값들의 세트 내에서 자주 발생하는 가중치 값의 각 발생을 인덱스 값으로 대체하는 단계; 및 상기 자주 발생하는 가중치 값과 상기 인덱스 값을 상기 가중치 값들의 세트와 연관시키는 단계를 포함하고, 상기 인덱스 값은 대체되는 상기 자주 발생하는 가중치 값보다 저장 집약도가 낮을 수 있다.
추가 실시 예는 압축된 가중치 값들의 세트를 제공하며, 가중치 값은 신경망과 연관되며, 압축된 가중치 값들의 세트는 복수의 가중치 값들, 자주 발생하는 가중치 값 대신 가중치 값들의 세트로 대체된 인덱스 값의 복수 인스턴스, 및 대체된 자주 발생하는 가중치 값과 연관된 인덱스 값을 포함한다.
이제 특정 실시 예들이 도면들을 참조하여 설명될 것이다.
도 1a는 제1 특정 실시 예의 모바일 디바이스(1)를 도시한다. 모바일 디바이스(1)가 본원에 설명되어 있지만, 설명된 기술은, 태블릿 컴퓨터, 랩톱 컴퓨터, 개인용 컴퓨터(PC), 서버 등을 포함하되 이에 제한되지 않는, 신경망과 관련된 가중치 값들을 검색하는 모든 유형의 컴퓨팅 디바이스에 적용될 수 있다. 도 1b는 모바일 디바이스(1)의 하드웨어를 보여준다. 모바일 디바이스(1)는 CPU(10) 형태의 처리 요소 및 신경망 처리 유닛(neural processing unit, NPU) 형태의 특수 프로세서(specialized processor)(11)를 포함한다. NPU(11)는, 신경망 관련 계산과 같은, 인공 지능 관련 계산을 수행하기 위한 하드웨어 가속기(hardware accelerator)의 한 형태이다. 모바일 디바이스(1)는 추가적으로 랜덤 액세스 메모리(RAM)(12) 형태의 저장소를 포함한다. 추가적인 비 휘발성 저장소도 제공되지만, 도 1b에는 도시되어 있지 않다. 모바일 디바이스(1)는 사용자에게 정보를 표시하기 위한 디스플레이(13) 및 통신 시스템(14)을 포함하여 모바일 디바이스(1)가 Wi-FiTM 및 LTETM와 같은 기술을 사용하여 다양한 데이터 네트워크를 통해 데이터를 전송 및 수신할 수 있도록 연결한다.
도 2는 NPU(11)와 연관된 모바일 디바이스(1)에 설치된 시스템 아키텍처(2)를 보여준다. 시스템 아키텍처(2)는 소프트웨어 어플리케이션(20)이 신경망과 연관된 계산의 하드웨어 가속을 위해 NPU(11)에 액세스할 수 있게 한다. 시스템 아키텍처(2)는 휴대 전화, 태블릿 컴퓨터 등에 사용하기 위한 안드로이드(Android)(RTM) 소프트웨어 아키텍처이다.
소프트웨어 어플리케이션(20)은 신경망 처리와 관련하여 특정 프로세스의 하드웨어 가속을 위해 기계 학습 라이브러리(machine learning library)(21)를 사용하도록 개발되었다. 런타임 환경(22)은 어플리케이션(20)으로부터 명령 및 데이터를 수신하는 안드로이드(RTM) 신경망 런타임으로 알려진 라이브러리 아래에 제공된다. 런타임 환경(22)은 소프트웨어 어플리케이션(20)과 NPU(11) 사이의 통신 및 가장 적합한 하드웨어에서 실행 테스크(task)들의 스케줄링을 담당하는 중간 계층(intermediate layer)이다. 런타임 환경(22) 아래에는 적어도 하나의 프로세서 드라이버 및 연관된 특수 프로세서, 이 경우 NPU(11)가 제공된다. 디지털 신호 프로세서, 신경망 프로세서, 그래픽 프로세서(GPU)와 같은, 런타임 환경(22) 아래에 제공된 다중 프로세서들 및 관련 드라이버들이 있을 수 있다. 그러나, 중복된 설명을 피하기 위해, NPU(11) 및 연관된 프로세서 드라이버(23)만이 제1 특정 실시 예와 관련하여 설명될 것이다.
도 3은 NPU(11)의 하위 구성 요소들을 보여준다. NPU(11)는 모바일 디바이스(1)의 RAM(12)에 대한 외부 인터페이스 상의 데이터 전송을 처리하는 직접 메모리 액세스 구성 요소(31)에 연결된 가중치 디코더(weight decoder)(30)를 포함한다. 가중치 디코더(30)는 데이터가 저장될 수 있는 레지스터(register)(301)를 포함한다. 레지스터(301)의 기능은 나중에 더 자세히 설명될 것이다. 가중치 디코더(30)로부터 디코딩된 값은 NPU(11)에 의한 후속 처리를 위해 승산기 누산기 유닛(multiplier accumulator unit)(32)으로 전송된다.
본원에 설명된 데이터 스트림 압축(compression) 및 압축 해제(decompression) 기술은 RAM(12)에 압축된 가중치 값들의 세트를 저장하는 프로세서 드라이버(23)에 의해 수행되는 압축 및 가중치 디코더(30)에서 수행되는 압축 해제에 관한 것이다. RAM(12)에 저장된 데이터에 액세스하는 것은 가중치 디코더 클럭 사이클에 비해 상대적으로 느린 프로세스이다. 따라서, RAM(12)으로부터 직접 메모리 액세스 구성 요소(31) 로의 외부 버스를 통한 데이터 전송 속도를 증가시키는 것은 NPU(11)의 성능을 최적화하는 측면에서 바람직하다. 전송 속도를 높이는 한 가지 방법은 RAM(12)에 저장되는 가중치 데이터를 압축하는 것이다. 이것은 RAM(12)으로부터 검색될 데이터의 크기를 감소시키고 처리량(throughput)을 증가시킬 수 있다. 그러나 검색되는 데이터가 신경망의 가중치 값인 경우 몇 가지 문제가 발생할 수 있다. RAM(12)에 저장될 때 손실 압축 기술(lossy compression technique)이 가중치 값들에 적용되면, 압축 오류로 인한 가중치 값들의 수정이 신경망의 정확도에 영향을 미칠 수 있다. 따라서, 손실 압축을 사용하는 것은 손실 압축이 신경망의 정확도에 상당한 영향을 미쳤는지 여부를 결정하기 위해 샘플 사용자 데이터에 대해 신중한 측정이 필요할 수 있다. 제1 특정 실시 예는 검색되는 가중치 값들을 변경하지 않고 저장된 가중치 값들의 전송 속도를 증가시키기 위해 무손실 가중치 압축 기술(lossless weight compression technique)을 적용한다.
도 4는 RAM(12)에 가중치 값들을 저장할 때 프로세서 드라이버(23)에 의해 수행되는 프로세스를 보여주는 흐름도이다. 단계(S40)에서 프로세서 드라이버(23)는 신경망에 대한 압축되지 않은(원시(raw)) 가중치 값들의 세트를 획득한다. 압축되지 않은 가중치 값들의 소스(source)는 본원에서 설명하는 기술의 목적에 중요하지 않다. 그러나, 일 예에서, 압축되지 않은 가중치 값들은 어플리케이션(20)에 의해 안드로이드 신경망 런타임에 제공될 수 있다. 가중치 값들은 일반적으로 길이가 8 또는 16 비트일 수 있지만, 임의의 길이를 가질 수 있다. 추가로, 단계(S40)에서, 압축 방법을 사용하여 압축되지 않은 가중치 값들을 압축함으로써 원래의(original) 압축된 가중치 값들의 세트가 생성된다. 이 경우, 압축되지 않은 가중치 값들은 가변 길이 코드로 변환된다. 특히, 가중치 값들은 골룸 라이스(Golomb Rice) 코드로 변환된다. 압축된 원래의 가중치 값들의 세트의 크기가 결정되고 참조(reference)를 위해 저장된다.
단계(S41)에서, 압축되지 않은 가중치 값들의 세트는 가중치 값들의 세트에서 가장 일반적인(most common) 가중치 값의 형태로 자주 발생하는 가중치 값을 식별하기 위해 프로세서 드라이버(23)에 의해 검사된다. 즉, 가중치 값들의 세트에서 각 가중치 값의 발생 빈도를 조사하여 가장 자주 발생하는 가중치 값을 가장 일반적인 가중치 값으로 식별한다.
단계(S42)에서 단계(S41)에서 식별된 가장 일반적인 가중치 값의 각 인스턴스(instance)는 인덱스 값(index value)으로 대체된다. 인덱스 값은 사용 가능한 가장 낮은 인덱스 값이 되도록 선택된다. 도 5a는 선택된 순서대로 인덱스 값들 및 대응하는 가중치 값들의 리스트를 보여준다. 인덱스 값들과 가중치 값들은 이진 형식이다. 단계(S42)의 인덱스 값은 단계들(S41 및 S42)의 이전 반복으로부터 인덱스 값에 의해 아직 취해지지 않은 숫자 시퀀스(numerical sequence)에서 가장 낮은 값이 되도록 선택된다. 제1 실시 예에서, 가중치 값들은 자연수(0 포함)인 숫자 시퀀스의 값들을 취한다.
새로운 인덱스 번호가 단계(S42)에서 추가되면 추가 단계가 필요하다. 새로운 인덱스 값은 가중치 값들의 세트의 기존 가중치 값과 동일한 값을 가질 수 있다. 인덱스 값들과 가중치 값들 사이에 설정된 가중치 값 내에서 해결하기 어려운 문제를 피하기 위해, 각 가중치 값은 시퀀스의 인덱스 값을 위한 공간(room)을 만들기 위해 새로운 인덱스 값이 추가될 때 1씩 증가한다. 도 5b는 최대 32 개의 인덱스 값들을 사용하는 경우 새롭게 도입된 인덱스 값들을 수용하기 위해 가중치 값에 대한 조정과 함께 도 5a의 인덱스 값들을 보여주는 테이블이다. 특히, 도 5b에서 0부터 31까지의 값들은 인덱스 값들로 취해지고 가중치 값들은 숫자들 시퀀스에서 인덱스 값들을 수용하기 위해 32에 의해 조정됨을 알 수 있다. 도 5a에 도시된 32 개의 인덱스 값들이 있으므로, 도 5b의 가중치 값들은 각각 32씩 증가한다.
가중치 값들 세트에 새로운 인덱스 값이 추가되고 단계(S42)에서 가중치 값이 증가된 후 수정된 가중치 값들의 세트가 형성된다. 수정된 가중치 값들의 세트에는 a) 단계(S42)에서 가장 일반적인 가중치 값이 추가된 가중치 값들의 세트 및 b) 새롭게 추가된 인덱스 값 및 수정된 가중치 값들의 세트 내에서 대체된 가장 일반적인 가중치 값과 관련하여 저장된 이전 반복으로부터의 다른 인덱스 값들이 포함된다.
새로운 인덱스 값이 추가되고 가중치 값들이 조정되면, 단계(S42)는 또한 다른 가장 일반적인 가중치 값을 수정된 가중치 값들의 세트의 인덱스로 대체할지 여부를 결정하는 결정 프로세스를 포함한다. 이 결정 프로세스는 도 6에 예시되어 있다. 단계(S60)에서 수정된 가중치 값들의 세트 내의 각 가중치 값은 골룸 라이스(Golomb Rice) 코드로의 변환에 의해 압축된다. 이 골룸 라이스(Golomb Rice) 코드로의 변환에는 각각의 인덱스 값과 수정된 가중치 값들의 세트와 연관되며 이에 포함된 각각의 연관된 가장 일반적인 값을 골룸 라이스(Golomb Rice) 코드로 변환하는 것이 포함된다. 첫 번째 반복에서, 단계(S42)가 처음으로 수행될 때, 압축된 수정된 가중치 값들의 세트의 크기가 압축된 원래의 가중치 값들의 세트의 크기와 비교된다. 압축된 수정된 가중치 값들의 세트의 크기가 압축된 원래의 가중치 값들의 세트의 크기보다 미리 결정된 임계 값보다 더 작은 경우 프로세스가 반복되어야 한다고 결정된다. 단계들(S41 및 S42)의 후속 반복에서, 압축된 수정된 가중치 값들의 세트의 크기가 이전 반복으로부터의 압축된 수정된 가중치 값들의 세트의 크기와 비교된다.
도 4에 도시된 프로세스의 첫 번째 반복에서, 하나의 인덱스 값만이 인덱스 값 0으로 대체되었다(도 5a에서 이진 형식으로 설명됨). 이 인덱스 값은 짧은 골룸 라이스(Golomb Rice) 코드로 압축되며, 이는 수정된 가중치 값들의 세트에서 대체된 가중치 값보다 저장 집약적(storage intensive)일 가능성이 적다. 이 프로세스로 인해 수정된 가중치 값들의 세트의 크기는 압축된 원래의 가중치 값들의 세트보다 작을 수 있다. 그러나 수정된 가중치 값들의 세트를 생성할 때, 원래의 압축되지 않은 가중치 값들이 다시 생성되도록 하려면 가장 일반적인 가중치 값과 인덱스 값에 대응하는 골룸 라이스 코드를 수정된 가중치 값들의 세트에 추가해야 했다. 따라서, 가장 일반적인 가중치 값의 발생 빈도의 특정 수준 아래에서, 가장 일반적인 가중치 값을 인덱스 값으로 대체해도 더 이상 압축된 수정된 가중치 값들의 세트의 크기가 줄어들지 않는다.
단계(S62)에서 단계들(S41 및 S42)을 반복할지 여부에 대한 결정이 내려진다. 압축된 수정된 가중치 값들의 세트의 크기가 단계들(S41 및 S42)의 이전 반복에서 압축된 수정된 가중치 값들의 세트보다 미리 결정된 양보다 작지 않은 경우, 단계(S62)에서의 결정은 단계(S43)으로 진행한다. 압축된 수정된 가중치 값들의 세트의 크기가 단계들(S41 및 S42)의 이전 반복에서 압축된 수정된 가중치 값들의 세트의 크기보다 작은 경우, 단계들(S41 및 S42)을 반복하는 것이 바람직하다. 그러나, 가중치 디코더(30)의 레지스터(301)는 디코딩을 위한 인덱스 값들 및 가장 일반적인 가중치 값들을 저장하는 제한된 용량만을 갖는다. 따라서 수정된 가중치 값들의 세트에서 대체해야 하는 가장 일반적인 가중치 값들의 최대 수가 있다. 제1 특정 실시 예에서, 인덱스 값들 및 관련된 가장 일반적인 가중치 값들의 최대 수는 32이다. 수정된 가중치 값들의 세트에 인덱스 값들의 최대 수가 추가되면, 단계(S62)에서의 결정은 가장 최근의 인덱스 값을 추가하는 효과에 관계없이 단계들(S41 및 S42)을 반복하지 않는 것이다. 압축된 수정된 가중치 값들의 세트의 크기가 이전 반복으로부터의 압축된 수정된 가중치 값들의 세트의 크기보다 미리 결정된 양보다 더 작고(또는 첫 번째 반복에서 압축된 원래의 가중치 값들의 세트보다 작음) 수정된 가중치 값들의 세트에서 서로 다른 인덱스 값들의 수가 32보다 작은 경우, 단계(S62)에서의 결정은 단계들(S41 및 S42)을 반복하는 것다.
단계(S43)에서 프로세서 드라이버(23)는 압축된 수정된 가중치 값들의 세트를 RAM(12)에 압축된 가중치 값들의 세트로서 저장한다. 위에서 설명한 것처럼 압축된 수정된 가중치 값들의 세트는 골룸 라이스(Golomb Rice) 코드로 표시된다.
RAM(12)에 저장된 수정된 가중치 값들의 세트는 가중치 값들이 NPU(11)에서 사용하기 위해 가중치 디코더(30)에 의해 디코딩될 수 있도록 직접 메모리 액세스 구성 요소(31)에 의해 검색될 수 있다.
도 7은 가중치 스트림(weight stream)을 압축 해제하기 위해 가중치 디코더(30)에 의해 수행되는 방법을 도시한다. 단계(S70)에서 압축된 가중치 값들의 세트는 직접 메모리 액세스 구성 요소(31)에 의해 스트림으로서 RAM(12)으로부터 검색되고 가중치 디코더(30)로 전달된다. 단계(S71)에서 인덱스 값들 및 연관된 가장 일반적인 가중치 값들이 수신된 가중치 스트림으로부터 식별된다. 이 예에서, 인덱스 값들 및 가중치 값들은 직접 메모리 액세스 구성 요소(31)에 의해 검색된 가중치 스트림의 제1 부분에 포함된다.
단계(S71)에서, 가중치 디코더(30)는 레지스터(301)에 인덱스 값들 및 연관된 가장 일반적인 가중치 값들을 저장한다. 단계(S72)에서, 모든 인덱스 값들과 가장 일반적인 가중치 값들을 레지스터(301)에 로딩한 후, 가중치 디코더(30)는 이어서 직접 메모리 액세스 구성 요소(31)로부터 수신된 압축된 가중치 값들의 세트의 각각의 수신된 값을 평가한다. 가중치 디코더(30)는 수신된 값을 평가하여 값이 압축된 가중치 스트림에서 수신된 인덱스 값들의 수보다 값이 더 높은지 또는 더 낮은지를 결정한다. 이 평가는 골룸 라이스 코드를 디코딩하여 해당 값이 인덱스 값들의 수보다 큰지 여부를 결정함으로써 수행될 수 있다. 대안적으로, 골룸 라이스 코드의 값을 결정하기 위해 룩업 테이블을 사용하여 이 평가를 수행할 수 있다. 즉, 골룸 라이스 코드를 디코딩할 필요가 없지만, 대신 그 값을 조회할 수 있다.
수신된 값이 압축된 가중치 값들의 세트와 함께 수신된 인덱스 값들의 수보다 작거나 같은 것으로 평가되면 수신된 값은 인덱스 값으로 결정된다. 이는 인코딩 프로세스의 단계(S42)에서 인덱스 값들이 가장 낮은 값들로 선택되었기 때문에 이해될 수 있다. 이 경우, 방법은 수신된 인덱스 값이 레지스터(301)에서 조회되고 인덱스 값이 인덱스 값에 의해 표현되는 연관된 가장 일반적인 값으로 대체되는 단계(S73)로 진행된다.
수신된 값이 압축된 가중치 값들과 함께 수신된 인덱스 값들의 수보다 큰 것으로 평가되면, 수신된 값이 가중치 값으로 결정됩니다. 이 경우, 방법은 직접 메모리 액세스 구성 요소(31)로부터 가중치 스트림의 제1 부분에서 수신된 인덱스 값들의 수와 동일한 값을 감산함으로써 가중치 값이 조정되는 단계(S74)로 진행한다. 이 단계는 단계(S42)에서 만들어진 가중치 값에 대한 조정을 반대로 하는 효과가 있다.
단계(S73) 또는 단계(S74) 이후에 디코더는 단계(S75)에서 각 가중치 값을 디코딩하고 가중치 값을 승산기 누산기 유닛(32)에 전달한다. NPU(11)의 동작에 대한 추가 설명은 본원에 설명된 기술과 관련이 없기 때문에 본원에 제공되지 않는다. NPU에 의한 처리의 적합한 예는 공지되어 있으며 종래 기술에서 이용 가능하다.
이제 제2 특정 실시 예가 설명될 것이다. 제1 실시 예에서 신경망의 가중치 값들은, 0을 포함한, 자연수였다. 제2 실시 예에서, 가중치 값들은 부호가 있으며 양수 또는 음수 값들을 취할 수 있다. 다시 도 4를 참조하면, 압축되지 않은 가중치 값들의 세트가 획득된다. 가중치 값들은 이진 형식이며 양수 또는 음수 값들을 취할 수 있다. 가중치 값의 부호는 이진 시퀀스의 첫 번째 비트로 표시되며 부호 비트(sign bit)라고 한다. 부호 비트의 값이 0이면 이진 값은 양수이고 부호 비트의 값이 1이면 이진 값은 음수이다.
단계(S41)에서 가장 일반적인 가중치 값은 제1 특정 실시 예와 관련하여 설명된 바와 같이 식별된다. 단계(S42)에서 가장 일반적인 가중치 값이 인덱스 값으로 대체된다. 제2 특정 실시 예에서, 단계들(S41 및 S42)의 첫 번째 반복에서, 가장 일반적인 값은 인덱스 값 0으로 대체된다. 두 번째로 가장 일반적인 값이 식별되는 단계들(S41 및 S42)의 두 번째 반복에서, 단계(S42)에서 선택된 인덱스 값은 -1(100000001)이다. 다음 반복에서, 선택된 인덱스 값은 1이고, 그 뒤에 -2, 2, -3, 3 등이 있다. 즉, 단계들(S41 및 S42)의 서로 다른 반복들에서 식별된 가장 일반적인 값들을 나타내도록 선택된 인덱스 값은 압축될 때 가능한 가장 작은 골룸 라이스 코드로 표현되도록 가장 낮은 절대 값을 갖도록 선택된다.
도 8a는 32 개의 인덱스 값들이 제공되고 가중치 값들이 부호를 갖는 경우에 대한 인덱스 값들 및 연관된 가장 일반적인 가중치 값들의 테이블을 보여준다. 이 경우, 인덱스 값들은 값이 -16에서 15 사이이다(이진 형식으로 표시됨).
제1 실시 예에서, 단계(S42)에서 각 가중치 값의 값은 가중치들의 세트에 인덱스 값이 추가될 때마다 1씩 증가되었다. 제2 실시 예에서, 첫 번째 반복에서, 인덱스 값 0이 도입될 때, 양의 가중치 값들 및 수정된 가중치 값들의 세트의 값 0이 1씩 증가된다. 두 번째 반복에서, 값 -1이 인덱스 값으로 도입되면, 음의 가중치 값이 인덱스 값 -1을 수용하기 위해 1씩 감소한다. 이 프로세스는 단계들(S41 및 S42)가 반복됨에 따라 번갈아 가며 나타난다. 즉, 가중치 값들은 인덱스 값으로 대체되지 않은 데이터 스트림 내에서 양의 가중치 값들과 0의 각각의 값을 증가 시키고 데이터 스트림 내에서 인덱스 값으로 대체되지 않은 음의 가중치 값들의 각각을 인덱스 값들이 가중치 값들의 세트에 명확하게 추가될 수 있도록 충분한 양만큼 줄이도록 조정된다. 도 8b는 값들의 시퀀스 및 가중치 값들을 조정하여 인덱스 값들이 수용되는 방식을 보여준다. 도 5b와 유사하게, 도 8b에 표시된 상황은 가중치 값들의 세트 내에서 가장 일반적인 값들을 대체하기 위해 최대 32 개의 인덱스 값들이 사용된 경우이다. 인덱스 값들이 -16에서 15까지 운영되는 것을 볼 수 있다. 가중치 값 [0] 및 양수 가중치 값들의 경우 인덱스 값들을 수용하기 위해 오프셋 +16이 적용된다. 음수 가중치 값들의 경우 오프셋 -16이 적용된다.
가중치 디코더(30)에서, 도 7을 참조하여 제1 실시 예에서 설명된 프로세스는 다음과 같은 차이를 갖는다. 직접 메모리 액세스 구성 요소(31)로부터 수신된 값이 인덱스 값인지 여부를 결정할 때, 수신된 값의 부호가 결정된 다음 수신된 값의 절대 값이 해당 부호의 가중치 값들에 대한 관련 오프셋보다 큰지 여부가 결정된다. 인덱스 값들을 수용하는 데 필요한 가중치 값들에 대한 오프셋이 양의 및 음의 가중치 값들에 대해 다를 수 있으므로 가중치 디코더(30)는 수신된 값의 부호에 기초하여 관련 오프셋을 식별할 필요가 있다. 수신된 값이 오프셋 값보다 작거나 같기 때문에 인덱스 값으로 결정되면, 대응하는 가중치 값은 제1 실시 예에서 설명된 바와 같이 단계(S73)에서 조회되고 대체된다. 수신된 값이 가중치 값으로 결정되면, 가중치 값은 단계(S74)에서 관련 오프셋 값에 의해 조정된다.
전술한 기술은 제1 및 제2 실시 예들에서 설명되었다. 그러나, 추가적인 실시 예가 예상된다. 제1 및 제2 실시 예들에서, 방법은 신경망과 관련된 가중치 값들의 세트에 적용된다. 그러나, 다른 실시 예들에서, 방법은 가중치 값들의 세트에 적용될 수 있다. 예를 들어, 동일한 인덱스 값들과 가장 일반적인 가중치 값들은 신경망의 다른 계층들과 관련된 가중치 값들의 세트 또는 신경망들이 유사한 가중치 값 구조를 갖는 경우 다른 신경망들과 관련된 가중치 값들의 세트에서 사용될 수 있다. 이 구현은 가중치 값들의 세트가 매우 유사하고 가장 일반적인 가중치 값들이 신경망들 또는 신경망 내의 계층들 사이에 유사한 경우에 유용할 수 있다. 이 구현은 인덱스 값들 및 연관된 가장 일반적인 값들을 직접 메모리 액세스 구성 요소(31)로부터 수신된 데이터와 연관시키는 비트 비용의 감소를 허용한다. 추가 실시 예에서, 방법은 신경망과 연관된 가중치 값들의 세트의 전부가 아닌 일부에 적용될 수 있다. 이 구현은 신경망의 다른 노드들과 관련하여 다른 가중치 값들이 가장 일반적인 경우 압축을 개선할 수 있고, 신경망 또는 신경망의 계층에 대한 가중치 값들의 서로 다른 서브세트들에 대해 서로 다른 가장 일반적인 가중치들을 선택하면 이점이 있다.
제1 및 제2 실시 예들은 골룸 라이스 코드로 변환되는 이진 형태의 가중치 값들의 세트를 설명한다. 이진 값들은 도 5a 및 도 8a에 도시되어 있다. 다른 실시 예들에서, 값들은 다른 형태일 수 있다. 예를 들어, 이미 골룸 라이스 코드 형태로 된 가중치 값들에 이 기술을 직접 사용할 수 있다. 이러한 구현에서, 가장 빈번하게 발생하는 가중치 값이 선택되고 인덱스 값으로 대체될 수 있으며, 수정된 가중치 값들의 세트의 크기를 결정하기 위해 바이너리에서 골룸 라이스 코드로 변환할 필요가 없다.
제1 및 제2 실시 예들은 압축 방법으로 골룸 라이스를 사용했다. 그러나 기술은 이것으로 제한되지 않는다. 예를 들어, 다른 실시 예에서, 고정 길이 이진 스트링에 대해, 런 길이 인코딩(run length encoding)은 더 낮은 값이 다른 값들보다 더 효율적으로 압축될 수 있도록 하기 때문에 골룸 라이스 코드 대신에 런 길이 인코딩이 사용될 수 있다.
제1 및 제2 실시 예들은 안드로이드(RTM) 신경망 아키텍처에 적용된 본 발명을 설명했다. 그러나 본원에 설명된 기술은 상황에 따라 다른 소프트웨어 아키텍처에 적용될 수 있다. 예를 들어, 서버 기반 구현의 콘텍스트에서 다른 소프트웨어 아키텍처가 사용된다.

Claims (15)

  1. 가중치 값(weight value)들의 세트를 압축하는 방법에 있어서,
    비압축 가중치 값들의 세트를 획득하는 단계-상기 비압축 가중치 값들의 세트는 신경망(neural network)과 관련된 복수의 가중치 값들을 포함-;
    상기 가중치 값들의 세트 내에서 자주 발생하는 가중치 값을 식별하는 단계;
    상기 가중치 값들의 세트 내에서 자주 발생하는 가중치 값의 각 발생을 인덱스 값(index value)으로 대체하는 단계; 및
    상기 자주 발생하는 가중치 값과 상기 인덱스 값을 상기 가중치 값들의 세트와 연관시키는 단계를 포함하고,
    상기 인덱스 값은 대체되는 상기 자주 발생하는 가중치 값보다 저장 집약도가 낮은(less storage intensive), 방법.
  2. 제1항에 있어서, 자주 발생하는 가중치 값을 식별, 상기 자주 발생하는 가중치 값의 각 발생을 대체, 및 상기 자주 발생하는 가중치 값 및 상기 인덱스 값을 연관시키는 상기 단계들은 복수의 서로 다른 인덱스 값들 및 연관된 자주 발생하는 가중치 값들을 생성하기 위해 반복되는 단계들의 시퀀스(sequence)를 형성하는, 방법.
  3. 제2항에 있어서, 상기 단계들의 시퀀스의 각 반복 이후, 상기 방법은 상기 가중치 값들의 세트의 크기 감소를 측정하는 단계를 포함하고, 상기 방법은 상기 압축된 가중치 값들의 세트의 크기에서 측정된 감소가 미리 결정된 임계 값보다 작을 때까지 상기 단계들의 시퀀스의 추가 반복을 수행하는 단계를 포함하는, 방법.
  4. 제2항에 있어서, 상기 복수의 가중치 값들은 수치의(numerical) 값들이고, 상기 복수의 자주 발생하는 가중치 값들을 나타내는 데 사용되는 인덱스들은 수치의 시퀀스에서 가장 낮은 값들인, 방법.
  5. 제4항에 있어서, 상기 비압축 가중치 값들의 세트에 추가된 상이한 인덱스 값들의 수와 동일한 양만큼 인덱스 값들로 대체되지 않은 상기 가중치 값들의 세트 내의 상기 가중치 값들의 각각의 값을 증가시키는 단계를 더 포함하는, 방법.
  6. 제2항에 있어서, 상기 복수의 가중치 값들은 양의 또는 음의 값을 취할 수 있는 수치의 값들이고, 상기 복수의 인덱스 값들은 상기 수치의 시퀀스에서 가장 낮은 절대 값들인, 방법.
  7. 제6항에 있어서, 인덱스 값으로 대체되지 않은 상기 가중치 값들의 세트 내에서 상기 양의 가중치 값들의 각각의 값을 증가시키는 단계 및 상기 비압축 가중치 값들의 세트에 상기 인덱스 값들이 명확하게(unambiguously) 추가될 수 있도록 상기 가중치 값들의 세트 내의 인덱스 값으로 대체되지 않은 상기 음의 가중치 값들의 각각을 충분한 감소시키는 단계를 더 포함하는, 방법.
  8. 제1항에 있어서, 상기 가중치 값들은 가변 길이 코드인, 방법.
  9. 제8항에 있어서, 각 인덱스 값은 상기 가중치 값들의 세트 내에서 대체되는 상기 자주 발생하는 가중치 값보다 더 짧은 길이를 갖도록 선택된 가변 길이 코드인, 방법.
  10. 제9항에 있어서, 상기 인덱스 값은 이용 가능한 가장 짧은 가변 길이 코드가 되도록 선택되는, 방법.
  11. 신경망과 관련된 복수의 가중치 값들을 포함하는 압축된 가중치 값들의 세트를 압축 해제하는 방법에 있어서,
    상기 압축된 가중치 값들의 세트와 연관된 인덱스 값 및 대응하는 자주 발생하는 가중치 값을 식별하는 단계;
    상기 압축된 가중치 값들의 세트를 판독하고 상기 가중치 값들의 세트에서 상기 인덱스 값의 하나 이상의 인스턴스들을 식별하는 단계;
    상기 가중치 값들의 세트에서 상기 인덱스 값의 각 인스턴스를 상기 자주 발생하는 가중치 값으로 대체하는 단계를 포함하는, 압축된 가중치 값들의 세트를 압축 해제하는 방법.
  12. 제11항에 있어서, 인덱스 값 및 대응하는 자주 발생하는 가중치 값을 식별, 상기 가중치 값들의 세트에서 상기 인덱스 값을 판독하고 식별, 및 상기 가중치 값들의 세트에서 상기 인덱스 값의 각 인스턴스를 대체하는 상기 단계들은 단계들의 시퀀스를 형성하고, 상기 단계들의 시퀀스는 복수의 인덱스 값들 및 상기 압축된 가중치 값들의 세트와 연관된 대응하는 자주 발생하는 가중치 값들 각각에 대해 반복되는, 압축된 가중치 값들의 세트를 압축 해제하는 방법.
  13. 제12항에 있어서, 먼저 상기 복수의 인덱스 값들 및 자주 발생하는 가중치 값들을 처리 요소의 저장소에 로딩(loading)하고 이어서 상기 압축된 가중치 값들의 세트로부터 상기 복수의 가중치 값들 중 각각을 판독하여 상기 가중치 값들의 압축된 데이터 세트를 순차적으로 디코딩하는 단계를 더 포함하고, 처리되는 상기 압축된 가중치 값들의 세트에서 인덱스 값이 판독될 때마다, 상기 처리 요소는 상기 저장소로부터 상기 인덱스 값과 연관된 상기 자주 발생하는 가중치 값을 판독하고 상기 인덱스 값을 상기 처리된 가중치 값들의 세트에서 상기 연관된 자주 발생하는 가중치 값으로 대체하는, 압축된 가중치 값들의 세트를 압축 해제하는 방법.
  14. 제12항에 있어서, 상기 가중치 값들의 세트의 상기 인덱스 값의 각 인스턴스를 상기 자주 발생하는 가중치 값으로 대체하는 단계는 상기 압축된 가중치 값들의 세트에서 가중치 값의 수치의 값을 식별하는 단계 및 상기 가중치 값의 상기 수치의 값이 상기 가중치 값들의 세트와 연관된 인덱스 값들의 수보다 작거나 같은 값을 갖는지 여부를 결정하는 단계를 포함하는, 압축된 가중치 값들의 세트를 압축 해제하는 방법.
  15. 압축된 가중치 값들의 세트를 압축 해제하도록 적응된 처리 요소로서, 상기 압축된 가중치 값들의 세트는 신경망과 관련된 복수의 가중치 값들을 포함하며, 상기 처리 요소는:
    상기 압축된 가중치 값들의 세트와 연관된 인덱스 값 및 대응하는 자주 발생하는 가중치 값을 식별하고;
    상기 압축된 가중치 값들의 세트를 판독하고 상기 가중치 값들의 세트의 상기 인덱스 값의 하나 이상의 인스턴스를 식별하고;
    상기 가중치 값들의 세트의 상기 인덱스 값의 각 인스턴스를 상기 자주 발생하는 가중치 값으로 대체하도록 적응된, 처리 요소.
KR1020210037886A 2020-03-25 2021-03-24 가중치 값의 압축 및 압축 해제 KR20210119907A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/830,027 2020-03-25
US16/830,027 US20210303975A1 (en) 2020-03-25 2020-03-25 Compression and decompression of weight values

Publications (1)

Publication Number Publication Date
KR20210119907A true KR20210119907A (ko) 2021-10-06

Family

ID=77809268

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210037886A KR20210119907A (ko) 2020-03-25 2021-03-24 가중치 값의 압축 및 압축 해제

Country Status (3)

Country Link
US (1) US20210303975A1 (ko)
KR (1) KR20210119907A (ko)
CN (1) CN113452377A (ko)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019086104A1 (en) * 2017-10-30 2019-05-09 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Neural network representation
US11663476B2 (en) * 2017-12-15 2023-05-30 Electronics And Telecommunications Research Institute Method and device for providing compression and transmission of training parameters in distributed processing environment
US11588499B2 (en) * 2018-11-05 2023-02-21 Samsung Electronics Co., Ltd. Lossless compression of neural network weights
WO2020190772A1 (en) * 2019-03-15 2020-09-24 Futurewei Technologies, Inc. Neural network model compression and optimization
CN110163370B (zh) * 2019-05-24 2021-09-17 上海肇观电子科技有限公司 深度神经网络的压缩方法、芯片、电子设备及介质
TW202109380A (zh) * 2019-06-28 2021-03-01 法商內數位Ce專利控股簡易股份公司 迴旋神經網路之壓縮

Also Published As

Publication number Publication date
CN113452377A (zh) 2021-09-28
US20210303975A1 (en) 2021-09-30

Similar Documents

Publication Publication Date Title
US11531469B2 (en) Arrangements for storing more data in memory
US20210218805A1 (en) Arrangements for Communicating and Processing Data in a Computing System
US20220092031A1 (en) Data compression method and computing device
US7864083B2 (en) Efficient data compression and decompression of numeric sequences
US11018692B2 (en) Floating point data set compression
CN110728350A (zh) 用于机器学习模型的量化
KR20220075407A (ko) 뉴럴 네트워크 표현 형식
US11960986B2 (en) Neural network accelerator and operating method thereof
US20220114454A1 (en) Electronic apparatus for decompressing a compressed artificial intelligence model and control method therefor
US10891758B2 (en) Geometry encoder
US10318891B1 (en) Geometry encoder
CN114640354A (zh) 数据压缩方法、装置、电子设备及计算机可读存储介质
KR20210119907A (ko) 가중치 값의 압축 및 압축 해제
KR20210086233A (ko) 완화된 프루닝을 통한 행렬 데이터 처리 방법 및 그 장치
CN114841325A (zh) 神经网络模型的数据处理方法、介质及电子设备
KR20230157339A (ko) 활성화 함수들의 효율적인 압축
CN113364466A (zh) 数据处理系统
US11966597B1 (en) Multi-domain configurable data compressor/de-compressor
KR20240024015A (ko) 신경망들에 대한 압축 및 압축해제
US20240202347A1 (en) Method and apparatus for power efficient lossless compression and decompression
CN117951100A (zh) 数据压缩方法、装置及计算机存储介质
Mohamed Wireless Communication Systems: Compression and Decompression Algorithms
Takafuji et al. GPU implementations of deflate encoding and decoding
JP2022182225A (ja) データ処理システムおよびデータ処理方法
KR20220046796A (ko) 전자 장치 및 그 제어 방법