KR102639157B1 - 합성곱 신경망을 위한 부동소수점 압축이 포함된 캐시 - Google Patents

합성곱 신경망을 위한 부동소수점 압축이 포함된 캐시 Download PDF

Info

Publication number
KR102639157B1
KR102639157B1 KR1020210170626A KR20210170626A KR102639157B1 KR 102639157 B1 KR102639157 B1 KR 102639157B1 KR 1020210170626 A KR1020210170626 A KR 1020210170626A KR 20210170626 A KR20210170626 A KR 20210170626A KR 102639157 B1 KR102639157 B1 KR 102639157B1
Authority
KR
South Korea
Prior art keywords
compression
module
cache
exponent
exponent part
Prior art date
Application number
KR1020210170626A
Other languages
English (en)
Other versions
KR20230082805A (ko
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 KR1020210170626A priority Critical patent/KR102639157B1/ko
Publication of KR20230082805A publication Critical patent/KR20230082805A/ko
Application granted granted Critical
Publication of KR102639157B1 publication Critical patent/KR102639157B1/ko

Links

Classifications

    • 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
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4031Fixed length to variable length coding
    • H03M7/4037Prefix coding
    • H03M7/4043Adaptive prefix coding
    • H03M7/4068Parameterized codes
    • H03M7/4075Golomb codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • G06F5/012Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising in floating-point computations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/556Logarithmic or exponential functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

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

Abstract

본 발명에 따른 캐시는 입력된 부동소수점 데이터의 지수부와 소수부를 분할하고, 각각 서로 다른 압축 방법을 적용할 수 있다. 아울러, 분할된 지수부는 무손실 압축의 일종인 Golomb-Rice 코드에 의해 압축되고, 분할된 소수부는 손실 압축인 양자화에 의해 압축되는 것을 특징으로 한다.

Description

합성곱 신경망을 위한 부동소수점 압축이 포함된 캐시{CACHE INCLUDING COMPRESSION OF FLOATING-POINT DATA FOR CONVOLUTIONAL NEURAL NETWORK}
본 발명은 합성곱 신경망(Convolution Neural Network, CNN)에 이용되는 캐시(Cache)에 관한 것이다.
인공지능을 활용한 자율주행 로봇 등의 개발을 위해서는 카메라를 통해 얻은 이미지를 분석하여 상황을 판단하는 것이 핵심이다.
CNN은 이미지를 분석하는 컴퓨터 비전 응용에서 매우 뛰어난 성능을 보인다. 이러한 CNN 실행하기 위해서는 중앙 처리 장치(Central Processing Unit, CPU), 그래픽 처리 장치(Graphics Processing Unit, GPU), 신경 처리 장치(Neural Processing Unit, NPU) 등의 다양한 프로세서가 사용될 수 있다.
CNN의 연산 과정은 매우 많은 데이터의 처리를 요구하므로, 동적 메모리(DRAM)에 접근하는 대신 프로세서 내부에 데이터를 임시로 저장해 놓는 캐시를 사용하여, DRAM에 대한 접근 횟수를 줄일 수 있다.
또한, 위와 같이 메모리 접근 횟수를 줄이는 방법으로서, 캐시 압축을 사용할 수 있다. 캐시 압축은 실제 물리적인 캐시 용량보다 더 많은 데이터를 압축하여 저장함으로써 실효적인 캐시 용량을 증가시키므로 메모리 접근 횟수를 줄일 수 있다.
기존 캐시 압축 기술 중 base-delta-immediate (BDI) 기술은, 공간적으로 이웃한 데이터가 좁은 dynamic range에 속해 있을 확률이 높다는 점에 착안하여 데이터 차이의 하위 바이트만 저장함으로써 캐시를 압축하였다.
또한, 기존 기술로서 C-PACK은 사전(dictionary) 기반 압축 방법을 제안하였고, SC2는 Huffman 코딩을 사용하여 통계 기반 압축 방법을 제안하였다.
그러나, 이러한 종래의 캐시 압축 방법의 경우, CNN 학습 과정처럼 부동소수점을 많이 사용하는 응용프로그램에는 압축률이 낮다는 문제점이 존재하였다.
이에, 다른 캐시 압축 방법인 FP-H는 부동소수점 데이터의 지수부와 소수부를 Huffman 코드로 압축함으로써 압축률을 높였으나, 여전히 CNN의 소수부는 코드로 Huffman 압축이 잘 되지 않으며, Huffman 코드의 병렬처리가 어려워 압축 해제에 시간이 오래 걸리는 단점이 있다.
종래 기술인 ZCOMP에서는 CNN 데이터를 압축하는 방법을 제안하였으나 부동소수점 데이터 압축은 고려되지 않았다.
따라서, 본 발명에서는 상술한 문제를 해결하기 위해, CNN의 부동소수점 데이터를 높은 압축률로 압축하는 캐시를 제안하고자 한다.
본 발명의 기술적 과제는 상술한 문제점을 해결하기 위해, 부동소수점 데이터의 지수부와 소수부를 각각 다른 방법으로 압축, 또는 압축 해제하도록 구성되는 CNN의 캐시를 제공하는 것이다.
구체적으로, 본 발명의 기술적 과제는 CNN의 부동소수점 데이터 압축을 포함한 캐시를 제공하는 것이다.
상기 과제를 해결하기 위해 본 발명에 따른 캐시는 입력된 부동소수점 데이터의 지수부와 소수부를 분할하고, 각각 서로 다른 압축 방법을 적용할 수 있다. 아울러, 분할된 지수부는 무손실 압축의 일종인 Golomb-Rice 코드에 의해 압축되고, 분할된 소수부는 손실 압축인 양자화에 의해 압축되는 것을 특징으로 한다.
일 실시예에서, 본 발명에 따른 캐시는 데이터를 저장하는 데이터 메모리와, 메모리 주소를 찾기 위한 태그를 저장하는 태그 메모리와, 부동소수점 데이터에 대해 소정의 연산을 수행하는 프로세싱 유닛 및 상기 부동소수점 데이터의 지수부에는 무손실 압축 방법을 적용하고, 상기 부동소수점 데이터의 소수부에는 손실 압축 방법을 적용하여, 데이터 압축을 수행하는 압축 모듈을 포함하는 것을 특징으로 한다.
구체적으로, 상기 압축 모듈은, 상기 부동소수점 데이터를 지수부와 소수부로 분리하는 분배모듈과, 상기 분리된 지수부에 대해 전처리를 수행하는 전처리모듈과, 상기 분리된 지수부에 대해 Golomb-Rice 코드를 사용하여 무손실 압축을 수행하는 Golomb-Rice 압축 모듈과, 상기 분리된 소수부에 대해 양자화 압축을 적용하여 손실 압축을 수행하는 양자화 모듈을 포함하는 것을 특징으로 한다.
또한, 본 발명에 따른 캐시는 상기 압축 모듈에 의해 압축된 데이터를 압축 해제하는 압축 해제 모듈을 더 포함할 수 있다. 이때, 상기 압축 해제 모듈은, 상기 분리된 지수부에 대해 압축 해제를 수행하는 Golomb-Rice 압축 해제 모듈과, 압축 해제된 지수부에 대해 후처리를 수행하는 후처리 모듈과, 상기 분리된 소수부에 대해 압축 해제를 수행하는 역양자화 모듈 및 분리된 지수부의 압축 해제 결과와 분리된 소수부의 압축 해제 결과를 병합하는 병합 모듈을 포함하는 것을 특징으로 한다.
상기 압축 모듈은, 0이 아닌 특징 맵(Feature map)에 대하여 Golomb-Rice 코드를 적용하여 압축을 수행하는 것을 특징으로 한다.
상기 태그 메모리는 비트맵 존재 여부를 나타내는 1비트의 비트맵 신호 정보를 저장하고, 상기 압축 모듈은 상기 비트맵 신호 정보에 근거하여, 합성곱 가중치(Convolution weights)와 관련된 비트맵 저장 여부를 결정하는 것을 특징으로 한다.
상기 태그 메모리는 압축 상태와 관련된 정보를 저장하며, 상기 압축 상태와 관련된 정보는 비압축, 양자화 단독 압축, 블록 비트맵 미사용 압축 및 블록 비트맵 사용 압축 중 어느 하나와 관련된 정보에 대응되는 것을 특징으로 한다.
본 발명에서 제안하는 캐시 압축 방법에 따르면, 압축 및 압축 해제와 관련된 모든 과정은 캐시 내부에서 처리되므로 캐시 접근 지연시간(latency)이 증가하는 것 외에는 프로세서의 다른 부분에는 전혀 변형이 필요 없어서 산업적용 시 반도체 회로 구현과 검증이 용이한 장점이 있다.
도 1은 본 발명에 따른 캐시의 구성요소를 나타내는 블록도이다.
도 2는 CNN 중 하나인 GoogLeNet을 실행했을 때 합성곱 가중치(Convolution Weights)의 지수 확률 분포를 나타내는 그래프이다.
도 3은 합성곱 가중치의 소수부 분포와 관련된 그래프이다.
도 4에서는 23-비트 소수부에 대해, 베이스라인 대비 소수부 양자화로 인한 상대적인 CNN의 정확도를 비교한 그래프이다.
도 5는 상술한 캐시 압축 방법에 따른 실험 결과를 나타낸 그래프이다.
본 발명의 목적 및 효과는 다음의 상세한 설명을 통하여 보다 분명해질 것이나 하기의 기재만으로 본 발명의 목적 및 효과가 제한되는 것은 아니다. 또한, 본 발명을 설명함에 있어서 본 발명과 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판되단는 경우에는 그 상세한 설명을 생략하기로 한다.
이하, 첨부된 도면을 참조하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 이하에서 개시되는 실시 예에 한정되지 않는다. 또한 도면에서 본 발명을 명확하게 개시하기 위해서 본 발명과 관계없는 부분은 생략하였으며, 도면에서 동일하거나 유사한 부호들은 동일하거나 유사한 구성요소들을 나타낸다.
먼저, 도 1에서는 본 발명에 따른 캐시의 구성요소가 도시된다.
도 1에 도시된 것과 같이, 본 발명에 따른 캐시(100)는 데이터 메모리(110), 태그 메모리(120), 압축 모듈(130), 압축 해제 모듈(140), 프로세싱 유닛(150) 중 적어도 하나를 포함할 수 있다.
구체적으로, 데이터 메모리(110)는 데이터를 저장하며, 해당 데이터에 캐시 블록 단위로 접근할 수 있다. 즉, 데이터 메모리(110)는 압축을 위해 하나의 블록을 4개의 세그먼트(segments)로 나누어 각각 따로 접근할 수 있다.
태그 메모리(120)는 압축을 지원하기 위해 블록 당 4개의 태그를 저장할 수 있다.
일 실시예에서, 태그에는 메모리 주소의 상위 비트, valid, dirty, LRU replacement 정보가 포함될 수 있다. 또한, 태그에는 압축을 위해, 압축된 데이터의 위치와 관련된 6비트(bit) 정보와, 압축 상태와 관련된 2비트 정보, 전처리 오프셋과 관련된 8비트 정보 및 양자화 비트 수와 관련된 3비트 정보를 포함할 수 있다.
바람직하게는, 상기 압축 상태는 비압축, 양자화 단독 압축, 블록 비트맵 미사용 압축, 블록 비트맵 사용 압축과 같이 4가지의 상태를 나타낼 수 있다.
압축 모듈(130)은 입력된 부동소수점 데이터를 지수부와 소수부로 분리하는 분배모듈(131)과, 분리된 지수부에 대해 전처리를 수행하는 전처리 모듈(132), 지수부를 압축하는 Golomb-Rice 압축 모듈(133), 분리된 소수부를 압축하는 양자화 모듈(134) 및 압축 포맷 생성 모듈(135)을 포함하여 구성될 수 있다.
압축 해제 모듈(140)은 압축 포맷 해제 모듈(141), 분리된 지수부에 대해 압축 해제를 수행하는 Golomb-Rice 압축 해제 모듈(142), 압축 해제 후 지수부에 대해 후처리를 수행하는 후처리 모듈(143), 분리된 소수부에 대해 압축 해제를 수행하는 역양자화 모듈(144) 및 분리된 지수부와 소수부를 병합하는 병합 모듈(145)을 포함하여 구성될 수 있다.
도 1에 도시된 것과 같이, 본 발명에 따른 캐시는 입력된 부동소수점 데이터를 지수부와 소수부를 구분하고, 각각 다른 방식의 압축을 수행할 수 있다. 일 실시예에서, 지수부는 무손실 압축의 일종인 Golomb-Rice 코드를 사용하여 압축할 수 있다.
Golomb-Rice 코드는 0보다 큰 데이터만 압축할 수 있으므로 압축하기 전 전처리 모듈에서 평균을 빼고 양수와 음수를 번갈아서 배치하도록 전처리한다.
합성곱 가중치(weight)와는 달리 특징 맵(feature map)은 활성화(activation) 함수로 정류 선형 유닛(Rectifier Linear unit)을 사용할 경우 값 중 0의 비중이 높으므로 별도로 모아서 압축 포맷에 0과 1의 비트맵으로 나타내어 1 비트로 저장한다.
그리고 0이 아닌 특징(feature)만 모아서 Golomb-Rice 코드로 압축한다.
반대로 0의 비중이 낮은 가중치는 0과 1의 비트맵을 사용하면 불필요한 정보가 저장되어 오히려 압축률이 낮아지므로 태그 메모리에 비트맵 존재 여부를 나타내는 신호 1비트를 추가하여 신호가 0이면 비트 맵을 저장하지 않는다.
소수부는 손실 압축인 양자화를 사용하여 압축한다. 양자화에 할당되는 비트 수는 태그 메모리에 저장하여 사용자가 원하는 대로 조절 가능하다.
Golomb-Rice 코드는 압축률이 가변적이기 때문에 입력 데이터에 따라 압축이 되지 않거나 압축률이 낮을 수 있다. 또한 합성곱 신경망 데이터가 아닌 중요한 데이터는 손실 압축이 되지 않게 할 필요가 있다.
따라서 태그 메모리에 압축 상태를 저장하여 압축을 하지 않는 경우, Golomb-Rice 코드가 압축률이 낮아서 사용하지 않고 양자화만 하는 경우, 블록 비트맵 사용 여부를 구분한다 캐시에서 데이터를 출력할 때는 압축 해제 모듈에서 압축의 역순으로 압축이 해제된 데이터를 출력한다.
이하에서는 설명의 편의를 위해 부동소수점 데이터를 32-비트 형식으로 정의하며, 이 경우, 1-비트는 부호(sign)를 나타내고, 8-비트는 지수부(exponent)를 나타내고, 23-비트는 소수부(소수부)를 나타낼 수 있다. 상술한 32-비트의 부동소수점 데이터는 아래의 수학식 1로 나타낼 수 있다.
Golomb-Rice 코드는 값이 0에 가까울수록 짧은 코드워드를 할당하므로 압축하고자 하는 데이터가 그와 유사한 분포를 가져야만 높은 압축률을 얻을 수 있다.
이와 관련하여, 도 2에서는 CNN 중 하나인 GoogLeNet을 실행했을 때 합성곱 가중치(Convolution Weights)의 지수 확률 분포가 도시된다.
도 2를 참조하면, 합성곱 가중치의 지수부는 중심에서 멀어질수록 비율이 급격히 떨어지는 분포를 가지므로, 이 분포를 적당히 변환하면 Golomb-Rice 코드로도 높은 압축률로 압축을 수행할 수 있다.
상술한 전처리 모듈(132)은, 지수부를 Golomb-Rice 코드로 압축하기 위해 전처리 과정을 수행할 수 있다. 구체적으로, 전처리 모듈(1320)은 부동소수점 데이터로부터 분리된 지수부에서 오프셋(offset)을 빼서 분포를 0이 중심이 되도록 이동시킬 수 있다.
이후, 전처리 모듈(132)은 음수를 양수로 바꾸어 one-sided 확률 분포로 만들기 위해, 아래의 수학식 2와 같은 전처리 과정을 수행할 수 있다.
상기 수학식 2에서 x는 32-비트 부동소수점을 나타낸다. 위와 같이 전처리 과정을 거친 y 값들은 Golomb-Rice 코드에 근거하여 비트스트림(bitstream)으로 변환될 수 있다. 참고로, 본 발명에서는 실험을 통해 Golomb-Rice 코드의 파라미터 k의 값을 1로 결정하였다.
상기 표 1의 첫째, 둘째 열을 참조하면, 합성곱 가중치의 Golomb-Rice 코딩 결과는 평균 2.88 bits로 이론적 한계인 엔트로피 2.77 bits 에 근접한 값을 얻을 수 있다.
또한, 0을 제외한 특징 맵(Feature maps)은 평균 3.07 bits로 압축할 수 있음이 확인된다. 엔트로피 2.70 bits와의 차이는 40% 내외의 비율을 차지하는 0을 제외하고 Golomb-Rice coding을 했기 때문이다.
전처리 과정의 오프셋은 도 2의 분포에서 추정할 수 있는 것처럼 0과 차이가 크기 때문에 Golomb-Rice 코딩을 하면 매우 긴 코드워드가 생성될 수 있다.
따라서 0을 직접 Golomb-Rice 코딩하는 것은 바람직하지 않으며, 대신 캐시 블록의 32-비트 부동소수점 원소들의 지수부가 0인지 여부를 나타내는 제로 비트맵(zero bitmap)을 추가해서 0이 아닌 경우에만 Golomb-Rice 코딩하도록 구성하는 것이 바람직하다.
이 경우, 0은 제로 비트맵 중 1 비트만으로 나타낼 수 있으므로 압축된 비트 스트림 길이를 줄일 수 있다. 제로 비트맵을 사용하면, 상기 표 1의 셋째 열처럼 특징 맵 압축 결과가 2.77 bits로 엔트로피에 근접한 값을 얻을 수 있다.
한편, 제로 비트맵의 사용에 의해 합성곱 가중치의 길이가 1 비트 정도 길어지는 문제점이 발생한다. 이는 합성곱 가중치 중에 0인 값이 거의 없기 때문에 상술한 제로 비트맵에 의한 압축률 감소 효과는 없이 공간만 차지하기 때문이다.
이 문제를 해결하기 위해서는 데이터 분포가 다른 합성곱 가중치들과, 특징 맵을 구분하여 다른 방식으로 압축을 수행해야 한다.
이에, 캐시 블록 단위로 제로 비트맵 존재 여부를 나타내는 1-비트 비트맵 플래그가 추가될 수 있다. 즉, 캐시 블록의 엘리먼트(element) 중 지수부가 0인 것이 존재하면 특징 맵일 가능성이 높으므로, 제로 비트맵을 사용하고 상기 플래그의 값을 1로 설정하여 엘리먼트의 지수부가 0이 아닐 때만 Golomb-Rice 코딩을 수행한다.
반대로 캐시 블록에 0인 지수부가 존재하지 않는 경우, 합성곱 가중치들로 추정하여, 비트맵 없이 모든 지수부를 Golomb-Rice 코딩으로 압축할 수 있다.
64 비트 캐시 블록에는 4비트 부동소수점 엘리먼트들이 16개 포함되므로 블록 비트맵 플래그로 인한 원소 당 오버헤드는 평균 1/16 = 0.0625 비트이다. 따라서, 상술한 것과 같이 부동소수점 데이터를 지수부와 소수부로 분리하고, 각각 Golomb-Rice 코딩 압축과, 양자화 압축을 적용하면 표 2의 넷째 열과 같이 8-비트 지수부를 평균 3비트 정도로 압축할 수 있다.
도 3은 합성곱 가중치의 소수부 분포와 관련된 그래프이다.
도 3에 도시된 것과 같이, 합성곱 가중치의 소수부는 평탄한 분포를 보이기 때문에 상술한 Golomb-Rice와 같은 엔트로피 코딩으로 압축을 하기 어렵다. 또한, 특징 맵들도 0이 40 % 내외의 확률로 존재하는 것을 제외하면 나머지는 합성곱 가중치와 유사한 분포를 보인다.
한편, 소수부를 압축하는 경우에도, 지수부 압축 방법과 마찬가지로 소수부가 0임을 나타내기 위한 제로 비트맵을 사용할 경우, 1비트가 추가로 요구된다.
아울러, 특징 맵이 ReLU layer에 의해 0이 된 경우, 지수부와 소수부가 동시에 0이 된다. CNN 특징 맵에서 소수부가 0인 값들 중 exponent도 동시에 0인 비율은 99.8 %에 달한다. 이러한 조건을 고려하여, 상술한 지수부의 압축 방법을 변형하여, 소수부도 0일 때만 제로 비트맵을 1로 설정하면 지수부의 제로 비트맵을 공유할 수 있다.
이 경우, 소수부가 0인 경우의 99.8% 이상은 별도의 비트 추가 없이도 압축을 수행할 수 있다.
한편, 지수부와 소수부가 동시에 0인 값들을 제외한 경우에는, 관련된 확률 분포가 평탄하기 때문에 합성곱 가중치와 특징 맵들의 엔트로피가 각각 22.5 bits, 22.3 bits 로 23-비트 소수부와 거의 차이를 보이지 않는다. 따라서, 압축된 비트 스트림의 평균 길이는 엔트로피보다 작을 수 없기 때문에 소수부는 Golomb-Rice 코드에 의한 압축을 수행하기 어려운 문제점이 있다.
이러한 문제점에도 불구하고, 종래 개시 압축 방법은 대부분 지수부와 소수부를 구분하지 않고 손실 압축 방법을 사용하고 있다. 그러나 상술한 바와 같은 문제점을 고려하면 CNN의 부동소수점 데이터에 일괄적으로 손실 압축을 적용하는 것은 적절하지 않다. 즉, 종래 기술에서는 CNN에서 약간의 데이터 에러를 감수하면서도 압축률을 대폭 높일 수 있는 손실 압축의 장점 때문에 소수부에도 손실 압축을 유지하고 있다.
한편, CNN의 비트 정확도(bit precision)를 어느 정도까지 낮출 수 있는지에 대해서는 기
존에 customized accelerator나 GPU에서 연구가 많이 진행됨 [minifloat, DeftNN]. 이 논문에서도 간단한 linear quantization을 사용.
도 4에서는 23-비트 소수부에 대해, 베이스라인 대비 소수부 양자화로 인한 상대적인 CNN의 정확도를 비교한 것이다.
도 4를 참조하면, 소수부의 비트 정확도가 4비트로 양자화 되었을 때, 정확도 저하가 없음을 확인할 수 있다. 2비트로 양자화 되었을 때는, 1.2% 정도의 정확도 감소를 보인다.
또한, 32 비트 부동 소수점 데이터를 압축할 때, 소수부 비트 정확도와 관련하여 4비트를 선택하면, CNN 데이터는 부호에 할당되는 1비트와, 지수부에 평균적으로 할당되는 3비트 및 소수부에 4비트를 포함하는 총 8비트의 데이터로 압축되며, 이에 따라 압축률은 평균적으로 4정도로 결정될 수 있다.
이하에서는, 본 발명에 따른 캐시 압축 방법과 관련된 일 실시예를 설명한다.
압축과 관련된 데이터 조건과 관련하여, 일 실시예에서는 캐시 블록 하나가 4개의 세그먼트(segment)로 분할될 수 있다. 예를 들어, 64비트 캐시 블록을 가정하면, 세그먼트 당 길이는 16비트이고, 캐시 블록 하나 당 16개의 부동 소수점 데이터를 저장하므로, 부동소수점 데이터 하나는 평균적으로 8비트의 공간을 사용하게 된다.
세트 당 태그의 개수는 압축 기능이 없는 캐시의 4배로 증가시켰다. 압축 결과에 따라 논리 캐시 블록(logical cache block) 하나가 피지컬 세그먼트(physical segment) 하나 또는 여러 개에 저장될 수 있다.
새로 쓰여야 할 피지컬 세그먼트들의 개수가 LRU 블록의 피지컬 세그먼트들보다 많으면 LRU가 아닌 이웃 논리 블록들도 추출되도록 수정되었다.
Golomb-Rice 코드로 압축된 지수부의 평균 길이는 대략 3 비트로, 1-비트는 부호에, 4-비트는 소수부에 할당될 경우, 압축된 데이터의 길이는 평균 8비트가되어, 피지컬 세그먼트를 하나만 사용하여 압축률 4를 달성할 수 있다.
그러나 확률적으로 3비트 보다 매우 긴 코드워드가 빈번하게 생성되므로, 이 경우에는 피지컬 세그먼트를 복수 개 사용해야만 한다. 피지컬 세그먼트가 복수 개 사용되는 경우, 8-비트 지수부에 대해 Golomb-Rice 코드를 이용하지 않고 소수부만 7비트로 손실압축을 수행하면, 압축 데이터는 부호에 1비트, 지수부에 8비트, 소수부에 7비트가 할당되어, 총 16 비트로 2개의 피지컬 세그먼트에 저장될 수 있다.
즉, 7-비트 소수부를 사용해도 여전히 CNN의 정확도 저하가 적음을 도 4에서 확인할 수 있다. 따라서, 지수부의 Golomb-Rice 코딩 결과에 근거하여 복수개의 피지컬 세그먼트가 필요한 것으로 판단되면, 지수부 압축을 수행하지 않고, 소수부의 양자화 압축만 수행하는 것이 압축률을 높일 수 있는 방법이다.
본 발명에서 제안하는 캐시 압축 방법에 있어서, 태그마다 추가로 저장해야 하는 정보는 상기 표 2에 도시된 것과 같다.
본 발명에서 제안하는 캐시 압축 방법은 FP-H처럼 바이트 단위로 데이터를 저장하지 않고 16비트 세그먼트 단위로 저장하므로, FP-H 대비 데이터 저장과 관련된 인덱스에 요구되는 4비트가 감소된다.
본 발명에서 제안하는 캐시 압축 방법에 따르면, 캐시에서 처리되는 데이터는 압축 상태와 관련하여, 4가지 상태 정보를 나타내는 2비트 정보를 포함할 수 있다. 구체적으로 압축 상태는, 압축 안 함, 양자화만 수행 함, Golomb-Rice 코딩 시 블록 비트맵 없음, Golomb-Rice 코딩 시 블록 비트맵 있음과 같이 4가지 상태로 구분될 수 있다.
아울러, 본 발명에서 제안하는 캐시 압축 방법에 따르면, 캐시에서 처리되는 데이터는 Golomb-Rice 코드의 전처리 위한 오프셋 8비트와, 양자화의 비트 정확도를 나타내는 3비트를 포함하는 인코딩 정보를 포함할 수 있다. 한편, 인코딩 정보에 들어가는 값의 종류와 길이는 변경될 수도 있다.
상기 표 3은 종래 캐시 압축 방법인 FP-H와 본 발명에 따른 캐시 압축 방법(Proposed)을 비교한 것이다. 표 3을 참조하면 본 발명에서는 지수부에 대해서만 Golomb-Rice 코더/디코더를 사용하므로, 엔트로피 코더가 1개 사용된다. 반면, FP-H는 지수부, 높은 소수부, 낮은 소수부에 대해 각각 압축기가 필요하므로 엔트로피 코더가 3개 사용된다.
도 5는 상술한 캐시 압축 방법에 따른 실험 결과를 나타낸 것이다.
도 5의 실험에서는 라스트-레벨 캐시(Last-Level Cache)만 압축하였다. 실험에 사용한 캐시 구조는 L1-I: 4-way 32 KB; L1-D: 8-way 32 KB; L2: 8-way 256 KB; L3: 16-way 1, 2, 4 MB로 정의된다. CNN 소프트웨어로서 Caffe를 사용하였으며, 추론 과정을 실험하였다. 신경망 모델은 저명한 GoogLeNet을 사용하였다.
이미지 입력은 ILSVRC 2012 세트 중 임의로 선택하였다. 첫 번째 이미지 입력은 캐시 워밍업에 사용하고, 두 번째 이미지는 캐시 미스율(Cache Miss Rate) 측정에 사용하였다.
캐시 미스율(Cache Miss Rate) 측정에는 51억개 이상의 명령(instructions)이 사용되었다. CNN 정확도는 Caffe 소프트웨어에 캐시 압축 동작을 구현하여 1000장의 이미지에 대해 측정되었다.
도 5를 참조하면, 본 발명에 따른 캐시 압축을 했을 때 캐시 미스율(Cache Miss Rate)과 CNN 정확도에 대한 실험 결과가 나타난다.
도 5에서 Baseline은 압축되지 않은 캐시이고, CR 4로 표시된 막대는 캐시 블록 압축률이 항상 4인 경우를 나타낸다.
본 발명에 따르면, Golomb-Rice 코드의 크기가 너무 길면 압축률 2 (두개의 세그먼트)로 저장하는 경우도 있다. 캐시 크기가 1 MB일 때 CR 4의 미스율이 4 MB baseline과 차이가 나는 것은 사전 평가를 통해 부동소수점 데이터가 압축 대상으로 지정되지 않은 메모리 영역이 크기 때문이다.
4-비트 소수부로 하여 제안하는 압축 방법을 적용한 1 MB 압축 캐시는 압축되지 않은 2 MB baseline 캐시와 비슷한 미스율을 보이며, CR 4 결과에도 근접하여 우수한 압축률을 보인다. 참고로, 소수부의 비트 정확도를 작게 하면 압축률을 더욱 높일 수 있으며, CNN 정확도 또한 저하되지 않고 약간 상승하는 결과가 나타난다.
일 예에서, 4-비트 소수부를 사용하면 0.1%만큼 CNN 정확도가 상승하였으며, 3-비트 소수부는 0.3%만큼 CNN 정확도가 상승하였다.

Claims (6)

  1. 메모리 주소를 찾기 위한 태그를 저장하는 태그 메모리;
    부동소수점 데이터에 대해 소정의 연산을 수행하는 프로세싱 유닛;
    상기 부동소수점 데이터의 지수부에는 무손실 압축 방법을 적용하고, 상기 부동소수점 데이터의 소수부에는 손실 압축 방법을 적용하여, 데이터 압축을 수행하는 압축 모듈을 포함하고,
    상기 압축 모듈은,
    상기 부동소수점 데이터를 지수부와 소수부로 분리하는 분배 모듈과,
    상기 지수부에 대해 전처리를 수행하고, (i)상기 전처리된 지수부가 0인 경우 상기 전처리된 지수부에 1비트의 제로 비트맵을 추가하고, (ii)상기 전처리된 지수부가 0이 아닌 경우 상기 전처리된 지수부에 상기 제로 비트맵을 추가하지 않는 전처리 모듈과, 및
    상기 전처리 모듈로부터 출력된 상기 전처리된 지수부에 상기 제로 비트맵이 없는 경우 Golomb-Rice 코드를 사용하여 압축을 수행하는 Golomb-Rice 압축 모듈을 포함하는 것을 특징으로 하는 캐시.
  2. 제1항에 있어서,
    상기 압축 모듈은,
    상기 분리된 소수부에 대해 양자화 압축을 적용하여 손실 압축을 수행하는 양자화 모듈을 더 포함하는 것을 특징으로 하는 캐시.
  3. 제1항에 있어서,
    상기 압축 모듈에 의해 압축된 데이터를 압축 해제하는 압축 해제 모듈을 더 포함하고,
    상기 압축 해제 모듈은,
    상기 압축된 지수부에 대해 압축 해제를 수행하는 Golomb-Rice 압축 해제 모듈과,
    상기 압축 해제된 지수부에 대해 후처리를 수행하는 후처리 모듈과,
    상기 압축된 소수부에 대해 압축 해제를 수행하는 역양자화 모듈 및
    분리된 지수부의 압축 해제 결과와 분리된 소수부의 압축 해제 결과를 병합하는 병합 모듈을 포함하는 것을 특징으로 하는 캐시.
  4. 삭제
  5. 삭제
  6. 제1항에 있어서,
    상기 태그 메모리는 압축 상태와 관련된 정보를 저장하며,
    상기 압축 상태와 관련된 정보는,
    비압축, 양자화 단독 압축, 블록 비트맵 미사용 압축 및 블록 비트맵 사용 압축 중 어느 하나와 관련된 정보에 대응되는 것을 특징으로 하는 캐시.
KR1020210170626A 2021-12-02 2021-12-02 합성곱 신경망을 위한 부동소수점 압축이 포함된 캐시 KR102639157B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020210170626A KR102639157B1 (ko) 2021-12-02 2021-12-02 합성곱 신경망을 위한 부동소수점 압축이 포함된 캐시

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210170626A KR102639157B1 (ko) 2021-12-02 2021-12-02 합성곱 신경망을 위한 부동소수점 압축이 포함된 캐시

Publications (2)

Publication Number Publication Date
KR20230082805A KR20230082805A (ko) 2023-06-09
KR102639157B1 true KR102639157B1 (ko) 2024-02-21

Family

ID=86765020

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210170626A KR102639157B1 (ko) 2021-12-02 2021-12-02 합성곱 신경망을 위한 부동소수점 압축이 포함된 캐시

Country Status (1)

Country Link
KR (1) KR102639157B1 (ko)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101703207B1 (ko) * 2009-09-30 2017-02-06 알테라 코포레이션 압축 및 압축해제를 이용한 향상된 멀티 프로세서 파형 데이터 교환
KR101164719B1 (ko) * 2009-11-16 2012-07-11 부경대학교 산학협력단 효율적인 저장 및 전송을 위한 지리정보시스템의 벡터 맵 데이터 압축 방법
US11588499B2 (en) * 2018-11-05 2023-02-21 Samsung Electronics Co., Ltd. Lossless compression of neural network weights

Also Published As

Publication number Publication date
KR20230082805A (ko) 2023-06-09

Similar Documents

Publication Publication Date Title
US9947071B2 (en) Texture pipeline with online variable rate dictionary compression
Ratanaworabhan et al. Fast lossless compression of scientific floating-point data
US5870036A (en) Adaptive multiple dictionary data compression
US6597812B1 (en) System and method for lossless data compression and decompression
US7039241B1 (en) Method and apparatus for compression and decompression of color data
US8990275B2 (en) Method for encoding floating-point data, method for decoding floating-point data, and corresponding encoder and decoder
US9053018B2 (en) Compressed memory page selection based on a population count of a dataset
US9041567B2 (en) Using variable encodings to compress an input data stream to a compressed output data stream
CN103326732A (zh) 压缩数据的方法、解压数据的方法、编码器和解码器
US8937563B2 (en) Using variable length encoding to compress an input data stream to a compressed output data stream
US20200105021A1 (en) Online image compression in hardware
US20200228138A1 (en) Memory Compression Method and Apparatus
KR20180005663A (ko) 가상 메모리 시스템에서 향상된 압축된 캐싱
KR102639157B1 (ko) 합성곱 신경망을 위한 부동소수점 압축이 포함된 캐시
US10115177B2 (en) Online texture compression and decompression in hardware
Shaila et al. Block encoding of color histogram for content based image retrieval applications
JP3127016B2 (ja) データ圧縮及び復元方法
KR20230124941A (ko) 컴퓨터 메모리에서 밸류 유사성을 활용하는 시스템,방법, 및 장치
JPH0951276A (ja) デジタルデータ処理装置
JPH10341166A (ja) データ量に適応するデータ圧縮方法
Bae et al. Cache compression with Golomb-Rice code and quantization for convolutional neural networks
Brisaboa et al. Scalable processing and autocovariance computation of big functional data
He et al. How Can Spiral Architecture Improve Image Compression?
CN115934730A (zh) 数据处理方法和装置、介质和计算机设备
KR20210066675A (ko) Jpeg-ls 부호화 장치 및 방법

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right