KR20210053791A - 뉴럴 네트워크의 데이터를 처리하는 방법 및 장치 - Google Patents

뉴럴 네트워크의 데이터를 처리하는 방법 및 장치 Download PDF

Info

Publication number
KR20210053791A
KR20210053791A KR1020200136124A KR20200136124A KR20210053791A KR 20210053791 A KR20210053791 A KR 20210053791A KR 1020200136124 A KR1020200136124 A KR 1020200136124A KR 20200136124 A KR20200136124 A KR 20200136124A KR 20210053791 A KR20210053791 A KR 20210053791A
Authority
KR
South Korea
Prior art keywords
lanes
neural network
compression
bit
data
Prior art date
Application number
KR1020200136124A
Other languages
English (en)
Inventor
고유선
알렉스 채드윅
로버트 멀린
다니엘 베이츠
Original Assignee
삼성전자주식회사
캠브리지 엔터프라이즈 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사, 캠브리지 엔터프라이즈 리미티드 filed Critical 삼성전자주식회사
Priority to EP20205334.4A priority Critical patent/EP3817236A1/en
Priority to CN202011214414.6A priority patent/CN112784956A/zh
Priority to US17/088,771 priority patent/US20210133570A1/en
Publication of KR20210053791A publication Critical patent/KR20210053791A/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/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/002Image coding using neural networks

Landscapes

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

Abstract

뉴럴 네트워크의 데이터를 처리하는 방법 및 장치는, 뉴럴 네트워크의 프로세싱을 위하여 이용되는 데이터들의 하나 이상의 비트 표현들(bit representations)을 획득하고, 하나 이상의 비트 표현들에 기초하여 복수의 후보 프로파일들(profiles)을 생성하고, 후보 프로파일들 각각에 대한 압축 성능들(compression performances)을 비교함으로써 최종 프로파일을 결정하고, 결정된 최종 프로파일에 기초하여 뉴럴 네트워크의 데이터의 압축을 위한 최적 구성(configuration)을 결정한다.

Description

뉴럴 네트워크의 데이터를 처리하는 방법 및 장치{Method and apparatus for processing data of neural network}
본 개시는 뉴럴 네트워크의 데이터를 처리하는 방법 및 장치에 관한 것이다.
뉴럴 네트워크(neural network)는 생물학적 뇌를 모델링한 컴퓨터 과학적 아키텍쳐(computational architecture)를 참조한다. 최근 뉴럴 네트워크(neural network) 기술이 발전함에 따라, 다양한 종류의 전자 시스템에서 뉴럴 네트워크를 활용하여 입력 데이터를 분석하고 유효한 정보를 추출하는 연구가 활발히 진행되고 있다. 뉴럴 네트워크를 처리하는 장치는 복잡한 입력 데이터에 대한 데이터 전송과 많은 양의 연산을 필요로 한다. 따라서, 뉴럴 네트워크를 이용하여 대량의 입력 데이터를 실시간으로 분석하여, 원하는 정보를 추출하기 위해서는 뉴럴 네트워크에 관한 데이터들의 이동(data flow)을 효율적으로 처리할 수 있는 기술이 요구된다.
다양한 실시예들이 해결하고자 하는 기술적 과제는 뉴럴 네트워크의 데이터를 처리하는 방법 및 장치를 제공하는데 있다. 본 실시예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 이하의 실시예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
일 측면에 따르면, 뉴럴 네트워크의 데이터를 처리하는 방법은 뉴럴 네트워크의 프로세싱을 위하여 이용되는 데이터들의 하나 이상의 비트 표현들(bit representations)을 획득하는 단계, 획득된 데이터들의 하나 이상의 비트 표현들을 각각 하나 이상의 레인들(lanes)로 구분하여, 각 레인들마다 압축 기법들(compression technique)을 적용함으로써, 복수의 후보 프로파일들(profiles)을 생성하는 단계, 후보 프로파일들 각각에 대한 압축 성능들(compression performances)을 비교함으로써 최종 프로파일을 결정하는 단계 및 결정된 최종 프로파일에서 이용된 하나 이상의 레인들의 분할 방식 및 압축 기법들을 뉴럴 네트워크의 데이터의 압축을 위한 최적 구성(configuration)으로 결정하는 단계를 포함할 수 있다.
다른 측면에 따르면, 뉴럴 네트워크의 데이터를 처리하는 장치는 적어도 하나의 프로그램이 저장된 메모리 및 적어도 하나의 프로그램을 실행함으로써 데이터를 압축하는 프로세서를 포함하고, 프로세서는 뉴럴 네트워크의 프로세싱을 위하여 이용되는 데이터들의 하나 이상의 비트 표현들을 획득하고, 획득된 데이터들의 하나 이상의 비트 표현들을 각각 하나 이상의 레인들(lanes)로 구분하여, 각 레인들마다 압축 기법들(compression technique)을 적용함으로써, 복수의 후보 프로파일들(profiles)을 생성하고, 후보 프로파일들 각각에 대한 압축 성능들(compression performances)을 비교함으로써 최종 프로파일을 결정하고, 결정된 최종 프로파일에서 이용된 하나 이상의 레인들의 분할 방식 및 압축 기법들을 뉴럴 네트워크의 데이터의 압축을 위한 최적 구성(configuration)으로 결정할 수 있다.
또 다른 측면에 따르면, 컴퓨터로 읽을 수 있는 비일시적인(non-transitory) 기록매체는 상술한 방법을 실행하는 명령어들을 포함하는 하나 이상의 프로그램이 기록된 기록매체를 포함할 수 있다.
또 다른 측면에 따르면, 뉴럴 네트워크의 데이터를 처리하는 장치는 뉴럴 네트워크의 데이터들을 하나 이상의 레인들(lanes)로 구분하여 각 레인들마다 설정된 압축 기법들(compression technique)을 정의한 최종 프로파일에 의해 미리 결정된 최적 구성(configuration)을 획득하고, 뉴럴 네트워크의 프로세싱을 위하여 이용되는 데이터들의 비트 표현들을 획득하고, 획득된 최적 구성을 이용하여 획득된 비트 표현들을 하나 이상의 레인들로 분할하는 제1 분할부, 분할된 레인들 각각을 획득된 최적 구성을 이용하여 압축하고, 압축된 레인들을 출력하는 복수의 압축부들 및 압축된 레인들을 결합(concatenate)하고, 압축된 비트 표현들을 출력하는 제1 결합부를 포함할 수 있다.
또 다른 측면에 따르면, 뉴럴 네트워크의 데이터를 처리하는 장치는 뉴럴 네트워크의 데이터들을 하나 이상의 레인들(lanes)로 구분하여 각 레인들마다 설정된 압축 기법들(compression technique)을 정의한 최종 프로파일에 의해 미리 결정된 최적 구성(configuration)을 획득하고, 뉴럴 네트워크의 압축된 데이터의 압축된 비트 표현들을 획득하고, 압축된 비트 표현들을 획득된 최적 구성에 기초하여 하나 이상의 압축된 레인들로 분할하는 제2 분할부, 분할된 상기 압축된 레인들 각각을 최적 구성에 기초하여 압축해제(decompress)하고, 압축해제된 레인들을 출력하는 복수의 압축해제부들 및 압축해제된 레인들을 결합하고, 압축해제된 비트 표현들을 출력하는 제2 결합부를 포함할 수 있다.
도 1은 일 실시예에 따른 뉴럴 네트워크의 아키텍처를 설명하기 위한 도면이다.
도 2는 일 실시예에 따른 뉴럴 네트워크에서 수행되는 연산을 설명하기 위한 도면이다.
도 3은 데이터 압축을 위한 압축 파이프라인을 설명하기 위한 도면이다.
도 4는 일 실시예에 따른 뉴럴 네트워크 장치의 하드웨어 구성을 도시한 블록도이다.
도 5는 다른 일 실시예에 따른 뉴럴 네트워크 장치의 하드웨어 구성을 도시한 블록도이다.
도 6은 일 실시예에 따른 프로파일 생성 방법을 설명하기 위한 개념도이다.
도 7a, 도 7b, 도 7c는 일 실시예에 관한 액티베이션의 분할에 따른 통계적 분포를 설명하기 위한 도면이다.
도 7d, 도 7e, 도 7f는 일 실시예에 관한 웨이트의 분할에 따른 통계적 분포를 설명하기 위한 도면이다.
도 8은 일 실시예에 따른 후보 프로파일 생성 알고리즘을 도시한 도면이다.
도 9는 일 실시예에 따른 최적 구성 결정 알고리즘을 도시한 도면이다.
도 10은 일 실시예에 따른 최적의 압축 기법과 알고리드믹 파라미터의 값을 결정하는 알고리즘을 도시한 도면이다.
도 11은 일 실시예에 따른 비트 표현의 압축을 설명하기위한 도면이다.
도 12는 일 실시예에 따른 복수의 압축 기법들을 설명하기위한 표이다.
도 13은 일 실시예에 따른 최적 구성에 따라 압축하는 방법을 설명하기 위한 도면이다.
도 14는 일 실시예에 따른 인코더를 설명하기 위한 도면이다.
도 15는 일 실시예에 따른 스탑 코드 삽입 알고리즘을 설명하기 위한 도면이다.
도 16은 일 실시예에 따른 인코더의 압축을 설명하기 위한 도면이다.
도 17은 다른 일 실시예에 따른 인코더를 설명하기 위한 블록도이다.
도 18은 일 실시예에 따른 디코더를 설명하기 위한 도면이다.
도 19는 다른 일 실시예에 따른 디코더를 설명하기 위한 블록도이다.
도 20은 일 실시예에 따른 뉴럴 네트워크 데이터들의 통계적 특성을 설명하기위한 표이다.
도 21은 일 실시예에 따른 압축률을 비교하기 위한 그래프이다.
도 22는 일 실시예에 따른 전자 시스템의 구성을 나타내는 블록도이다.
도 23은 일 실시예에 따른 뉴럴 네트워크 장치에서 뉴럴 네트워크의 데이터를 처리하는 방법의 흐름도이다.
본 실시예들에서 사용되는 용어는 본 실시예들에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 기술분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 임의로 선정된 용어도 있으며, 이 경우 해당 실시예의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서, 본 실시예들에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 실시예들의 전반에 걸친 내용을 토대로 정의되어야 한다.
실시예들에 대한 설명들에서, 어떤 부분이 다른 부분과 연결되어 있다고 할 때, 이는 직접적으로 연결되어 있는 경우뿐 아니라, 그 중간에 다른 구성요소를 사이에 두고 전기적으로 연결되어 있는 경우도 포함한다. 또한 어떤 부분이 어떤 구성요소를 포함한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
본 실시예들에서 사용되는 "구성된다" 또는 "포함한다" 등의 용어는 명세서 상에 기재된 여러 구성 요소들 또는 여러 단계들을 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다.
또한, 본 명세서에서 사용되는 '제 1' 또는 '제 2' 등과 같이 서수를 포함하는 용어는 다양한 구성 요소들을 설명하는데 사용할 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만 사용된다.
본 실시예들은 뉴럴 네트워크에 포함된 데이터를 압축하는 방법 및 장치에 관한 것으로서 이하의 실시예들이 속하는 기술 분야에서 통상의 지식을 가진 자에게 널리 알려져 있는 사항들에 관해서는 자세한 설명을 생략한다.
하기 실시예들에 대한 설명은 권리범위를 제한하는 것으로 해석되지 말아야 하며, 해당 기술분야의 당업자가 용이하게 유추할 수 있는 것은 실시예들의 권리범위에 속하는 것으로 해석되어야 할 것이다. 이하 첨부된 도면들을 참조하면서 오로지 예시를 위한 실시예들을 상세히 설명하기로 한다.
도 1은 일 실시예에 따른 뉴럴 네트워크의 아키텍처를 설명하기 위한 도면이다.
도 1을 참고하면, 뉴럴 네트워크(1)는 노드들과 에지들을 이용하여 수학적 모델로 표현될 수 있다. 뉴럴 네트워크(1)는 딥 뉴럴 네트워크(Deep Neural Network, DNN) 또는 n-계층 뉴럴 네트워크(n-layers neural networks)의 아키텍처일 수 있다. DNN 또는 n-계층 뉴럴 네트워크는 컨볼루션 뉴럴 네트워크(Convolutional Neural Networks, CNN), 리커런트 뉴럴 네트워크(Recurrent Neural Networks, RNN), Deep Belief Networks, Restricted Boltzman Machines 등에 해당될 수 있다. 예를 들어, 뉴럴 네트워크(1)는 컨볼루션 뉴럴 네트워크(CNN)로 구현될 수 있으나, 이에 제한되지 않는다. 도 1의 뉴럴 네트워크(1)는 컨볼루션 뉴럴 네트워크 중 일부의 레이어들에 해당될 수 있다. 따라서, 뉴럴 네트워크(1)는 컨볼루션 뉴럴 네트워크의 컨볼루션 레이어, 풀링 레이어(pooling layer), 풀리 커넥티드(fully connected) 레이어 등에 해당될 수 있다. 다만, 이하에서는 편의상, 뉴럴 네트워크(1)가 컨볼루션 뉴럴 네트워크의 컨볼루션 레이어에 해당되는 것으로 가정하여 설명한다.
컨볼루션 레이어에서, 제1 피처 맵(feature map 1, FM1)은 입력 피처 맵에 해당될 수 있고, 제2 피처 맵(FM2)은 출력 피처 맵에 해당될 수 있다. 피처 맵은 입력 데이터의 다양한 특징이 표현된 데이터 세트를 의미할 수 있다. 피처 맵들(FM1, FM2)은 2차원 이상의 고차원 매트릭스일 수 있고, 각각의 액티베이션(activation) 파라미터들을 갖는다. 피처 맵들(FM1, FM2)이 예를 들어 3차원 피처 맵들에 해당되는 경우, 피처 맵들(FM1, FM2)은 너비(W)(또는 칼럼이라고 함), 높이(H)(또는 로우라고 함) 및 깊이(C)를 가진다. 이때, 깊이(C)는 채널들의 개수에 대응될 수 있다.
컨볼루션 레이어에서, 제1 피처 맵(FM1) 및 웨이트 맵(WM)에 대한 컨볼루션 연산이 수행될 수 있고, 그 결과 제2 피처 맵(FM2)이 생성될 수 있다. 웨이트 맵(WM)은 제1 피처 맵(FM1)을 필터링할 수 있으며, 웨이트 필터 또는 웨이트 커널(kernel)로 지칭된다. 일 예에서, 웨이트 맵(WM)의 깊이, 즉 채널 개수는 제1 피처 맵(FM1)의 깊이, 즉 채널 개수와 동일하다. 웨이트 맵(WM)은 제1 피처 맵(FM1)을 슬라이딩 윈도로 하여 횡단하는 방식으로 시프트된다. 각 시프트 동안, 웨이트 맵(WM)에 포함되는 웨이트들 각각이 제1 피처 맵(FM1)과 중첩된 영역에서의 모든 피처 값과 곱해지고 더해질 수 있다. 제1 피처 맵(FM1)과 웨이트 맵(WM)이 컨볼루션됨에 따라, 제2 피처 맵(FM2)의 하나의 채널이 생성될 수 있다.
도 1에는 하나의 웨이트 맵(WM)이 표시되었으나, 실질적으로는 복수의 웨이트 맵들이 제1 피처 맵(FM1)과 컨볼루션 되어, 제2 피처 맵(FM2)의 복수의 채널들이 생성될 수 있다. 한편, 컨벌루션 레이어의 제2 피처 맵(FM2)은 다음 레이어의 입력 피처 맵이 될 수 있다. 예를 들어, 제2 피처 맵(FM2)은 풀링(pooling) 레이어의 입력 피처 맵이 될 수 있다. 다만, 이에 제한되는 것은 아니다.
도 2는 일 실시예에 따른 뉴럴 네트워크에서 수행되는 연산을 설명하기 위한 도면이다.
도 2를 참조하면, 뉴럴 네트워크(2)는 입력 레이어, 히든 레이어들 및 출력 레이어를 포함하는 구조를 가지며, 수신되는 입력 데이터(예를 들어, I1 및 I2)를 기초로 연산을 수행하고, 연산 수행 결과를 기초로 출력 데이터(예를 들어, O1 및 O2)를 생성할 수 있다.
뉴럴 네트워크(2)는 앞서 설명된 바와 같이, 2개 이상의 히든 레이어들을 포함하는 DNN 또는 n-계층 뉴럴 네트워크일 수 있다. 예를 들어, 도 2에 도시된 바와 같이, 뉴럴 네트워크(2)는 입력 레이어(Layer 1), 2개의 히든 레이어들(Layer 2 및 Layer 3) 및 출력 레이어(Layer 4)를 포함하는 DNN일 수 있다. 뉴럴 네트워크(2)가 DNN 아키텍처로 구현된 경우 유효한 정보를 처리할 수 있는 보다 많은 레이어들을 포함하므로, 뉴럴 네트워크(2)는 싱글 레이어를 갖는 뉴럴 네트워크보다 복잡한 데이터 집합들을 처리할 수 있다. 한편, 뉴럴 네트워크(2)는 4개의 레이어들을 포함하는 것으로 도시되어 있으나, 이는 예시에 불과할 뿐 뉴럴 네트워크(2)는 더 적거나 많은 레이어들을 포함하거나, 더 적거나 많은 채널들을 포함할 수 있다. 즉, 뉴럴 네트워크(2)는 도 2에 도시된 것과는 다른, 다양한 구조의 레이어들을 포함할 수 있다.
뉴럴 네트워크(2)에 포함된 레이어들 각각은 복수의 채널들을 포함할 수 있다. 채널은 뉴런(neuron), 프로세싱 엘리먼트(Processing element, PE), 유닛(unit) 또는 이와 유사한 용어들로 알려진, 복수의 인공 노드(artificial node)들에 해당될 수 있다. 예를 들어, 도 2에 도시된 바와 같이, Layer 1은 2개의 채널들(노드들), Layer 2 및 Layer 3 각각은 3개의 채널들을 포함할 수 있다. 다만, 이는 예시에 불과할 뿐 뉴럴 네트워크(2)에 포함된 레이어들 각각은 다양한 개수의 채널들(노드들)을 포함할 수 있다.
뉴럴 네트워크(2)의 레이어들 각각에 포함된 채널들은 서로 연결되어 데이터를 처리할 수 있다. 예를 들어, 하나의 채널은 다른 채널들로부터 데이터를 수신하여 연산할 수 있고, 연산 결과를 또 다른 채널들로 출력할 수 있다.
채널들 각각의 입력 및 출력 각각은 입력 액티베이션 및 출력 액티베이션이라고 지칭될 수 있다. 즉, 액티베이션은 한 채널의 출력임과 동시에, 다음 레이어에 포함된 채널들의 입력에 해당되는 파라미터일 수 있다. 한편, 채널들 각각은 이전 레이어에 포함된 채널들로부터 수신된 액티베이션들 및 웨이트들에 기초하여 자신의 액티베이션을 결정할 수 있다. 웨이트는 각 채널에서의 출력 액티베이션을 계산하기 위해 이용되는 파라미터로서, 채널들 간의 연결관계에 할당되는 값일 수 있다.
채널들 각각은 입력을 수신하여 출력 액티베이션을 출력하는 연산 유닛(computational unit) 또는 프로세싱 엘리먼트(processing element)에 의해 처리될 수 있고, 채널들 각각의 입력-출력은 매핑될 수 있다. 예를 들어, σ는 액티베이션 함수(activation function)이고,
Figure pat00001
는 (i-1) 번째 레이어에 포함된 k 번째 채널로부터 i 번째 레이어에 포함된 j번째 채널로의 웨이트며,
Figure pat00002
는 i 번째 레이어에 포함된 j 번째 채널의 바이어스(bias)이고,
Figure pat00003
는 i 번째 레이어의 j 번째 채널의 액티베이션이라고 할 때, 액티베이션
Figure pat00004
는 다음과 같은 수학식 1을 이용하여 계산될 수 있다.
Figure pat00005
도 2에 도시된 바와 같이, 2번째 레이어(Layer 2)의 첫 번째 채널(CH 1)의 액티베이션은
Figure pat00006
로 표현될 수 있다. 또한,
Figure pat00007
은 수학식 1에 따라
Figure pat00008
의 값을 가질 수 있다. 액티베이션 함수 σ는 Rectified Linear Unit (ReLU)일 수 있으나, 이에 제한되는 것은 아니다. 예를 들어, 액티베이션 함수 σ는 시그모이드(Sigmoid), 하이퍼볼릭 탄젠트(tanh), 맥스아웃(Maxout) 등일 수도 있다.
앞서 설명한 것과 같이, 뉴럴 네트워크(2)에서는 수많은 데이터 집합들이 상호 연결된 복수의 채널들 간에 교환되고, 레이어를 지나면서 연산 과정을 거친다. 따라서, 뉴럴 네트워크(2)의 복잡한 데이터들을 처리하는데 필요한 메모리를 감소시킬 수 있는 기술이 요구된다.
한편, 데이터 압축(data compression)은 뉴럴 네트워크 데이터를 압축함으로써, 뉴럴 네트워크(2) 연산의 메모리 트래픽(memory traffic) 양을 줄이고 메모리 바운드(memory bound)에 의해 제한된 뉴럴 네트워크(2) 연산의 성능을 향상시킬 수 있다. 여기서, 메모리 바운드는 메모리 양에 의해 연산을 완료하는 시간이 결정되는 것을 의미할 수 있다.
뉴럴 네트워크 데이터는 뉴럴 네트워크를 이용한 머신 러닝에 관한 여러 프로세스들에 사용되는 데이터로서, 데이터 값의 변화 여부와 관계없이, 뉴럴 네트워크의 프로세스들에서 사용되거나 처리되는 정적(static) 데이터, 동적(dynamic) 데이터를 모두 포함할 수 있다. 뉴럴 네트워크 데이터는 서로 다른 정밀도를 가지는 데이터들을 모두 포함할 수 있다.
뉴럴 네트워크 데이터는 상술한 레이어들의 연결관계에 할당되는 값, MAC (multiply-accumulate) 연산의 결과값과 같이 뉴럴 네트워크를 활용한 프로세스의 여러 국면에서 이용되는 입력값, 출력값, 프로세스의 활용을 위해 기 설정된 값 등 그 표현 형식과 사용 시점에 제한이 없는 데이터들을 모두 포함할 수 있다. 예를 들어, 뉴럴 네트워크의 데이터들은 뉴럴 네트워크의 액티베이션들(activations), 웨이트들(weights) 및 그레디언트들(gradients) 중 적어도 하나를 포함할 수 있으나, 이에 제한되지 않고 뉴럴 네트워크의 추론(inference) 프로세스 또는 학습 프로세스에서 사용되거나 처리되는 데이터 값들일 수 있다.
본 실시예는 표현 형식과 사용 시점에 제한이 없는 다양한 뉴럴 네트워크 데이터를 압축하는 방법을 제공함으로써, 메모리 액세스 부담을 줄일 수 있고, 서로 다른 뉴럴 네트워크에서 범용적으로 압축을 수행할 수 있다.
이하 도면을 참고하여, 뉴럴 네트워크(2)에서 사용되는 뉴럴 네트워크 데이터들을 압축하는 방법에 대해 상세히 설명한다.
도 3은 데이터 압축을 위한 압축 파이프라인을 설명하기 위한 도면이다.
도 3을 참조하면, 압축 파이프 라인(3)은 손실 변환(lossy transformation) 블록(31)과 무손실 압축(lossless compression) 블록(32)을 포함한다. 압축 파이프 라인(3)이 이용됨으로써, 메모리 트래픽(memory traffic) 양이 줄어들고, 메모리 바운드(memory bound)에 의해 제한된 머신 러닝 워크로드(machine learning workloads)의 성능이 향상될 수 있다. 예를 들어, 32비트 플로팅 포인트(floating point)에서 완전 정밀(full-precision) 데이터는 훈련(training)이나 추론(inference)을 위해 손실 변환 및/또는 무손실 압축에 의해 압축될 수 있다. 손실 변환은 데이터의 정보량을 줄임으로써 데이터를 압축하고, 무손실 압축은 정보의 밀도를 높여 데이터를 압축할 수 있다.
손실 변환 기법으로는 프루닝(Pruning), 단수값 분해(singular value decomposition: SVD), 양자화(Quantization)가 있고, 무손실 압축 기법으로는 허프먼 부호화, 제로에 대한 런 렝스 부호화(Run-length coding on zeros: Z-RLC), 제로-값 압축(Zero-value compression: ZVC) 등이 있다.
다만, 무손실 압축 기법의 하드웨어 복잡성(hardware complexities)은 상당히 다양하며, 일부 압축 기법은 임베디드 시스템(embedded system)과 같은 자원이 제한된 하드웨어에서 구현이 실현 불가능(infeasible)할 수 있다. 결국, 낮은 하드웨어 비용(hardware cost)으로 신뢰성 있게 높은 압축률을 구현하는 경량 무손실 압축 기법(light-weight lossless compression technique)이 요구된다.
한편, 뉴럴 네트워크 데이터의 전체 압축률은 손실 변환(P) 및 무손실 압축(C)의 압축률(예: 전체 압축률 = P Х C)로 구성될 수 있다. 다만 이하에서는 압축률(compression rate)은 무손실 압축의 압축률인 것으로 전제하고 설명하도록 한다. 다만, 일 실시예에 따른 압축 방법은 이에 제한되지 않고, 다양한 손실 변환, 무손실 압축 및/또는 양자화 방법과 결합하여 전체 압축률을 증가시킬 수 있음은 물론이다.
예를 들어, 양자화(quantization)는 무손실 압축과 결합함으로써 전체 압축률을 향상시킬 수 있다. 양자화는 효과적으로 무작위적이고 엔트로피가 높은 뉴럴 네트워크 데이터들의 무의미한 정보를 감소시킬 수 있다. 따라서, 뉴럴 네트워크 데이터가 양자화된 뒤에는 양은 적지만 더 의미 있는 정보들이 남아서 압축률이 향상될 수 있다.
도 4는 일 실시예에 따른 뉴럴 네트워크 장치의 하드웨어 구성을 도시한 블록도이다.
도 4를 참고하면, 뉴럴 네트워크 장치(4)는 프로세서(410) 및 메모리(420)를 포함한다. 도 4에 도시된 뉴럴 네트워크 장치(4)에는 본 실시예들과 관련된 구성요소들만이 도시되어 있다. 따라서, 뉴럴 네트워크 장치(4)에는 도 4에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음은 통상의 기술자에게 자명하다.
뉴럴 네트워크 장치(4)는 뉴럴 네트워크를 생성하거나, 뉴럴 네트워크를 훈련(train)(또는 학습(learn))하거나, 뉴럴 네트워크 데이터의 통계적 특성을 분석하거나, 뉴럴 네트워크 데이터의 압축을 위한 프로파일을 결정하거나, 뉴럴 네트워크 데이터를 복수의 레인들로 분할하고 각 레인들을 별도로 압축하거나, 뉴럴 네트워크를 이용한 추론(inference)을 수행하거나, 또는 뉴럴 네트워크를 재훈련(retrain)하는 기능들과 같은 다양한 프로세싱 기능들을 갖는 컴퓨팅 디바이스에 해당된다. 예를 들어, 뉴럴 네트워크 장치(4)는 PC(personal computer), 서버 디바이스, 모바일 디바이스 등의 다양한 종류의 디바이스들로 구현될 수 있다.
뉴럴 네트워크 장치(4)는 뉴럴 네트워크가 채용될(deployed) 디바이스(예를 들어, 모바일 디바이스, 임베디드 디바이스 등)의 처리 성능을 고려하여, 뉴럴 네트워크 데이터의 압축을 위한 최적 구성(configuration)을 결정하고, 압축을 수행할 수 있다. 뉴럴 네트워크가 채용될 디바이스는, 구체적인 예시로 뉴럴 네트워크를 이용한 음성 인식, 영상 인식 등을 수행하는 자율주행 자동차, 로보틱스, 스마트폰, 태블릿 디바이스, AR(Augmented Reality) 디바이스, IoT(Internet of Things) 디바이스 등일 수 있으나, 이에 제한되지 않는다.
본 실시예에 따르면, 뉴럴 네트워크 장치(4) 외에 별도의 뉴럴 네트워크 장치들이 존재할 수도 있다. 뉴럴 네트워크 장치(4) 및 별도의 뉴럴 네트워크 장치들은 각각 뉴럴 네트워크 데이터의 압축을 위한 별개의 기능을 수행할 수 있다. 예를 들어, 뉴럴 네트워크 장치(4)는 뉴럴 네트워크 데이터의 압축을 위한 프로파일을 결정하고, 다른 뉴럴 네트워크 장치들은 프로파일을 이용하여 뉴럴 네트워크 데이터를 압축할 수 있다. 다만, 이하에서는 설명의 편의를 위해 하나의 뉴럴 네트워크 장치(4)가 모든 기능을 수행하는 것을 전제하여 설명하며, 후술할 도 5에서도 같다.
프로파일은 뉴럴 네트워크 데이터의 비트 표현(bit representation)을 가공하는 방식들에 관한 정보 및 가공된 비트 표현을 압축하는 복수의 압축 기법들에 관한 정보를 포함하는 정보의 세트를 의미한다.
프로세서(410)는 뉴럴 네트워크 데이터의 하나 이상의 비트 표현들을 획득하여, 복수의 후보 프로파일들을 생성하고, 후보 프로파일들 중 뉴럴 네트워크 데이터의 압축을 위한 최종 프로파일을 결정할 수 있다.
후보 프로파일들은 최종 프로파일을 선정하기 위한 후보로 생성되는, 서로 다른 조건을 가진 프로파일들을 의미할 수 있다.
최종 프로파일은 뉴럴 네트워크 장치(4)가 뉴럴 네트워크 데이터들을 압축하는 방식에 대한 최종적인 정보를 포함하는 프로파일을 의미할 수 있다.
프로세서(410)는 최종 프로파일에서 이용된 하나 이상의 레인들의 분할 방식 및 압축 기법들을 뉴럴 네트워크 데이터의 압축을 위한 최적 구성(configuration)으로 결정할 수 있다. 최적 구성(configuration)이 결정됨에 따라, 뉴럴 네트워크 데이터를 압축하는 최적의 방식이 결정될 수 있다.
프로세서(410)는 최적 구성에 따라, 뉴럴 네트워크 데이터를 하나 이상의 비트 세그먼트들로 분할하고, 각 비트 세그먼트를 최적의 압축 기법으로 압축할 수 있다. 뉴럴 네트워크 데이터를 복수의 비트 세그먼트로 분할함으로써, 각 비트 세그먼트의 통계적 특성이 노출될 수 있다. 프로세서(410)가 각 비트 세그먼트의 노출된 통계적 특성에 적합한 최적의 압축 기법을 적용함으로써, 압축률이 향상될 수 있다.
비트 세그먼트는 하나의 데이터 값을 여러 개의 비트들로 분할하였을 때, 각 데이터의 구간을 이루는 비트의 묶음을 의미할 수 있다.
여기서, 하나의 비트 세그먼트는 레인(lane)으로 지칭될 수 있다. 복수의 레인들에 각 레인에 적합한 압축 기법을 적용하여 압축하는 기법은 레인 압축(lane compression)으로 지칭될 수 있다.
프로세서(410)에 의해, 뉴럴 네트워크 데이터의 압축을 위한 최적 구성을 결정하는 방법 및 결정된 최적 구성에 따라 뉴럴 네트워크 데이터를 압축하는 구체적인 방법에 대해서는 이하의 관련된 도면에서 구체적으로 설명한다.
프로세서(410)는 뉴럴 네트워크 장치(4)를 제어하기 위한 전반적인 기능을 수행하는 역할을 한다. 예를 들어, 프로세서(410)는 뉴럴 네트워크 장치(4) 내의 메모리(420)에 저장된 프로그램들을 실행함으로써, 뉴럴 네트워크 장치(4)를 전반적으로 제어한다. 프로세서(410)는 뉴럴 네트워크 장치(4) 내에 구비된 CPU(central processing unit), GPU(graphics processing unit), AP(application processor) 등으로 구현될 수 있으나, 이에 제한되지 않는다.
메모리(420)는 뉴럴 네트워크 장치(4) 내에서 처리되는 각종 데이터들을 저장하는 하드웨어로서, 예를 들어, 메모리(420)는 뉴럴 네트워크 장치(4)에서 처리된 데이터들 및 처리될 데이터들을 저장할 수 있다. 또한, 메모리(420)는 뉴럴 네트워크 장치(4)에 의해 구동될 애플리케이션들, 드라이버들 등을 저장할 수 있다. 메모리(420)는 DRAM일 수 있으나, 이에 한정되는 것은 아니다. 메모리(420)는 휘발성 메모리(volatile memory) 또는 불휘발성 메모리(nonvolatile memory) 중 적어도 하나를 포함할 수 있다. 불휘발성 메모리는 ROM (Read Only Memory), PROM (Programmable ROM), EPROM (Electrically Programmable ROM), EEPROM (Electrically Erasable and Programmable ROM), 플래시 메모리, PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FRAM (Ferroelectric RAM) 등을 포함한다. 휘발성 메모리는 DRAM (Dynamic RAM), SRAM (Static RAM), SDRAM (Synchronous DRAM), PRAM (Phase-change RAM), MRAM (Magnetic RAM), RRAM (Resistive RAM), FeRAM (Ferroelectric RAM) 등을 포함한다. 실시예에 있어서, 메모리(1940)는 HDD(Hard Disk Drive), SSD(Solid State Drive), CF(compact flash), SD(secure digital), Micro-SD(micro secure digital), Mini-SD(mini secure digital), xD(extreme digital) 또는 Memory Stick 중 적어도 하나를 포함할 수 있다.
한편, 메모리(420)는 예를 들어, 뉴럴 네트워크 데이터를 저장할 수 있고, 또한 프로세서(410)에 의해 실행될 뉴럴 네트워크의 훈련 알고리즘, 압축 알고리즘, 프로파일링 알고리즘 등에 관련된 다양한 프로그램들을 저장할 수 있다.
프로파일링 알고리즘은 프로파일들을 이용하여 압축될 뉴럴 네트워크 데이터를 압축하는 방식을 도출해내는 알고리즘을 의미할 수 있다.
도 5는 다른 일 실시예에 따른 뉴럴 네트워크 장치의 하드웨어 구성을 도시한 블록도이다.
도 5를 참고하면, 뉴럴 네트워크 장치(5)는 뉴럴 프로세서(510), 메모리(520)를 포함한다. 뉴럴 프로세서(510)는 뉴럴 네트워크 프로세싱 유닛(512), 인코더(530) 및 디코더(540)를 더 포함할 수 있다. 뉴럴 네트워크 장치(5)의 뉴럴 프로세서(510) 및 메모리(520)는 도 4의 프로세서(410) 및 메모리(420)와 동일한 역할을 수행할 수 있다.
뉴럴 프로세서(510)는 앞서 설명된 뉴럴 네트워크를 구동하기 위한 연산들을 수행할 수 있다. 예를 들어, 연산들은 입력 데이터에 따라 추론(inference), 학습(training), 재학습(re-training)에 필요한 연산들일 수 있다. 뉴럴 프로세서(510)는 최적 구성을 이용하여 연산들에 이용되는 뉴럴 네트워크 데이터들을 압축하고, 최적 구성을 이용하여 뉴럴 네트워크의 압축된 데이터를 압축해제(decompress)할 수 있다.
뉴럴 네트워크 프로세싱 유닛(512)은 인코더(530) 및 디코더(540)를 제어할 수 있다. 예를 들어, 뉴럴 네트워크 프로세싱 유닛(512)은 인코더(530)가 뉴럴 네트워크 데이터를 압축하고, 디코더(540)가 압축된 뉴럴 네트워크 데이터를 압축해제하도록 제어할 수 있다.
인코더(530) 및 디코더(540)를 이용한 압축 및 압축해제에 대해서는 도 14 내지 도 19를 참고하여 구체적으로 설명한다.
한편, 도 5의 뉴럴 네트워크 장치(5)는 전술한 뉴럴 네트워크 장치(도 4의 4)이거나, 또는 뉴럴 네트워크 장치(4) 외의 별도의 뉴럴 네트워크 장치일 수 있다.
도 6은 일 실시예에 따른 압축 방법을 설명하기 위한 개념도이다. 도 6을 참조하면, 프로세서(도 4의 410)는 뉴럴 네트워크 데이터들을 압축하기 위하여, 프로파일링을 수행할 수 있다.
프로세서(410)는 메모리(도 4의 420)로부터 뉴럴 네트워크 데이터의 비트 표현(6)을 획득할 수 있다. 획득된 비트 표현(bit representation)(6)은 비트 스트림일 수 있다. 예를 들어, 뉴럴 네트워크 데이터는 뉴럴 네트워크(도2의 2)의 액티베이션, 웨이트 및 그래디언트 중 어느 하나를 포함할 수 있고, 프로세서(410)는 뉴럴 네트워크(도 2의 2)의 웨이트 데이터의 비트 스트림을 획득할 수 있다.
뉴럴 네트워크의 프로세싱에 이용되는 뉴럴 네트워크 데이터는 10개의 비트들(b0, b1, b2, b3, b4, b5, b6, b7, b8 및 b9)로 구성된 비트 스트림으로 표현될 수 있다. 여기서, 뉴럴 네트워크 데이터의 비트 표현(6)은 설명을 위해 10개의 비트로 구성된 비트 스트림으로 도시되었으나, 뉴럴 네트워크 데이터의 데이터 형식 및 비트 스트림을 구성하는 비트의 수는 이에 제한되지 않는다.
한편, 설명을 위해 하나의 비트 표현(6)만이 도시 되었으나, 프로세서(410)는 복수의 비트 표현들을 획득할 수 있다. 뉴럴 네트워크에는 이와 같은 비트 표현으로 정의된 데이터가 무수히 많이 존재할 수 있다. 프로세서(410)는 하나의 비트 표현을 획득하여 최종 프로파일을 결정할 수 있을 뿐만 아니라, 복수의 비트 표현들을 획득하여 최종 프로파일을 결정할 수 있다.
프로세서(410)는 획득된 데이터들의 하나 이상의 비트 표현들을 각각 하나 이상의 레인들로 구분하여, 각 레인들마다 압축 기법들을 적용함으로써, 복수의 후보 프로파일들을 생성할 수 있다.
예를 들어, 프로세서(410)는 비트 표현(6)을 하나 이상의 레인들(lanes)로 구분하여 각 레인들마다 압축 기법들을 적용함으로써, 후보 프로파일들(61, 62, 63 및 64)을 생성할 수 있다. 다만, 도 6에서는 설명의 편의를 위해 4개의 후보 프로파일들(61, 62, 63 및 64)만이 도시되어 있으나, 실제로 후보 프로파일들은 보다 다양한 개수들로 생성될 수 있다.
레인들(lanes)은 비트 스트림을 분할하여 생성되는 소정의 비트 폭을 갖는 비트 세그먼트들을 의미할 수 있다. 예를 들어, 프로파일 1(61)의 비트 표현(6)에서, Lane 0은 비트 폭이 2인 비트 세그먼트이고, Lane 1은 비트 폭이 3인 비트 세그먼트이고, Lane 2는 비트 폭이 4인 비트 세그먼트이고, Lane 3은 비트 폭이 1인 비트 세그먼트일 수 있다.
프로세서(410)는 비트 표현들에 대해, 하나 이상의 레인들로 분할하는 분할 방식들 및 압축 기법들 중 적어도 하나를 다르게 적용함으로써 후보 프로파일들(61, 62, 63, 및 64)을 생성할 수 있다.
후보 프로파일들(61, 62, 63, 및 64)은 비트 표현(6)을 분할 할 수 있는 모든 조합을 포함할 수 있다. 예를 들어, 후보 프로파일들(61, 62, 63, 및 64)은 비트 표현(6)을 복수의 비트 세그먼트들로 구분하기 위한 레인들의 개수 및 레인들 각각에 대응하는 비트 세그먼트의 비트 폭이 서로 다르게 설정된 프로파일들을 포함할 수 있다.
프로파일 1(61)은 레인들의 개수가 4이고, 레인들 각각에 대응하는 비트 폭은 2, 3, 4, 1이다. 프로파일 2(62)는 레인들의 개수가 3이고, 레인들 각각에 대응하는 비트 폭은 3, 1, 5이다. 프로파일 n-1(63)은 레인들의 개수가 5이고, 레인들 각각에 대응하는 비트 폭은 1, 3, 2, 3, 1이다. 프로파일 n(64)은 레인들의 개수가 3이고, 레인들 각각에 대응하는 비트 폭은 1, 3, 6이다. 도 6은 레인들의 개수와 레인들 각각에 대응하는 비트 폭 중 어느 하나가 서로 다른 프로파일들만이 도시되었다. 다만, 레인들의 개수와 레인들 각각에 대응하는 비트 폭은 동일하고, 압축 기법들이 다른 프로파일들도 포함할 수 있음은 물론이다.
후보 프로파일들(61, 62, 63, 및 64)은 어느 하나의 분할 방법으로 분할된 각 레인들에 복수의 압축 기법들을 할당할 수 있는 모든 조합을 포함할 수 있다.
예를 들어, 후보 프로파일들(61, 62, 63, 및 64)은 레인마다 독립적으로 압축 기법들이 적용될 수 있다. 프로파일 2(62)의 Lane 0은 Ca 압축 기법이 적용되고, Lane 1은 Cb 압축 기법이 적용되고, Lane 2는 다시 Ca 압축 기법이 적용될 수 있다. 레인마다 독립적으로 압축 기법들이 적용됨에 따라 서로 다른 레인에 동일한 압축 기법이 적용될 수도 있다.
예를 들어, 후보 프로파일들(61, 62, 63, 및 64)은 레인들마다 서로 다른 압축 기법들이 적용될 수 있다. 프로파일 n(64)은 복수의 압축기법들(Ca, Cb, Cc, Cd 및 none) 중 서로 다른 Ca, Cb 및 none이 각 레인별로 적용될 수 있다. none은 레인을 압축하지 않는 압축 기법을 의미할 수 있다.
후보 프로파일들(61, 62, 63, 및 64)은 서로 다른 알고리드믹 파라미터들(algorithmic parameters)을 갖는 압축 기법들이 적용된 프로파일들을 포함할 수 있다.
알고리드믹 파라미터는 특정 압축 기법을 사용할 때 이용되는 파라미터를 의미한다. 압축 기법들은 각각 대응되는 알고리드믹 파라미터를 가질 수 있고, 복수의 압축 기법들은 서로 다른 알고리드믹 파라미터들(algorithmic parameters)을 가질 수 있다. 예를 들어, 제로에 대한 런-렝스 압축(Z-RLC, Run-length coding on zeros)은 최대 시퀀스(Max sequence), 압축된 희소 열/행(CSC/CSR, Compressed sparse column/row)은 행렬의 사이즈(Size of matrix), 동적 정밀 축소(DPRed, Dynamic Precision Reduction)는 블록의 사이즈(Size of block)가 알고리드믹 파라미터일 수 있다.
다만, 어떤 압축 기법은 대응되는 알고리드믹 파라미터가 없을 수 있다. 예를 들어, 제로-값 압축(ZVC, Zero-value compression)은 대응하는 알고리드믹 파라미터가 없을 수 있다.
알고리드믹 파라미터의 값은 조정이 가능한 범위(range)를 가질 수 있다. 알고리드믹 파라미터의 값이 다르게 조정됨으로써, 압축 성능과 필요한 메모리 자원의 정도가 다를 수 있다. 예를 들어, 프로파일 2(62)를 참조하면, Lane 0와 Lane 2는 모두 압축 기법이 Ca가 적용되었으나, 각 알고리드믹 파라미터의 값은 Ca1과 Ca20으로 서로 다를 수 있다.
프로세서(410)는 생성된 후보 프로파일들(61, 62, 63, 및 64) 각각에 대한 압축 성능들을 비교함으로써, 최종 프로파일을 결정할 수 있다. 압축 성능들은 각 프로파일의 시간 복잡도, 필요한 메모리 공간의 크기, 압축률, 통계적 특성을 포함할 수 있으나, 이에 제한되는 것은 아니다.
예를 들어, 프로세서(410)는 후보 프로파일들(61, 62, 63, 및 64) 각각에 대응하는 압축률들을 계산하고, 계산된 압축률들 중 압축률이 가장 높은 후보 프로파일을 최종 프로파일로 결정할 수 있다. 프로세서(410)는 프로파일 1(61)이 40%의 압축률을 갖는 것으로 계산하고, 프로파일 2(62)가 20%의 압축률을 갖는 것으로 계산하고, 프로파일 n-1(63)이 10%의 압축률을 갖는 것으로 계산하고, 프로파일 n(64)이 50%의 압축률을 갖는 것으로 계산할 수 있다. 프로파일 2(62)와 프로파일 n-1(63) 사이의 프로파일들의 압축률이 50% 미만이라면, 프로파일 n(64)의 압축률이 후보 프로파일들 중 가장 높기 때문에, 프로파일 n(64)이 최종 프로파일로 결정될 수 있다.
도 7a 내지 도 7c는 일 실시예에 관한 액티베이션의 분할에 따른 통계적 분포를 설명하기 위한 그래프들이다.
도 7a 내지 도 7c를 참조하면, 후보 프로파일들(61, 62, 63, 및 64)은 레인들의 개수 및 비트 폭에 따라 레인들의 희소성(sparsity) 분포가 서로 다른 프로파일들을 포함할 수 있다. 다시 말해, 뉴럴 네트워크 데이터의 다른 부분이 다른 희소성(sparsity) 분포를 가질 수 있다. 제1 그래프(7a)는 레인이 하나일 경우의 희소성 분포를 보여준다. 제2 그래프(7b)는 레인이 세 개이고 각 비트 폭이 1, 2, 6인 경우의 희소성 분포를 보여주고, 제3 그래프(7c)는 레인이 네 개이고 각 비트 폭이 1, 2, 2, 4인 경우의 희소성 분포를 보여준다.
제2 그래프(7b)의 lane 0 및 lane 1을 제1 그래프(7a)의 lane 0과 비교했을 때, 제2 그래프(7b)의 lane 0 및 lane 1이 매우 희소한 경향이 있다는 것을 알 수 있다. 제3 그래프(7c)의 lane 2를 제1 그래프(7a)의 lane 0과 비교했을 때, 제3 그래프(7c)의 lane 2가 여전히 더 희소한 경향이 있다는 것을 알 수 있다. 즉, 분할되지 않은 제1 그래프(7a)의 lane 0의 최상위 비트(MSB, most significant bits)는 매우 희소한(sparse) 경향이 있고, 최하위 비트(LSB, least significant bits) 방향으로 진행할수록 희소성은 감소될 수 있다.
이처럼, 분할 방식에 따라 각 레인들은 희소성 분포가 서로 다를 수 있다. 높은 희소성을 가진 레인들은 희소성이 낮은 레인들에 비해 압축이 용이할 수 있으므로, 분할 방식에 따라 압축률이 상승할 수 있다.
후보 프로파일들(61, 62, 63, 및 64)은 레인들 중 최하위 비트(LSB)를 포함하는 레인을 압축하지 않는 압축 기법이 적용된 프로파일을 포함할 수 있다. 제2 그래프(7b)의 lane 2 및 제3 그래프(7c)의 lane 3 은 제1 그래프(7a)의 lane 0에 비해 낮은 희소성을 가질 수 있다. 낮은 희소성을 갖는 데이터는 압축률이 낮거나, 오히려 데이터의 용량이 더 커질 수 있다. 따라서, 높은 희소성을 갖는 레인들만을 압축하고, 낮은 희소성을 갖는 레인은 압축하지 않음으로써 오히려 압축률이 증가될 수 있다.
도 7d 내지 도 7f는 일 실시예에 관한 웨이트의 분할에 따른 통계적 분포를 설명하기 위한 도면이다.
도 7d 내지 도 7f를 참조하면, 뉴럴 네트워크 데이터의 종류가 웨이트인 경우에도, 도 7a 내지 도 7c와 유사한 희소성 분포의 경향을 갖는 것을 알 수 있다.
제4 그래프(7d)는 레인이 하나일 경우의 희소성 분포를 보여준다. 제5 그래프(7e)는 레인이 세 개이고 각 비트 폭이 1, 2, 7인 경우의 희소성 분포를 보여주고, 제6 그래프(7f)는 레인이 네 개이고 각 비트 폭이 1, 2, 3, 4인 경우의 희소성 분포를 보여준다.
제5 그래프(7e)의 lane 0 및 lane 1을 제4 그래프(7d)의 lane 0과 비교했을 때, 제5 그래프(7e)의 lane 0 및 lane 1이 매우 희소한 경향이 있다는 것을 알 수 있다. 제6 그래프(7f)의 lane 2를 제4 그래프(7d)의 lane 0과 비교했을 때, 제6 그래프(7f)의 lane 2가 여전히 더 희소한 경향이 있다는 것을 알 수 있다.
한편, 도 7d는 비트 스트림의 부호 비트(sign bit, b0)에 해당하는 최상위 비트(MSB)를 생략하지 않았고, 도 7a는 비트 스트림의 부호 비트(b0)를 생략한 바, 희소성 분포의 형태에 차이가 있을 수 있다. 예를 들어, 뉴럴 네트워크 데이터 값이 항상 양수이면 부호 비트가 생략될 수 있다.
도 8은 일 실시예에 따른 후보 프로파일 생성 알고리즘을 도시한 도면이다.
도 8을 참고하면, 도 6에서 설명한 후보 프로파일들을 생성하기 위해 후보 프로파일 생성 알고리즘(8)이 이용될 수 있다.
81 단계에서, 프로세서(도 4의 410)는 뉴럴 네트워크 데이터, 비트 표현들의 비트 폭, 압축 기법들 및 각 압축 기법들에 대응하는 알고리드믹 파라미터들을 획득한다.
82 단계에서, 프로세서(410)는 레인들의 개수 및/또는 레인들 각각의 비트폭이 다른 모든 분할 방식들을 생성한다.
83 단계에서, 프로세서(410)는 모든 분할 방식들에 대해 압축 기법 및/또는 알고리드믹 파라미터들이 다른 후보 프로파일들을 생성한다.
84 단계에서, 프로세서(410)는 후보 프로파일들의 생성 결과를 출력한다.
도 9는 일 실시예에 따른 최적 구성 결정 알고리즘을 도시한 도면이다.
도 9를 참고하면, 도 6에서 설명한 최종 프로파일 및 최적 구성을 결정하기 위해 최적 구성 결정 알고리즘(9)이 이용될 수 있다.
91 단계에서, 프로세서(도 4의 410)는 도 8에서 생성된 후보 프로파일들, 비트 표현들의 비트 폭, 압축 기법들, 심볼-기반의 압축 기법들, 각 압축 기법들에 대응하는 알고리드믹 파라미터들 및 하드웨어로 구현하는 경우의 제약사항들을 획득한다.
92 단계에서, 프로세서(도 4의 410)는 레인들의 개수 및/또는 레인들 각각의 비트 폭이 다른 모든 분할 방식들로 각 레인들을 분할하는 경우들의 집합을 획득한다.
93 단계에서, 프로세서(410)는 92 단계에서 획득된 모든 분할하는 경우들의 집합과 91 단계에서 획득된 제약사항들을 고려하여, 최종 프로파일 및 최적 구성을 결정한다.
94 단계에서, 프로세서(410)는 최적 구성을 출력한다.
도 10은 일 실시예에 따른 최적의 압축 기법과 알고리드믹 파라미터의 값을 결정하는 알고리즘을 도시한 도면이다.
도 10을 참고하면, 도 9의 93 단계에서 최종 프로파일을 결정할 때, 최적의 압축 기법 및 최적의 알고리드믹 파라미터의 값을 결정하는 알고리즘(10)이 이용될 수 있다.
100 단계에서, 프로세서(410)는 모든 압축 기법들이 가질 수 있는 모든 알고리드믹 파라미터의 값들에 대해 반복하여 압축 성능을 비교하여, 최적의 압축 기법 및 최적의 알고리드믹 파라미터의 값을 결정한다.
도 8 내지 도 10의 알고리즘들은 본 실시예에 따른 최적 구성을 결정하는 하나의 예시로서 설명된 것일 뿐, 최적 구성을 결정하는 알고리즘은 도 8 내지 도 10의 알고리즘으로 제한되지 않는다.
도 11은 일 실시예에 따른 비트 표현의 압축을 설명하기위한 도면이다.
도 11을 참고하면, 비트 폭이 10비트인 제1 비트 표현(110)은 도 6에서 상술한 최적 구성 결정 방법에 의해, 뉴럴 네트워크 데이터의 압축을 위한 최적 구성이 결정될 수 있다. 예를 들어, 최적 구성은 제1 비트 표현(110)을 최상위 비트(MSB, most significant bits)에서부터 순서대로 2,3,1 및 4의 비트 폭을 갖는 4개의 레인들(1100, 1102, 1104 및 1106)로 분할하고, 각 레인은 제1 압축 기법, 제2 압축 기법, 제1 압축 기법 및 제3 압축 기법으로 압축하는 것으로 결정될 수 있다.
프로세서(410 또는 510)는 비트 표현들(110 및 111)의 레인들(1100, 1102, 1104, 1106, 1110, 1112, 1114 및 1116)을 최적 구성을 이용하여 압축하고, 압축된 레인들(1130, 1132, 1134, 1136, 1140, 1142, 1144 및 1146)을 출력할 수 있다.
프로세서(410 또는 510)는 제1 비트 표현(110)의 분할된 레인들(1100, 1102, 1104 및 1106)을 최적 구성을 이용하여 압축하고, 압축된 레인들(1130, 1132, 1134 및 1136)을 출력할 수 있다. 예를 들어, 프로세서(410 또는 510)는 제1 비트 표현(110)의 제1 레인(1100)을 제1 압축 기법으로 압축하여 제1 압축된 레인(1130)을 출력할 수 있고, 제1 비트 표현(110)의 제2 레인(1102)을 제2 압축 기법으로 압축하여 제2 압축된 레인(1132)을 출력할 수 있고, 제1 비트 표현(110)의 제3 레인(1104)을 제1 압축 기법으로 압축하여 제3 압축된 레인(1134)을 출력할 수 있고, 제1 비트 표현(110)의 제4 레인(1106)을 제3 압축 기법으로 압축하여 제4 압축된 레인(1136)을 출력할 수 있다.
프로세서(410 또는 510)는 제2 비트 표현(111)의 분할된 레인들(1110, 1112, 1114 및 1116)을 최적 구성을 이용하여 압축하고, 압축된 레인들을 출력할 수 있다. 예를 들어, 프로세서(410 또는 510)는 제2 비트 표현(111)의 제1 레인(1110)을 제1 압축 기법으로 압축하여 제1 압축된 레인(1140)을 출력할 수 있고, 제2 비트 표현(111)의 제2 레인(1112)을 제2 압축 기법으로 압축하여 제2 압축된 레인(1142)을 출력할 수 있고, 제2 비트 표현(111)의 제3 레인(1114)을 제1 압축 기법으로 압축하여 제3 압축된 레인(1144)을 출력할 수 있고, 제2 비트 표현(111)의 제4 레인(1116)을 제3 압축 기법으로 압축하여 제4 압축된 레인(1146)을 출력할 수 있다.
제1 비트 표현(110)과 제2 비트 표현(111)은 같은 최적 구성으로 분할 및 압축되나, 각 비트 표현의 값은 서로 다를 수 있다. 각 비트 표현의 값에 따라 동일한 레인들(1110 및 1100)에 동일한 압축 기법(제1 압축 기법)이 적용되어도 압축된 레인들(1140 및 1130)의 값은 서로 다를 수 있다. 값이 서로 다른 압축된 레인들(1140 및 1130)은 비트 폭과 값이 모두 다를 수도 있고, 비트 폭은 동일하고 값이 다를 수도 있고, 값은 동일하고 비트 폭이 다를 수도 있다.
한편, 압축된 레인들(1130, 1132, 1134, 1136, 1140, 1142, 1144 및 1146)은 레인들(1100, 1102, 1104, 1106, 1110, 1112, 1114 및 1116)에 압축 기법을 사용하여 나온 출력을 의미할 뿐, 각 압축된 레인이 포함하는 정보의 형식에는 아무런 제한이 없다. 예를 들어, 압축된 레인은 압축에 이용된 압축 기법에 따라서, 아무 정보도 포함하지 않을 수 있고, 비트 폭이 늘어날 수도 있고, 비트 폭이 줄어들 수도 있고, 비트 폭이 그대로일 수 있고, 압축의 대상이 되는 레인의 값과 동일한 값을 포함할 수도 있다.
복수의 압축 기법들은 뉴럴 네트워크 데이터의 중복성(redundancy)을 감소시킴으로써, 뉴럴 네트워크 데이터를 압축할 수 있다. 뉴럴 네트워크 데이터는 중복되는 정보를 다수 포함할 수 있다. 복수의 압축 기법들은 뉴럴 네트워크 데이터에 포함되는 중복되는 정보들을 다양한 기법을 이용하여 압축함으로써 뉴럴 네트워크 데이터의 크기를 감소 시킬 수 있다.
복수의 압축 기법들은 각 압축 기법에 사용되는 압축 유닛(compression unit)이 다를 수 있다. 예를 들어, 각 압축 기법에 사용되는 압축 유닛은 심볼(symbol) 또는 심볼의 시퀀스(sequence of symbol)일 수 있다.
심볼은 압축 대상에 압축을 적용할 때 기준이 되는 하나의 단위를 의미한다. 예를 들어, 제1 압축 기법을 적용하는 제1 레인들(1100 및 1110)은 제1 레인들(1100 및 1110)의 비트 폭이 2인 비트 세그먼트를 심볼로 이용할 수 있고, 제2 압축 기법을 적용하는 제2 레인(1102 및 1112)은 비트 폭이 3인 비트 세그먼트를 심볼로 이용할 수 있다.
심볼의 시퀀스는 압축 대상에 압축을 적용할 때 기준이 되는 하나의 단위를 의미한다. 심볼의 시퀀스는 순차적인 여러 압축 프로세스에 걸쳐서 심볼들이 나열되어 있는 시퀀스를 의미할 수 있다. 여기서, 압축 프로세스는 압축 기법들이 하나의 비트 표현에 1회 적용되는 것을 의미할 수 있다. 예를 들어, 첫 번째 압축 프로세스에서 제1 비트 표현의 제1 레인(1100)이 입력되고, 두 번째 압축 프로세스에서 제2 비트 표현의 제1 레인(1110)이 입력되는 경우, 제1 압축 기법은 순차적인 제 1 레인들(1100 및 1110)을 심볼의 시퀀스로 이용할 수 있다.
복수의 압축 기법들은 각 압축 기법에 사용되는 압축 유닛에 따라 별도로 지칭될 수 있다. 심볼을 사용하는 압축 기법은 심볼 기반 압축 기법(symbol-based compression technique)으로, 심볼의 시퀀스를 사용하는 압축 기법은 시퀀스 기반 압축 기법(sequence-based compression technique)으로 지칭될 수 있다.
본 실시예에 따르면, 입력되는 뉴럴 네트워크 데이터의 특성에 관계 없이, 심볼 기반 압축 기법 및/또는 시퀀스 기반 압축 기법이 사용될 수 있다. 뉴럴 네트워크 데이터의 비트 표현을 레인들로 분할하고 각 레인들의 특성에 적합한 심볼 기반 압축 기법 및/또는 시퀀스 기반 압축 기법을 사용함으로써 최적의 압축률을 달성할 수 있다.
압축 기법들은 각각 대응되는 알고리드믹 파라미터를 가질 수 있고, 복수의 압축 기법들은 서로 다른 알고리드믹 파라미터들(algorithmic parameters)을 가질 수 있다. 예를 들어, 제로에 대한 런-렝스 압축(Z-RLC, Run-length coding on zeros)은 최대 시퀀스(Max sequence), 압축된 희소 열/행(CSC/CSR, Compressed sparse column/row)은 행렬의 사이즈(Size of matrix), 동적 정밀 축소(DPRed, Dynamic Precision Reduction)는 블록의 사이즈(Size of block)가 알고리드믹 파라미터일 수 있다. 다만, 어떤 압축 기법은 대응되는 알고리드믹 파라미터가 없을 수 있다. 예를 들어, 제로-값 압축(ZVC, Zero-value compression)은 대응하는 알고리드믹 파라미터가 없을 수 있다.
프로세서(410 또는 510)는 압축된 레인들(1130,1132,1134 및 1136)을 결합(concatenate)하고, 압축된 비트 표현(113)을 출력할 수 있다. 예를 들어, 프로세서(410 또는 510)는 압축된 비트 표현들(113 및 114)을 출력할 수 있다.
한편, 압축된 비트 표현들(113 및 114)은 각 압축된 레인들(1130, 1132, 1134, 1136, 1140, 1142, 1144 및 1146)이 레인들(1100, 1102, 1104 및 1106)의 순서대로 결합된 것으로 도시되었으나, 각 압축된 레인들(1130,1132, 1134, 1136, 1140, 1142, 1144 및 1146)을 결합하는 순서에는 제한이 없다. 다만, 이하에서는 설명을 위해 압축된 레인들이 레인들의 순서대로 결합된 것으로 전제하여 설명한다.
도 12는 일 실시예에 따른 복수의 압축 기법들을 설명하기 위한 표이다.
도 12를 참고하면, 복수의 압축 기법들은 None, ZVC, RLC(Run Length coding), Z-RLC 및 DPRed를 포함할 수 있다.
None은 도 6에서 전술한 것처럼, 레인을 압축하지 않는 압축 기법을 의미할 수 있다. 레인을 압축하지 않음에 따라, 압축된 레인은 레인과 동일한 값을 가질 수 있다.
ZVC는 대응하는 알고리드믹 파라미터가 없을 수 있고, 알고리드믹 파라미터의 값의 범위도 없을 수 있다.
RLC에 대응하는 알고리드믹 파라미터는 최대 시퀀스(2p) 일수 있고, 알고리드믹 파라미터의 값의 범위는 1
Figure pat00009
32일 수 있다.
Z-RLC에 대응하는 알고리드믹 파라미터는 최대 시퀀스(2p) 일수 있고, 알고리드믹 파라미터의 범위는 1
Figure pat00010
32일 수 있다.
프로세서(410 또는 510)는 레인을 DPRed로 압축할 경우, 최상위 비트(MSB)에 하나의 비트를 추가하여 압축할 수 있다. 최상위 비트(MSB)에 하나의 비트를 추가하는 DPRed는 S-DPRed(Sparse-DPRed)로 지칭될 수 있다. 추가된 하나의 비트는 압축 대상의 블록에 전부 0이 할당되어 있는지 여부를 표시할 수 있다. 전부 0이 할당되어 있는지 여부를 표시할 수 있게 됨에 따라, 희소 데이터(sparse data)의 압축률이 향상될 수 있다.
프로세서(410 또는 510)는 레인을 DPRed로 압축할 경우, zero-bit mask를 제거할 수 있다. zero-bit mask를 제거한 DPRed는 D-DPRed(Dense DPRed)로 지칭될 수 있다. zero-bit mask를 제거함에 따라, 밀집 데이터(dense data)의 압축률이 향상될 수 있다.
D-DPRed 및 S-DPRed에 대응하는 알고리드믹 파라미터는 블록 사이즈(p)일 수 있고, 알고리드믹 파라미터의 범위는 1
Figure pat00011
8일 수 있다.
도 13은 일 실시예에 따른 최적 구성에 따라 압축하는 방법을 설명하기 위한 도면이다.
도 13을 참고하면, 프로세서(410 또는 510)는 최적 구성을 레인의 수는 4개, 각 레인들(lane0, lane1, lane2, lane3)의 비트 폭은 각각 2 비트, 1 비트, 3 비트 및 4비트, 각 레인들에 적용되는 압축 기법은 Z-RLC, Z-RLC, D-DPRed 및 None, 각 레인들에 적용되는 알고리드믹 파라미터의 값은 212, 29 및 3으로 결정할 수 있다.
한편, 뉴럴 네트워크 장치(5)는 위와 같은 프로파일링을 통해 미리 결정된 최적 구성을 기초로 뉴럴 네트워크 데이터를 압축(compress)하거나 압축해제(decompress)할 수 있다. 이하, 도 14 내지 도 16을 참고하여, 뉴럴 네트워크 데이터를 압축하거나 압축해제하는 방법에 대해서 설명한다.
도 14는 일 실시예에 따른 인코더를 설명하기 위한 도면이다.
도 14를 참고하면, 인코더(140)는 제1 분할부(splitter)(142), 복수의 압축부들(144a, 144b 및 144c) 및 제1 결합부(concatenator)(146)를 포함할 수 있다. 인코더(140)는 도 5에서 설명된 인코더(514)에 대응하는 구성요소일 수 있다.
인코더(140)는 미리 결정된 최적 구성에 기초하여 뉴럴 네트워크 데이터들을 복수의 레인들로 분할하고, 분할된 레인들 각각을 최적 구성을 이용하여 압축할 수 있다.
제1 분할부(142)는 뉴럴 네트워크 데이터들을 하나 이상의 레인들(lanes)로 구분하여 각 레인들마다 설정된 압축 기법들(compression technique)을 정의한 최종 프로파일에 의해 미리 결정된 최적 구성(configuration)을 획득할 수 있다. 예를 들어, 최적 구성은 메모리(도 5의 520)로부터 제1 분할부(142)가 획득할 수 있고, 메모리(520)로부터 뉴럴 네트워크 프로세싱 유닛(도 5의 512)을 경유하여 획득할 수 있고, 최적 구성을 기초로 뉴럴 네트워크 프로세싱 유닛(도 5의 512)이 생성한 제어 신호를 획득할 수도 있다.
한편, 제1 분할부(142)가 최적 구성을 획득하는 방법은 상술한 방법에 제한되지 않는다.
제1 분할부(142)는 뉴럴 네트워크의 프로세싱을 위하여 이용되는 데이터들의 비트 표현들을 획득하고, 최적 구성을 이용하여 비트 표현들을 하나 이상의 레인들로 분할할 수 있다.
제1 분할부(142)는 비트 표현들로부터 복수의 압축부들(144a, 144b 및 144c)에서 사용되는 압축 기법들에 필요한 정보를 추출할 수 있다. 추출된 정보는 그 정보가 필요한 압축부들(144a, 144b 및 144c)에게 전달될 수 있다. 예를 들어, 제1 분할부(142)는 Null suppression(NS) 기법에 필요한 선행 제로 비트들(leading zero bits)을 추출할 수 있다.
복수의 압축부들(144a, 144b 및 144c)은 분할된 레인들 각각을 최적 구성을 이용하여 압축하고, 압축된 레인들을 출력할 수 있다. 예를 들어, 복수의 압축부들(144a, 144b 및 144c)은 각 압축부마다 최적 구성에서 각 레인별로 적용된 압축 기법으로 분할된 레인들을 압축하고, 압축된 레인들을 출력할 수 있다. 한편, 도 14에서는 설명의 편의를 위해 3개의 압축부들(144a, 144b 및 144c)만이 도시되어 있으나, 인코더(140) 내에는 N개(N은 자연수)의 압축부들이 포함될 수 있다.
복수의 압축부들(144a, 144b 및 144c)은 각 압축부마다 복수의 압축 기법들을 수행할 수 있다. 각 압축부가 복수의 압축 기법들을 수행함에 따라, 각 압축부는 최적 구성이 변경되는 경우에도 적절한 압축 기법을 수행할 수 있다.
복수의 압축부들(144a, 144b 및 144c)은 최적 구성에 따라 각각 분할된 레인들과 일대일로 매칭될 수 있다. 예를 들어, 제1 압축부(144a)는 Lane 1과 일대일로 매칭되며 제1 압축 기법을 수행하고, 제2 압축부(144b)는 Lane 2와 일대일로 매칭되고 제2 압축 기법을 수행할 수 있다.
제1 결합부(146)는 압축된 레인들을 결합(concatenate)하고, 압축된 비트 표현들을 출력할 수 있다. 제1 결합부(146)는 압축된 레인들을 결합할 수 있다. 제1 결합부(146)에 의해 결합된, 압축된 레인들은 결합 레인으로 지칭될 수 있다. 제1 결합부(146)는 결합 레인에 기초하여 압축된 비트 표현(148)을 생성하고, 압축된 비트 표현을 출력할 수 있다.
제1 결합부(146)는 복수의 압축부들(144a, 144b 및 144c)에서 출력된, 압축된 레인들을 동기화(synchronise)하기 위한 스탑 코드(stop code)를 삽입할 수 있다. 예를 들어, 제1 결합부(146)는 결합 레인들에 스탑 코드(stop code)를 삽입할 수 있다. 복수의 압축부들(144a, 144b 및 144c) 중 하나의 압축부(144a)에 순차적으로 입력된 레인들이 소정의 횟수 이상 압축부(144a)를 통해 출력되지 않을 수 있다. 제1 결합부(146)는 하나의 압축부(144a)에서 다시 압축된 레인을 출력하면, 하나의 압축부(144a)가 출력한 압축된 레인을 포함하는 결합 레인에 스탑 코드를 삽입할 수 있다.
제1 결합부(146)는 스탑 코드의 삽입 여부를 검사하고, 검사 결과에 따라 스탑 코드의 삽입 여부를 나타내는 비트 값을 삽입할 수 있다. 압축된 비트 표현(148)은 스탑 코드가 삽입되지 않았음에도, 스탑 코드와 동일한 형식의 코드를 포함할 수 있다. 이 경우, 디코더(도 5의 516)에서의 모호성(ambiguity)이 문제가 될 수 있다. 스탑 코드의 삽입 여부를 나타내는 비트 값을 결합 레인에 삽입함에 따라, 디코더(516)는 제1 결합부(146)에 의해 삽입된 스탑 코드를 구분할 수 있다.
예를 들어, 제1 결합부(146)는 결합 레인에 스탑 코드가 삽입되었는지 여부를 검사할 수 있다. 제1 결합부(146)는 스탑 코드가 결합 레인에 삽입된 것으로 검사된 경우, 스탑 코드가 결합 레인에 삽입된 것임을 나타내는 비트 값을 추가할 수 있다. 제1 결합부(146)는 결합 레인에 스탑 코드가 삽입되지 않은 것으로 검사된 경우, 스탑 코드가 삽입된 것이 아님을 나타내는 비트 값을 추가할 수 있다.
제1 결합부(146)는 결합 레인에 스탑 코드 및 스탑 코드의 삽입 여부를 나타내는 비트 값을 삽입하여 압축된 비트 표현(148)을 생성할 수 있다.
도 15는 일 실시예에 따른 스탑 코드 삽입 알고리즘을 설명하기 위한 도면이다.
도 15를 참고하면, 도 14에서 설명한 스탑 코드 및 스탑 코드의 삽입 여부를 나타내는 비트 값을 결합 레인에 삽입하기 위해 스탑 코드 삽입 알고리즘(15)이 이용될 수 있다.
151 단계에서, 제1 결합부(146)는 스탑 코드가 필요한 상황에 결합 레인에 스탑 코드와 스탑 코드가 결합 레인에 삽입된 것임을 나타내는 비트 값을 추가한다.
152 단계에서, 제1 결합부(146)는 결합 레인에 스탑 코드가 삽입된 것이 아님을 나타내는 비트 값을 추가한다.
예를 들어, 스탑 코드는 비트 폭이 C일 수 있고, 하나의 비트 값 '1'에 이어서 C-1개의 비트 값 '0'이 선택될 수 있고, 결합 레인에 스탑 코드가 삽입된 것임을 나타내는 비트 값은 하나의 비트 값 '0', 삽입된 것이 아님을 나타내는 비트 값은 하나의 비트 값 '1'일 수 있다. 스탑 코드의 폭 및 스탑 코드의 삽입 여부를 나타내는 비트 값은 오로지 예시를 위한 것일 뿐, 상술한 내용으로 제한되지 않는다.
도 16은 일 실시예에 따른 인코더의 압축을 설명하기 위한 도면이다.
도 16을 참고하면, 표(16)는 5비트의 비트 표현들이 인코더(140)에 입력된 경우, 순차적인 각 압축 프로세스에서 인코더(140)가 압축된 비트 표현(Output)을 출력하는 모습을 도시한다. 여기서, 스탑 코드는 '10'이고, 2비트의 Lane 1은 ZVC로 압축되고, 3비트의 Lane 2는 Max seq가 22인 Z-RLC로 압축된다. 한편, 설명의 편의를 위해, Lane 1은 제1 압축부(도 14의 144a)에서 압축되고 Lane 2는 제2 압축부(도 14의 144b)에서 압축되는 것을 전제하여 설명한다.
제1 압축 프로세스(160)에서, Lane 1에 대응하는 압축부(144a)는 '0'의 압축된 레인을 출력하고, Lane 2에 대응하는 압축부(144b)는 '00011'의 압축된 레인을 출력한다. 제1 결합부(146)는 압축된 레인들을 결합하여 '000011'의 압축된 비트 표현을 출력한다.
제2 압축 프로세스 내지 제5 압축 프로세스(161, 162, 163 및 164)에서, Lane 2에 대응하는 압축부(144b)는 압축된 레인을 출력하지 않는다. 제6 압축 프로세스(165)에서, Lane 2에 대응하는 압축부(144b)가 압축된 레인을 다시 출력하고, 제1 결합부(146)는 스탑 코드 '10' 및 스탑 코드가 삽입된 것임을 나타내는 비트 값 '0'을 결합 레인 '0001'에 삽입하여 '1000001'의 압축된 비트 표현을 출력한다.
제2 압축 프로세스(161)에서, Lane 1에 대응하는 압축부(144a)는 '101'의 압축된 레인을 출력하고, Lane 2에 대응하는 압축부(144b)는 압축된 레인을 출력하지 않는다. 여기서 '101'의 압축된 레인은 삽입된 적이 없는 스탑 코드를 포함하고 있다. 따라서, 제1 결합부(146)는 스탑 코드가 삽입된 것이 아님을 나타내는 비트 값 '1'을 결합 레인 '101'에 삽입하여 '1011'의 압축된 비트 표현을 출력한다.
도 17은 다른 일 실시예에 따른 인코더를 설명하기 위한 블록도이다.
도 17을 참고하면, 제1 분할부(142)는 NS 로직(NS logic), 버퍼를 더 포함할 수 있다. NS 로직은 Null Suppression(NS) 기법에 필요한 선행 제로 비트들(leading zero bits)을 추출하여 복수의 압축부들(144a, 144b 및 144c)에 전달할 수 있다. 제1 분할부(142)에 입력되는 비트 표현들은 버퍼를 통해 버퍼링될 수 있다.
제1 결합부(146)는 Mux와 스탑 코드 삽입부(stop code inserter)를 더 포함할 수 있다. Mux는 압축된 레인들을 결합할 수 있고, 스탑 코드 삽입부는 스탑 코드를 결합 레인에 삽입할 수 있다.
도 18은 일 실시예에 따른 디코더를 설명하기 위한 도면이다.
도 18을 참고하면, 디코더(도 5의 516 및 180)는 제2 분할부(182), 복수의 압축해제부들(decompressors)(184a, 184b 및 184c) 및 제2 결합부(186)를 포함할 수 있다.
디코더(180)는 미리 결정된 최적 구성에 기초하여 뉴럴 네트워크의 압축된 데이터들을 복수의 압축된 레인들로 분할하고, 각 압축된 레인들마다 압축해제 기법들을 수행하여 뉴럴 네트워크 데이터들을 압축해제할 수 있다. 여기서, 압축된 데이터들은 도 14 내지 도 17에서 설명된 인코더(140)에 의해 압축된 데이터를 의미 할 수 있고, 복수의 압축해제 기법은 도 14 내지 도 17에서 설명된 압축 기법으로 압축된 데이터를 압축해제하는 기법을 의미할 수 있다.
디코더(180)는 도 14 내지 도 17에서 설명된 압축 방법을 역으로 적용하여 압축을 해제하는 기능을 수행할 수 있다.
제2 분할부(182)는, 뉴럴 네트워크 데이터들을 하나 이상의 레인들(lanes)로 구분하여 각 레인들마다 압축 기법들(compression technique)을 수행하기 위해 미리 결정된 최적 구성(configuration)을 획득할 수 있다.
제2 분할부(182)는 뉴럴 네트워크의 압축된 데이터의 압축된 비트 표현(148)을 획득하고, 압축된 비트 표현(148)을 획득된 최적 구성에 기초하여 하나 이상의 압축된 레인들로 분할할 수 있다. 예를 들어, 제2 분할부(182)는 최적 구성에 기초하여 압축된 비트 표현(148)을 구성하는 압축된 레인들의 비트 폭들을 예측(predict)하고, 예측된 비트 폭들에 기초하여 압축된 비트 표현(148)을 하나 이상의 압축된 레인들로 분할할 수 있다.
제2 분할부(182)가 획득한 최적 구성은 인코더(도 14의 140)에서 사용된 최적 구성과 동일한 최적 구성일 수 있다. 따라서, 제2 분할부(182)는 압축된 비트 표현(148)을 구성하는 압축된 레인들이 인코더(140)에서 압축된 방식에 대한 정보들을 기초로, 압축된 비트 표현(148)을 구성하는 압축된 레인들의 비트 폭들을 예측할 수 있다.
예를 들어, 다시 도 16을 참조하면, Lane 1은 2 비트의 비트 폭을 가진 레인이고, Lane 1에는 ZVC가 적용되며, Lane 1에 대응하는 압축된 레인들은 1비트 제로-값(zero-value) 또는 3비트 논-제로 값(non-zero value)임을 알 수 있다. Lane 2는 3 비트의 비트 폭을 가진 레인이고, Lane 1에는 Z-RLC가 적용되며, Lane 1에 대응하는 압축된 레인들은 3비트 또는 5비트임을 알 수 있다. 다시 말해, 제2 분할부(182)는 최적 구성에 따라 각 레인이 압축됐을 때, 각 압축된 데이터가 가질 수 있는 비트 폭의 경우의 수를 미리 알 수 있다. 제2 분할부(182)는 각 압축된 데이터가 가질 수 있는 비트 폭의 경우의 수를 기초로 압축된 비트 표현(148)을 구성하는 압축된 레인들의 비트 폭들을 예측하여 압축된 비트 표현(148)을 하나 이상의 압축된 레인들로 분할할 수 있다.
한편, 제2 분할부(182)가 압축된 비트 표현(148)을 구성하는 압축된 레인들의 비트 폭들을 예측하는 방법은 상술한 내용에 한정되지 않는다. 제2 분할부(182)는 압축된 비트 표현(148)들을 구성하는 압축된 레인들의 결합 순서, 압축된 비트 표현(148)에 포함된 스탑 코드 및 zero-test를 이용한 연산 중 적어도 하나에 기초하여 압축된 레인들의 비트 폭들을 예측할 수 있다.
다시 도 18을 참조하면, 제2 분할부(182)는 압축된 비트 표현(148)에 포함된 스탑 코드(stop code)를 검사할 수 있다. 제2 분할부(182)는 스탑 코드의 삽입 여부를 나타내는 비트 값을 검사하고, 검사 결과에 따라 스탑 코드를 삭제할 수 있다.
예를 들어, 제2 분할부(182)는 스탑 코드가 삽입된 것으로 검사된 경우, 스탑 코드 및 스탑 코드가 삽입된 것임을 나타내는 비트 값을 삭제하고, 스탑 코드가 삽입되지 않은 것으로 검사된 경우, 스탑 코드가 삽입된 것이 아님을 나타내는 비트 값만을 삭제할 수 있다.
제2 분할부(182)는 분할된 압축된 레인들을 압축해제부들(184a, 184b 및 184c)에 전달할 수 있다. 예를 들어, 제2 분할부(182)는 각 압축된 레인을 각 압축된 레인에 대응하는 압축해제 기법을 수행하는 압축해제부(184a)에 전달할 수 있다.
복수의 압축해제부들(184a, 184b 및 184c)은 최적 구성에 따라 각각 압축된 레인들과 일대일로 매칭될 수 있다. 예를 들어, 제1 압축해제부(184a)는 Lane 1이 압축된 레인과 일대일로 매칭되며 제1 압축해제 기법을 수행하고, 제2 압축해제부(184b)는 Lane 2가 압축된 레인과 일대일로 매칭되고 제2 압축해제 기법을 수행할 수 있다.
복수의 압축해제부들(184a, 184b 및 184c)은 분할된 압축된 레인들 각각을 최적 구성에 기초하여 압축해제(decompress)하고, 압축해제된 레인들을 출력할 수 있다. 압축해제된 레인들은 도 14에서 앞서 설명한 제1 분할부(142)에 의해 분할된 하나 이상의 레인들과 동일할 수 있다.
제2 결합부(186)는 압축해제된 레인들을 결합하고, 압축해제된 비트 표현들을 출력할 수 있다. 압축해제된 비트 표현들은 도 14에서 앞서 설명한 제1 분할부(142)에 의해 획득된 비트 표현들과 동일할 수 있다.
도 19는 다른 일 실시예에 따른 디코더를 설명하기 위한 블록도이다.
도 19를 참고하면, 제2 분할부(182)는 버퍼, 스탑 코드 검출부(stop code detector) 및 복수의 선택부들(selector: sel 1, sel 2 및 sel N)을 더 포함할 수 있다. 스탑 코드 검출부는 압축된 비트 표현(148)에 포함된 스탑 코드를 검출할 수 있다. 복수의 선택부들(sel 1, sel 2 및 sel N)은 순차적으로 각 압축된 레인들의 비트 폭을 예측하여 복수의 압축된 레인들로 분할할 수 있다. 제2 결합부(186)는 재결합부(Recombiner) 및 버퍼를 더 포함할 수 있다.
도 20은 일 실시예에 따른 뉴럴 네트워크 데이터들의 통계적 특성을 설명하기위한 표이다.
도 20을 참조하면, 표(20)는 7개의 각기 다른 뉴럴 네트워크들(LeNet-5, CifarNet1, ResNet-18, SqueezeNet, MobileNet, AlexNet, 및 LSTM network)의 모든 레이어들{convolutional layers, fully connected layers, 액티베이션 함수, 정규화(normalisation) 및 풀링(polling)을 위한 보조 레이어}로부터 뉴럴 네트워크 데이터들{추론(inference)을 위한 액티베이션 및 웨이트, 재훈련(re-train)을 위한 액티베이션, 웨이트 및 그래디언트(gradient)}의 통계적 특성을 분석한 결과를 나타낸다.
다양한 뉴럴 네트워크들은 공통적으로 높은 희소성을 가진다. 뉴럴 네트워크 데이터의 압축에 이용되는 중복성(redundancy)은 값과 비트의 희소성(sparsity)일 수 있다. 값의 희소성(value sparsity)은 데이터 집합에서 영-값 기호(zero-value symbol)의 비율, 비트의 희소성(bit sparsity)은 이진 표현에서 0비트(zero-bit)의 비율을 의미할 수 있다.
표(20)를 참고하면, 많은 뉴럴 네트워크 데이터 소스들이 높은 값-레벨(value-level)의 희소성(sparsity)을 가지고 있을 뿐만 아니라, 낮은 값 레벨의 희소성을 가진 뉴럴 네트워크 데이터도 높은 비트 레벨(bit-level)의 희소성을 가지고 있다. 예를 들어, LeNet-5의 추론을 위한 웨이트는 3.23%의 낮은 값 레벨의 희소성을 가지나, 64.32%의 높은 비트 레벨의 희소성을 가진다.
이처럼, 각기 다른 뉴럴 네트워크 데이터를 비트 세그먼트 또는 레인으로 분할함으로써 숨겨진 비트 레벨 희소성이 모두 노출될 수 있다.
따라서, 본 실시예에 따른 압축 방법은 뉴럴 네트워크의 종류, 레이어 유형, 학습 모델, 입력 데이터 유형에 관계없이 다양한 뉴럴 네트워크 데이터에 범용적으로 적용될 수 있다.
도 21은 일 실시예에 따른 압축률을 비교하기 위한 그래프이다.
도 21을 참고하면, 본 실시예에 따른 압축 방법에 의해 압축된 네트워크, 데이터 소스 및 입력 데이터 세트의 압축률을 섀넌 한계(Shannon limit)와 비교할 수 있다. 그래프(21)에 도시된 각 막대는 각 네트워크, 데이터 소스 및 입력 데이터 세트 압축률의 평균을 의미하고, 오차 막대는 최소값과 최대값을 표시한다. 그래프(21)를 참고하면 본 실시예에 따른 압축 방법을 이용하여 다양한 데이터들을 섀넌 한계에 가깝게 압축할 수 있음을 알 수 있다.
도 22는 일 실시예에 따른 전자 시스템의 구성을 나타내는 블록도이다.
도 22를 참고하면, 전자 시스템(2200)은 뉴럴 네트워크를 기초로 입력 데이터를 실시간으로 분석하여 유효한 정보를 추출하고, 추출된 정보를 기초로 상황 판단을 하거나 또는 전자 시스템(2200)이 탑재되는 전자 디바이스의 구성들을 제어할 수 있다. 예컨대 전자 시스템(2200)은 드론(drone), 첨단 운전자 보조 시스템(Advanced Drivers Assistance System; ADAS) 등과 같은 로봇 장치, 스마트 TV, 스마트폰, 의료 디바이스, 모바일 디바이스, 영상 표시 디바이스, 계측 디바이스, IoT 디바이스 등에 적용될 수 있으며, 이 외에도 다양한 종류의 전자 디바이스들 중 적어도 하나에 탑재될 수 있다.
전자 시스템(2200)은 프로세서(2210), RAM(2220), 뉴럴 네트워크 장치(2230), 메모리(2240), 센서 모듈(2250) 및 통신 모듈(2260)을 포함할 수 있다. 전자 시스템(2200)은 입출력 모듈, 보안 모듈, 전력 제어 장치 등을 더 포함할 수 있다. 전자 시스템(2200)의 하드웨어 구성들 중 일부는 적어도 하나의 반도체 칩에 탑재될 수 있다.
프로세서(2210)는 전자 시스템(2200)의 전반적인 동작을 제어한다. 프로세서(2210)는 하나의 프로세서 코어(Single Core)를 포함하거나, 복수의 프로세서 코어들(Multi-Core)을 포함할 수 있다. 프로세서(2210)는 메모리(2240)에 저장된 프로그램들 및/또는 데이터를 처리 또는 실행할 수 있다. 일부 실시예에 있어서, 프로세서(2210)는 메모리(2240)에 저장된 프로그램들을 실행함으로써, 뉴럴 네트워크 장치(2230)의 기능을 제어할 수 있다. 프로세서(2210)는 CPU, GPU, AP 등으로 구현될 수 있다.
RAM(2220)은 프로그램들, 데이터, 또는 명령들(instructions)을 일시적으로 저장할 수 있다. 예컨대 메모리(2240)에 저장된 프로그램들 및/또는 데이터는 프로세서(2210)의 제어 또는 부팅 코드에 따라 RAM(2220)에 일시적으로 저장될 수 있다. RAM(2220)은 DRAM(Dynamic RAM) 또는 SRAM(Static RAM) 등의 메모리로 구현될 수 있다.
뉴럴 네트워크 장치(2230)는 수신되는 입력 데이터를 기초로 뉴럴 네트워크의 연산을 수행하고, 수행 결과를 기초로 정보 신호를 생성할 수 있다. 뉴럴 네트워크는 CNN, RNN, FNN, Deep Belief Networks, Restricted Boltzman Machines 등을 포함할 수 있으나 이에 제한되지 않는다. 뉴럴 네트워크 장치(2230)는 뉴럴 네트워크 전용 하드웨어 가속기 자체 또는 이를 포함하는 장치일 수 있다. 뉴럴 네트워크 장치(2230)는 뉴럴 네트워크의 연산뿐만이 아니라 독출 또는 기입하는 동작을 수행할 수 있다.
뉴럴 네트워크 장치(2230)는 수신되는 입력 데이터를 기초로 뉴럴 네트워크의 연산을 수행하고, 수행 결과를 기초로 정보 신호를 생성할 수 있다. 뉴럴 네트워크는 Convolutional Neural Networks(CNN), Recurrent Neural Networks(RNN), Deep Belief Networks, Restricted Boltzman Machines 등을 포함할 수 있으나 이에 제한되지 않는다. 뉴럴 네트워크 장치(2230)는 앞서 설명된 뉴럴 네트워크 데이터를 처리하는 역할을 수행하는 하드웨어로서, 앞서 설명된 뉴럴 네트워크 전용 하드웨어 가속기에 해당될 수 있다. 정보 신호는 음성 인식 신호, 사물 인식 신호, 영상 인식 신호, 생체 정보 인식 신호 등과 같은 다양한 종류의 인식 신호 중 하나를 포함할 수 있다. 예를 들어, 뉴럴 네트워크 장치(2230)는 비디오 스트림에 포함되는 프레임 데이터를 입력 데이터로서 수신하고, 프레임 데이터로부터 프레임 데이터가 나타내는 이미지에 포함된 사물에 대한 인식 신호를 생성할 수 있다. 그러나, 이에 제한되는 것은 아니며, 전자 시스템(2200)이 탑재된 전자 장치의 종류 또는 기능에 따라 뉴럴 네트워크 장치(2230)는 다양한 종류의 입력 데이터를 수신할 수 있고, 입력 데이터에 따른 인식 신호를 생성할 수 있다.
메모리(2240)는 데이터를 저장하기 위한 저장 장소로서, OS(Operating System), 각종 프로그램들, 및 각종 데이터를 저장할 수 있다. 실시예에 있어서, 메모리(2240)는 뉴럴 네트워크 장치(2230)의 연산 수행 과정에서 생성되는 중간 결과들을 저장할 수 있다.
메모리(2240)는 DRAM일 수 있으나, 이에 한정되는 것은 아니다. 메모리(2240)는 휘발성 메모리 또는 불휘발성 메모리 중 적어도 하나를 포함할 수 있다. 불휘발성 메모리는 ROM, PROM, EPROM, EEPROM, 플래시 메모리, PRAM, MRAM, RRAM, FRAM 등을 포함한다. 휘발성 메모리는 DRAM, SRAM, SDRAM, PRAM, MRAM, RRAM, FeRAM 등을 포함한다. 실시예에 있어서, 메모리(2240)는 HDD, SSD, CF, SD, Micro-SD, Mini-SD, xD 또는 Memory Stick 중 적어도 하나를 포함할 수 있다.
센서 모듈(2250)은 전자 시스템(2200)이 탑재되는 전자 장치 주변의 정보를 수집할 수 있다. 센서 모듈(2250)은 전자 장치의 외부로부터 신호(예컨대 영상 신호, 음성 신호, 자기 신호, 생체 신호, 터치 신호 등)를 센싱 또는 수신하고, 센싱 또는 수신된 신호를 데이터로 변환할 수 있다. 이를 위해, 센서 모듈(2250)은 센싱 장치, 예컨대 마이크, 촬상 장치, 이미지 센서, 라이더(LIDAR; light detection and ranging) 센서, 초음파 센서, 적외선 센서, 바이오 센서, 및 터치 센서 등 다양한 종류의 센싱 장치 중 적어도 하나를 포함할 수 있다.
센서 모듈(2250)은 변환된 데이터를 뉴럴 네트워크 장치(2230)에 입력 데이터로서 제공할 수 있다. 예를 들어, 센서 모듈(2250)은 이미지 센서를 포함할 수 있으며, 전자 장치의 외부 환경을 촬영하여 비디오 스트림을 생성하고, 비디오 스트림의 연속하는 데이터 프레임을 뉴럴 네트워크 장치(2230)에 입력 데이터로서 순서대로 제공할 수 있다. 그러나 이에 제한되는 것은 아니며 센서 모듈(2250)은 다양한 종류의 데이터를 뉴럴 네트워크 장치(2230)에 제공할 수 있다.
통신 모듈(2260)은 외부 디바이스와 통신할 수 있는 다양한 유선 또는 무선 인터페이스를 구비할 수 있다. 예컨대 통신 모듈(2260)은 유선 근거리통신망(Local Area Network; LAN), Wi-fi(Wireless Fidelity)와 같은 무선 근거리 통신망 (Wireless Local Area Network; WLAN), 블루투스(Bluetooth)와 같은 무선 개인 통신망(Wireless Personal Area Network; WPAN), 무선 USB (Wireless Universal Serial Bus), Zigbee, NFC (Near Field Communication), RFID (Radio-frequency identification), PLC(Power Line communication), 또는 3G (3rd Generation), 4G (4th Generation), LTE (Long Term Evolution), 5G (5th Generation) 등 이동 통신망(mobile cellular network)에 접속 가능한 통신 인터페이스 등을 포함할 수 있다.
도 23은 일 실시예에 따른 뉴럴 네트워크 장치에서 뉴럴 네트워크의 데이터를 처리하는 방법의 흐름도이다. 도 23에 도시된, 뉴럴 네트워크의 데이터를 처리하는 방법은, 앞서 설명된 도면들에서 설명된 실시예들에 관련되므로, 이하 생략된 내용이라 할지라도, 앞서 도면들에서 설명된 내용들은 도 23의 방법에도 적용될 수 있다.
2310 단계에서, 프로세서(410)는 뉴럴 네트워크의 프로세싱을 위하여 이용되는 데이터들의 하나 이상의 비트 표현들을 획득할 수 있다.
2320 단계에서, 프로세서(410)는 획득된 데이터들의 하나 이상의 비트 표현들을 각각 하나 이상의 레인들로 구분하여, 각 레인들마다 압축 기법들을 적용함으로써, 복수의 후보 프로파일들을 생성할 수 있다.
2330 단계에서, 프로세서(410)는 후보 프로파일들 각각에 대한 압축 성능들을 비교함으로써 최종 프로파일을 결정할 수 있다.
2340 단계에서, 프로세서(410)는 결정된 최종 프로파일에서 이용된 하나 이상의 레인들의 분할 방식 및 압축 기법들을 상기 뉴럴 네트워크의 데이터의 압축을 위한 최적 구성으로 결정할 수 있다.
한편, 상술한 실시예들은 컴퓨터에서 실행될 수 있는 프로그램으로 작성 가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 또한, 상술한 실시예들에서 사용된 데이터의 구조는 컴퓨터로 읽을 수 있는 기록매체에 여러 수단을 통하여 기록될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 플로피 디스크, 하드 디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등)와 같은 저장매체를 포함한다.
본 실시예와 관련된 기술 분야에서 통상의 지식을 가진 자는 상기된 기재의 본질적인 특성에서 벗어나지 않는 범위에서 실시예가 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예는 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 권리 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 실시예에 포함된 것으로 해석되어야 할 것이다.

Claims (20)

  1. 뉴럴 네트워크의 데이터를 처리하는 방법에 있어서,
    상기 뉴럴 네트워크의 프로세싱을 위하여 이용되는 데이터들의 하나 이상의 비트 표현들(bit representations)을 획득하는 단계;
    상기 획득된 데이터들의 하나 이상의 비트 표현들을 각각 하나 이상의 레인들(lanes)로 구분하여 각 레인들마다 압축 기법들(compression technique)을 적용함으로써, 복수의 후보 프로파일들(profiles)을 생성하는 단계;
    상기 후보 프로파일들 각각에 대한 압축 성능들(compression performances)을 비교함으로써 최종 프로파일을 결정하는 단계; 및
    상기 결정된 최종 프로파일에서 이용된 하나 이상의 레인들의 분할 방식 및 압축 기법들을 상기 뉴럴 네트워크의 데이터의 압축을 위한 최적 구성(configuration)으로 결정하는 단계를 포함하는, 방법.
  2. 제 1 항에 있어서,
    상기 복수의 후보 프로파일들을 생성하는 단계는
    상기 비트 표현들에 대하여, 상기 하나 이상의 레인들로 분할하는 분할 방식들 및 상기 압축 기법들 중 적어도 하나를 다르게 적용함으로써 상기 후보 프로파일들을 생성하는, 방법.
  3. 제 2 항에 있어서,
    상기 후보 프로파일들은
    상기 비트 표현들을 복수의 비트 세그먼트들로 구분하기 위한 상기 레인들의 개수 및 상기 레인들 각각에 대응하는 비트 세그먼트의 비트 폭이 서로 다르게 설정된 분할 방식들이 적용된 프로파일들을 포함하는, 방법.
  4. 제 3 항에 있어서,
    상기 후보 프로파일들은
    상기 레인들의 개수 및 상기 비트 폭에 따라 상기 레인들의 희소성(sparsity) 분포가 서로 다른 프로파일들을 포함하는, 방법.
  5. 제 2 항에 있어서,
    상기 후보 프로파일들은
    상기 레인들마다 서로 다른 압축 기법들이 적용된 프로파일들을 포함하는, 방법.
  6. 제 1 항에 있어서,
    상기 후보 프로파일들은
    서로 다른 알고리드믹 파라미터들(algorithmic parameters)을 갖는 압축 기법들이 적용된 프로파일들을 포함하는, 방법.
  7. 제 1 항에 있어서,
    상기 최종 프로파일을 결정하는 단계는
    상기 데이터들의 비트 표현들에 대한 상기 후보 프로파일들 각각에 대응하는 압축률들을 계산하는 단계; 및
    상기 계산된 압축률들 중 압축률이 가장 높은 후보 프로파일을 상기 최종 프로파일로 결정하는 단계를 포함하는, 방법.
  8. 제 1 항에 있어서,
    상기 뉴럴 네트워크의 데이터들은
    상기 뉴럴 네트워크의 액티베이션들(activations), 웨이트들(weights) 및 그레디언트들(gradients) 중 적어도 하나를 포함하는, 방법.
  9. 제 1 항에 있어서,
    상기 후보 프로파일들은
    상기 레인들 중 최하위 비트(LSB, least significant bit)를 포함하는 레인을 압축하지 않는 압축 기법이 적용된 프로파일을 포함하는, 방법.
  10. 뉴럴 네트워크의 데이터를 처리하는 장치에 있어서,
    적어도 하나의 프로그램이 저장된 메모리; 및
    상기 적어도 하나의 프로그램을 실행함으로써 상기 데이터를 압축하는 프로세서를 포함하고,
    상기 프로세서는
    상기 뉴럴 네트워크의 프로세싱을 위하여 이용되는 데이터들의 하나 이상의 비트 표현들을 획득하고, 상기 획득된 데이터들의 하나 이상의 비트 표현들을 각각 하나 이상의 레인들(lanes)로 구분하여, 각 레인들마다 압축 기법들(compression technique)을 적용함으로써, 복수의 후보 프로파일들(profiles)을 생성하고, 상기 후보 프로파일들 각각에 대한 압축 성능들(compression performances)을 비교함으로써 최종 프로파일을 결정하고, 상기 결정된 최종 프로파일에서 이용된 하나 이상의 레인들의 분할 방식 및 압축 기법들을 상기 뉴럴 네트워크의 데이터의 압축을 위한 최적 구성(configuration)으로 결정하는, 장치.
  11. 제 10 항에 있어서,
    상기 프로세서는
    상기 비트 표현들에 대하여, 상기 하나 이상의 레인들로 분할하는 분할 방식들 및 상기 압축 기법들 중 적어도 하나를 다르게 적용함으로써 상기 후보 프로파일들을 생성하는, 장치.
  12. 제 1 항 내지 제 9 항 중 어느 한 항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 비일시적인(non-transitory) 기록매체.
  13. 뉴럴 네트워크의 데이터를 처리하는 장치에 있어서,
    상기 뉴럴 네트워크의 데이터들을 하나 이상의 레인들(lanes)로 구분하여 각 레인들마다 설정된 압축 기법들(compression technique)을 정의한 최종 프로파일에 의해 미리 결정된 최적 구성(configuration)을 획득하고, 상기 뉴럴 네트워크의 프로세싱을 위하여 이용되는 데이터들의 비트 표현들을 획득하고, 상기 획득된 최적 구성을 이용하여 상기 획득된 비트 표현들을 하나 이상의 레인들로 분할하는 제1 분할부(splitter);
    상기 분할된 레인들 각각을 상기 획득된 최적 구성을 이용하여 압축하고, 압축된 레인들을 출력하는 복수의 압축부들(compressors); 및
    상기 압축된 레인들을 결합(concatenate)하고, 압축된 비트 표현들을 출력하는 제1 결합부(concatenator)를 포함하는, 장치.
  14. 제 13 항에 있어서,
    상기 복수의 압축부들은
    각 압축부마다 상기 최적 구성에서 각 레인별로 적용된 압축 기법으로 상기 분할된 레인들을 압축하는, 장치.
  15. 제 13 항에 있어서,
    상기 제1 결합부는
    상기 복수의 압축부들에서 출력된, 압축된 레인들을 동기화(synchronize)하기 위한 스탑 코드(stop code)를 삽입하는, 장치.
  16. 제 15 항에 있어서,
    상기 제1 결합부는,
    상기 스탑 코드의 삽입 여부를 검사하고, 상기 검사 결과에 따라 상기 스탑 코드의 삽입 여부를 나타내는 비트 값을 삽입하는, 장치.
  17. 뉴럴 네트워크의 데이터를 처리하는 장치에 있어서,
    상기 뉴럴 네트워크의 데이터들을 하나 이상의 레인들(lanes)로 구분하여 각 레인들마다 설정된 압축 기법들(compression technique)을 정의한 최종 프로파일에 의해 미리 결정된 최적 구성(configuration)을 획득하고, 상기 뉴럴 네트워크의 압축된 데이터의 압축된 비트 표현들을 획득하고, 상기 압축된 비트 표현들을 상기 획득된 최적 구성에 기초하여 하나 이상의 압축된 레인들로 분할하는 제2 분할부(splitter);
    분할된 상기 압축된 레인들 각각을 상기 최적 구성에 기초하여 압축해제(decompress)하고, 상기 압축해제된 레인들을 출력하는 복수의 압축해제부들(decompressors); 및
    상기 압축해제된 레인들을 결합하고, 압축해제된 비트 표현들을 출력하는 제2 결합부(concatenator)를 포함하는, 장치.
  18. 제 17 항에 있어서,
    상기 제2 분할부는
    상기 최적 구성에 기초하여 상기 압축된 비트 표현들 각각을 구성하는 상기 압축된 레인들의 비트 폭들을 예측(predict)하고, 상기 예측된 비트 폭들에 기초하여 상기 압축된 비트 표현들을 하나 이상의 압축된 레인들로 분할하는, 장치.
  19. 제 18 항에 있어서,
    상기 제2 분할부는
    상기 압축된 비트 표현들에 포함된 스탑 코드(stop code)를 검사하는, 장치.
  20. 제 19 항에 있어서,
    상기 제2 분할부는
    상기 스탑 코드의 삽입 여부를 나타내는 비트 값을 검사하고, 상기 검사 결과에 따라 상기 스탑 코드를 삭제하는, 장치.

KR1020200136124A 2019-11-04 2020-10-20 뉴럴 네트워크의 데이터를 처리하는 방법 및 장치 KR20210053791A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
EP20205334.4A EP3817236A1 (en) 2019-11-04 2020-11-03 Neural network data processing method and apparatus
CN202011214414.6A CN112784956A (zh) 2019-11-04 2020-11-04 用于处理神经网络的数据的方法和设备
US17/088,771 US20210133570A1 (en) 2019-11-04 2020-11-04 Neural network method and apparatus

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201962930029P 2019-11-04 2019-11-04
US62/930,029 2019-11-04

Publications (1)

Publication Number Publication Date
KR20210053791A true KR20210053791A (ko) 2021-05-12

Family

ID=75918892

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200136124A KR20210053791A (ko) 2019-11-04 2020-10-20 뉴럴 네트워크의 데이터를 처리하는 방법 및 장치

Country Status (1)

Country Link
KR (1) KR20210053791A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102360116B1 (ko) * 2021-03-26 2022-02-08 세종대학교산학협력단 압축 모듈을 포함하는 인공지능 가속기 및 이를 이용한 데이터 전달 방법
WO2023149777A1 (ko) * 2022-02-07 2023-08-10 연세대학교 산학협력단 투석 중 저혈압에 대한 정보 제공 방법 및 이를 이용한 투석 중 저혈압에 대한 정보 제공용 디바이스

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102360116B1 (ko) * 2021-03-26 2022-02-08 세종대학교산학협력단 압축 모듈을 포함하는 인공지능 가속기 및 이를 이용한 데이터 전달 방법
WO2023149777A1 (ko) * 2022-02-07 2023-08-10 연세대학교 산학협력단 투석 중 저혈압에 대한 정보 제공 방법 및 이를 이용한 투석 중 저혈압에 대한 정보 제공용 디바이스

Similar Documents

Publication Publication Date Title
CN109389219B (zh) 用于对神经网络的参数进行量化的方法和装置
JP7329455B2 (ja) ニューラルネットワーク量子化のための方法及び装置
CN109754066B (zh) 用于生成定点型神经网络的方法和装置
KR102564456B1 (ko) 뉴럴 네트워크의 파라미터를 양자화하는 장치 및 방법
KR102526650B1 (ko) 뉴럴 네트워크에서 데이터를 양자화하는 방법 및 장치
KR20190125141A (ko) 뉴럴 네트워크의 파라미터들을 양자화하는 방법 및 장치
KR20190052893A (ko) 뉴럴 네트워크 연산을 위한 전처리 장치 및 방법
JP7117280B2 (ja) ニューラルネットワークのパラメータを量子化する方法及びその装置
JP2019102084A (ja) ニューラルネットワークにおいてコンボリューション演算を処理する方法及びその装置
US11531893B2 (en) Method and apparatus with neural network parameter quantization
US11513770B2 (en) Neural network method and apparatus with floating point processing
KR20210083935A (ko) 뉴럴 네트워크의 파라미터들을 양자화하는 방법 및 장치
KR20210053791A (ko) 뉴럴 네트워크의 데이터를 처리하는 방법 및 장치
WO2022028197A1 (zh) 一种图像处理方法及其设备
EP3817236A1 (en) Neural network data processing method and apparatus
KR20210154502A (ko) 부동 소수점 연산을 수행하는 뉴럴 네트워크 장치 및 그의 동작 방법
WO2018228399A1 (zh) 运算装置和方法
KR20210072524A (ko) 뉴럴 네트워크 장치 및 그 동작 방법
KR20210121946A (ko) 뉴럴 네트워크 양자화를 위한 방법 및 장치
CN114358274A (zh) 训练用于图像识别的神经网络的方法和设备
KR20200088198A (ko) 뉴럴 네트워크의 레이어 축소를 이용하여 입력 데이터를 처리하는 방법 및 장치
KR20200094534A (ko) 뉴럴 네트워크 장치 및 뉴럴 네트워크 장치에서 멀티-비트 연산을 처리하는 방법
CN116095183A (zh) 一种数据压缩方法以及相关设备
KR20200139071A (ko) 뉴럴 네트워크에서 파라미터를 양자화하는 방법 및 장치
CN115913245A (zh) 数据编码方法、数据解码方法以及数据处理装置

Legal Events

Date Code Title Description
A201 Request for examination