KR102034661B1 - 뉴럴네트워크를 위한 데이터 양자화 방법 및 장치 - Google Patents

뉴럴네트워크를 위한 데이터 양자화 방법 및 장치 Download PDF

Info

Publication number
KR102034661B1
KR102034661B1 KR1020170055001A KR20170055001A KR102034661B1 KR 102034661 B1 KR102034661 B1 KR 102034661B1 KR 1020170055001 A KR1020170055001 A KR 1020170055001A KR 20170055001 A KR20170055001 A KR 20170055001A KR 102034661 B1 KR102034661 B1 KR 102034661B1
Authority
KR
South Korea
Prior art keywords
data
group
quantization
parameter
bits
Prior art date
Application number
KR1020170055001A
Other languages
English (en)
Other versions
KR20180120967A (ko
Inventor
유승주
박은혁
Original Assignee
서울대학교산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 서울대학교산학협력단 filed Critical 서울대학교산학협력단
Priority to KR1020170055001A priority Critical patent/KR102034661B1/ko
Priority to PCT/KR2018/005022 priority patent/WO2018199721A1/ko
Publication of KR20180120967A publication Critical patent/KR20180120967A/ko
Application granted granted Critical
Publication of KR102034661B1 publication Critical patent/KR102034661B1/ko
Priority to US16/663,487 priority patent/US11630984B2/en

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
    • G06N3/0495Quantised networks; Sparse networks; Compressed networks
    • 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

Landscapes

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

Abstract

뉴럴네트워크를 위한 서로 다른 데이터형식을 가진 양자화 방법 및 장치를 제시하며, 뉴럴네트워크에서 데이터 양자화 방법을 수행하는 장치에 있어서, 상기 뉴럴네트워크를 구성하는 적어도 하나의 레이어에 입력되는 데이터를 적어도 하나의 그룹들로 분할하고, 분할된 그룹별로 서로 다른 비트수로 데이터를 표현하고, 분할된 그룹별로 데이터를 처리하는 제어부 및 처리된 데이터를 저장하는 메모리를 포함한다.

Description

뉴럴네트워크를 위한 데이터 양자화 방법 및 장치{METHOD AND APPARATUS FOR DATA QUANTIZATION FOR NEURAL NETWORK}
본 명세서에서 개시되는 실시예들은 뉴럴네트워크를 위한 데이터 양자화 방법 및 장치에 관한 것으로, 보다 상세하게는 데이터에 뉴럴네트워크 양자화 기술을 달리 적용하는 양자화 방법 및 장치에 관한 것이다.
뉴럴네트워크는 생물 신경계의 고도의 정보처리기구를 공학적으로 모방해서 입력과 출력을 상호간에 상세히 관련지어 복잡한 제어를 하는 정보처리기술로 스위치나 각 센서 등에서 신호를 보내는 입력 레이어, 그 정보를 바탕으로 입력과 출력의 우선순위를 정하면서 상호관계를 조정하는 은닉 레이어, 이것을 바탕으로 필요한 제어량을 산출해서 출력하는 출력 레이어 3종류의 뉴론(신경세포) 모델이 복수로 얽혀서 네트워크를 구성하고 있다.
이러한 딥러닝 기반의 뉴럴네트워크는 대용량 메모리를 필요로 함에 따라 비용대비 큰 용량을 제공하는 메모리로서 예를 들어 PCM (phase change memory)등과 같은 뉴메모리를 이용하는 것이 일반적이다.
이러한 뉴메모리에 데이터를 쓸 때는 뉴메모리를 구성하는 셀의 상태를 변화시키기 때문에 일반적으로 최대 10만번정도로 쓰기 횟수가 제한되는 문제점이 있다.
관련하여 선행기술 문헌인 한국특허공개번호 제10-2001-0105425호는 비휘발성 메모리 소자인 MFSFET소자의 동작을 예측하는 방법과 상기 소자를 사용한 뉴로-디바이스의 적응형 학습회로에 관한 내용을 개시하는데, 게이트 강유전체의 분극을 스위칭시켜 전류의 흐름을 제어하는 방식의 비휘발성 메모리 소자의 동작예측할 뿐, 뉴메모리의 쓰기횟수의 제한에 따른 문제점을 해결하지 못한다.
따라서 상술된 문제점을 해결하기 위한 기술이 필요하게 되었다.
한편, 전술한 배경기술은 발명자가 본 발명의 도출을 위해 보유하고 있었거나, 본 발명의 도출 과정에서 습득한 기술 정보로서, 반드시 본 발명의 출원 전에 일반 공중에게 공개된 공지기술이라 할 수는 없다.
본 명세서에서 개시되는 실시예들은, 데이터의 표현에 사용되는 비트 수를 줄여 메모리에 쓰여지는 데이터를 줄이는 뉴럴네트워크를 위한 서로 다른 데이터형식을 가진 양자화 방법 및 장치를 제시하는 데 목적이 있다.
또한, 본 명세서에서 개시되는 실시예들은, 뉴럴네트워크의 출력의 질을 유지하면서 적은 비트수로 데이터를 형식할 수 있도록 데이터의 분포에 기초하여 양자화를 달리 적용하는 뉴럴네트워크를 위한 서로 다른 데이터형식을 가진 양자화 방법 및 장치를 제시하는 데 목적이 있다.
아울러 본 명세서에서 개시되는 실시예들은, 서로 다른 방식으로 양자화된 데이터들이 혼재되어도 데이터의 값에 따라 연산을 달리 수행하여 계산량을 줄이는 뉴럴네트워크를 위한 서로 다른 데이터형식을 가진 양자화 방법 및 장치를 제시하는 데 목적이 있다.
상술한 기술적 과제를 달성하기 위한 기술적 수단으로서, 일 실시예에 따르면, 뉴럴네트워크에서 데이터 양자화 방법을 수행하는 장치에 있어서, 상기 뉴럴네트워크를 구성하는 적어도 하나의 레이어에 입력되는 데이터를 적어도 하나의 그룹들로 분할하고, 분할된 그룹별로 서로 다른 비트수로 데이터를 표현하고, 분할된 그룹별로 데이터를 처리하는 제어부; 및 처리된 데이터를 저장하는 메모리를 포함할 수 있다.
다른 실시예에 따르면, 양자화장치가 뉴럴네트워크에서 상이한 데이터형식을 가지는 양자화 방법에 있어서, 양자화장치가 뉴럴네트워크에서 데이터 양자화를 수행하는 방법에 있어서, 상기 뉴럴네트워크를 구성하는 적어도 하나의 레이어에 입력되는 데이터를 적어도 하나의 그룹들로 분할하는 단계, 분할된 그룹별로 서로 다른 비트수로 데이터를 표현하는 단계 및 상기 분할된 그룹별로 데이터를 처리하여 처리된 데이터를 저장하는 단계를 포함할 수 있다.
전술한 과제 해결 수단 중 어느 하나에 의하면, 데이터의 형식에 사용되는 비트 수를 줄여 메모리에 쓰여지는 데이터를 줄이는 뉴럴네트워크를 위한 데이터 양자화 방법 및 장치를 제시할 수 있다.
또한, 전술한 과제 해결 수단 중 어느 하나에 의하면, 뉴럴네트워크의 출력의 질을 유지하면서 적은 비트수로 데이터를 표현할 수 있도록 데이터의 분포에 기초하여 양자화를 달리 적용하는 뉴럴네트워크를 위한 데이터 양자화 방법 및 장치를 제시할 수 있다.
아울러 본 명세서에서 개시되는 실시예들은, 서로 다른 방식으로 양자화된 데이터들이 혼재되어도 데이터의 값에 따라 연산을 달리 수행하여 계산량을 줄이는 뉴럴네트워크를 위한 데이터 양자화 방법 및 장치할 수 있다.
개시되는 실시예들에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 개시되는 실시예들이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도 1 은 일 실시예에 따른 양자화장치를 도시한 블록도이다.
도 2 는 일 실시예에 따른 양자화방법을 설명하기 위한 순서도이다.
도 3 내지 도 5 는 일 실시예에 따른 양자화방법을 설명하기 위한 참고도이다.
아래에서는 첨부한 도면을 참조하여 다양한 실시예들을 상세히 설명한다. 아래에서 설명되는 실시예들은 여러 가지 상이한 형태로 변형되어 실시될 수도 있다. 실시예들의 특징을 보다 명확히 설명하기 위하여, 이하의 실시예들이 속하는 기술분야에서 통상의 지식을 가진 자에게 널리 알려져 있는 사항들에 관해서 자세한 설명은 생략하였다. 그리고, 도면에서 실시예들의 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 구성이 다른 구성과 "연결"되어 있다고 할 때, 이는 ‘직접적으로 연결’되어 있는 경우뿐 아니라, ‘그 중간에 다른 구성을 사이에 두고 연결’되어 있는 경우도 포함한다. 또한, 어떤 구성이 어떤 구성을 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한, 그 외 다른 구성을 제외하는 것이 아니라 다른 구성들을 더 포함할 수도 있음을 의미한다.
이하 첨부된 도면을 참고하여 실시예들을 상세히 설명하기로 한다.
다만 이를 설명하기에 앞서, 아래에서 사용되는 용어들의 의미를 먼저 정의한다.
이하에서 ‘뉴럴네트워크’는 입력레이어, 적어도 하나의 은닉레이어 그리고 출력레이어로 구성될 수 있으며, 각 레이어는 적어도 하나의 ‘노드’로 구성될 수 있다. 그리고 각 레이어의 노드는 다음 레이어의 노드와의 연결관계를 형성할 수 있다.
그리고 ‘파라미터’는 뉴럴네트워크의 각 레이어의 노드에 입력되는 데이터를 다음 레이어에 전달할 때 레이어에 입력되는 데이터의 반영강도를 결정하는 값으로 예를 들어, 가중치(Weight), 커널파라미터(Kernel parameter) 또는 엑티베이션(Activation)일 수 있다.
그리고 ‘데이터’는 뉴럴네트워크의 각 레이어 단계에서 입력되는 값이다.
위에 정의한 용어 이외에 설명이 필요한 용어는 아래에서 각각 따로 설명한다.
도 1은 일 실시예에 따른 양자화장치(10)를 설명하기 위한 블록도이다.
양자화장치(10)는 네트워크(N)를 통해 원격지의 서버에 접속하거나, 타 단말 및 서버와 연결 가능한 컴퓨터나 휴대용 단말기, 텔레비전, 웨어러블 디바이스(Wearable Device) 등으로 구현될 수 있다. 여기서, 컴퓨터는 예를 들어, 웹 브라우저(WEB Browser)가 탑재된 노트북, 데스크톱(desktop), 랩톱(laptop)등을 포함하고, 휴대용 단말기는 예를 들어, 휴대성과 이동성이 보장되는 무선 통신 장치로서, PCS(Personal Communication System), PDC(Personal Digital Cellular), PHS(Personal Handyphone System), PDA(Personal Digital Assistant), GSM(Global System for Mobile communications), IMT(International Mobile Telecommunication)-2000, CDMA(Code Division Multiple Access)-2000, W-CDMA(W-Code Division Multiple Access), Wibro(Wireless Broadband Internet), 스마트폰(Smart Phone), 모바일 WiMAX(Mobile Worldwide Interoperability for Microwave Access) 등과 같은 모든 종류의 핸드헬드(Handheld) 기반의 무선 통신 장치를 포함할 수 있다. 또한, 텔레비전은 IPTV(Internet Protocol Television), 인터넷 TV(Internet Television), 지상파 TV, 케이블 TV 등을 포함할 수 있다. 나아가 웨어러블 디바이스는 예를 들어, 시계, 안경, 액세서리, 의복, 신발 등 인체에 직접 착용 가능한 타입의 정보처리장치로서, 직접 또는 다른 정보처리장치를 통해 네트워크를 경유하여 원격지의 서버에 접속하거나 타 단말과 연결될 수 있다.
도 1을 참조하면, 일 실시예에 따른 양자화장치(10)는 입출력부(110), 제어부(120), 통신부(130) 및 메모리(140)를 포함할 수 있다.
입출력부(110)는 사용자로부터 입력을 수신하기 위한 입력부와, 작업의 수행 결과 또는 양자화장치(10)의 상태 등의 정보를 표시하기 위한 출력부를 포함할 수 있다. 예를 들어, 입출력부(110)는 사용자 입력을 수신하는 조작 패널(operation panel) 및 화면을 표시하는 디스플레이 패널(display panel) 등을 포함할 수 있다.
구체적으로, 입력부는 키보드, 물리 버튼, 터치 스크린, 카메라 또는 마이크 등과 같이 다양한 형태의 사용자 입력을 수신할 수 있는 장치들을 포함할 수 있다. 또한, 출력부는 디스플레이 패널 또는 스피커 등을 포함할 수 있다. 다만, 이에 한정되지 않고 입출력부(110)는 다양한 입출력을 지원하는 구성을 포함할 수 있다.
제어부(120)는 양자화장치(10)의 전체적인 동작을 제어하며, CPU 등과 같은 프로세서를 포함할 수 있다. 제어부(120)는 입출력부(110)를 통해 수신한 사용자 입력에 대응되는 동작을 수행하도록 양자화장치(10)에 포함된 다른 구성들을 제어할 수 있다.
예를 들어, 제어부(120)는 메모리(140)에 저장된 프로그램을 실행시키거나, 메모리(140)에 저장된 파일을 읽어오거나, 새로운 파일을 메모리(140)에 저장할 수도 있다.
이러한 제어부(120)는 뉴럴네트워크를 구성하는 적어도 하나의 레이어에 입력되는 데이터를 적어도 하나의 그룹들로 분할하고, 분할된 그룹별로 서로 다른 비트수로 데이터를 표현하고, 분할된 그룹별로 데이터를 처리할 수 있다.
이를 위해, 제어부(120)는 뉴럴네트워크에서 이용되는 파라미터의 분포에 기초하여 파라미터를 적어도 하나의 영역으로 분할할 수 있다.
실시예에 따라, 제어부(120)는 뉴럴네트워크의 모든 파라미터의 값을 기초로 동일한 값을 가지는 파라미터의 개수를 카운트하여 파라미터의 분포를 획득할 수 있고, 분포된 파라미터의 값을 기초로 적어도 하나의 구간으로 파라미터를 나눌 수 있다.
예를 들어, 제어부(120)는 0을 기준으로 파리미터가 분포된 영역을 파라미터의 절대값에 비례하여 파라미터를 나눌 구간을 결정할 수 있다. 즉, 제어부(120)는 파라미터의 절대값이 0에 가까울수록 구간을 좁게 나눌 수 있고, 파라미터의 절대값이 0 보다 클수록 구간을 넓게 나눌 수 있다.
또는 예를 들어, 제어부(120)는 파라미터의 수에 기초하여 파라미터의 수가 기 설정된 수 이상인 경우에는 구간을 0.05 간격으로 파라미터 값의 구간을 나눌 수 있고, 파라미터의 수가 기 설정된 수 이하인 경우에는 구간을 0.1 간격으로 파라미터 값의 구간을 나눌 수 있다.
이후, 제어부(120)는 파라미터가 분할된 각 그룹별로 속하는 그룹에 따라 각 그룹에 속한 파라이미터와 계산되는 데이터에 대해 수행할 양자화의 방법을 결정할 수 있다.
그리고 제어부(120)는 각 데이터 별로 대응되는 파라미터가 속한 파라미터의 그룹에 따라 데이터를 적어도 하나의 그룹으로 분할할 수 있고, 각 데이터에 적용되는 파라미터가 속한 파라미터의 그룹에 대해 결정된 양자화 방법을 해당 데이터에 적용할 수 있다.
예를 들어, 제어부(120)는 파라미터 값이 상대적으로 큰 0.4 이상의 그룹은 데이터가 16비트로 표현될 수 있도록 양자화를 적용할 수 있으며, 파라미터 값이 적은 0.4 미만의 그룹에 대해서는 데이터가 8비트로 표현될 수 있도록 양자화를 적용할 수 있다.
이와 같이 제어부(120)가 파라미터의 값에 기초하여 데이터에 대한 양자화를 달리 적용함으로써 파라미터의 분포가 좌우로 퍼지는 형태인 긴 꼬리(long tail)형태를 가지는 파라미터가 반영되는 데이터에 대해 제한된 비트로 양자화를 수행하여 발생되는 양자화 오차와 양자화 오차에 따른 뉴럴네트워크 출력 품질의 저하 모두 줄일 수 있다.
이후, 제어부(120)는 양자화된 데이터를 데이터가 표현된 비트수에 따라 분리하여 처리할 수 있다.
예를 들어, 제어부(120)는 데이터를 표현하는 비트 수가 8비트를 초과하는지 판단할 수 있고, 8 비트를 초과하는 데이터와 8비트 이하 데이터로 분류할 수 있다.
그리고 제어부(120)는 데이터의 표현에 기초하여 데이터의 형식을 처리하는 레이어를 결정하고, 결정된 레이어를 통해 파라미터와 데이터를 계산할 수 있다.
예를 들어, 제어부(120)는 데이터를 표현하는 비트수가 8비트를 초과하는 경우, 파라미터와 데이터에 대해 16비트 콘볼루션 계산을 수행할 수 있으며, 데이터를 표현하는 비트수가 8비트 이하인 경우, 파라미터와 데이터에 대해 8 비트 콘볼루션 계산을 수행할 수 있다.
이와 같이 계산을 처리하는 뉴럴네트워크의 레이어를 병렬구조로 사용하여 데이터를 표현하는 비트수에 따라 선택적으로 계산방법을 결정함으로써 파라미터의 분포에서 긴 꼬리에 해당하는 파라미터를 이용한 연산의 수행횟수를 크게 낮출 수 있어 계산량을 획기적으로 낮출 수 있다.
이후, 제어부(120)는 계산의 결과를 각 레이어단위 출력 별로 덧셈(elements-wise addition)하여 결과를 획득할 수 있다.
통신부(130)는 다른 디바이스 또는 네트워크와 유무선 통신을 수행할 수 있다. 이를 위해, 통신부(130)는 다양한 유무선 통신 방법 중 적어도 하나를 지원하는 통신 모듈을 포함할 수 있다. 예를 들어, 통신 모듈은 칩셋(chipset)의 형태로 구현될 수 있다.
통신부(130)가 지원하는 무선 통신은, 예를 들어 Wi-Fi(Wireless Fidelity), Wi-Fi Direct, 블루투스(Bluetooth), UWB(Ultra Wide Band) 또는 NFC(Near Field Communication) 등일 수 있다. 또한, 통신부(130)가 지원하는 유선 통신은, 예를 들어 USB 또는 HDMI(High Definition Multimedia Interface) 등일 수 있다.
메모리(140)에는 파일, 어플리케이션 및 프로그램 등과 같은 다양한 종류의 데이터가 설치 및 저장될 수 있다. 제어부(120)는 메모리(140)에 저장된 데이터에 접근하여 이를 이용하거나, 또는 새로운 데이터를 메모리(140)에 저장할 수도 있다. 또한, 제어부(120)는 메모리(140)에 설치된 프로그램을 실행할 수도 있다. 도 1을 참조하면, 메모리(140)에는 양자화방법을 수행하기 위한 프로그램이 설치될 수 있다.
이러한 메모리(140)는 제어부(120)에서 처리된 데이터를 저장할 수 있다.
예를 들어, 메모리(140)는 제어부(120)에서 양자화된 데이터를 저장할 수 있으며, 파리미터와 데이터가 계산된 결과를 저장할 수 있으며, 처리된 데이터를 다음 레이어의 입력값으로 제공할 수 있다.
도 2 는 일 실시예에 따른 양자화방법을 설명하기 위한 순서도이다.
도 2 에 도시된 실시예에 따른 양자화방법은 도 1 에 도시된 양자화장치(10)에서 시계열적으로 처리되는 단계들을 포함한다. 따라서, 이하에서 생략된 내용이라고 하더라도 도 1 에 도시된 양자화장치(10)에 관하여 이상에서 기술한 내용은 도 2 에 도시된 실시예에 따른 양자화방법에도 적용될 수 있다.
우선, 양자화장치(10)는 뉴럴네트워크를 구성하는 적어도 하나의 레이어에 입력되는 데이터를 적어도 하나의 그룹들로 분할할 수 있다(S2001).
이를 위해, 양자화장치(10)는 뉴럴네트워크에서 이용되는 파라미터의 분포를 이용할 수 있다.
예를 들어, 양자화장치(10)는 일반적으로 파라미터가 가질 수 있는 값의 범위를 기준으로 뉴럴네트워크 내에서 이용되는 모든 파라미터의 분포를 획득할 수 있다.
도 3 은 뉴럴네트워크 내에서 사용되는 가중치(weight)의 분포를 도시한 표이다. 이를 참조하면, 양자화장치(10)는 뉴럴네트워크 상에서 사용되는 모든 가중치에 대해 일반적으로 가중치의 값을 기준으로 가중치의 분포(301)를 획득할 수 있다.
그리고 양자화장치(10)는 실시예에 따라 동일한 값을 갖는 파라미터의 수에 기초하여 동일한 양자화 방법이 적용되는 적어도 하나의 그룹으로 파라미터를 분할 수 있다(S2002).
예를 들어, 양자화장치(10)는 파라미터 분포에서 파라미터의 수가 많은 파라미터 값의 구간은 좁게 설정할 수 있으며, 파라미터의 수가 적은 파라미터 값의 구간은 넓게 설정하여 파라미터를 적어도 하나의 그룹으로 분할할 수 있다.
도 4 는 가중치의 분포에 구간의 설정을 도시한 표이다. 이를 참조하면, 양자화장치(10)는 가중치의 수가 많은 구간인 0 내지 0.1사이는 0.05 단위로 구간 (401)을 설정할 수 있으며, 가중치의 수가 적은 구간은 0.1 내지 0.4 는 0.1 단위로 구간(402)을 설정할 수 있다.
그리고 양자화장치(10)는 적어도 하나의 구간별로 각 구간에 포함된 파라미터가 적용되는 데이터의 양자화의 방법을 결정할 수 있다.
예를 들어, 양자화장치(10)는 뉴럴네트워크 내에 빈도수가 적지만 값의 큰 구간에 대해서는 16 비트로 양자화를 수행할 수 있으며, 빈도수가 높지만 파라미터의 값이 작은 구간에 대해서는 8 비트로 양자화를 수행할 수 있다.
도 4 를 참조하면, 양자화장치(10)는 제 1 구간(401)에 대해서는 8비트 양자화를 수행할 수 있으며, 제 2 구간(402)에 대해서는 16 비트 양자화를 수행할 수 있다.
이와 같이 파라미터의 특성에 따라 각 파라미터가 적용되는 데이터에 대해 서로 다른 양자화를 수행함으로써 기존에 모든 데이터에 대해 일률적인 양자화(ex. 선형양자화 또는 로그양자화)를 수행하는 경우에 비해 더 적은 비트 수로 데이터를 표현할 수 있음과 동시에 양자화 오차를 줄일 수 있어, 뉴럴네트워크의 출력의 질을 향상시킬 수 있다.
이후, 양자화장치(10)는 데이터를 표현하는 비트수에 따라 분류하여 데이터를 처리할 수 있다(S2003).
이를 위해, 양자화장치(10)는 데이터의 표현에 기초하여 계산방식을 결정할 수 있다.
예를 들어, 양자화장치(10)는 데이터를 표현하는 비트수에 기초하여 데이터가 8 비트이면, 8 비트 콘볼루션 계산을 수행하고, 데이터가 8비트 초과이면, 16비트 콘볼루션 계산을 수행할 수 있다.
이후, 양자화장치(10)는 결정된 계산방식에 따라 파라미터와 데이터를 계산할 수 있으며, 이를 위해 동일한 레이어를 병렬적으로 구성하여 데이터의 비트수에 따라 레이어를 달리 선택함으로써 계산방식을 달리할 수 있다.
도 5 는 양자화장치(10)의 병렬적으로 구성된 레이어(501)를 추상적으로 도시한 것이다. 이를 참조하면, 양자화장치(10)는 데이터를 표현하는 비트수가 8 bit인 255 이하인지 판단할 수 있고, 255 이하인 경우, 8비트 콘볼루션을 계산하는 레이어(502)로 데이터를 보낼 수 있으며, 255 이상인 경우 16 비트 콘볼루션을 계산하는 레이어(503)로 데이터를 보낼 수 있다.
이후, 양자화장치(10)는 데이터의 표현에 따라 분리되어 처리된 데이터에 기초하여 결과데이터를 획득할 수 있다.
예를 들어, 양자화장치(10)는 8비트 콘볼루션 계산을 수행한 결과와 16 비트 콘볼루션 계산을 수행한 데이터를 합하여 결과를 획득할 수 있다.
그리고 양자화장치(10)는 처리된 데이터를 저장할 수 있다(S2004).
이와 같이 양자화를 수행하면 적은 비트로 데이터를 표현하여도 출력결과의 품질을 유지하면서 계산량을 줄일 수 있어 메모리에 쓰여지는 데이터량을 줄일 수 있다.
이상의 실시예들에서 사용되는 '~부'라는 용어는 소프트웨어 또는 FPGA(field programmable gate array) 또는 ASIC 와 같은 하드웨어 구성요소를 의미하며, '~부'는 어떤 역할들을 수행한다. 그렇지만 '~부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '~부'는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 '~부'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램특허 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다.
구성요소들과 '~부'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '~부'들로 결합되거나 추가적인 구성요소들과 '~부'들로부터 분리될 수 있다.
뿐만 아니라, 구성요소들 및 '~부'들은 디바이스 또는 보안 멀티미디어카드 내의 하나 또는 그 이상의 CPU 들을 재생시키도록 구현될 수도 있다.
도 2 를 통해 설명된 실시예에 따른 양자화방법은 컴퓨터에 의해 실행 가능한 명령어 및 데이터를 저장하는, 컴퓨터로 판독 가능한 매체의 형태로도 구현될 수 있다. 이때, 명령어 및 데이터는 프로그램 코드의 형태로 저장될 수 있으며, 프로세서에 의해 실행되었을 때, 소정의 프로그램 모듈을 생성하여 소정의 동작을 수행할 수 있다. 또한, 컴퓨터로 판독 가능한 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터로 판독 가능한 매체는 컴퓨터 기록 매체일 수 있는데, 컴퓨터 기록 매체는 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함할 수 있다.예를 들어, 컴퓨터 기록 매체는 HDD 및 SSD 등과 같은 마그네틱 저장 매체, CD, DVD 및 블루레이 디스크 등과 같은 광학적 기록 매체, 또는 네트워크를 통해 접근 가능한 서버에 포함되는 메모리일 수 있다.
또한 도 2 를 통해 설명된 실시예에 따른 양자화방법은 컴퓨터에 의해 실행 가능한 명령어를 포함하는 컴퓨터 프로그램(또는 컴퓨터 프로그램 제품)으로 구현될 수도 있다. 컴퓨터 프로그램은 프로세서에 의해 처리되는 프로그래밍 가능한 기계 명령어를 포함하고, 고레벨 프로그래밍 언어(High-level Programming Language), 객체 지향 프로그래밍 언어(Object-oriented Programming Language), 어셈블리 언어 또는 기계 언어 등으로 구현될 수 있다. 또한 컴퓨터 프로그램은 유형의 컴퓨터 판독가능 기록매체(예를 들어, 메모리, 하드디스크, 자기/광학 매체 또는 SSD(Solid-State Drive) 등)에 기록될 수 있다.
따라서 도 2 를 통해 설명된 실시예에 따른 양자화방법은 상술한 바와 같은 컴퓨터 프로그램이 컴퓨팅 장치에 의해 실행됨으로써 구현될 수 있다. 컴퓨팅 장치는 프로세서와, 메모리와, 저장 장치와, 메모리 및 고속 확장포트에 접속하고 있는 고속 인터페이스와, 저속 버스와 저장 장치에 접속하고 있는 저속 인터페이스 중 적어도 일부를 포함할 수 있다. 이러한 성분들 각각은 다양한 버스를 이용하여 서로 접속되어 있으며, 공통 머더보드에 탑재되거나 다른 적절한 방식으로 장착될 수 있다.
여기서 프로세서는 컴퓨팅 장치 내에서 명령어를 처리할 수 있는데, 이런 명령어로는, 예컨대 고속 인터페이스에 접속된 디스플레이처럼 외부 입력, 출력 장치상에 GUI(Graphic User Interface)를 제공하기 위한 그래픽 정보를 표시하기 위해 메모리나 저장 장치에 저장된 명령어를 들 수 있다. 다른 실시예로서, 다수의 프로세서 및(또는) 다수의 버스가 적절히 다수의 메모리 및 메모리 형태와 함께 이용될 수 있다. 또한 프로세서는 독립적인 다수의 아날로그 및(또는) 디지털 프로세서를 포함하는 칩들이 이루는 칩셋으로 구현될 수 있다.
또한 메모리는 컴퓨팅 장치 내에서 정보를 저장한다. 일례로, 메모리는 휘발성 메모리 유닛 또는 그들의 집합으로 구성될 수 있다. 다른 예로, 메모리는 비휘발성 메모리 유닛 또는 그들의 집합으로 구성될 수 있다. 또한 메모리는 예컨대, 자기 혹은 광 디스크와 같이 다른 형태의 컴퓨터 판독 가능한 매체일 수도 있다.
그리고 저장장치는 컴퓨팅 장치에게 대용량의 저장공간을 제공할 수 있다. 저장 장치는 컴퓨터 판독 가능한 매체이거나 이런 매체를 포함하는 구성일 수 있으며, 예를 들어 SAN(Storage Area Network) 내의 장치들이나 다른 구성도 포함할 수 있고, 플로피 디스크 장치, 하드 디스크 장치, 광 디스크 장치, 혹은 테이프 장치, 플래시 메모리, 그와 유사한 다른 반도체 메모리 장치 혹은 장치 어레이일 수 있다.
상술된 실시예들은 예시를 위한 것이며, 상술된 실시예들이 속하는 기술분야의 통상의 지식을 가진 자는 상술된 실시예들이 갖는 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 상술된 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
본 명세서를 통해 보호 받고자 하는 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태를 포함하는 것으로 해석되어야 한다.
10: 양자화장치
110: 입출력부
120: 제어부
130: 통신부
140: 메모리

Claims (14)

  1. 뉴럴네트워크에서 데이터 양자화 방법을 수행하는 장치에 있어서,
    상기 뉴럴네트워크를 구성하는 적어도 하나의 레이어에 입력되는 데이터를 적어도 하나의 그룹들로 분할하고, 분할된 그룹별로 결정된 양자화 방법을 적용하여 상기 데이터가 속하는 그룹에 따라 서로 다른 비트수로 데이터를 표현하고, 분할된 그룹별로 데이터를 처리하는 제어부; 및
    처리된 데이터를 저장하는 메모리를 포함하고,
    상기 제어부는,
    데이터에 대한 콘볼루션 계산을 데이터의 비트수에 따라 분리 수행하는 병렬구조의 레이어에 대응되도록 상기 데이터를 분류하는, 양자화장치.
  2. 제 1 항에 있어서,
    상기 제어부는,
    상기 데이터의 반영강도를 결정하는 파라미터를 적어도 하나의 그룹들로 분할하고, 상기 데이터에 적용되는 파라미터가 속하는 그룹에 따라 상기 데이터를 적어도 하나의 그룹으로 분할하는, 양자화장치.
  3. 제 2 항에 있어서,
    상기 제어부는,
    동일한 값을 갖는 파라미터의 수에 기초하여 상기 파라미터를 적어도 하나의 그룹들로 분할하는, 양자화장치.
  4. 제 2 항에 있어서,
    상기 제어부는,
    상기 파라미터의 값에 기초하여 분할된 적어도 하나의 데이터 그룹별로 데이터를 표현할 비트수를 결정하는, 양자화장치.
  5. 삭제
  6. 제 1 항에 있어서,
    상기 제어부는,
    각 레이어로부터 상기 데이터를 처리한 결과데이터를 획득하는, 양자화장치.
  7. 양자화장치가 뉴럴네트워크에서 데이터 양자화를 수행하는 방법에 있어서,
    상기 뉴럴네트워크를 구성하는 적어도 하나의 레이어에 입력되는 데이터를 적어도 하나의 그룹들로 분할하는 단계;
    분할된 그룹별로 결정된 양자화 방법을 적용하여 상기 데이터가 속하는 그룹에 따라 서로 다른 비트수로 데이터를 표현하는 단계; 및
    상기 분할된 그룹별로 데이터를 처리하여 처리된 데이터를 저장하는 단계를 포함하고,
    상기 분할된 그룹별로 데이터를 처리하여 처리된 데이터를 저장하는 단계는,
    데이터에 대한 콘볼루션 계산을 데이터의 비트수에 따라 분리 수행하는 병렬구조의 레이어에 대응되도록 상기 데이터를 분류하는 단계를 포함하는, 양자화방법.
  8. 제 7 항에 있어서,
    상기 적어도 하나의 그룹들로 분할하는 단계는,
    상기 데이터의 반영강도를 결정하는 파라미터를 적어도 하나의 그룹들로 분할하는 단계; 및
    상기 데이터에 적용되는 파라미터가 속하는 그룹에 따라 상기 데이터를 적어도 하나의 그룹으로 분할하는 단계를 포함하는, 양자화방법.
  9. 제 8 항에 있어서,
    상기 파라미터를 적어도 하나의 그룹들로 분할하는 단계는,
    동일한 값을 갖는 파라미터의 수에 기초하여 상기 파라미터를 적어도 하나의 그룹들로 분할하는 단계를 포함하는, 양자화방법.
  10. 제 7 항에 있어서,
    상기 다른 비트수로 데이터를 표현하는 단계는,
    상기 데이터의 반영강도를 결정하는 파라미터의 값에 기초하여 분할된 적어도 하나의 데이터 그룹별로 데이터를 표현할 비트수를 결정하는 단계를 더 포함하는, 양자화방법.
  11. 삭제
  12. 제 7 항에 있어서,
    상기 양자화방법은,
    각 레이어로부터 상기 데이터를 처리한 결과데이터를 획득하는 단계를 더 포함하는, 양자화방법.
  13. 제 7 항에 기재된 방법을 수행하는 프로그램이 기록된 컴퓨터 판독 가능한 기록 매체.
  14. 양자화장치에 의해 수행되며, 제 7 항에 기재된 방법을 수행하기 위해 매체에 저장된 컴퓨터 프로그램.
KR1020170055001A 2017-04-28 2017-04-28 뉴럴네트워크를 위한 데이터 양자화 방법 및 장치 KR102034661B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020170055001A KR102034661B1 (ko) 2017-04-28 2017-04-28 뉴럴네트워크를 위한 데이터 양자화 방법 및 장치
PCT/KR2018/005022 WO2018199721A1 (ko) 2017-04-28 2018-04-30 뉴럴네트워크에서 데이터 처리를 가속화하는 방법 및 장치
US16/663,487 US11630984B2 (en) 2017-04-28 2019-10-25 Method and apparatus for accelerating data processing in neural network

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170055001A KR102034661B1 (ko) 2017-04-28 2017-04-28 뉴럴네트워크를 위한 데이터 양자화 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20180120967A KR20180120967A (ko) 2018-11-07
KR102034661B1 true KR102034661B1 (ko) 2019-10-21

Family

ID=64362935

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170055001A KR102034661B1 (ko) 2017-04-28 2017-04-28 뉴럴네트워크를 위한 데이터 양자화 방법 및 장치

Country Status (1)

Country Link
KR (1) KR102034661B1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102228196B1 (ko) * 2018-11-15 2021-03-16 주식회사 에이아이트릭스 기초 메타학습장치에 대한 앙상블가중치를 결정하는 방법 및 장치
KR20200139909A (ko) 2019-06-05 2020-12-15 삼성전자주식회사 전자 장치 및 그의 연산 수행 방법
CN112085189B (zh) * 2019-06-12 2024-03-29 上海寒武纪信息科技有限公司 一种神经网络的量化参数确定方法及相关产品
CN113112008B (zh) * 2020-01-13 2024-05-10 中科寒武纪科技股份有限公司 用于神经网络数据量化的方法、装置和计算机可读存储介质
KR102418794B1 (ko) * 2020-06-02 2022-07-08 오픈엣지테크놀로지 주식회사 하드웨어 가속기를 위한 파라미터를 메모리로부터 액세스하는 방법 및 이를 이용한 장치

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017049496A1 (en) 2015-09-23 2017-03-30 Intel Corporation Apparatus and method for local quantization for convolutional neural networks (cnns)

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017049496A1 (en) 2015-09-23 2017-03-30 Intel Corporation Apparatus and method for local quantization for convolutional neural networks (cnns)

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Han, Song, Huizi Mao, and William J. Dally. Deep compression: Compressing deep neural networks with pruning, trained quantization and huffman coding. arXiv preprint arXiv:1510.00149v1. arXiv. 2015.10.*

Also Published As

Publication number Publication date
KR20180120967A (ko) 2018-11-07

Similar Documents

Publication Publication Date Title
KR102034661B1 (ko) 뉴럴네트워크를 위한 데이터 양자화 방법 및 장치
KR102415214B1 (ko) 이상치를 고려한 뉴럴네트워크 가속 방법 및 장치
US11630984B2 (en) Method and apparatus for accelerating data processing in neural network
US20180039442A1 (en) Efficient Deduplication of Logical Units
US20190378014A1 (en) Neural network load reduction device, information processing unit, and neural network load reduction method and computer-readable storage medium
US9684463B1 (en) Predictive block allocation in a flash device
US20210232743A1 (en) Circuit testing and manufacture using multiple timing libraries
JP2017204281A (ja) ストレージシステム、装置およびストレージシステムの方法
KR20200025889A (ko) 영상 복원 장치 및 방법
CN115145391B (zh) 一种基于ai深度学习的虚拟现实跑步机自适应方法及系统
KR101945918B1 (ko) 메모리의 쓰기를 제어하는 뉴럴네트워크 수행 방법 및 장치
JP2020109669A (ja) 多重ステップ音嗜好性判定
KR102228196B1 (ko) 기초 메타학습장치에 대한 앙상블가중치를 결정하는 방법 및 장치
US10474371B1 (en) Method and apparatus for SSD/flash device replacement policy
KR102116395B1 (ko) 애플리케이션 테스트 방법 및 장치
KR20190069268A (ko) 객체센서를 이용한 구도 설정 방법 및 시스템
KR102191453B1 (ko) 스프링(Spring)을 기반으로 한 애플리케이션에 플러그인을 제공하는 방법 및 장치
CN115470190A (zh) 一种多存储池数据分类存储方法、系统与电子设备
KR20230173343A (ko) 애플리케이션 테스트 장치 및 방법
JP7233636B2 (ja) データ量子化処理方法、装置、電子機器および記憶媒体
KR102519373B1 (ko) 셀 크기 조절 장치 및 방법
KR102086043B1 (ko) 희박 데이터를 위한 데이터 분석 방법 및 이를 수행하기 위한 장치
KR102291385B1 (ko) 통신환경에 기초한 게임 패치 제공 방법 및 장치
KR102113094B1 (ko) 부호화된 소셜 네트워크에서 블록 제거 기법을 활용한 빠른 개인화된 랭킹 방법 및 장치
KR102192048B1 (ko) 이기종 클러스터 환경에서 네트워크 통신의 양을 줄이는 그래프 삼각형 열거 방법 및 장치

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant