KR20190137684A - 신경망의 희박 활성화 맵의 무손실 압축 - Google Patents
신경망의 희박 활성화 맵의 무손실 압축 Download PDFInfo
- Publication number
- KR20190137684A KR20190137684A KR1020190053965A KR20190053965A KR20190137684A KR 20190137684 A KR20190137684 A KR 20190137684A KR 1020190053965 A KR1020190053965 A KR 1020190053965A KR 20190053965 A KR20190053965 A KR 20190053965A KR 20190137684 A KR20190137684 A KR 20190137684A
- Authority
- KR
- South Korea
- Prior art keywords
- tensor
- block
- activation map
- encoding
- compression
- Prior art date
Links
- 230000006835 compression Effects 0.000 title claims abstract description 152
- 238000007906 compression Methods 0.000 title claims abstract description 152
- 230000004913 activation Effects 0.000 title claims abstract description 90
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 38
- 238000000034 method Methods 0.000 claims abstract description 42
- 230000006837 decompression Effects 0.000 claims description 7
- 230000001131 transforming effect Effects 0.000 claims description 2
- 241000170567 Gollum Species 0.000 claims 1
- 238000012549 training Methods 0.000 description 11
- 230000003340 mental effect Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 5
- 238000013139 quantization Methods 0.000 description 3
- 102100029095 Exportin-1 Human genes 0.000 description 2
- 102100029091 Exportin-2 Human genes 0.000 description 2
- 101710147878 Exportin-2 Proteins 0.000 description 2
- 102100032833 Exportin-4 Human genes 0.000 description 2
- 101710147879 Exportin-4 Proteins 0.000 description 2
- 102100032839 Exportin-5 Human genes 0.000 description 2
- 108700037230 Exportin-5 Proteins 0.000 description 2
- 238000002059 diagnostic imaging Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 108700002148 exportin 1 Proteins 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000003709 image segmentation Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000003058 natural language processing Methods 0.000 description 2
- 210000000653 nervous system Anatomy 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 240000001973 Ficus microcarpa Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/10—Interfaces, programming languages or software development kits, e.g. for simulating neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3059—Digital compression and data reduction techniques where the original information is represented by a subset or similar information, e.g. lossy compression
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6064—Selection of Compressor
- H03M7/607—Selection between different types of compressors
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/70—Type of the data to be coded, other than image and sound
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)
- Software Systems (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Neurology (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
신경망의 활성화 맵의 무손실 압축을 제공하는 시스템 및 방법이 제공된다. 이 시스템에는 포맷터와 인코더가 포함되어 있다. 포맷터는 활성화 맵에 대응하는 텐서를 H x W x C의 사이즈를 갖는 적어도 하나의 값 블록으로 포맷팅한다(여기서, H는 텐서의 높이를, W는 텐서의 폭을, C는 텐서의 채널 수를 나타냄). 인코더는 적어도 하나의 무손실 압축 모드를 사용하여 적어도 하나의 블록을 텐서의 다른 블록들과 독립적으로 인코딩한다. 적어도 하나의 블록을 인코딩하도록 선택된 적어도 하나의 무손실 압축 모드는 텐서의 다른 블록을 인코딩하도록 선택된 무손실 압축 모드와 다를 수 있다.
Description
본 명세서에서 개시된 주제는 일반적으로 메모리 요구를 줄이기 위한, 특히 신경망의 트레이닝 동안 신경망의 희박 활성화 맵의 무손실 인코딩/디코딩 시스템 및 방법을 제공하기 위한 것이다.
심신경망(Deep neural network)은 최근 컴퓨터 비전(이미지 분류, 이미지 분할), 자연어 처리(단어 수준 예측, 음성 인식 및 기계 번역)에서부터 의료 영상화에 이르기까지 광범위한 응용 분야에 지배적인 역할을 해 왔다. 전용 하드웨어는 가능한한 효율적으로 심신경망을 실행하도록 설계되었다. 그러나 소프트웨어 측면에서, 일부 연구는 런타임 동안 이러한 신경망의 메모리 및 계산 요구 사항을 최소화하는데 중점을 두고 있다.
제한된 메모리를 갖는 임베디드 장치상에서 신경망을 훈련 시키려고 할 때, 가능한 한 알고리즘의 메모리 요구를 최소화하는 것이 중요하다. 훈련을 하는 동안 대부분의 메모리는 실제로 활성화 맵에 의해 점유된다. 예를 들어, 현재의 심신경망 시스템의 활성화 맵은 시스템에 필요한 총 메모리의 약 60 %에서 85 %를 소모한다. 따라서 활성화 맵과 관련된 메모리 사용 공간을 줄이는 것은 훈련 알고리즘의 전체 메모리 사용량을 줄이는 데 중요한 부분이 된다.
정리된 선형 유닛(Rectified Linear Unit: 이하, ReLU)이 활성화 기능으로서 사용되는 신경망에서, 활성화 맵은 희소(또는, 희박)하게 되는 경향이 있다. 예를 들어, Inception-V3 모델에서 대다수의 활성화 맵은 희박성이 50 % 이상이고 경우에 따라 90 %를 초과한다. 따라서 훈련 알고리즘의 메모리 요구 사항을 줄이기 위해 이 희박성을 목표로하는 압축 시스템에 대한 강력한 시장 요구가 있어 왔다.
본 발명의 목적은 신경망의 트레이닝 동안 신경망의 메모리 및 계산 요구 사항을 최소화할 수 있는 희박 활성화 맵의 무손실 인코딩/디코딩 시스템 및 방법을 제공하는데 있다.
본 발명의 예시적인 실시 예는 포맷터 및 인코더를 포함할 수 있는 신경망의 활성화 맵을 무손실 압축하기 위한 시스템을 제공한다. 포맷터는 활성화 맵에 대응하는 텐서를 적어도 하나의 값 블록으로 포맷팅할 수 있으며, 상기 텐서의 크기는 H x W x C이고, H는 텐서의 높이, W는 텐서의 폭, C는 텐서의 채널 수를 나타낸다. 인코더는 적어도 하나의 무손실 압축 모드를 사용하여 적어도 하나의 값 블록을 텐서의 다른 블록들과 독립적으로 인코딩할 수 있다. 일 실시 예에서, 적어도 하나의 무손실 압축 모드는 지수-골룸(Exponential-Golomb) 인코딩, 희박-지수-골룸(Sparse-Exponential-Golomb) 인코딩, 희박-지수-최소 제거(Sparse-Exponential-Golomb-RemoveMin) 인코딩, 골룸-라이스(Golomb-Rice) 인코딩, 지수-가수(Exponent-Mantissa) 인코딩, 제로 인코딩(Zero-encoding), 고정 길이(Fixed length) 인코딩, 그리고 희박 고정 길이(Sparse Fixed length) 인코딩을 포함하는 그룹으로부터 선택된다. 다른 실시 예에서, 적어도 하나의 블록을 인코딩하도록 선택된 적어도 하나의 무손실 압축 모드는 텐서의 다른 블록을 인코딩하도록 선택된 무손실 압축 모드와 다를 수 있다. 또 다른 실시 예에서, 인코더는 복수의 무손실 압축 모드를 사용하여 텐서의 다른 블록들과 독립적으로 적어도 하나의 블록을 인코딩함으로써 적어도 하나의 블록을 추가로 인코딩할 수 있다.
다른 예시적인 실시 예는 신경망의 활성화 맵을 무손실 압축하는 방법을 제공하는데, 이 방법은 포맷터에서 H x W x C(여기서, H는 텐서의 높이, W는 텐서의 폭, C는 텐서의 채널 수)의 사이즈를 갖는 텐서로서 구성된 적어도 하나의 활성화 맵을 수신하는 단계, 포매터에 의해 텐서를 적어도 하나의 값 블록으로 포맷팅하는 단계, 그리고 적어도 하나의 무손실 압축 모드를 사용하여 상기 텐서의 다른 블록들과 독립적으로 상기 적어도 하나의 블록을 인코더에 의해 인코딩하는 단계를 포함한다.
또 다른 예시적인 실시 예는 신경망의 활성화 맵을 무손실로 압축 해제하는 방법을 제공하며, 이 방법은, 활성화 맵의 값들의 적어도 하나의 압축 블록을 나타내는 비트스트림을 디코더에서 수신하는 단계, 상기 디코더에 의해, 적어도 하나의 압축 해제값 블록을 형성하기 위해 상기 적어도 하나의 압축값 블록을 압축 해제하는 단계를 포함하되, 상기 적어도 하나의 압축 해제값 블록은 상기 적어도 하나의 압축값 블록을 압축하는데 사용되는 적어도 하나의 무손실 압축 모드에 대응하는 적어도 하나의 압축 해제 모드를 사용하여 상기 활성화 맵의 다른 블록들로부터 독립적으로 압축 해제되며; 그리고 상기 적어도 하나의 블록을 H x W x C(여기서, H는 텐서의 높이, W는 텐서의 폭, C는 텐서의 채널 수)의 사이즈를 갖는 텐서(압축 해제된 활성화 맵)로 변형시키는 단계를 포함한다.
상술한 특징에 따른 본 발명에 따르면, 트레이닝 동안 신경망의 메모리 및 계산 요구 사항을 최소화하는 신경망의 희박 활성화 맵의 무손실 인코딩/디코딩 시스템을 구현할 수 있다.
이하의 섹션에서, 본 명세서에 개시된 주제의 특징은 도면에 도시된 예시적인 실시 예를 참조하여 설명하기로 한다.
도 1a 및 도 1b는 본 발명의 실시 예에 따라 심신경망의 활성화 맵을 인코딩/디코딩하기 위한 압축기 및 압축 해제기의 예시적인 실시 예들을 각각 도시한다.
도 2a 및 도 2b는 각각 본 발명의 실시 에에 따른 심신경망의 활성화 맵의 인코딩 방법 및 디코딩 방법의 실시 예를 도시한 것이다.
도 3은 본 발명의 특징에 따른 신경망의 계층에서 활성화 맵의 동작 순서를 도시한다.
도 1a 및 도 1b는 본 발명의 실시 예에 따라 심신경망의 활성화 맵을 인코딩/디코딩하기 위한 압축기 및 압축 해제기의 예시적인 실시 예들을 각각 도시한다.
도 2a 및 도 2b는 각각 본 발명의 실시 에에 따른 심신경망의 활성화 맵의 인코딩 방법 및 디코딩 방법의 실시 예를 도시한 것이다.
도 3은 본 발명의 특징에 따른 신경망의 계층에서 활성화 맵의 동작 순서를 도시한다.
이하의 상세한 설명에서, 본 발명의 완전한 이해를 제공하기 위해 다수의 특정 세부 사항이 설명된다. 그러나 당업자는 개시된 특징들이 이러한 특정 세부 사항들 없이 실시될 수 있음을 이해할 것이다. 다른 예들에서, 공지된 방법들, 절차들, 구성 요소들 및 회로들은 여기에 개시된 주제를 모호하게 하지 않기 위해 상세히 설명되지 않았다.
본 명세서에서 "하나의 실시 예" 또는 "일 실시 예"는 본 실시 예와 관련하여 기술된 특정 특징, 구조 또는 특성이 본 명세서에 개시된 적어도 하나의 실시 예에 포함될 수 있다는 것을 의미한다. 따라서, 본 명세서 전체에 걸쳐 "하나의 실시 예에서" 또는 "일 실시 예에서" 또는 "일 실시 예에 따라"(또는, 유사한 의미를 갖는 다른 표현들)은 모두 반드시 동일한 실시 예를 지칭하지는 않는다. 또한, 특정 피처, 구조 또는 특성은 하나 이상의 실시 예에서 임의의 적합한 방식으로 결합될 수 있다. 이와 관련하여, 본 명세서에 사용된 바와 같이, "예시적인"이라는 단어는 "예시, 실례 또는 예시를 제공함"을 의미한다. "예시적인" 것으로 여기에서 설명된 임의의 실시 예는 다른 실시 예보다 반드시 바람직하거나 유리한 것으로 해석되어서는 안된다. 또한, 여기에서 논의의 문맥에 따라, 단수는 대응하는 복수의 형태를 포함할 수 있고, 복수의 용어는 상응하는 단수 형태를 포함할 수 있다. 본 명세서에 도시되고 논의된 다양한 도면(구성 요소도 포함)은 단지 예시적인 목적을 위한 것이며, 실제 척도로 그려진 것은 아니라는 점에 유의해야 한다. 마찬가지로, 다양한 파형 및 타이밍도가 단지 예시적인 목적을 위해 도시된다. 예를 들어, 일부 요소의 치수는 명확성을 위해 다른 요소에 비해 과장될 수 있다. 또한, 적절한 것으로 고려되는 경우, 참조 부호는 대응하는 그리고/또는 유사한 요소를 나타내기 위해 도면들 사이에서 반복되었다.
본 명세서에 사용된 용어는 특정 예시적인 실시 예를 설명하기 위한 것이며, 청구된 주제를 한정하려는 것은 아니다. 본원에서 사용된 단수 형태 "a", "an" 및 "the"는 문맥상 다르게 지시하지 않는한 복수 형태를 포함하고자 한다. 본 명세서에서 사용되는 "포함하다" 그리고/또는 "포함하는"이라는 용어는 명시된 특징, 정수, 단계, 동작, 구성 요소 그리고/또는 구성 요소의 존재를 나타내지만, 존재를 배제하지 않는다는 것이 잘 이해될 것이다. 또는, 하나 이상의 다른 특징, 정수, 단계, 동작, 요소, 구성 요소 그리고/또는 그룹의 추가를 포함할 수 있다. 여기에 사용된 "첫 번째", "두 번째" 등의 용어는 앞에 명시된 명사의 레이블로 사용되며 명시적으로 정의되지 않은 한 모든 유형의 순서(예 : 공간적, 시간적, 논리적 등)를 암시하지 않는다, 또한, 동일하거나 유사한 기능을 갖는 부품, 부품, 블록, 회로, 유닛 또는 모듈을 지칭하기 위해 둘 이상의 도면에 걸쳐 동일한 참조 번호가 사용될 수 있다. 그러나 이러한 사용법은 설명의 간소화 및 논의의 용이함을 위해서만 사용된다. 그러한 구성 요소 또는 유닛의 구성 또는 구조적 세부 사항이 모든 실시 예에 걸쳐 동일하다는 것을 의미하지 않거나 공통으로 참조된 부품/모듈이 본 명세서에 개시된 특정 실시 예의 교시를 구현하는 유일한 방법이라는 것을 의미하지는 않는다.
달리 정의되지 않는 한, 본 명세서에서 사용된 모든 용어(기술 및 과학 용어 포함)는 이 주제가 속하는 기술 분야의 당업자에 의해 일반적으로 이해되는 것과 동일한 의미를 갖는다. 또한, 일반적으로 사용되는 사전에서 정의된 용어와 같은 용어는 관련 기술의 맥락에서 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 이상적인 또는 지나치게 형식적인 의미로 해석되지 않는 한, 명시적인 것으로 여기에서 정의된다.
본 명세서에서 개시된 주제는, 특히 심신경망의 훈련 동안 메모리 요구 사항을 감소시키기 위해, 신경망의 활성화 맵의 무손실 인코딩/디코딩을 제공하는 시스템 및 방법에 관한 것이다. 인코딩 및 디코딩 단계는 다른 계층의 활성화 맵과 독립적으로, 그리고 필요에 따라 학습 알고리즘에 의해 신경망의 각 계층에 대한 활성화 맵에 대해 수행될 수 있다. 본 명세서에 개시된 무손실 인코딩/디코딩 기술은 모든 수준의 희박성(0 % 및 거의 100 % 희박성 포함)을 압축할 수 있지만, 여기에 개시된 기술은 활성화 맵에서 제로 값의 수가 상대적으로 높으면 최적화될 수 있다. 즉, 본 명세서에 개시된 시스템 및 방법은 상응하는 높은 정도의 희박성에 대해보다 높은 수준의 압축을 달성한다. 부가적으로, 본 명세서에 개시된 주제는 보다 큰 수준의 압축을 위해 활성화 맵의 데이터의 희박성을 이용하기 위해 사용될 수 있는 기존 압축 알고리즘에 대한 몇 가지 수정을 제공한다.
일 실시 예에서, 인코더는 입력으로서 H x W x C 사이즈의 텐서를 수신하도록 구성될 수 있다(H는 입력 텐서의 높이, W는 입력 텐서의 폭, 그리고 C는 입력 텐서의 채널 수에 대응). 수신된 텐서는 본 명세서에서 "압축 유닛"으로 지칭되는 더 작은 블록으로 포맷될 수 있다. 압축 유닛은 다양한 상이한 압축 모드를 사용하여 독립적으로 압축될 수 있다. 인코더에 의해 생성된 출력은 압축된 비트스트림이다. 압축 유닛이 압축 해제될 때, 그것은 H x W x C 사이즈의 텐서의 적어도 일부로서 원래의 형상으로 재포맷된다.
여기에 개시된 기술들은, 예를 들어, 이에 한정되는 것은 아니지만, 컴퓨터 비젼(이미지 분류, 이미지 세그멘테이션), 자연어 처리(단어 분류), 및 텍스트 표현(예를 들어, 레벨 예측, 음성 인식 및 기계 번역) 및 의료 영상과 같은 애플리케이션을 제공하도록 구성된 신경망의 활성화 맵에 대한 메모리 요구를 감소시키기 위해 적용될 수 있다. 신경망 애플리케이션은 자율 차량, 모바일 장치, 로봇 그리고/또는 기타 저전력 장치(예를 들면, 무인기) 내에서 사용될 수 있다. 여기에 개시된 기술들은 훈련 동안 그리고/또는 전용 장치에 내장된 신경망에 의한 메모리 소비를 감소시킨다. 여기에 개시된 기술들은 범용 처리 장치 또는 전용 장치에서 구현될 수 있다.
도 1a 및 도 1b는 본 명세서에 개시된 특징에 따른 심신경망의 활성화 맵을 인코딩/디코딩하기 위한 압축기(100) 및 압축 해제기(110)의 예시적인 실시 예들을 각각 도시한다. 압축기(100) 및 압축 해제기(110)를 형성하는 것으로 도시된 다양한 구성 요소는 모듈로서 구현될 수 있다. 본 명세서에서 사용되는 "모듈"이라는 용어는 모듈과 관련하여 본 명세서에 설명된 기능성을 제공하도록 구성된 소프트웨어, 펌웨어 그리고/또는 하드웨어의 임의의 조합을 나타낸다. 소프트웨어는 소프트웨어 패키지, 코드(Code) 그리고/또는 명령어 세트 또는 명령어들로서 구현될 수 있으며, 여기에 기술된 임의의 구현 예에서 사용되는 "하드웨어"라는 용어는, 예를 들면, 하드 와이어드 회로, 프로그램 가능 회로, 상태 머신 회로, 그리고/또는 프로그램 가능 회로들의 단독으로 또는 임의의 조합에 의해 실행되는 명령어들을 저장하는 펌웨어를 포함할 수 있다. 모듈은 집적 회로(IC), 시스템 온칩(SoC) 등과 같은 더 큰 시스템의 일부를 형성하는 회로로서 집합적으로 또는 개별적으로 구현될 수 있다.
활성화 맵을 압축하기 전에, 압축기(100) 및 압축 해제기(110)는 상응하는 압축 및 압축 해제 모드를 사용하도록 구성된다. 신경망의 각 계층(Layer)에 대한 활성화 맵은 훈련 중에 신경망의 메모리 요구 사항을 줄이기 위해 도 1a 및 도 1b의 압축기/압축 해제기 쌍에 의해 처리될 수 있다.
도 1a에 도시된 바와 같이, 신경망의 한 계층에서 생성된 활성화 맵(101)은 H x W X C 사이즈의 텐서로 구성되며, 여기서, H는 입력 텐서의 높이에, W는 입력 텐서의 폭에, 그리고 C는 입력 텐서의 채널 수에 대응한다. 즉, 신경망의 계층에서 활성화 맵은 H x W x C 사이즈의 단일 텐서로서 저장된다. 활성화 맵(101)의 값이 부동 소수로부터 정수로 양자화되지 않은 경우, 활성화 맵(101)의 양자화된 값은 양자화기(102)에 의해 임의의 비트 폭(즉, 8 비트, 12 비트, 16 비트 등)을 갖는 정수 값으로 양자화되어 양자화된 활성화 맵(103)을 형성할 수 있다. 필요한 경우, 양자화기(102)에 의한 양자화는 추가적인 압축을 도입하는 방법을 고려할 수 있지만, 정확도를 희생이 발생한다.
압축을 용이하게 하기 위해, H x W x C 사이즈의 양자화된 활성화 맵(103)은 포맷터(104)에 의해 각 블록이 여기에서 "압축 유닛"(105)으로 지칭되는 값 블록으로 포맷될 수 있다. 즉, 텐서 사이즈(H x W x C)의 활성화 맵(103)은 보다 작은 압축 단위들로 나뉠 수 있다. 압축 유닛(105)은 K > 0 인 채널-위주 순서의 K 개의 엘리먼트(또는 값들); 스캔 라인(즉, 각 블록은 활성화 맵의 행일 수 있는); 또는 K > 0 인 행-위주 순서의 K 개의 엘리먼트(또는 값들)를 포함할 수 있다. 압축 유닛(105)을 형성하기 위한 다른 기술들 또는 접근법들 또한 가능하다. 예를 들어, 대응하는 신경망 하드웨어에 대한 활성화 맵의 로딩 패턴이 블록 포매팅 기술의 기초로 사용될 수 있다.
각각의 압축 유닛(105)은 비트스트림(107)을 형성하기 위해 인코더(106)에 의해 다른 압축 유닛들과 독립적으로 무손실 부호화되거나 압축될 수 있다. 각각의 압축 유닛(105)은 여기에는 "압축 모드" 또는 간단히 "모드"로 지칭되는 다수의 압축 기술들 중 임의의 것을 사용하여 무손실 부호화 또는 압축된다. 무손실 압축 모드의 예로는 지수-골룸(Exponential-Golomb) 인코딩, 희박-지수-골룸(Sparse-Exponential-Golomb) 인코딩, 희박-지수-최소 제거(Sparse-Exponential-Golomb-RemoveMin) 인코딩, 골룸-라이스(Golomb-Rice) 인코딩, 지수-가수(Exponent-Mantissa) 인코딩, 제로 인코딩(Zero-encoding), 고정 길이(Fixed length) 인코딩, 그리고 희박 고정 길이(Sparse Fixed length) 인코딩을 포함할 수 있지만, 이것들에만 국한되지는 않는다. 예시적인 압축 모드의 추가 또는 대체 중 어느 하나의 방식으로 다른 무손실 인코딩 기술이 사용될 수 있음을 이해해야 한다. 하지만, 희박-지수-골룸(Sparse-Exponential-Golomb) 및 희박-지수-최소 제거(Sparse-Exponential-Golomb-RemoveMin) 압축 모드들을 제외하고 많은 예제 압축 모드가 공개적으로 사용 가능하거나 공개적으로 사용 가능한 압축 모드를 기반으로 한다는 점도 알아야 한다. 희박-지수-골룸(Sparse-Exponential-Golomb) 및 희박-지수-최소 제거(Sparse-Exponential-Golomb-RemoveMin) 압축 모드들은 여기에서 제공될 것이다.
지수-골룸(Exponential-Golomb) 인코딩은 더 작은 수에 더 짧은 코드가 할당되는 가변 길이 코드를 할당하는 잘 알려진 압축 모드이다. 숫자를 인코딩하는 데 사용되는 비트 수는 기하급수적으로 증가하며, 일반적으로 k차 파라미터라고 칭하는 하나의 파라미터는 비트 수가 증가하는 속도를 제어한다. 아래 의사 코드(Pseudocode)는 지수-골룸(Exponential-Golomb) 압축 모드의 세부적인 예를 제공한다.
{Let x, x >= 0 be the input, let k be the parameter (order)
Generate output bitstream: <Quotient Code><Remainder Code>:
Quotient Code:
Encode q = floor (x / 2^k) using 0 order exp-Golomb code:
z = binary (q + 1)
numBits = len (z)
Write numBits 1 zero bits followed by z, and denote by u
Remainder Code:
Encode r = x % 2^k in binary, and denote by f = binary (r)
Concatenate u,f to produce output bitstream}
지수-골룸(Exponential-Golomb) 압축 모드의 예는 다음과 같다:
{x = 23, k = 3
q = floor (23 / 2^3) = 2
z = binary (2 + 1) = binary (3) = 11
numBits = len (z) = 2
u = 011 (2 1 = 1 zeros followed by z)
f = binary (r) = binary (23 % 8) = binary (7) = 111
Final output = 011 + 111 = 011111}
표 1은 입력 값 x=0~29 및 차수 k = 0~3에 대한 지수-골룸(Exponential-Golomb) 압축 모드의 값을 나타낸다.
x | k = 0 | k = 1 | k = 2 | k = 3 |
0 | 1 | 10 | 100 | 1000 |
1 | 010 | 11 | 101 | 1001 |
2 | 011 | 0100 | 110 | 1010 |
3 | 00100 | 0101 | 111 | 1011 |
4 | 00101 | 0110 | 01000 | 1100 |
5 | 00110 | 0111 | 01001 | 1101 |
6 | 00111 | 001000 | 01010 | 1110 |
7 | 0001000 | 001001 | 010110 | 1111 |
8 | 0001001 | 001010 | 01100 | 010000 |
9 | 0001010 | 001011 | 01101 | 010001 |
10 | 0001011 | 001100 | 01110 | 010010 |
11 | 0001100 | 001101 | 01111 | 010011 |
12 | 0001101 | 001110 | 0010000 | 010100 |
13 | 0001110 | 001111 | 0010001 | 010101 |
14 | 0001111 | 00010000 | 0010010 | 010110 |
15 | 000010000 | 00010001 | 0010011 | 010111 |
16 | 000010001 | 00010010 | 0010100 | 011000 |
17 | 000010010 | 00010011 | 0010101 | 011001 |
18 | 000010011 | 00010100 | 0010110 | 011010 |
19 | 000010100 | 00010101 | 0010111 | 011011 |
20 | 000010101 | 00010110 | 0011000 | 011100 |
21 | 000010110 | 00010111 | 0011001 | 011101 |
22 | 000010111 | 00011000 | 0011010 | 011110 |
23 | 000011000 | 00011001 | 0011011 | 011111 |
24 | 000011001 | 00011010 | 0011100 | 00100000 |
25 | 000011010 | 00011011 | 0011101 | 00100001 |
26 | 000011011 | 00011100 | 0011110 | 00100010 |
27 | 000011100 | 00011101 | 0011111 | 00100011 |
28 | 000011101 | 00011110 | 000100000 | 00100100 |
29 | 000011110 | 00011111 | 000100001 | 00100101 |
희박-지수-골룸(Sparse-Exponential-Golomb) 압축 모드는 인코딩될 값 x가 0이면, 출력 비트스트림에서 x 값이 "1"로 표현되는 지수-골룸(Exponential-Golomb) 압축 모드의 확장 또는 변형이다. 그렇지 않은 경우 지수-골룸(Exponential-Golomb) 인코딩은 "0"을 더한 다음, 표준 지수-골룸(Exponential-Golomb)을 사용하여 값 x-1을 인코딩한다. 블록(압축 유닛) 값이 8-비트인 일 실시 예에서, 차수 k = 4가 최상의 결과를 제공할 수 있다.
희박-지수-최소 제거(Sparse-Exponential-Golomb-RemoveMin) 압축 모드는 다음 규칙을 사용하는 희박-지수-골룸(Sparse-Exponential-Golomb) 압축 모드에 대한 확장 또는 변형이다:
(1) 값들이 압축 단위로 인코딩되기 전에, 최소 넌제로(Non-zero) 값이 결정되며, 이 값이 변수 y로 표시될 수 있다.
(2) 변수 y는 지수-골룸(Exponential-Golomb) 압축 모드를 사용하여 인코딩된다.
(3) 인코딩될 값 x가 0이면, 그것은 "1"로 부호화되고,
(4) 그렇지 않으면 "0"이 비트스트림에 부가되고, 이후 x-y는 지수-골룸(Exponential-Golomb) 압축 모드를 사용하여 인코딩된다.
골룸-라이스(Golomb-Rice) 압축 모드 및 지수-가수(Exponent-Mantissa) 압축 모드는 잘 알려진 압축 알고리즘이다. 아래의 의사 코드(Pseudocode)는 골룸-라이스(Golomb-Rice) 압축 모드의 예시적인 세부 사항을 보여준다.
{Let x, x >= 0 be the input and M be the parameter. M is a power of 2.
q = floor (x / M)
r = x % M
Generate output bitstream: <Quotient Code><Remainder Code>:
Quotient Code:
Write q length string of 1 bits
Write a 0 bit
Remainder Code: binary (r) in log2 (M) bits}
예시적인 골룸-라이스(Golomb-Rice) 압축 모드는 다음과 같다:
{x = 23, M = 8, log2 (M) = 3
q = floor (23 / 8 ) = 2
r = 7
Quotient Code: 110
Remainder Code: 111
Output = 110111}
제로 인코딩(Zero-encoding) 압축 모드는 압축 유닛이 완전히 제로로 형성되는지 여부를 검사하고, 만일 그렇다면, 비어있는 비트스트림이 리턴된다. 압축 단위에 적어도 하나의 0이 아닌 값이 포함되어 있으면 제로 인코딩(Zero-encoding) 압축 모드를 사용할 수 없음을 잘 알아야 한다.
고정 길이(Fixed length) 인코딩 압축 모드는 압축을 수행하지 않는 기본 또는 디폴트 압축 모드이며, 고정된 비트 수를 사용하여 압축 유닛의 값을 단순히 인코딩한다.
마지막으로, 희박 고정 길이(Sparse Fixed length) 인코딩 압축 모드는, 인코딩될 값 x가 0인 경우에는 1로 인코딩되고, 그렇지 않으면 0이 추가되고 넌-제로(Non-zero) 값을 인코딩하기 위해 고정된 비트 수가 사용되는 점을 제외하고는 고정 길이 인코딩(Fixed length encoding) 압축 모드와 동일하다.
다시 도 1a를 참조하면, 인코더(106)는 압축된 비트스트림(107)을 48-비트로 시작하는데, 여기서 16-비트는 입력된 텐서의 H, W 및 C를 각각 나타낸다. 각각의 압축 유닛(105)은 이용 가능한 압축 모드마다 반복적으로 압축된다. 각 압축 유닛에 대해 이용 가능한 압축 모드는 활성화 맵의 압축 중에 고정될 수 있다. 일 실시 예에서, 이용 가능한 압축 모드의 전체 범위는 L-비트로 표현될 수 있다. 예를 들어, 4 개의 압축 모드가 이용 가능한 경우, 2-비트 프리픽스(prefix)는 4 개의 이용 가능한 압축 모드에 대응하는 인덱스(즉, 00, 01, 10 및 11)를 지시하기 위해 사용될 수 있다. 다른 실시 예에서, 프리픽스 가변 길이 코딩 기술은 일부 비트를 저장하기 위해 사용될 수 있다. 예를 들어, 인코더(106)에 의해 가장 일반적으로 사용되는 압축 모드의 인덱스는 "0"으로 표현될 수 있고, 제 2, 제 3, 그리고 제 4의 가장 일반적으로 사용되는 압축 모드들은 각각 "10", "110" 그리고 "111"로 표시될 수 있다. 하나의 압축 모드만 사용되는 경우, 압축 단위에 대한 비트스트림의 시작 부분에 색인을 추가하는 것은 불필요하다.
일 실시 예에서, 압축 유닛이 압축될 때, 모든 이용 가능한 압축 모드가 실행될 수 있고 가장 짧은 비트스트림을 생성한 압축 모드가 선택될 수 있다. 선택된 압축 모드에 대한 대응하는 인덱스는 특정 압축 유닛에 대한 비트스트림의 시작에 프리픽스로서 부가될 수 있고, 압축 유닛에 대한 최종 비트스트림은 전체 활성화 맵에 대한 비트스트림에 부가될 수 있다. 이러한 처리는 활성화 맵에 대한 모든 압축 유닛에 대해 반복될 수 있다. 활성화 맵 각각의 개별 압축 유닛은 인접하거나 이웃하는 압축 유닛에 사용된 압축 모드와 다른 압축 모드를 사용하여 압축될 수 있다. 일 실시 예에서, 2 개의 압축 모드와 같은 작은 수의 압축 모드는, 활성화 맵을 압축하는 복잡성을 감소시키기 위해 이용할 수 있다.
도 1b를 참조하면, 압축 해제기(110)는 처음 48-비트를 읽어 H, W 및 C를 복구하고 비트스트림(107)을 한 번에 하나씩 압축한다. 압축 해제기(110)는 L(모드의 인덱스에 대한 비트의 수) 및 압축 유닛 내의 엘리먼트의 수(사용되는 압축 모드에 따라 W 또는 K)를 모두 알고 있다. 즉, 원래 활성화 맵(101)에 대응하는 비트스트림(107)은 디코더(112)에 의해 압축되어 압축 유닛(113)을 형성한다. 압축 유닛(113)은 디포매터(114)에 의해 디포맷되어 H x W x C 사이즈의 텐서를 갖는 양자화된 활성화 맵(115)을 구성한다. 양자화된 활성화 맵(115)은 역양자화기(116)에 의해 역양자화되어 원래의 활성화 맵(117)을 형성할 수 있다.
또한, 도 2a 및 도 2b는 각각 본 명세서에 개시된 주제에 따른 심신경망의 활성화 맵의 인코딩 방법(200) 및 디코딩 방법(210)의 예시적인 실시 예를 도시한다. 신경망의 각 계층에 대한 활성화 맵은 도 2a 및 도 2b의 인코딩/디코딩 방법 쌍에 의해 처리될 수 있다. 활성화 맵을 압축하기 전에, 도 1a 및 도 1b에 도시된 바와 같이 압축기(100) 및 압축 해제기(110)는 대응하는 압축 및 압축 해제 모드를 사용하도록 구성된다.
도 2a에서, 프로세스는 201에서 시작한다. 202에서, 활성화 맵이 수신되어 인코딩된다. 활성화 맵은 신경망의 계층(Layer)에서 생성되었으며, H x W x C 사이즈(H는 입력 텐서의 높이, W는 입력 텐서의 폭, C는 입력 텐서의 채널 수에 대응)의 텐서로 구성된다. 활성화 맵의 값들이 부동 소수점 수로부터 정수로 양자화되지 않았다면, 202에서, 활성화 맵의 비양자화된 값은 양자화된 활성화 맵을 형성하기 위해 임의의 비트 폭을 갖는 정수값으로 양자화될 수 있다.
204에서, 양자화된 활성화 맵은 압축 유닛들로 포맷될 수 있다. 205에서, 각 압축 유닛은 비트스트림을 형성하기 위해 다른 압축 유닛과 독립적으로 무손실 부호화되거나 압축될 수 있다. 각 압축 유닛은 다수의 압축 모드 중 하나를 사용하여 무손실로 인코딩되거나 압축될 수 있다. 무손실 압축 모드의 예로는 지수-골룸(Exponential-Golomb) 인코딩, 희박-지수-골룸(Sparse-Exponential-Golomb) 인코딩, 희박-지수-최소 제거(Sparse-Exponential-Golomb-RemoveMin) 인코딩, 골룸-라이스(Golomb-Rice) 인코딩, 지수-가수(Exponent-Mantissa) 인코딩, 제로 인코딩(Zero-encoding), 고정 길이(Fixed length) 인코딩, 그리고 희박 고정 길이(Sparse Fixed length) 인코딩을 포함할 수 있지만, 이것들에만 국한되지는 않는다. 각각의 압축 유닛(105)은 이용 가능한 압축 모드마다 반복적으로 압축된다. 일 실시 예에서, 압축 유닛이 압축될 때, 모든 이용 가능한 압축 모드가 실행될 수 있고, 가장 짧은 비트스트림을 생성한 압축 모드가 선택될 수 있다. 활성화 맵에 대한 모든 압축 유닛이 인코딩되었을 때, 프로세스는 단계 206에서 활성화 맵을 종료한다.
도 2b에서, 프로세스는 211에서 시작한다. 212에서, 비트스트림이 수신되고 첫 번째 48-비트가 읽혀지고 인코딩된 압축 유닛을 복구한다. 213에서, 각각의 인코딩된 압축 유닛은 디코딩되어 압축된 압축 유닛을 형성한다. 214에서, 각각의 디코딩된 압축 유닛은 활성화 맵을 형성하도록 압축된다. 활성화 맵의 값들이 역양자화되어야 한다면, 215에서 값들은 역양자화되어 역양자화된 활성화 맵을 형성한다. 프로세스는 216에서 활성화 맵을 종료한다.
아래의 예시적인 의사코드(Pseudocode)는 앞서 설명된 방법(200)에 해당한다.
{#Tensor T has size HxWxC
def compress (T):
bitstream = ""
for each channel, c, in C
CU = formatMaps(c)
for each cu in CU
bitstream + = compressCU(cu)
return bitstream
def compressCU(cu)
bitstreams =
generateBitstreamsforAllComprModes(cu)
minBitstreamIdx, minBitstream =
shortestBitstream(bitstreams)
mode = binary(minBitstreammIdx)
bitstream = mode + minBitstream
return bitstream}
아래의 예시적인 의사코드(Pseudocode)는 앞서 설명된 방법(200)에 해당한다.
{def decompress(bitstream):
H,W,C = getActivationMapShape(bitstream[0:48])
bitstream = bitstream[48:]
CU = []
while bitstream 1 = "":
cu , bitstream = decompressCU(bitstream)
CU.append(cu)
return deformatCU (CU, H, W, C)}
# 'decompressUnit'은 압축 모드 인덱스를 나타내기 위해 몇 개의 압축 모드가 사용되고 얼마나 많은 비트가 헤더로 사용되는지 이미 알고 있다. 일 실시 예에서, 사용된 압축 모드의 수는 L이다.# 'decompressUnit'은 또한 압축 단위에 포함된 엘리먼트의 수를 알고 있다. 이 예에서 엘리먼트의 수는 K이다.
# 'decodeNextValue (bitstream, modeIdx)'는 'modeIdx'를 사용하여 다음 값을 디코딩할 올바른 디코더를 선택한다. 또한, 'decodeNextValue (bitstream, modeIdx)'는 비트스트림에서 사용된 비트를 제거한다. 'decodeNextValue (bitstream, modeIdx)'는 디코딩된 값과 스트립된 비트스트림을 반환한다.
{def decompressCU (bitstream):
modeIdx=getComprModeIndex(bitstream[0:L])
bitstream=bitstream[L:]
cu = []
for k in range (K):
val , bitstream = decodeNextValue (bitstream , modeIdx)
cu.append (val)
return cu , bitstream}
도 3은 본 명세서에 개시된 주제에 따른 신경망의 계층(L)에서 활성화 맵의 동작 순서도(300)를 보여준다. 즉, 동작 순서도(300)는 신경망을 훈련시키고 입력으로부터 신경망에 대한 추론을 형성하기 위한 동작 흐름을 나타낸다. 동작 순서도(300)는 계층(L)을 통한 전방 및 후방 처리 방향 모두를 나타낸다. 활성화 맵(도시되지 않음)의 인코딩된(압축된) 표현은 메모리(도시 생략)로부터 판독될 때 비트스트림(301)으로 변환된다. 302에서, 비트스트림은 압축 유닛(303)을 형성하도록 디코딩된다. 압축 유닛(303)은 304에서 변형되어 양자화된 활성화 맵(305)을 형성한다. (다시, 활성화 맵의 양자화는 선택적일 수 있다). 306에서, 양자화된 활성화 맵(305)은 계층(L)에 대한 활성화 맵(307)을 형성하기 위해 역 양자화된다.
활성화 맵(307)은 출력 활성화 맵(308)을 계산하기 위해 신경망의 계층(L)에서 사용된다. 활성화 맵(308)은 309에서 (선택적으로) 양자화되어 양자화된 활성화 맵(310)을 형성한다. 양자화된 활성화 맵(310)은 압축 유닛(312)을 형성하기 위해 311에서 포맷된다. 압축 유닛(312)은 313에서 추후에 사용하기 위해 메모리(도시되지 않음)에 저장되는 비트스트림(314)을 형성하기 위해 인코딩된다.
본 명세서에 나타난 각각의 무손실 압축 모드와 관련된 압축 포텐셜의 일반적인 의미를 제공하기 위해, 활성화 맵의 예시 데이터 세트는 Imagenet 데이터베이스를 사용하여 'Inception V3' 모델에서 10 개의 입력 이미지를 실행함으로써 형성되었다. 'Inception V3' 모델의 모든 계층에 대한 활성화 맵은 데이터 세트(여기서, 데이터 세트 S10이라 칭함)를 형성하기 위해 생성되었다. 각각의 활성화 맵은 독립적으로 압축되고 각 압축 모드에 대해 평균화되어 각 압축 모드에 대한 대표적인 압축 계수를 제공한다. 표 2는 데이터 세트 S10에 대해 결정된 상이한 압축 모드에 대한 대표적인 압축 인자를 나타낸다.
Label | Encoding Technique | Compression Factor (S10) | Comments |
1 | Fixed Length | 1.0x | No compression |
2 | Sparse Fixed Length | 1.59x | |
3 | 1 + 2 | 1.65x | 2 modes used |
4 | Exponent-Mantissa | 1.37x | |
5 | 3 + 4 | 1.70x | 3 modes used |
6 | Golomb-Rice | 1.38x | Parameter M = 16 |
7 | 5 + 6 | 1.87x | 4 modes used |
8 | Exponential-Golomb | 1.36x | Parameter K = 4 |
9 | Sparse-Exponential-Golomb | 1.83x | Parameter K = 4 |
10 | 9 + 6 +1 | 1.97x | 3 modes used |
11 | 10 + Zero Encoding | 1.98x | 4 modes used |
표 2에서 알 수 있는 바와 같이, 데이터 세트(S10)에 대해 얻어진 최대 압축은 4 가지 압축 모드를 사용하여 1.98x였다. 또한, 표 2에서 알 수 있는 바와 같이, 상이한 압축 모드 그리고 상이한 압축 모드들의 조합들을 사용함으로써 상이한 압축 정도를 얻을 수 있다.
다른 예시적인 데이터 세트(S500)는 상이한 양자화 레벨에 대한 'Imagenet' 트레이닝 세트 및 'Inception V3' 모델로부터의 500 개의 입력 이미지를 사용하여 형성되었다. 표 3은 상이한 압축 모드 및 데이터 세트(S500)에 대해 획득된 압축 모드의 조합에 대한 압축 인자를 제시한다. 각 계층의 활성화 맵을 독립적으로 압축하고 그 결과를 평균하여 다섯 번의 실행마다 하나의 압축률을 얻는다. 사용된 로딩 패턴은 채널-위주 로딩 패턴이었다.
Bits | Exp1 | Exp2 | 'Exp3' | Exp4 | Exp5 |
16 | 1.8895 k=12 |
1.8891 k=12 |
1.8870 k=12 M=32 |
1.8866 k=12 M=32 |
1.8868 k=12 M=32 |
12 | 1.8695 k=8 |
1.8684 k=8 |
1.8666 k=8 M=128 |
1.8666 k=8 M=128 |
1.8668 k=8 M=128 |
8 | 1.8491k=4 | 1.9497 k=4 |
1.8694 k=4 M=32 |
1.8648 k=4 M=16 |
1.8650 k=4 M=16 |
6 | 1.8752k=2 | 1.8754 k=2 |
1.9079 k=2 M=4 |
1.9039 k=2 M=4 |
1.9043 k=2 M=4 |
4 | 1.9522k=0 | 1.9448 k=0 |
1.9920 k=1 M=2 |
1.9810 k=1 M=2 |
1.9822 k=1 M=2 |
표 3에서, 'Exp1'은 희박-지수-골룸(Sparse-Exponential-Golomb) 압축 모드를 사용했다. 'Exp2'는 희박-지수-골룸(Sparse-Exponential-Golomb) 및 고정 길이(Fixed length) 압축 모드를 사용했다. 'Exp3'은 희박-지수-골룸(Sparse-Exponential-Golomb) 및 골룸-라이스(Golomb-Rice) 압축 모드를 사용했다. 'Exp4'는 희박-지수-골룸(Sparse-Exponential-Golomb), 고정 길이(Fixed length) 및 골룸-라이스(Golomb-Rice) 압축 모드를 사용했다. 'Exp5'는 희박-지수-골룸(Sparse-Exponential-Golomb), 고정 길이(Fixed length) 및 골룸-라이스(Golomb-Rice) 및 제로 인코딩(Zero-encoding) 압축 모드를 사용했다.
당업자가 인식할 수 있는 바와 같이, 여기서 설명된 혁신적인 개념은 광범위한 응용 분야에 걸쳐 수정되거나 변경될 수 있다. 따라서, 청구된 주제의 범위는 전술한 특정 예시적인 교시 중 어느 하나에 한정되어서는 안되며, 대신 다음의 청구 범위에 의해 정의된다.
Claims (10)
- 신경망의 활성화 맵을 무손실 압축하는 시스템에 있어서,
활성화 맵에 대응하는 HxWxC 사이즈의 텐서(Tensor)를 적어도 하나의 블록에 대응하는 값들로 포맷팅하는 포매터; 그리고
적어도 하나의 무손실 압축 모드를 사용하여 상기 적어도 하나의 블록을 상기 텐서의 다른 블록들과 독립적으로 인코딩하는 인코더를 포함하되,
상기 H는 상기 텐서의 높이를 나타내며, 상기 W는 상기 텐서의 폭을 나타내며, 상기 C는 상기 텐서의 채널 수를 나타내는 시스템. - 제 1 항에 있어서,
상기 적어도 하나의 무손실 압축 모드는 지수-골룸(Exponential-Golomb) 인코딩, 희박-지수-골룸(Sparse-Exponential-Golomb) 인코딩, 희박-지수-최소 제거(Sparse-Exponential-Golomb-RemoveMin) 인코딩, 골룸-라이스(Golomb-Rice) 인코딩, 지수-가수(Exponent-Mantissa) 인코딩, 제로 인코딩(Zero-encoding), 고정 길이(Fixed length) 인코딩, 그리고 희박 고정 길이(Sparse Fixed length) 인코딩을 포함하는 그룹으로부터 선택되는 시스템. - 제 2 항에 있어서,
상기 적어도 하나의 블록을 인코딩하도록 선택된 상기 적어도 하나의 무손실 압축 모드는 상기 텐서의 다른 블록을 인코딩하도록 선택된 무손실 압축 모드와는 다른 것을 특징으로 하는 시스템. - 제 2 항에 있어서,
상기 인코더는 복수의 상기 무손실 압축 모드를 사용하여 상기 텐서의 다른 블록들과 독립적으로 상기 적어도 하나의 블록을 인코딩함으로써 상기 적어도 하나의 블록을 추가로 인코딩하는 시스템. - 제 2 항에 있어서,
상기 적어도 하나의 블록은 48-비트를 포함하는 시스템. - 제 1 항에 있어서,
상기 인코더는 비트스트림으로 인코딩된 상기 적어도 하나의 블록을 출력하는 시스템. - 제 6 항에 있어서,
상기 적어도 하나의 블록을 압축하는데 사용된 상기 적어도 하나의 압축 모드에 대응하는 적어도 하나의 압축 해제 모드를 사용하여, 상기 적어도 하나의 블록을 상기 텐서의 다른 블록들과 독립적으로 디코딩하는 디코더; 그리고
상기 적어도 하나의 블록을 H x W x C 의 사이즈를 갖는 텐서로 디포맷(deformat)하는 디포매터(Deformatter)를 포함하는 시스템. - 제 1 항에 있어서,
상기 활성화 맵은 부동 소수점 값을 포함하고,
상기 시스템은 상기 활성화 맵의 상기 부동 소수점 값을 정수 값으로 양자화하는 양자화기를 더 포함하는 시스템. - 신경망의 활성화 맵을 무손실 압축하는 방법에 있어서:
포매터에서 텐서 사이즈 H x W x C인 텐서(Tensor)로 구성되는 적어도 하나의 활성화 맵을 수신하는 단계;
상기 포매터에 의해 상기 텐서를 적어도 하나의 값 블록으로 포맷팅하는 단계; 그리고
인코더에서 적어도 하나의 무손실 압축 모드를 사용하여 상기 텐서의 다른 블록들과 독립적으로 상기 적어도 하나의 블록을 인코딩하는 단계를 포함하되,
상기 H는 상기 텐서의 높이를 나타내며, 상기 W는 상기 텐서의 폭을 나타내며, 상기 C는 상기 텐서의 채널 수를 나타내는 것을 특징으로 하는 방법. - 신경망의 활성화 맵을 무손실 압축 해제하는 방법에 있어서:
디코더에서, 상기 활성화 맵의 값들의 적어도 하나의 압축값 블록을 나타내는 비트스트림을 수신하는 단계;
상기 디코더에 의해, 적어도 하나의 압축 해제값 블록을 형성하기 위해 상기 적어도 하나의 압축값 블록을 압축 해제하는 단계; 그리고
디포매터(Deformatter)에 의해, 상기 적어도 하나의 블록을 H x W x C 사이즈를 갖는 압축 해제된 상기 활성화 맵인 텐서(Tensor)로 변형시키는 단계를 포함하되,
상기 H는 상기 텐서의 높이를 나타내고, 상기 W는 상기 텐서의 폭을 나타내며, 상기 C는 상기 텐서의 채널 수를 나타내며,
상기 적어도 하나의 압축 해제값 블록은 상기 적어도 하나의 압축값 블록을 압축하는데 사용되는 적어도 하나의 무손실 압축 모드에 대응하는 적어도 하나의 압축 해제 모드를 사용하여 상기 활성화 맵의 다른 블록들로부터 독립적으로 압축 해제되는 방법.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862679545P | 2018-06-01 | 2018-06-01 | |
US62/679,545 | 2018-06-01 | ||
US16/046,993 US20190370667A1 (en) | 2018-06-01 | 2018-07-26 | Lossless compression of sparse activation maps of neural networks |
US16/046,993 | 2018-07-26 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20190137684A true KR20190137684A (ko) | 2019-12-11 |
Family
ID=68692573
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020190053965A KR20190137684A (ko) | 2018-06-01 | 2019-05-08 | 신경망의 희박 활성화 맵의 무손실 압축 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20190370667A1 (ko) |
KR (1) | KR20190137684A (ko) |
CN (1) | CN110555521A (ko) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200093404A (ko) * | 2019-01-28 | 2020-08-05 | 포항공과대학교 산학협력단 | 신경망 가속기 및 그것의 동작 방법 |
WO2021117942A1 (ko) * | 2019-12-12 | 2021-06-17 | 전자부품연구원 | 저복잡도 딥러닝 가속 하드웨어 데이터 가공장치 |
WO2021177628A1 (en) * | 2020-03-04 | 2021-09-10 | Samsung Electronics Co., Ltd. | Method and apparatus for action recognition |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10785681B1 (en) * | 2019-05-31 | 2020-09-22 | Huawei Technologies Co., Ltd. | Methods and apparatuses for feature-driven machine-to-machine communications |
US11615301B2 (en) * | 2019-09-03 | 2023-03-28 | Microsoft Technology Licensing, Llc | Lossless exponent and lossy mantissa weight compression for training deep neural networks |
US11580402B2 (en) * | 2020-05-11 | 2023-02-14 | Arm Limited | System and method for compressing activation data |
CN114418086B (zh) * | 2021-12-02 | 2023-02-28 | 北京百度网讯科技有限公司 | 压缩神经网络模型的方法、装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6987468B1 (en) * | 2004-10-29 | 2006-01-17 | Microsoft Corporation | Lossless adaptive encoding and decoding of integer data |
TWI524265B (zh) * | 2011-06-30 | 2016-03-01 | 艾特拉股份有限公司 | 浮點資料之壓縮 |
US8847798B2 (en) * | 2012-12-17 | 2014-09-30 | Maxeler Technologies, Ltd. | Systems and methods for data compression and parallel, pipelined decompression |
-
2018
- 2018-07-26 US US16/046,993 patent/US20190370667A1/en not_active Abandoned
-
2019
- 2019-05-08 KR KR1020190053965A patent/KR20190137684A/ko not_active Application Discontinuation
- 2019-05-13 CN CN201910392588.2A patent/CN110555521A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200093404A (ko) * | 2019-01-28 | 2020-08-05 | 포항공과대학교 산학협력단 | 신경망 가속기 및 그것의 동작 방법 |
WO2021117942A1 (ko) * | 2019-12-12 | 2021-06-17 | 전자부품연구원 | 저복잡도 딥러닝 가속 하드웨어 데이터 가공장치 |
WO2021177628A1 (en) * | 2020-03-04 | 2021-09-10 | Samsung Electronics Co., Ltd. | Method and apparatus for action recognition |
US11837025B2 (en) | 2020-03-04 | 2023-12-05 | Samsung Electronics Co., Ltd. | Method and apparatus for action recognition |
Also Published As
Publication number | Publication date |
---|---|
CN110555521A (zh) | 2019-12-10 |
US20190370667A1 (en) | 2019-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11588499B2 (en) | Lossless compression of neural network weights | |
KR20190137684A (ko) | 신경망의 희박 활성화 맵의 무손실 압축 | |
US5818877A (en) | Method for reducing storage requirements for grouped data values | |
TWI840438B (zh) | 用於壓縮神經網路的激活映射的系統與方法以及用於對神經網路的經稀疏化的激活映射進行解壓縮的方法 | |
TWI431948B (zh) | 轉換區塊之效率編碼和解碼 | |
US8942502B2 (en) | Parallelization of variable length decoding | |
JP5936687B2 (ja) | ツリー構造の適応的エントロピー符号化方法 | |
US8767823B2 (en) | Method and apparatus for frame memory compression | |
US8285062B2 (en) | Method for improving the performance of embedded graphics coding | |
US8363729B1 (en) | Visual data compression algorithm with parallel processing capability | |
AU2018298758A1 (en) | Method and device for digital data compression | |
CN103716634A (zh) | 使用误差平面编码的数据压缩方法及装置 | |
CN112399181A (zh) | 图像编解码的方法、装置和芯片 | |
EP2319038A1 (en) | Method, system, and apparatus for compression or decompression of digital signals | |
US8754792B2 (en) | System and method for fixed rate entropy coded scalar quantization | |
US5966470A (en) | Coding apparatus for image compression | |
US20050232362A1 (en) | High-speed image compression apparatus using last non-zero detection circuit | |
CN111641827A (zh) | 多套方案切换进行预测残差熵编码的数据压缩方法和装置 | |
US6433707B1 (en) | Universal lossless compressor for digitized analog data | |
US5561422A (en) | Method and apparatus for variable length coding with reduced memory requirement | |
WO2024142897A1 (ja) | 情報処理装置、及び情報処理方法 | |
KR100686354B1 (ko) | 가변 트리를 이용한 허프만 복호화 방법 및 장치 | |
JPH08316846A (ja) | 画像符号化装置、画像復号化装置、画像符号化方法および画像復号化方法 | |
WO2022219233A1 (en) | A method, an apparatus and a computer program product for neural network compression | |
Bhosale et al. | A Modified Image Template for FELICS Algorithm for Lossless Image Compression |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E601 | Decision to refuse application |