KR20230078655A - 에너지 효율적인 딥 러닝을 위한 동적 양자화 - Google Patents

에너지 효율적인 딥 러닝을 위한 동적 양자화 Download PDF

Info

Publication number
KR20230078655A
KR20230078655A KR1020237009851A KR20237009851A KR20230078655A KR 20230078655 A KR20230078655 A KR 20230078655A KR 1020237009851 A KR1020237009851 A KR 1020237009851A KR 20237009851 A KR20237009851 A KR 20237009851A KR 20230078655 A KR20230078655 A KR 20230078655A
Authority
KR
South Korea
Prior art keywords
layer
dnn
parameters
bit
width
Prior art date
Application number
KR1020237009851A
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 퀄컴 인코포레이티드
Publication of KR20230078655A publication Critical patent/KR20230078655A/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
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/217Validation; Performance evaluation; Active pattern learning techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/241Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
    • G06F18/2413Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on distances to training or reference patterns
    • G06F18/24133Distances to prototypes
    • 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
    • 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/0464Convolutional networks [CNN, ConvNet]
    • 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/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • 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
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • 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
    • G06N3/084Backpropagation, e.g. using gradient descent

Landscapes

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

Abstract

딥 신경망 (deep neural network; DNN) 에 의해 수행되는 방법은 추론 스테이지 동안 DNN 의 계층에서, DNN 에서 수신된 DNN 입력과 연관된 컨텐츠를 포함하는 계층 입력을 수신하는 단계를 포함한다. 본 방법은 또한, 계층 입력의 컨텐츠에 기초하여 계층과 연관된 복수의 파라미터들 중 하나 이상의 파라미터들을 양자화하는 단계를 포함한다. 본 방법은 DNN 입력에 대응하는 태스크를 수행하는 단계를 더 포함하고, 태스크는 하나 이상의 양자화된 파라미터들로 수행된다.

Description

에너지 효율적인 딥 러닝을 위한 동적 양자화
관련 출원들에 대한 상호 참조
본 출원은 2020 년 9 월 29 일자로 출원되고, 명칭이 "DYNAMIC QUANTIZATION FOR ENERGY EFFICIENT DEEP LEARNING" 인 미국 가출원 제 63/084,902 호에 대한 우선권을 주장하는, 2021 년 9 월 28 일자로 출원되고, 명칭이 "DYNAMIC QUANTIZATION FOR ENERGY EFFICIENT DEEP LEARNING" 인 미국 특허출원 제 17/488,261 호의 이익을 주장하며, 그 개시 내용들은 본원에 전체적으로 참조로 명백하게 포함된다.
기술 분야
본 개시의 양태들은 일반적으로 에너지 효율적인 딥 러닝 신경망들을 위한 동적 양자화에 관한 것이다.
컨볼루션 신경망, 이를 테면, DCNN (deep convolutional neural network) 은 대량의 계산 및 저장 리소스들을 사용할 수도 있다. 이와 같이, 제한된 리소스들을 갖는 시스템들, 이를 테면, 클라우드 시스템들, 임베디드 시스템들, 또는 연합 학습 시스템들 상에 통상의 신경망들을 배치하는 것이 곤란할 수 있다. 일부 통상적인 신경망들은 프로세서 부하 및/또는 메모리 사용을 감소시키기 위해 프루닝되고/되거나 양자화된다. 계산 및 저장 리소스들을 감소시키기 위해 양자화 방법들을 개선하는 것이 바람직하다.
본 개시의 일부 양태에서, DNN (deep neural network) 에 의해 수행된 방법이 개시된다. 본 방법은, 추론 스테이지 동안 DNN 의 계층에서, DNN 에서 수신된 DNN 입력과 연관된 컨텐츠를 포함하는 계층 입력을 수신하는 단계를 포함한다. 본 방법은 또한, 계층 입력의 컨텐츠에 기초하여 계층과 연관된 복수의 파라미터들 중 하나 이상의 파라미터들을 양자화하는 단계를 포함한다. 본 방법은 DNN 입력에 대응하는 태스크를 수행하는 단계를 더 포함하고, 태스크는 하나 이상의 양자화된 파라미터들로 수행된다.
본 개시의 다른 양태는 추론 스테이지 동안 DNN 의 계층에서, DNN 에서 수신된 DNN 입력과 연관된 컨텐츠를 포함하는 계층 입력을 수신하기 위한 수단을 포함하는 장치에 관한 것이다. 본 장치는 또한, 계층 입력의 컨텐츠에 기초하여 계층과 연관된 복수의 파라미터들 중 하나 이상의 파라미터들을 양자화하기 위한 수단을 포함한다. 본 장치는 DNN 입력에 대응하는 태스크를 수행하기 위한 수단을 더 포함하고, 태스크는 하나 이상의 양자화된 파라미터들로 수행된다.
본 개시의 또 다른 양태에서, 비-일시적인 프로그램 코드가 기록된 비-일시적인 컴퓨터 판독가능 매체가 개시된다. 프로그램 코드는 DNN 에 대한 것이다. 프로그램 코드는 프로세서에 의해 실행되고, 추론 스테이지 동안 DNN 의 계층에서, DNN 에서 수신된 DNN 입력과 연관된 컨텐츠를 포함하는 계층 입력을 수신하는 프로그램 코드를 포함한다. 프로그램 코드는 또한, 계층 입력의 컨텐츠에 기초하여 계층과 연관된 복수의 파라미터들 중 하나 이상의 파라미터들을 양자화하는 프로그램 코드를 포함한다. 프로그램 코드는 DNN 입력에 대응하는 태스크를 수행하는 프로그램 코드를 더 포함하고, 태스크는 하나 이상의 양자화된 파라미터들로 수행된다.
본 개시의 다른 양태는 장치에 대해 교시된다. 본 장치는 프로세서, 프로세서에 커플링된 메모리, 및 메모리에 저장된 명령들을 갖는다. 명령들은 프로세서에 의해 실행될 때, 장치로 하여금 추론 스테이지 동안 DNN 의 계층에서, DNN 에서 수신된 DNN 입력과 연관된 컨텐츠를 포함하는 계층 입력을 수신하게 하도록 동작가능하다. 명령들은 또한, 장치로 하여금, 계층 입력의 컨텐츠에 기초하여 계층과 연관된 복수의 파라미터들 중 하나 이상의 파라미터들을 양자화하게 한다. 명령들은 추가적으로 장치로 하여금, DNN 입력에 대응하는 태스크를 수행하게 하고, 태스크는 하나 이상의 양자화된 파라미터들로 수행된다.
양태들은 일반적으로, 첨부 도면들 및 명세서를 참조하여 본 명세서에서 실질적으로 설명되는 바와 같은 그리고 첨부 도면들 및 명세서에 의해 예시된 바와 같은 방법, 장치, 시스템, 컴퓨터 프로그램 제품, 비일시적 컴퓨터 판독가능 매체, 사용자 장비, 기지국, 무선 통신 디바이스, 및 프로세싱 시스템을 포함한다.
전술한 것은 다음에 오는 상세한 설명이 더 잘 이해될 수도 있도록 본 개시에 따른 예들의 피처들 및 기술적 이점들을 다소 폭넓게 서술하였다. 추가적인 피처들 및 이점들이 이하에 설명될 것이다. 개시된 개념 및 특정 예들은 본 개시의 동일한 목적들을 수행하기 위해 다른 구조들을 수정 또는 설계하기 위한 기초로서 용이하게 활용될 수도 있다. 그러한 등가의 구성들은 첨부된 청구항들의 범위에서 벗어나지 않는다. 개시된 개념들의 특성들, 그들의 조직 및 동작 방법 양자 모두는, 연관된 이점들과 함께, 첨부 도면들과 관련하여 고려될 경우에 다음의 설명으로부터 더 잘 이해될 것이다. 도면들의 각각은 예시 및 설명의 목적을 위해 제공되고, 청구항들의 한계들의 정의로서 제공되지는 않는다.
본 개시의 피처들, 성질, 및 이점들은 도면들과 함께 취해질 경우에 하기에 기재된 상세한 설명으로부터 더 명백하게 될 것이며, 도면들에 있어서 동일한 참조 부호들은 전반에 걸쳐 대응하게 식별한다.
도 1 은 본 개시의 소정의 양태들에 따른 범용 프로세서를 포함하는, 시스템-온-칩 (SOC) 을 사용하여 신경망을 설계하는 예시의 구현을 도시한다.
도 2a, 도 2b 및 도 2c 는 본 개시의 양태들에 따른 신경망을 예시하는 다이어그램들이다.
도 2d 는 본 개시의 양태들에 따른 예시적인 딥 컨볼루션 네트워크 (DCN) 를 도시하는 다이어그램이다.
도 3 은 본 개시의 양태들에 따른 예시적인 딥 컨볼루션 네트워크 (DCN) 를 도시하는 블록 다이어그램이다.
도 4a 는 본 개시의 양태들에 따라, 신경망 모델의 일 예를 예시하는 블록 다이어그램이다.
도 4b 는 본 개시의 양태들에 따라, 비트-폭 선택기의 일 예를 예시하는 블록 다이어그램이다.
도 5 는 본 개시의 양태들에 따른, 입력에 기초하여 계층의 하나 이상의 채널들에 대한 양자화 레벨을 선택하는 비트-폭 선택기의 예를 예시하는 블록 다이어그램이다.
도 6 은 본 개시의 여러 양태들에 따라, 예를 들어, 트레이닝된 딥 신경망에 의해 수행되는 예시적인 프로세스를 도시한 플로우 다이어그램이다.
첨부된 도면들과 관련하여, 아래에 제시되는 상세한 설명은, 다양한 구성들의 설명으로서 의도되며, 본 명세서에 설명된 개념들이 실시될 수도 있는 구성들만을 표현하도록 의도되지 않는다. 상세한 설명은 다양한 개념들의 철저한 이해를 제공하기 위해 특정 상세들을 포함한다. 그러나, 이 개념들은 이러한 특정 상세들 없이도 실시될 수도 있음이 당업자들에게 명백할 것이다. 일부 경우들에서, 잘 알려진 구조들 및 컴포넌트들은 그러한 개념들을 불명료하게 하는 것을 회피하기 위해 블록 다이어그램 형태로 나타낸다.
독립적으로 또는 본 개시의 임의의 다른 양태들과 결합하여 구현될지 또는 독립적으로 구현될지에 따라, 본 교시들에 기초하여, 당업자들은 본 개시의 범위가 본 개시의 임의의 양태를 포괄하고자 함을 이해해야 할 것이다. 예를 들어, 기술된 임의의 수의 양태를 이용하여 장치가 구현될 수도 있거나 방법이 실시될 수도 있다. 추가적으로, 본 개시의 범위는, 설명된 본 개시의 다양한 양태들에 부가한 또는 그 이외의 구조 및 기능, 또는 다른 구조, 기능을 이용하여 실시되는 그러한 장치 또는 방법을 커버하도록 의도된다. 개시된 본 개시의 임의의 양태는 청구항의 하나 이상의 엘리먼트들에 의해 구현될 수도 있음을 이해해야 한다.
단어 "예시적인" 은 "예, 실례, 또는 예시로서 역할을 하는 것"을 의미하도록 사용된다. "예시적인" 것으로서 설명된 임의의 양태가 반드시 다른 양태들에 비해 유리하거나 또는 바람직한 것으로서 해석되어야 하는 것은 아니다.
특정 양태들이 본 명세서에서 설명되어 있지만, 이들 양태들의 많은 변형들 및 치환들이 본 개시의 범위에 속한다. 선호된 양태들의 일부 이익들 및 이점들이 언급되지만, 본 개시의 범위는 특정 이익들, 사용들, 또는 목적들로 한정되도록 의도되지 않는다. 대신, 본 개시의 양태들은 상이한 기술들, 시스템 구성들, 네트워크들 및 프로토콜들에 널리 적용가능하도록 의도되며, 이들 중 일부는 도면들에서, 그리고 선호된 양태들의 다음의 설명에서 예로써 예시된다. 상세한 설명 및 도면들은 제한적이기보다는 본 개시의 예시일 뿐이며, 본 개시의 범위는 첨부된 청구항들 및 그 등가물들에 의해 정의된다.
DCNN들 (deep convolutional neural networks) 은 여러 태스크들, 이를 테면, 예를 들어, 컴퓨터 비전, 음성 인식, 및 자연어 프로세싱에 대해 특정될 수도 있다. 통상적인 DCNN들은 많은 수의 가중치들 및 파라미터들을 포함할 수 있고, 컴퓨트 집약적일 수 있다. 따라서, DCNN들의 배치는 제한된 리소스들, 이를 테면, 제한된 계산 파워 및/또는 제한된 메모리 용량을 갖는 임베디드 디바이스들 상에서 곤란할 수도 있다. DCNN 은 또한 DNNs (deep neural network) 또는 DCN (deep convolutional network) 로 지칭될 수 있다. DCNN 은 3개 이상의 총 계층들을 포함할 수 있으며, 하나의 계층은 은닉 계층이다.
DNN들의 계산 집약적 특성으로 인해, 모델 사이즈 및 계산 비용을 런-타임에서 동적으로 감소시키는 것이 바람직할 수 있다. 종래의 시스템들은 분리가능 필터들을 적용하고, 가중치들을 프로닝하고/하거나 비트-폭을 감소시키는 것에 의해 모델 사이즈 및 계산 복잡도를 감소시킨다. 추가적으로, 종래의 시스템들은 트레이닝 동안 모델 사이즈 및 계산 복잡도를 감소시킬 수 있다. 이러한 종래의 시스템들은 입력의 컨텐츠, 이를 테면, 피처들에 기초하여 테스트 (예를 들어, 런타임) 동안 모델 사이즈 및 계산 비용을 동적으로 감소시키지 않는다.
일부 예들에서, 모델 사이즈 및 계산 비용을 감소시키기 위해 비트-폭이 감소될 수 있다. 비트-폭 감소는 연속적인 실수 값들을 이산 정수들에 맵핑하는 양자화 프로세스를 포함한다. 여전히, 비트-폭을 감소시키는 것은 양자화 에러를 증가시킬 수 있고, 그에 의해 DNN의 정확도를 감소시킬 수 있다. 이와 같이, 모델의 정확도와 모델의 효율 사이에는 트레이드-오프가 있다. 모델 정확도와 모델 효율 사이의 트레이드-오프를 최적화하기 위해, 종래의 시스템들은 리소스 버짓에 기초하여 정확도를 최적화하도록 모델들을 트레이닝 (예를 들어, 조정) 한다. 즉, 상이한 모델들은 상이한 리소스 버짓들에 따라 트레이닝될 수 있다. 상이한 리소스 버짓들에 따라 상이한 모델들을 트레이닝하는 것은 동적 비트-폭 조정을 방지할 수 있다.
일부 종래의 시스템들은 유연하고 확장가능한 단일 모델을 트레이닝시킨다. 예를 들어, 각각의 계층에서 폭-배수를 변경하는 것에 의해 채널들의 수를 조절할 수 있다. 다른 예로서, 심도, 폭, 및 커널 사이즈는 동적으로 조정될 수도 있다. 여전히, 이들 종래의 시스템들은 가중치 비트-폭 및/또는 활성화 비트-폭을 동적으로 조정하지 않는다.
본 개시의 양태들은 사용된 리소스들 (예를 들어, 프로세서, 배터리, 및/또는 메모리 리소스들) 의 수를 감소시키는 것과 추론 정확도 사이의 트레이드-오프를 최적화하기 위해 트레이닝된 모델의 각각의 계층의 양자화 레벨을 동적으로 선택하는 동적 양자화 방법에 관한 것이다. 이러한 양태들에서, 동적 양자화 방법은 트레이닝된 모델의 테스트 (예를 들어, 런타임) 동안 수행될 수 있다.
도 1 은 시스템-온-칩 (SOC)(100) 의 일 예의 구현을 예시하며, 이는 본 개시의 특정 양태들에 따라 동적 비트폭 양자화를 위하여 구성되는 중앙 프로세싱 유닛 (CPU)(102) 또는 멀티-코어 CPU 를 포함할 수도 있다. 변수들 (예를 들어, 뉴럴 신호들 및 시냅스(synaptic) 가중치들), 계산 디바이스와 연관된 시스템 파라미터들 (예를 들어, 가중치들을 갖는 신경망), 지연들, 주파수 빈 정보, 및 태스크 정보는 뉴럴 프로세싱 유닛 (NPU)(108) 과 연관된 메모리 블록, CPU (102) 와 연관된 메모리 블록, 그래픽 프로세싱 유닛 (GPU)(104) 과 연관된 메모리 블록, 디지털 신호 프로세서 (DSP)(106) 와 연관된 메모리 블록, 메모리 블록 (118) 에 저장될 수도 있거나, 또는 다수의 블록들에 걸쳐 분산될 수도 있다. CPU (102) 에서 실행되는 명령들은 CPU (102) 와 연관된 프로그램 메모리로부터 로딩될 수도 있거나 메모리 블록 (118) 으로부터 로딩될 수도 있다.
SOC (100) 는 또한, GPU (104), DSP (106), 5세대 (5G) 접속성, 4세대 롱 텀 에볼루션 (4G LTE) 접속성, Wi-Fi 접속성, USB 접속성, 블루투스 접속성 등을 포함할 수도 있는 연결성 블록 (110), 및 예를 들어, 제스처들을 검출 및 인식할 수도 있는 멀티미디어 프로세서 (112) 와 같은, 특정 기능들에 맞게 조정된 부가 프로세싱 블록들을 포함할 수도 있다. 일 구현에서, NPU 는 CPU, DSP, 및/또는 GPU 에서 구현된다. SOC (100) 는 또한 센서 프로세서 (114), 이미지 신호 프로세서들 (ISP들)(116), 및/또는 내비게이션 모듈 (120) 을 포함할 수 있으며, 이는 글로벌 포지셔닝 시스템을 포함할 수도 있다.
SOC (100) 는 ARM 명령 세트에 기초할 수도 있다. 본 개시의 일 양태에서, 범용 프로세서 (102) 에 로딩된 명령들은 DNN 에서 수신된 입력의 컨텐츠를 식별하고; 입력의 컨텐츠에 기초하여 DNN 의 계층의 복수의 파라미터들 중 하나 이상의 파라미터들을 양자화하고; 그리고 입력에 대응하는 태스크를 수행하는 코드를 포함할 수도 있다. 태스크는 양자화된 파라미터로 수행될 수도 있다.
딥 러닝 아키텍처들은 각각의 계층에서 연속적으로 추상화의 더 높은 레벨들로 입력들을 나타내는 것을 학습하는 것에 의해 객체 인식 태스크를 수행함으로써, 입력 데이터의 유용한 피처 표현을 구축할 수도 있다. 이러한 방식으로, 딥 러닝은 전형적인 머신 러닝의 주요 병목현상을 해결한다. 딥 러닝의 도래 이전에, 객체 인식 문제에 대한 머신 러닝 접근법은 아마도 얕은 분류기 (shallow classifier) 와 조합으로, 인간 공학기술 (human engineered) 피처들에 크게 의존했을 수도 있다. 얕은 분류기는 예를 들어, 입력이 어느 클래스에 속하는지를 예측하기 위해 피처 벡터 성분들의 가중 합이 임계치와 비교될 수 있는, 2-클래스 선형 분류기일 수도 있다. 인간 공학기술 피처들은 도메인 전문지식을 갖는 엔지니어에 의해 특정 문제 도메인에 맞게 조정된 템플릿들 또는 커널들일 수도 있다. 이와 대조적으로, 딥 러닝 아키텍처는 인간 엔지니어가 설계할 수도 있는 것과 유사하지만, 트레이닝을 통해 피처들을 나타내는 것을 학습할 수도 있다. 또한, 딥 네트워크는 인간이 고려하지 않았을 수도 있는 새로운 타입의 피처들을 나타내고 인식하는 것을 학습할 수도 있다.
딥 러닝 아키텍처는 피처들의 계층 구조를 학습할 수도 있다. 예를 들어, 시각적 데이터로 제시되면, 제 1 계층은 입력 스트림에서, 에지들과 같은 비교적 간단한 피처들을 인식하는 것을 학습할 수도 있다. 다른 예에서, 청각적 데이터로 제시되면, 제 1 계층은 특정 주파수들에서의 스펙트럼 전력을 인식하는 것을 학습할 수도 있다. 제 1 계층의 출력을 입력으로서 취하는 제 2 계층은, 시각 데이터에 대한 간단한 형상들 또는 청각 데이터에 대한 사운드들의 조합들과 같은 피처들의 조합들을 인식하는 것을 학습할 수도 있다. 예를 들어, 상위 계층들은 시각적 데이터에서의 복잡한 형상들 또는 청각적 데이터에서의 단어들을 나타내는 것을 학습할 수도 있다. 여전히 상위 계층들은 공통 시각적 객체들 또는 구어체들을 인식하는 것을 학습할 수도 있다.
딥 러닝 아키텍처들은 자연스러운 계층 구조를 갖는 문제들에 적용될 때 특히 잘 수행할 수도 있다. 예를 들어, 모터구동 차량들 (motorized vehicle) 의 분류는 휠들, 윈드쉴드들 및 다른 피처들을 인식하는 것을 먼저 학습하는 것으로 이익을 얻을 수 있다. 이러한 피처들은 자동차, 트럭, 및 비행기를 인식하기 위해 상이한 방식들로 상위 계층에서 조합될 수도 있다.
신경망들은 다양한 연결성 패턴들로 설계될 수도 있다. 피드-포워드 네트워크들에서, 정보는 하위 계층에서 상위 계층으로 전달되고, 주어진 계층에서의 각각의 뉴런은 상위 계층들에서의 뉴런들에 통신한다. 계층적 표현은 상술한 바와 같이, 피드-포워드 네트워크의 연속적인 계층들에 구축될 수도 있다. 신경망들은 또한 순환 (recurrent) 또는 피드백 (또한 하향식이라 함) 연결들을 가질 수도 있다. 순환 연결에서, 주어진 계층의 뉴런으로부터의 출력은 동일한 계층의 다른 뉴런으로 통신될 수도 있다. 순환 아키텍처는 시퀀스로 신경망에 전달되는 입력 데이터 청크들 중 하나보다 많은 청크들에 걸쳐 있는 패턴들을 인식하는데 도움이 될 수도 있다. 주어진 계층의 뉴런에서 하위 계층의 뉴런으로의 연결은 피드백 (또는 하향식) 연결이라고 한다. 많은 피드백 연결들을 갖는 네트워크는 하이-레벨 개념의 인식이 입력의 특정 로우-레벨 피처들을 식별하는 것을 보조할 수도 있을 때 도움이 될 수도 있다.
신경망의 계층들 사이의 연결들은 완전 연결되거나 국부적으로 연결될 수도 있다. 도 2a 는 완전 연결 연결된 신경망 (202) 의 예를 도시한다. 완전 연결된 신경망 (202) 에서, 제 1 계층에서의 뉴런은 제 2 계층에서의 모든 뉴런에 그의 출력을 통신할 수도 있으므로, 제 2 계층에서의 각각의 뉴런이 제 1 계층에서의 모든 뉴런으로부터 입력을 수신할 것이다. 도 2b 는 국부적으로 연결된 신경망 (204) 의 예를 도시한다. 국부적으로 연결된 신경망 (204) 에서, 제 1 계층에서의 뉴런은 제 2 계층에서의 제한된 수의 뉴런들에 연결될 수도 있다. 보다 일반적으로, 국부적으로 연결된 신경망 (204) 의 국부적으로 연결된 계층은 계층에서의 각각의 뉴런이 동일하거나 유사한 연결성 패턴을 가질 것이지만, 상이한 값들 (예를 들어, 210, 212, 214, 및 216) 을 가질 수도 있는 연결 강도들을 갖도록 구성될 수도 있다. 국부적으로 연결된 연결성 패턴은 상위 계층에서 공간적으로 별개의 수용 필드들을 발생할 수도 있는데, 이는 주어진 영역에서 상위 계층 뉴런들이 네트워크에 대한 총 입력의 제한된 부분의 특성들에 대한 트레이닝을 통해 튜닝되는 입력들을 수신할 수도 있기 때문이다.
국부적으로 연결된 신경망의 일 예는 컨볼루션 신경망이다. 도 2c 는 컨볼루션 신경망 (206) 의 예를 도시한다. 컨볼루션 신경망 (206) 는 제 2 계층에서의 각각의 뉴런에 대한 입력들과 연관된 연결 강도들이 공유되도록 (예를 들어, 208) 구성될 수도 있다. 컨볼루션 신경망들은 입력들의 공간적 위치가 의미있는 문제들에 매우 적합할 수도 있다.
컨볼루션 신경망의 하나의 유형은 딥 컨볼루션 네트워크 (DCN) 이다. 도 2d 는 자동차-탑재형 (car-mounted) 카메라와 같은 이미지 캡처 디바이스 (230) 로부터 입력된 이미지 (226) 로부터 시각적 피처들을 인식하도록 설계된 DCN (200) 의 상세한 예를 도시한다. 본 예의 DCN (200) 은 교통 표지판 및 교통 표지판 상에 제공된 번호를 식별하도록 트레이닝될 수도 있다. 물론, DCN (200) 은 차선 마킹들을 식별하거나 교통 신호등 들을 식별하는 것과 같은 다른 태스크들을 위해 트레이닝될 수도 있다.
DCN (200) 은 지도 학습으로 트레이닝될 수도 있다. 트레이닝 동안, DCN (200) 은 속도 제한 표지판의 이미지 (226) 와 같은 이미지로 제시될 수도 있고, 그 후 순방향 패스가 출력 (222) 을 생성하기 위해 계산될 수도 있다. DCN (200) 은 피처 추출 섹션 및 분류 섹션을 포함할 수도 있다. 이미지 (226) 를 수신하면, 컨볼루션 계층 (232) 은 이미지 (226) 에 컨볼루션 커널들 (미도시) 을 적용하여 피처 맵들 (218) 의 제 1 세트를 생성할 수도 있다. 예로서, 컨볼루션 계층 (232) 에 대한 컨볼루션 커널은 28x28 피처 맵들을 생성하는 5x5 커널일 수도 있다. 본 예에서, 4개의 상이한 피처 맵이 피처 맵들의 제 1 세트 (218) 에서 생성되기 때문에, 4개의 상이한 컨볼루션 커널이 컨볼루션 계층 (232) 에서 이미지 (226) 에 적용되었다. 컨볼루션 커널들은 또한 필터들 또는 컨볼루션 필터들로 지칭될 수도 있다.
피처 맵들의 제 1 세트 (218) 는 피처 맵들의 제 2 세트 (220) 를 생성하기 위해 최대 풀링 계층 (미도시) 에 의해 서브샘플링될 수도 있다. 최대 풀링 계층은 피처 맵들 (218) 의 제 1 세트의 사이즈를 감소시킨다. 즉, 14x14 와 같은 피처 맵들의 제 2 세트 (220) 의 사이즈는 28x28 과 같은 피처 맵들의 제 1 세트 (218) 의 사이즈보다 작다. 감소된 사이즈는 메모리 소비를 감소시키면서 후속 계층에 유사한 정보를 제공한다. 피처 맵들의 제 2 세트 (220) 는 추가로, 피처 맵들의 하나 이상의 후속 세트 (미도시) 를 생성하기 위해 하나 이상의 후속 컨볼루션 계층 (미도시) 을 통해 컨볼루션될 수도 있다.
도 2d 의 예에서, 피처 맵들의 제 2 세트 (220) 는 제 1 피처 벡터 (224) 를 생성하도록 컨볼루션된다. 또한, 제 1 피처 벡터 (224) 는 제 2 피처 벡터 (228) 를 생성하도록 추가로 컨볼루션된다. 제 2 피처 벡터 (228) 의 각각의 피처는 "표지판", "60" 및 "100" 과 같은 이미지 (226) 의 가능한 피처에 대응하는 수를 포함할 수도 있다. 소프트맥스 함수 (softmax function)(미도시) 는 제 2 피처 벡터 (228) 에서의 수들을 확률로 변환할 수도 있다. 이와 같이, DCN (200) 의 출력 (222) 은 하나 이상의 피처를 포함하는 이미지 (226) 의 확률이다.
본 예에서, "표지판" 및 "60" 에 대한 출력 (222) 에서의 확률들은 "30", "40", "50", "70", "80", "90" 및 "100" 과 같은 출력 (222) 의 다른 것들의 확률들보다 높다. 트레이닝 전에, DCN (200) 에 의해 생성된 출력 (222) 은 부정확할 가능성이 있다. 따라서, 출력 (222) 과 타겟 출력 사이에 에러가 계산될 수도 있다. 타겟 출력은 이미지 (226) 의 실측 자료 (ground truth)(예를 들어, "표지판" 및 "60") 이다. DCN (200) 의 가중치들은 그 후 DCN (200) 의 출력 (222) 이 타겟 출력과 더 밀접하게 정렬되도록 조정될 수도 있다.
가중치들를 조정하기 위해, 러닝 알고리즘은 가중치들에 대한 경사 벡터를 계산할 수도 있다. 경사도는 가중치가 조정되었으면 에러가 증가 또는 감소할 양을 표시할 수도 있다. 최상위 계층에서, 경사도는 끝에서 두번째 계층에서의 활성화된 뉴런 및 출력 계층에서의 뉴런을 연결하는 가중치의 값에 직접 대응할 수도 있다. 하위 계층들에서, 경사도는 가중치들의 값 및 상위 계층들의 계산된 에러 경사도들에 의존할 수도 있다. 가중치들은 그 후 에러를 감소시키기 위해 조정될 수도 있다. 가중치를 조정하는 이러한 방식은 신경망를 통한 "역방향 패스" 를 수반하기 때문에 "역 전파" 로 지칭될 수도 있다.
실제로, 가중치들의 에러 경사도는 작은 수의 예들에 걸쳐 계산될 수도 있어서, 계산된 경사도는 실제 에러 경사도에 근사한다. 이러한 근사화 방법은 확률적 경사 하강법 (stochastic gradient descent) 으로 지칭될 수도 있다. 확률적 경사 하강법은 전체 시스템의 달성가능한 에러율이 감소하는 것을 멈출 때까지 또는 에러율이 타겟 레벨에 도달할 때까지 반복될 수도 있다. 학습 후, DCN 이 새로운 이미지들 (예를 들어, 이미지 (226) 의 속도 제한 표지판) 로 제시될 수도 있고, 네트워크를 통한 순방향 패스가 DCN 의 추론 또는 예측으로 간주될 수도 있는 출력 (222) 을 산출할 수도 있다.
DBN (deep belief network) 은 은닉된 노드들의 다중 계층들을 포함하는 확률 모델이다. DBN 은 트레이닝 데이터 세트의 계층구조적 표현을 추출하는데 사용될 수도 있다. DBN 은 제한된 볼츠만 머신 (Restricted Boltzmann Machines)(RBM) 의 계층들을 적층하여 획득될 수도 있다. RBM 은 입력들의 세트에 걸친 확률 분포를 학습할 수 있는 인공 신경망의 타입이다. RBM들은 각각의 입력이 카테고리화되어야 하는 클래스에 관한 정보의 부재 시 확률 분포를 학습할 수 있기 때문에, RBM들은 종종 비지도 학습에 사용된다. 하이브리드 비지도 및 지도 패러다임을 사용하여, DBN 의 최하위 RBM들은 비지도 방식으로 트레이닝될 수도 있고 피처 추출기들로서 작용할 수도 있으며, 최상위 RBM 은 (이전 계층 및 타겟 클래스들로부터의 입력들의 공동 분포에 대해) 지도 방식으로 트레이닝될 수도 있고 분류기로서 작용할 수도 있다.
딥 컨볼류션 네트워크 (DCN) 는 부가 풀링 및 정규화 계층들로 구성된, 컨볼루션 네트워크의 네트워크이다. DCN들은 많은 태스크들에 대해 최첨단 성능을 달성하였다. DCN들은 입력 및 출력 타겟들 양자 모두가 많은 예시들에 대해 알려져 있고 경사도 하강법 방법들의 사용에 의해 네트워크의 가중치들을 수정하는데 사용되는 지도 학습을 사용하여 트레이닝될 수 있다.
DCN 은 피드-포워드 네트워크일 수도 있다. 또한, 상술한 바와 같이, DCN 의 제 1 계층에서의 뉴런으로부터 다음 상위 계층에서의 뉴런들의 그룹으로의 연결들은 제 1 계층에서의 뉴런들에 걸쳐 공유된다. DCN들의 피드-포워드 및 공유 연결들은 빠른 프로세싱을 위해 이용될 수도 있다. DCN 의 계산 부담은 예를 들어, 순환 또는 피드백 연결들을 포함하는 유사하게 사이징된 신경망의 것보다 훨씬 적을 수도 있다.
컨볼루션 네트워크의 각각의 계층의 프로세싱은 공간적으로 불변 템플릿 또는 기저 투영으로 간주될 수도 있다. 입력이 컬러 이미지의 적색, 녹색 및 청색 채널들과 같은 다중 채널들로 먼저 분해되면, 그 입력에 대해 트레이닝된 컨볼루션 네트워크는 이미지의 축들을 따라 2개의 공간 차원 및 컬러 정보를 캡처하는 제 3 차원을 갖는, 3 차원으로 간주될 수도 있다. 컨볼루션 연결들의 출력들은 후속 계층에서 피처 맵을 형성하는 것으로 간주될 수도 있고, 피처 맵의 각각의 엘리먼트 (예를 들어, 220) 는 이전 계층에서의 뉴런들의 범위 (예를 들어, 피처 맵들 (218)) 로부터 그리고 다중 채널들 각각으로부터 입력을 수신한다. 피처 맵에서의 값들은 추가로, 정류, max(0,x) 와 같은 비선형성으로 프로세싱될 수도 있다. 인접한 뉴런들로부터의 값들은 추가로 풀링될 수도 있으며, 이는 다운 샘플링에 대응하고, 부가적인 로컬 불변 및 차원성 감소를 제공할 수도 있다. 화이트닝에 대응하는 정규화는, 또한 피처 맵에서의 뉴런들 사이의 측면 억제를 통해서 적용될 수도 있다.
딥 러닝 아키텍처들의 성능은 더 많은 라벨링된 데이터 포인트들이 이용가능하게 되거나 또는 계산 파워가 증가함에 따라 증가할 수도 있다. 현대의 딥 신경망는 불과 15년 전에 통상의 연구자에 이용가능했던 것보다 수천 배 더 큰 컴퓨팅 리소스들로 일상적으로 트레이닝된다. 새로운 아키텍처 및 교육 패러다임은 딥 러닝의 성능을 부스팅할 수도 있다. 정류된 선형 유닛들은 경사도 사라짐 (vanishing gradients) 으로 알려진 트레이닝 이슈를 감소시킬 수도 있다. 새로운 트레이닝 기법들은 오버-피팅 (over-fitting) 을 감소시킬 수도 있고, 따라서 더 큰 모델들이 우수한 일반화를 달성하는 것을 가능하게 한다. 캡슐화 기법들은 주어진 수용 필드에서 데이터를 추상화하고 추가로 전체 성능을 부스팅할 수도 있다.
도 3 은 딥 컨볼루션 네트워크 (350) 를 도시하는 블록 다이어그램이다. 딥 컨볼루셔널 네트워크 (350) 는 연결성 및 가중치 공유에 기초한 다수의 상이한 타입들의 계층들을 포함할 수도 있다. 도 3 에 나타낸 바와 같이, 딥 컨볼루션 네트워크 (350) 는 컨볼루션 블록들 (354A, 354B) 을 포함한다. 컨볼루션 블록들 (354A, 354B) 의 각각은 컨볼루션 계층 (CONV)(356), 정규화 계층 (LNorm)(358), 및 최대 풀링 계층 (MAX POOL)(360) 으로 구성될 수도 있다.
컨볼루션 계층들 (356) 은 피처 맵을 생성하기 위해 입력 데이터에 적용될 수도 있는 하나 이상의 컨볼루션 필터를 포함할 수도 있다. 컨볼루션 블록들 (354A, 354B) 중 2개만이 나타나 있지만, 본 개시는 그렇게 제한되지 않으며, 대신에, 설계 선호도에 따라 임의의 수의 컨볼루션 블록들 (354A, 354B) 이 딥 컨볼루션 네트워크 (350) 에 포함될 수도 있다. 정규화 계층 (358) 은 컨볼루션 필터들의 출력을 정규화할 수도 있다. 예를 들어, 정규화 계층 (358) 은 화이트닝 또는 측면 억제를 제공할 수도 있다. 최대 풀링 계층 (360) 은 로컬 불변 및 차원성 감소를 위해 공간에 걸쳐 다운 샘플링 집성을 제공할 수도 있다.
예를 들어, 딥 컨볼루션 네트워크의 병렬 필터 뱅크들은 고성능 및 저전력 소비를 달성하기 위해 SOC (100) 의 CPU (102) 또는 GPU (104) 상에 로딩될 수도 있다. 대안적인 실시형태들에서, 병렬 필터 뱅크들은 SOC (100) 의 DSP (106) 또는 ISP (116) 상에 로딩될 수도 있다. 또한, 딥 컨볼루션 네트워크 (350) 는 센서들 및 내비게이션에 각각 전용된, 센서 프로세서 (114) 및 내비게이션 모듈 (120) 과 같은 SOC (100) 상에 존재할 수도 있는 다른 프로세싱 블록들에 액세스할 수도 있다.
딥 컨볼루션 네트워크 (350) 는 또한 하나 이상의 완전히 연결된 계층 (362)(FC1 및 FC2) 을 포함할 수도 있다. 딥 컨볼루션 네트워크 (350) 는 로지스틱 회귀 (LR) 계층 (364) 을 더 포함할 수도 있다. 딥 컨볼루션 네트워크 (350) 의 각각의 계층 (356, 358, 360, 362, 364) 사이에는 업데이트될 가중치들 (미도시) 이 있다. 계층들 (예를 들어, 356, 358, 360, 362, 364) 각각의 출력은 컨볼루션 블록들 (354A) 중 첫번째에 공급된 입력 데이터 (352)(예를 들어, 이미지들, 오디오, 비디오, 센서 데이터 및/또는 다른 입력 데이터) 로부터 계층적 피처 표현들을 학습하기 위해 딥 컨볼루션 네트워크 (350) 에서 계층들 (예를 들어, 356, 358, 360, 362, 364) 중 후속하는 하나의 입력으로서 작용할 수도 있다. 딥 컨볼루션 네트워크 (350) 의 출력은 입력 데이터 (352) 에 대한 분류 스코어 (366) 이다. 분류 스코어 (366) 는 확률들의 세트일 수도 있으며, 여기서 각각의 확률은 피처들의 세트로부터의 피처를 포함하는, 입력 데이터의 확률이다.
논의된 바와 같이, DNN들 (deep neural networks) 은 계산 집약적일 수 있다. 이와 같이, DNN들은 시스템 리소스들의 사용, 이를 테면, 프로세서 부하 및/또는 메모리 사용을 증가시킬 수도 있다. 양자화는 가중치 및/또는 파라미터 비트-폭을 감소시키는 것에 의해 이진 계산과 같은 다수의 계산들을 감소시킬 수 있다. 그 결과, 양자화는 DNN 에 의해 사용되는 시스템 리소스의 양을 감소시키고 이에 의해 시스템 성능을 개선할 수 있다.
종래의 양자화 방법들은 정적이다. 예를 들어, 종래의 양자화 방법들은 DNN에 대한 입력에 적응하지 않는다. 추가적으로 또는 대안적으로, 종래의 양자화 방법들은 DNN을 실행하는 디바이스의 에너지 레벨에 적응하지 않는다. 본 발명의 양태들은 입력의 컨텐츠, 이를 테면, 피처들에 기초하여 양자화 레벨들을 적응적으로 선택하는 동적 양자화 방법에 대해 교시된다. 논의된 바와 같이, 일부 구현들에서, 신경망 (예를 들어, DNN (deep neural network)) 의 하나 이상의 계층들의 비트들은 추론 스테이지 (예를 들어, 테스트 스테이지) 에서 양자화될 수 있다.
본 개시의 양태들은 입력 또는 입력의 컨텐츠, 이를 테면, DNN 의 각각의 계층에서 추출된 피처들에 기초하여, 양자화 정밀도 (예를 들어, 비트-심도) 를 적응적으로 변화시키는 동적 양자화 방법을 제안한다. 하나의 구성에서, 비트-심도는 큰 비트-심도들에 패널티를 부과하는 L0 정규화 러닝에 기초하여 학습된다 (식 6 참조).
양자화는 계층별 양자화 (layer-wise quantization) 또는 계층별 및 채널별 양자화 (layer-wise and channel-wise quantization) 일 수도 있다. 일 구성에서, 모듈 (예를 들어, 계산/회로부) 는 신경망 계층(들)에 대한 입력 (예를 들어, 입력의 컨텐츠) 을 검사한다. 모듈의 출력은 신경망 계층(들)의 활성화들 및/또는 가중치들의 양자화량을 결정한다. 일부 예들에서, 각각의 계층 출력은 피처로 간주될 수 있다. 일부 구성들에서, 개별 모듈은 각각의 계층이 그 특정 계층에 대한 양자화의 양을 결정하도록 특정될 수 있다.
따라서, 활성화들 및 가중치들의 양자화는 입력에 기초하여 변경될 수 있다. 즉, 신경망에 대한 상이한 입력들에 의해, 신경망의 계층(들)에 의해 사용되는 활성화들 및/또는 가중치들의 양자화는 변할 수 있다. 입력들의 상이한 예들은 비트-레벨 계산 복잡도에서 통계적으로 현저한 델타를 생성하기 위해 활성화들 및/또는 가중치들에 대해 상이한 양자화 비트-심도들을 선택할 수 있다. 상이한 입력들의 예들은 고양이들 및 개를 분류하는 것과 같은 상이한 클래스들을 분류하기 위한 입력들, 또는 이미지 복원과 같은 이미지 프로세싱을 위한 상이한 입력들을 포함하며, 여기서 입력들은 낮은 광 이미지들 및 정상 광 이미지들일 수 있다. 일부 예들에서, 입력들은 이미지의 배경과 같은 배경에 기초하여 구별될 수 있다. 이러한 예들에서, 일부 입력들은 단순 배경 입력으로 분류될 수 있고, 다른 입력들은 복합 배경 입력으로 분류될 수 있다. 간단한 배경 입력들 및 복잡한 배경 입력들에 대해 상이한 비트들이 선택될 수 있다. 일부 예들에서, 더 높은 비트 심도들을 사용하는 연산자들은 더 낮은 수의 비트들을 사용하는 연산자들보다 더 오래 걸릴 수 있다. 예를 들어, 8-비트 곱셈 및 누산 동작들은 4-비트 곱셈 및 누산 동작들에 대해 구성될 수 있어서, 컨볼루션의 8-비트 버전은 4 비트 이하를 사용하는 것보다 더 오래 걸릴 수 있다.
일 구성에서, 게이팅 메커니즘은 이것이 신경망 프로세싱 계층(들)에 공급되기 전에 최하위 비트로부터 시작하여 활성화 비트들의 비트들을 감소/폐기하도록 특정될 수 있다 (예를 들어, 컨볼루션 계층에 입력될 수 있는 활성화들). 다른 게이팅 메커니즘은 나머지 비트들이 신경망 프로세싱 계층(들)에 사용되기 전에 최하위 비트로부터 시작하여 비트들 중 비트들을 감소/폐기하도록 특정될 수 있다 (예를 들어, 컨볼루션 계층에 의해 사용된 가중치들/바이어스들).
일 구성에서, 입력별-비트-레벨 계산 복잡도를 이용하기 위해, 추론 하드웨어는 계층 및/또는 채널 세분화도에서 비트-심도들의 동적 구성을 지원하도록 수정될 수 있다. 추론 하드웨어는 전력 사용 및/또는 레이턴시를 개선하기 위해 동적 비트-심도 선택을 활용할 수 있다. 일 예로서, 추론 하드웨어는 전력 소비를 감소시키고 그리고/또는 레이턴시를 감소시키기 위해 더 낮은 비트-심도를 사용할 수 있다.
일부 양태들에서, 비트-폭 선택기 계층은 신경망 모델 (예를 들어, DNN) 의 각각의 계층과 연관될 수 있다. 비트-폭 선택기는 계층별 비트-폭을 감소시키면서 분류 손실 (L) 을 최소화하도록 트레이닝될 수 있다. 도 4a 는 본 개시의 양태들에 따라, 신경망 모델 (400) 의 일 예를 예시하는 다이어그램이다. 신경망 모델 (400) 은 DNN 의 일 예일 수 있다. 도 4a 의 예에서, 신경망 모델 (400) 은 입력의 컨텐츠와 같은 (In 으로 도시된) 입력에 기초하여 계층별-비트-폭을 동적으로 조정할 수 있다. 일부 예들에서, 컨텐츠는 입력의 피처들일 수 있고, 여기서 피처들은 신경망 모델 (400) 의 하나 이상의 계층들 (402A, 402B, 402C) 에서 추출될 수 있다. 신경망 모델 (400) 의 계층들 (402A, 402B, 402C) 은 예시적인 목적들을 위해 제공된다. 신경망 모델 (400) 은 도 4a 에 도시된 바와 같이 3개의 계층들 (402A, 402B, 402C) 로 제한되지 않으며, 추가적인 또는 더 적은 계층들이 신경망 모델 (400) 에서 사용될 수 있다. 도 4a 의 예에서, 각각의 계층 (402A, 402B, 402C) 은 도 2 및 도 3 을 참조하여 설명된 컨볼루션 계층 (232, 356), 정규화 계층 (358), max 풀링 계층 (360), 완전 연결 계층 (362), 또는 로지스틱 회귀 계층 (364) 중 하나의 예일 수 있다.
도 4a 의 예에서, 각각의 계층 (402A, 402B, 402C) 은 비트-폭 선택기 (404A, 404B, 404C) 와 연관될 수 있다. 각각의 비트-폭 선택기 (404A, 404B, 404C) 는 데이터 의존적일 수 있고, 신경망 모델 (400) 의 계층일 수 있다. 추가적으로, 각각의 비트-폭 선택기 (404A, 404B, 404C) 는 또한 대응하는 계층 (402A, 402B, 402C) 에 대한 양자화 심도를 선택하기 위한 비트-폭 선택 함수 (σi) 를 구현할 수도 있다. 예를 들어, 도 4a 에 도시된 바와 같이, 제 1 계층 (402A) 및 제 1 비트-폭 선택기 (404A) 는 입력 (In) 을 수신할 수 있다. 입력 (예를 들어, 입력의 컨텐츠) 에 기초하여, 제 1 비트-폭 선택기 (404A) 는 제 1 계층 (402A) 에 대한 비트 폭 (φ1) 을 선택할 수 있다. 현재 예에서, 제 1 계층 (402A) 은 입력을 프로세싱하고 제 2 계층 (402B) 및 제 2 비트-폭 선택기 (404B) 에서 수신되는 출력을 생성할 수 있다. 이 예에서, 제 2 비트-폭 선택기 (404B) 는 제 1 계층 (402A) 의 출력에 기초하여 제 2 계층 (402B) 에 대한 비트 폭 (φ2) 을 선택한다. 프로세스는 제 3 계층 (402C) 에 대해 계속되어, 제 3 비트-폭 선택기 (404C) 는 제 2 계층 (402B) 의 출력에 기초하여 제 3 계층 (402C) 에 대한 비트-폭 (φ3) 을 선택한다.
본 개시의 양태들에 따르면, 각각의 계층에 대한 비트-폭 (φi) 는 트레이닝에 기초하여 선택될 수도 있다. 정규 항 (λ) 은 트레이닝 동안 특정될 수 있고 추론 동안 생략될 수 있다. 도 4a 의 예에서, 각각의 비트-폭 선택기 (404A, 404B, 404C) 로부터의 하향 화살표에 대응하는 출력 (λφi) 은 트레이닝 동안 생성될 수도 있고 추론 동안 생략될 수도 있다. 정규 항 (λ) 은 사용자에 의해 설정될 수 있으며, 디바이스 또는 태스크 특정적일 수 있다. 비트-폭 (φi) 은 또한 비트-심도로서 또한 지칭될 수도 있다. 도 4a 의 예에서, 각각의 비트-폭 선택기 (404A, 404B, 404C) 로부터의 상향 화살표는 대응하는 계층에 대한 비트-폭 (φi) 에 대응할 수도 있다. 논의된 바와 같이, 각각의 비트-폭 선택기 (404A, 404B, 404C) 에서 구현되는 비트-폭 선택 함수 (σi) 는 성능을 최적화하면서 큰 비트-폭들 및/또는 하나 이상의 연관된 복잡도 메트릭들에 패널티를 부과하도록 트레이닝될 수 있다. 트레이닝 및 추론 동안, 각각의 비트-폭 선택기 (404A, 404B, 404C) 의 출력은 도 4b 또는 도 5 를 참조하여 설명된 출력과 유사할 수 있다.
도 4b 는 본 개시의 양태들에 따라, 데이터 의존 비트-폭 선택기 (450) 의 일 예를 예시하는 블록 다이어그램이다. 도 4b 의 예에서, 비트-폭 선택기 (450) 는 도 4a 에 설명된 비트-폭 선택기들 (404A, 404B, 404C) 각각의 예일 수 있다. 도 4b 에 도시된 바와 같이, 비트-폭 선택기 (450) 는 글로벌 풀링 계층 (452), 정류된 선형 유닛 (ReLu) 활성화 함수를 구현하는 제 1 완전 연결 (FC) 계층 (454), 및 시그모이드 함수를 구현하는 제 2 완전 연결 계층 (456) 을 포함한다.
도 4b 의 예에서, 비트-폭 선택기 (450) 에 대한 입력은 글로벌 풀링 계층 (452) 에서 수신되고 1 x 1 x C 벡터로 축소될 수 있으며, 여기서 파라미터 C 는 비트-폭 선택기 (450) 에 대응하는 계층의 채널들의 수를 나타낸다. 제 1 완전 연결 계층 (454) 은 1 x 1 x C 벡터를 수신하여 차원
Figure pct00001
을 갖는 출력을 생성하고, 여기서
Figure pct00002
은 게이트들 (460A, 460B, 460C, 460D) 의 수에 대응하고, 파라미터 r 은 C 의 정수 제수인 감소 인수이다. 일 구성에서, r 은 하이퍼파라미터이다. 제 1 완전 연결 계층 (454) 의 출력은 제 2 완전 연결 계층 (456) 에서 수신된다. 제 2 완전 연결 계층 (456) 의 출력은 비트-폭 선택기 (450) 에 대해 특정된 다수의 게이트들 (gi)(460A, 460B, 460C, 460D) 에서 수신된다. 도 4b 의 예에서, 제 2 완전 연결 계층 (456) 의 출력은 제 1 게이트 (460A)(g3), 제 2 게이트 (460B)(g2), 제 3 게이트 (460C)(g1), 및 제 4 게이트 (460D)(g0) 에서 수신된다.
도 4b 의 예에서, 글로벌 풀링 계층 (452)(예를 들어, 글로벌 평균 풀링 계층) 은 입력 활성화/피처들의 정보를 결합하고 채널당 평균치와 같은 통계치들을 생성할 수 있다. 입력 피처들의 글로벌 디스크립터는 채널-별 통계치들에 기초하여 생성될 수도 있다. 글로벌 풀링 계층 (452) 에서 생성된 통계치들은 제 1 완전 연결 계층 (454) 을 사용하여 ReLu 또는 다른 비선형 활성화들과 결합될 수 있다. 제 2 완전 연결 계층 (456) 은 0 내지 1 의 범위를 제공하는 시그모이드 활성화를 구현할 수 있다. (도 4b 에 도시되지 않은) 비트 확장 계층은 제 2 완전 연결 계층 (456) 의 시그모이드 출력을 비트-폭 치수의 학습된 가중치들과 곱함으로써 출력 비트-폭 선택기 게이트들 (460A, 460B, 460C, 460D) 을 생성한다. 예를 들어, 비트 확장 계층은 8-비트 네트워크에 대한 비트-폭을 결정하기 위해 8개의 가중치들을 가질 수 있다.
일 구성에서, 더 낮은 유효 비트들은 더 높은 유효 비트들이 선택되는 경우에만 선택된다. 예에서, 데이터 의존 비트-폭 선택기 (450) 와 연관된 계층에 대한 최대 비트-폭은 데이터 의존 비트-폭 선택기 (450) 에 대해 특정된 게이트들 (gi)(460A, 460B, 460C, 460D) 의 수에 기초할 수도 있다. 이 예에서, 제 2 게이트 (460B)(g2), 제 3 게이트 (460C)(g1), 및 제 4 게이트 (460D)(g0) 와 연관된 비트들과 같은 더 낮은 유효 비트들은 제 1 게이트(460A)(g3) 와 연관된 비트와 같은 더 높은 유효 비트가 선택되면 선택될 수 있다. 일 구성에서, 게이트들 (460A, 460B, 460C, 460D)은 선형이거나 2의 거듭제곱에 기초한다.
도 4b 의 예에서, 비트-폭 선택기 (450) 의 아키텍처는 예시적이다. 본 개시의 신경망 모델은 도 4b 에 도시된 글로벌 풀링 계층 (452), 제 1 완전 연결 계층 (454) 및 제 2 완전 연결 계층 (456) 에 제한되지 않는다. 다른 계층 구성들이 고려된다.
트레이닝 동안, 도 4a를 참조하여 설명된 계층들 (402A, 402B, 402C) 과 같은 신경망 모델의 각각의 계층은 추론 동안 큰 비트-폭을 보상하는 손실 (
Figure pct00003
) 을 발생시킨다. 손실 (
Figure pct00004
) 은 희소 정규화 (sparse regularization)(L0) 일 수 있다. 각각의 계층은 또한 예측 또는 회귀 정확도와 같은 특정된 태스크에 대한 성능 손실 (Lp) 을 초래할 수 있다. 본 개시의 양태들은 설명된 예의 신경망들에만 한정되지는 않는다. 다른 네트워크 구성들이 고려된다. 일부 예들에서, 정규화 손실 (L0) 은 비트-레벨 동작들 (BOP들) 에 패널티를 부과할 수 있다. BOP 는 선택된 비트-폭과 계층 복잡도의 곱일 수 있다. 손실 함수는 하기와 같이 정의될 수도 있다.
Figure pct00005
여기서 파라미터 (L) 는 손실을 나타내고, 파라미터 (xi) 는 입력을 나타내고, 파라미터 (
Figure pct00006
) 는 활성화 비트-폭이고, 파라미터 (θ) 는 모델의 파라미터, 이를 테면, 도 4 의 신경망 모델 (400) 을 나타내고, 파라미터 (
Figure pct00007
) 는 가중치 비트-폭이고, 파라미터 (yi) 는 라벨이고, 파라미터 (
Figure pct00008
) 는 비트와이즈 정규화 (L0) 이고, 그리고 파라미터 (λ) 는 정규화를 위한 가중 인수를 나타낸다. 식 1 에서, N 은 트레이닝 예들의 총 수를 나타낸다. 식 1 의 첫번째 항 (
Figure pct00009
) 은 예측 (f()) 과 라벨 (yi) 사이의 모델 트레이닝 손실이다. 제 2 항 (
Figure pct00010
) 은 트레이닝 샘플 당 비트-폭 카운트/패널티이다.
정규화 손실 (L0) 은 이산적이며 이에 따라, 정규화 손실 (L0) 은 미분가능하지 않다. 비트-폭 (z) 은 베르누이 분포로부터 이산 샘플링으로서 표현될 수도 있다. 일 구성에서, z∼π=Bernoulli(φ) 이고, 여기서 파라미터 (φ) 는 계층에 대해 선택된 비트의 수를 나타내며 총 손실 (예를 들어, 정규화 손실 (L0) 및 성능 손실 (L)) 이 다음과 같이 기록될 수도 있다:
Figure pct00011
식 2 는 미분가능할 수 없고 이산적으로 샘플링될 수 있다. 일부 구현들에서, 원래의 문제는 각각의 계층에 대한 비트들의 수를 0 및 1 (예를 들어, φ ∈{0,1}) 로 제한함으로써 복구될 수 있다. 원래 문제들은 양자화 비트들을 선택하는 것에 의해 동적 양자화에 대해 해결하도록 복구될 수도 있다. 원래 문제는 이를 해결가능하게 하도록 재공식화될 수 있다. 재공식화된 정규화 항들은 미니배치 경사 하강법을 사용하여 최적화될 수도 있다. 추가적으로, 재공식화된 정규화 항은 분석적으로 평가될 수 있다. 식 3 은 정규화 항의 재공식화이다. 추가적으로, 식 3 은 미분가능할 수 있다:
Figure pct00012
설명된 바와 같이, 비트-심도 z 는 구별가능하지 않다. 비트-심도 z 는 시그모이드 함수를 적용하는 것에 의해 완화될 수 있다. 이진의 무작위 변수는 다음과 같이 샘플링될 수 있다:
Figure pct00013
식 4 에 기초하여, 비트-심도 (z) 는 (logφ+L)>0 이면 1 일 수도 있고 비트-심도 (z) 는 (logφ+L)<0 이면 0 일 수도 있다. 불연속 함수는 시그모이드로 대체될 수 있다:
Figure pct00014
총 손실 (예를 들어, 성능 손실 및 정규화 손실) 은 비트 수 (φ) 에 대해 미분가능할 수 있고, 따라서 확률적 경사도 기반 최적화를 가능하게 한다. 식 5 에서, 비트 수 (φ) 는 전체 신경망에 대한 비트 수를 나타낸다. 파라미터 (φ) 는 추론 동안 비트들의 수 (예를 들어, 비트-폭) 를 나타낸다. 트레이닝 동안, 파라미터 (φ) 는 확률 분포에 기초하여 선택된 평균/예상 비트-폭을 나타낸다.
식 1 에 설명된 바와 같이, 제 2 항 (
Figure pct00015
) 은 트레이닝 샘플 당 비트-폭 카운트/패널티이다. 일부 예들에서, 패널티는 조정된 비트-폭 및 복잡도 매트릭 (예를 들어, 계층과 연관된 복잡도 매트릭) 에 기초하여 결정된 비트-레벨 동작 중 하나에 패널티를 부과하는 비트와이즈 L0 정규화 손실일 수도 있고, 복수의 비트들은 조정된 비트-폭, 또는 복잡도 메트릭에 할당된다. 복잡도 메트릭은 조정된 비트-폭, 네트워크의 이진 동작들 (binary operations; BOPs), 메모리 풋프린트 (예를 들어, 중간 활성화들, 계산 파워 (power), 또는 다른 복잡도 메트릭들 중 하나 이상에 기초할 수 있다. 계산 파워는 BOP들, 메모리 대역폭, 및 신경망과 연관된 하드웨어의 전력 스케일링의 조합일 수 있다. 정규화 손실은 다음과 같이 정의될 수도 있다:
Figure pct00016
여기서, 파라미터 (qk) 는 비트-레벨 (k) 에서의 복잡도 메트릭을 나타내고, K 는 최대 비트-폭을 나타낸다. 일 예로서, 최대 비트-폭 (K) 이 8 이면, 비트 레벨 (k) 의 범위는 1 내지 8 일 수 있다. 각각의 비트-레벨 (k) 는 커스텀 복잡도 (qk) 를 초래한다. 예를 들어, 8비트 모두 (q8) 를 사용하는 것은 4비트 (q4) 를 사용하는 것보다 더 높은 비용을 가질 수 있다. 식 6 에서, 메트릭은 비트-폭, BOP들, 계산 복잡도, 메모리 풋프린트, 컴퓨터 파워, 또는 선택된 비트-레벨에서의 다른 메트릭 중 하나 이상일 수 있다.
도 4a 를 참조하여 설명된 바와 같이, 일부 양태들에서, 계층별 양자화 레벨은 입력에 기초하여 선택될 수도 있다. 추가적으로 또는 대안적으로, 양자화 레벨은 입력에 기초하여 각각의 채널에 대해 선택될 수 있다. 도 5 는 본 개시의 양태들에 따른, 입력에 기초하여 계층의 하나 이상의 채널들에 대한 양자화 레벨을 선택하는 비트-폭 선택기 (500) 의 예를 예시하는 블록 다이어그램이다. 도 5 의 예에서, 비트-폭 선택기 (500) 는 도 4a 에 설명된 비트-폭 선택기들 (404A, 404B, 404C) 각각의 예일 수 있다. 도 5 에 도시된 바와 같이, 비트-폭 선택기 (500) 는 글로벌 풀링 계층 (552), 정류된 선형 유닛 (ReLu) 활성화 함수를 구현하는 제 1 완전 연결 (FC) 계층 (554), 시그모이드 함수를 구현하는 제 2 완전 연결 계층 (556) 및 비트 확장 계층 (558) 을 포함한다. 도 5 의 글로벌 풀링 계층 (552), 제 1 완전 연결 계층 (554) 및 제 2 완전 연결 계층 (556) 은 도 4b 를 참조하여 설명된 글로벌 풀링 계층 (452), 제 1 완전 연결 계층 (454) 및 제 2 완전 연결 계층 (456) 과 동일한 동작들을 수행한다. 간결함을 위해, 글로벌 풀링 계층 (552), 제 1 완전 연결 계층 (554), 및 제 2 완전 연결 계층 (556) 의 동작들은 도 5 의 설명으로부터 생략될 것이다. 비트 확장 계층 (558) 은 비트-폭과 출력 채널들의 수 (Cout) 의 곱에 기초하여 비트들을 확장할 수 있다. 비트 확장 계층 (558) 은 출력 채널들의 수 (Cout) 의 각각의 채널에 대한 다수의 게이트를 생성할 수 있다. 예를 들어, 도 5 의 예에 도시된 바와 같이, 비트 확장 계층 (558) 은 (채널 1 로부터 채널 Cout 으로의 출력들로서 도시된)(Cout * 비트-폭) 출력들을 생성하며, 여기서 제 1 세트의 게이트들 (560A, 560B, 560C, 560D) 은 제 1 채널 (채널 1) 과 연관될 수도 있고, 제 2 세트의 게이트들 (562A, 562B, 562C, 562D) 은 마지막 채널 (Cout) 과 연관될 수 있다. 채널-별 비트-선택 네트워크의 이러한 예들에서, 비트-폭들은 신경망의 각각의 출력 계층에 대해 생성될 수 있다.
도 6 은 본 개시의 다양한 양태들에 따른, 예를 들어, DNN (deep neural network) 에 의해 수행되는 예시적인 프로세스 (600) 를 도시한 플로우 다이어그램이다. 예시적인 프로세스 (600) 는 딥 신경망에 대한 입력에 기초하여 계층의 파라미터를 동적으로 양자화하는 예이다.
도 6 에 도시된 바와 같이, 블록 (602) 에서, DNN 은 추론 스테이지 동안 DNN 의 계층에서, DNN 에서 수신된 DNN 입력과 연관된 컨텐츠를 포함하는 계층 입력을 수신한다. 계층은 도 4a 를 참조하여 설명된 계층들 (402A, 402B, 402C) 중 하나의 일 예일 수 있다. 블록 (604) 에서, DNN 은 계층 입력의 컨텐츠에 기초하여 계층과 연관된 복수의 파라미터들 중 하나 이상의 파라미터들을 양자화한다. 일부 예들에서, 다수의 파라미터들은 도 4b 를 참조하여 설명된 비트-폭 선택기 (450) 와 같은 비트-폭 선택기에 의해 양자화될 수 있다. 다수의 파라미터들은 가중치들의 세트 및 활성화들의 세트를 포함할 수 있다. 일부 예들에서, 하나 이상의 파라미터들을 양자화하는 것은 하나 이상의 파라미터들과 연관된 원래 비트-폭의 사이즈를 조정하는 것에 의해 조정된 비트-폭을 생성하는 것을 포함한다. 조정된 비트-폭은 원래 비트-폭의 사이즈가 입력의 컨텐츠에 기초하여 결정된 조정 비트-폭의 사이즈와 동일할 때까지 최하위 비트들로부터 최상위 비트들까지 원래 비트-폭의 비트들을 폐기하는 것에 의해 생성될 수 있다. 일부 이러한 예들에서, DNN 은 총 손실에 기초하여 원래 비트-폭을 조정하기 위한 사이즈를 결정하도록 트레이닝될 수 있으며, 총 손실은 성능 손실 및 정규화 손실의 함수이다. 성능 손실은 크로스-엔트로피 손실 (cross-entropy loss) 또는 평균 제곱 오차 (mean-squared error) 또는 다른 감독 손실 (supervised loss) 함수들을 결정할 수 있다. 추가적으로, 정규화 손실은 비트-레벨 동작과 연관된 조정된 비트-폭 및 복잡도 메트릭 중 하나, 또는 조정된 비트-폭에 할당된 비트들의 수에 페널티를 부과하는 비트와이즈 L0 정규화 손실일 수 있다. 복잡도 메트릭은 DNN의 다수의 이진 동작들, DNN의 메모리 풋프린트, 또는 DNN의 컴퓨터 파워 중 하나 이상을 포함할 수 있다.
일부 다른 예들에서, 하나 이상의 파라미터들을 양자화하는 것은 계층과 연관된 하나 이상의 출력 채널들의 활성화들의 개별 세트 또는 가중치들의 개별적인 세트 중 일방 또는 양방을 양자화하는 것을 포함한다. 계층과 연관된 하나 이상의 출력 채널들의 개별적인 가중치들의 세트 및/또는 개별적인 활성화들의 세트는 도 5 를 참조하여 설명된 비트-폭 선택기 (500) 와 같은 비트-폭 선택기에 의해 양자화될 수 있다. 일부 예들에서, 다수의 파라미터들 중 제 1 파라미터의 제 1 양자화 양은 다수의 파라미터들 중 제 2 파라미터의 제 2 양자화 양과 상이하다.
도 6 에 도시된 바와 같이, 블록 (606) 에서, DNN 은 DNN 입력에 대응하는 태스크를 수행하며, 태스크는 하나 이상의 양자화된 파라미터들로 수행된다. 일부 예들에서, 계층은 DNN의 다수의 계층들 중 하나의 계층이다. 이러한 예들에서, 다수의 계층들의 각각의 계층의 개별적인 파라미터들의 하나 이상의 파라미터들은 입력의 컨텐츠에 기초하여 양자화될 수 있다. 일부 이러한 예들에서, 양자화량은 다수의 계층들의 각각의 계층에 대해 상이하다.
구현 예들이 다음의 넘버링된 항들에 기술된다:
1. DNN (deep neural network) 에 의해 수행되는 방법은: 추론 스테이지 동안 DNN 의 계층에서, DNN 에서 수신된 DNN 입력과 연관된 컨텐츠를 포함하는 계층 입력을 수신하는 단계; 계층 입력의 컨텐츠에 기초하여 계층과 연관된 복수의 파라미터들 중 하나 이상의 파라미터들을 양자화하는 단계; 및 DNN 입력에 대응하는 태스크를 수행하는 단계로서, 태스크는 하나 이상의 양자화된 파라미터들로 수행되는, 태스크를 수행하는 단계를 포함한다.
2. 항 1 의 방법에서, 복수의 파라미터는 가중치들의 세트 및 활성화들의 세트를 포함한다.
3. 항 2 의 어느 것의 방법에서, 하나 이상의 파라미터들을 양자화하는 것은 계층과 연관된 하나 이상의 출력 채널들의 활성화들의 개별 세트 또는 가중치들의 개별적인 세트 중 일방 또는 양방을 양자화하는 것을 포함한다.
4. 항 1-2 의 어느 것의 방법에서, 복수의 파라미터들 중 제 1 파라미터의 제 1 양자화 양은 복수의 파라미터들 중 제 2 파라미터의 제 2 양자화 양과 상이하다.
5. 항 1-4 의 어느 것의 방법에서, 하나 이상의 파라미터들을 양자화하는 것은 하나 이상의 파라미터들과 연관된 원래 비트-폭의 사이즈를 조정하는 것에 의해 조정된 비트-폭을 생성하는 것을 포함한다.
6. 항 5 의 방법에서, 조정된 비트-폭을 생성하는 것은 원래 비트-폭의 사이즈가 입력의 컨텐츠에 기초하여 결정된 조정 비트-폭의 사이즈와 동일할 때까지 최하위 비트들로부터 최상위 비트들까지 원래 비트-폭의 비트들을 폐기하는 것을 포함한다.
7. 항 6 의 방법은, DNN 을 총 손실에 기초하여 원래 비트-폭을 조정하기 위한 사이즈를 결정하도록 트레이닝하는 단계를 더 포함하며, 총 손실은 성능 손실 및 정규화 손실의 함수이다.
8. 항 7 의 방법에서, 성능 손실은 크로스-엔트로피 손실 (mean-squared error) 또는 평균 제곱 오차 (mean-squared error) 를 결정한다.
9. 항 8 의 방법에서, 정규화 손실은 비트-레벨 동작과 연관된 조정된 비트-폭 및 복잡도 메트릭; 또는 조정된 비트-폭에 할당된 비트들의 수 중 하나에 패널티를 부과하는 비트와이즈 L0 정규화 손실이다.
10. 항 9 의 방법에서, 복잡도 메트릭은 DNN 의 다수의 이진 동작들, DNN의 메모리 풋프린트, 또는 DNN의 컴퓨터 파워 중 하나 이상을 포함한다.
11. 항 9 의 방법은, Bernoulli 분포로서 비트와이즈 L0 정규화 손실을 재공식화하는 단계; 시그모이드 함수에 기초하여 재공식화된 비트와이즈 L0 재정규화 손실을 완화하는 단계; 및 조정된 비트-폭에 대하여 선택된 비트들의 수에 기초하여 성능 손실 및 정규화된 손실을 최소화하는 단계를 더 포함한다.
12. 항 1-11 의 어느 것의 방법에서, 계층은 DNN 의 복수의 계층들 중 하나의 계층이고, 방법은 입력의 컨텐츠에 기초하여 복수의 계층들의 각각의 계층의 개별적인 복수의 파라미터들의 하나 이상의 파라미터들을 양자화하는 단계를 더 포함한다.
13. 항 12 의 방법에서, 양자화 양은 복수의 계층들의 각각의 계층에 대해 상이하다.
위에서 설명된 방법들의 다양한 동작들은 대응하는 기능들을 수행할 수 있는 임의의 적합한 수단에 의해 수행될 수도 있다. 그 수단은 회로, 주문형 집적회로 (ASIC), 또는 프로세서를 포함하지만 이에 한정되지 않는 다양한 하드웨어 및/또는 소프트웨어 컴포넌트(들) 및/또는 모듈(들)을 포함할 수도 있다. 일반적으로, 도면들에 예시된 동작들이 존재하는 경우, 그 동작들은 유사한 넘버링을 갖는 대응하는 상대의 수단-플러스-기능 컴포넌트들을 가질 수도 있다.
본 명세서에서 사용된 바와 같이, 용어 "결정하는 것"은 광범위하게 다양한 액션들을 포괄한다. 예를 들어, "결정하는 것" 은 계산하는 것, 컴퓨팅하는 것, 프로세싱하는 것, 도출하는 것, 조사하는 것, 검색하는 것 (예컨대, 표, 데이터베이스, 또는 다른 데이터 구조에서 검색하는 것), 확인하는 것 등을 포함할 수도 있다. 부가적으로, "결정하는 것" 은 수신하는 것 (예를 들어, 정보를 수신하는 것), 액세스하는 것 (예를 들어, 메모리 내 데이터에 액세스하는 것) 등을 포함할 수도 있다. 더욱이, "결정하는 것" 은 해결하는 것, 선택하는 것, 선출하는 것, 확립하는 것 등을 포함할 수도 있다.
본 명세서에서 사용된 바와 같이, 항목들의 리스트 "중 적어도 하나"를 지칭하는 어구는, 단일의 멤버들을 포함하는 그러한 항목들의 임의의 조합을 지칭한다. 예로서, "a, b, 또는 c 중 적어도 하나" 는 a, b, c, a-b, a-c, b-c, 및 a-b-c 를 포함하도록 의도된다.
본 개시와 관련하여 설명된 다양한 예시적인 논리 블록들, 모듈들, 및 회로들은 범용 프로세서, 디지털 신호 프로세서 (DSP), 주문형 집적회로 (ASIC), 필드 프로그래밍가능 게이트 어레이 신호 (FPGA) 또는 다른 프로그래밍가능 로직 디바이스 (PLD), 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 컴포넌트들, 또는 본 명세서에서 설명된 기능들을 수행하도록 설계된 이들의 임의의 조합으로 구현 또는 수행될 수도 있다. 범용 프로세서는 마이크로프로세서일 수도 있지만, 대안으로, 프로세서는 임의의 상용 프로세서, 제어기, 마이크로제어기, 또는 상태 머신일 수도 있다. 프로세서는 또한 컴퓨팅 디바이스들의 조합, 예를 들어 DSP 및 마이크로프로세서의 조합, 복수의 마이크로프로세서들, DSP 코어와 결합된 하나 이상의 마이크로프로세서들, 또는 임의의 다른 이러한 구성으로서 구현될 수도 있다.
본 개시와 관련하여 설명된 방법 또는 알고리즘의 단계들은 하드웨어에서, 프로세서에 의해 실행되는 소프트웨어 모듈에서, 또는 이들 양자의 조합에서 직접 구현될 수도 있다. 소프트웨어 모듈은, 당업계에 공지된 임의의 형태의 저장 매체에 상주할 수도 있다. 사용될 수도 있는 저장 매체들의 일부 예들은 랜덤 액세스 메모리 (RAM), 판독 전용 메모리 (ROM), 플래시 메모리, 소거가능한 프로그래밍가능 판독 전용 메모리 (EPROM), 전기적으로 소거가능한 프로그래밍가능 판독 전용 메모리 (EEPROM), 레지스터들, 하드 디스크, 착탈가능 디스크, CD-ROM 등을 포함한다. 소프트웨어 모듈은 단일의 명령, 또는 다수의 명령들을 포함할 수도 있고, 다수의 저장 매체들에 걸쳐, 그리고 상이한 프로그램들 사이에서, 여러 상이한 코드 세그먼트들에 분산될 수도 있다. 저장 매체는, 프로세서가 저장 매체로부터 정보를 판독할 수 있고 저장 매체에 정보를 기입할 수 있도록 프로세서에 커플링될 수도 있다. 대안으로서, 저장 매체는 프로세서에 통합될 수도 있다.
본원에 개시된 방법들은 설명된 방법을 달성하기 위한 하나 이상의 단계들 또는 동작들을 포함한다. 그 방법 단계들 및/또는 액션들은 청구항들의 범위로부터 벗어남이 없이 서로 교환될 수도 있다. 즉, 단계들 또는 액션들의 특정 순서가 명시되지 않으면, 특정 단계들 및/또는 행위들의 순서 및/또는 사용은 청구항들의 범위로부터 벗어남이 없이 수정될 수도 있다.
설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합에서 구현될 수도 있다. 하드웨어에서 구현되면, 예시적인 하드웨어 구성은 디바이스에 프로세싱 시스템을 포함할 수도 있다. 프로세싱 시스템은 버스 아키텍처로 구현될 수도 있다. 버스는 프로세싱 시스템의 특정 애플리케이션 및 전체 설계 제약들에 따라 임의의 수의 상호접속 버스 및 브리지들을 포함할 수도 있다. 버스는 프로세서, 머신 판독가능 매체들, 및 버스 인터페이스를 포함한 다양한 회로들을 함께 링크할 수도 있다. 버스 인터페이스는 특히, 네트워크 어댑터를 버스를 통해 프로세싱 시스템에 접속하는데 사용될 수도 있다. 네트워크 어댑터는 신호 프로세싱 기능들을 구현하는데 사용될 수도 있다. 특정 양태들에서, 사용자 인터페이스 (예를 들어, 키패드, 디스플레이, 마우스, 조이스틱 등) 가 또한 버스에 접속될 수도 있다. 버스는 또한, 당업계에 잘 알려져 있고, 따라서 더 이상 설명되지 않을 타이밍 소스들, 주변기기들, 전압 레귤레이터들, 전력 관리 회로들 등과 같은 다양한 다른 회로들을 링크할 수도 있다.
프로세서는 버스를 관리하는 것, 및 머신 판독가능 매체들 상에 저장된 소프트웨어의 실행을 포함한 일반 프로세싱을 책임질 수도 있다. 프로세서는 하나 이상의 범용 및/또는 특수목적 프로세서로 구현될 수도 있다. 예들은 마이크로프로세서들, 마이크로제어기들, DSP 프로세서들, 및 소프트웨어를 실행할 수 있는 다른 회로부를 포함한다. 소프트웨어는 소프트웨어, 펌웨어, 미들웨어, 마이크로코드, 하드웨어 기술 언어, 또는 다른 것으로 지칭되든, 명령들, 데이터, 또는 이들의 임의의 조합으로 광범위하게 해석되어야 한다. 머신 판독가능 매체들은, 예로서, 랜덤 액세스 메모리 (RAM), 플래시 메모리, 판독 전용 메모리 (ROM), 프로그래밍가능 판독 전용 메모리 (PROM), 소거가능한 프로그래밍가능 판독 전용 메모리 (EPROM), 전기적으로 소거가능한 프로그래밍가능 판독 전용 메모리 (EEPROM), 레지스터들, 자기 디스크들, 광학 디스크들, 하드 드라이브들, 또는 임의의 다른 적합한 저장 매체, 또는 이들의 임의의 조합을 포함할 수도 있다. 머신 판독가능 매체들은 컴퓨터 프로그램 제품에 담길 수도 있다. 컴퓨터 프로그램 제품은 패키징 재료들을 포함할 수도 있다.
하드웨어 구현에 있어서, 머신-판독가능 매체들은 프로세서와는 분리된 프로세싱 시스템의 부분일 수도 있다. 하지만, 당업자들이 용이하게 인식할 바와 같이, 머신-판독가능 매체들 또는 그 임의의 부분은 프로세싱 시스템 외부에 있을 수도 있다. 예로서, 머신-판독가능 매체들은 송신 라인, 데이터에 의해 변조된 캐리어파, 및/또는 디바이스로부터 분리된 컴퓨터 제품을 포함할 수도 있으며, 이들 모두는 버스 인터페이스를 통해 프로세서에 의해 액세스될 수도 있다. 대안적으로 또는 추가적으로, 머신 판독가능 매체들, 또는 그의 임의의 부분은, 캐시 및/또는 일반 레지스터 파일들의 경우와 같이 프로세서에 통합될 수도 있다. 논의된 다양한 컴포넌트들이 로컬 컴포넌트와 같이 특정 위치를 갖는 것으로서 설명될 수도 있지만, 이들은 또한 특정 컴포넌트들이 분산 컴퓨팅 시스템의 부분으로서 구성되는 것과 같이 다양한 방식들로 구성될 수도 있다.
프로세싱 시스템은 프로세서 기능을 제공하는 하나 이상의 마이크로프로세서들 및 머신 판독가능 매체들의 적어도 일부를 제공하는 외부 메모리를 갖는 범용 프로세싱 시스템으로서 구성될 수도 있고, 이들 모두는 외부 버스 아키텍처를 통해 다른 지원 회로와 함께 링크된다. 대안적으로, 프로세싱 시스템은 본 명세서에서 설명된 뉴럴 시스템들의 모델들 및 뉴런 모델들을 구현하기 위한 하나 이상의 뉴로모픽 프로세서들을 포함할 수도 있다. 다른 대안으로서, 프로세싱 시스템은, 단일 칩으로 집적된 프로세서, 버스 인터페이스, 사용자 인터페이스, 지원 회로부, 및 머신-판독가능 매체들의 적어도 일부를 갖는 주문형 집적회로 (ASIC) 로, 또는 하나 이상의 필드 프로그래밍가능 게이트 어레이들 (FPGA들), 프로그래밍가능 로직 디바이스들 (PLD들), 제어기들, 상태 머신들, 게이트형 로직, 이산 하드웨어 컴포넌트들, 또는 임의의 다른 적합한 회로부, 또는 본 개시 전반에 걸쳐 설명된 다양한 기능을 수행할 수 있는 회로들의 임의의 조합으로 구현될 수도 있다. 당업자는, 전체 시스템에 부과된 전체 설계 제약들 및 특정 애플리케이션에 따라 프로세싱 시스템에 대한 설명된 기능성을 구현하는 최선의 방법을 인식할 것이다.
머신 판독가능 매체들은 다수의 소프트웨어 모듈들을 포함할 수도 있다. 소프트웨어 모듈들은, 프로세서에 의해 실행될 경우, 프로세싱 시스템으로 하여금 다양한 기능들을 수행하게 하는 명령들을 포함한다. 소프트웨어 모듈들은 송신 모듈 및 수신 모듈을 포함할 수도 있다. 각각의 소프트웨어 모듈은 단일의 저장 디바이스에 상주할 수도 있거나 또는 다수의 저장 디바이스들에 걸쳐 분산될 수도 있다. 예로서, 소프트웨어 모듈은 트리거링 이벤트가 발생할 때 하드 드라이브로부터 RAM으로 로딩될 수도 있다. 소프트웨어 모듈의 실행 동안, 프로세서는 액세스 속도를 증가시키기 위해 명령들의 일부를 캐시로 로딩할 수도 있다. 하나 이상의 캐시 라인들은 그 후, 프로세서에 의한 실행을 위해 일반 레지스터 파일로 로딩될 수도 있다. 아래에서 소프트웨어 모듈의 기능성을 참조하는 경우, 그러한 기능성은 그 소프트웨어 모듈로부터의 명령들을 실행할 때 프로세서에 의해 구현됨이 이해될 것이다. 더욱이, 본 개시의 양태들은 프로세서, 컴퓨터, 머신, 또는 그러한 양태들을 구현하는 다른 시스템의 기능에 대한 개선을 발생시킴이 인식되어야 한다.
소프트웨어에서 구현되면, 기능들은 컴퓨터 판독가능 매체 상에 하나 이상의 명령들 또는 코드로서 저장 또는 송신될 수도 있다. 컴퓨터 판독가능 매체들은 일 장소로부터 다른 장소로의 컴퓨터 프로그램의 전송을 용이하게 하는 임의의 매체를 포함하는 통신 매체들 및 컴퓨터 저장 매체들 양자 모두를 포함한다. 저장 매체는 컴퓨터에 의해 액세스될 수도 있는 임의의 이용가능한 매체일 수도 있다. 한정이 아닌 예로서, 그러한 컴퓨터 판독가능 매체들은 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 스토리지, 자기 디스크 스토리지 또는 다른 자기 스토리지 디바이스들, 또는 명령들 또는 데이터 구조들의 형태로 원하는 프로그램 코드를 반송 또는 저장하는데 사용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 부가적으로, 임의의 커넥션이 컴퓨터 판독가능 매체로 적절히 명명된다. 예를 들어, 동축 케이블, 광섬유 케이블, 트위스티드 페어, 디지털 가입자 라인(DSL), 또는 적외선(IR), 라디오, 및 마이크로파와 같은 무선 기술들을 사용하여 웹사이트, 서버, 또는 다른 원격 소스로부터 소프트웨어가 송신되면, 동축 케이블, 광섬유 케이블, 트위스티드 페어, DSL, 또는 적외선, 라디오, 및 마이크로파와 같은 무선 기술들이 매체의 정의에 포함된다. 디스크(disk) 또는 디스크(disc)는, 본 명세서에서 사용된 바와 같이, 콤팩트 디스크(CD), 레이저 디스크, 광학 디스크, DVD(digital versatile disc), 플로피 디스크, 및 블루-레이® 디스크를 포함하며, 여기서 디스크(disk)들은 보통 데이터를 자기적으로 재생(reproduce)하는 한편, 디스크(disc)들은 레이저들로 데이터를 광학적으로 재생한다. 따라서, 일부 양태들에서, 컴퓨터 판독가능 매체들은 비일시적 컴퓨터 판독가능 매체들 (예를 들어, 유형의 매체들) 을 포함할 수도 있다. 추가로, 다른 양태들에 대해, 컴퓨터 판독가능 매체들은 일시적인 컴퓨터 판독가능 매체들 (예컨대, 신호) 을 포함할 수도 있다. 상기의 조합들이 또한 컴퓨터 판독가능 매체들의 범위 내에 포함되어야 한다.
따라서, 특정의 양태들은 본 명세서에서 제시된 동작들을 수행하기 위한 컴퓨터 프로그램 제품을 포함할 수도 있다. 예를 들어, 이러한 컴퓨터 프로그램 제품은 명령들을 저장(및/또는 인코딩)한 컴퓨터 판독가능 매체를 포함할 수도 있으며, 그 명령들은 본 명세서에서 설명된 동작들을 수행하도록 하나 이상의 프로세서들에 의해 실행가능하다. 특정 양태들에 대해, 컴퓨터 프로그램 제품은 패키징 재료를 포함할 수도 있다.
또한, 본 명세서에서 설명된 방법들 및 기법들을 수행하기 위한 모듈들 및/또는 다른 적절한 수단은 적용가능한 경우, 사용자 단말기 및/또는 기지국에 의해 다운로드 및/또는 그렇지 않으면 획득될 수 있음을 인식되어야 한다. 예를 들어, 그러한 디바이스는 본원에 설명된 방법들을 수행하는 수단의 전달을 가능하게 하기 위해 서버에 연결될 수도 있다. 대안적으로, 본 명세서에서 설명된 다양한 방법들은 사용자 단말기 및/또는 기지국이 디바이스에 저장 수단을 커플링 또는 제공 시에 다양한 방법들을 획득할 수 있도록 저장 수단 (예를 들어, RAM, ROM, 물리 저장 매체, 이를 테면 콤팩트 디스크 (CD) 또는 플로피 디스크 등) 을 통해 제공될 수 있다. 더욱이, 본 명세서에서 설명된 방법들 및 기법들을 제공하기 위한 임의의 다른 적합한 기법이 활용될 수 있다.
청구항들이 위에서 예시된 정확한 구성 및 컴포넌트들로 제한되지 않음이 이해되어야 한다. 다양한 수정들, 변경들 및 변형들이, 청구항들의 범위로부터 일탈함 없이 위에서 설명된 방법들 및 장치의 배열, 동작 및 상세들로 이루어질 수도 있다.

Claims (30)

  1. 딥 신경망 (DNN; deep neural network) 에 의해 수행되는 방법으로서,
    추론 스테이지 동안 상기 DNN 의 계층에서, 상기 DNN 에서 수신된 DNN 입력과 연관된 컨텐츠를 포함하는 계층 입력을 수신하는 단계;
    상기 계층 입력의 상기 컨텐츠에 기초하여 상기 계층과 연관된 복수의 파라미터들 중 하나 이상의 파라미터들을 양자화하는 단계; 및
    상기 DNN 입력에 대응하는 태스크를 수행하는 단계로서, 상기 태스크는 하나 이상의 양자화된 파라미터들로 수행되는, 상기 태스크를 수행하는 단계를 포함하는, 딥 신경망에 의해 수행되는 방법.
  2. 제 1 항에 있어서,
    상기 복수의 파라미터들은 가중치들의 세트 및 활성화들의 세트를 포함하는, 딥 신경망에 의해 수행되는 방법.
  3. 제 2 항에 있어서,
    상기 하나 이상의 파라미터들을 양자화하는 단계는 상기 계층과 연관된 하나 이상의 출력 채널들의 활성화들의 개별적인 세트 또는 가중치들의 개별적인 세트 중 일방 또는 양방을 양자화하는 단계를 포함하는, 딥 신경망에 의해 수행되는 방법.
  4. 제 1 항에 있어서,
    상기 복수의 파라미터들 중 제 1 파라미터의 제 1 양자화 양은 상기 복수의 파라미터들 중 제 2 파라미터의 제 2 양자화 양과 상이한, 딥 신경망에 의해 수행되는 방법.
  5. 제 1 항에 있어서,
    상기 하나 이상의 파라미터들을 양자화하는 단계는 상기 하나 이상의 파라미터들과 연관된 원래 비트-폭의 사이즈를 조정하는 것에 의해 조정된 비트-폭을 생성하는 단계를 포함하는, 딥 신경망에 의해 수행되는 방법.
  6. 제 5 항에 있어서,
    상기 조정된 비트-폭을 생성하는 단계는 원래 비트-폭의 사이즈가 상기 계층 입력의 컨텐츠에 기초하여 결정된 상기 조정된 비트-폭의 사이즈와 동일할 때까지 최하위 비트들로부터 최상위 비트들까지 원래 비트-폭의 비트들을 폐기하는 단계를 포함하는, 딥 신경망에 의해 수행되는 방법.
  7. 제 6 항에 있어서,
    총 손실에 기초하여 원래 비트-폭을 조정하기 위한 사이즈를 결정하도록 DNN 을 트레이닝하는 단계를 더 포함하며, 총 손실은 성능 손실 및 정규화 손실의 함수인, 딥 신경망에 의해 수행되는 방법.
  8. 제 7 항에 있어서,
    상기 성능 손실은 크로스-엔트로피 손실 (mean-squared error) 또는 평균 제곱 오차 (mean-squared error) 를 결정하는, 딥 신경망에 의해 수행되는 방법.
  9. 제 8 항에 있어서,
    상기 정규화 손실은:
    비트-레벨 동작과 연관된 조정된 비트-폭 및 복잡도 메트릭; 또는
    조정된 비트-폭에 할당된 비트들의 수
    중 하나에 패널티를 부과하는 비트와이즈 L0 정규화 손실인, 딥 신경망에 의해 수행되는 방법.
  10. 제 9 항에 있어서,
    상기 복잡도 메트릭은 DNN 의 다수의 이진 동작들, DNN의 메모리 풋프린트, 또는 DNN의 컴퓨터 파워 중 하나 이상을 포함하는, 딥 신경망에 의해 수행되는 방법.
  11. 제 9 항에 있어서,
    Bernoulli 분포로서 비트와이즈 L0 정규화 손실을 재공식화하는 단계;
    시그모이드 함수에 기초하여 재공식화된 비트와이즈 L0 재정규화 손실을 완화하는 단계; 및
    조정된 비트-폭에 대하여 선택된 비트들의 수에 기초하여 성능 손실 및 정규화된 손실을 최소화하는 단계를 더 포함하는, 딥 신경망에 의해 수행되는 방법.
  12. 제 1 항에 있어서,
    상기 계층은 상기 DNN 의 복수의 계층들 중 하나의 계층이고,
    상기 방법은 개별적인 계층 입력의 컨텐츠에 기초하여 상기 복수의 계층들의 각각의 계층의 개별적인 복수의 파라미터들의 하나 이상의 파라미터들을 양자화하는 단계를 더 포함하는, 딥 신경망에 의해 수행되는 방법.
  13. 제 12 항에 있어서,
    양자화 양은 상기 복수의 계층들의 각각의 계층에 대해 상이한, 딥 신경망에 의해 수행되는 방법.
  14. 딥 신경망 (DNN; deep neural network) 을 구현하기 위한 장치로서,
    프로세서; 및
    상기 프로세서와 커플링된 메모리; 및
    상기 메모리에 저장된 명령들을 포함하고, 상기 명령들은, 상기 프로세서에 의해 실행될 때, 상기 장치로 하여금:
    추론 스테이지 동안 상기 DNN 의 계층에서, 상기 DNN 에서 수신된 DNN 입력과 연관된 컨텐츠를 포함하는 계층 입력을 수신하게 하고;
    상기 계층 입력의 상기 컨텐츠에 기초하여 상기 계층과 연관된 복수의 파라미터들 중 하나 이상의 파라미터들을 양자화하게 하고; 그리고
    상기 DNN 입력에 대응하는 태스크를 수행하게 하는 것으로서, 상기 태스크는 하나 이상의 양자화된 파라미터들로 수행되는, 상기 태스크를 수행하게 하도록 동작가능한, 딥 신경망을 구현하기 위한 장치.
  15. 제 14 항에 있어서,
    상기 복수의 파라미터들은 가중치들의 세트 및 활성화들의 세트를 포함하는, 딥 신경망을 구현하기 위한 장치.
  16. 제 15 항에 있어서,
    상기 명령들은 상기 장치로 하여금 또한, 상기 계층과 연관된 하나 이상의 출력 채널들의 활성화들의 개별적인 세트 또는 가중치들의 개별적인 세트 중 일방 또는 양방을 양자화하는 것에 의해 상기 하나 이상의 파라미터들을 양자화하게 하는, 딥 신경망을 구현하기 위한 장치.
  17. 제 14 항에 있어서,
    상기 복수의 파라미터들 중 제 1 파라미터의 제 1 양자화 양은 상기 복수의 파라미터들 중 제 2 파라미터의 제 2 양자화 양과 상이한, 딥 신경망을 구현하기 위한 장치.
  18. 제 14 항에 있어서,
    상기 명령들은 상기 장치로 하여금 또한, 상기 하나 이상의 파라미터들과 연관된 원래 비트-폭의 사이즈를 조정하는 것에 의해 조정된 비트-폭을 생성하는 것에 의해 상기 하나 이상의 파라미터들을 양자화하게 하는, 딥 신경망을 구현하기 위한 장치.
  19. 제 18 항에 있어서,
    상기 명령들은 상기 장치로 하여금 또한, 원래 비트-폭의 사이즈가 상기 계층 입력의 컨텐츠에 기초하여 결정된 상기 조정된 비트-폭의 사이즈와 동일할 때까지 최하위 비트들로부터 최상위 비트들까지 원래 비트-폭의 비트들을 폐기하는 것에 의해 상기 조정된 비트-폭을 생성하게 하는, 딥 신경망을 구현하기 위한 장치.
  20. 제 19 항에 있어서,
    상기 명령들은 상기 장치로 하여금 또한, 트레이닝 스테이지 동안, 총 손실에 기초하여 원래 비트-폭을 조정하기 위한 사이즈를 결정하게 하며, 상기 총 손실은 성능 손실 및 정규화 손실의 함수인, 딥 신경망을 구현하기 위한 장치.
  21. 제 20 항에 있어서,
    상기 정규화 손실은:
    비트-레벨 동작과 연관된 조정된 비트-폭 및 복잡도 메트릭; 또는
    조정된 비트-폭에 할당된 비트들의 수
    중 하나에 패널티를 부과하는 비트와이즈 L0 정규화 손실인, 딥 신경망을 구현하기 위한 장치.
  22. 제 21 항에 있어서,
    상기 복잡도 메트릭은 DNN 의 다수의 이진 동작들, DNN의 메모리 풋프린트, 또는 DNN 의 컴퓨터 파워 중 하나 이상을 포함하는, 딥 신경망을 구현하기 위한 장치.
  23. 제 21 항에 있어서,
    상기 명령들은 또한 상기 DNN 으로 하여금:
    Bernoulli 분포로서 비트와이즈 L0 정규화 손실을 재공식화하게 하고;
    시그모이드 함수에 기초하여 재공식화된 비트와이즈 L0 재정규화 손실을 완화하게 하고; 그리고
    조정된 비트-폭에 대하여 선택된 비트들의 수에 기초하여 성능 손실 및 정규화된 손실을 최소화하게 하는, 딥 신경망을 구현하기 위한 장치.
  24. 제 14 항에 있어서,
    상기 계층은 상기 DNN 의 복수의 계층들 중 하나의 계층이고,
    상기 명령들은 또한 상기 DNN 으로 하여금, 개별적인 계층 입력의 컨텐츠에 기초하여 상기 복수의 계층들의 각각의 계층의 개별적인 복수의 파라미터들의 하나 이상의 파라미터들을 양자화하게 하는, 딥 신경망을 구현하기 위한 장치.
  25. 제 24 항에 있어서,
    양자화 양은 복수의 계층들의 각각의 계층에 대해 상이한, 딥 신경망을 구현하기 위한 장치.
  26. 딥 신경망 (DNN; deep neural network) 을 위한 프로그램 코드가 기록된 비일시적 컴퓨터 판독가능 저장 매체로서,
    상기 프로그램 코드는 프로세서에 의해 실행되고,
    추론 스테이지 동안 상기 DNN 의 계층에서, 상기 DNN 에서 수신된 DNN 입력과 연관된 컨텐츠를 포함하는 계층 입력을 수신하는 프로그램 코드;
    상기 계층 입력의 상기 컨텐츠에 기초하여 상기 계층과 연관된 복수의 파라미터들 중 하나 이상의 파라미터들을 양자화하는 프로그램 코드; 및
    상기 DNN 입력에 대응하는 태스크를 수행하는 프로그램 코드로서, 상기 태스크는 하나 이상의 양자화된 파라미터들로 수행되는, 상기 태스크를 수행하는 프로그램 코드를 포함하는, 비일시적 컴퓨터 판독가능 저장 매체.
  27. 제 26 항에 있어서,
    상기 복수의 파라미터들은 가중치들의 세트 및 활성화들의 세트를 포함하는, 비일시적 컴퓨터 판독가능 저장 매체.
  28. 제 27 항에 있어서,
    상기 하나 이상의 파라미터들을 양자화하는 프로그램 코드는 상기 계층과 연관된 하나 이상의 출력 채널들의 활성화들의 개별적인 세트 또는 가중치들의 개별적인 세트 중 일방 또는 양방을 양자화하는 프로그램 코드를 포함하는, 비일시적 컴퓨터 판독가능 저장 매체.
  29. 딥 신경망 (DNN; deep neural network) 을 구현하는 장치로서,
    추론 스테이지 동안 상기 DNN 의 계층에서, 상기 DNN 에서 수신된 DNN 입력과 연관된 컨텐츠를 포함하는 계층 입력을 수신하기 위한 수단;
    상기 계층 입력의 상기 컨텐츠에 기초하여 상기 계층과 연관된 복수의 파라미터들 중 하나 이상의 파라미터들을 양자화하기 위한 수단; 및
    상기 DNN 입력에 대응하는 태스크를 수행하기 위한 수단으로서, 상기 태스크는 하나 이상의 양자화된 파라미터들로 수행되는, 상기 태스크를 수행하기 위한 수단을 포함하는, 딥 신경망을 구현하는 장치.
  30. 제 29 항에 있어서,
    상기 하나 이상의 파라미터들을 양자화하기 위한 수단은 상기 계층과 연관된 하나 이상의 출력 채널들의 활성화들의 개별적인 세트 또는 가중치들의 개별적인 세트 중 일방 또는 양방을 양자화하기 위한 수단을 포함하는, 딥 신경망을 구현하는 장치.
KR1020237009851A 2020-09-29 2021-09-29 에너지 효율적인 딥 러닝을 위한 동적 양자화 KR20230078655A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US202063084902P 2020-09-29 2020-09-29
US63/084,902 2020-09-29
US17/488,261 2021-09-28
US17/488,261 US20220101133A1 (en) 2020-09-29 2021-09-28 Dynamic quantization for energy efficient deep learning
PCT/US2021/052721 WO2022072547A1 (en) 2020-09-29 2021-09-29 Dynamic quantization for energy efficient deep learning

Publications (1)

Publication Number Publication Date
KR20230078655A true KR20230078655A (ko) 2023-06-02

Family

ID=80822617

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237009851A KR20230078655A (ko) 2020-09-29 2021-09-29 에너지 효율적인 딥 러닝을 위한 동적 양자화

Country Status (6)

Country Link
US (1) US20220101133A1 (ko)
EP (1) EP4222655A1 (ko)
KR (1) KR20230078655A (ko)
CN (1) CN116210009A (ko)
BR (1) BR112023004496A2 (ko)
WO (1) WO2022072547A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11593628B2 (en) * 2020-03-05 2023-02-28 Apple Inc. Dynamic variable bit width neural processor
CN111915017B (zh) * 2020-07-29 2023-11-24 北京灵汐科技有限公司 一种校准方法、装置、终端设备及存储介质

Also Published As

Publication number Publication date
WO2022072547A1 (en) 2022-04-07
CN116210009A (zh) 2023-06-02
US20220101133A1 (en) 2022-03-31
BR112023004496A2 (pt) 2023-04-04
EP4222655A1 (en) 2023-08-09

Similar Documents

Publication Publication Date Title
KR102570706B1 (ko) 분류를 위한 강제된 희소성
CN107636697B (zh) 用于量化浮点神经网络以获得定点神经网络的方法和设备
US20160328644A1 (en) Adaptive selection of artificial neural networks
US11238346B2 (en) Learning a truncation rank of singular value decomposed matrices representing weight tensors in neural networks
WO2016182659A1 (en) Bit width selection for fixed point neural networks
US20210158166A1 (en) Semi-structured learned threshold pruning for deep neural networks
US20190228311A1 (en) Determining layer ranks for compression of deep networks
KR20220058897A (ko) 컴퓨트-인-메모리 어레이의 컬럼 임계치들을 조정함으로써 xnor 등가 연산들을 수행
KR20230078655A (ko) 에너지 효율적인 딥 러닝을 위한 동적 양자화
US11449758B2 (en) Quantization and inferencing for low-bitwidth neural networks
US11704571B2 (en) Learned threshold pruning for deep neural networks
US20240135712A1 (en) Context-driven learning of human-object interactions
WO2021158830A1 (en) Rounding mechanisms for post-training quantization
WO2023059723A1 (en) Model compression via quantized sparse principal component analysis
US20220284260A1 (en) Variable quantization for neural networks
US20220284271A1 (en) Sparsity-based neural network mapping to computing units in a system-on-chip
WO2022193052A1 (en) Kernel-guided architecture search and knowledge distillation
KR20230091879A (ko) 뉴럴 오디오 데이터 프로세싱을 위한 서브-스펙트럼 정규화
US20220108165A1 (en) Quantifying reward and resource allocation for concurrent partial deep learning workloads in multi core environments
US20240160926A1 (en) Test-time adaptation via self-distilled regularization
US20240152726A1 (en) Single search for architectures on embedded devices
KR20230162613A (ko) 등변 스티어링가능 컨볼루셔널 신경망
KR20230136605A (ko) 심층 뉴럴 네트워크들을 위한 반-구조화된 학습된 임계치프루닝
Abdelsalam Efficient FPGA-Based Inference Architectures for Deep Learning Networks
WO2024102530A1 (en) Test-time adaptation via self-distilled regularization