KR20210136123A - 신경망 모델 압축을 위한 양자화, 적응적 블록 파티셔닝 및 코드북 코딩을 위한 방법 및 장치 - Google Patents

신경망 모델 압축을 위한 양자화, 적응적 블록 파티셔닝 및 코드북 코딩을 위한 방법 및 장치 Download PDF

Info

Publication number
KR20210136123A
KR20210136123A KR1020217033218A KR20217033218A KR20210136123A KR 20210136123 A KR20210136123 A KR 20210136123A KR 1020217033218 A KR1020217033218 A KR 1020217033218A KR 20217033218 A KR20217033218 A KR 20217033218A KR 20210136123 A KR20210136123 A KR 20210136123A
Authority
KR
South Korea
Prior art keywords
size
codebook
maximum value
ctu3ds
neural network
Prior art date
Application number
KR1020217033218A
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
Priority claimed from US17/099,202 external-priority patent/US11245903B2/en
Application filed by 텐센트 아메리카 엘엘씨 filed Critical 텐센트 아메리카 엘엘씨
Publication of KR20210136123A publication Critical patent/KR20210136123A/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/129Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • 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
    • G06N3/045Combinations of networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Biomedical Technology (AREA)
  • Molecular Biology (AREA)
  • Biophysics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

신경망 모델 압축을 위한 양자화, 적응적 블록 파티셔닝 및 코드북 코딩의 방법은 적어도 하나의 프로세서에 의해 수행되고, 신경망의 계층에서의 다차원 텐서의 포화된 최대 값, 및 포화된 최대 값에 대응하는 비트 심도를 결정하는 단계, 및 다차원 텐서에서의 가중치 계수들을 포화된 최대 값의 범위 내에 있도록 클리핑하는 단계를 포함한다. 방법은 비트 심도에 기초하여 클리핑된 가중치 계수들을 양자화하는 단계, 및 비트 심도를 포함하는 계층 헤더를 디코더에 송신하는 단계를 더 포함한다.

Description

신경망 모델 압축을 위한 양자화, 적응적 블록 파티셔닝 및 코드북 코딩을 위한 방법 및 장치
관련 출원에 대한 상호 참조
본 출원은 미국 특허에 2019년 11월 22일자로 출원된 미국 가특허 출원 제62/939,057호, 2019년 11월 22일자로 출원된 미국 가특허 출원 제62/939,054호, 2019년 11월 25일자로 출원된 미국 가특허 출원 제62/939,949호, 2019년 12월 12일자로 출원된 미국 가특허 출원 제62/947,236호, 및 2020년 11월 16일자로 출원된 미국 특허 출원 제17/099,202호로부터의 우선권을 주장하며, 이러한 출원들의 개시내용들은 그 전체가 본 명세서에 참조로 포함된다.
의미적 분류(semantic classification), 타깃 검출/인식, 타깃 추적, 비디오 품질 향상 등과 같은 큰 범위의 비디오 애플리케이션들에서의 심층 신경망(Deep Neural Network)(DNN)들의 성공은 DNN 모델들을 압축할 필요성을 제기한다. 따라서, MPEG(Motion Picture Experts Group)은 스토리지 및 계산 둘다를 절약하기 위해 DNN 모델들을 인코딩하는데 이용되는 신경망 표준(Neural Network standard)(NNR)의 코딩된 표현(Coded Representation)에 대해 능동적으로 작업하고 있다.
실시예들에 따르면, 신경망 모델 압축(neural network model compression)을 위한 양자화(quantization), 적응적 블록 파티셔닝(adaptive block partitioning) 및 코드북 코딩(codebook coding)의 방법은, 적어도 하나의 프로세서에 의해 수행되고, 신경망의 계층에서의 다차원 텐서(multi-dimensional tensor)의 포화된 최대 값, 및 포화된 최대 값에 대응하는 비트 심도(bit depth)를 결정하는 단계, 및 다차원 텐서에서의 가중치 계수들(weight coefficients)을 포화된 최대 값의 범위 내에 있도록 클리핑(clipping)하는 단계를 포함한다. 방법은, 비트 심도에 기초하여 클리핑된 가중치 계수들을 양자화하는 단계, 및 비트 심도를 포함하는 계층 헤더(layer header)를 디코더에 송신하는 단계를 더 포함한다.
실시예들에 따르면, 신경망 모델 압축을 위한 양자화, 적응적 블록 파티셔닝 및 코드북 코딩을 위한 장치는, 프로그램 코드를 저장하도록 구성된 적어도 하나의 메모리, 및 프로그램 코드를 판독하고 프로그램 코드에 의해 지시된 대로 동작하도록 구성된 적어도 하나의 프로세서를 포함한다. 프로그램 코드는, 적어도 하나의 프로세서로 하여금 신경망의 계층에서의 다차원 텐서의 포화된 최대 값, 및 포화된 최대 값에 대응하는 비트 심도를 결정하게 하도록 구성된 제1 결정 코드, 및 적어도 하나의 프로세서로 하여금 다차원 텐서에서의 가중치 계수들을 포화된 최대 값의 범위 내에 있도록 클리핑하게 하도록 구성된 클리핑 코드를 포함한다. 프로그램 코드는, 적어도 하나의 프로세서로 하여금 비트 심도에 기초하여 클리핑된 가중치 계수들을 양자화하게 하도록 구성된 양자화 코드, 및 적어도 하나의 프로세서로 하여금 비트 심도를 포함하는 계층 헤더를 디코더에 송신하게 하도록 구성된 송신 코드를 더 포함한다.
실시예들에 따르면, 비일시적 컴퓨터 판독가능 매체는 명령어들을 저장하고, 명령어들은, 신경망 모델 압축을 위한 양자화, 적응적 블록 파티셔닝 및 코드북 코딩을 위해 적어도 하나의 프로세서에 의해 실행될 때, 적어도 하나의 프로세서로 하여금, 신경망의 계층에서의 다차원 텐서의 포화된 최대 값, 및 포화된 최대 값에 대응하는 비트 심도를 결정하게 하고, 다차원 텐서에서의 가중치 계수들을 포화된 최대 값의 범위 내에 있도록 클리핑하게 한다. 명령어들은 또한, 적어도 하나의 프로세서에 의해 실행될 때, 비트 심도에 기초하여 클리핑된 가중치 계수들을 양자화하게 하고, 비트 심도를 포함하는 계층 헤더를 디코더에 송신하게 한다.
도 1a는 계수들을 8-비트 표현으로 클리핑 및 맵핑하는 도면이다.
도 1b는 GEPM/GEPP 파티션 방법의 도면이다.
도 2는 실시예들에 따른, 본 명세서에 설명된 방법들, 장치들 및 시스템들이 구현될 수 있는 환경의 도면이다.
도 3은 도 2의 하나 이상의 디바이스의 예시적인 컴포넌트들의 블록도이다.
도 4는 실시예들에 따른, 신경망 모델 압축을 위한 시스템의 기능 블록도이다.
도 5는 실시예들에 따른, 신경망 모델 압축을 위한 양자화 방법의 흐름도이다.
도 6은 실시예들에 따른, 신경망 모델 압축을 위한 양자화를 위한 장치의 블록도이다.
도 7은 실시예들에 따른, 수직 방향에서의 래스터 스캔(raster scan)을 이용하는 적응적 CTU3D/3D 코딩 유닛(CU3D) 파티션의 2개의 예들의 도면이다.
도 8은 실시예들에 따른, 신경망 모델 압축을 위한 적응적 블록 파티셔닝 방법의 흐름도이다.
도 9는 실시예들에 따른, 신경망 모델 압축을 위한 적응적 블록 파티셔닝을 위한 장치의 블록도이다.
도 10은 실시예들에 따른, 코드북, 코드북 예측자(codebook predictor) 및 예측된 맵의 도면이다.
도 11은 실시예들에 따른, 신경망 모델 압축을 위한 코드북 코딩 방법의 흐름도이다.
도 12는 실시예들에 따른, 신경망 모델 압축을 위한 코드북 코딩을 위한 장치의 블록도이다.
본 개시내용은 신경망 모델 압축에 관한 것이다. 더 구체적으로, 본 명세서에 설명된 방법들 및 장치들은 신경망 모델 압축을 위한 양자화, 적응적 블록 파티셔닝 및 코드북 코딩에 관한 것이다.
멀티미디어 콘텐츠 설명 및 분석을 위한 신경망들의 압축에서, 가중치 텐서(weight tensor)의 차원이 (컨볼루션 계층과 같이) 2보다 큰 경우, 이 가중치 텐서는 2차원(2D) 텐서로 재성형된다. 가중치 텐서의 차원이 (완전히 접속된 계층 또는 바이어스 계층과 같이) 2 이하인 경우 재성형이 수행되지 않는다.
인코딩 방법은 좌측에서 우측으로 행 우선 방식(row-first manner)으로 가중치 계수들을 스캔하고, 위에서 아래로 행들을 스캔한다.
Figure pct00001
멀티미디어 콘텐츠 설명 및 분석을 위한 신경망들의 압축에서, 가장 가까운 이웃 양자화는 가중치 행렬(weight matrix)들에서의 각각의 가중치 계수에 균일한 방식으로 적용된다. 고정된 스텝 크기(step size)가 적용된다. 디코딩된 행렬에서의 재구성된 값들은 스텝 크기의 정수배들(integer multiples)이다. 스텝 크기는 32-비트 부동소수점 수(floating number)로서 정의된다.
Figure pct00002
step_size는 양자화 스텝 크기이다.
멀티미디어 콘텐츠 설명 및 분석을 위한 신경망들의 압축에서, 각각의 양자화된 가중치 레벨은 정수 파라미터 maxNumNoRem을 이용하는 다음의 절차에 따라 인코딩된다:
제1 단계에서, 이진 신택스 요소(binary syntax element) sig_flag가 양자화된 가중치 레벨에 대해 인코딩되는데, 이는 대응하는 레벨이 0과 동일한지를 명시한다. sig_flag가 1과 동일하면, 추가 이진 신택스 요소 sign_flag가 인코딩된다. 빈(bin)은 현재 가중치 레벨이 양(positive)인지 또는 음(negative)인지를 나타낸다. 다음으로, 빈들의 단항 시퀀스(unary sequence)가 인코딩되고, 다음과 같이 고정 길이 시퀀스가 후속된다:
변수 k는 0으로 초기화되고 X는 1<<k로 초기화된다. 신택스 요소 abs_level_greater_X가 인코딩되고, 이것은 양자화된 가중치 레벨의 절대값이 X보다 더 크다는 것을 나타낸다. abs_level_greater_X가 1과 동일한 경우, 그리고 X가 maxNumNoRem보다 더 큰 경우, 변수 k는 1만큼 증가된다. 그 후, 1<<k가 X에 더해지고, 추가 abs_level_greater_X가 인코딩된다. 이 절차는 abs_level_greater_X가 0과 동일할 때까지 계속된다. 이제, X는 값들(X, X-1, ... X-(1<<k) + 1) 중 하나이어야 한다. 절대 양자화된 가중치 레벨인 리스트에서의 값들을 가리키는 길이 k의 코드가 인코딩된다.
컨텍스트 모델링(context modeling)은 3가지 타입의 플래그들 sig_flag, sign_flag, 및 abs_level_greater_X를 컨텍스트 모델들과 연관시키는 것에 대응한다. 이러한 방식으로, (컨텍스트 모델 내부의) 확률 추정기(probability estimator)가 기본 통계(underlying statistics)에 적응할 수 있도록, 유사한 통계 거동을 갖는 플래그들이 동일한 컨텍스트 모델과 연관될 수 있다.
제시된 접근법의 컨텍스트 모델링은 다음과 같다:
3개의 컨텍스트 모델들이, 좌측의 이웃하는 양자화된 가중치 레벨이 0인지, 0보다 작은지, 또는 0보다 큰지에 따라, sig_flag에 대해 구별된다.
3개의 다른 컨텍스트 모델들은 좌측의 이웃하는 양자화된 가중치 레벨이 0인지, 0보다 작은지, 또는 0보다 큰지에 따라 sign_flag에 대해 구별된다.
abs_level_greater_X 플래그들에 대해, 각각의 X는 하나 또는 2개의 별개의 컨텍스트 모델들을 이용한다. X <= maxNumNoRem인 경우, sign_flag에 따라 2개의 컨텍스트 모델들이 구별된다. X > maxNumNoRem인 경우, 하나의 컨텍스트 모델만이 이용된다.
Figure pct00003
sig_flag는 양자화된 가중치 QuantWeight[i]가 0이 아닌지를 명시한다. sig_flag가 0과 동일한 것은 QuantWeight[i]가 0이라는 것을 나타낸다.
sign_flag는 양자화된 가중치 QuantWeight[i]가 양인지 또는 음인지를 명시한다. sign_flag가 1과 동일한 것은 QuantWeight[i]가 음이라는 것을 나타낸다.
abs_level_greater_x[j]는 QuantWeight[i]의 절대 레벨이 j+1보다 큰지를 나타낸다.
abs_level_greater_x2[j]는 지수 골롬 나머지(exponential golomb remainder)의 단항 부분을 포함한다.
abs_remainder는 고정 길이 나머지를 나타낸다.
현재의 NNR에서, 스텝 크기는 32-비트 부동소수점 수로서 정의된다. 디코더는 현재 계층의 디코딩이 완료되기 전에 양자화된 계수들의 최대 비트 심도에 대한 어떠한 지식도 갖지 않는다. 이것은 디코더가 최대 가능한 비트 심도(예를 들어, 32-비트)를 갖는 양자화된 계수에 대해 메모리를 할당하게 하여, 메모리 이용, 대역폭 및 추론 속도를 낭비하게 된다.
또한, 심층 학습 시스템(deep learning system)에 대한 추론 동작은 행렬 곱셈을 집중적으로 이용하므로 고성능 행렬 곱셈 라이브러리(GEMM)는 추론 동작을 위한 핵심(key)이다. 좌측(left-hand-side)(lhs) 행렬 및 우측(right-hand-side)(rhs) 행렬의 크기에 따라, 2개의 GEMM 루틴들(GEPP/GEBP, GEPM/GEBP)이 최적의 GEMM 솔루션으로서 지난 10년 동안 업계에 의해 인식된다. 도 1b에 도시된 바와 같이, 두 방법들은 현대의 컴퓨팅 플랫폼에서 (DDR(Double Data Rate)과 같은) 오프-칩 메모리 및 (멀티-레벨 캐시와 같은) 온-칩 메모리의 상이한 특성들을 최상으로 이용하기 위해 lhs 행렬 및 rhs 행렬을 재귀적으로 파티셔닝하고, lhs 행렬은 최적 메모리 액세스 패턴을 달성하기 위해 통상적으로 열-우선 순서(column-major order)로 저장된다. lhs 행렬은 통상적으로 최적 메모리 액세스 패턴을 달성하기 위해 전치(transposed)된다. 일부 더 새로운 GEMM 루틴들(예를 들어, QNNPACK)은 모바일 및 에지 디바이스들을 위해 설계된 신경망들에 대해 최적화되고, GEPP 루틴 또는 GEPM 루틴의 변형이고, 유사한 행렬 블로킹(blocking)/파티셔닝 방법을 따른다.
NNR에서의 행렬 스캔 순서는 좌측에서 우측으로의 행 우선 방식 및 위에서 아래로의 행들로서 정의된다. 이 스캔 순서는 추론 동작이 동작을 시작하기 전에 과도한 크기의 가중치 계수들을 버퍼링해야 하기 때문에, 추론 동작에 의해 요구되는 스캔 순서와 일치(match)하지 않는다. 예를 들어, VGG16의 제1 완전 접속 계층(fully-connect layer)에 대해 추론 동작이 수행될 때, 이 계층의 행렬 크기가 25088x4096인 경우, Nx25088 계수들을 저장할 수 있는 버퍼는 GEMM 루틴을 수행하기 위해 예약되어야 한다. 정상 GEMM 연산에 대해 N=64인 경우, 계수들이 32-비트 부동소수점 수 대신에 8-비트 정수에 의해 표현되더라도 버퍼 크기는 1.5MB일 것이지만, 그러한 버퍼 크기는 특히 모바일 및 에지 디바이스들에 대해 너무 높다.
또한, 엔트로피 코딩은 양자화된 가중치 계수에 대해 직접 수행될 수 있다. 가중치 텐서가 비중첩 2D/3D 코딩 트리 유닛(CTU)/3차원 코딩 트리 유닛(CTU3D) 블록들로 파티셔닝된 후의 로컬 분포는 아직 고려되지 않았다. 코드북 방법은 CTU/CTU3D 블록들에서 양자화된 가중치 계수들을 리인덱싱(re-indexing)함으로써 더 콤팩트한 표현을 제공한다.
도 2는 실시예들에 따른, 본 명세서에 설명된 방법들, 장치들 및 시스템들이 구현될 수 있는 환경(200)의 도면이다. 도 2에 도시된 바와 같이, 환경(200)은 사용자 디바이스(210), 플랫폼(220) 및 네트워크(230)를 포함할 수 있다. 환경(200)의 디바이스들은 유선 접속들, 무선 접속들, 또는 유선 및 무선 접속들의 조합을 통해 상호접속할 수 있다.
사용자 디바이스(210)는 플랫폼(220)과 연관된 정보를 수신, 생성, 저장, 처리 및/또는 제공할 수 있는 하나 이상의 디바이스를 포함한다. 예를 들어, 사용자 디바이스(210)는 컴퓨팅 디바이스(예를 들어, 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 핸드헬드 컴퓨터, 스마트 스피커, 서버 등), 모바일 폰(예를 들어, 스마트 폰, 무선 전화(radiotelephone) 등), 웨어러블 디바이스(예를 들어, 한 쌍의 스마트 안경 또는 스마트 시계), 또는 유사한 디바이스를 포함할 수 있다. 일부 구현들에서, 사용자 디바이스(210)는 플랫폼(220)으로부터 정보를 수신하고/하거나 플랫폼(220)에 정보를 송신할 수 있다.
플랫폼(220)은 본 명세서의 다른 곳에서 설명된 바와 같은 하나 이상의 디바이스를 포함한다. 일부 구현들에서, 플랫폼(220)은 클라우드 서버 또는 클라우드 서버들의 그룹을 포함할 수 있다. 일부 구현들에서, 플랫폼(220)은 모듈형이도록 설계될 수 있어, 소프트웨어 컴포넌트들이 스왑(swapped) 인(in) 또는 아웃(out)될 수 있다. 이와 같이, 플랫폼(220)은 상이한 이용들을 위해 용이하게 및/또는 신속하게 재구성될 수 있다.
일부 구현들에서, 도시된 바와 같이, 플랫폼(220)은 클라우드 컴퓨팅 환경(222)에서 호스팅될 수 있다. 특히, 본 명세서에 설명된 구현들은 플랫폼(220)을 클라우드 컴퓨팅 환경(222)에서 호스팅되는 것으로서 설명하지만, 일부 구현들에서, 플랫폼(220)은 클라우드-기반이 아닐 수 있거나(즉, 클라우드 컴퓨팅 환경의 외부에서 구현될 수 있거나) 또는 부분적으로 클라우드-기반일 수 있다.
클라우드 컴퓨팅 환경(222)은 플랫폼(220)을 호스팅하는 환경을 포함한다. 클라우드 컴퓨팅 환경(222)은 플랫폼(220)을 호스팅하는 시스템(들) 및/또는 디바이스(들)의 물리적 위치 및 구성에 대한 최종-사용자(예를 들어, 사용자 디바이스(210)) 지식을 요구하지 않는 계산, 소프트웨어, 데이터 액세스, 저장 등의 서비스들을 제공할 수 있다. 도시된 바와 같이, 클라우드 컴퓨팅 환경(222)은 컴퓨팅 자원들(224)의 그룹("컴퓨팅 자원들(224)"이라고 집합적으로 지칭되고, "컴퓨팅 자원(224)"이라고 개별적으로 지칭됨)을 포함할 수 있다.
컴퓨팅 자원(224)은 하나 이상의 개인용 컴퓨터, 워크스테이션 컴퓨터, 서버 디바이스, 또는 다른 타입의 계산 및/또는 통신 디바이스를 포함한다. 일부 구현들에서, 컴퓨팅 자원(224)은 플랫폼(220)을 호스팅할 수 있다. 클라우드 자원들은 컴퓨팅 자원(224)에서 실행되는 컴퓨팅 인스턴스들(compute instances), 컴퓨팅 자원(224)에서 제공되는 저장 디바이스들, 컴퓨팅 자원(224)에 의해 제공되는 데이터 전송 디바이스들 등을 포함할 수 있다. 일부 구현들에서, 컴퓨팅 자원(224)은 유선 접속들, 무선 접속들, 또는 유선 및 무선 접속들의 조합을 통해 다른 컴퓨팅 자원들(224)과 통신할 수 있다.
도 2에 더 도시된 바와 같이, 컴퓨팅 자원(224)은 하나 이상의 애플리케이션("APP")(224-1), 하나 이상의 가상 머신("VM")(224-2), 가상화된 스토리지("VS")(224-3), 하나 이상의 하이퍼바이저(hypervisor)("HYP")(224-4) 등과 같은 클라우드 자원들의 그룹을 포함한다.
애플리케이션(224-1)은 사용자 디바이스(210) 및/또는 플랫폼(220)에 제공되거나 또는 이들에 의해 액세스될 수 있는 하나 이상의 소프트웨어 애플리케이션을 포함한다. 애플리케이션(224-1)은 사용자 디바이스(210) 상에 소프트웨어 애플리케이션들을 설치 및 실행할 필요성을 제거할 수 있다. 예를 들어, 애플리케이션(224-1)은 플랫폼(220)과 연관된 소프트웨어 및/또는 클라우드 컴퓨팅 환경(222)을 통해 제공될 수 있는 임의의 다른 소프트웨어를 포함할 수 있다. 일부 구현들에서, 하나의 애플리케이션(224-1)은, 가상 머신(224-2)을 통해, 하나 이상의 다른 애플리케이션(224-1)으로/으로부터 정보를 전송/수신할 수 있다.
가상 머신(224-2)은 물리적 머신과 같이 프로그램들을 실행하는 머신(예를 들어, 컴퓨터)의 소프트웨어 구현을 포함한다. 가상 머신(224-2)은, 가상 머신(224-2)에 의한 임의의 실제 머신에 대한 대응관계의 이용 및 정도에 의존하여, 시스템 가상 머신 또는 프로세스 가상 머신일 수 있다. 시스템 가상 머신은 완전한 운영 체제(operating system)("OS")의 실행을 지원하는 완전한 시스템 플랫폼을 제공할 수 있다. 프로세스 가상 머신은 단일 프로그램을 실행할 수 있고, 단일 프로세스를 지원할 수 있다. 일부 구현들에서, 가상 머신(224-2)은 사용자(예를 들어, 사용자 디바이스(210))를 대신하여 실행할 수 있고, 데이터 관리, 동기화, 또는 장기간 데이터 전송들과 같은, 클라우드 컴퓨팅 환경(222)의 인프라스트럭처를 관리할 수 있다.
가상화된 스토리지(224-3)는 컴퓨팅 자원(224)의 스토리지 시스템들 또는 디바이스들 내에서 가상화 기술들을 이용하는 하나 이상의 스토리지 시스템 및/또는 하나 이상의 디바이스를 포함한다. 일부 구현들에서, 스토리지 시스템의 맥락 내에서, 가상화들의 타입들은 블록 가상화(block virtualization) 및 파일 가상화(file virtualization)를 포함할 수 있다. 블록 가상화는 물리적 스토리지 또는 이종 구조(heterogeneous structure)에 상관없이 스토리지 시스템이 액세스될 수 있도록, 물리적 스토리지로부터의 논리적 스토리지의 추상화(abstraction)(또는 분리)를 지칭할 수 있다. 분리는 관리자들이 최종 사용자들을 위한 스토리지를 관리하는 방법에 있어서의 유연성을 스토리지 시스템의 관리자들에게 허용할 수 있다. 파일 가상화는 파일 레벨에서 액세스되는 데이터와 파일들이 물리적으로 저장되는 위치 사이의 의존성들을 제거할 수 있다. 이것은 스토리지 이용, 서버 통합, 및/또는 무중단 파일 마이그레이션들(non-disruptive file migrations)의 성능의 최적화를 가능하게 할 수 있다.
하이퍼바이저(224-4)는 다수의 운영 체제들(예를 들어, "게스트 운영 체제들(guest operating systems)")이, 컴퓨팅 자원(224)과 같은 호스트 컴퓨터 상에서 동시에 실행되는 것을 허용하는 하드웨어 가상화 기술들을 제공할 수 있다. 하이퍼바이저(224-4)는 게스트 운영 체제들에 가상 운영 플랫폼을 제시할 수 있고, 게스트 운영 체제들의 실행을 관리할 수 있다. 다양한 운영 체제들의 다수의 인스턴스들이 가상화된 하드웨어 자원들을 공유할 수 있다.
네트워크(230)는 하나 이상의 유선 및/또는 무선 네트워크를 포함한다. 예를 들어, 네트워크(230)는 셀룰러 네트워크(예를 들어, 5G(fifth generation) 네트워크, LTE(long-term evolution) 네트워크, 3G(third generation) 네트워크, CDMA(code division multiple access) 네트워크 등), PLMN(public land mobile network), LAN(local area network), WAN(wide area network), MAN(metropolitan area network), 전화 네트워크(예를 들어, PSTN(Public Switched Telephone Network)), 사설 네트워크(private network), 애드혹 네트워크(ad hoc network), 인트라넷, 인터넷, 광섬유-기반 네트워크 등, 및/또는 이러한 또는 다른 타입들의 네트워크들의 조합을 포함할 수 있다.
도 2에 도시된 디바이스들 및 네트워크들의 수 및 배열은 예로서 제공된다. 실제로, 도 2에 도시된 것들에 비해 추가적인 디바이스들 및/또는 네트워크들, 더 적은 디바이스들 및/또는 네트워크들, 상이한 디바이스들 및/또는 네트워크들, 또는 상이하게 배열된 디바이스들 및/또는 네트워크들이 존재할 수 있다. 또한, 도 2에 도시된 2개 이상의 디바이스들이 단일 디바이스 내에 구현될 수 있거나, 또는 도 2에 도시된 단일 디바이스가 다수의, 분배형 디바이스들로서 구현될 수 있다. 추가적으로 또는 대안적으로, 환경(200)의 디바이스들의 세트(예를 들어, 하나 이상의 디바이스)는 환경(200)의 디바이스들의 다른 세트에 의해 수행되는 것으로서 설명되는 하나 이상의 기능을 수행할 수 있다.
도 3은 도 2의 하나 이상의 디바이스의 예시적인 컴포넌트들의 블록도이다. 디바이스(300)는 사용자 디바이스(210) 및/또는 플랫폼(220)에 대응할 수 있다. 도 3에 도시된 바와 같이, 디바이스(300)는 버스(310), 프로세서(320), 메모리(330), 스토리지 컴포넌트(340), 입력 컴포넌트(350), 출력 컴포넌트(360), 및 통신 인터페이스(370)를 포함할 수 있다.
버스(310)는 디바이스(300)의 컴포넌트들 사이의 통신을 허용하는 컴포넌트를 포함한다. 프로세서(320)는 하드웨어, 펌웨어, 또는 하드웨어 및 소프트웨어의 조합으로 구현된다. 프로세서(320)는 CPU(central processing unit), GPU(graphics processing unit), APU(accelerated processing unit), 마이크로프로세서, 마이크로제어기, DSP(digital signal processor), FPGA(field-programmable gate array), ASIC(application-specific integrated circuit), 또는 다른 타입의 처리 컴포넌트이다. 일부 구현들에서, 프로세서(320)는 기능을 수행하도록 프로그래밍될 수 있는 하나 이상의 프로세서를 포함한다. 메모리(330)는 RAM(random access memory), ROM(read only memory), 및/또는 프로세서(320)에 의한 이용을 위한 정보 및/또는 명령어들을 저장하는 다른 타입의 동적 또는 정적 스토리지 디바이스(예를 들어, 플래시 메모리, 자기 메모리, 및/또는 광학 메모리)를 포함한다.
스토리지 컴포넌트(340)는 디바이스(300)의 동작 및 이용에 관련된 정보 및/또는 소프트웨어를 저장한다. 예를 들어, 스토리지 컴포넌트(340)는, 대응하는 드라이브와 함께, 하드 디스크(예를 들어, 자기 디스크, 광학 디스크, 광자기 디스크(magneto-optic disk), 및/또는 솔리드 스테이트 디스크(solid state disk)), CD(compact disc), DVD(digital versatile disc), 플로피 디스크, 카트리지, 자기 테이프, 및/또는 다른 타입의 비일시적 컴퓨터 판독가능 매체를 포함할 수 있다.
입력 컴포넌트(350)는 디바이스(300)가, 사용자 입력(예를 들어, 터치 스크린 디스플레이, 키보드, 키패드, 마우스, 버튼, 스위치, 및/또는 마이크로폰)을 통한 것과 같이, 정보를 수신하는 것을 허용하는 컴포넌트를 포함한다. 추가적으로 또는 대안적으로, 입력 컴포넌트(350)는 정보를 감지하는 센서(예를 들어, GPS(global positioning system) 컴포넌트, 가속도계, 자이로스코프, 및/또는 액추에이터)를 포함할 수 있다. 출력 컴포넌트(360)는 디바이스(300)로부터의 출력 정보를 제공하는 컴포넌트(예를 들어, 디스플레이, 스피커, 및/또는 하나 이상의 LED(light-emitting diode))를 포함한다.
통신 인터페이스(370)는 디바이스(300)가, 유선 접속, 무선 접속, 또는 유선 및 무선 접속들의 조합을 통한 것과 같이, 다른 디바이스들과 통신하는 것을 가능하게 하는 트랜시버형 컴포넌트(transceiver-like component)(예를 들어, 트랜시버 및/또는 개별 수신기 및 송신기)를 포함한다. 통신 인터페이스(370)는 디바이스(300)가 다른 디바이스로부터 정보를 수신하는 것 및/또는 다른 디바이스에 정보를 제공하는 것을 허용할 수 있다. 예를 들어, 통신 인터페이스(370)는 이더넷 인터페이스, 광학 인터페이스, 동축 인터페이스, 적외선 인터페이스, RF(radio frequency) 인터페이스, USB(universal serial bus) 인터페이스, Wi-Fi 인터페이스, 셀룰러 네트워크 인터페이스 등을 포함할 수 있다.
디바이스(300)는 본 명세서에 설명된 하나 이상의 프로세스를 수행할 수 있다. 디바이스(300)는 프로세서(320)가, 메모리(330) 및/또는 스토리지 컴포넌트(340)와 같은, 비일시적 컴퓨터 판독가능 매체에 의해 저장된 소프트웨어 명령어들을 실행하는 것에 응답하여 이러한 프로세스들을 수행할 수 있다. 컴퓨터 판독가능 매체는 본 명세서에서 비일시적 메모리 디바이스로서 정의된다. 메모리 디바이스는 단일 물리적 저장 디바이스 내의 메모리 공간 또는 다수의 물리적 저장 디바이스들에 걸쳐 확산되는 메모리 공간을 포함한다.
소프트웨어 명령어들은 통신 인터페이스(370)를 통해 다른 컴퓨터 판독가능 매체로부터 또는 다른 디바이스로부터 메모리(330) 및/또는 스토리지 컴포넌트(340) 내로 판독될 수 있다. 실행될 때, 메모리(330) 및/또는 스토리지 컴포넌트(340)에 저장되는 소프트웨어 명령어들은 프로세서(320)로 하여금 본 명세서에 설명된 하나 이상의 프로세스를 수행하게 할 수 있다. 추가적으로 또는 대안적으로, 본 명세서에 설명된 하나 이상의 프로세스를 수행하기 위해 소프트웨어 명령어들 대신에 또는 이들과 조합하여 하드와이어드 회로가 이용될 수 있다. 따라서, 본 명세서에 설명된 구현들은 하드웨어 회로와 소프트웨어의 임의의 특정 조합으로 한정되지 않는다.
도 3에 도시된 컴포넌트들의 수 및 배열은 예시로서 제공된다. 실제로, 디바이스(300)는 도 3에 도시된 것들에 비해 추가적인 컴포넌트들, 더 적은 컴포넌트들, 상이한 컴포넌트들, 또는 상이하게 배열된 컴포넌트들을 포함할 수 있다. 추가적으로 또는 대안적으로, 디바이스(300)의 컴포넌트들의 세트(예를 들어, 하나 이상의 컴포넌트)는 디바이스(300)의 컴포넌트들의 다른 세트에 의해 수행되는 것으로서 설명되는 하나 이상의 기능을 수행할 수 있다.
도 4는 실시예들에 따른, 신경망 모델 압축을 위한 시스템(400)의 기능 블록도이다.
도 4에 도시된 바와 같이, 시스템(400)은 파라미터 감소 모듈(405), 파라미터 근사화 모듈(410), 재구성 모듈(415), 인코더(420) 및 디코더(425)를 포함한다.
파라미터 감소 모듈(405)은 입력 신경망의 파라미터들의 세트를 감소시켜, 출력 신경망을 획득한다. 신경망은 심층 학습 프레임워크에 의해 명시된 바와 같은 파라미터들 및 아키텍처를 포함할 수 있다.
예를 들어, 파라미터 감소 모듈(405)은 신경망의 접속들을 희소화(sparsify)(가중치들을 0으로 설정) 및/또는 제거(prune)할 수 있다. 다른 예에서, 파라미터 감소 모듈(405)은 신경망의 파라미터 텐서들에 대한 행렬 분해를 더 작은 파라미터 텐서들의 세트로 수행할 수 있다. 파라미터 감소 모듈(405)은 이들 방법들을 캐스케이드로 수행할 수 있고, 예를 들어, 먼저 가중치들을 희소화한 다음 결과적인 행렬을 분해할 수 있다.
파라미터 근사화 모듈(410)은 파라미터 감소 모듈(405)로부터 획득되는 출력 신경망으로부터 추출되는 파라미터 텐서들에 파라미터 근사화 기법들을 적용한다. 예를 들어, 기술들은 양자화, 변환 및 예측 중 임의의 하나 또는 임의의 조합을 포함할 수 있다. 파라미터 근사화 모듈(410)은 파라미터 근사화 모듈(410)에 의해 수정되지 않은 제1 파라미터 텐서들, 파라미터 근사화 모듈(410)에 의해 수정되거나 근사화되는 제2 파라미터 텐서들, 및 파라미터 근사화 모듈(410)에 의해 수정되지 않은 원래의 파라미터 텐서들을 재구성하는데 이용될 개개의 메타데이터를 수정된 제2 파라미터 텐서들로부터 출력한다.
재구성 모듈(415)은 파라미터 근사화 모듈(410) 및/또는 디코더(425)로부터 획득되는 개개의 메타데이터를 이용하여, 파라미터 근사화 모듈(410) 및/또는 디코더(425)로부터 획득되는 수정된 제2 파라미터 텐서들로부터 원래의 파라미터 텐서들을 재구성한다. 재구성 모듈(415)은 재구성된 원래 파라미터 텐서들 및 제1 파라미터 텐서들을 이용하여 출력 신경망을 재구성할 수 있다.
인코더(420)는 파라미터 근사화 모듈(410)로부터 획득되는 제1 파라미터 텐서들, 제2 파라미터 텐서들 및 개개의 메타데이터에 대해 엔트로피 인코딩을 수행할 수 있다. 이 정보는 디코더(425)에 대한 비트스트림으로 인코딩될 수 있다.
디코더(425)는 인코더(420)로부터 획득되는 비트스트림을 디코딩하여, 제1 파라미터 텐서들, 제2 파라미터 텐서들 및 개개의 메타데이터를 획득할 수 있다.
시스템(400)은 플랫폼(220)에서 구현될 수 있고, 도 4의 하나 이상의 모듈은 사용자 디바이스(210)와 같은, 플랫폼(220)으로부터 분리되거나 이를 포함하는 디바이스 또는 디바이스들의 그룹에 의해 수행될 수 있다.
신경망 모델 압축을 위한 양자화를 위한 방법들 및 장치들이 이제 상세히 설명될 것이다.
계층에서의 신경망 가중치 분포는, 큰 값을 갖는 가중치 계수들의 백분율이 매우 작지만 가중치 계수들의 최대 값이 매우 큰 가우시안 분포(Gaussian distribution)를 따를 수 있다. 최적화된 양자화 알고리즘은 주어진 비트 심도에 대한 최적의 포화된 최대 값을 찾기 위해 쿨백-라이블러(Kullback-Leibler)(KL) 발산과 같은 알고리즘을 이용한다. 도 1a에 도시된 바와 같이, 모든 가중치 계수들은 포화된 최대 값의 범위 내에 있도록 클리핑되고, 그 후, 수정된 가중치 계수들은 정수
Figure pct00004
로 균일하게 양자화(맵핑)된다.
포화된 최대 값은 그의 원래의 32-비트 부동소수점 수에 의해 표현될 수 있거나, N 비트 분수 정확도(fractional accuracy)를 유지하면서 정수로 변환될 수 있다. 예를 들어, 포화된 최대 값 layer_sat_maxw의 정수 int_layer_sat_maxw는 다음의 수학식에 의해 계산될 수 있다:
Figure pct00005
ceil() 함수는 입력 수 이상인 최소 정수 값을 반환한다.
재구성된 포화된 최대 값 rec_layer_sat_maxw는 다음의 수학식에 의해 계산될 수 있다:
Figure pct00006
실시예에서, 양자화된 가중치 계수들의 비트 심도가 계층 헤더에 포함된다. 비트 심도는 가변 길이 코딩 방법 또는 고정 길이 코딩 방법을 이용하여 코딩될 수 있다.
대응하는 신택스 표의 예가 아래의 표 1에 열거된다:
Figure pct00007
layer_stepsize는 양자화 스텝 크기를 나타낸다.
layer_bitdepth는 계층에서의 다차원 텐서의 비트 심도를 나타낸다.
다른 실시예에서, 양자화된 가중치 계수들의 비트 심도는 계층 헤더에 포함되고, 양자화 스텝 크기는 포화된 최대 값에 의해 대체된다. 포화된 최대 값은 전술한 부동소수점 수 또는 정수로 표현될 수 있다. 포화된 최대 값이 정수로 표현되는 경우, 포화된 최대 값은 가변 길이 코딩 방법 또는 고정 길이 코딩 방법을 이용하여 코딩될 수 있다.
대응하는 신택스 표의 예가 아래의 표 2에 열거된다:
Figure pct00008
layer_sat_maxw는 계층에서의 다차원 텐서의 포화된 최대 값을 정수 포맷 또는 부동 포맷으로 나타낸다.
layer_bitdepth는 계층에서의 다차원 텐서의 비트 심도를 나타낸다.
도 5는 실시예들에 따른, 신경망 모델 압축을 위한 양자화 방법(500)의 흐름도이다. 일부 구현들에서, 도 5의 하나 이상의 동작은 플랫폼(220)에 의해 수행될 수 있다. 일부 구현들에서, 도 5의 하나 이상의 동작은 사용자 디바이스(210) 및/또는 인코더(420)와 같은, 플랫폼(220)으로부터 분리되거나 이를 포함하는 다른 디바이스 또는 디바이스들의 그룹에 의해 수행될 수 있다.
도 5에 도시된 바와 같이, 동작(510)에서, 방법(500)은 신경망의 계층에서의 다차원 텐서의 포화된 최대 값, 및 포화된 최대 값에 대응하는 비트 심도를 결정하는 단계를 포함한다.
동작(520)에서, 방법(500)은 다차원 텐서에서의 가중치 계수들을 포화된 최대 값의 범위 내에 있도록 클리핑하는 단계를 포함한다.
동작(530)에서, 방법(500)은 비트 심도에 기초하여 클리핑된 가중치 계수들을 양자화하는 단계를 포함한다.
동작(540)에서, 방법(500)은 비트 심도를 포함하는 계층 헤더를 디코더에 송신하는 단계를 포함한다.
방법(500)은 가변 길이 코딩 또는 고정 길이 코딩을 이용하여 비트 심도를 코딩하는 단계를 더 포함할 수 있다. 계층 헤더는 코딩된 비트 심도를 포함할 수 있다.
계층 헤더는 포화된 최대 값을 더 포함할 수 있다.
포화된 최대 값은 부동소수점 수로 표현될 수 있다.
방법(500)은 상기의 수학식 (1)에 기초하여, 포화된 최대 값을 표현하는 정수를 결정하는 단계를 더 포함할 수 있다.
방법(500)은 가변 길이 코딩 또는 고정 길이 코딩을 이용하여, 포화된 최대 값의 정수를 코딩하는 단계를 더 포함할 수 있다.
계층 헤더는 클리핑된 가중치 계수들을 양자화하는 스텝 크기를 더 포함할 수 있다.
도 5는 방법(500)의 예시적인 블록들을 도시하지만, 일부 구현들에서, 방법(500)은 도 5에 묘사된 것들에 비해 추가적인 블록들, 더 적은 블록들, 상이한 블록들, 또는 상이하게 배열된 블록들을 포함할 수 있다. 추가적으로 또는 대안적으로, 방법(500)의 블록들 중 2개 이상은 병렬로 수행될 수 있다.
도 6은 실시예들에 따른, 신경망 모델 압축을 위한 양자화를 위한 장치(600)의 도면이다. 일부 구현들에서, 도 6의 하나 이상의 코드는 플랫폼(220)에 의해 수행될 수 있다. 일부 구현들에서, 도 6의 하나 이상의 코드는 사용자 디바이스(210) 및/또는 인코더(420)와 같은, 플랫폼(220)으로부터 분리되거나 이를 포함하는 다른 디바이스 또는 디바이스들의 그룹에 의해 수행될 수 있다.
도 6에 도시된 바와 같이, 장치(600)는 제1 결정 코드(610), 클리핑 코드(620), 양자화 코드(630) 및 송신 코드(640)를 포함한다.
제1 결정 코드(610)는 장치(600)의 적어도 하나의 프로세서로 하여금 신경망의 계층에서의 다차원 텐서의 포화된 최대 값, 및 포화된 최대 값에 대응하는 비트 심도를 결정하게 하도록 구성된다.
클리핑 코드(620)는 적어도 하나의 프로세서로 하여금 다차원 텐서에서의 가중치 계수들을 포화된 최대 값의 범위 내에 있도록 클리핑하게 하도록 구성된다.
양자화 코드(630)는 적어도 하나의 프로세서로 하여금 비트 심도에 기초하여 클리핑된 가중치 계수들을 양자화하게 하도록 구성된다.
송신 코드(640)는 적어도 하나의 프로세서로 하여금 비트 심도를 포함하는 계층 헤더를 디코더에 송신하게 하도록 구성된다.
장치(600)는 적어도 하나의 프로세서로 하여금 가변 길이 코딩 또는 고정 길이 코딩을 이용하여, 비트 심도를 코딩하게 하도록 구성된 코딩 코드(650)를 더 포함할 수 있다. 계층 헤더는 코딩된 비트 심도를 포함한다.
계층 헤더는 포화된 최대 값을 더 포함할 수 있다.
포화된 최대 값은 부동소수점 수로 표현될 수 있다.
장치(600)는 적어도 하나의 프로세서로 하여금 상기의 수학식 (1)에 기초하여 포화된 최대 값을 표현하는 정수를 결정하게 하도록 구성된 제2 결정 코드(660)를 더 포함할 수 있다.
코딩 코드(650)는 적어도 하나의 프로세서로 하여금 가변 길이 코딩 또는 고정 길이 코딩을 이용하여, 포화된 최대 값의 정수를 코딩하게 하도록 더 구성될 수 있다.
계층 헤더는 클리핑된 가중치 계수들을 양자화하는 스텝 크기를 더 포함할 수 있다.
신경망 모델 압축을 위한 적응적 블록 파티셔닝을 위한 방법들 및 장치들이 이제 상세히 설명될 것이다.
lhs 텐서가 열-우선 순서로 저장되는 경우, 또는 행-우선 텐서의 전치 후에, 가중치 텐서의 차원은 [R][S][C][K]의 레이아웃을 갖는 컨볼루션 계층에 대해 통상적으로 4이고, [C][K]의 레이아웃을 갖는 완전 접속 계층에 대해 2이고, 바이어스 및 배치 정규 계층에 대해 1이다. R/S는 컨볼루션 커널 크기이고, C는 입력 피처 크기이고, K는 출력 피처 크기이다.
실시예들에서, 컨볼루션 계층에 대해, 2D [R][S] 차원은 1D [RS] 차원으로 재성형되어, 4차원(4D) 텐서 [R][S][C][K]가 3D 텐서 [RS][C][K]로 재성형된다. 완전 접속 계층은 R=S=1인 3D 텐서의 특별한 경우로서 취급된다.
커널 크기 RS가 보통 C/K보다 훨씬 더 작기 때문에, 3D 텐서 [RS][C][K]는 중첩하지 않는 더 작은 블록들(CTU3D)로 [C][K] 평면을 따라 파티셔닝된다. 각각의 CTU3D는 [RS][ctu3d_height][ctu3d_width]의 형상을 가지며, 여기서 ctu3d_height=max_ctu3d_height이고, ctu3d_width=max_ctu3d_width이며, max_ctu3d_height/max_ctu3d_width는 모델 헤더에 인코딩된다. 텐서의 우측 및/또는 최하부(bottom)에 위치되는 CTU3D에 대해, 그 ctu3d_height는 C/max_ctu3d_height의 나머지이고, 그 ctu3d_width는 K/max_ctu3d_width의 나머지이다.
추가의 실시예들에서, max_ctu3d_height= max_ctu3d_width이도록 정사각형 형상의 파티션이 이용되고, max_ctu3d_height 및 max_ctu3d_width 둘다를 표현하기 위해 변수 max_ctu3d_size가 이용된다. max_ctu3d_size는 2**N으로서 정의되고, N의 값은 8, 16, 32, 64이다.
추론 동작에서 온-칩 메모리 요건을 용이하게 하기 위해, 실시예들에서, 상이한 커널 크기들을 갖는 계층들에 대한 총 CTU3D 크기에 대한 제한이 있는지를 나타내도록 플래그가 정의된다. 0과 동일한 플래그는 ctu3d_height/ctu3d_width가 커널 크기에 관계없이 변경되지 않은 채로 유지된다는 점을 나타내고, 이러한 경우에, 컨볼루션 계층에 대한 CTU3D의 크기는 완전 접속 계층에 대한 CTU3D의 크기보다 RS 배 더 크다. 1과 동일한 플래그는 ctu3d_height/ctu3d_width가 커널 크기에 기초하여 스케일링된다는 것을 나타낸다. 예를 들어, ctu3d_height=ctu3d_width=int(ctu3d_height*ctu3d_width/R/S)이다.
3D 텐서에서 CTU3D들을 스캔 및 처리하는데 임의의 스캔 순서가 이용될 수 있지만, 실시예들에서, 이들은 수평 방향(SCAN_CK) 또는 수직 방향(SCAN_KC)에서 래스터 스캔 순서를 이용하여 스캔되고 처리된다.
대응하는 신택스 표들의 예가 아래의 표 3 내지 표 5에 열거된다:
Figure pct00009
Figure pct00010
enable_max_ctu3d_size가 0인 것은 커널 크기에 관계없이 ctu3d_height/ctu3d_width가 변경되지 않은 채로 유지된다는 것을 나타내고, enable_max_ctu3d_size가 1인 것은 ctu3d_height/ctu3d_width가 커널 크기에 기초하여 스케일링된다는 것을 나타낸다.
max_ctu3d_idx는 다음의 수학식에 있다:
Figure pct00011
Figure pct00012
layer_scan_order가 0인 것은 수평 방향에서의 래스터 스캔 순서를 나타내고, layer_scan_order가 1인 것은 수직 방향에서의 래스터 스캔 순서를 나타낸다.
실시예들에서, 비디오 코딩 표준들에서 이용되는 CTU/CU 적응적 파티셔닝 방법이 이용된다.
단순화된 블로킹 구조가 이용되는데, 여기서 CTU3D/CU3D는 최대 재귀적 심도에 도달할 때까지 쿼드-트리 구조(quad-tree structure)를 이용하여 재귀적으로 더 작은 CU3D들로 파티셔닝된다. CTU3D 노드로부터 시작하여, CU3D의 이러한 쿼드-트리는 심도-우선 쿼드-트리 스캔 순서를 이용하여 스캔되고 처리된다. 동일한 부모 노드 아래의 자식 노드들은 수평 방향 또는 수직 방향에서 래스터 스캔 순서를 이용하여 스캔되고 처리된다.
주어진 쿼드-트리 심도에서의 CU3D에 대해, 이러한 CU3D들의 max_cu3d_height/max_cu3d_width는 아래의 수학식들 (4) 및 (5)를 이용하여 계산되고, max_cu3d_height 및 max_cu3d_width 둘다가 미리 정의된 임계값 이하일 때 최대 재귀적 심도가 도달된다. 이 임계값은 명시적으로 비트스트림에 포함될 수 있거나, 또는 (8과 같은) 미리 정의된 수일 수 있어서, 디코더에 의해 암시적으로 추론될 수 있다.
Figure pct00013
추가 실시예들에서, 정사각형 형상의 파티션이 이용되어 max_ctu3d_height=max_ctu3d_width가 된다. 주어진 쿼드-트리 심도에서의 CU3D에 대해, 이러한 CU3D들의 max_cu3d_size는 아래의 수학식 (4)를 이용하여 계산되고, max_cu3d_size가 미리 정의된 임계값 이하일 때 최대 재귀적 심도에 도달된다. 이 임계값은 명시적으로 비트스트림에 포함될 수 있거나, 또는 (8과 같은) 미리 정의된 수일 수 있어서, 디코더에 의해 암시적으로 추론될 수 있다.
Figure pct00014
도 7에 도시된 바와 같이, CTU3D(705)에 대해, 텐서의 우측 및/또는 최하부에서, 주어진 심도에서의 부모 CU3D 노드(710)는 4개의 자식 노드들 모두를 갖지 않을 수 있다. 텐서의 우측 및/또는 최하부에 위치되는 CU3D(710)에 대해, cu3d_height는 max_ctu3d_height/max_cu3d_height의 나머지이고, cu3d_width는 max_ctu3d_width/max_cu3d_width의 나머지이다.
추가의 실시예들에서, RD(Rate-Distortion) 기반 인코딩 알고리즘은 부모 CU3D가 다수의 더 작은 자식 CU3D들로 분할되는지를 결정하는데 이용된다. 부모 CU3D는, 이러한 더 작은 자식 CU3D들의 조합된 RD가 부모 CU3D로부터의 RD보다 작은 경우, 다수의 더 작은 자식 CU3D들로 분할된다. 그렇지 않으면, 부모 CU3D는 분할되지 않는다. 이러한 분할 결정을 기록하도록 분할 플래그가 정의된다.
대응하는 신택스 표의 예가 아래의 표 6 및 표 7에 열거된다:
Figure pct00015
Figure pct00016
split_flag는 부모 CU3D가 4개의 더 작은 자식 CU3D들로 분할되는지를 나타내는 플래그이다.
도 8은 실시예들에 따른, 신경망 모델 압축을 위한 적응적 블록 파티셔닝 방법(800)의 흐름도이다. 일부 구현들에서, 도 8의 하나 이상의 프로세스 블록은 플랫폼(220)에 의해 수행될 수 있다. 일부 구현들에서, 도 8의 하나 이상의 프로세스 블록은, 사용자 디바이스(210)와 같은, 플랫폼(220)으로부터 분리되거나 이를 포함하는 다른 디바이스 또는 디바이스들의 그룹에 의해 수행될 수 있다.
도 8에 도시된 바와 같이, 동작(810)에서, 방법(800)은 신경망의 4차원(4D) 파라미터 텐서를 신경망의 3차원(3D) 파라미터 텐서로 재성형하는 단계를 포함하고, 3D 파라미터 텐서는 컨볼루션 커널 크기, 입력 피처 크기 및 출력 피처 크기를 포함한다.
동작(820)에서, 방법(800)은 입력 피처 크기 및 출력 피처 크기에 의해 형성되는 평면을 따라 3D 파라미터 텐서를 3D 코딩 트리 유닛(CTU3D)들로 파티셔닝하는 단계를 포함한다.
동작(830)에서, 방법(800)은 CTU3D들을 엔트로피 인코딩하는 단계를 포함한다.
CTU3D들은 비중첩 정사각형 블록들일 수 있다.
방법(800)은 CTU3D들 각각이 일정한 크기를 갖는다는 것을 나타내도록 플래그를 설정하는 단계를 더 포함할 수 있다. 3D 파라미터 텐서를 파티셔닝하는 단계는, CTU3D들 각각이 일정한 크기를 갖는다는 것을 나타내도록 플래그가 설정되는 것에 기초하여, 평면을 따라 3D 파라미터 텐서를, 일정한 크기를 갖는 CTU3D들로 파티셔닝하는 단계를 포함할 수 있다.
방법(800)은 CTU3D들 각각이 컨볼루션 커널 크기에 기초하여 스케일링된 크기를 갖는다는 것을 나타내도록 플래그를 설정하는 단계를 더 포함할 수 있다. 3D 파라미터 텐서를 파티셔닝하는 단계는, CTU3D들 각각이 컨볼루션 커널 크기에 기초하여 스케일링된 크기를 갖는다는 것을 나타내도록 플래그가 설정되는 것에 기초하여, 평면을 따라 3D 파라미터 텐서를, 컨볼루션 커널 크기에 기초하여 스케일링된 크기를 갖는 CTU3D들로 파티셔닝하는 단계를 포함할 수 있다.
CTU3D들을 엔트로피 인코딩하는 단계는 CTU3D들을 수평 방향 또는 수직 방향에서 래스터 스캔 순서로 엔트로피 인코딩하는 단계를 포함할 수 있다.
방법(800)은 쿼드-트리를 이용하여, CTU3D들 각각을 최대 심도까지 재귀적으로 복수의 3D 코딩 유닛(CU3D)들로 파티셔닝하는 단계를 더 포함할 수 있다.
CTU3D들을 엔트로피 인코딩하는 단계는 쿼드-트리의 제1 심도를 스캔하는 단계, 및 쿼드-트리의 스캔된 제1 심도에 포함된 복수의 CU3D들 중 하나 이상을 수평 방향 또는 수직 방향에서 래스터 스캔 순서로 엔트로피 인코딩하는 단계를 포함할 수 있다.
복수의 CU3D들은 비중첩 정사각형 블록들일 수 있다.
CTU3D들 각각을 복수의 CU3D들로 파티셔닝하는 단계는 자식 CU3D들의 조합된 레이트 왜곡이 복수의 CU3D들 중 부모 CU3D의 레이트 왜곡보다 작은지를 결정하는 단계, 및 자식 CU3D들의 조합된 레이트 왜곡이 부모 CU3D의 레이트 왜곡보다 작은 것으로 결정되는 것에 기초하여, 부모 CU3D를 자식 CU3D들로 파티셔닝하는 단계를 포함할 수 있다.
도 8은 방법(800)의 예시적인 블록들을 도시하지만, 일부 구현들에서, 방법(800)은 도 8에 묘사된 것들에 비해 추가적인 블록들, 더 적은 블록들, 상이한 블록들, 또는 상이하게 배열된 블록들을 포함할 수 있다. 추가적으로 또는 대안적으로, 방법(800)의 블록들 중 2개 이상은 병렬로 수행될 수 있다.
도 9는 실시예들에 따른, 신경망 모델 압축을 위한 적응적 블록 파티셔닝을 위한 장치(900)의 도면이다. 도 9에 도시된 바와 같이, 장치(900)는 재성형 코드(910), 제1 파티셔닝 코드(920) 및 엔트로피 인코딩 코드(930)를 포함한다.
재성형 코드(910)는 장치(900)의 적어도 하나의 프로세서로 하여금 신경망의 4차원(4D) 파라미터 텐서를 신경망의 3차원(3D) 파라미터 텐서로 재성형하게 하도록 구성되고, 3D 파라미터 텐서는 컨볼루션 커널 크기, 입력 피처 크기 및 출력 피처 크기를 포함한다.
제1 파티셔닝 코드(920)는 적어도 하나의 프로세서로 하여금 입력 피처 크기 및 출력 피처 크기에 의해 형성되는 평면을 따라 3D 파라미터 텐서를 3D 코딩 트리 유닛(CTU3D)들로 파티셔닝하게 하도록 구성된다.
엔트로피 인코딩 코드(930)는 적어도 하나의 프로세서로 하여금 CTU3D들을 엔트로피 인코딩하게 하도록 구성된다.
CTU3D들은 비중첩 정사각형 블록들일 수 있다.
장치(900)는 적어도 하나의 프로세서로 하여금 CTU3D들 각각이 일정한 크기를 갖는다는 것을 나타내도록 플래그를 설정하게 하도록 구성된 설정 코드(940)를 더 포함할 수 있다. 제1 파티셔닝 코드(920)는 적어도 하나의 프로세서로 하여금, CTU3D들 각각이 일정한 크기를 갖는다는 것을 나타내도록 플래그가 설정되는 것에 기초하여, 평면을 따라 3D 파라미터 텐서를, 일정한 크기를 갖는 CTU3D들로 파티셔닝하게 하도록 더 구성될 수 있다.
설정 코드(940)는 적어도 하나의 프로세서로 하여금 CTU3D들 각각이 컨볼루션 커널 크기에 기초하여 스케일링된 크기를 갖는다는 것을 나타내도록 플래그를 설정하게 하도록 추가로 구성될 수 있다. 제1 파티셔닝 코드(920)는 적어도 하나의 프로세서로 하여금, CTU3D들 각각이 컨볼루션 커널 크기에 기초하여 스케일링된 크기를 갖는다는 것을 나타내도록 플래그가 설정되는 것에 기초하여, 평면을 따라 3D 파라미터 텐서를, 컨볼루션 커널 크기에 기초하여 스케일링된 크기를 갖는 CTU3D들로 파티셔닝하게 하도록 더 구성될 수 있다.
엔트로피 인코딩 코드(930)는 적어도 하나의 프로세서로 하여금 CTU3D들을 수평 방향 또는 수직 방향에서 래스터 스캔 순서로 엔트로피 인코딩하게 하도록 더 구성될 수 있다.
장치(900)는 적어도 하나의 프로세서로 하여금 쿼드-트리를 이용하여, CTU3D들 각각을 최대 심도까지 재귀적으로 복수의 3D 코딩 유닛(CU3D)들로 파티셔닝하게 하도록 구성된 제2 파티셔닝 코드(950)를 더 포함할 수 있다.
엔트로피 인코딩 코드(930)는 적어도 하나의 프로세서로 하여금 쿼드-트리의 제1 심도를 스캔하게 하고, 쿼드-트리의 스캔된 제1 심도에 포함된 복수의 CU3D들 중 하나 이상을 수평 방향 또는 수직 방향에서 래스터 스캔 순서로 엔트로피 인코딩하게 하도록 더 구성될 수 있다.
복수의 CU3D들은 비중첩 정사각형 블록들일 수 있다.
제2 파티셔닝 코드(950)는 적어도 하나의 프로세서로 하여금 자식 CU3D들의 조합된 레이트 왜곡이 복수의 CU3D들 중 부모 CU3D의 레이트 왜곡보다 작은지를 결정하게 하고, 자식 CU3D들의 조합된 레이트 왜곡이 부모 CU3D의 레이트 왜곡보다 작은 것으로 결정되는 것에 기초하여, 부모 CU3D를 자식 CU3D들로 파티셔닝하게 하도록 더 구성될 수 있다.
신경망 모델 압축을 위한 코드북 코딩을 위한 방법들 및 장치들이 이제 상세히 설명될 것이다.
코드북은 CU3D에 대한 양자화된 가중치 계수들을 리인덱싱하는데 이용된다.
실시예에서, K-평균 방법(K-means method)을 이용하여 K의 크기를 갖는 코드북을 생성한다.
다른 실시예에서, 코드북을 생성하기 위해 히스토그램 기반 방법이 이용된다. max_predictor_size의 크기를 갖는 코드북 예측자는 이전 코드북들로부터 생성되는 코드북 엔트리를 저장하도록 정의된다. 양자화된 계수들의 히스토그램이 생성된다. 선택적으로, 이웃 히스토그램 빈들은 함께 결합될 수 있다. 선택적으로, 작은 빈도수들(frequency counts)을 갖는 히스토그램 빈들이 또한 제거될 수 있다. 양자화된 빈 중심은 RD 기반 방법을 이용하여 예측자에서의 모든 엔트리들과 비교되고, 이 중심은 더 양호한 RD가 예측자에서의 엔트리를 이용하여 획득되는 경우 예측자에서의 엔트리로 대체된다. 이 단계는 모든 히스토그램 빈들이 처리될 때까지 반복된다. 최대 코드북 크기는 max_codebook_size로서 정의된다. 빈들의 수(K)가 최대 코드북 크기 max_codebook_size보다 작으면, K개의 빈 중심들이 코드북으로서 선택되고; 그렇지 않으면, 빈 중심들의 제1 최대 코드북 크기 max_codebook_size가 코드북으로서 선택된다. 코드북에서, 예측자로부터 획득되는 엔트리들은 코드북의 시작에 배치되고, 예측자로부터 획득되지 않는 엔트리들이 이어진다.
코드북 예측자는 이 CU3D가 처리된 후에 업데이트되고, 코드북 모드가 코딩 모드로서 선택된다. 실시예에서, 코드북 예측자는 현재 코드북으로 대체된다. 다른 실시예에서, 코드북과 예측자 사이의 복제된 중심들은 예측자로부터 제거되고, 이후 코드북은 예측자의 앞에 삽입된다. 새로운 예측자의 총 크기가 크기 max_predictor_size보다 큰 경우, 크기 max_predictor_size의 제1 엔트리들만이 유지되고, 나머지 엔트리들은 예측자로부터 제거되며; 그렇지 않으면, 모든 엔트리들이 예측자로서 유지된다.
도 10을 참조하면, 예측된 코드북 엔트리들은 예측자로부터 획득되는 엔트리들이다. 예측된 코드북 엔트리의 크기(predicted_size)는 비트스트림으로 인코딩된다. 실시예에서, 크기 predicted_size는 신택스 요소로서 취급되고 비트스트림으로 직접 인코딩된다. 절대값이 먼저 인코딩되고, 절대값이 0이 아닐 때 부호 값이 후속된다. 다른 실시예에서, 이전 처리된 코드북으로부터의 크기 predicted_size는 오프셋으로서 이용되고, 현재 크기 predicted_size와 이전 크기 predicted_size 사이의 차이는 신택스 요소로서 취급되고 비트스트림으로 인코딩된다. 차이의 절대값이 먼저 인코딩되고, 절대값이 0이 아닐 때 부호 값이 후속된다. 또 다른 실시예에서, 이전에 처리된 코드북으로부터의 크기(codebook_size)는 오프셋으로서 이용되고, 현재 크기 predicted_size와 이전에 처리된 코드북의 이전 크기(codebook_size) 사이의 차이는 신택스 요소로서 취급되고 비트스트림으로 인코딩된다. 차이의 절대값이 먼저 인코딩되고, 절대값이 0이 아닐 때 부호 값이 후속된다.
도 10에 도시된 바와 같이, 실시예에서, max_predictor_size의 크기를 갖는 비트맵 어레이(predicted_bitmap[max_predictor_size])가 정의되며, 여기서 predicted_bitmap[n] = 0은 코드북 예측자의 엔트리 n이 코드북 내에 있음을 나타내고, predicted_bitmap[n] = 1은 코드북 예측자의 엔트리 n이 코드북 내에 있지 않음을 나타낸다. 제1 요소로부터 시작하여, 예측된 비트맵(predicted_bitmap)의 내용은 마지막 0이 인코딩될 때까지 비트스트림에서 하나씩 인코딩된다. 나머지 요소들은 항상 1일 수 있고, 따라서 이들은 비트스트림에서 인코딩되지 않는다.
다른 실시예에서, max_predictor_size 의 크기를 갖는 비트맵 어레이(predicted_bitmap[max_predictor_size])가 정의되고, 여기서 predicted_bitmap[n] = 1은 코드북 예측자의 엔트리 n이 코드북 내에 있음을 나타내고, predicted_bitmap[n] = 0은 코드북 예측자의 엔트리 n이 코드북 내에 있지 않음을 나타낸다. 제1 요소로부터 시작하여, 예측된 비트맵(predicted_bitmap)의 내용은 마지막 1이 인코딩될 때까지 비트스트림에서 하나씩 인코딩된다. 나머지 요소들은 항상 0일 수 있고, 따라서 이들은 비트스트림에서 인코딩되지 않는다.
대응하는 신택스 표의 예가 아래의 표 8에 열거된다:
Figure pct00017
abs_predicted_diff는 predicted_size - prev_predicted_size의 절대값이다.
sign은 predicted_size - prev_predicted_size의 부호 비트이다.
predicted_flag는, 0은 위치 n이 예측된 엔트리가 아님을 나타내고, 1은 위치 n이 예측된 엔트리임을 나타내는 플래그이다.
도 10을 참조하면, 시그널링된 코드북 엔트리들은 예측자로부터 획득되지 않은 엔트리들이다. 시그널링된 코드북 엔트리의 크기(signalled_size)는 코드북 크기(codebook_size)와 예측된 크기(predicted_size) 사이의 차이로서 정의되고, 비트스트림으로 인코딩된다. 차이의 절대값이 먼저 인코딩되고, 절대값이 0이 아닐 때 부호 값이 후속된다.
시그널링된 시그널링된 코드북 엔트리들의 내용(signalled_size)은 양 또는 음 또는 0일 수 있는 양자화된 가중치 계수들이다. 동일한 절대값을 갖는 2개 이하의 엔트리들이 있다. delta[n]이 signalled[n]의 절대값과 이전에 인코딩된 코드북의 절대값 사이의 차이를 유지하는 크기 signalled_size를 갖는 델타 어레이가 정의된다. 실시예에서, 제1 시그널링된 코드북에 대한 이전에 인코딩된 코드북은 0이다. 다른 실시예에서, 제1 시그널링된 코드북에 대한 이전에 인코딩된 코드북은 최종 예측된 코드북 엔트리이다.
델타 어레이를 인코딩하기 위해, delta[n]의 중요 상태(significant state)가 먼저 인코딩되고, delta[n]이 0이 아니면, 그 부호 값이 인코딩되고, 그 절대값이 후속된다. 이전에 인코딩된 코드북 엔트리들 또는 이전에 인코딩된 시그널링된 코드북 엔트리들에서 signalled[n-1]의 절대값이 2회 나타나면 delta[n]의 중요 상태의 인코딩은 스킵된다. 그 후, signalled[]의 부호 비트의 어레이가 비트스트림으로 인코딩된다.
대응하는 신택스 표의 예가 아래의 표 9에 열거된다:
Figure pct00018
signalled_size는 시그널링된 코드북 크기이다.
nzflag_delta는 델타의 0이 아닌 플래그이다.
sign_delta는 델타의 부호 비트이다.
abs_delta는 델타의 절대값이다.
sign은 코드북 엔트리의 부호 비트이다.
대응하는 신택스 표의 다른 예가 아래의 표 10에 열거된다:
Figure pct00019
실시예에서, CU3D에서의 모든 양자화된 가중치 계수(Q)에 대해, 개개의 양자화된 가중치 계수 Q와 모든 코드북 엔트리들 사이의 절대 차이가 계산되고, 최소 절대 차이에 대응하는 코드북 인덱스(n)가 개개의 양자화된 가중치 계수 Q의 코드북 인덱스로서 선택된다. 이 CU3D의 인덱스 맵은 가중치 계수들의 모든 코드북 인덱스들을 이용하여 구성된다.
다른 실시예에서, CU3D에서의 모든 양자화된 가중치 계수(Q)에 대해, 개개의 양자화된 가중치 계수 Q와 모든 코드북 엔트리들 사이의 절대 차이가 계산되고, 최소 절대 차이에 대응하는 코드북 인덱스(n)가 추가적인 RD 계산(rd_codebook)을 위해 선택된다. 이 양자화된 가중치 계수를 코딩하는 RD(rd_escape)가 또한 계산된다. 추가적인 RD 계산(rd_codebook)이 RD(rd_escape)보다 작다면, 이 코드북 인덱스(n)는 개개의 양자화된 가중치 계수 Q의 코드북 인덱스로서 선택된다. 그렇지 않다면, 코드북의 크기로서 정의된 특별 이스케이프 인덱스(special escape index)가 개개의 양자화된 가중치 계수 Q의 코드북 인덱스로서 이용된다. 이 CU3D의 인덱스 맵은 가중치 계수들의 이스케이프 인덱스들 및 코드북 인덱스들을 이용하여 구성된다.
인코딩 알고리즘이 양자화된 가중치 계수들 및 인덱스 맵 계수들 모두에 적용되고, 더 양호한 RD를 갖는 하나의 모드가 승자로서 선택된다. 이러한 모드 결정은 비트스트림으로 암시적으로 인코딩되고, 코드북을 이용하지 않는 모드는, 예측된 크기(predicted_size)와 시그널링된 크기(signalled_size) 모두가 0일 때 추론될 수 있다.
도 11은 실시예들에 따른, 신경망 모델 압축을 위한 코드북 코딩 방법(1100)의 흐름도이다. 일부 구현들에서, 도 11의 하나 이상의 프로세스 블록은 플랫폼(220)에 의해 수행될 수 있다. 일부 구현들에서, 도 11의 하나 이상의 프로세스 블록은 사용자 디바이스(210)와 같은, 플랫폼(220)으로부터 분리되거나 이를 포함하는 다른 디바이스 또는 디바이스들의 그룹에 의해 수행될 수 있다.
도 11에 도시된 바와 같이, 동작(1110)에서, 방법(1100)은 양자화된 가중치 계수들의 히스토그램을 생성하는 단계를 포함한다.
동작(1120)에서, 방법(1100)은 생성된 히스토그램의 빈들 각각의 레이트 왜곡을 양자화된 가중치 계수들에 대한 코드북 예측자에서의 엔트리들 각각의 레이트 왜곡과 비교하는 단계를 포함한다.
동작(1130)에서, 방법(1100)은, 히스토그램의 빈들 중 하나의 레이트 왜곡이 코드북 예측자에서의 엔트리들 중 하나의 레이트 왜곡보다 작은 것으로 비교되는 것에 기초해서, 빈들 중 하나를 엔트리들 중 하나로 대체하여, 양자화된 가중치 계수들을 리인덱싱하기 위한 코드북을 생성하는 단계를 포함한다.
방법(1100)은 코드북 예측자의 엔트리들 각각이 생성된 코드북에 있는지를 나타내는 예측된 비트맵을 생성하는 단계를 더 포함할 수 있다.
도 11은 방법(1100)의 예시적인 블록들을 도시하지만, 일부 구현들에서, 방법(1100)은 도 11에 묘사된 것들에 비해 추가적인 블록들, 더 적은 블록들, 상이한 블록들, 또는 상이하게 배열된 블록들을 포함할 수 있다. 추가적으로 또는 대안으로서, 방법(1100)의 블록들 중 2개 이상은 병렬로 수행될 수 있다.
도 12는 실시예들에 따른, 신경망 모델 압축을 위한 코드북 코딩을 위한 장치(1200)의 도면이다. 도 12에 도시된 바와 같이, 장치(1200)는 제1 생성 코드(1210), 비교 코드(1220), 대체 코드(1230) 및 제2 생성 코드(1240)를 포함한다.
제1 생성 코드(1210)는 적어도 하나의 프로세서로 하여금 양자화된 가중치 계수들의 히스토그램을 생성하게 하도록 구성된다.
비교 코드(1220)는 적어도 하나의 프로세서로 하여금 생성된 히스토그램의 빈들 각각의 레이트 왜곡을 양자화된 가중치 계수들에 대한 코드북 예측자에서의 엔트리들 각각의 레이트 왜곡과 비교하게 하도록 구성된다.
대체 코드(1230)는 적어도 하나의 프로세서로 하여금, 히스토그램의 빈들 중 하나의 레이트 왜곡이 코드북 예측자에서의 엔트리들 중 하나의 레이트 왜곡보다 작은 것으로 비교되는 것에 기초해서, 빈들 중 하나를 엔트리들 중 하나로 대체하여, 양자화된 가중치 계수들을 리인덱싱하기 위한 코드북을 생성하게 하도록 구성된다.
제2 생성 코드(1240)는 적어도 하나의 프로세서로 하여금 코드북 예측자의 엔트리들 각각이 생성된 코드북에 있는지를 나타내는 예측된 비트맵을 생성하게 하도록 구성된다.
전술한 개시내용은 예시 및 설명을 제공하지만, 포괄적이거나 구현들을 개시된 정밀한 형태로 제한하는 것으로 의도되지 않는다. 수정들 및 변경들이 상기의 개시내용의 관점에서 가능하거나, 구현들의 실시로부터 획득될 수 있다.
본 명세서에 이용된 바와 같이, 컴포넌트라는 용어는 하드웨어, 펌웨어, 또는 하드웨어와 소프트웨어의 조합으로서 넓게 해석되도록 의도된다.
본 명세서에 설명되는 시스템들 및/또는 방법들은 하드웨어, 펌웨어, 또는 하드웨어와 소프트웨어의 조합의 상이한 형태들로 구현될 수 있다는 점이 명백할 것이다. 이러한 시스템들 및/또는 방법들을 구현하기 위해 이용되는 실제 특수화된 제어 하드웨어 또는 소프트웨어 코드가 구현들의 제한은 아니다. 따라서, 시스템들 및/또는 방법들의 동작 및 거동은 구체적인 소프트웨어 코드를 참조하지 않고 본 명세서에서 설명되었고, 소프트웨어 및 하드웨어는 본 명세서에서의 설명에 기초하여 시스템들 및/또는 방법들을 구현하도록 설계될 수 있다는 점이 이해된다.
특징들의 조합들이 청구항들에서 인용되고/되거나 명세서에 개시되더라도, 이러한 조합들은 가능한 구현들의 개시내용을 제한하는 것으로 의도되지 않는다. 사실, 이러한 특징들 중 다수는 구체적으로 청구항들에 인용되고/되거나 명세서에 개시되지 않은 방식으로 조합될 수 있다. 아래에 기재된 각각의 종속항이 오직 하나의 청구항만을 직접 인용할 수 있지만, 가능한 구현들의 개시내용은 청구항 세트에서 모든 다른 청구항과의 조합으로 각각의 종속항을 포함한다.
본 명세서에 이용된 요소, 작용, 또는 명령어는 그와 같이 명시적으로 설명되지 않는 한, 불가결하거나 본질적인 것으로 해석되지 않을 것이다. 또한, 본 명세서에서 이용되는 바와 같이, 관사들("a" 및 "an")은 하나 이상의 항목을 포함하는 것으로 의도되며, "하나 이상(one or more)"과 상호교환가능하게 이용될 수 있다. 또한, 본 명세서에서 이용되는 바와 같이, "세트(set)"라는 용어는 하나 이상의 항목(예를 들어, 관련된 항목들, 관련되지 않은 항목들, 관련된 및 관련되지 않은 항목들의 조합 등)을 포함하는 것으로 의도되고, "하나 이상"과 상호교환가능하게 이용될 수 있다. 하나의 항목만이 의도되는 경우, 용어 "하나" 또는 유사한 언어가 이용된다. 또한, 본 명세서에서 이용되는 바와 같이, 용어들 "갖는("has", "have", "having" 등)은 개방형 용어들인 것으로 의도된다. 또한, "기초하여(based on)"라는 구절은 명백히 달리 언급되지 않는 한, "적어도 부분적으로 기초한"을 의미하도록 의도된다.

Claims (20)

  1. 신경망 모델 압축을 위한 양자화, 적응적 블록 파티셔닝 및 코드북 코딩의 방법으로서,
    상기 방법은 적어도 하나의 프로세서에 의해 수행되고, 상기 방법은,
    신경망의 계층에서의 다차원 텐서의 포화된 최대 값, 및 상기 포화된 최대 값에 대응하는 비트 심도를 결정하는 단계;
    상기 다차원 텐서에서의 가중치 계수들을 상기 포화된 최대 값의 범위 내에 있도록 클리핑하는 단계;
    상기 비트 심도에 기초하여 상기 클리핑된 가중치 계수들을 양자화하는 단계; 및
    상기 비트 심도를 포함하는 계층 헤더를 디코더에 송신하는 단계
    를 포함하는, 방법.
  2. 제1항에 있어서,
    가변 길이 코딩 또는 고정 길이 코딩을 이용하여 상기 비트 심도를 코딩하는 단계를 더 포함하고,
    상기 계층 헤더는 상기 코딩된 비트 심도를 포함하는, 방법.
  3. 제1항에 있어서,
    상기 계층 헤더는 상기 포화된 최대 값을 더 포함하는, 방법.
  4. 제1항에 있어서,
    상기 포화된 최대 값은 부동소수점 수로 표현되는, 방법.
  5. 제4항에 있어서,
    다음의 수학식에 기초하여, 상기 포화된 최대 값을 표현하는 정수를 결정하는 단계를 더 포함하고,
    Figure pct00020

    여기서, int_layer_sat_maxw는 상기 포화된 최대 값의 상기 정수를 나타내고, layer_sat_maxw는 상기 포화된 최대 값을 나타내는, 방법.
  6. 제5항에 있어서,
    가변 길이 코딩 또는 고정 길이 코딩을 이용하여, 상기 포화된 최대 값의 상기 정수를 코딩하는 단계를 더 포함하는, 방법.
  7. 제1항에 있어서,
    상기 계층 헤더는 상기 클리핑된 가중치 계수들을 양자화하는 스텝 크기를 더 포함하는, 방법.
  8. 제1항에 있어서,
    상기 양자화된 가중치 계수들 중에서, 신경망의 4차원(4D) 파라미터 텐서를 상기 신경망의 3차원(3D) 파라미터 텐서로 재성형하는 단계―상기 3D 파라미터 텐서는 컨볼루션 커널 크기, 입력 피처 크기 및 출력 피처 크기를 포함함―;
    상기 입력 피처 크기 및 상기 출력 피처 크기에 의해 형성되는 평면을 따라 상기 3D 파라미터 텐서를 3D 코딩 트리 유닛(CTU3D)들로 파티셔닝하는 단계; 및
    상기 CTU3D들을 엔트로피 인코딩하는 단계를 더 포함하는, 방법.
  9. 제8항에 있어서,
    상기 CTU3D들은 비중첩 정사각형 블록들인, 방법.
  10. 제8항에 있어서,
    상기 CTU3D들 각각이 일정한 크기를 갖는다는 것을 나타내도록 플래그를 설정하는 단계를 더 포함하고,
    상기 3D 파라미터 텐서를 파티셔닝하는 단계는, 상기 CTU3D들 각각이 상기 일정한 크기를 갖는다는 것을 나타내도록 상기 플래그가 설정되는 것에 기초하여, 상기 평면을 따라 상기 3D 파라미터 텐서를, 상기 일정한 크기를 갖는 상기 CTU3D들로 파티셔닝하는 단계를 포함하는, 방법.
  11. 제8항에 있어서,
    상기 CTU3D들 각각이 상기 컨볼루션 커널 크기에 기초하여 스케일링된 크기를 갖는다는 것을 나타내도록 플래그를 설정하는 단계를 더 포함하고,
    상기 3D 파라미터 텐서를 파티셔닝하는 단계는, 상기 CTU3D들 각각이 상기 컨볼루션 커널 크기에 기초하여 스케일링된 상기 크기를 갖는다는 것을 나타내도록 상기 플래그가 설정되는 것에 기초하여, 상기 평면을 따라 상기 3D 파라미터 텐서를, 상기 컨볼루션 커널 크기에 기초하여 스케일링된 상기 크기를 갖는 상기 CTU3D들로 파티셔닝하는 단계를 포함하는, 방법.
  12. 제8항에 있어서,
    상기 CTU3D들을 엔트로피 인코딩하는 단계는 상기 CTU3D들을 수평 방향 또는 수직 방향에서 래스터 스캔 순서로 엔트로피 인코딩하는 단계를 포함하는, 방법.
  13. 제8항에 있어서,
    쿼드-트리를 이용하여, 상기 CTU3D들 각각을 최대 심도까지 재귀적으로 복수의 3D 코딩 유닛(CU3D)들로 파티셔닝하는 단계를 더 포함하는, 방법.
  14. 제13항에 있어서,
    상기 CTU3D들을 엔트로피 인코딩하는 단계는,
    상기 쿼드-트리의 제1 심도를 스캔하는 단계; 및
    상기 쿼드-트리의 상기 스캔된 제1 심도에 포함된 상기 복수의 CU3D들 중 하나 이상을 수평 방향 또는 수직 방향에서 래스터 스캔 순서로 엔트로피 인코딩하는 단계를 포함하는, 방법.
  15. 제13항에 있어서,
    상기 복수의 CU3D들은 비중첩 정사각형 블록들인, 방법.
  16. 제13항에 있어서,
    상기 CTU3D들 각각을 상기 복수의 CU3D들로 파티셔닝하는 단계는,
    자식 CU3D들의 조합된 레이트 왜곡이 상기 복수의 CU3D들 중 부모 CU3D의 레이트 왜곡보다 작은지를 결정하는 단계; 및
    상기 자식 CU3D들의 상기 조합된 레이트 왜곡이 상기 부모 CU3D의 상기 레이트 왜곡보다 작은 것으로 결정되는 것에 기초하여, 상기 부모 CU3D를 상기 자식 CU3D들로 파티셔닝하는 단계를 포함하는, 방법.
  17. 제1항에 있어서,
    상기 양자화된 가중치 계수들의 히스토그램을 생성하는 단계;
    상기 생성된 히스토그램의 빈들 각각의 레이트 왜곡을 상기 양자화된 가중치 계수들에 대한 코드북 예측자에서의 엔트리들 각각의 레이트 왜곡과 비교하는 단계; 및
    상기 히스토그램의 상기 빈들 중 하나의 상기 레이트 왜곡이 상기 코드북 예측자에서의 상기 엔트리들 중 하나의 상기 레이트 왜곡보다 작은 것으로 비교되는 것에 기초해서, 상기 빈들 중 상기 하나를 상기 엔트리들 중 상기 하나로 대체하여, 상기 양자화된 가중치 계수들을 리인덱싱하기 위한 코드북을 생성하는 단계를 더 포함하는, 방법.
  18. 제17항에 있어서,
    상기 코드북 예측자의 상기 엔트리들 각각이 상기 생성된 코드북에 있는지를 나타내는 예측된 비트맵을 더 포함하는, 방법.
  19. 신경망 모델 압축을 위한 양자화, 적응적 블록 파티셔닝 및 코드북 코딩을 위한 장치로서,
    프로그램 코드를 저장하도록 구성된 적어도 하나의 메모리; 및
    상기 프로그램 코드를 판독하고 상기 프로그램 코드에 의해 지시된 대로 동작하도록 구성된 적어도 하나의 프로세서를 포함하고,
    상기 프로그램 코드는,
    상기 적어도 하나의 프로세서로 하여금 신경망의 계층에서의 다차원 텐서의 포화된 최대 값, 및 상기 포화된 최대 값에 대응하는 비트 심도를 결정하게 하도록 구성된 제1 결정 코드;
    상기 적어도 하나의 프로세서로 하여금 상기 다차원 텐서에서의 가중치 계수들을 상기 포화된 최대 값의 범위 내에 있도록 클리핑하게 하도록 구성된 클리핑 코드;
    상기 적어도 하나의 프로세서로 하여금 상기 비트 심도에 기초하여 상기 클리핑된 가중치 계수들을 양자화하게 하도록 구성된 양자화 코드; 및
    상기 적어도 하나의 프로세서로 하여금 상기 비트 심도를 포함하는 계층 헤더를 디코더에 송신하게 하도록 구성된 송신 코드를 포함하는,
    장치.
  20. 명령어들을 저장하는 비일시적 컴퓨터 판독가능 매체로서,
    상기 명령어들은, 신경망 모델 압축을 위한 양자화, 적응적 블록 파티셔닝 및 코드북 코딩을 위해 적어도 하나의 프로세서에 의해 실행될 때, 상기 적어도 하나의 프로세서로 하여금,
    신경망의 계층에서의 다차원 텐서의 포화된 최대 값, 및 상기 포화된 최대 값에 대응하는 비트 심도를 결정하게 하고;
    상기 다차원 텐서에서의 가중치 계수들을 상기 포화된 최대 값의 범위 내에 있도록 클리핑하게 하고,
    상기 비트 심도에 기초하여 상기 클리핑된 가중치 계수들을 양자화하게 하고;
    상기 비트 심도를 포함하는 계층 헤더를 디코더에 송신하게 하는,
    비일시적 컴퓨터 판독가능 매체.
KR1020217033218A 2019-11-22 2020-11-19 신경망 모델 압축을 위한 양자화, 적응적 블록 파티셔닝 및 코드북 코딩을 위한 방법 및 장치 KR20210136123A (ko)

Applications Claiming Priority (11)

Application Number Priority Date Filing Date Title
US201962939057P 2019-11-22 2019-11-22
US201962939054P 2019-11-22 2019-11-22
US62/939,054 2019-11-22
US62/939,057 2019-11-22
US201962939949P 2019-11-25 2019-11-25
US62/939,949 2019-11-25
US201962947236P 2019-12-12 2019-12-12
US62/947,236 2019-12-12
US17/099,202 2020-11-16
US17/099,202 US11245903B2 (en) 2019-11-22 2020-11-16 Method and apparatus for quantization, adaptive block partitioning and codebook coding for neural network model compression
PCT/US2020/061258 WO2021102125A1 (en) 2019-11-22 2020-11-19 Method and apparatus for quantization, adaptive block partitioning and codebook coding for neural network model compression

Publications (1)

Publication Number Publication Date
KR20210136123A true KR20210136123A (ko) 2021-11-16

Family

ID=75981074

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217033218A KR20210136123A (ko) 2019-11-22 2020-11-19 신경망 모델 압축을 위한 양자화, 적응적 블록 파티셔닝 및 코드북 코딩을 위한 방법 및 장치

Country Status (5)

Country Link
EP (1) EP4062375A4 (ko)
JP (1) JP7337950B2 (ko)
KR (1) KR20210136123A (ko)
CN (1) CN113795869B (ko)
WO (1) WO2021102125A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113766237A (zh) * 2021-09-30 2021-12-07 咪咕文化科技有限公司 一种编码方法、解码方法、装置、设备及可读存储介质
TWI795135B (zh) * 2021-12-22 2023-03-01 財團法人工業技術研究院 神經網路模型的量化方法及深度學習加速器
TWI819627B (zh) * 2022-05-26 2023-10-21 緯創資通股份有限公司 用於深度學習網路的優化方法、運算裝置及電腦可讀取媒體

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9485508B2 (en) * 2013-04-08 2016-11-01 Qualcomm Incorporated Non-entropy encoded set of profile, tier, and level syntax structures
US10223635B2 (en) * 2015-01-22 2019-03-05 Qualcomm Incorporated Model compression and fine-tuning
US10515307B2 (en) * 2015-06-05 2019-12-24 Google Llc Compressed recurrent neural network models
US11593632B2 (en) * 2016-12-15 2023-02-28 WaveOne Inc. Deep learning based on image encoding and decoding
EP3564864A4 (en) * 2016-12-30 2020-04-15 Shanghai Cambricon Information Technology Co., Ltd DEVICES FOR COMPRESSION / DECOMPRESSION, SYSTEM, CHIP AND ELECTRONIC DEVICE
US11948074B2 (en) 2018-05-14 2024-04-02 Samsung Electronics Co., Ltd. Method and apparatus with neural network parameter quantization
US11403528B2 (en) * 2018-05-31 2022-08-02 Kneron (Taiwan) Co., Ltd. Self-tuning incremental model compression solution in deep neural network with guaranteed accuracy performance
WO2020190772A1 (en) * 2019-03-15 2020-09-24 Futurewei Technologies, Inc. Neural network model compression and optimization
EP3716158A3 (en) * 2019-03-25 2020-11-25 Nokia Technologies Oy Compressing weight updates for decoder-side neural networks
CN110263913A (zh) * 2019-05-23 2019-09-20 深圳先进技术研究院 一种深度神经网络压缩方法及相关设备
CN110276451A (zh) * 2019-06-28 2019-09-24 南京大学 一种基于权重归一化的深度神经网络压缩方法
CN110443359A (zh) * 2019-07-03 2019-11-12 中国石油大学(华东) 基于自适应联合剪枝-量化的神经网络压缩算法
US11671110B2 (en) * 2019-11-22 2023-06-06 Tencent America LLC Method and apparatus for neural network model compression/decompression

Also Published As

Publication number Publication date
CN113795869A (zh) 2021-12-14
JP2022533307A (ja) 2022-07-22
WO2021102125A1 (en) 2021-05-27
JP7337950B2 (ja) 2023-09-04
EP4062375A1 (en) 2022-09-28
CN113795869B (zh) 2023-08-18
EP4062375A4 (en) 2022-12-28

Similar Documents

Publication Publication Date Title
US12010310B2 (en) Method and apparatus for quantization, adaptive block partitioning and codebook coding for neural network model compression
JP7337950B2 (ja) ニューラルネットワークモデル圧縮のための量子化、適応ブロック分割、及びコードブック符号化の方法及び装置、並びにコンピュータープログラム
JP7379524B2 (ja) ニューラルネットワークモデルの圧縮/解凍のための方法および装置
US11871043B2 (en) Method and apparatus for three-dimensional (3D)-tree coding for neural network model compression
US11490085B2 (en) Model sharing by masked neural network for loop filter with quality inputs
US11488329B2 (en) Method and apparatus for multi-rate neural image compression with stackable nested model structures
US11594008B2 (en) Method and apparatus for escape reorder mode using a codebook index for neural network model compression
US11234024B2 (en) Method and apparatus for three-dimensional (3D)-tree coding for neural network model compression
US20220114414A1 (en) Method and apparatus for unification based coding for neural network model compression
US20220405978A1 (en) Non-linear quantization with substitution in neural image compression
KR20220164562A (ko) 뉴럴 이미지 압축에서 대체의 멀티-학습률들을 위한 방법 및 장치
KR20220165271A (ko) 뉴럴 이미지 압축에서 대체의 동적 학습률들을 위한 방법 및 장치
CN116897372A (zh) 用于针对基于特定模式的多个块进行内容自适应在线训练的系统、方法和计算机程序
KR20230142788A (ko) 신경 이미지 압축에서의 반복적 콘텐츠 적응형 온라인 트레이닝을 위한 시스템, 방법, 및 컴퓨터 프로그램
KR20230145147A (ko) 신경 이미지 압축에서 다수의 블록에 대한 콘텐츠 적응형 온라인 트레이닝을 위한 시스템, 방법 및 컴퓨터 프로그램
CN114556371A (zh) 用于压缩的神经网络表示的参数集和头设计的技术