KR20210108413A - 뉴럴 네트워크 압축 - Google Patents

뉴럴 네트워크 압축 Download PDF

Info

Publication number
KR20210108413A
KR20210108413A KR1020217022505A KR20217022505A KR20210108413A KR 20210108413 A KR20210108413 A KR 20210108413A KR 1020217022505 A KR1020217022505 A KR 1020217022505A KR 20217022505 A KR20217022505 A KR 20217022505A KR 20210108413 A KR20210108413 A KR 20210108413A
Authority
KR
South Korea
Prior art keywords
weights
neural network
training
network model
layer
Prior art date
Application number
KR1020217022505A
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 KR20210108413A publication Critical patent/KR20210108413A/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/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/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/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/047Probabilistic or stochastic 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/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/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/70Type of the data to be coded, other than image and sound
    • H03M7/702Software
    • 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/044Recurrent networks, e.g. Hopfield networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Probability & Statistics with Applications (AREA)
  • Neurology (AREA)
  • Image Analysis (AREA)

Abstract

뉴럴 네트워크 모델이 트레이닝되고, 여기서 트레이닝은 다수의 트레이닝 반복을 포함한다. 트레이닝 반복들 중 특정 트레이닝 반복의 순방향 패스 동안 뉴럴 네트워크의 특정 계층의 가중치들이 프루닝된다. 특정 트레이닝 반복의 동일한 순방향 패스 동안, 특정 계층의 가중치들의 값들을 양자화하여 특정 계층에 대한 양자화된-희소화된 가중치들의 서브세트를 결정한다. 양자화된-희소화된 가중치들의 서브세트에 적어도 부분적으로 기초하여 트레이닝으로부터 뉴럴 네트워크 모델의 압축된 버전이 생성된다.

Description

뉴럴 네트워크 압축
관련 출원
본 출원은 2018년 12월 18일자로 출원된 미국 가특허 출원 제62/781,299호에 대한 이익을 주장하고 그 전체가 인용에 의해 본 명세서에 포함된다.
본 개시내용은 일반적으로 컴퓨터 시스템들의 분야에 관한 것으로, 더 특정하게는, 리소스 제약된 컴퓨팅 시스템들에 대한 뉴럴 네트워크 모델들을 압축하는 것에 관한 것이다.
컴퓨터 비전 및 그래픽의 세계들은 MagicLeap™, Microsoft™ HoloLens™, Oculus™ Rift™로부터의 것들과 같은 증강 현실(AR), 가상 현실(VR) 및 혼합 현실(MR) 제품들, 및 Valve™ 및 HTC™으로부터의 것들과 같은 다른 VR 시스템들의 출현으로 빠르게 수렴하고 있다. 그러한 시스템들에서의 현 접근법은, 병렬로 실행되는, 별개의 GPU(graphics processing unit) 및 컴퓨터 비전 서브시스템을 사용하는 것이다. 이들 병렬 시스템은 프로그램 가능한 하드웨어 가속기들 및/또는 프로세서들의 어레이 상에서 실행되는 소프트웨어로 구현되는 컴퓨터 비전 파이프라인과 병렬로 기존의 GPU로부터 조립될 수 있다. 그러한 하드웨어는 컴퓨터 비전 응용들과 관련하여 수행되는 머신 러닝 및 인공 지능 동작들과 관련하여 컨볼루션 뉴럴 네트워크(CNN)들과 같은 머신 러닝 모델들을 이용할 수 있다.
개시된 주제의 다양한 목적들, 특징들, 및 이점들은, 유사한 참조 번호들이 유사한 요소들을 식별하는, 다음의 도면들과 관련하여 고려될 때 개시된 주제에 대한 다음의 상세한 설명을 참조하여 더 충분히 인식될 수 있다. 첨부 도면들은 개략적이고, 일정한 비율로 그려지도록 의도되어 있지 않다. 명료성을 위해, 모든 도면에서 모든 컴포넌트가 라벨링되는 것은 아니다. 본 기술분야의 통상의 기술자들이 개시된 주제를 이해할 수 있게 하기 위해 예시가 필요하지 않은 경우, 개시된 주제의 각각의 실시예의 모든 컴포넌트가 도시되는 것도 아니다.
도 1은 리소스 제약된 컴퓨팅 디바이스들 및 호스트 컴퓨팅 시스템을 포함하는 예시적인 시스템을 예시한다.
도 2는 뉴럴 네트워크 모델들의 압축된 버전들을 준비하기 위한 전처리 시스템을 포함하는 예시적인 시스템을 예시한다.
도 3은 예시적인 뉴럴 네트워크 모델의 압축을 예시한다.
도 4는 예시적인 뉴럴 네트워크 모델의 계층들의 희소화(sparsification) 및 양자화(quantization)를 포함하는 예시적인 압축을 예시한다.
도 5는 뉴럴 네트워크 모델의 예시적인 압축들을 비교하는 예시적인 그래프들을 도시한다.
도 6은 뉴럴 네트워크 모델을 압축하기 위한 예시적인 기법의 흐름도이다.
도 7은 적어도 일부 실시예들에 따른 디바이스들을 갖는 예시적인 네트워크의 단순화된 블록도이다.
도 8은 적어도 일부 실시예들에 따른 예시적인 포그 또는 클라우드 컴퓨팅 네트워크의 단순화된 블록도이다.
도 9는 적어도 일부 실시예들에 따른 예시적인 디바이스들을 포함하는 시스템의 단순화된 블록도이다.
도 10은 적어도 일부 실시예들에 따른 예시적인 프로세싱 디바이스의 단순화된 블록도이다.
도 11은 적어도 일부 실시예들에 따른 예시적인 프로세서의 블록도이다.
도 12는 일부 실시예들에 따른 예시적인 머신 러닝 디바이스의 단순화된 블록도이다.
도 13은 적어도 일부 실시예들에 따른 예시적인 컴퓨팅 시스템의 블록도이다.
이하의 설명에서는, 개시된 주제의 철저한 이해를 제공하기 위해, 개시된 주제의 시스템들 및 방법들과 그러한 시스템들 및 방법들이 동작할 수 있는 환경 등에 관한 많은 특정 세부 사항들이 제시된다. 그러나, 본 기술분야의 통상의 기술자에게는, 개시된 주제가 그러한 특정 세부 사항들 없이도 실시될 수 있고, 본 기술분야에 널리 알려진 특정 특징들은 개시된 주제의 복잡성을 피하기 위해 상세히 설명되지 않는다는 것이 명백할 것이다. 또한, 아래에 제공되는 실시예들은 예시적인 것이고, 개시된 주제의 범위 내에 있는 다른 시스템들 및 방법들이 있다고 생각된다는 것이 이해될 것이다.
도 1은 그들의 동작 중에 머신 러닝 모델들을 이용할 수 있는 다양한 디바이스들(예를 들어, 120, 125, 130, 135)을 포함하는 시스템을 예시하는 단순화된 블록도(100)이다. 예를 들어, 디바이스들은, 디바이스들(120, 125, 130, 135)에서 생성된 및/또는 외부 소스들(예를 들어, 다른 디바이스들)로부터 수신된 센서 데이터에 기초하여, 그들 각각의 환경 내의 사람들, 동물들, 또는 객체들 및/또는 이들 환경 내의 조건들, 특성들, 및 이벤트들을 검출하는 것과 관련하여 뉴럴 네트워크 모델을 이용할 수 있다. 예를 들어, 디바이스들은, 디바이스들이 물리적 공간 내의 속성들 및 조건들을 검출하고, 환경 내의 경로들을 계획하고, 충돌들을 회피하고, 하나 이상의 센서 또는 상이한 센서들의 모음을 이용하여 환경 내의 사물들과 상호작용하는 것을 허용하는, 자율 내비게이션 능력들을 갖는 차량들(예를 들어, 130), 드론들(예를 들어, 125), 로봇들(예를 들어, 135), 및 다른 디바이스들을 포함할 수 있다. 이들 센서들부터 생성된 데이터는 뉴럴 네트워크 모델(예를 들어, 컨볼루션 뉴럴 네트워크(CNN), 딥 뉴럴 네트워크(DNN), 스파이킹 뉴럴 네트워크(SNN) 등)과 같은 머신 러닝 모델에의 입력으로서 제공될 수 있고, 이 머신 러닝 모델로부터 디바이스(예를 들어, 125, 130, 135)의 액추에이터들이 환경 내의 디바이스의 움직임을 자율적으로 유도하게 하는 하나 이상의 추론 또는 다른 출력들이 생성될 수 있다. 뉴럴 네트워크 모델 및 머신 러닝은, 자율 내비게이션 외부의 많은 것을 포함한 잠재적으로 무제한의 응용들에서 이용될 수 있다. 예로서, 사물 인터넷(IoT) 디바이스들, 보안 디바이스들, 모니터들, 농업 센서 디바이스, 및 다른 디바이스들(예를 들어, 120)이 또한 하나 또는 다수의 센서들을 갖추고 있을 수 있고, 이들 센서에 의해 생성된 데이터는 뉴럴 네트워크 모델을 사용하여 프로세싱하기 위해 제공될 수 있어, 디바이스(예를 들어, 120)가 사용자에게 제시될 수 있거나 추가의 프로세싱, 집성, 및/또는 분석을 위해 다른(예를 들어, 백엔드) 컴퓨팅 시스템들에 제공될 수 있는 이벤트들, 경보들, 또는 다른 데이터를 생성할 수 있게 한다.
일부 구현에서, 뉴럴 네트워크 모델들은 여러 가지 상이한 개발자들 및 엔티티들에 의해 개발될 수 있다. 뉴럴 네트워크 모델들은, 모델의 의도된 용도에 따라, 여러 가지 상이한 트레이닝 데이터를 이용하여 대응하는 컴퓨팅 시스템들 상에서 개발되고 트레이닝될 수 있다. 그 후 이들 모델은 디바이스들의 머신 러닝 및 인공 지능 능력들을 가능하게 하기 위해 다양한 디바이스들(예를 들어, 120, 125, 130, 135) 상에 배치되고 이들에 의해 사용될 수 있다. 일부 구현에서, 뉴럴 네트워크 모델은 호스트 서버 시스템들(예를 들어, 105) 상에서 호스팅되고 다양한 디바이스들(예를 들어, 120, 125, 130, 135)의 제조자, 소유자, 또는 사용자에 의해 액세스되어 디바이스들 상에서 뉴럴 네트워크 모델들을 구현할 수 있다. 일부 경우들에서, 서버 시스템들(예를 들어, 105)은 다양한 다른 시스템들(예를 들어, 120, 125, 130, 135)에 의한 소비를 위해 뉴럴 네트워크 모델들을 증강, 압축, 또는 다른 방식으로 준비하기 위한 전처리 로직을 갖추고 있을 수 있다. 일부 구현에서, 무선 네트워크 연결들(예를 들어, 네트워크 액세스 포인트들 및 게이트웨이 디바이스들(예를 들어, 115, 120)에 의해 가능하게 됨)을 이용하여 뉴럴 네트워크 모델들을 디바이스들(예를 들어, 120, 125, 130, 135) 상으로 전송할 수 있다. 다른 경우들에서, 로컬 호스트 시스템에 대한 휴대용 메모리 드라이브 또는 물리적 연결은 뉴럴 네트워크 모델들을, 여러 다른 예들 중에서도 특히, 이들 모델을 사용해야 하는 디바이스들 상으로 전송하기 위해 이용될 수 있다.
학술 연구 및 상업 응용들 둘 다에서, 머신 러닝 및 인공 지능이 눈에 띄게 증가함에 따라, 여러 가지 뉴럴 네트워크 모델들이 개발되었고 개발되고 있다. 대규모 데이터세트들 및 하이-엔드 그래픽들, 행렬, 및 텐서 프로세싱 디바이스들(예를 들어, GPU들, TPU들, 머신 러닝 가속기들 등)의 증가하는 크기와 결부되어, 딥 러닝 뉴럴 네트워크들의 크기 및 복잡도가 또한 증가하고 있다. 많은 그러한 현대의 네트워크 모델들(예를 들어, 예컨대 VGG(Visual Geometry Group) 뉴럴 네트워크, GoogleNet, DenseNet, ResNets, 및 다른 것들 등)이 대규모 데이터 세트들(예를 들어, ImageNet)에 대해 두드러진 분류 성능을 보여주지만, 이들은 전형적으로 큰 메모리 풋프린트들을 점유하고 상당한 계산 리소스들을 요구한다. 따라서, 일부 뉴럴 네트워크 모델들은, 그들의 유용성에도 불구하고, 작은 폼 팩터들을 갖는 디바이스들, 배터리-전력 디바이스들, 보통의 메모리 및 프로세싱 능력들을 갖는 디바이스들, 보통의 통신 능력들을 갖는 디바이스들 등과 같은 리소스 제약된 추론 디바이스들 상에 쉽게 배치가능하지 않다. 요컨대, 메모리, 계산 리소스들, 및 전력에 대한 이들 모델의 큰 요구들로 인해 리소스 제약된 디바이스들에 의존하는 일부 응용들에서 현대의 복잡한 뉴럴 네트워크 모델들을 이용하거나 배치하는 것은 비현실적이거나 불가능할 수 있다.
최근에, 딥 뉴럴 네트워크들은, 특히 유사하게 최신 기술의 멀티프로세서 시스템들을 이용할 때, 광범위의 컴퓨터 비전, 음성 인식, 및 머신 번역 작업들에서 최신 기술의 정확도를 달성했다. 그러나, 머신 러닝 및 인공 지능(AI)의 일부 응용들은 메모리 및 계산 리소스들이 제한되는 디바이스들 및 시스템들을 수반할 수 있다. 사실, 그러한 리소스 제약된 시스템들은 고성능 딥 뉴럴 네트워크들을 이용하기 위한 리소스들을 가지고 있지 않을 수 있다. 사실, 메모리 대역폭 및 계산 능력의 한계는 이들 현대의 네트워크들을 배치할 수 있는 디바이스들의 범위를 제약한다. 현대의 고성능 딥 뉴럴 네트워크들은 수십 또는 수백 개의 계층으로 구성될 수 있고, 실행할 수십억 개의 부동 소수점 연산(float point operation, FLOP)들을 요구하는 수백만 개의 파라미터를 가질 수 있다. 인기 및 우수한 성능에도 불구하고, 그러한 네트워크들은, 여러 다른 응용들 및 사용 사례들 중에서도 특히, 지능형 카메라들, 드론들, 자율 주행, 소매에서의 증강 및 가상 현실(AR/VR), 및 스마트 헬스케어와 같은 실시간 AI 응용들에 대해 리소스 제약된 에지 디바이스들 상에 그러한 네트워크들의 배치를 제한하는 메모리 및 계산 능력의 높은 요구들을 둔다. 네트워크 프루닝(network pruning), 네트워크 양자화, 저차 근사화(low-rank approximation), 효율적인 아키텍처 설계, 뉴럴 아키텍처 탐색(neural architecture search), 및 하드웨어 가속기 솔루션들을 포함한 이들 제한을 해결하기 위해 네트워크 압축 및 가속화 기법들이 개발되었다.
뉴럴 네트워크 모델들의 크기 및 복잡도를 감소시키는 것을 보조하기 위해 다양한 압축 기법들이 이용될 수 있다. 예를 들어, 네트워크 프루닝은 제한된 하드웨어 리소스들을 갖는 임베디드 시스템들 상에 뉴럴 네트워크 모델들을 배치하는 것을 보조하기 위해 이용될 수 있다. 네트워크 프루닝은 사전 트레이닝된 모델들로부터 중복 연결들 또는 채널들을 프루닝하고, 프루닝된 모델을 미세-튜닝하여 정확도를 복구함으로써 네트워크 크기를 감소시킬 수 있다. 네트워크 프루닝 동안, 관련 접근법들 중 다수는 대상 뉴럴 네트워크 모델의 가중치들 또는 채널들의 중요성을 결정하는 방법이 상이하지만, 중요성이 덜한 것으로 결정된 가중치들 또는 채널들은 모델로부터 프루닝되거나 제거되는 것으로 결정될 수 있다. 미세-입도(fine-grained) 가중치 프루닝(또는 "희소화(sparsification)")은 개별 연결들을 제거하기 위해 이용될 수 있는 반면, 조대-입도(coarse-grained) 프루닝은 뉴럴 네트워크 모델의 전체 행들/열들, 채널들 또는 심지어 필터들을 프루닝하기 위해 이용된다. 네트워크 요소들의 중요성을 결정하기 위해 다양한 알고리즘들 및 조건들이 이용될 수 있고, 그에 의해 프루닝을 위한 기초로서 역할을 한다. 예를 들어, 에너지 소비, 희소성, 및 다른 특성들이 뉴럴 네트워크 요소의 상대적 중요성을 결정하기 위해 이용될 수 있다.
네트워크 양자화는 네트워크 내의 각각의 가중치(또는 활성화 값)를 나타내기 위해 필요한 비트의 수를 감소시키기 위해 이용되는 다른 인기 있는 압축 기법이다. 사후 트레이닝 양자화(post-training quantization) 및 양자화를 이용한 트레이닝(training with quantization)은 네트워크 양자화의 2가지 예이다. 예를 들어, 사후 트레이닝 양자화는 미세-튜닝을 가지고 그리고 미세-튜닝 없이 사전 트레이닝된 완전-정밀도(full-precision) 네트워크로부터 8-비트 또는 더 높은 정밀도로 가중치들을 양자화하기 위해 사용될 수 있다. 저-정밀도 네트워크들에 대한 양자화를 이용한 트레이닝은 저-정밀도 파라미터 그래디언트들을 사용하여 저-정밀도(low-precision) 가중치들 및 활성화들을 가지는 CNN들을 트레이닝하기 위해 사용될 수 있다. 일부 경우들에서, 뉴럴 네트워크 모델에 적용되는 압축의 정도를 향상시키기 위해 압축 기법들이 조합될 수 있다. 예를 들어, 일부 솔루션들은, 여러 다른 예들 중에서도 특히, 더 높은 압축을 달성하기 위해 프루닝 및 8-비트 가중치 양자화가 함께 동작할 수 있게 하기 위해 가중치 희소화 및 가중치 양자화 둘 다를 차례로(직렬로, 다수의, 별개의 트레이닝들 또는 트레이닝 반복들로) 적용하려고 시도한다. 수학적 관점에서, 8x 압축 레이트를 달성하기 위해, 뉴럴 네트워크 모델은 4-비트 정밀도로 양자화되거나 비-제로 요소 인덱스들의 저장 오버헤드에 관계없이 동등한 레이트를 갖도록 적어도 87.5% 희소성 레벨로 희소화되어야 한다. 이로부터, 저-정밀도(예를 들어, 4-비트 또는 더 낮은) 양자화는 희소화보다 더 높은 압축 레이트를 쉽게 구동할 수 있다. 그러나, 2-비트 또는 더 낮은 정밀도 양자화는 상당한 정확도 저하를 야기하는 경향이 있다. 예를 들어, 압축된 ResNet50 네트워크에 대한 최신 기술의 정확도는 가중치들 및 활성화들 둘 다를 2-비트 정밀도로 양자화할 때 72.2%이다(4.7% 하락). 높은(예를 들어, 16x) 압축 레이트가 매력적일 수 있지만, 저하된 정확도는 실세계 응용들에 대해 용인가능하지 않을 수 있다.
(단일-반복 희소화-양자화를 통한) 희소성 및 양자화에 대한 예시적인 공동 최적화 기법이 컴퓨팅 시스템을 사용하여 구현되어, 원래 모델에 가까운 정확도를 유지하면서 최대 압축을 달성할 수 있다. 예를 들어, 그러한 접근법은 ResNet50에 대한 17x 압축을 실현할 수 있고, 여기서 가중치들 및 활성화들 둘 다는 1% 정확도 하락 내에서 4-비트 정밀도 및 41% 희소성으로 양자화된다. 예를 들어, 여러 다른 예들 중에서도 특히, 훨씬 높은 정도의 희소성으로, ResNet18, ResNet50 및 MobileNetv2에 대해 4-비트 및 2-비트 정밀도를 사용하여 거의 최신 기술의 정확도를 달성하는, 광범위의 네트워크들에 대해 유사한 결과들이 실현될 수 있다. 특히, 높은 압축 레이트 및 높은 정확도 둘 다가 중요한 리소스 제약된 에지 디바이스들에 대해, 그러한 시스템은 그러한 디바이스들 상에서 고성능 딥 뉴럴 네트워크들의 더 넓은 배치를 가능하게 할 수 있다.
개선된 시스템에서, 뉴럴 네트워크 모델들은 시스템에 의한 네트워크 프루닝 및 네트워크 양자화의 성능을 통합함으로써 시스템에 의해 압축되어 단일 트레이닝 패스에서 압축 프로세스들 둘 다를 수행하고 높은 정확도 및 높은 압축 레이트를 달성하면서 희소 및 저-정밀도 둘 다에 대해 공동으로 최적화할 수 있다. 일부 전통적인 시스템들은 더 높은 압축을 달성하기 위해 뉴럴 네트워크 프루닝 및 양자화 둘 다를 차례로 직렬로 수행하지만, 프루닝 및 양자화를 직렬로 수행하는 것은 2-스테이지 트레이닝을 요구할 뿐만 아니라, 양자화에 대한 프루닝 가중치들의 영향에 대한 이해의 결여로 인해, 프루닝 후에 더 낮은 정밀도로 양자화하는 것을 어렵게 만들고, 그 반대도 마찬가지이다. 본 명세서에서 논의된 바와 같이, 프루닝 및 양자화를 통합하는 개선된 접근법은 희소 저-정밀도 가중치들 및 희소 저-정밀도 활성화들 둘 다를 이용하여 더 효율적인 네트워크 트레이닝 프로세스를 구현할 수 있다. 예를 들어, 개선된 시스템은 개선된 뉴럴 네트워크 트레이닝을 구현할 수 있고, 이는 각각의 트레이닝의 반복에서 낮은 정밀도로 가중치들 및 활성화들 둘 다를 희소화 및 양자화하는 희소 및 저-정밀도 뉴럴 네트워크들에 대한 동시 러닝을 가능하게 한다. 이 기법은 높은 정확도를 유지하면서 모델 크기 및 계산 비용을 상당히 감소시킬 수 있고, 따라서 리소스 제약된 에지 디바이스들에 대한 빠른 추론을 허용한다. 일부 경우들에서, 그러한 기법들을 통해 정확도에 대해 적당한 희생(예를 들어, 전체 정확도에서의 1-2% 손실)만을 치르면서 뉴럴 네트워크의 극적인 압축이 달성될 수 있다. 또한, 그러한 접근법은, 여러 다른 예시적인 이점들 중에서도 특히, 신속한 프로토타이핑 및 뉴럴 아키텍처 탐색 기법들에 중요한 빠른 단일 패스 트레이닝을 가능하게 할 수 있다.
도 2를 참조하면, 뉴럴 네트워크 모델의 린(lean) 또는 스파스(sparse) 버전들을 이용하는 것이 요구되는, 리소스 제약된 디바이스들(예를 들어, 125) 및 다른 컴퓨팅 시스템들에 의한 분배 및 사용을 위해 모델들을 적응시키고 준비시키기 위해 기존의 뉴럴 네트워크 모델들(예를 들어, 230a-b)에 대해 전처리를 수행하는 데 사용하기 위한 시스템(105)을 포함하는 예시적인 시스템을 예시하는 단순화된 블록도(200)가 도시되어 있다. 일 예에서, 전처리 시스템(105)은 전처리 시스템(105) 상의 하드웨어 및/또는 소프트웨어 기반 로직으로 구현되는 네트워크 압축 엔진(205)을 구현할 수 있다. 전처리 시스템(105)은 하나 이상의 데이터 프로세싱 디바이스(210)(예를 들어, CPU(central processing unit), GPU(graphics processing unit), TPU(tensor processing unit), VPU(vision processing unit)) 및 프로세서들(210)과 함께 기능하는 대응하는 하드웨어 가속기들(예를 들어, 머신 러닝 가속기들, 행렬 연산 가속기들 등)을 포함할 수 있다. 예를 들어, 네트워크 압축 엔진(205)은 머신 러닝 트레이닝 단계들(예를 들어, 컨볼루션들, 손실 함수들, 역 전파 등)을 수행하기 위해 이용될 수 있고, 머신 러닝 트레이닝 단계들은 여러 다른 예들(본 명세서에서 나중에 논의되는 예시적인 하드웨어 아키텍처들을 포함함) 중에서도 특히 행렬 연산을 수행하도록 적응된 프로세싱 유닛들과 같은 특수 프로세싱 하드웨어를 이용할 수 있다. 전처리 시스템(105)은 (예를 들어, 네트워크 압축 엔진(205)의 전부 또는 일부 및 전처리 시스템의 다른 툴들을 구현하기 위한) 소프트웨어 코드뿐만 아니라, 네트워크 압축 엔진(205)을 특히 포함하여, 일반적으로 전처리 시스템(105)의 동작에 사용되는 데이터(예를 들어, 230b, 240, 245, 250 등)를 저장하기 위한 하나 이상의 컴퓨터 메모리 요소(215)를 추가로 포함할 수 있다.
하나의 예시적인 구현에서, 네트워크 압축 엔진(205)은 뉴럴 네트워크 모델들(예를 들어, 230a-b)을 프루닝하고 다른 방식으로 압축하는 기능성을 지원하고 제공할 수 있다. 예를 들어, 통합된 희소화-양자화 프로세스는, 네트워크의 희소화 및 양자화 둘 다가 동일한 트레이닝 패스(또는 반복) 동안 네트워크의 계층들에 대해 수행되도록, 네트워크 압축 엔진(205)에 의해 수행될 수 있다. 일부 구현에서, 네트워크 압축 엔진(205)은, 높은 정확도를 유지하고 높은 압축 레이트를 제공하면서 희소 및 저-정밀도 뉴럴 네트워크 둘 다에 대해 공동으로 최적화하도록 딥 뉴럴 네트워크를 트레이닝하도록 실행가능한 로직을 갖추고 있을 수 있다. 예를 들어, 그러한 시스템은, 최적인 것으로 입증된 순서로 이들 기법을 이용하여, 희소화 및 하위 비트 양자화를 단일 트레이닝 패스로 수행할 수 있다. 예를 들어, 예시적인 네트워크 압축 엔진(205)은 희소화 엔진(220)에 의해 구현된 가중치 희소화 로직 및 예시적인 양자화 엔진(225)을 사용하여 구현된 양자화 로직(가중치들, 그래디언트들, 및/또는 활성화 값들을 양자화하기 위한)을 포함할 수 있다. 따라서, 더 강건한 메모리, 컴퓨터, 및 통신 리소스들이 이용가능한 시스템들 및 응용들에 대해 적응된 "밀집(dense)" 현대 뉴럴 네트워크를 통해 가능하게 되는 이점들 및 기능성은 정확도를 해롭게 희생시키지 않고 뉴럴 네트워크의 크기 및 계산 복잡도를 감소시킴으로써 리소스 제약된 시스템들로 확장될 수 있다.
뉴럴 네트워크 모델들(예를 들어, 230a-230b)은 여러 가지 상이한 시스템들(예를 들어, 105, 280) 상에서 개발되고 이에 의해 호스팅될 수 있다. 전처리 시스템(105)은 하나 이상의 네트워크(예를 들어, 295)를 통해 원격 컴퓨팅 시스템들(예를 들어, 소스 시스템(245))로부터 이들 뉴럴 네트워크 모델 중 하나 이상에 액세스할 수 있다. 일부 경우들에서, 전처리 시스템(105)은 (네트워크들(295)을 통해) 서비스로서 네트워크 압축 엔진(205)의 기능성을 다양한 클라이언트 시스템들(예를 들어, 리소스 제약된 시스템(125))에 제공할 수 있다. 그러한 구현들에서, 특정 뉴럴 네트워크 모델을 식별하고 모델이 (예를 들어, 통합된(또는 "단일-반복") 희소화-양자화를 통해) 압축될 것을 요청하는 쿼리 또는 요청이 전처리 시스템(105)에 제출될 수 있다. 일부 경우들에서, 뉴럴 네트워크 모델의 사본이 요청에 포함될 수 있다.
일부 구현에서, 희소화 엔진(225)은 예시적인 네트워크 프루너 툴(205)의 가중치들(또는 채널들)을 프루닝할 수 있다. 예를 들어, 희소화 엔진(225)은 하나 이상의 기준을 적용하여 뉴럴 네트워크의 다양한 채널들의 상대적 중요성을 식별하고 모델을 프루닝하여 덜 중요한 것으로 결정된 뉴럴 네트워크의 부분들을 제거할 수 있다. 중요성은, 이러한 의미에서, 프루닝된 뉴럴 네트워크의 정확도에 영향을 미치는 이들 부분의 제거에 대한 뉴럴 네트워크의 감도를 반영할 수 있다. 희소화는 뉴럴 네트워크 모델(예를 들어, 230a-b)의 트레이닝 동안 수행된다. 트레이닝 데이터(예를 들어, 240)는 뉴럴 네트워크 모델을 트레이닝하기 위해 사용될 수 있다. 일부 구현에서, 희소화는 트레이닝 반복의 순방향 패스 동안 수행될 수 있다. 동일한 트레이닝 반복(예를 들어, 트레이닝 반복의 순방향 및 역방향 패스) 동안, 가중치들, 그래디언트들, 및 활성화들의 양자화가 수행될 수 있다. 일부 구현에서, 가중치 희소화는 가중치 양자화의 수행 전에 트레이닝 반복에서 수행될 수 있다. 다른 구현들에서, 가중치 양자화는 가중치 희소화 전에(트레이닝 반복의 순방향 패스에서) 발생해야 한다. 트레이닝 반복의 역방향 패스에서, 그래디언트 값들(대응하는 손실 함수로부터 결정됨)은 유사하게 양자화될 수 있다.
일부 구현에서, 트레이닝 동안, 뉴럴 네트워크(예를 들어, 230b)의 완전-정밀도 가중치들은 네트워크 압축 엔진(205)에 의해 (트레이닝 동안) 수행되는 압축을 통해 결정되는 새로운 압축된 희소-양자화된 가중치 데이터(250)와 함께 보존될 수 있다(예를 들어, 완전-정밀도 가중치 데이터(245)에서). 일부 구현에서, 역-전파 동안, 손실 함수는 희소-양자화된 가중치들(및 희소-양자화된 가중치들을 선행 뉴럴 네트워크 계층의 활성화 값들과 컨볼루션함으로써 도출되는 결과적인 활성화 값들)에 기초할 수 있는 반면, (완전-정밀도 가중치 데이터(245)에서 유지되는) 완전-정밀도 가중치들은 (손실 함수로부터 결정되는 그래디언트 값들을 사용하여) 역-전파 동안 업데이트되는 값들이다. 트레이닝 반복의 완료에 이어서, 다음 트레이닝 반복이 수행될 수 있고, 희소화-양자화의 다음 반복은 업데이트된 완전-정밀도 가중치들에 대해 수행된다. 희소-양자화된 가중치 데이터(250)는 적어도 가장 최근에 결정된 희소-양자화된 가중치 값들을 캡처할 수 있다. (최종 트레이닝 반복 후에) 트레이닝이 종결되면, 이 최종 트레이닝 반복으로부터 결정된(그리고 희소-양자화된 가중치 데이터(250)에 저장된) 희소-양자화된 가중치 값들은 리소스 제약된 시스템들(예를 들어, 260)과 같은 다양한 머신 러닝 시스템들에 의한 소비를 위해 뉴럴 네트워크 모델의 압축된 버전을 생성하기 위해 채택될 수 있다.
전처리 시스템(105)은, 뉴럴 네트워크 모델의 압축된 버전이 생성되면, 하나 이상의 통신 네트워크(예를 들어, 295)를 통해 뉴럴 네트워크의 압축된 버전을 제공하거나 다수의 다른 시스템과 공유할 수 있다. 예를 들어, 압축된 뉴럴 네트워크 모델은, 뉴럴 네트워크 모델을 이용하여 추론들 또는 다른 머신 러닝 작업들을 수행하도록 구성된 하나 이상의 소비자 시스템(예를 들어, 260)과 공유될 수 있다. 추가적으로, 뉴럴 네트워크 모델의 압축된 버전은, (예를 들어, 소비자 시스템들이 그 후 액세스하고 이용할 수 있는) 뉴럴 네트워크 모델에 대한 저장소로서 역할을 할 수 있는 하나 이상의 호스트 또는 소스 시스템(예를 들어, 280)과 공유될 수 있다.
일부 구현에서, 소비자 시스템은, 머신 러닝 시스템(260) 또는 다른 컴퓨터-구현된 로직에 의해 제공되는 컴퓨팅 로직에 의해 "지능형"으로 되는, 다른 머신들과 연관하여 통합되거나 다른 방식으로 제공되는 머신 러닝 시스템들(예를 들어, 260)을 포함할 수 있다. 그러한 머신들(예를 들어, 125)은 차량들, 로봇들, 드론들, 산업 머신들, 농장 장비 등을 포함할 수 있다. 머신 러닝 시스템들(예를 들어, 260)은 또한, 여러 다른 예시적인 시스템들 중에서도 특히, 딥 러닝을 유리하게 이용하는, 사물 인터넷(IoT), 포그, 클라우드, 빅 데이터, 또는 다른 컴퓨팅 시스템들과 관련하여 구현될 수 있다.
일 예에서, 머신 러닝 시스템(260)은 머신 러닝 모델들 및 추론들을 구현하기 위해 계산들 및 기능들을 수행하도록 적응되는 하나 이상의 프로세서 디바이스(예를 들어, 265)를 포함할 수 있다. 예를 들어, 머신 러닝 프로세서들(예를 들어, 268)은 GPU(graphics processing unit)들, VPU(vision processing unit)들, TPU(tensor processing unit)들, 필드 프로그래머블 게이트 어레이(FPGA) 디바이스들, 딥 러닝 가속기 하드웨어, 및 다른 예들을 포함할 수 있다. 머신 러닝 시스템(260)은 하나 이상의 메모리 요소(예를 들어, 268)를 추가적으로 포함할 수 있다. 그에 의해 머신 러닝 엔진(270)은 머신 러닝 프로세스들을 수행하고 지시하도록 구현될 수 있다. 일부 구현에서, 뉴럴 네트워크 모델의 압축된 버전은 머신 러닝 시스템(260)을 이용하여 소비될 수 있다. 공동 희소화 및 양자화를 통해 압축된 모델과 같은 압축된 뉴럴 네트워크 모델은 (희소화된) 가중치들이 작은 하위 비트 값으로 양자화되었다는 점에서 희소할 수 있다. 그러한 압축된 모델들을 통해 제공되는 효율을 최대화하기 위해, 일부 경우들에서, 머신 러닝 엔진(예를 들어, 270)은 양자화기 로직(예를 들어, 275)을 포함할 수 있고, 이는 머신 러닝 엔진이 (예를 들어, 추론 시간 동안) 압축된 뉴럴 네트워크의 실행을 통해 (예를 들어, 각각의 계층에서) 생성된 활성화들을 양자화할 수 있게 한다. 그렇지 않으면, 트레이닝된 압축된 뉴럴 네트워크의 사용 동안 상위 비트(예를 들어, 부동 소수점) 활성화 값들이 생성될 수 있고, 이는 활성화 값들이 양자화되는 경우에 사용되는 것보다 더 높은 계산 대역폭을 야기하고, 그에 의해 압축된 뉴럴 네트워크 모델들의 사용을 향상시키기 위한 여러 다른 예시적인 특징들 중에서도 특히, 압축된 뉴럴 네트워크의 하위 비트 충실도를 보존한다.
도 2의 예시된 예는 별개의 물리적 시스템들 및 하드웨어 상에 구현된 전처리 시스템(예를 들어, 105), 머신 러닝 시스템(예를 들어, 260) 및 소스 시스템(예를 들어, 280)을 암시할 수 있지만, 일부 구현에서, 본 명세서에서 설명된 바와 같은 이들 시스템의 기능성은, 여러 다른 예시적인 구현들 중에서도 특히, 단일 시스템 또는 다수의 분산 시스템들 상에 조합되고 구현될 수 있다. 사실, 시스템은, 여러 다른 예시적인 구현들 중에서도 특히, 네트워크 압축 엔진의 기능성을 사용하여 압축된 뉴럴 네트워크 모델들을 사용할 수 있는 머신 러닝 엔진(예를 들어, 270)뿐만 아니라 네트워크 압축 엔진(205)(예를 들어, 단일-반복 희소화-양자화를 수행할 수 있는 것) 둘 다를 포함할 수 있다.
일반적으로, 본 명세서의 예들과 관련하여 설명된 "서버들", "클라이언트들", "컴퓨팅 디바이스들", "네트워크 요소들", "호스트들", "디바이스들", "플랫폼들", 및 "시스템들" 등은 컴퓨팅 환경과 연관된 데이터 및 정보를 수신, 송신, 프로세싱, 저장, 또는 관리하도록 동작가능한 전자 컴퓨팅 디바이스들을 포함한다. 본 문서에서 사용되는, 용어 "컴퓨터", "프로세서", "프로세서 디바이스", "프로세싱 장치", 또는 "프로세싱 디바이스"는 임의의 적합한 프로세싱 장치를 포함하도록 의도된다. 예를 들어, 컴퓨팅 환경 내의 단일 디바이스들로서 도시된 요소들은, 서버 풀들, 분산 시스템들, 클라우드 및/또는 포그 기반 시스템들, 및 다수의 컴퓨터를 포함하는 다른 시스템들과 같은 복수의 컴퓨팅 디바이스 및 프로세서를 사용하여 구현될 수 있다. 또한, 컴퓨팅 디바이스들 중 임의의 것, 전부, 또는 일부는, Linux, UNIX, Microsoft Windows, Apple OS, Apple iOS, Google Android, Windows Server 등을 포함하는, 임의의 운영 체제뿐만 아니라, 맞춤화된 및 사유 운영 체제들을 포함하는, 특정 운영 체제의 실행을 가상화하도록 적응된 가상 머신들을 실행하도록 적응될 수 있다.
일부 구현에서, 컴퓨팅 플랫폼의 전부 또는 일부는 사물 인터넷(IoT) 디바이스 또는 시스템으로서 기능할 수 있다. 디바이스들, 또는 엔드포인트들의 컬렉션은, IEEE 802.11 표준 패밀리 하에서 표준화된 것들과 같은 무선 로컬 영역 네트워크들(WLAN), Zigbee Alliance 하에서 표준화된 것들과 같은 홈 영역 네트워크들, Bluetooth Special Interest Group에 의해 표준화된 것들과 같은 개인 영역 네트워크들, 3GPP(Third-Generation Partnership Project)에 의해 표준화된 것들과 같은 셀룰러 데이터 네트워크들, 및 무선, 또는 유선 연결성을 갖는 다른 타입들의 네트워크들을 이용할 수 있는 IoT 네트워킹에 참여할 수 있다. 예를 들어, 엔드포인트 디바이스는 USB(universal serial bus)-타입 연결, HDMI(High-Definition Multimedia Interface) 등과 같은 버스 인터페이스를 통해 보안 도메인에 대한 연결성을 또한 달성할 수 있다.
도 1 및 도 2가 복수의 요소를 포함하거나 그와 연관되어 있는 것으로 기술되어 있지만, 예시된 요소들 모두가 본 개시내용의 각각의 대안적인 구현에서 이용될 수 있는 것은 아니다. 추가적으로, 도 1 및 도 2의 예들과 관련하여 설명된 요소들 중 하나 이상은 예시된 컴퓨팅 환경들의 외부에 위치할 수 있는 반면, 다른 경우들에서는, 특정 요소들이 다른 설명된 요소들뿐만 아니라 예시된 구현에서 설명되지 않은 다른 요소들 중 하나 이상 내에 또는 그의 일부로서 포함될 수 있다. 또한, 이들 예에서 예시된 특정 요소들이 다른 컴포넌트들과 조합될 수 있을 뿐만 아니라 본 명세서에서 설명된 목적들에 더하여 대안적인 또는 추가적인 목적들을 위해 사용될 수 있다.
도 3을 참조하면, 예시적인 뉴럴 네트워크 모델(305)의 예시적인 압축을 예시하는 단순화된 블록도(300)가 도시되어 있다. 뉴럴 네트워크 모델(305)(또는 단순히 "뉴럴 네트워크")은 강건한 컴퓨팅 리소스들을 갖는 시스템들을 소비함으로써 사용을 위해 원래 개발되어, 뉴럴 네트워크의 크기 및 계산 복잡도를 작은 관심사로 만들 수 있다. 뉴럴 네트워크(305)는, 여러 다른 컴포넌트들 중에서도 특히, 입력 계층, 출력 계층, 및 입력 계층과 출력 계층 사이에 상호연결된 다수의 상이한 은닉 계층을 포함하는 다수의 계층을 포함할 수 있다. 각각의 계층은 다수의 노드, 뉴런 또는 커널을 포함할 수 있고, 뉴런들은 계층들 사이에서 여러 가지 방식으로 상호연결될 수 있다. 은닉 계층들은, 여러 다른 예들 중에서도 특히, 밀집 계층들(dense layers), 컨볼루션 계층들(convolutional layers), 풀링 계층들(pooling layers), 및 순환 계층들(recurrent layers)과 같은 하나 이상의 상이한 타입의 계층들을 포함할 수 있다. 더 많은 리소스 제약된 디바이스들 상에서 머신 러닝 시스템(260)에 의한 뉴럴 네트워크(305)의 사용을 가능하게 하기 위해 또는 일반적으로(예를 들어, 덜 제약된 시스템들 상에서도) 계산 및 메모리 오버헤드를 최소화하기 위해, 완전 정밀도 뉴럴 네트워크(305)는 호스트 컴퓨팅 시스템에 의해 실행되는 네트워크 압축 엔진(205)에 제공될 수 있다. 네트워크 압축 엔진(205)은(예를 들어, 사유 또는 오픈 소스 트레이닝 데이터 세트와 같은, 트레이닝 데이터(240)를 사용하여) 뉴럴 네트워크(305)를 트레이닝하고, 트레이닝 동안, 희소화 및 양자화를 적용하여 뉴럴 네트워크(305)를 압축하고, 뉴럴 네트워크의 압축된 또는 감소된 버전(305')를 생성하도록 구성될 수 있고, 이는 단지 미미한 정확도 감소로 실질적으로 압축된다. 일 예에서, 희소화와 이어서 4-비트 양자화를 수행하는 것은 압축된 모델을 야기하고, 이 압축된 모델은 이용되는 리소스의 측면에서 더 효율적일 뿐만 아니라, 그것은 또한 베이스라인 모델과 비슷한 또는 그보다 훨씬 더 양호한 정확도를 실현한다(예를 들어, 단일-반복 희소화-양자화가 오버피팅(overfitting)을 방지하는 데 도움을 주는 추가적인 정규화로서 역할을 하기 때문에).
네트워크 압축 엔진은 모델(305)의 트레이닝 내에서 각각의 트레이닝 반복에서 희소화 및 양자화 둘 다를 수행할 수 있다. 일부 구현에서, 네트워크 압축 엔진(205)의 동작을 특정하기 위해 파라미터들(예를 들어, 310)의 세트가 정의되고 네트워크 압축 엔진(205)에 입력들로서 제공될 수 있다. 예를 들어, 그러한 파라미터들(310)은, 여러 다른 예시적인 파라미터들 중에서도 특히, 희소화 동안 적용할 특정 희소화 알고리즘 및 적용할 특정 양자화 알고리즘뿐만 아니라, 희소성 파라미터(희소화 단계들 동안 달성될 희소성의 정도를 식별함), 양자화 레벨(예를 들어, 2-비트, 4-비트, 또는 다른 양자화 레벨), 트레이닝 압축에서 언제 시작되어야 하는지(예를 들어, 제1 희소화-양자화 동작들이 트레이닝 내로 얼마나 많은 트레이닝 반복들이 수행되어야 하는지)를 지시하기 위한 지연 값을 포함할 수 있다. 따라서, 네트워크 압축 엔진(205)은, 여러 다른 예시적인 특징들 중에서도 특히, 네트워크 압축 엔진(205)에 입력된 파라미터들의 특정 조합에 기초하여, 동일한 소스 뉴럴 네트워크(예를 들어, 305)의 여러 가지 상이한 압축된 버전들(예를 들어, 305')을 생성할 수 있다.
도 4를 참조하면, 단일 트레이닝 반복(그 특정 계층을 수반함) 내에서 예시적인 뉴럴 네트워크 내의 특정 계층에 대해 수행되는 예시적인 희소화-양자화(405)를 예시하는 단순화된 다이어그램(400)이 도시되어 있다. 완전-정밀도 가중치들(410)(예를 들어, 부동 소수점 32(fp32))의 세트가 특정 계층에 대해 정의될 수 있다. 일 예에서, 특정 계층에 대한 트레이닝 반복의 순방향 패스 동안, 가중치 희소화(415)는 계층에 대한 완전-정밀도 가중치들(420)의 희소화된 세트를 생성하기 위해 초기에 수행될 수 있다(양자화 전에). 그 후 동일한 트레이닝 반복의 동일한 순방향 패스 내에, 희소화된 가중치들(420)에 가중치 양자화(425)가 적용되어 특정 계층에 대한 압축된 희소-양자화된(SQ) 가중치들(430)의 세트를 생성할 수 있다. 이 특정 트레이닝 반복에 대해 수행된 희소화-양자화에 이어서, 희소 양자화된 가중치들(430)은 특정 계층(L)에 선행하는, 또는 특정 계층(L)에 공급하는 뉴럴 네트워크 내의 계층(L-1)으로부터의 활성화 값들(440)(예를 들어, 벡터 또는 행렬)과 컨볼루션(435)될 수 있다. 계층(L-1)의 활성화 값들(440)은, 그들 자체가, 계층 L-1에 대한 트레이닝 반복의 순방향 패스 동안 유사한 희소화-양자화 압축을 사용하여 계층 L-1에서의 가중치들의 압축에 기초하여 생성될 수 있다. 사실, 뉴럴 네트워크의 각각의 계층은 마찬가지로 특정 트레이닝 반복 내의 대응하는 순방향 패스 동안 압축될 수 있다(예를 들어, 405에서와 같이).
도 4의 예를 계속하면, 특정 계층에 대해 정의된 활성화 함수(들)에 기초하여, 특정 계층(L)에 대한 활성화 값들의 세트가 컨볼루션(435)으로부터 생성될 수 있다. 결과적인 활성화 값들은 또한 특정 계층에 대한 양자화된 활성화 값들(445)을 생성하기 위해 양자화될 수 있다(가중치 양자화(425) 동안과 동일한 레벨로). 동일한 트레이닝 반복 내에서의 역전파 동안, 손실 함수(450)가 양자화된 활성화 값들(445)에 적용되어 그래디언트 값들(455)을 생성할 수 있다. 일부 구현에서, 양자화가 이들 그래디언트 값에 적용되어 이들 값들이 (405 동안) 생성된 다른 양자화된 값들의 정밀도 레벨과 일치하게 할 수 있다. 트레이닝 반복 동안, 특정 계층(L)의 완전 정밀도 가중치들이 유지될 수 있고, 이들 완전-정밀도 가중치 값들을 업데이트하기 위해 완전 정밀도 가중치들(예를 들어, 410)에 그래디언트가 적용된다. 그 후 이들 업데이트된 가중치들은 후속 트레이닝 반복에서 사용될 수 있다.
또한, 트레이닝이 완료된 후에, 완전-정밀도 가중치들(트레이닝 동안 결정된 네트워크의 압축된 버전(들)과 함께 메모리에 유지된)은 폐기될 수 있고, 희소 및 하위 비트 양자화된 가중치들만이, 리소스 제약된 컴퓨팅 디바이스들(예를 들어, 에지 디바이스들) 상에서의 배치를 위해, 트레이닝에 이어서 제공되는, 뉴럴 네트워크의 결과적인 압축된 버전에 유지된다. 일부 구현에서, 압축된 뉴럴 네트워크 모델의 사용은 ("추론 시간"에서의) 출력 활성화들에 대한 (뉴럴 네트워크를 사용하는 시스템에 의한) 온-더-플라이(on-the-fly) 활성화 양자화를 수반할 수 있는데, 그 이유는 이들 값은, 트레이닝 시간 동안 양자화될 수 있는, 네트워크 가중치들과는 달리, 동적이고 입력들(예를 들어, 입력 이미지들)에 의존하기 때문이다.
도 4에 도시된 바와 같은, 일 예에서, 트레이닝의 각각의 순방향 패스에서, 대상 네트워크의 완전-정밀도 가중치들은 각각의 계층에서의 완전-정밀도 가중치들의 통계로부터 계산되는 계층별(layer-wise) 임계치에 기초하여 희소화된다. 그 후 희소화된 가중치들의 비-제로 요소들은, 예를 들어 min-max 균일 양자화 함수(예를 들어, 비-제로 가중치들의 최소 및 최대 값들) 또는 다른 예시적인 양자화 접근법으로 양자화될 수 있다. 네트워크의 활성화들의 경우에, 출력 활성화들이 적용된 활성화 함수(예를 들어, ReLU(rectified linear unit) 활성화)의 비선형성으로 인해 이미 희소하기 때문에, 이전의 희소화가 필요하지 않다. 예를 들어, ReLU 활성화 함수는 약 50% 희소성을 야기할 수 있다. 따라서, 일부 구현에서, 출력 활성화들만이 배치(batch) 정규화 및 비선형성 후에 양자화되는데, 이는 또한 다음의 컨볼루션 계층에의 입력 활성화들(예를 들어, 440)이다.
역방향 패스(트레이닝 패스 또는 반복 내에서의 역-전파)에서, 네트워크의 완전-정밀도 밀집 버전은 희소 및 하위 비트 양자화된 가중치들 및 활성화들의 그래디언트들(455)로 업데이트될 수 있다. 일 예에서, 비-차등 양자화 함수(non-differential quantization function)에 대한 그래디언트 계산은, 예를 들어, STE(straight-through estimator) 기법으로 근사화될 수 있다. 일부 구현에서, 시스템은 트레이닝의 각각의 반복에서 완전-정밀도 밀집 가중치들의 통계를 이용함으로써 희소화를 동적으로 할당하고 양자화 값들을 결정할 수 있다.
본 명세서에서 논의된 바와 같이, 잠재적으로 임의의 희소화 기법이, 본 명세서에서 논의된 바와 같은, 컴퓨팅 시스템에 의해 단일-반복 희소화-양자화 프로세스에서 적용될 수 있다. 하나의 예시적인 구현에서, 임계치보다 낮은 절대 가중치 값들을 갖는 연결들을 제거(제로 아웃)함으로써 각각의 계층에서 연결들을 프루닝하기 위해 통계-인식(statistic-aware) 희소화가 이용될 수 있다. 일부 구현에서, 이 임계치는 네트워크 또는 네트워크 섹션에 걸쳐 적용될 전역 임계치일 수 있다. 하나의 특정 예에서, 통계-인식 희소화 기법에 대해 계층별 임계치가 적용될 수 있다. 예를 들어, 통계-인식 희소화에서, 계층별 가중치 임계치가 각각의 계층에서의 완전-정밀도 밀집 가중치들의 현재 통계적 분포에 기초하여 계산될 수 있고(예를 들어, 각각의 트레이닝 패스(또는 반복)에서), 여기서 시스템은 각각의 순방향 패스에서 대응하는 계층의 임계치보다 더 작은 해당 계층에서의 가중치들을 마스킹 아웃(masking out)한다. (트레이닝 반복의) 대응하는 역방향 패스에서, 희소화된 가중치들의 그래디언트들은 동일한 마스크를 사용하여 프루닝될 수 있다. 일 예에서, 계층별 이진
Figure pct00001
(가중치
Figure pct00002
와 동일한 크기)가 n번째 반복에서(그리고 아래에 제시되는 수학식 1 및 수학식 2의 예들에서 나타낸 바와 같이) l번째 계층에 대해 사용될 수 있다. 이 이진 마스크는 계층별 임계치 및 희소성 제어 팩터 σ(예를 들어, 모든 계층들에 대해 동일함)에 기초하여 동적으로 업데이트될 수 있다. 이 예에서, 각각의 계층에서의 완전-정밀도 밀집 가중치의 평균 및 하나의 표준 편차(std)는 계층별 임계치인 것으로 계산된다. 이것은 (후속 트레이닝 반복들에서) 이전에 마스킹 아웃된 가중치들 중 하나 이상이 실제로 더 중요하다고 결정된다면(예를 들어,
Figure pct00003
인 경우) 이전에 마스킹 아웃된 가중치들을 다시 허용한다. 일부 구현에서, 레이어-바이-레이어 프루닝(layer-by-layer pruning)이 희소화에서 수행될 수 있다. 다른 예들에서, 모든 계층들은 전역적으로 프루닝될 수 있지만, 각각의 계층에서 가중치들의 상이한 분포를 고려하는, 계층별 임계치들에 따라 프루닝될 수 있다. 사실, 일부 경우들에서, 통계-인식 접근법은 동일한 희소성 레벨을 갖는 모든 계층들을 전역적으로 프루닝하는 것보다 더 양호하게 수행할 수 있고, 레이어-바이-레이어 프루닝과 비슷하게 그러나 훨씬 적은 트레이닝 에포크(training epoch)들로 수행할 수 있다.
Figure pct00004
Figure pct00005
희소성 제어 팩터 σ는 이 통계-인식 프루닝 기법에서의 하이퍼-파라미터이다. 타겟 희소성의 명시적 레벨(예를 들어, 모든 계층들의 50%를 프루닝)과 달리, σ는 희소성 레벨을 암시적으로 결정한다. σ의 값이 높을수록, 더 많은 희소성이 달성된다(예상되는 약간의 정확도 감소로). 예를 들어, 일 예에서, 여러 다른 예들 중에서도 특히, 대략 1%의 정확도 하락으로 희소 및 4-비트 모델에 대해 30x 압축 레이트가 달성될 수 있는 반면, 2%의 정확도 하락으로 희소 및 2-비트 모델에 대해 42x 압축 레이트가 달성된다.
가중치 희소화를 수행하기 위해 이용되는 기법에서와 같이, 여러 가지 상이한 양자화 기법들이 대안적으로 단일-반복 희소화-양자화의 다양한 구현들에서 적용될 수 있다. 예를 들어, Q on S 구현의 예시적인 경우에, 희소화를 통해 비교적 덜 중요한 가중치들을 마스킹한 후에, 희소화된 가중치들의 비-제로 요소들은 도시된 바와 같이 하위 비트폭(low-bitwidth) k로 양자화될 수 있다. 일 예에서, 가중치 양자화를 위해, [-1, 1]로의 클리핑 없이 min-max 균일 양자화 함수가 이용될 수 있다. 예를 들어, min은 이전에 결정된 계층별 프루닝 임계치
Figure pct00006
일 수 있고, max는 트레이닝의 n번째 반복에서 l번째 계층에서의 희소 가중치들
Figure pct00007
의 최대 값이다. 이 특정 예시적인 구현들을 계속하면, 아래에서 나타낸 수학식 3 내지 수학식 6은 희소 가중치
Figure pct00008
의 완전-정밀도 비-제로 요소의 k-비트
Figure pct00009
로의 양자화를 나타낸다:
Figure pct00010
Figure pct00011
Figure pct00012
Figure pct00013
일 예에서, 대응하는 트레이닝 반복의 역방향 패스 동안, 미분불가능한(nondifferentiable) 양자화 함수들을 역-전파하기 위해, STE(straight-through estimator) 접근법이 이용될 수 있다. 다른 예들에서는 다른 그래디언트 양자화 기법들이 대안적으로 적용될 수 있다. 하나의 특정 예에서, STE 접근법은, 예를 들어, 부분 그래디언트
Figure pct00014
Figure pct00015
를 아이덴티티 매핑(identity mapping)에 의해 각각
Figure pct00016
Figure pct00017
이 되도록 근사화함으로써 그래디언트들의 양자화에서 이용될 수 있다. 다시 말해서, 아이덴티티 매핑은, 여러 다른 예시적인 구현들 중에서도 특히, round() 및 sign() 연산들의 그래디언트가 거의 모든 곳에서 제로라는 문제를 극복하기 위해, 손대지 않은 그래디언트를 단순히 통과하기 위해 사용될 수 있다. 활성화 양자화의 경우, 여러 가지 기법들이 또한 적용될 수 있다. 예를 들어, 여러 다른 예들 중에서도 특히, 정적 클리핑 또는 파라미터화된 클리핑 기법(parameterized clipping technique, PACT)이 이용될 수 있다.
일부 구현에서, 적용되는 양자화 기법(들)은, 시스템이 일부 가중치들을 제로로 양자화하는 것에 기초하여, 기법이 "자유" 희소성을 야기하는지에 기초할 수 있다. 양자화 방법들에 따라, 일부 가중치들이 제로로 양자화되어 자유 희소성을 제공하는 경우가 있다. 예를 들어, WRPN 양자화 기법은 0의 암시적 min 및 1의 max를 가지는 [-1, 1]로의 클리핑으로 인해 작은 가중치들을 0으로 양자화하도록 실행될 수 있는 반면, DoReFaNet 양자화 기법은 양자화 전의 tanh 변환으로 인해 동일한 작은 가중치들을 0으로 매핑할 필요가 없다. 일부 경우들에서, 희소 가중치들의 (연결해제된) 바이모달 분포로 인해, 희소 가중치들의 비-제로 요소들에 대해서만 더 미세한 양자화 스텝들을 갖기 위해 양자화 알고리즘(예를 들어, min-max 양자화)이 이용될 수 있고, 이는 차례로 양자화 오차를 감소시킬 수 있는데, 그 이유는 그러한 양자화 접근법들은, 여러 다른 예시적인 고려사항들 및 구현들 중에서도 특히, 희소성 제어 σ가 더 커짐에 따라, min 값이 항상 제로보다 크고 더 커지므로 추가적인 희소성을 생성하지 않기 때문이다.
단일 트레이닝 패스(또는 반복) 내에서 가중치 희소화 및 양자화를 수행할 때, 희소화(희소화와 이어서 양자화(Q on S)에서) 또는 양자화(양자화와 이어서 희소화(S on Q)에서)가 트레이닝 패스에서 먼저 수행될 수 있고, 다른 것은 그 동일한 트레이닝 패스 내에서 직후에 수행될 수 있다. 일부 구현에서, 압축의 성능을 개선하기 위해 희소화 또는 양자화를 수행하는 것이 유리할 수 있다. 도 5를 참조하면, 예시적인 뉴럴 네트워크 모델의 S on Q와 Q on S 압축의 성능 간의 비교를 예시하는 그래프들(500a-c, 505a-c)의 세트가 도시되어 있다. 예를 들어, 일 예에서, ResNet 뉴럴 네트워크 모델(예를 들어, ResNet56)은 컴퓨팅 시스템에 의해 수행되는 통합된 희소화-양자화 압축을 사용하여 압축될 수 있다.
도 5의 특정 예시적인 예에서, 2개의 상이한 순서로 희소화 및 양자화를 적용하기 전과 후에 예시적인 뉴럴 네트워크에서의 특정 계층(예를 들어, layer3.5.conv2 계층(ResNet56에서의 마지막 3×3 컨볼루션 계층))에 대한 가중치 히스토그램들이 도시되어 있다. 그래프들(500a-c)은 S on Q 접근법의 가중치 히스토그램을 예시하는 반면, 그래프들(505a-c)은 Q on S 접근법의 가중치 히스토그램을 도시한다. 예를 들어, 가중치 히스토그램 그래프들(500a-c)은 계층의 완전-정밀도 베이스라인의 히스토그램(500a)을 도시하고, 히스토그램(500b)은 4-비트 양자화 후의 가중치들을 도시하고, 히스토그램(500c)은 4-비트 양자화된 가중치들의 희소화 후의 가중치들을 도시한다. 유사하게, 그래프들(505a-c)은 Q on S 접근법에서 가중치들의 진행을 도시하고, 505a는 완전 베이스라인 정밀도에서 계층의 가중치들을 도시하고, 히스토그램(505b)은 희소화 후의 가중치들을 도시하고, 히스토그램(505c)은 희소화된 가중치들의 양자화 후의 가중치들을 도시한다(505b에 도시됨). 이 예시에서, S on Q의 히스토그램으로부터, 모든 양자화 레벨들이 완전히 이용되지는 않는다는 것이 관찰된다. 예를 들어, 4-비트 양자화를 위해 최대 24개의 레벨이 이용될 수 있지만, 이 예에서는, 후속 희소화로 인해 더 적은 수의 레벨이 사용된다. 일부 희소화 기법들에서, 달성되는 희소성이 높을수록, 충분히 이용되지 않을 양자화 레벨들의 수가 더 많아진다. 다른 희소화 기법들이 희소화 단계에서 사용되는 경우와 같은 다른 경우들에서, 양자화는 유사한 성능 불이익 없이 먼저 수행될 수 있다. 예로서, 랜덤 희소화의 경우, 모든 레벨들이 이용될 수 있고, 이 경우, 희소화-양자화 순서는 크게 무관하다. 대조적으로, 크기 기반 희소화 기법이 Q on S와 함께 이용될 때, 가중치들의 동적 범위는 감소될 수 있고, 그에 의해, 여러 다른 예들 중에서도 특히, 더 미세한 양자화 스텝들로 양자화 오차를 감소시킨다.
일부 구현에서, 지연 파라미터(Delay parameter)가 트레이닝 내의 가중치 희소화-양자화의 시작에 대한 대응하는 지연을 설정하기 위해 단일-반복 희소화-양자화의 구현들 내에서 적용되도록 정의될 수 있다(예를 들어, 일정 수의 트레이닝 반복이 완료된 후에만 가중치 희소화-양자화를 적용함). 일 예에서, 활성화들의 양자화는, 트레이닝에서 나중 시점까지 지연되는, 가중치 희소화-양자화보다 트레이닝에서 더 일찍(예를 들어, 트레이닝의 시작으로부터) 시작될 수 있다. 예를 들어, 가중치 희소화-양자화를 연기하는(예를 들어, 지연(Delay) 수의 트레이닝 반복들이 완료될 때까지) 것은 가중치들이 트레이닝의 시작에서 안정화될 수 있게 하는 것을 보조할 수 있고, 그에 의해 뉴럴 네트워크 모델의 트레이닝 동안 더 빠른 수렴을 장려한다. 아래에 나타낸 "알고리즘 1"은 가중치 희소화-양자화를 연기하기 위해 지연 파라미터를 이용하는 단일-반복 희소화-양자화("SQuantization")의 하나의 예시적인 구현이다. 일 예에서, Delay 값은 전체 트레이닝 반복들의 1/3이 가중치 희소화-양자화를 개시하기 전에 완료되도록 정의될 수 있다. 사실, 그러한 접근법은 상이한 타입들의 네트워크들의 압축에 걸쳐 유익하게 적용될 수 있고, 여기서 Delay를 갖는 스크래치로부터의 트레이닝은 Delay를 갖지 않는 트레이닝보다 더 양호하게 수행한다(예를 들어, 여기서 Delay는 가중치들이 양자화된 활성화를 안정화시키고 완전히 적응시키기에 충분한 시간을 허용한다).
Figure pct00018
도 6은 뉴럴 네트워크 모델(예를 들어, 컨볼루션 뉴럴 네트워크 또는 다른 딥 뉴럴 네트워크)의 압축된 버전을 생성하기 위한 예시적인 기법을 예시하는 단순화된 흐름도(600)이다. 예를 들어, 뉴럴 네트워크 모델의 트레이닝이 시작될 수 있고(605), 뉴럴 네트워크의 완전-정밀도 버전이 액세스되고(610) 트레이닝 데이터가 뉴럴 네트워크에 입력들로서 제공된다. 뉴럴 네트워크의 원래 버전은 채널들/가중치들의 수 및 가중치들의 값들의 정밀도의 레벨이 원래의 높은 레벨에(예를 들어, 뉴럴 네트워크의 원래 버전을 효율적으로 또는 신뢰성 있게 사용하기 위한 프로세싱 또는 메모리 대역폭을 갖지 않을 수 있는 시스템들을 수용하기 위해 희생을 치르지 않고) 있다는 점에서 "완전 정밀도(full precision)"일 수 있다. 트레이닝 동안 수행될 트레이닝 반복들의 적어도 서브세트 동안, 하나 이상의 계층의 가중치들이 트레이닝 반복의 대응하는 순방향 패스들 동안 희소화될 수 있다(615). 희소화는 계층별 통계 인식 희소화(또는 프루닝) 기법(여러 다른 예시적인 희소화 기법들 중에서도 특히)에 따를 수 있고, 이는 (적어도 이 특정 트레이닝 반복에 대해) 대응하는 계층의 가중치들의 서브세트가 제거되는 결과를 야기한다. 희소화된 가중치들(가중치들의 서브세트의 제거 후에 계층에 대해 남아 있는 것들)은 그 후 나머지 가중치들의 값들을 제1의 더 높은 레벨의 정밀도(예를 들어, 32-비트 부동 소수점)로부터 더 낮은 레벨의 정밀도(예를 들어, 4-비트)로 변환하기 위해 대응하는 트레이닝 반복의 동일한 순방향 패스 내에서 양자화될 수 있다(620). 나머지 가중치들의 양자화(620)는 대응하는 트레이닝 반복에서 특정 계층에 대해 희소화된-양자화된 가중치들의 세트가 결정되는 결과를 야기한다. 희소화된-양자화된 가중치들의 세트를 사용하여(예를 들어, 선행 계층의 활성화와 희소화된-양자화된 가중치들의 세트의 컨볼루션을 통해) 활성화들이 결정될 수 있고(625) 이들 활성화가 양자화될 수 있다(630)(예를 들어, 희소화된 가중치들의 양자화(620)와 일치하여).
뉴럴 네트워크 모델의 하나보다 많은 계층이 압축을 겪을 수 있다. 예를 들어, 단일-트레이닝-반복 가중치 희소화(615) 및 양자화(620)는 각각의 트레이닝 반복 동안 이들 계층 각각에 대해 수행될 수 있다. 유사하게, 대응하는 트레이닝 반복의 순방향 패스 동안, 대상 계층들 모두가 트레이닝 반복 내에서 압축될 때까지, 각각의 활성화들이 결정(625) 및 양자화(630)될 수 있다. 원하는 또는 충분한 레벨의 정확도로 뉴럴 네트워크 모델을 적절히 트레이닝하기 위해 많은 트레이닝 반복이 수행될 수 있다. 트레이닝 반복의 순방향 패스가 모델의 계층들 중 마지막 계층을 통해 진행하면(635에서), 트레이닝 반복이 최종 트레이닝 반복인지 또는 추가적인 트레이닝 반복이 수행되어야 하는지가 결정될 수 있다(640에서). 현재 트레이닝 반복이 마지막 트레이닝 반복인 것으로 결정되면(640), (압축이 적용되는) 네트워크의 각각의 계층에 대해 결정된 희소화된-양자화된 가중치들의 세트가 트레이닝으로부터 생성된 원래의 뉴럴 네트워크의 압축된 버전(655)의 "최종" 가중치들로서 채택될 수 있다. 대안적으로, 다음 트레이닝 반복으로 진행하기 위해, 예를 들어, 대응하는 계층에 대해 결정된 활성화들(625)에 손실 함수(645)를 적용하는 것에 의해 그리고 손실 함수(645)의 결과들에 기초하여 해당 계층의 완전-정밀도 버전의 가중치들을 업데이트하는 것(650)에 의해 트레이닝 반복의 역방향 패스가 수행될 수 있다. 그 후 뉴럴 네트워크의 완전-정밀도 버전의 업데이트된 가중치들이 액세스될 수 있고(610), 업데이트된 완전-정밀도 가중치들에 기초하여 단일-반복 희소화-양자화(예를 들어, 615, 620)의 추가적인 라운드가 수행될 수 있고, 이 사이클은, 트레이닝이 완료되고 뉴럴 네트워크의 압축된(예를 들어, 희소화된-양자화된) 버전이 결정될(655) 때까지, 트레이닝 반복-바이-트레이닝 반복(training iteration-by-training iteration)으로 반복된다. 그 후 뉴럴 네트워크의 압축된 버전은 소비된 컴퓨팅 시스템(예를 들어, 리소스 제약된 시스템, 로보틱스 시스템, 드론 시스템 등)에 의해 이용될 수 있어서, 여러 다른 예시적인 이점들 및 구현들 중에서도 특히, 전체 정확도에서의 사소한 절충만으로 훨씬 "더 가벼운" 모델을 허용한다.
본 명세서에 설명되고 예시된 시스템들 및 솔루션 중 일부가 복수의 요소를 포함하거나 그와 연관되어 있는 것으로 기술되어 있지만, 명시적으로 예시되거나 기술된 모든 요소가 본 개시내용의 각각의 대안적인 구현에서 이용될 수 있는 것은 아니다. 추가적으로, 본 명세서에서 설명된 요소들 중 하나 이상은 시스템의 외부에 위치할 수 있는 반면, 다른 경우들에서는, 특정 요소들이 다른 설명된 요소들뿐만 아니라 예시된 구현에서 설명되지 않은 다른 요소들 중 하나 이상 내에 또는 그의 일부로서 포함될 수 있다. 또한, 특정 요소들이 다른 컴포넌트들과 조합될 수 있을 뿐만 아니라 본 명세서에서 설명된 목적들에 더하여 대안적인 또는 추가적인 목적들을 위해 사용될 수 있다.
또한, 위에 제시된 예들은 특정 원리들 및 특징들을 예시할 목적으로 제공된 것에 불과하고 본 명세서에서 설명된 개념들의 잠재적 실시예들을 반드시 제한하거나 제약하는 것은 아닌 비제한적인 예들이라는 것을 인식해야 한다. 예를 들어, 본 명세서에서 설명된 컴포넌트들의 다양한 구현들을 통해 실현되는 조합들을 포함하여, 본 명세서에서 설명된 특징들 및 컴포넌트들의 다양한 조합들을 이용하여 여러 가지 상이한 실시예들이 실현될 수 있다. 다른 구현들, 특징들, 및 세부 사항들이 본 명세서의 내용으로부터 인식되어야 한다.
도 7 내지 도 13은 본 명세서에 개시된 실시예들에 따라 사용될 수 있는 예시적인 컴퓨터 아키텍처들의 블록도들이다. 사실, 본 명세서에서 설명된 시스템들의 컴퓨팅 디바이스들, 프로세서들, 및 다른 로직 및 회로는 기능성의 전부 또는 일부 및 그러한 기능성을 구현하기 위한 지원 소프트웨어 및/또는 하드웨어 회로를 포함할 수 있다. 또한, 프로세서들 및 컴퓨팅 시스템들에 대해 본 기술분야에 알려진 다른 컴퓨터 아키텍처 설계들이 또한 여기에 도시된 예들을 넘어서 사용될 수 있다. 일반적으로, 본 명세서에 개시된 실시예들에 대한 적합한 컴퓨터 아키텍처들은 도 7 내지 도 13에 예시된 구성들을 포함할 수 있지만, 이에 제한되지는 않는다.
도 7은 각각의 게이트웨이들에 링크들을 통해 결합된 각각의 사물 인터넷(IoT) 네트워크들에 대한 예시적인 도메인 토폴로지를 예시한다. 사물 인터넷(IoT)은 매우 낮은 레벨들에서 기능성 및 데이터 취득을 제공하기 위해 다수의 컴퓨팅 디바이스들이 서로에 그리고 인터넷에 상호연결되는 개념이다. 따라서, 본 명세서에서 사용되는, IoT 디바이스는 다른 IoT 디바이스들 및 인터넷과 같은 더 넓은 네트워크와 통신하는, 여러 다른 것들 중에서도 특히, 감지 또는 제어와 같은 기능을 수행하는 반자율적(semiautonomous) 디바이스를 포함할 수 있다. 그러한 IoT 디바이스들은, 위에 소개된 바와 같은, 해시 테이블들을 구현하고 사용하는 로직 및 메모리를 갖추고 있을 수 있다.
종종, IoT 디바이스들은 메모리, 크기, 또는 기능성이 제한되어, 더 작은 수들의 더 큰 디바이스들과 유사한 비용으로 더 많은 수들이 배치되는 것을 허용한다. 그러나, IoT 디바이스는 스마트 폰, 랩톱, 태블릿, 또는 PC, 또는 다른 더 큰 디바이스일 수 있다. 또한, IoT 디바이스는 스마트 폰 또는 다른 컴퓨팅 디바이스 상의 애플리케이션과 같은 가상 디바이스일 수 있다. IoT 디바이스들은 데이터 저장, 프로세스 제어 등을 위해, IoT 디바이스들을 다른 IoT 디바이스들에 그리고 클라우드 응용들에 결합하기 위해 사용되는 IoT 게이트웨이들을 포함할 수 있다.
IoT 디바이스들의 네트워크들은, 물 분배 시스템들, 전기 전력 분배 시스템들, 파이프라인 제어 시스템들, 플랜트 제어 시스템들, 조명 스위치들, 서모스탯들, 로크들, 카메라들, 경보기들, 모션 센서들 등과 같은, 상업 및 홈 자동화 디바이스들을 포함할 수 있다. IoT 디바이스들은 원격 컴퓨터들, 서버들, 및 다른 시스템들을 통해, 예를 들어, 제어 시스템들 또는 액세스 데이터에 액세스 가능할 수 있다.
인터넷 및 유사 네트워크들의 미래의 성장은 매우 많은 수의 IoT 디바이스들을 수반할 수 있다. 따라서, 본 명세서에서 논의된 기법들의 컨텍스트에서, 그러한 미래 네트워킹에 대한 다수의 혁신은 이들 모든 계층들이 방해 받지 않게 증가하고, 연결된 리소스들을 발견하고 액세스 가능하게 하고, 연결된 리소스들을 숨기고 구획하는 능력을 지원하는 필요를 어드레싱할 것이다. 임의의 수의 네트워크 프로토콜들 및 통신 표준들이 사용될 수 있고, 각각의 프로토콜 및 표준은 특정 목적들을 어드레싱하도록 설계된다. 또한, 프로토콜들은 위치, 시간 또는 공간에 관계없이 동작하는 인간 액세스 가능한 서비스들을 지원하는 패브릭의 일부이다. 혁신들은 서비스 제공 및 하드웨어 및 소프트웨어와 같은 연관된 인프라스트럭처; 보안 향상들; 서비스 레벨 및 서비스 제공 협정에 특정된 서비스 품질(QoS) 조항들에 기초한 서비스들의 제공을 포함한다. 이해되겠지만, 도 7 및 도 8에서 소개된 것들과 같은 IoT 디바이스들 및 네트워크들의 사용은 유선 및 무선 기술들의 조합을 포함하는 연결성의 이종 네트워크에서의 다수의 새로운 도전적 과제들을 제시한다.
도 7은 구체적으로 IoT 디바이스들(704)을 포함하는 다수의 사물 인터넷(IoT) 네트워크들에 대해 사용될 수 있는 도메인 토폴로지의 단순화된 도면을 제공하고, IoT 네트워크들(756, 758, 760, 762)은 백본 링크들(702)을 통해 각각의 게이트웨이들(754)에 결합된다. 예를 들어, 다수의 IoT 디바이스들(704)은 게이트웨이(754)와 그리고 게이트웨이(754)를 통해 서로 통신할 수 있다. 도면을 단순화하기 위해, 모든 IoT 디바이스(704), 또는 통신 링크(예를 들어, 링크(716, 722, 728, 또는 732))가 라벨링되어 있는 것은 아니다. 백본 링크들(702)은 광학 네트워크들을 포함하는 임의의 수의 유선 또는 무선 기술들을 포함할 수 있고, 로컬 영역 네트워크(LAN), 광역 네트워크(WAN), 또는 인터넷의 일부일 수 있다. 추가적으로, 그러한 통신 링크들은 다양한 디바이스들의 상호연결을 용이하게 하는 멀티플렉싱/디멀티플렉싱(MUXing/deMUXing) 컴포넌트들의 사용을 포함하여, IoT 디바이스들(704) 및 게이트웨이들(754) 둘 다 사이의 광학 신호 경로들을 용이하게 한다.
네트워크 토폴로지는 BLE(Bluetooth low energy) 링크들(722)을 이용하는 네트워크(756)와 함께 제공되는 메시 네트워크와 같은 임의의 수의 타입들의 IoT 네트워크들을 포함할 수 있다. 존재할 수 있는 다른 타입들의 IoT 네트워크들은 IEEE 802.11(Wi-Fi®) 링크들(728)을 통해 IoT 디바이스들(704)과 통신하기 위해 사용되는 무선 로컬 영역 네트워크(WLAN) 네트워크(758), LTE/LTE-A(4G) 또는 5G 셀룰러 네트워크를 통해 IoT 디바이스들(704)과 통신하기 위해 사용되는 셀룰러 네트워크(760), 및 저전력 광역(LPWA) 네트워크(762), 예를 들어, LoRa alliance에 의해 공포된 LoRaWan 사양과 호환가능한 LPWA 네트워크, 또는 IETF(the Internet Engineering Task Force)에 의해 공포된 사양과 호환가능한 LPWAN(IPv6 over Low Power Wide-Area Networks) 네트워크를 포함한다. 또한, 각각의 IoT 네트워크들은 LTE 셀룰러 링크, LPWA 링크, 또는 Zigbee®와 같은 IEEE 802.15.4 표준에 기초한 링크와 같은 임의의 수의 통신 링크들을 이용하여 외부 네트워크 제공자(예를 들어, tier 2 또는 tier 3 제공자)와 통신할 수 있다. 각각의 IoT 네트워크들은 또한 여러 가지 네트워크 및 CoAP(Constrained Application Protocol)와 같은 인터넷 애플리케이션 프로토콜들의 사용으로 동작할 수 있다. 각각의 IoT 네트워크들은 또한 링크된 디바이스들 및 네트워크들의 클러스터 트리를 형성하는 링크들의 체인을 제공하는 코디네이터 디바이스들과 통합될 수 있다.
이들 IoT 네트워크 각각은 본 명세서에서 설명된 것들과 같은 새로운 기술적 특징들에 대한 기회들을 제공할 수 있다. 개선된 기술들 및 네트워크들은 포그 디바이스들 또는 시스템들로의 IoT 네트워크들의 사용을 포함하여, 디바이스들 및 네트워크들의 기하급수적 성장을 가능하게 할 수 있다. 그러한 개선된 기술들의 사용이 증가함에 따라, IoT 네트워크들은 직접적인 인간 개입을 필요로 하지 않고 자체-관리, 기능 진화, 및 협업을 위해 개발될 수 있다. 개선된 기술들은 심지어 IoT 네트워크들이 중앙집중식 제어 시스템들 없이 기능하는 것을 가능하게 할 수 있다. 따라서, 본 명세서에서 설명된 개선된 기술들은 현재 구현들을 훨씬 넘어서 네트워크 관리 및 동작 기능들을 자동화하고 향상시키기 위해 사용될 수 있다.
예에서, 예컨대 백본 링크들(702)을 통한, IoT 디바이스들(704) 사이의 통신들은 AAA(authentication, authorization, and accounting)를 위해 분산형 시스템(decentralized system)에 의해 보호될 수 있다. 분산형 AAA 시스템에서는, 상호연결된 이종 네트워크 인프라스트럭처에 걸쳐 분산 지불, 신용, 감사, 인가, 및 인증 시스템들이 구현될 수 있다. 이는 시스템들 및 네트워크들이 자율 동작들을 향해 나아가는 것을 허용한다. 이들 타입들의 자율 동작들에서, 머신들은 심지어 인간 리소스들에 대해 계약할 수 있고 다른 머신 네트워크들과의 파트너십들을 협상할 수 있다. 이는 개략적으로 설명된, 계획된 서비스 레벨 협정들에 대한 상호 목적들 및 밸런싱된 서비스 제공의 달성뿐만 아니라 계량, 측정, 트레이스 가능성(traceability) 및 추적 가능성(trackability)을 제공하는 솔루션들을 달성하는 것을 허용할 수 있다. 새로운 공급 체인 구조들 및 방법들의 생성은 어떠한 인간 관여도 없이 다수의 서비스가 생성되고, 가치를 위해 마이닝되고, 붕괴되는 것을 가능하게 할 수 있다.
그러한 IoT 네트워크들은 IoT 디바이스들 사이의 자율 조직들 내로의 사운드, 광, 전자 트래픽, 얼굴 및 패턴 인식, 냄새, 진동과 같은 감지 기술들의 통합에 의해 추가로 향상될 수 있다. 감각 시스템들의 통합은 계약 서비스 목적들, 오케스트레이션 및 리소스들의 서비스 품질(QoS) 기반 스워밍(swarming) 및 융합에 대한 서비스 제공의 체계적이고 자율적인 통신 및 조정을 허용할 수 있다. 네트워크 기반 리소스 프로세싱의 개별 예들 중 일부는 이하를 포함한다.
메시 네트워크(756)는, 예를 들어, 인라인 데이터-정보 변환을 수행하는 시스템들에 의해 향상될 수 있다. 예를 들어, 멀티-링크 네트워크를 포함하는 프로세싱 리소스들의 자체-형성 체인들은 효율적인 방식으로 미가공 데이터의 정보로의 변환, 및 자산들과 리소스들을 구별하는 능력 및 각각의 연관된 관리를 배포할 수 있다. 더욱이, 데이터 무결성, 품질, 보증을 개선하고 데이터 신뢰의 메트릭을 전달하기 위해 인프라스트럭처 및 리소스 기반 신뢰 및 서비스 인덱스들의 적절한 컴포넌트들이 삽입될 수 있다.
예를 들어, WLAN 네트워크(758)는 다중 표준 연결성을 제공하도록 표준 변환을 수행하는 시스템들을 이용하여, 상이한 프로토콜들을 사용하는 IoT 디바이스들(704)이 통신하는 것을 가능하게 할 수 있다. 추가 시스템들은 가시적인 인터넷 리소스들 및 은닉된 인터넷 리소스들을 포함하는 다중 표준 인프라스트럭처에 걸쳐 심리스한 상호연결을 제공할 수 있다.
셀룰러 네트워크(760)에서의 통신은, 예를 들어, 데이터를 오프로드하는, 더 많은 원격 디바이스들로 통신을 확장하는, 또는 둘 다를 수행하는 시스템들에 의해 향상될 수 있다. LPWA 네트워크(762)는 비-인터넷 프로토콜(IP) 대 IP 상호연결들, 어드레싱, 및 라우팅을 수행하는 시스템들을 포함할 수 있다. 또한, IoT 디바이스들(704) 각각은 해당 디바이스와의 광역 통신을 위한 적절한 트랜시버를 포함할 수 있다. 또한, 각각의 IoT 디바이스(704)는 추가적인 프로토콜들 및 주파수들을 사용하는 통신을 위한 다른 트랜시버들을 포함할 수 있다. 이는 본 명세서의 예들에서 묘사된 바와 같은, IoT 프로세싱 디바이스의 통신 환경 및 하드웨어에 관하여 더 논의된다.
마지막으로, IoT 디바이스들의 클러스터들은 다른 IoT 디바이스들뿐만 아니라 클라우드 네트워크와 통신할 장비를 갖출 수 있다. 이는 IoT 디바이스들이 디바이스들 사이에 애드혹 네트워크를 형성하는 것을 허용하여, 이들이, 포그 디바이스라고 지칭될 수 있는, 단일 디바이스로서 기능하는 것을 허용할 수 있다. 이 구성은 아래 도 8에 관하여 더 논의된다.
도 8은 클라우드 컴퓨팅 네트워크의 에지에서 포그 디바이스로서 동작하는 IoT 디바이스들(디바이스들(802))의 메시 네트워크와 통신하는 클라우드 컴퓨팅 네트워크를 예시한다. IoT 디바이스들의 메시 네트워크는 클라우드(800)의 에지에서 동작하는 포그(820)라고 지칭될 수 있다. 도면을 단순화하기 위해, 모든 IoT 디바이스(802)가 라벨링되어 있는 것은 아니다.
포그 네트워크(820)는 다수의 IoT 디바이스들(802)이, 예를 들어, 무선 링크들(822)에 의해 서로 통신하고 있는, 대규모 상호연결된 네트워크인 것으로 간주될 수 있다. 예로서, 이 상호연결된 네트워크는 OCF(Open Connectivity Foundation™에 의해 공개된 상호연결 사양을 이용하여 용이하게 될 수 있다. 이 표준은 디바이스들이 서로를 발견하고 상호연결들을 위한 통신을 확립하는 것을 허용한다. 예를 들어, 여러 다른 것들 중에서도 특히, 최적화된 링크 상태 라우팅(optimized link state routing, OLSR) 프로토콜, 모바일 애드혹 네트워킹에 대한 더 양호한 접근법(better approach to mobile ad-hoc networking, B.A.T.M.A.N.) 라우팅 프로토콜, 또는 OMA 경량 M2M(Lightweight M2M, LWM2M) 프로토콜을 포함하는 다른 상호연결 프로토콜들이 또한 사용될 수 있다.
3가지 타입의 IoT 디바이스들(802), 이 예에서는, 게이트웨이들(804), 데이터 집성기들(826), 및 센서들(828)이 도시되어 있지만, IoT 디바이스들(802)의 임의의 조합들 및 기능성이 사용될 수 있다. 게이트웨이들(804)은 클라우드(800)와 포그(820) 사이의 통신들을 제공하는 에지 디바이스들일 수 있고, 또한 모션 데이터, 흐름 데이터, 온도 데이터 등과 같은 센서들(828)로부터 획득된 데이터에 대한 백엔드 프로세스 기능을 제공할 수 있다. 데이터 집성기들(826)은 임의의 수의 센서들(828)로부터 데이터를 수집하고, 분석을 위해 백-엔드 프로세싱 기능을 수행할 수 있다. 결과들, 미가공 데이터, 또는 둘 다가 게이트웨이들(804)을 통해 클라우드(800)로 전달될 수 있다. 센서들(828)은, 예를 들어, 데이터를 수집하는 것 및 데이터를 프로세싱하는 것 둘 다를 할 수 있는 풀 IoT 디바이스(full IoT device)들(802)일 수 있다. 일부 경우들에서, 센서들(828)은, 예를 들어, 데이터를 수집하는 것 및 데이터 집성기들(826) 또는 게이트웨이들(804)이 데이터를 프로세싱하는 것을 허용하는 것 등, 기능성에서 더 제한될 수 있다.
임의의 IoT 디바이스(802)로부터의 통신들은 IoT 디바이스들(802) 중 임의의 것 사이의 편리한 경로(예를 들어, 가장 편리한 경로)를 따라 전달되어 게이트웨이들(804)에 도달할 수 있다. 이들 네트워크에서, 상호연결들의 수는 상당한 중복성을 제공하여, 다수의 IoT 디바이스들(802)의 손실에도 불구하고 통신이 유지되는 것을 허용한다. 또한, 메시 네트워크의 사용은 매우 낮은 전력인 또는 인프라스트럭처로부터 거리를 두고 위치하는 IoT 디바이스들(802)이 사용되는 것을 허용할 수 있는데, 그 이유는 다른 IoT 디바이스(802)에 연결하기 위한 범위가 게이트웨이(804)에 연결하기 위한 범위보다 훨씬 작을 수 있기 때문이다.
이들 IoT 디바이스(802)로부터 제공되는 포그 네트워크(820)는, 서버(806)와 같은 클라우드(800) 내의 디바이스들에, 클라우드(800)의 에지에 위치하는 단일 디바이스로서, 예를 들어, 포그 디바이스로서 제시될 수 있다. 이 예에서, 포그 디바이스로부터 오는 경보들은 포그(820) 내의 특정 IoT 디바이스(802)로부터 오는 것으로 식별되지 않고 전송될 수 있다. 이러한 방식으로, 포그 네트워크(820)는, 여러 다른 것들 중에서도 특히, 데이터 분석, 데이터 집성, 및 머신 러닝과 같은 프로세싱 또는 데이터 집약적 작업들을 수행하기 위해 컴퓨팅 및 저장 리소스들을 제공하는 분산 플랫폼으로 간주될 수 있다.
일부 예들에서, IoT 디바이스들(802)은 명령형 프로그래밍 스타일(imperative programming style)을 이용하여 구성될 수 있어, 예를 들어, 각각의 IoT 디바이스(802)가 특정 기능 및 통신 파트너들을 갖는다. 그러나, 포그 디바이스를 형성하는 IoT 디바이스들(802)은 선언형 프로그래밍 스타일(declarative programming style)로 구성될 수 있어서, 예컨대 조건들, 쿼리들, 및 디바이스 고장들에 응답하여 필요한 리소스들을 결정하기 위해 IoT 디바이스들(802)이 그들의 동작들 및 통신을 재구성하는 것을 허용한다. 예로서, IoT 디바이스들(802)에 의해 모니터링되는 장비의 서브세트의 동작들에 관한 서버(806)에 위치하는 사용자로부터의 쿼리는 포그(820) 디바이스가 쿼리에 응답하기 위해 필요한 특정 센서들(828)과 같은, IoT 디바이스들(802)을 선택하는 결과를 야기할 수 있다. 이들 센서(828)로부터의 데이터는 그 후 쿼리에 응답하기 위해 포그(820) 디바이스에 의해 서버(806)로 전송되기 전에, 센서들(828), 데이터 집성기들(826), 또는 게이트웨이들(804)의 임의의 조합에 의해 집성되고 분석될 수 있다. 이 예에서, 포그 네트워크(820) 내의 IoT 디바이스들(802)은, 흐름 센서들 또는 온도 센서들로부터 데이터를 추가하는 것과 같이, 쿼리에 기초하여 사용되는 센서들(828)을 선택할 수 있다. 또한, IoT 디바이스들(802) 중 일부가 동작하지 않으면, 포그(820) 디바이스 내의 다른 IoT 디바이스들(802)이, 이용가능한 경우, 유사한 데이터를 제공할 수 있다.
다른 예들에서, 위에 설명된 동작들 및 기능성은 전자 프로세싱 시스템의 예시적인 형식의 IoT 디바이스 머신에 의해 구현될 수 있고, 그 안에서 전자 프로세싱 시스템으로 하여금, 예시적인 실시예에 따른, 본 명세서에서 논의된 방법론들 중 어느 하나를 수행하게 하는, 명령어들의 세트 또는 시퀀스가 실행될 수 있다. 머신은 개인용 컴퓨터(PC), 태블릿 PC, 개인 휴대 정보 단말기(PDA), 이동 전화 또는 스마트폰의 양태들에 의해 구현되는 머신, 또는 해당 머신에 의해 취해질 액션들을 특정하는 명령어들(순차적 또는 다른 방식)을 실행할 수 있는 임의의 머신을 포함하는, IoT 디바이스 또는 IoT 게이트웨이일 수 있다. 또한, 위의 예에서는 단일 머신만이 묘사되고 참조될 수 있지만, 그러한 머신은 또한 본 명세서에서 논의되는 방법론들 중 어느 하나 이상을 수행하기 위한 명령어들의 세트(또는 다수의 세트)를 개별적으로 또는 공동으로 실행하는 머신들의 임의의 컬렉션을 포함하는 것으로 간주되어야 한다. 또한, 프로세서 기반 시스템에 대한 이들 및 유사한 예들은 본 명세서에서 논의된 방법론들 중 어느 하나 이상을 수행하기 위한 명령어들을 개별적으로 또는 공동으로 실행하기 위해 프로세서(예를 들어, 컴퓨터)에 의해 제어되거나 동작되는 하나 이상의 머신의 임의의 세트를 포함하는 것으로 간주되어야 한다. 일부 구현에서, 하나 이상의 다수의 디바이스는 기능성을 구현하고 본 명세서에서 설명된 작업들을 수행하기 위해 협력하여 동작할 수 있다. 일부 경우들에서, 하나 이상의 호스트 디바이스는 데이터를 공급하거나, 명령어들을 제공하거나, 결과들을 집성하거나, 다수의 디바이스에 의해 제공되는 공동 동작들 및 기능성을 다른 방식으로 가능하게 할 수 있다. 기능성이, 단일 디바이스에 의해 구현될 때, 디바이스에 로컬인 기능성인 것으로 간주될 수 있지만, 단일 머신으로서 동작하는 다수의 디바이스의 구현들에서, 기능성은 집합적으로 디바이스들에 로컬인 것으로 간주될 수 있고, 이 디바이스들의 컬렉션은, 여러 다른 예시적인 구현들 중에서도 특히, 다른 원격 머신들(단일 디바이스 또는 컬렉션 디바이스들로서 구현됨)에 의해 제공되는 결과들을 제공하거나 소비할 수 있다.
예를 들어, 도 9는 다수의 사물 인터넷(IoT) 디바이스들과 통신하는 클라우드 컴퓨팅 네트워크, 또는 클라우드(900)의 도면을 예시한다. 클라우드(900)는 인터넷을 나타낼 수 있거나, 로컬 영역 네트워크(LAN), 또는 회사용 사유 네트워크와 같은 광역 네트워크(WAN)일 수 있다. IoT 디바이스들은 다양한 조합들로 그룹화된 임의의 수의 상이한 타입의 디바이스들을 포함할 수 있다. 예를 들어, 교통 제어 그룹(906)은 도시 내의 거리들을 따라 IoT 디바이스들을 포함할 수 있다. 이들 IoT 디바이스는 정지등들, 교통 흐름 모니터들, 카메라들, 날씨 센서들 등을 포함할 수 있다. 교통 제어 그룹(906), 또는 다른 서브그룹들은 LPWA) 링크들, 광학 링크들 등과 같은 유선 또는 무선 링크들(908)을 통해 클라우드(900)와 통신할 수 있다. 또한, 유선 또는 무선 서브-네트워크(912)는 IoT 디바이스들이, 예컨대 로컬 영역 네트워크, 무선 로컬 영역 네트워크 등을 통해, 서로 통신하는 것을 허용할 수 있다. IoT 디바이스들은 클라우드(900)와 같은 원격 위치들과 통신하기 위해 게이트웨이(910 또는 928)와 같은 다른 디바이스를 사용할 수 있다; IoT 디바이스들은 또한 클라우드(900)와의 또는 게이트웨이(910)와의 통신을 용이하게 하기 위해 하나 이상의 서버(930)를 사용할 수 있다. 예를 들어, 하나 이상의 서버(930)는 로컬 영역 네트워크 중의 로컬 에지 클라우드 또는 포그 구현을 지원하기 위한 중간 네트워크 노드로서 동작할 수 있다. 또한, 묘사되어 있는 게이트웨이(928)는, 예컨대 다양한 IoT 디바이스들(914, 920, 924)이 클라우드(900) 내의 리소스들의 할당 및 사용에 대해 제약되거나 동적인, 클라우드-게이트웨이-다수의 에지 디바이스 구성에서 동작할 수 있다.
IoT 디바이스들의 다른 예시적인 그룹들은, 여러 다른 것들 중에서도 특히, 원격 날씨 스테이션들(914), 로컬 정보 단말들(916), 경보 시스템들(918), 자동 출납기들(920), 경보 패널들(922), 또는 긴급 차량들(924) 또는 다른 차량들(926)과 같은 움직이는 차량들을 포함할 수 있다. 이들 IoT 디바이스 각각은 다른 IoT 디바이스들과, 서버들(904)과, 다른 IoT 포그 디바이스 또는 시스템(도시되지 않았지만, 도 8에 묘사됨), 또는 그 안의 조합과 통신할 수 있다. IoT 디바이스들의 그룹들은 다양한 주거, 상업 및 산업 환경들에서(개인 또는 공공 환경들 둘 다를 포함하여) 배치될 수 있다.
도 9로부터 알 수 있는 바와 같이, 많은 수의 IoT 디바이스들이 클라우드(900)를 통해 통신할 수 있다. 이는 상이한 IoT 디바이스들이 다른 디바이스들에게 자율적으로 정보를 요청하거나 제공하는 것을 허용할 수 있다. 예를 들어, IoT 디바이스들의 그룹(예를 들어, 교통 제어 그룹(906))은 인간의 개입 없이 예보를 제공할 수 있는 원격 날씨 스테이션들(914)의 그룹에 현재 날씨 예보를 요청할 수 있다. 또한, 긴급 차량(924)은 절도가 진행 중인 자동 출납기(920)에 의해 경보를 받을 수 있다. 긴급 차량(924)이 자동 출납기(920)를 향해 진행함에 따라, 그것은, 예를 들어, 긴급 차량(924)이 교차로에 방해 받지 않고 접근할 수 있도록 충분한 시간 내에 교차로에서의 크로스 교통을 차단하기 위해 신호등을 적색으로 전환함으로써, 해당 위치까지의 클리어런스를 요청하기 위해 교통 제어 그룹(906)에 액세스할 수 있다.
원격 날씨 스테이션들(914) 또는 교통 제어 그룹(906)과 같은 IoT 디바이스들의 클러스터들은 다른 IoT 디바이스들뿐만 아니라 클라우드(900)와 통신할 장비를 갖추고 있을 수 있다. 이는 IoT 디바이스들이 디바이스들 사이에 애드혹 네트워크를 형성하는 것을 허용하여, 이들이, 포그 디바이스 또는 시스템이라고 지칭될 수 있는, 단일 디바이스로서 기능하는 것을 허용할 수 있다(예를 들어, 도 8을 참조하여 위에 설명된 바와 같이).
도 10은 본 명세서에서 설명된 기법들을 구현하기 위해 IoT 디바이스(1050)에 존재할 수 있는 컴포넌트들의 예의 블록도이다. IoT 디바이스(1050)는 예에서 도시되거나 위의 개시내용에서 참조된 컴포넌트들의 임의의 조합들을 포함할 수 있다. 컴포넌트들은 IoT 디바이스(1050)에 적응된 IC들, 그의 부분들, 개별 전자 디바이스들, 또는 다른 모듈들, 로직, 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 조합으로서, 또는 더 큰 시스템의 섀시 내에 다른 방식으로 포함된 컴포넌트들로서 구현될 수 있다. 추가적으로, 도 10의 블록도는 IoT 디바이스(1050)의 컴포넌트들의 하이-레벨 뷰를 묘사하도록 의도되어 있다. 그러나, 다른 구현들에서는 도시된 컴포넌트들 중 일부가 생략될 수 있고, 추가 컴포넌트들이 존재할 수 있고, 도시된 컴포넌트들의 상이한 배열이 발생할 수 있다.
IoT 디바이스(1050)는 프로세서(1052) 형식의 프로세싱 회로를 포함할 수 있고, 이는 마이크로프로세서, 멀티-코어 프로세서, 멀티스레드 프로세서, 초저전압 프로세서, 임베디드 프로세서, 또는 다른 공지된 프로세싱 요소일 수 있다. 프로세서(1052)는 프로세서(1052) 및 다른 컴포넌트들이 단일 집적 회로 내로 형성되는 시스템 온 칩(SoC)의 일부, 또는 Intel로부터의 Edison™ 또는 Galileo™ SoC 보드들과 같은 단일 패키지일 수 있다. 예로서, 프로세서(1052)는 Quark™, Atom™, i3, i5, i7, 또는 MCU-클래스 프로세서와 같은, Intel® Architecture Core™ 기반 프로세서, 또는 캘리포니아주 산타 클라라의 Intel® Corporation으로부터 입수가능한 다른 그러한 프로세서를 포함할 수 있다. 그러나, 예를 들어, 캘리포니어주, 서니베일의 AMD(Advanced Micro Devices, Inc.)로부터 입수가능한 것, 캘리포니아주, 서니베일의 MIPS Technologies, Inc.로부터의 MIPS 기반 설계, ARM Holdings, Ltd. 또는 그의 고객, 또는 그들의 면허권자들 또는 사용권자로부터 라이센싱된 ARM 기반 설계와 같은, 임의의 수의 다른 프로세서들이 사용될 수 있다. 프로세서들은 Apple® Inc.로부터의 A5-A10 프로세서, Qualcomm® Technologies, Inc.로부터의 Snapdragon™ 프로세서 또는 Texas Instruments, Inc.로부터의 OMAP™ 프로세서와 같은 유닛들을 포함할 수 있다.
프로세서(1052)는 인터커넥트(1056)(예를 들어, 버스)를 통해 시스템 메모리(1054)와 통신할 수 있다. 주어진 양의 시스템 메모리를 제공하기 위해 임의의 수의 메모리 디바이스들이 사용될 수 있다. 예로서, 메모리는 DDR 또는 모바일 DDR 표준들(예를 들어, 번호 LPDDR, LPDDR2, LPDDR3, 또는 LPDDR4)과 같은 JEDEC(Joint Electron Devices Engineering Council) 설계에 따른 랜덤 액세스 메모리(RAM)일 수 있다. 다양한 구현들에서, 개별 메모리 디바이스들은 단일 다이 패키지(SDP), 듀얼 다이 패키지(DDP) 또는 쿼드 다이 패키지(Q17P)와 같은 임의의 수의 상이한 패키지 타입들일 수 있다. 이들 디바이스는, 일부 예들에서, 더 낮은 프로파일 솔루션을 제공하기 위해 마더보드 상에 직접 솔더링될 수 있는 반면, 다른 예들에서 디바이스들은 주어진 커넥터에 의해 마더보드에 차례로 결합되는 하나 이상의 메모리 모듈로서 구성된다. 다른 타입들의 메모리 모듈들, 예를 들어 microDIMM들 또는 MiniDIMM들을 포함하지만 이들로 제한되지 않는 상이한 다양성들의 듀얼 인라인 메모리 모듈들(DIMM들)과 같은 임의의 수의 다른 메모리 구현들이 사용될 수 있다.
데이터, 응용, 운영 체제 등과 같은 정보의 영구적 저장을 제공하기 위해, 저장소(1058)가 인터커넥트(1056)를 통해 프로세서(1052)에 결합될 수도 있다. 예에서, 저장소(1058)는 솔리드 스테이트 디스크 드라이브(SSDD)를 통해 구현될 수 있다. 저장소(1058)에 사용될 수 있는 다른 디바이스들은 SD 카드들, microSD 카드들, xD 픽처 카드들 등과 같은 플래시 메모리 카드들, 및 USB 플래시 드라이브들을 포함한다. 저전력 구현들에서, 저장소(1058)는 프로세서(1052)와 연관된 온-다이 메모리 또는 레지스터들일 수 있다. 그러나, 일부 예들에서, 저장소(1058)는 마이크로 하드 디스크 드라이브(HDD)를 이용하여 구현될 수 있다. 또한, 설명된 기술들에 더하여, 또는 그 대신에, 여러 다른 것들 중에서도 특히, 저항 변화 메모리들, 상 변화 메모리들, 홀로그래픽 메모리들, 또는 화학 메모리들과 같은, 임의의 수의 새로운 기술들이 저장소(1058)에 사용될 수 있다.
컴포넌트들은 인터커넥트(1056)를 통해 통신할 수 있다. 인터커넥트(1056)는 ISA(industry standard architecture), EISA(extended ISA), PCI(peripheral component interconnect), PCIx(peripheral component interconnect extended), PCIe(PCI express), 또는 임의의 수의 다른 기술들을 포함하는 임의의 수의 기술들을 포함할 수 있다. 인터커넥트(1056)는, 예를 들어, SoC 기반 시스템에서 사용되는 사유 버스일 수 있다. 여러 다른 것들 중에서도 특히, I2C 인터페이스, SPI 인터페이스, 포인트 투 포인트 인터페이스들, 및 전력 버스와 같은, 다른 버스 시스템들이 포함될 수 있다.
인터커넥트(1056)는, 다른 메시 디바이스들(1064)과의 통신을 위해, 프로세서(1052)를 메시 트랜시버(1062)에 결합할 수 있다. 메시 트랜시버(1062)는, 여러 다른 것들 중에서도 특히, Bluetooth® Special Interest Group에 의해 정의된 바와 같은 BLE(Bluetooth® low energy) 표준, 또는 ZigBee® 표준을 이용하여, IEEE 802.15.4 표준 하에서 2.4 기가헤르츠(GHz) 송신들과 같은 임의의 수의 주파수들 및 프로토콜들을 사용할 수 있다. 특정 무선 통신 프로토콜을 위해 구성된 임의의 수의 무선기들이 메시 디바이스들(1064)로의 연결들을 위해 사용될 수 있다. 예를 들어, WLAN 유닛은 IEEE(Institute of Electrical and Electronics Engineers) 802.11 표준에 따라 Wi-Fi™ 통신을 구현하기 위해 사용될 수 있다. 또한, 예를 들어, 셀룰러 또는 다른 무선 광역 프로토콜에 따른 무선 광역 통신이 WWAN 유닛을 통해 발생할 수 있다.
메시 트랜시버(1062)는 상이한 거리에서의 통신을 위해 다수의 표준 또는 무선기를 이용하여 통신할 수 있다. 예를 들어, IoT 디바이스(1050)는, BLE에 기초한 로컬 트랜시버, 또는 다른 저전력 무선기를 이용하여, 예를 들어, 약 10 미터 내의 가까운 디바이스들과 통신하여, 전력을 절약할 수 있다. 예를 들어, 약 50 미터 내의, 더 멀리 있는 메시 디바이스들(1064)은 ZigBee 또는 다른 중간 전력 무선기들을 통해 도달될 수 있다. 양쪽 통신 기법들은 상이한 전력 레벨들에서 단일 무선기를 통해 발생할 수 있거나, 별개의 트랜시버들을 통해, 예를 들어, BLE를 사용하는 로컬 트랜시버 및 ZigBee를 사용하는 별개의 메시 트랜시버를 통해 발생할 수 있다.
로컬 또는 광역 네트워크 프로토콜들을 통해 클라우드(1000) 내의 디바이스들 또는 서비스들과 통신하기 위해 무선 네트워크 트랜시버(1066)가 포함될 수 있다. 무선 네트워크 트랜시버(1066)는, 여러 다른 것들 중에서도 특히, IEEE 802.15.4, 또는 IEEE 802.15.4g 표준들을 따르는 LPWA 트랜시버일 수 있다. IoT 디바이스(1050)는 Semtech 및 LoRa Alliance에 의해 개발된 LoRaWAN™(Long range Wide Area Network)을 이용하여 광역에 걸쳐 통신할 수 있다. 본 명세서에서 설명된 기법들은 이들 기술로 제한되지 않고, 장거리, 낮은 대역폭 통신, 예컨대 Sigfox, 및 다른 기술들을 구현하는 임의의 수의 다른 클라우드 트랜시버들과 함께 사용될 수 있다. 또한, IEEE 802.15.4e 사양에 기술된 시간 슬롯 채널 호핑과 같은 다른 통신 기법들이 사용될 수 있다.
본 명세서에서 설명된 바와 같이, 메시 트랜시버(1062) 및 무선 네트워크 트랜시버(1066)에 대해 언급된 시스템들에 더하여 임의의 수의 다른 무선 통신 및 프로토콜들이 사용될 수 있다. 예를 들어, 무선 트랜시버들(1062 및 1066)은 고속 통신을 구현하기 위해 확산 스펙트럼(SPA/SAS) 통신을 사용하는 LTE 또는 다른 셀룰러 트랜시버를 포함할 수 있다. 또한, 네트워크 통신의 제공 및 중속 통신을 위해 Wi-Fi® 네트워크들과 같은 임의의 수의 다른 프로토콜들이 사용될 수 있다.
무선 트랜시버들(1062 및 1066)은 임의의 수의 3GPP(Third Generation Partnership Project) 사양들, 특히 롱 텀 에볼루션(LTE), 롱 텀 에볼루션-어드밴스드(LTE-A), 및 롱 텀 에볼루션-어드밴스드 프로(LTE-A Pro)와 호환가능한 무선기들을 포함할 수 있다. 임의의 수의 다른 고정, 모바일, 또는 위성 통신 기술들 및 표준들과 호환가능한 무선기들이 선택될 수 있다는 점에 유의할 수 있다. 이들은, 예를 들어, 임의의 셀룰러 광역 무선 통신 기술을 포함할 수 있고, 이는 예를 들어 5세대(5G) 통신 시스템, GSM(Global System for Mobile Communications) 무선 통신 기술, GPRS(General Packet Radio Service) 무선 통신 기술, 또는 EDGE(Enhanced Data Rates for GSM Evolution) 무선 통신 기술, UMTS(Universal Mobile Telecommunications System) 통신 기술을 포함할 수 있다. 위에 열거된 표준들에 더하여, 여러 다른 것들 중에서도 특히, 예를 들어, ITU(International Telecommunication Union), 또는 ETSI(European Telecommunications Standards Institute)에 의해 발행된 표준들을 준수하는 무선기들을 포함하는, 임의의 수의 위성 업링크 기술들이 무선 네트워크 트랜시버(1066)에 사용될 수 있다. 따라서, 본 명세서에 제공된 예들은 기존의 그리고 아직 공식화되지 않은 양쪽 모두의 다양한 다른 통신 기술들에 적용가능한 것으로 이해된다.
유선 통신을 클라우드(1000)에 또는 메시 디바이스들(1064)과 같은 다른 디바이스들에 제공하기 위해 네트워크 인터페이스 컨트롤러(NIC)(1068)가 포함될 수 있다. 유선 통신은 이더넷 연결을 제공할 수 있거나, 여러 다른 것들 중에서도 특히, CAN(Controller Area Network), LIN(Local Interconnect Network), DeviceNet, ControlNet, Data Highway+, PROFIBUS, 또는 PROFINET와 같은 다른 타입의 네트워크들에 기초할 수 있다. 제2 네트워크로의 연결을 허용하기 위해 추가적인 NIC(1068), 예를 들어, 이더넷을 통해 클라우드에 통신을 제공하는 NIC(1068), 및 다른 타입의 네트워크를 통해 다른 디바이스들에 통신을 제공하는 제2 NIC(1068)가 포함될 수 있다.
인터커넥트(1056)는 외부 디바이스들 또는 서브시스템들을 연결하기 위해 사용되는 외부 인터페이스(1070)에 프로세서(1052)를 결합할 수 있다. 외부 디바이스들은 가속도계들, 레벨 센서들, 흐름 센서들, 광학 광 센서들, 카메라 센서들, 온도 센서들, 글로벌 포지셔닝 시스템(GPS) 센서들, 압력 센서들, 기압 센서들 등과 같은 센서들(1072)을 포함할 수 있다. 외부 인터페이스(1070)는 추가로 IoT 디바이스(1050)를 전력 스위치들, 밸브 액추에이터들, 가청 사운드 생성기, 시각적 경고 디바이스 등과 같은 액추에이터들(1074)에 연결하기 위해 사용될 수 있다.
일부 옵션 예들에서, 다양한 입력/출력(I/O) 디바이스들이 IoT 디바이스(1050) 내에 존재하거나 그에 연결될 수 있다. 예를 들어, 센서 판독 또는 액추에이터 위치와 같은 정보를 보여주기 위해 디스플레이 또는 다른 출력 디바이스(1084)가 포함될 수 있다. 입력을 수용하기 위해 터치 스크린 또는 키패드와 같은 입력 디바이스(1086)가 포함될 수 있다. 출력 디바이스(1084)는, 이진 상태 지시기들(예를 들어, LED들) 및 다중 문자 시각적 출력들과 같은 단순한 시각적 출력들, 또는 디스플레이 스크린들(예를 들어, LCD 스크린들)과 같은 더 복잡한 출력들을 포함하는 임의의 수의 형식의 오디오 또는 시각적 디스플레이를 포함할 수 있고, 문자들, 그래픽들, 멀티미디어 객체들 등의 출력이 IoT 디바이스(1050)의 동작으로부터 발생되거나 생성된다.
배터리(1076)는 IoT 디바이스(1050)에 전력을 공급할 수 있지만, IoT 디바이스(1050)가 고정된 위치에 장착되는 예들에서, 그것은 전기 그리드에 결합된 전원을 가질 수 있다. 배터리(1076)는 리튬 이온 배터리, 또는 아연-공기 배터리, 알루미늄-공기 배터리, 리튬-공기 배터리와 같은 금속-공기 배터리 등일 수 있다.
배터리(1076)의 충전 상태(SoCh))를 추적하기 위해 IoT 디바이스(1050)에 배터리 모니터/충전기(1078)가 포함될 수 있다. 배터리 모니터/충전기(1078)는 배터리(1076)의 건강 상태(SoH) 및 기능 상태(SoF)와 같은 고장 예측들을 제공하기 위해 배터리(1076)의 다른 파라미터들을 모니터링하기 위해 사용될 수 있다. 배터리 모니터/충전기(1078)는 Linear Technologies로부터의 LTC4020 또는 LTC2990과 같은 배터리 모니터링 집적 회로, 아리조나주 피닉스의 ON Semiconductor로터의 ADT7488A, 또는 텍사스 달라스의 Texas Instruments로부터의 UCD90xxx 패밀리로부터의 IC를 포함할 수 있다. 배터리 모니터/충전기(1078)는 배터리(1076)에 관한 정보를 인터커넥트(1056)를 통해 프로세서(1052)에 전달할 수 있다. 배터리 모니터/충전기(1078)는 프로세서(1052)가 배터리(1076)의 전압 또는 배터리(1076)로부터의 전류 흐름을 직접 모니터링하는 것을 허용하는 아날로그-디지털(ADC) 컨버터를 또한 포함할 수 있다. 배터리 파라미터들은 송신 주파수, 메시 네트워크 동작, 감지 주파수 등과 같은, IoT 디바이스(1050)가 수행할 수 있는 액션들을 결정하기 위해 사용될 수 있다.
그리드에 결합된 전력 블록(1080), 또는 다른 전원이 배터리(1076)를 충전하기 위해 배터리 모니터/충전기(1078)와 결합될 수 있다. 일부 예들에서, 전력 블록(1080)은 무선 전력 수신기로 대체되어, 예를 들어, IoT 디바이스(1050) 내의 루프 안테나를 통해 무선으로 전력을 획득할 수 있다. 여러 다른 것들 중에서도 특히, 캘리포니아주 밀피타스의 Linear Technologies로부터의 LTC4020 칩과 같은 무선 배터리 충전 회로가 배터리 모니터/충전기(1078)에 포함될 수 있다. 선택된 특정 충전 회로들은 배터리(1076)의 크기, 및 따라서, 요구되는 전류에 의존한다. 충전은, 여러 다른 것들 중에서도 특히, Airfuel Alliance에 의해 공포된 Airfuel 표준, Wireless Power Consortium에 의해 공포된 Qi 무선 충전 표준, 또는 Alliance for Wireless Power에 의해 공포된 Rezence 충전 표준을 이용하여 수행될 수 있다.
저장소(1058)는 본 명세서에서 설명된 기법들을 구현하기 위한 소프트웨어, 펌웨어 또는 하드웨어 커맨드들의 형식으로 된 명령어들(1082)을 포함할 수 있다. 그러한 명령어들(1082)이 메모리(1054) 및 저장소(1058)에 포함된 코드 블록들로서 도시되어 있지만, 코드 블록들 중 임의의 것이 예를 들어 특정 용도 집적 회로(ASIC)에 내장된 하드와이어드 회로들로 대체될 수 있다는 것을 이해할 수 있다.
예에서, 메모리(1054), 저장소(1058), 또는 프로세서(1052)를 통해 제공되는 명령어들(1082)은 IoT 디바이스(1050) 내의 전자 동작들을 수행하도록 프로세서(1052)에 지시하는 코드를 포함하는 비-일시적 머신 판독가능 매체(1060)로서 구현될 수 있다. 프로세서(1052)는 인터커넥트(1056)를 통해 비-일시적 머신 판독가능 매체(1060)에 액세스할 수 있다. 예를 들어, 비-일시적 머신 판독가능 매체(1060)는 도 10의 저장소(1058)에 대해 설명된 디바이스들에 의해 구현될 수 있거나 광학 디스크들, 플래시 드라이브들, 또는 임의의 수의 다른 하드웨어 디바이스들과 같은 특정 저장 유닛들을 포함할 수 있다. 비-일시적 머신 판독가능 매체(1060)는, 예를 들어, 위에 묘사된 동작들 및 기능성의 흐름도(들) 및 블록도(들)에 관하여 설명된 바와 같이, 액션들의 특정 시퀀스 또는 흐름을 수행하도록 프로세서(1052)에 지시하는 명령어들을 포함할 수 있다.
도 11은 실시예에 따른 프로세서의 예시적인 예시이다. 프로세서(1100)는 위의 구현들과 관련하여 사용될 수 있는 하드웨어 디바이스의 타입의 예이다. 프로세서(1100)는 마이크로프로세서, 임베디드 프로세서, DSP(digital signal processor), 네트워크 프로세서, 멀티-코어 프로세서, 싱글 코어 프로세서, 또는 코드를 실행하는 다른 디바이스와 같은 임의의 타입의 프로세서일 수 있다. 하나의 프로세서(1100)만이 도 11에 예시되어 있지만, 프로세싱 요소는 대안적으로 도 11에 예시된 프로세서(1100)를 둘 이상 포함할 수 있다. 프로세서(1100)는 싱글-스레드형(single-threaded) 코어일 수 있거나, 또는 적어도 일 실시예에 대해, 프로세서(1100)는 코어당 하나보다 많은 하드웨어 스레드 컨텍스트(또는 "논리 프로세서")를 포함할 수 있다는 점에서 멀티-스레드형(multi-threaded)일 수 있다.
도 11은 또한 실시예에 따른 프로세서(1100)에 결합된 메모리(1102)를 예시한다. 메모리(1102)는 본 기술분야의 통상의 기술자들에게 알려진 또는 다른 방식으로 이용가능한 바와 같은 매우 다양한 메모리들(메모리 계층 구조의 다양한 계층들을 포함함) 중 임의의 것일 수 있다. 그러한 메모리 요소들은 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 필드 프로그래머블 게이트 어레이(FPGA)의 로직 블록들, 소거 가능한 프로그램 가능한 판독 전용 메모리(EPROM) 및 전기적으로 소거 가능한 프로그램 가능한 ROM(EEPROM)을 포함할 수 있지만, 이에 제한되지는 않는다.
프로세서(1100)는 본 명세서에서 상세히 설명된 알고리즘들, 프로세스들, 또는 동작들과 연관된 임의의 타입의 명령어들을 실행할 수 있다. 일반적으로, 프로세서(1100)는 요소 또는 항목(예를 들어, 데이터)을 하나의 상태 또는 것으로부터 다른 상태 또는 것으로 변환할 수 있다.
프로세서(1100)에 의해 실행될 하나 이상의 명령어일 수 있는 코드(1104)는 메모리(1102)에 저장될 수 있거나, 소프트웨어, 하드웨어, 펌웨어, 또는 이들의 임의의 적합한 조합으로, 또는 적절한 경우에 그리고 특정 필요에 기초하여 임의의 다른 내부 또는 외부 컴포넌트, 디바이스, 요소, 또는 객체에 저장될 수 있다. 일 예에서, 프로세서(1100)는 코드(1104)에 의해 지시되는 명령어들의 프로그램 시퀀스를 따를 수 있다. 각각의 명령어는 프런트-엔드 로직(1106)에 진입하고, 하나 이상의 디코더(1108)에 의해 프로세싱된다. 디코더는, 그의 출력으로서, 미리 정의된 포맷의 고정 폭 마이크로 연산과 같은 마이크로 연산을 생성할 수 있거나, 원래 코드 명령어를 반영하는 다른 명령어들, 마이크로명령어들 또는 제어 신호들을 생성할 수 있다. 프런트-엔드 로직(1106)은 레지스터 리네이밍 로직(1110) 및 스케줄링 로직(1112)을 또한 포함하고, 이들은 일반적으로 리소스들을 할당하고 실행을 위한 명령어에 대응하는 동작을 큐잉한다.
프로세서(1100)는 실행 유닛들(1116a, 1116b, 1116n 등)의 세트를 갖는 실행 로직(1114)을 또한 포함할 수 있다. 일부 실시예들은 특정 기능들 또는 기능들의 세트들에 전용인 다수의 실행 유닛을 포함할 수 있다. 다른 실시예들은 특정 기능을 수행할 수 있는 단지 하나의 실행 유닛 또는 하나의 실행 유닛을 포함할 수 있다. 실행 로직(1114)은 코드 명령어들에 의해 특정된 동작들을 수행한다.
코드 명령어들에 의해 특정된 동작들의 실행의 완료 후에, 백-엔드 로직(1118)은 코드(1104)의 명령어들을 회수(retire)할 수 있다. 일 실시예에서, 프로세서(1100)는 비순차적 실행을 허용하지만 명령어들의 순차적 회수를 요구한다. 회수 로직(1120)은 여러 가지 알려진 형태들(예를 들어, 재정렬 버퍼들 등)을 취할 수 있다. 이러한 방식으로, 프로세서(1100)는, 적어도 디코더에 의해 생성되는 출력, 레지스터 리네이밍 로직(1110)에 의해 이용되는 하드웨어 레지스터들 및 테이블들, 및 실행 로직(1114)에 의해 수정되는 임의의 레지스터들(도시되지 않음)의 측면에서, 코드(1104)의 실행 동안 변환된다.
도 11에는 도시되지 않았지만, 프로세싱 요소는 프로세서(1100)와 함께 칩 상에 다른 요소들을 포함할 수 있다. 예를 들어, 프로세싱 요소는 프로세서(1100)와 함께 메모리 제어 로직을 포함할 수 있다. 프로세싱 요소는 I/O 제어 로직을 포함할 수 있고/있거나 메모리 제어 로직과 통합된 I/O 제어 로직을 포함할 수 있다. 프로세싱 요소는 하나 이상의 캐시를 또한 포함할 수 있다. 일부 실시예들에서, 비휘발성 메모리(예컨대 플래시 메모리 또는 퓨즈들)가 또한 프로세서(1100)와 함께 칩 상에 포함될 수 있다.
도 12는 일부 예시적인 구현들에 따른, 예시적인 머신 러닝 프로세싱 디바이스(1202)의 단순화된 블록도(1200)이다. 그러한 머신 러닝 프로세싱 디바이스들(예를 들어, 1202) 및 머신 러닝 관련 동작들을 수행하도록 구성된 다른 하드웨어는, 여러 다른 예시적인 동작들(희소화-양자화를 사용하는 압축된 뉴럴 네트워크 모델들의 사용을 포함한) 중에서도 특히, 예시적인 희소화-양자화 트레이닝 반복들 및 위에서 논의된 다른 뉴럴 네트워크 압축 기법들에 포함된 동작들(예를 들어, 컨볼루션들, 가중치 업데이트들 등)의 전부 또는 일부를 수행하기 위해 이용될 수 있다. 이 특정 예에서, 머신 러닝 디바이스(1202)는 특수 목적 프로세서들(1205a-h)의 세트, 머신 러닝 가속기(1210), 및 비-표준 메모리 계층 구조(1215), 및 다수의 타입의 메모리(예를 들어, 1220, 1225)를 포함하는 VPU를 구현할 수 있다. 예를 들어, 다수의 프로세서들(1205a-h)(예를 들어, SHAVE(Streaming Hybrid Architecture Vector Engine) 프로세서들)은 일부 실시예들에 따른 멀티포트 메모리 서브시스템(1215)을 공유할 수 있다. 그러한 프로세서들(1205a-h)은, 여러 다른 예들 중에서도 특히, VLIW(very long instruction word) 명령어 세트들을 갖는 사유 또는 특수 목적 프로세서들로서 구현될 수 있다. 메모리 서브시스템(1215)은 본 명세서에서 "연결 행렬(connection matrix)"(CMX) 슬라이스들이라고 지칭되는 메모리 슬라이스들의 컬렉션으로서 구현될 수 있다. CMX 메모리(1215)는 고속 로컬 메모리(예를 들어, SDRAM)로서 구현될 수 있고 개별 프로세서들(예를 들어, 1205a-h)에 의해 사용가능한 스크래치패드 메모리를 구현할 수 있다. 계층 2(L2) 캐시(1220) 및 DDR 메모리(1225)는, 이 예에서, 보다 범용의, 또는 시스템, 메모리로서 추가로 제공될 수 있다. 또한 예시적인 머신 러닝 프로세싱 디바이스는 RISC(reduced instruction set computer) 요소(1230)뿐만 아니라 다른 프로세서 디바이스들(예를 들어, 1235)을 추가로 포함할 수 있다.
하나 이상의 하드웨어 가속기 디바이스(예를 들어, 1210)가 머신 러닝 프로세싱 디바이스에 포함되거나 결합될 수 있다. 그러한 가속기 디바이스들은 행렬 연산, 특정 머신 러닝 연산들, 또는 머신 러닝 프로세싱 디바이스(1202)의 전체 능력들을 향상시키기 위한 다른 특수 기능들을 지원하도록 특별히 구성된 고정 기능 하드웨어 가속기들일 수 있다. 일 예에서, 가속기 디바이스는 그 자체가 다수의 데이터 프로세싱 유닛(DPU)들을 포함할 수 있고, 이들은, 여러 다른 예시적인 특징들 및 컴포넌트들 중에서도 특히, 메모리 서브시스템(1215)에 연결되고 또한 이를 사용할 수 있다. 도 12의 예에서, 예시적인 메모리 서브시스템(1215)은 특정 텐서 타입들이 상주하도록 요구되는 특정 메모리 영역들을 포함하거나 정의할 수 있다(예를 들어, 채워진(populated), 채워지지 않은(unpopulated), 네트워크 입력 및 출력 텐서들).
일부 구현에서, 각각의 SHAVE 프로세서(예를 들어, 1205a-h)는 메모리 서브시스템 메모리(1215)의 CMX 슬라이스들로부터 데이터가 로딩되고 이들에 데이터가 저장될 수 있는 2개의 로드 저장 유닛을 포함할 수 있다. 각각의 메모리 슬라이스는 SHAVE 프로세서들(예를 들어, 1205a-h) 중 대응하는 것과 연관될 수 있다. 또한, 각각의 SHAVE 프로세서들(예를 들어, 1205a-h)은 명령어들이 로딩될 수 있는 명령어 유닛을 또한 포함할 수 있다. 프로세서가 SHAVE를 포함하는 특정 실시예에서, SHAVE는 RISC(reduced instruction set computer), DSP(digital signal processor), VLIW(very long instruction word), 및/또는 GPU(graphics processing unit) 중 하나 이상을 포함할 수 있다. 예시적인 머신 러닝 프로세싱 디바이스는 프로세서(1205a-h)와 메모리(1215)의 메모리 슬라이스들을 결합하는 상호연결 시스템을 추가적으로 포함할 수 있다. 상호연결 시스템은 ISI(inter-shave interconnect)라고 지칭될 수 있다. ISI는, 여러 다른 예시적인 통신들 및 트랜잭션들 중에서도 특히, 프로세서들(예를 들어, 1205a-h)이 메모리(1215)의 메모리 슬라이스들 중 어느 하나의 임의의 부분에 대해 데이터를 판독 또는 기입할 수 있는 버스를 포함할 수 있다.
도 13은 실시예에 따른 포인트-투-포인트(PtP) 구성으로 배열되는 컴퓨팅 시스템(1300)을 예시한다. 특히, 도 13은 프로세서들, 메모리, 및 입력/출력 디바이스들이 다수의 포인트-투-포인트 인터페이스들에 의해 상호연결되는 시스템을 도시한다. 일반적으로, 본 명세서에서 설명된 컴퓨팅 시스템들 중 하나 이상은 컴퓨팅 시스템(1300)과 동일하거나 유사한 방식으로 구성될 수 있다.
프로세서들(1370 및 1380)은 또한 각각이 메모리 요소들(1332 및 1334)과 통신하기 위해 통합된 메모리 컨트롤러 로직(MC)(1372 및 1382)을 포함할 수 있다. 대안적인 실시예들에서, 메모리 컨트롤러 로직(1372 및 1382)은 프로세서들(1370 및 1380)로부터 분리된 개별 로직일 수 있다. 메모리 요소들(1332 및/또는 1334)은 본 명세서에서 개략적으로 설명된 동작들 및 기능성을 달성함에 있어서 프로세서들(1370 및 1380)에 의해 사용될 다양한 데이터를 저장할 수 있다.
프로세서들(1370 및 1380)은 다른 도면들과 관련하여 논의된 것들과 같은 임의의 타입의 프로세서일 수 있다. 프로세서들(1370 및 1380)은 각각 포인트-투-포인트 인터페이스 회로들(1378 및 1388)을 사용하여 포인트-투-포인트(PtP) 인터페이스(1350)를 통해 데이터를 교환할 수 있다. 프로세서들(1370 및 1380)은 각각이 포인트-투-포인트 인터페이스 회로들(1376, 1386, 1394, 및 1398)을 사용하여 개별 포인트-투-포인트 인터페이스들(1352 및 1354)을 통해 칩셋(1390)과 데이터를 교환할 수 있다. 칩셋(1390)은 또한, PtP 인터페이스 회로일 수 있는, 인터페이스 회로(1392)를 사용하여, 고성능 그래픽 인터페이스(1339)를 통해 고성능 그래픽 회로(1338)와 데이터를 교환할 수 있다. 대안적인 실시예들에서, 도 13에 예시된 PtP 링크들 중 임의의 것 또는 전부는 PtP 링크보다는 멀티-드롭 버스로서 구현될 수 있다.
칩셋(1390)은 인터페이스 회로(1396)를 통해 버스(1320)와 통신할 수 있다. 버스(1320)는, 버스 브리지(1318) 및 I/O 디바이스들(1316)과 같이, 그것을 통해 통신하는 하나 이상의 디바이스를 가질 수 있다. 버스(1310)를 통해, 버스 브리지(1318)는 사용자 인터페이스(1312)(예컨대 키보드, 마우스, 터치스크린, 또는 다른 입력 디바이스들), 통신 디바이스들(1326)(예컨대 모뎀들, 네트워크 인터페이스 디바이스들, 또는 컴퓨터 네트워크(1360)를 통해 통신할 수 있는 다른 타입들의 통신 디바이스들), 오디오 I/O 디바이스들(1314), 및/또는 데이터 저장 디바이스(1328)와 같은 다른 디바이스들과 통신할 수 있다. 데이터 저장 디바이스(1328)는 프로세서들(1370 및/또는 1380)에 의해 실행될 수 있는 코드(1330)를 저장할 수 있다. 대안적인 실시예들에서, 버스 아키텍처들의 임의의 부분들은 하나 이상의 PtP 링크로 구현될 수 있다.
도 13에 묘사된 컴퓨터 시스템은 본 명세서에서 논의된 다양한 실시예들을 구현하기 위해 이용될 수 있는 컴퓨팅 시스템의 실시예의 개략 예시이다. 도 13에 묘사된 시스템의 다양한 컴포넌트들은 시스템 온 칩(SoC) 아키텍처에서 또는 본 명세서에서 제공되는 예들 및 구현들의 기능성 및 특징들을 달성할 수 있는 임의의 다른 적합한 구성에서 조합될 수 있다는 것이 인식될 것이다.
추가 예들에서, 머신 판독가능 매체는 머신에 의한 실행을 위한 명령어들을 저장, 인코딩 또는 반송할 수 있는 그리고 머신으로 하여금 본 개시내용의 방법론들 중 어느 하나 이상을 수행하게 하는, 또는 그러한 명령어들에 의해 이용되거나 그와 연관된 데이터 구조들을 저장, 인코딩 또는 반송할 수 있는 임의의 유형 매체를 또한 포함한다. 따라서, "머신 판독가능 매체"는 솔리드 스테이트 메모리들, 및 광학 및 자기 매체들을 포함할 수 있지만, 이들로 제한되지 않는다. 머신 판독가능 매체의 특정 예들은, 예로서, 반도체 메모리 디바이스들(예를 들어, 전기적으로 프로그램 가능한 판독 전용 메모리(EPROM), 전기적으로 소거 가능한 프로그램 가능한 판독 전용 메모리(EEPROM)) 및 플래시 메모리 디바이스들을 포함하지만 이들로 제한되지 않는 비휘발성 메모리; 내부 하드 디스크들 및 이동식 디스크들과 같은 자기 디스크들; 광자기 디스크들; 및 CD-ROM 및 DVD-ROM 디스크들을 포함한다. 머신 판독가능 매체에 의해 구현되는 명령어들은 또한 다수의 전송 프로토콜(예를 들어, HTTP) 중 어느 하나를 이용하는 네트워크 인터페이스 디바이스를 통해 송신 매체를 이용하여 통신 네트워크를 통해 송신 또는 수신될 수 있다.
본 명세서에서 설명된 기능 유닛들 또는 능력들은, 그들의 구현 독립성을 더욱 특히 강조하기 위해, 컴포넌트들 또는 모듈들로서 라벨링되거나 지칭되었을 수 있다는 점을 이해해야 한다. 그러한 컴포넌트들은 임의의 수의 소프트웨어 또는 하드웨어 형식들에 의해 구현될 수 있다. 예를 들어, 컴포넌트 또는 모듈은 커스텀 VLSI(very-large-scale integration) 회로들 또는 게이트 어레이들, 로직 칩들, 트랜지스터들, 또는 다른 개별 컴포넌트들과 같은 기성품(off-the-shelf) 반도체들을 포함하는 하드웨어 회로로서 구현될 수 있다. 컴포넌트 또는 모듈은 필드 프로그래머블 게이트 어레이들, 프로그래머블 어레이 로직, 프로그래머블 로직 디바이스들 등과 같은 프로그래머블 하드웨어 디바이스들로 또한 구현될 수 있다. 컴포넌트들 또는 모듈들은 다양한 타입의 프로세서들에 의한 실행을 위해 소프트웨어로 또한 구현될 수 있다. 예를 들어, 실행가능 코드의 식별된 컴포넌트 또는 모듈은, 예를 들어, 객체, 프로시저, 또는 함수로서 조직될 수 있는, 컴퓨터 명령어들의 하나 이상의 물리 또는 논리 블록을 포함할 수 있다. 그럼에도 불구하고, 식별된 컴포넌트 또는 모듈의 실행파일들은 물리적으로 함께 위치할 필요가 없고, 논리적으로 함께 결합될 때, 컴포넌트 또는 모듈을 포함하고 그 컴포넌트 또는 모듈에 대한 언급된 목적을 달성하는, 상이한 위치들에 저장된 이질적인 명령어들을 포함할 수 있다.
사실, 실행가능 코드의 컴포넌트 또는 모듈은 단일 명령어, 또는 다수의 명령어일 수 있고, 심지어, 수 개의 상이한 코드 세그먼트들에 걸쳐, 상이한 프로그램들 사이에, 및 수 개의 메모리 디바이스들 또는 프로세싱 시스템들에 걸쳐 분산될 수도 있다. 특히, 설명된 프로세스의 일부 양태들(예컨대 코드 재기입 및 코드 분석)은 코드가 배치되어 있는 것(예를 들어, 센서 또는 로봇에 임베드된 컴퓨터에서)과는 상이한 프로세싱 시스템 상에서(예를 들어, 데이터 센터 내의 컴퓨터에서) 발생할 수 있다. 유사하게, 운영 데이터가 본 명세서에서 컴포넌트들 또는 모듈들 내에서 식별되고 예시될 수 있고, 임의의 적합한 형식으로 구현되고 임의의 적합한 타입의 데이터 구조 내에서 조직될 수 있다. 운영 데이터는 단일 데이터 세트로 수집될 수 있거나, 상이한 저장 디바이스들을 포함하는 상이한 위치들에 걸쳐 분산될 수 있고, 시스템 또는 네트워크 상에서 단지 전자 신호들로서 적어도 부분적으로 존재할 수 있다. 컴포넌트들 또는 모듈들은, 원하는 기능들을 수행하도록 동작가능한 에이전트들을 포함하여, 수동형 또는 능동형일 수 있다.
현재 설명되는 방법, 시스템, 및 디바이스 실시예들의 추가적인 예들은 다음의 비제한적인 구성들을 포함한다. 다음의 비제한적인 예들 각각은 그 자체로서 독립할 수 있거나, 본 개시내용 전체에 걸쳐 또는 아래에 제공되는 다른 예들 중 어느 하나 이상과의 임의의 치환 또는 조합으로 조합될 수 있다.
본 개시내용이 특정 구현들 및 일반적으로 연관된 방법들의 측면에서 기술되었지만, 이들 구현들 및 방법들의 변경들 및 치환들은 본 기술분야의 통상의 기술자들에게 명백할 것이다. 예를 들어, 본 명세서에서 설명된 액션들은 설명된 것과는 상이한 순서로 수행될 수 있고 여전히 바람직한 결과들을 달성할 수 있다. 일 예로서, 첨부 도면들에 묘사된 프로세스들은 원하는 결과들을 달성하기 위해 반드시 도시된 특정 순서, 또는 순차적 순서를 요구하는 것은 아니다. 특정 구현들에서는, 멀티태스킹 및 병렬 프로세싱이 유리할 수 있다. 추가적으로, 다른 사용자 인터페이스 레이아웃들 및 기능성이 지원될 수 있다. 다른 변형들은 다음의 청구항들의 범위 내에 있다.
본 명세서는 많은 특정 구현 세부 사항들을 포함하지만, 이들은 임의의 발명들 또는 청구될 수 있는 것의 범위에 대한 제한들로서 해석되어서는 안 되고, 오히려 특정 발명들의 특정 실시예들에 특정한 특징들의 설명들로서 해석되어야 한다. 별개의 실시예들의 컨텍스트에서 본 명세서에서 설명되는 특정 특징들이 단일 실시예에서 조합하여 구현될 수도 있다. 반대로, 단일 실시예의 컨텍스트에서 설명되는 다양한 특징들이 다수의 실시예들에서 개별적으로 또는 임의의 적합한 부분 조합으로 구현될 수도 있다. 게다가, 특징들이 특정 조합들로 기능하는 것으로 위에 설명되고 심지어 그와 같이 초기에 청구될 수 있지만, 청구된 조합으로부터의 하나 이상의 특징이 일부 경우들에서 조합으로부터 삭제될 수 있고, 청구된 조합은 부분 조합 또는 부분 조합의 변형에 관한 것일 수 있다.
유사하게, 동작들이 도면들에서 특정 순서로 묘사되어 있지만, 이것은 바람직한 결과들을 달성하기 위해, 그러한 동작들이 도시된 특정 순서로 또는 순차적인 순서로 수행되거나, 모든 예시된 동작들이 수행될 것을 요구하는 것으로서 이해되어서는 안 된다. 특정 상황들에서는, 멀티태스킹 및 병렬 프로세싱이 유리할 수 있다. 게다가, 위에 설명된 실시예들에서의 다양한 시스템 컴포넌트들의 분리는 모든 실시예들에서 그러한 분리를 요구하는 것으로 이해되어서는 안 되고, 설명된 프로그램 컴포넌트들 및 시스템들은 일반적으로 단일 소프트웨어 제품으로 함께 통합되거나 다수의 소프트웨어 제품으로 패키징될 수 있다는 것을 이해해야 한다.
다음의 예들은 본 명세서에 따른 실시예들에 관한 것이다. 예 1은 그 위에 명령어들이 저장되어 있는 비-일시적 머신 판독가능 저장 매체로서, 상기 명령어들은 머신에 의해 실행가능하고 상기 머신으로 하여금: 뉴럴 네트워크 모델의 정의를 포함하는 데이터에 액세스하고 - 상기 뉴럴 네트워크 모델은 복수의 계층을 포함하고, 상기 복수의 계층 각각은 각각의 가중치들의 세트를 포함함 -; 상기 뉴럴 네트워크 모델의 트레이닝에 사용하기 위한 트레이닝 데이터에 액세스하고 - 상기 트레이닝은 복수의 트레이닝 반복을 포함함 -; 상기 복수의 계층 중 특정 계층으로부터 제거할 상기 가중치들의 서브세트를 결정하고; 상기 트레이닝 반복들 중 특정 트레이닝 반복의 순방향 패스 동안 상기 특정 계층으로부터 상기 가중치들의 서브세트를 제거하기 위해 상기 특정 계층의 상기 가중치들을 프루닝하고 - 상기 가중치들의 서브세트를 제거하는 것은 희소화된 가중치들의 서브세트가 상기 특정 계층에 남는 결과를 야기함 -; 상기 특정 트레이닝 반복의 순방향 패스 동안 상기 특정 계층의 상기 가중치들 중 적어도 일부의 값들을 양자화하고 - 상기 순방향 패스 후에 상기 특정 계층은 양자화된-희소화된 가중치들의 서브세트를 포함함 -; 상기 트레이닝으로부터, 상기 양자화된-희소화된 가중치들의 서브세트에 기초하여 상기 뉴럴 네트워크 모델의 압축된 버전을 생성하게 한다.
예 2는 예 1의 주제를 포함하고, 상기 가중치들의 서브세트의 제거는 상기 특정 트레이닝 반복의 순방향 패스에서의 상기 값들의 양자화에 선행한다.
예 3은 예 1-2 중 어느 한 예의 주제를 포함하고, 상기 명령어들은, 실행될 때, 추가로 상기 머신으로 하여금: 상기 특정 트레이닝 반복의 순방향 패스 동안, 상기 양자화된-희소화된 가중치들의 서브세트를 상기 복수의 계층 중 다른 계층에 의해 생성된 활성화들과 컨볼루션하여 상기 특정 계층의 활성화들을 생성하고; 상기 특정 트레이닝 반복의 순방향 패스 동안 상기 특정 계층의 활성화들의 값들을 양자화하게 한다.
예 4는 예 1-3 중 어느 한 예의 주제를 포함하고, 상기 가중치들의 서브세트는 임계치 밖에 있는 상기 가중치들의 서브세트의 값들에 기초하여 결정된다.
예 5는 예 4의 주제를 포함하고, 상기 명령어들은, 실행될 때, 추가로 상기 머신으로 하여금, 상기 특정 계층에 대해, 상기 임계치를 결정하게 하고, 상기 특정 계층에 대한 상기 임계치는 상기 복수의 계층 중 하나 이상의 다른 계층에 대해 결정된 임계치들과 상이하다.
예 6은 예 5의 주제를 포함하고, 상기 임계치는 상기 특정 트레이닝 반복에서 상기 특정 계층의 완전-정밀도 가중치들에 기초하는 통계적 메트릭들에 기초하여 상기 특정 계층에 대해 결정된다.
예 7은 예 4-6 중 어느 한 예의 주제를 포함하고, 상기 명령어들은, 실행될 때, 추가로 상기 머신으로 하여금, 상기 임계치를 결정하게 하고, 상기 임계치는 상기 특정 트레이닝 반복에 대해 결정되고, 상기 임계치는 상기 복수의 트레이닝 반복 중 다른 트레이닝 반복에 대해 상이한 것으로 결정된다.
예 8은 예 7의 주제를 포함하고, 상기 임계치는 상기 특정 계층에 대해 결정되고, 상기 특정 계층에 대해 결정된 임계치들은 상기 복수의 계층 중 하나 이상의 다른 계층에 대해 결정된 임계치들과 상이하다.
예 9는 예 1-8 중 어느 한 예의 주제를 포함하고, 상기 명령어들은, 실행될 때, 추가로 상기 머신으로 하여금: 지연 파라미터를 식별하고; 상기 뉴럴 네트워크 모델의 트레이닝을 수행하게 하고, 상기 복수의 트레이닝 반복 중 제1 부분은 상기 지연 파라미터에 기초하여 상기 뉴럴 네트워크 모델의 계층들의 압축 없이 수행되고, 상기 뉴럴 네트워크 모델의 계층들의 압축은 상기 복수의 트레이닝 반복 중 상기 제1 부분의 완료에 이어서 시작되고, 상기 뉴럴 네트워크 모델의 계층들의 압축은 상기 특정 계층으로부터 상기 가중치들의 서브세트를 제거하고 상기 특정 계층의 가중치들 중 적어도 일부의 값들을 양자화하는 것을 포함한다.
예 10은 예 9의 주제를 포함하고, 상기 지연 파라미터는 상기 복수의 트레이닝 반복 중 상기 제1 부분에 대응하는 트레이닝 반복들의 수를 포함한다.
예 11은 예 1-10 중 어느 한 예의 주제를 포함하고, 상기 가중치들의 값들은 min-max 양자화를 이용하여 양자화된다.
예 12는 예 1-11 중 어느 한 예의 주제를 포함하고, 상기 뉴럴 네트워크 모델의 압축된 버전은 희소화된-양자화된 가중치들을 갖는 계층들을 포함하고, 상기 희소화된-양자화된 가중치들은 상기 뉴럴 네트워크 모델의 완전-정밀도 버전에서의 특정 가중치들의 서브세트를 포함하고, 상기 특정 가중치들의 서브세트의 값들은 상기 완전-정밀도 버전에서의 가중치들의 값들에 관하여 양자화된다.
예 13은 예 12의 주제를 포함하고, 상기 특정 트레이닝 반복은 손실 함수에 기초한 역방향 전파를 추가로 포함하고, 상기 손실 함수의 결과들에 기초하여 상기 뉴럴 네트워크 모델의 완전-정밀도 버전의 완전-정밀도 가중치들이 업데이트되어야 한다.
예 14는 예 1-13 중 어느 한 예의 주제를 포함하고, 상기 복수의 계층 중 각각의 계층의 가중치들을 프루닝함으로써 각각의 희소화된 가중치들의 서브세트가 생성되어야 하고, 상기 복수의 계층에 대한 각각의 희소화된 가중치들의 서브세트는 상기 복수의 계층 중 각각의 계층에 대한 각각의 양자화된-희소화된 가중치들의 서브세트를 생성하기 위해 양자화되어야 한다.
예 15는 예 1-14 중 어느 한 예의 주제를 포함하고, 상기 뉴럴 네트워크 모델은 컨볼루션 뉴럴 네트워크를 포함한다.
예 16은 방법으로서, 이는: 뉴럴 네트워크 모델을 트레이닝하기 위해 트레이닝 데이터의 세트를 이용하여 복수의 트레이닝 반복을 수행하는 단계 - 상기 복수의 트레이닝 반복 각각은 각각의 순방향 패스 및 각각의 역방향 패스를 포함하고, 상기 뉴럴 네트워크 모델은 복수의 계층을 포함함 -; 상기 복수의 트레이닝 반복 중 각각의 트레이닝 반복에서: 제거할 상기 복수의 계층 중 특정 계층의 각각의 가중치들의 서브세트를 결정하는 단계; 대응하는 트레이닝 반복의 순방향 패스에서 상기 가중치들의 서브세트를 제거하기 위해 상기 특정 계층을 프루닝하는 단계 - 상기 가중치들의 서브세트의 제거 후에 남아 있는 상기 특정 계층의 가중치들은 상기 특정 계층의 희소화된 가중치들을 포함함 -; 상기 특정 계층의 희소화된 가중치들의 값들을 더 높은 정밀도로부터 더 낮은 정밀도로 양자화하여 상기 특정 계층에 대한 각각의 희소화된-양자화된 가중치들의 세트를 형성하는 단계; 상기 희소화된-양자화된 가중치들의 세트에 기초하여 상기 특정 계층에 대한 활성화 값들을 결정하는 단계; 및 대응하는 역방향 패스 동안 상기 활성화 값들을 사용하여 역전파를 수행하는 단계; 및 상기 트레이닝에 기초하여 상기 뉴럴 네트워크 모델의 압축된 버전을 생성하는 단계를 포함한다.
예 17은 예 16의 주제를 포함하고, 상기 뉴럴 네트워크 모델의 압축된 버전에서의 상기 특정 계층은 상기 뉴럴 네트워크 모델에서의 상기 특정 계층의 원래 버전보다 더 적은 수의 가중치를 포함하고, 상기 더 적은 수의 가중치는 상기 뉴럴 네트워크 모델의 압축된 버전에서 상기 더 낮은 정밀도로 양자화된다.
예 18은 예 16-17 중 어느 한 예의 주제를 포함하고, 상기 트레이닝 반복들 각각에서: 상기 특정 계층에 대해 결정된 대응하는 활성화 값들에 기초하여 손실 함수를 수행하는 단계; 상기 손실 함수에 기초하여 상기 특정 계층과 연관된 하나 이상의 그래디언트를 결정하는 단계; 및 상기 그래디언트들에 기초하여 상기 특정 계층의 완전-정밀도 버전을 업데이트하는 단계를 추가로 포함하고, 상기 업데이트된 상기 특정 계층의 완전-정밀도 버전은 상기 복수의 트레이닝 반복 중 후속 트레이닝 반복에서 사용되어야 한다.
예 19는 예 16-18 중 어느 한 예의 주제를 포함하고, 상기 특정 트레이닝 반복의 순방향 패스 동안, 상기 양자화된-희소화된 가중치들의 서브세트를 상기 복수의 계층 중 다른 계층에 의해 생성된 활성화들과 컨볼루션하여 상기 특정 계층의 활성화들을 생성하는 단계; 및 상기 특정 트레이닝 반복의 순방향 패스 동안 상기 특정 계층의 활성화들의 값들을 양자화하는 단계를 추가로 포함한다.
예 20은 예 16-19 중 어느 한 예의 주제를 포함하고, 상기 가중치들의 서브세트는 임계치 밖에 있는 상기 가중치들의 서브세트의 값들에 기초하여 결정된다.
예 21은 예 20의 주제를 포함하고, 상기 특정 계층에 대해, 상기 임계치를 결정하는 단계를 추가로 포함하고, 상기 특정 계층에 대한 상기 임계치는 상기 복수의 계층 중 하나 이상의 다른 계층에 대해 결정된 임계치들과 상이하다.
예 22는 예 21의 주제를 포함하고, 상기 임계치는 상기 특정 트레이닝 반복에서 상기 특정 계층의 완전-정밀도 가중치들에 기초하는 통계적 메트릭들에 기초하여 상기 특정 계층에 대해 결정된다.
예 23은 예 20의 주제를 포함하고, 상기 명령어들은, 실행될 때, 추가로 상기 머신으로 하여금, 상기 임계치를 결정하게 하고, 상기 임계치는 상기 특정 트레이닝 반복에 대해 결정되고, 상기 임계치는 상기 복수의 트레이닝 반복 중 다른 트레이닝 반복에 대해 상이한 것으로 결정된다.
예 24는 예 23의 주제를 포함하고, 상기 임계치는 상기 특정 계층에 대해 결정되고, 상기 특정 계층에 대해 결정된 임계치들은 상기 복수의 계층 중 하나 이상의 다른 계층에 대해 결정된 임계치들과 상이하다.
예 25는 예 16-24 중 어느 한 예의 주제를 포함하고, 지연 파라미터를 식별하는 단계; 및 상기 뉴럴 네트워크 모델의 트레이닝을 수행하는 단계를 추가로 포함하고, 상기 복수의 트레이닝 반복 중 제1 부분은 상기 지연 파라미터에 기초하여 상기 뉴럴 네트워크 모델의 계층들의 압축 없이 수행되고, 상기 뉴럴 네트워크 모델의 계층들의 압축은 상기 복수의 트레이닝 반복 중 상기 제1 부분의 완료에 이어서 시작되고, 상기 뉴럴 네트워크 모델의 계층들의 압축은 상기 특정 계층으로부터 상기 가중치들의 서브세트를 제거하고 상기 특정 계층의 가중치들 중 적어도 일부의 값들을 양자화하는 것을 포함한다.
예 26은 예 25의 주제를 포함하고, 상기 지연 파라미터는 상기 복수의 트레이닝 반복 중 상기 제1 부분에 대응하는 트레이닝 반복들의 수를 포함한다.
예 27은 예 16-26 중 어느 한 예의 주제를 포함하고, 상기 가중치들의 값들은 min-max 양자화를 이용하여 양자화된다.
예 28은 예 16-27 중 어느 한 예의 주제를 포함하고, 상기 복수의 계층 중 각각의 계층의 가중치들을 프루닝함으로써 각각의 희소화된 가중치들의 서브세트가 생성되어야 하고, 상기 복수의 계층에 대한 각각의 희소화된 가중치들의 서브세트의 값들은 상기 복수의 계층 중 각각의 계층에 대한 각각의 양자화된-희소화된 가중치들의 서브세트를 생성하기 위해 양자화되어야 한다.
예 29는 예 16-28 중 어느 한 예의 주제를 포함하고, 상기 뉴럴 네트워크 모델은 컨볼루션 뉴럴 네트워크를 포함한다.
예 30은 예 16-29 중 어느 한 예의 방법을 수행하는 수단을 포함하는 시스템이다.
예 31은 예 30의 주제를 포함하고, 상기 수단은 도 10 내지 도 13에 예시된 시스템들 중 하나 이상의 시스템의 컴포넌트들을 포함한다.
예 32는 시스템으로서, 이는: 데이터 프로세서; 메모리; 및 뉴럴 네트워크 모델의 트레이닝을 수행하기 위해 상기 데이터 프로세서에 의해 실행가능한 뉴럴 네트워크 압축 엔진을 포함하고, 상기 뉴럴 네트워크 모델의 트레이닝은 상기 뉴럴 네트워크 모델의 압축된 버전을 생성하고 이는: 복수의 트레이닝 반복 - 상기 복수의 트레이닝 반복 각각은 순방향 패스 및 역방향 패스를 포함함 -; 상기 뉴럴 네트워크 모델의 적어도 하나의 특정 계층의 가중치들을 프루닝하기 위한 가중치 희소화 - 상기 가중치 희소화는 상기 특정 계층에서의 가중치들에 대한 임계치 값에 기초하여 상기 가중치들의 서브세트를 제거하고, 상기 가중치 희소화는 상기 복수의 트레이닝 반복 중 특정 트레이닝 반복의 순방향 패스에서 수행됨 -; 및 상기 특정 계층의 가중치들의 양자화 - 상기 가중치 희소화 및 가중치들의 양자화는 상기 특정 계층에 대한 양자화된-희소화된 가중치들의 세트를 생성하고, 상기 가중치들의 양자화는 또한 상기 특정 트레이닝 반복의 순방향 패스에서 수행됨 - 를 포함한다.
예 33은 예 32의 주제를 포함하고, 상기 트레이닝은: 상기 특정 트레이닝 반복의 순방향 패스에서의 상기 특정 계층에 대한 활성화들의 결정; 및 상기 활성화들의 양자화를 추가로 포함한다.
예 34는 예 32-33 중 어느 한 예의 주제를 포함하고, 상기 뉴럴 네트워크 모델은 컨볼루션 뉴럴 네트워크를 포함한다.
예 35는 예 33-34 중 어느 한 예의 주제를 포함하고, 상기 가중치들의 서브세트는 임계치 밖에 있는 값들을 갖는 상기 가중치들의 서브세트에 기초하여 결정된다.
예 36은 예 35의 주제를 포함하고, 상기 특정 계층에 대한 상기 임계치는 상기 복수의 계층 중 하나 이상의 다른 계층에 대해 결정된 임계치들과 상이하다.
예 37은 예 36의 주제를 포함하고, 상기 임계치는 상기 특정 트레이닝 반복에서 상기 특정 계층의 완전-정밀도 가중치들에 기초하는 통계적 메트릭들에 기초하여 상기 특정 계층에 대해 결정된다.
예 38은 예 35의 주제를 포함하고, 상기 임계치는 상기 복수의 트레이닝 반복 중 다른 트레이닝 반복에 대해 상이한 것으로 결정된다.
예 39는 예 38의 주제를 포함하고, 상기 임계치는 상기 특정 계층에 대해 결정되고, 상기 특정 계층에 대해 결정된 임계치들은 상기 복수의 계층 중 하나 이상의 다른 계층에 대해 결정된 임계치들과 상이하다.
예 40은 예 32-39 중 어느 한 예의 주제를 포함하고, 상기 뉴럴 네트워크 압축 엔진은: 지연 파라미터를 식별하고; 상기 지연 파라미터에 기초하여 상기 뉴럴 네트워크 모델의 트레이닝을 수행하도록 추가로 실행가능하고, 상기 복수의 트레이닝 반복 중 제1 부분은 상기 지연 파라미터에 기초하여 상기 뉴럴 네트워크 모델의 계층들의 압축 없이 수행되고, 상기 뉴럴 네트워크 모델의 계층들의 압축은 상기 복수의 트레이닝 반복 중 상기 제1 부분의 완료에 이어서 시작되어야 하고, 상기 뉴럴 네트워크 모델의 계층들의 압축은 가중치 희소화 및 가중치들의 양자화를 포함한다.
예 41은 예 40의 주제를 포함하고, 상기 지연 파라미터는 상기 복수의 트레이닝 반복 중 상기 제1 부분에 대응하는 트레이닝 반복들의 수를 포함한다.
예 42는 예 32-41 중 어느 한 예의 주제를 포함하고, 리소스 제약된 시스템을 추가로 포함하고, 상기 뉴럴 네트워크 모델의 압축된 버전을 이용하여 추론들을 수행하기 위해 상기 뉴럴 네트워크 모델의 압축된 버전이 상기 리소스 제약된 시스템에 제공된다.
예 43은 예 42의 주제를 포함하고, 상기 추론들을 수행하는 것은 상기 뉴럴 네트워크 모델의 압축된 버전에 제공된 입력에 기초하여 결정된 활성화들의 양자화를 포함한다.
예 44는 예 42-43 중 어느 한 예의 주제를 포함하고, 상기 리소스 제약된 시스템은 로봇, 차량, 또는 드론 중 하나를 포함한다.
예 45는 예 32-44 중 어느 한 예의 주제를 포함하고, 상기 메모리는 상기 뉴럴 네트워크 모델의 완전-정밀도 버전의 사본을 저장하고, 상기 뉴럴 네트워크 압축 엔진은: 손실 함수에 기초하여 상기 특정 계층과 연관된 하나 이상의 그래디언트를 결정하고; 상기 그래디언트들에 기초하여 상기 뉴럴 네트워크 모델의 완전-정밀도 버전의 사본에서 상기 특정 계층의 완전-정밀도 버전을 업데이트하도록 추가로 실행가능하고, 상기 업데이트된 상기 특정 계층의 완전-정밀도 버전은 상기 복수의 트레이닝 반복 중 후속 트레이닝 반복에서 사용되어야 한다.
이와 같이, 본 주제의 특정 실시예들이 기술되었다. 다른 실시예들은 다음의 청구항들의 범위 내에 있다. 일부 경우들에서, 청구항들에 기재된 액션들은 상이한 순서로 수행될 수 있고 여전히 바람직한 결과들을 달성할 수 있다. 또한, 첨부 도면들에 묘사된 프로세스들은 바람직한 결과들을 달성하기 위해 반드시 도시된 특정 순서, 또는 순차적 순서를 요구하는 것은 아니다.

Claims (35)

  1. 그 위에 명령어들이 저장되어 있는 비-일시적 머신 판독가능 저장 매체로서, 상기 명령어들은 머신에 의해 실행가능하고 상기 머신으로 하여금:
    뉴럴 네트워크 모델의 정의를 포함하는 데이터에 액세스하고 - 상기 뉴럴 네트워크 모델은 복수의 계층을 포함하고, 상기 복수의 계층 각각은 각각의 가중치들의 세트를 포함함 -;
    상기 뉴럴 네트워크 모델의 트레이닝에 사용하기 위한 트레이닝 데이터에 액세스하고 - 상기 트레이닝은 복수의 트레이닝 반복을 포함함 -;
    상기 복수의 계층 중 특정 계층으로부터 제거할 상기 가중치들의 서브세트를 결정하고;
    상기 트레이닝 반복들 중 특정 트레이닝 반복의 순방향 패스 동안 상기 특정 계층으로부터 상기 가중치들의 서브세트를 제거하기 위해 상기 특정 계층의 상기 가중치들을 프루닝하고 - 상기 가중치들의 서브세트를 제거하는 것은 희소화된 가중치들의 서브세트가 상기 특정 계층에 남는 결과를 야기함 -;
    상기 특정 트레이닝 반복의 순방향 패스 동안 상기 특정 계층의 상기 가중치들 중 적어도 일부의 값들을 양자화하고 - 상기 순방향 패스 후에 상기 특정 계층은 양자화된-희소화된 가중치들의 서브세트를 포함함 -;
    상기 트레이닝으로부터, 상기 양자화된-희소화된 가중치들의 서브세트에 기초하여 상기 뉴럴 네트워크 모델의 압축된 버전을 생성하게 하는, 저장 매체.
  2. 제1항에 있어서,
    상기 가중치들의 서브세트의 제거는 상기 특정 트레이닝 반복의 순방향 패스에서의 상기 값들의 양자화에 선행하는, 저장 매체.
  3. 제1항 또는 제2항에 있어서,
    상기 명령어들은, 실행될 때, 추가로 상기 머신으로 하여금:
    상기 특정 트레이닝 반복의 순방향 패스 동안, 상기 양자화된-희소화된 가중치들의 서브세트를 상기 복수의 계층 중 다른 계층에 의해 생성된 활성화들과 컨볼루션하여 상기 특정 계층의 활성화들을 생성하고;
    상기 특정 트레이닝 반복의 순방향 패스 동안 상기 특정 계층의 활성화들의 값들을 양자화하게 하는, 저장 매체.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 가중치들의 서브세트는 임계치 밖에 있는 상기 가중치들의 서브세트의 값들에 기초하여 결정되는, 저장 매체.
  5. 제4항에 있어서,
    상기 명령어들은, 실행될 때, 추가로 상기 머신으로 하여금, 상기 특정 계층에 대해, 상기 임계치를 결정하게 하고, 상기 특정 계층에 대한 상기 임계치는 상기 복수의 계층 중 하나 이상의 다른 계층에 대해 결정된 임계치들과 상이한, 저장 매체.
  6. 제5항에 있어서,
    상기 임계치는 상기 특정 트레이닝 반복에서 상기 특정 계층의 완전-정밀도 가중치들에 기초하는 통계적 메트릭들에 기초하여 상기 특정 계층에 대해 결정되는, 저장 매체.
  7. 제4항 내지 제6항 중 어느 한 항에 있어서,
    상기 명령어들은, 실행될 때, 추가로 상기 머신으로 하여금, 상기 임계치를 결정하게 하고, 상기 임계치는 상기 특정 트레이닝 반복에 대해 결정되고, 상기 임계치는 상기 복수의 트레이닝 반복 중 다른 트레이닝 반복에 대해 상이한 것으로 결정되는, 저장 매체.
  8. 제7항에 있어서,
    상기 임계치는 상기 특정 계층에 대해 결정되고, 상기 특정 계층에 대해 결정된 임계치들은 상기 복수의 계층 중 하나 이상의 다른 계층에 대해 결정된 임계치들과 상이한, 저장 매체.
  9. 제1항 내지 제8항 중 어느 한 항에 있어서,
    상기 명령어들은, 실행될 때, 추가로 상기 머신으로 하여금:
    지연 파라미터를 식별하고;
    상기 뉴럴 네트워크 모델의 트레이닝을 수행하게 하고, 상기 복수의 트레이닝 반복 중 제1 부분은 상기 지연 파라미터에 기초하여 상기 뉴럴 네트워크 모델의 계층들의 압축 없이 수행되고, 상기 뉴럴 네트워크 모델의 계층들의 압축은 상기 복수의 트레이닝 반복 중 상기 제1 부분의 완료에 이어서 시작되고, 상기 뉴럴 네트워크 모델의 계층들의 압축은 상기 특정 계층으로부터 상기 가중치들의 서브세트를 제거하고 상기 특정 계층의 가중치들 중 적어도 일부의 값들을 양자화하는 것을 포함하는, 저장 매체.
  10. 제9항에 있어서,
    상기 지연 파라미터는 상기 복수의 트레이닝 반복 중 상기 제1 부분에 대응하는 트레이닝 반복들의 수를 포함하는, 저장 매체.
  11. 제1항 내지 제10항 중 어느 한 항에 있어서,
    상기 가중치들의 값들은 min-max 양자화를 이용하여 양자화되는, 저장 매체.
  12. 제1항 내지 제11항 중 어느 한 항에 있어서,
    상기 뉴럴 네트워크 모델의 압축된 버전은 희소화된-양자화된 가중치들을 갖는 계층들을 포함하고, 상기 희소화된-양자화된 가중치들은 상기 뉴럴 네트워크 모델의 완전-정밀도 버전에서의 특정 가중치들의 서브세트를 포함하고, 상기 특정 가중치들의 서브세트의 값들은 상기 완전-정밀도 버전에서의 가중치들의 값들에 관하여 양자화되는, 저장 매체.
  13. 제12항에 있어서,
    상기 특정 트레이닝 반복은 손실 함수에 기초한 역방향 전파를 추가로 포함하고, 상기 손실 함수의 결과들에 기초하여 상기 뉴럴 네트워크 모델의 완전-정밀도 버전의 완전-정밀도 가중치들이 업데이트되어야 하는, 저장 매체.
  14. 제1항 내지 제13항 중 어느 한 항에 있어서,
    상기 복수의 계층 중 각각의 계층의 가중치들을 프루닝함으로써 각각의 희소화된 가중치들의 서브세트가 생성되어야 하고, 상기 복수의 계층에 대한 각각의 희소화된 가중치들의 서브세트는 상기 복수의 계층 중 각각의 계층에 대한 각각의 양자화된-희소화된 가중치들의 서브세트를 생성하기 위해 양자화되어야 하는, 저장 매체.
  15. 제1항 내지 제14항 중 어느 한 항에 있어서,
    상기 뉴럴 네트워크 모델은 컨볼루션 뉴럴 네트워크를 포함하는, 저장 매체.
  16. 방법으로서,
    뉴럴 네트워크 모델을 트레이닝하기 위해 트레이닝 데이터의 세트를 이용하여 복수의 트레이닝 반복을 수행하는 단계 - 상기 복수의 트레이닝 반복 각각은 각각의 순방향 패스 및 각각의 역방향 패스를 포함하고, 상기 뉴럴 네트워크 모델은 복수의 계층을 포함함 -;
    상기 복수의 트레이닝 반복 중 각각의 트레이닝 반복에서:
    제거할 상기 복수의 계층 중 특정 계층의 각각의 가중치들의 서브세트를 결정하는 단계;
    대응하는 트레이닝 반복의 순방향 패스에서 상기 가중치들의 서브세트를 제거하기 위해 상기 특정 계층을 프루닝하는 단계 - 상기 가중치들의 서브세트의 제거 후에 남아 있는 상기 특정 계층의 가중치들은 상기 특정 계층의 희소화된 가중치들을 포함함 -;
    상기 특정 계층의 희소화된 가중치들의 값들을 더 높은 정밀도로부터 더 낮은 정밀도로 양자화하여 상기 특정 계층에 대한 각각의 희소화된-양자화된 가중치들의 세트를 형성하는 단계;
    상기 희소화된-양자화된 가중치들의 세트에 기초하여 상기 특정 계층에 대한 활성화 값들을 결정하는 단계; 및
    대응하는 역방향 패스 동안 상기 활성화 값들을 사용하여 역전파를 수행하는 단계; 및
    상기 트레이닝에 기초하여 상기 뉴럴 네트워크 모델의 압축된 버전을 생성하는 단계를 포함하는, 방법.
  17. 제16항에 있어서,
    상기 뉴럴 네트워크 모델의 압축된 버전에서의 상기 특정 계층은 상기 뉴럴 네트워크 모델에서의 상기 특정 계층의 원래 버전보다 더 적은 수의 가중치를 포함하고, 상기 더 적은 수의 가중치는 상기 뉴럴 네트워크 모델의 압축된 버전에서 상기 더 낮은 정밀도로 양자화되는, 방법.
  18. 제16항 또는 제17항에 있어서,
    상기 트레이닝 반복들 각각에서:
    상기 특정 계층에 대해 결정된 대응하는 활성화 값들에 기초하여 손실 함수를 수행하는 단계;
    상기 손실 함수에 기초하여 상기 특정 계층과 연관된 하나 이상의 그래디언트를 결정하는 단계; 및
    상기 그래디언트들에 기초하여 상기 특정 계층의 완전-정밀도 버전을 업데이트하는 단계를 추가로 포함하고, 상기 업데이트된 상기 특정 계층의 완전-정밀도 버전은 상기 복수의 트레이닝 반복 중 후속 트레이닝 반복에서 사용되어야 하는, 방법.
  19. 제16항 내지 제18항 중 어느 한 항에 있어서,
    상기 특정 트레이닝 반복의 순방향 패스 동안, 상기 양자화된-희소화된 가중치들의 서브세트를 상기 복수의 계층 중 다른 계층에 의해 생성된 활성화들과 컨볼루션하여 상기 특정 계층의 활성화들을 생성하는 단계; 및
    상기 특정 트레이닝 반복의 순방향 패스 동안 상기 특정 계층의 활성화들의 값들을 양자화하는 단계를 추가로 포함하는, 방법.
  20. 제16항 내지 제19항 중 어느 한 항에 있어서,
    상기 가중치들의 서브세트는 임계치 밖에 있는 상기 가중치들의 서브세트의 값들에 기초하여 결정되는, 방법.
  21. 제20항에 있어서,
    상기 특정 계층에 대해, 상기 임계치를 결정하는 단계를 추가로 포함하고, 상기 특정 계층에 대한 상기 임계치는 상기 복수의 계층 중 하나 이상의 다른 계층에 대해 결정된 임계치들과 상이한, 방법.
  22. 제21항에 있어서,
    상기 임계치는 상기 특정 트레이닝 반복에서 상기 특정 계층의 완전-정밀도 가중치들에 기초하는 통계적 메트릭들에 기초하여 상기 특정 계층에 대해 결정되는, 방법.
  23. 제20항에 있어서,
    상기 명령어들은, 실행될 때, 추가로 상기 머신으로 하여금, 상기 임계치를 결정하게 하고, 상기 임계치는 상기 특정 트레이닝 반복에 대해 결정되고, 상기 임계치는 상기 복수의 트레이닝 반복 중 다른 트레이닝 반복에 대해 상이한 것으로 결정되는, 방법.
  24. 제23항에 있어서,
    상기 임계치는 상기 특정 계층에 대해 결정되고, 상기 특정 계층에 대해 결정된 임계치들은 상기 복수의 계층 중 하나 이상의 다른 계층에 대해 결정된 임계치들과 상이한, 방법.
  25. 제16항 내지 제24항 중 어느 한 항에 있어서,
    지연 파라미터를 식별하는 단계; 및
    상기 뉴럴 네트워크 모델의 트레이닝을 수행하는 단계를 추가로 포함하고, 상기 복수의 트레이닝 반복 중 제1 부분은 상기 지연 파라미터에 기초하여 상기 뉴럴 네트워크 모델의 계층들의 압축 없이 수행되고, 상기 뉴럴 네트워크 모델의 계층들의 압축은 상기 복수의 트레이닝 반복 중 상기 제1 부분의 완료에 이어서 시작되고, 상기 뉴럴 네트워크 모델의 계층들의 압축은 상기 특정 계층으로부터 상기 가중치들의 서브세트를 제거하고 상기 특정 계층의 가중치들 중 적어도 일부의 값들을 양자화하는 것을 포함하는, 방법.
  26. 제25항에 있어서,
    상기 지연 파라미터는 상기 복수의 트레이닝 반복 중 상기 제1 부분에 대응하는 트레이닝 반복들의 수를 포함하는, 방법.
  27. 제16항 내지 제26항 중 어느 한 항에 있어서,
    상기 가중치들의 값들은 min-max 양자화를 이용하여 양자화되는, 방법.
  28. 제16항 내지 제27항 중 어느 한 항에 있어서,
    상기 복수의 계층 중 각각의 계층의 가중치들을 프루닝함으로써 각각의 희소화된 가중치들의 서브세트가 생성되어야 하고, 상기 복수의 계층에 대한 각각의 희소화된 가중치들의 서브세트의 값들은 상기 복수의 계층 중 각각의 계층에 대한 각각의 양자화된-희소화된 가중치들의 서브세트를 생성하기 위해 양자화되어야 하는, 방법.
  29. 제16항 내지 제28항 중 어느 한 항에 있어서,
    상기 뉴럴 네트워크 모델은 컨볼루션 뉴럴 네트워크를 포함하는, 방법.
  30. 제16항 내지 제29항 중 어느 한 항의 방법을 수행하는 수단을 포함하는 시스템.
  31. 시스템으로서,
    데이터 프로세서;
    메모리; 및
    뉴럴 네트워크 모델의 트레이닝을 수행하기 위해 상기 데이터 프로세서에 의해 실행가능한 뉴럴 네트워크 압축 엔진을 포함하고, 상기 뉴럴 네트워크 모델의 트레이닝은 상기 뉴럴 네트워크 모델의 압축된 버전을 생성하고 이는:
    복수의 트레이닝 반복 - 상기 복수의 트레이닝 반복 각각은 순방향 패스 및 역방향 패스를 포함함 -;
    상기 뉴럴 네트워크 모델의 적어도 하나의 특정 계층의 가중치들을 프루닝하기 위한 가중치 희소화 - 상기 가중치 희소화는 상기 특정 계층에서의 가중치들에 대한 임계치 값에 기초하여 상기 가중치들의 서브세트를 제거하고, 상기 가중치 희소화는 상기 복수의 트레이닝 반복 중 특정 트레이닝 반복의 순방향 패스에서 수행됨 -; 및
    상기 특정 계층의 가중치들의 양자화 - 상기 가중치 희소화 및 가중치들의 양자화는 상기 특정 계층에 대한 양자화된-희소화된 가중치들의 세트를 생성하고, 상기 가중치들의 양자화는 또한 상기 특정 트레이닝 반복의 순방향 패스에서 수행됨 - 를 포함하는, 시스템.
  32. 제31항에 있어서,
    상기 트레이닝은:
    상기 특정 트레이닝 반복의 순방향 패스에서의 상기 특정 계층에 대한 활성화들의 결정; 및
    상기 활성화들의 양자화를 추가로 포함하는, 시스템.
  33. 제31항 또는 제32항에 있어서,
    리소스 제약된 시스템을 추가로 포함하고, 상기 뉴럴 네트워크 모델의 압축된 버전을 이용하여 추론들을 수행하기 위해 상기 뉴럴 네트워크 모델의 압축된 버전이 상기 리소스 제약된 시스템에 제공되는, 시스템.
  34. 제33항에 있어서,
    상기 추론들을 수행하는 것은 상기 뉴럴 네트워크 모델의 압축된 버전에 제공된 입력에 기초하여 결정된 활성화들의 양자화를 포함하는, 시스템.
  35. 제31항 내지 제34항 중 어느 한 항에 있어서,
    상기 리소스 제약된 시스템은 로봇, 차량, 또는 드론 중 하나를 포함하는, 시스템.
KR1020217022505A 2018-12-18 2019-12-17 뉴럴 네트워크 압축 KR20210108413A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862781299P 2018-12-18 2018-12-18
US62/781,299 2018-12-18
PCT/US2019/066991 WO2020131968A1 (en) 2018-12-18 2019-12-17 Neural network compression

Publications (1)

Publication Number Publication Date
KR20210108413A true KR20210108413A (ko) 2021-09-02

Family

ID=71102315

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217022505A KR20210108413A (ko) 2018-12-18 2019-12-17 뉴럴 네트워크 압축

Country Status (6)

Country Link
US (1) US20220067527A1 (ko)
EP (1) EP3899811A4 (ko)
KR (1) KR20210108413A (ko)
CN (1) CN113383346A (ko)
DE (1) DE112019005831T5 (ko)
WO (1) WO2020131968A1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102389910B1 (ko) 2021-12-30 2022-04-22 주식회사 모빌린트 그레디언트 독립적인 업데이트를 추가하여 그레디언트-기반 학습의 한계점을 보완하는 신경망의 양자화 인식 학습 방법
WO2023113548A1 (ko) * 2021-12-16 2023-06-22 삼성전자주식회사 전자 장치 및 그 제어 방법
WO2023177272A1 (ko) * 2022-03-18 2023-09-21 인텔렉추얼디스커버리 주식회사 신경망 기반 특징 텐서 압축 방법 및 장치
WO2024090600A1 (ko) * 2022-10-26 2024-05-02 한국전자기술연구원 딥러닝 모델 학습 방법 및 이를 적용한 딥러닝 연산장치

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7139939B2 (ja) * 2018-12-26 2022-09-21 日本電信電話株式会社 スケジューリングシステムおよび方法
US20210089919A1 (en) * 2019-09-19 2021-03-25 Dsp Group Ltd. Adjusting a pruned neural network
US11640552B2 (en) * 2019-10-01 2023-05-02 International Business Machines Corporation Two stage training to obtain a best deep learning model with efficient use of computing resources
US11763158B2 (en) * 2019-12-04 2023-09-19 Deep Vision Inc. Method for automatic hybrid quantization of deep artificial neural networks
US20210192352A1 (en) * 2019-12-19 2021-06-24 Northeastern University Computer-implemented methods and systems for compressing deep neural network models using alternating direction method of multipliers (admm)
US20210216868A1 (en) * 2020-01-08 2021-07-15 Maxim Integrated Products, Inc. Systems and methods for reducing memory requirements in neural networks
US11935271B2 (en) * 2020-01-10 2024-03-19 Tencent America LLC Neural network model compression with selective structured weight unification
CN111240640B (zh) * 2020-01-21 2022-05-10 苏州浪潮智能科技有限公司 基于硬件环境的数据量化方法、装置及可读存储介质
US20210232891A1 (en) * 2020-01-23 2021-07-29 Tencent America LLC Neural network model compression with structured weight unification
US11861467B2 (en) * 2020-03-05 2024-01-02 Qualcomm Incorporated Adaptive quantization for execution of machine learning models
US20210295175A1 (en) * 2020-03-18 2021-09-23 Fair Isaac Corporation Training artificial neural networks with constraints
US11874897B2 (en) 2020-04-09 2024-01-16 Micron Technology, Inc. Integrated circuit device with deep learning accelerator and random access memory
US11355175B2 (en) 2020-04-09 2022-06-07 Micron Technology, Inc. Deep learning accelerator and random access memory with a camera interface
US11461651B2 (en) * 2020-04-09 2022-10-04 Micron Technology, Inc. System on a chip with deep learning accelerator and random access memory
US11726784B2 (en) 2020-04-09 2023-08-15 Micron Technology, Inc. Patient monitoring using edge servers having deep learning accelerator and random access memory
US11887647B2 (en) 2020-04-09 2024-01-30 Micron Technology, Inc. Deep learning accelerator and random access memory with separate memory access connections
EP3944029A1 (en) * 2020-07-21 2022-01-26 Siemens Aktiengesellschaft Method and system for determining a compression rate for an ai model of an industrial task
CN112016674B (zh) * 2020-07-29 2024-06-18 魔门塔(苏州)科技有限公司 一种基于知识蒸馏的卷积神经网络的量化方法
US20220044114A1 (en) * 2020-08-04 2022-02-10 Nvidia Corporation Hybrid quantization of neural networks for edge computing applications
CN111967594A (zh) * 2020-08-06 2020-11-20 苏州浪潮智能科技有限公司 一种神经网络压缩方法、装置、设备及存储介质
US11934487B2 (en) * 2020-09-30 2024-03-19 EMC IP Holding Company LLC Splitting neural networks on multiple edge devices to train on vertically distributed data
CN112434725B (zh) * 2020-10-30 2023-06-09 四川新网银行股份有限公司 一种部署到html5的模型压缩方法
WO2022104799A1 (zh) * 2020-11-23 2022-05-27 北京小米移动软件有限公司 一种训练方法、训练装置及存储介质
GB2602296B (en) * 2020-12-22 2023-09-06 Imagination Tech Ltd Training a neural network comprising a plurality of layers
KR20220135498A (ko) * 2021-03-30 2022-10-07 삼성전자주식회사 전자 장치 및 이의 제어 방법
WO2021178981A1 (en) * 2021-05-03 2021-09-10 Innopeak Technology, Inc. Hardware-friendly multi-model compression of neural networks
WO2023082278A1 (en) * 2021-11-15 2023-05-19 Intel Corporation Apparatus and method for reinforcement learning based post-training sparsification
US11859626B2 (en) 2022-01-24 2024-01-02 Hamilton Sundstrand Corporation Incipient compressor surge detection using artificial intelligence
CN114676797B (zh) * 2022-05-27 2022-10-04 浙江大华技术股份有限公司 一种模型精度的计算方法、装置和计算机可读存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10417525B2 (en) * 2014-09-22 2019-09-17 Samsung Electronics Co., Ltd. Object recognition with reduced neural network weight precision
US10515304B2 (en) * 2015-04-28 2019-12-24 Qualcomm Incorporated Filter specificity as training criterion for neural networks
US20190188567A1 (en) * 2016-09-30 2019-06-20 Intel Corporation Dynamic neural network surgery
US11238338B2 (en) * 2017-04-24 2022-02-01 Intel Corporation Real time context dependent deep learning
WO2018214913A1 (zh) * 2017-05-23 2018-11-29 上海寒武纪信息科技有限公司 处理方法及加速装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023113548A1 (ko) * 2021-12-16 2023-06-22 삼성전자주식회사 전자 장치 및 그 제어 방법
KR102389910B1 (ko) 2021-12-30 2022-04-22 주식회사 모빌린트 그레디언트 독립적인 업데이트를 추가하여 그레디언트-기반 학습의 한계점을 보완하는 신경망의 양자화 인식 학습 방법
WO2023128083A1 (ko) * 2021-12-30 2023-07-06 주식회사 모빌린트 그레디언트 독립적인 업데이트를 추가하여 그레디언트-기반 학습의 한계점을 보완하는 신경망의 양자화 인식 학습 방법
WO2023177272A1 (ko) * 2022-03-18 2023-09-21 인텔렉추얼디스커버리 주식회사 신경망 기반 특징 텐서 압축 방법 및 장치
WO2024090600A1 (ko) * 2022-10-26 2024-05-02 한국전자기술연구원 딥러닝 모델 학습 방법 및 이를 적용한 딥러닝 연산장치

Also Published As

Publication number Publication date
WO2020131968A1 (en) 2020-06-25
DE112019005831T5 (de) 2021-08-12
EP3899811A1 (en) 2021-10-27
EP3899811A4 (en) 2022-09-28
CN113383346A (zh) 2021-09-10
US20220067527A1 (en) 2022-03-03

Similar Documents

Publication Publication Date Title
KR20210108413A (ko) 뉴럴 네트워크 압축
US20190362235A1 (en) Hybrid neural network pruning
US20240037951A1 (en) Object tracking and identification using intelligent camera orchestration
US11714853B2 (en) Efficient storage and searching of vector datasets
US20210097449A1 (en) Memory-efficient system for decision tree machine learning
US10949261B2 (en) Automated resource provisioning using double-blinded hardware recommendations
US10922380B2 (en) Distributed matrix multiplication for neural networks
CN108268425B (zh) 可编程矩阵处理引擎
US20190171690A1 (en) Max pooling in a matrix processing architecture
CN106062786B (zh) 用于训练神经网络的计算系统
US11748625B2 (en) Distributed convolution for neural networks
CN113014415A (zh) 边缘计算环境中的端到端服务质量
WO2020047338A1 (en) Computer vision system
KR20190111007A (ko) 희소 볼륨 데이터를 사용한 연산들
CN113287121A (zh) 神经网络的自动生成
US20220191537A1 (en) Hybrid pixel-domain and compressed-domain video analytics framework
CN111727462A (zh) 针对体积数据的密度坐标散列
US20220327359A1 (en) Compression for split neural network computing to accommodate varying bitrate
DE102022203266A1 (de) Verfahren und einrichtungen zum automatischen aktualisieren von künstliche-intelligenz-modellen für autonome fabriken
US20230045110A1 (en) Import of deployable containers and source code in cloud development environment
US20240152756A1 (en) Streamlined development and deployment of autoencoders
US20210110265A1 (en) Methods and apparatus to compress weights of an artificial intelligence model