KR20210148072A - 신경망 네트워크 훈련 동안 데이터 희소성 모니터링 - Google Patents

신경망 네트워크 훈련 동안 데이터 희소성 모니터링 Download PDF

Info

Publication number
KR20210148072A
KR20210148072A KR1020217019514A KR20217019514A KR20210148072A KR 20210148072 A KR20210148072 A KR 20210148072A KR 1020217019514 A KR1020217019514 A KR 1020217019514A KR 20217019514 A KR20217019514 A KR 20217019514A KR 20210148072 A KR20210148072 A KR 20210148072A
Authority
KR
South Korea
Prior art keywords
sparsity
monitor
monitoring
monitoring period
training
Prior art date
Application number
KR1020217019514A
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 KR20210148072A publication Critical patent/KR20210148072A/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
    • 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
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3495Performance evaluation by tracing or monitoring for systems
    • 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/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/10Interfaces, programming languages or software development kits, e.g. for simulating neural networks
    • G06N3/105Shells for specifying net layout
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Image Analysis (AREA)

Abstract

신경망에 대한 훈련 프로세스 동안 훈련 반복을 실행하도록 구성된 프로세서로서, 각 훈련 반복은 신경망을 통해 훈련 데이터의 개별 인스턴스를 처리하는 것을 포함하는, 상기 프로세서 및 희소성 모니터를 포함하는 전자 장치가 설명된다. 동작 동안, 희소성 모니터는, 하나 이상의 모니터링 기간들 각각의 모니터링 간격 동안, 각 모니터링 간격 동안 발생하는 훈련 반복 동안 신경망의 적어도 일부 중간 노드들에 의해 출력된 중간 데이터를 획득한다. 그런 다음, 희소성 모니터는, 중간 데이터에 적어도 부분적으로 기초하여, 중간 데이터에 대한 희소 특성들을 나타내는 하나 이상의 값들을 생성한다. 다음으로, 희소성 모니터는, 프로세서로, 희소 특성들을 나타내는 하나 이상의 값들을 전송하며, 프로세서는 희소 특성들을 나타내는 하나 이상의 값들에 적어도 부분적으로 기초하여 후속 훈련 반복을 실행하는 하나 이상의 양상들을 제어한다.

Description

신경망 네트워크 훈련 동안 데이터 희소성 모니터링
일부 전자 장치들은 인공 신경망 또는 보다 간단하게는 "신경망"에 대한 동작들을 수행한다. 일반적으로, 신경망은 살아있는 생물체의 뇌와 같은 생물학적 신경망과 유사한 내부 요소들을 포함하는 컴퓨터 구조이다. 신경망들은 신경망이 알려지지 않은 입력 데이터의 인스턴스들에 대해 지정된 태스크를 수행할 수 있도록 신경망의 내부 요소들을 구성하기 위해 알려진 훈련 데이터의 인스턴스들을 사용하여 지정된 태스크들을 수행하도록 훈련될 수 있다. 예를 들어, 신경망들에 의해 수행되는 한 가지 지정된 태스크는 이미지에 얼굴들이나 차량들과 같은 이미지 요소들이 포함되는지 여부를 식별하는 것이다. 이미지 식별을 수행하도록 신경망을 훈련할 때, 이미지 요소들을 포함하는(또는 포함하지 않는) 것으로 알려진 이미지들은 신경망을 통해 처리되어 이미지 요소들이 알려지지 않은 이미지들에 존재하는지 여부를 식별하기 위해 후속으로 알려지지 않은 이미지들을 처리할 때 적절한 출력들을 생성하도록 내부 요소들을 구성한다.
신경망들은, 그들 내부 요소들에, 살아있는 생물체의 뇌에서 뉴런들이 시냅스들을 통해 상호 연결되는 방식과 유사한 배열로 서로 상호 연결되는 인공 뉴런 또는 "노드" 세트를 포함한다. 기본 신경망은 노드들이 입력 노드들, 중간 노드들 및 출력 노드들을 포함하는 가중 그래프 구조의 형태로 시각화될 수 있다. 신경망 내에서, 출력 노드들 이외의 각 노드는 연관된 가중치가 있는 방향성 경계선(directed edge)을 통해 하나 이상의 다운스트림 노드들에 연결된다. 동작 동안, 신경망의 제1 레이어에 있는 입력 노드들은 외부 소스로부터 입력들을 수신하고 입력들을 처리하여 입력 값들을 생성한다. 입력 노드들은 입력 값들을 신경망의 다음 레이어에 있는 중간 노드들로 포워딩한다. 중간 노드들을 수신하는 것은 대응하는 방향성 경계선의 가중치에 기초하여 수신된 입력들에 가중치를 부여, 즉, 예컨대 가중치 값을 곱하는 등 수신된 입력들을 조정한다. 각 중간 노드는 대응하는 가중치 부여된 수신된 입력들과 가능한 바이어스 값을 합산하여 내부 값을 생성하고, 내부 값을 사용하여 중간 노드에 대한 활성화 함수를 평가하여 결과 값을 생성한다. 그런 다음, 중간 노드들은 결과 값들을 신경망의 다음 레이어에 있는 중간 노드들에 입력 값들로 포워딩하며, 여기서 입력 값들은 내부 값들을 생성하고 상기에 설명된 바와 같이 활성화 함수를 평가하는 데 사용된다. 이런 방식으로, 값들은 중간 노드들의 마지막 레이어가 결과 값들을 신경망에 대한 출력 노드들에 포워딩하여, 신경망에 대한 출력들을 생성할 때까지 신경망의 레이어들에 있는 중간 노드들을 통해 진행된다. 위의 예를 계속하여, 출력 노드들에 의해 - 및 이에 따른 신경망으로부터 - 생성된 출력들은 예를 들어 지정된 이미지 요소를 포함할(또는 포함하지 않을) 가능성이 있는지 여부를 나타내는 0 내지 1 사이의 숫자 형식일 수 있다.
상기에 설명된 바와 같이, 신경망에서 노드들 간 방향성 경계선을 따라 포워딩된 값들은 각 방향성 경계선과 연관된 가중치에 따라 가중치가 부여된다. 원하는 출력들이 신경망에 의해 생성되도록 훈련 프로세스 동안 방향성 경계들과 연관된 가중치들을 설정함으로써, 신경망은 상기 설명된 이미지들의 이미지 요소들의 식별과 같은 의도된 출력들을 생성하도록 훈련될 수 있다. 신경망을 훈련 시, 예상되거나 원하는 출력들을 갖는 훈련 데이터의 수많은 인스턴스들이 출력 노드들로부터 실제 출력들을 생성하도록 신경망에서 처리된다. 상기의 신경망 예를 계속하여, 훈련 데이터의 인스턴스들은 특정 이미지 요소들을 포함하는(또는 포함하지 않는) 것으로 알려진 디지털 이미지들을 포함할 것이며, 따라서 신경망은 이미지 요소가 이미지들에 존재할(또는 존재하지 않을) 가능성이 있음을 나타내는 출력들을 생성할 것으로 예상된다. 훈련 데이터의 각 인스턴스가 신경망에서 처리되어 실제 출력을 생성한 후, 실제 출력과 해당 예상 출력 사이의 오류 값 또는 "손실"은 평균 제곱 오류, 로그 손실 또는 다른 알고리즘을 사용하여 계산된다. 그런 다음, 손실은 신경망을 통해 백워드 작업되거나, 신경망을 통해 "역전파"되어 훈련 데이터의 인스턴스에 대한 오류를 줄이기 위해 신경망에서 방향성 경계선과 연관된 가중치들을 조정하며, 이에 의해 훈련 데이터의 해당 특정 인스턴스 - 및 입력 데이터의 모든 후속 인스턴스들에 대한 신경망의 응답을 조정한다. 예를 들어, 한 가지 역전파 기법은 신경망의 각 방향성 경계선에 대한 가중치에 대한 손실의 기울기를 계산하는 것을 포함한다. 그런 다음, 각 기울기에 훈련 계수 또는 "학습률"을 곱하여 가중치 조정 값을 계산한다. 다음으로, 가중치 조정 값은 해당 가중치에 대한 업데이트된 값을 계산하는 데 사용되는 것으로, 예를 들어 해당 가중치에 대한 기존 값에 추가된다.
일부 신경망, 특히 더 많은 수의 중간 노드들이 있는 신경망의 경우, 대량의 중간 데이터가 중간 노드들로부터의 출력들로서 생성될 수 있다. 따라서, 훈련 프로세스 동안 상기에 설명된 계산들을 수행하면(즉, 훈련 데이터의 인스턴스들이 신경망을 통해 처리되고 손실이 역전파됨에 따라) 신경망 훈련에 사용되는 장치들의 프로세서들 및 기타 기능 블록들에 상당한 계산 부담을 주게 된다. 추가로, 훈련 프로세스 동안 중간 데이터를 저장하고 검색하려면 많은 양의 메모리가 필요하고 훈련 프로세스에 지연이 추가된다. 따라서 설계자들은 중간 데이터 및 중간 데이터 저장과 관련된 계산의 효율성을 향상시키기 위해 중간 데이터의 속성들을 사용하는 여러 기술들을 제안했다. 예를 들어, 일부 시스템 설계자들은 여러 중간 노드들로부터의 중간 데이터에서 0들을 검출하거나, 이러한 중간 노드들로부터의 중간 데이터의 "희소성"을 검출하고, 데이터의 희소성이 이러한 계산의 사용을 허용할 때 보다 효율적인 계산(예를 들어, 희소 행렬 연산)을 사용하는 것을 제안했다. 다른 예로서, 설계자들은 중간 데이터의 희소성을 기반으로 중간 데이터를 메모리에 저장하기 위해 압축된 저장 포맷을 사용하는 것을 제안했다. 불행하게도, 훈련 프로세스 동안 중간 데이터의 희소성을 검출하는 것은 번거롭고 데이터 집약적이며, 이는 훈련 반복 동안 중간 데이터의 희소성을 활용하는 기술들의 광범위한 채택을 제한하는 역할을 했다.
도 1은 일부 실시예들에 따른 신경망을 예시하는 블록도를 나타낸다.
도 2는 일부 실시예들에 따른 전자 장치를 예시하는 블록도를 나타낸다.
도 3은 일부 실시예들에 따른 희소성 모니터를 예시하는 블록도를 나타낸다.
도 4는 일부 실시예들에 따른 모니터링 기간 및 모니터링 간격을 예시하는 타임라인 도면을 나타낸다.
도 5는 일부 실시예들에 따른 희소성 모니터로 및 로부터 데이터 및 정보의 흐름을 예시하는 블록도를 나타낸다.
도 6은 일부 실시예들에 따른 희소성 모니터에서 다양한 동작 모드들 간 전환을 예시하는 상태도를 나타낸다.
도 7은 일부 실시예들에 따른 활성 모드에서 희소성 모니터의 모니터링 기간을 동적으로 조정하는 의사 코드 예를 나타낸다.
도 8은 일부 실시예들에 따른 활성 모드에서 하이버네이션 모드로의 전환 및 그 반대의 전환에 대한 의사 코드 예를 나타낸다.
도 9는 일부 실시예들에 따른 신경망에 대한 훈련 프로세스의 훈련 반복 동안 중간 데이터에서 희소성을 모니터링하는 프로세스를 예시하는 흐름도를 나타낸다.
도 10a는 일부 실시예들에 따른 희소성 모니터에서 활성 모드 및 하이버네이션 모드를 사용하는 프로세스를 예시하는 흐름도의 일부를 나타낸다.
도 10a는 일부 실시예들에 따른 희소성 모니터에서 활성 모드 및 하이버네이션 모드를 사용하는 프로세스를 예시하는 흐름도의 일부를 나타낸다.
도 11은 일부 실시예들에 따른 희소성 모니터에 의해 모니터링 간격의 빠른 종료를 위한 프로세스를 예시하는 흐름도를 나타낸다.
도면들 및 설명 전반에 걸쳐, 유사한 도면 부호들은 동일한 도면 요소들을 지칭한다.
다음의 설명은 당업자가 설명된 실시예들을 만들고 사용할 수 있도록 제시되며, 특정 애플리케이션 및 그 요구사항들의 맥락에서 제공된다. 설명된 실시예들에 대한 다양한 수정들은 당업자에게 쉽게 명백할 것이며, 본원에 정의된 일반적인 원리들은 다른 실시예들 및 애플리케이션들에 적용될 수 있다. 따라서, 설명된 실시예들은 도시된 실시예들로 제한되는 것이 아니라, 본원에 개시된 원리들 및 특징들과 일치하는 최광의 범위에 따르도록 한다.
용어
다음의 설명에서, 실시예들을 설명하기 위해 다양한 용어들이 사용된다. 다음은 이러한 용어들 중 몇 가지에 대한 간단하고 일반적인 설명이다. 이러한 용어들은 명확성과 간결성을 위해 본원에 언급되지 않은 중요한 추가 양상들이 있을 수 있으며, 따라서 설명은 용어들을 제한하려는 것이 아님에 유의하자.
기능 블록: 기능 블록은 집적 회로 요소들, 개별 회로 요소들 등과 같은 하나 이상의 상호 관련된 회로 요소들의 그룹, 모음 및/또는 세트를 지칭한다. 회로 요소들은 적어도 하나의 특성을 공유한다는 점에서 "상호 연관"된다. 예를 들어, 상호 관련된 회로 요소들은 특정 집적 회로 칩 또는 그 일부에 포함되거나, 제조되거나, 다른 방식으로 결합될 수 있고, 주어진 기능들(계산 또는 처리 기능들, 메모리 기능들 등)의 성능에 관련될 수 있으며, 공통 제어 요소 및/또는 공통 클록 등에 의해 제어될 수 있다. 기능 블록은 단일 회로 요소(예를 들어, 단일 집적 회로 논리 게이트)로부터 수백만 또는 수십억 개의 회로 요소들(예를 들어, 집적 회로 메모리)에 이르기까지 임의의 여러 회로 요소들을 포함할 수 있다.
희소성: 신경망의 중간(또는 "숨겨진") 노드들에 의해 출력되는 중간 데이터에서 발견되는 0들(및/또는 기타 지정된 값들)의 수 및/또는 배열이다. 예를 들어, 0은 0의 결과를 생성하는 활성화 함수(예를 들어, 정류된 선형 유닛(ReLU) 활성화 함수 등)로 인해 중간 노드에 의해 출력될 수 있다. 희소성에 대한 한 가지 간단한 계산은 백분율이다. 이 경우, 희소성이 중간 데이터의 0들에 기초하여 결정될 때, 100개의 중간 노드들을 가정하면, 25개의 중간 노들이 0을 출력하고 - 나머지 75개의 중간 노드들이 다른 값들을 출력할 때 25%의 희소성이 존재한다.
훈련 반복: 훈련 반복은 신경망 훈련 프로세스 동안 신경망을 통한 훈련 데이터의 단일 인스턴스를 처리하기 위한 동작들의 일부 또는 전부를 포함한다. 훈련 반복의 동작들은 신경망의 중간 노드로부터의 중간 데이터 외에도 신경망의 출력 노드로부터의 출력들을 생성하기 위해 신경망을 통해 주어진 훈련 데이터의 인스턴스를 처리하는 것을 포함한다. 훈련 반복의 동작들은 또한 신경망 등에 가중치들을 설정하기 위해 주어진 훈련 데이터의 인스턴스와 연관된 손실 값들의 역전파를 포함할 수 있다.
신경망
상기에 설명된 바와 같이, 신경망은 지정된 태스크들을 수행하도록 훈련되는 내부 요소들(즉, 노드들 및 방향성 경계선들)을 포함하는 계산 구조이다. 도 1은 일부 실시예들에 따른 입력 노드들(102), 레이어들(110 및 112)에 있는 중간 노드들(104), 출력 노드들(106) 및 방향성 경계선들(108)을 포함하는 신경망(100)을 예시하는 블록도를 나타낸다(명확성을 위해 두 개의 방향성 경계선들 및 레이어들만 라벨링됨).
신경망(100)의 내부 요소들의 특성에 따라, 신경망(100)은 "판별적" 네트워크 또는 "생성적" 네트워크일 수 있다. 판별적 네트워크는 입력 데이터의 인스턴스들을 처리하고 지정된 패턴들이 입력 데이터의 인스턴스들에 존재할 가능성이 있는지 여부를 나타내는 결과들을 출력하도록 - 즉, 입력 데이터의 인스턴스들을 분류하도록 구성된 신경망이다. 예를 들어, 판별적 네트워크는 얼굴 또는 도로 표지판과 같은 이미지 요소들이 디지털 이미지들에 존재할 가능성이 있는지 여부, 특정 소리들 또는 단어들이 디지털 오디오에 존재할 가능성이 있는지 여부 등을 나타내는 결과들을 출력하도록 구성될 수 있다. 생성적 네트워크는 지정된 패턴들과 유사한 패턴들을 포함하는 출력 데이터의 인스턴스들을 생성하도록 구성된 신경망이다. 예를 들어, 생성적 네트워크는 얼굴 또는 도로 표지판과 유사한 패턴들을 포함하는 디지털 이미지들, 특정 소리들 또는 단어들과 유사한 패턴들을 포함하는 오디오 등을 생성하도록 구성될 수 있다.
설명된 실시예들은 신경망들에 대한 훈련 프로세스를 수행한다. 훈련 프로세스 동안, 방향성 경계선들 및 기타 값들과 연관된 가중치들은 신경망이 이후 지정된 태스크를 수행하는 데 사용될 수 있도록 설정된다. 일부 실시예들에서, 신경망 훈련 시, 각각의 많은 훈련 반복 동안, 예상되거나 원하는 출력들을 갖는 별도의 훈련 데이터의 인스턴스는 출력 노드들로부터 실제 출력들을 생성하도록 신경망을 통해 처리된다. 이러한 실시예들에서, 훈련 데이터의 각 인스턴스가 실제 출력을 생성하도록 신경망을 통해 처리된 후, 훈련 데이터의 해당 인스턴스에 대한 실제 출력과 예상 출력 사이의 오류 값 또는 "손실"은 평균 제곱 오류, 로그 손실 또는 다른 알고리즘을 사용하여 계산된다. 그런 다음, 손실은 신경망을 통해 백워드 작업되거나, 신경망을 통해 "역전파"되어 훈련 데이터의 인스턴스에 대한 오류를 줄이기 위해 신경망에서 방향성 경계선과 연관된 가중치들을 조정하며, 이에 의해 훈련 데이터의 해당 인스턴스에 대한 - 및 입력 데이터의 후속 인스턴스들에 대한 신경망의 응답을 조정한다. 예를 들어, 일부 실시예들에서, 역전파 기법은 신경망의 각 방향성 경계선에 대한 가중치에 대한 손실의 기울기를 계산하는 것을 포함한다. 그런 다음, 각 기울기에 훈련 계수 또는 "학습률"을 곱하여 가중치 조정 값을 계산한다. 다음으로, 가중치 조정 값은 해당 가중치에 대한 업데이트된 값을 계산하는 데 사용되는 것으로, 예를 들어 해당 가중치에 대한 기존 값에 추가된다.
신경망의 예가 도 1에 제시되어 있지만, 일부 실시예들에서, 노드들 및/또는 레이어들의 상이한 배열이 신경망에 존재한다. 예를 들어, 신경망은 수많은 레이어들에 배열된 많은 수의 - 경우에 따라 수십만 또는 수백만의 - 중간 노드들을 포함할 수 있으며, 중간 노드들의 각 레이어는 입력 값들을 수신하고 생성된 결과 값들을 다음 레이어의 중간 노드들로 또는 출력 노드들로 포워딩한다. 다른 예로서, 일부 실시예들에서, 컨볼루션 네트워크, 방사형 기저 네트워크, 순환 신경망, 자동 인코더, 마르코프 체인, 신뢰망, 잔여 네트워크 등을 포함한 신경망들에서 사용되는 노드들의 배열들 및 유형들과 같은, 노드들의 서로 다른 토폴로지 또는 연결성이 사용되고/되거나 서로 다른 유형의 노드들이 사용된다. 일반적으로, 설명된 실시예들은 본원에 설명된 바와 같이 중간 데이터의 희소성이 검출되고 사용될 수 있는 신경망의 임의의 구성으로 동작 가능하다.
개요
설명된 실시에들에서, 전자 장치의 희소성 모니터는 신경망에 대한 훈련 프로세스의 훈련 반복 동안 신경망의 중간 노드들에 의해 출력되는 중간 데이터의 희소성을 모니터링한다. 모니터링을 위해, 희소성 모니터는 신경망의 중간 노드들 중 적어도 일부로부터 출력된 중간 데이터를 획득한다. 그런 다음, 희소성 모니터는 획득된 중간 데이터를 분석하여 희소성을 결정한다. 즉, 중간 데이터는 0(또는 다른 지정된 값)과 같다. 분석의 일부로서, 희소성 모니터는 중간 데이터의 희소 특성들을 나타내는 값들을 생성한다. 예를 들어, 희소성 모니터는 희소 특성들을 나타내는 값들로서, 현재 희소성을 나타내는 값들, 지정된 수의 훈련 반복에 대한 하나 이상의 중간 노드들로부터의 중간 데이터의 평균 또는 중간 희소성 등을 생성할 수 있다. 그런 다음, 희소성 모니터는 희소 특성들을 나타내는 값들을 전자 장치의 프로세서로 전송한다. 프로세서는, 희소 특성들을 나타내는 값들에 적어도 부분적으로 기초하여, 후속 훈련 반복을 실행하는 하나 이상의 양상들을 제어한다. 예를 들어, 프로세서는, 희소 특성들에 기초하여, 후속 훈련 반복에 대해 수행되는 유형 계산, 후속 훈련 반복을 위해 메모리에 저장하기 위해 중간 데이터를 압축하는 데 사용되는 압축 유형 등을 결정하고 구성할 수 있다.
일부 실시예들에서, 중간 데이터는 "모니터링 기간"의 "모니터링 간격" 동안 설명된 바와 같이 중간 노드들로부터 획득된다. 예를 들어, 일부 실시예들에서, 모니터링 간격은 M ms(예를 들어, 1초, 2초 등) 모니터링 기간의 N ms(예를 들어, 50 ms, 100 ms 등)이며, M ms > N ms이다. 다른 예로서, 일부 실시예들에서, 모니터링 기간 및/또는 모니터링 간격은, 예컨대 모니터링 간격이 K 훈련 반복(예를 들어, 25, 50 등)이고 모니터링 기간이 Z 훈련 반복(예를 들어, 500, 1000 등)이며, Z > K인 것과 같은, 지정된 수의 훈련 반복을 포함한다. 이러한 실시예들에서, 모니터링 간격 및 모니터링 기간은 시간 측면에서 계산되지 않을 수 있다(그리고, 실제로, 훈련 반복에 걸리는 시간에 따라 가변 시간이 될 수 있음). 이러한 실시예들 중 일부에서, 모니터링 기간과 해당 모니터링 간격이 반복되며 - 훈련 프로세스가 계속되는 한 반복될 수 있다. 예를 들어, N ms(예를 들어, 60 ms) 모니터링 간격은 M ms(예를 들어, 250 ms) 모니터링 기간마다 발생할 수 있으며, Z 훈련 반복(예를 들어, 20회의 훈련 반복)의 모니터링 간격 등은 X초(예를 들어, 2초)마다 발생할 수 있다.
일부 실시예들에서, 희소성 모니터는 하이버네이션 모드와 활성 모드 중 하나로 동작한다. 일반적으로, 희소성 모니터는, 모니터링 간격들 사이의 희소성이 "불안정"한 경우, 즉, 모니터링 간격들 사이에 지정된 양 이상 변경되는 경우, 활성 모드에서 시작하고/하거나 하이버네이션 모드에서 활성 모드로 전환된다. 희소성 모니터는 모니터링 간격들 간의 희소성이 "안정적"인 경우, 즉, 모니터링 간격들 간에 지정된 양보다 적게 변경되는 경우, 활성 모드에서 하이버네이션 모드로 전환된다.
희소성 모니터가 활성 모드에서 동작을 시작할 때(예를 들어, 시작 시, 신경망에 대한 훈련 프로세스 동안 희소성을 처음 모니터링할 때, 하이버네이션 모드로부터 전환될 때 등), 모니터링 기간은 모든 중간 노드들에 대한 활성 모드 초기 값으로 설정되며, 활성 모드 초기 값은 희소성 모니터에 의해 사용되는 가장 짧은 모니터링 기간이다. 그런 다음, 희소성 모니터는 해당 훈련 간격으로부터의 중간 데이터의 희소성이 안정적인지 여부를 주기적으로 결정하고, 만약 그렇다면, 모니터링 기간의 길이를 늘린다(예를 들어, 모니터링 기간의 길이를 두 배로 또는 그 밖의 방법으로 증가시킨다). 일부 실시예들에서, 희소성 모니터는 개별 중간 노드들 및/또는 다른 중간 노드 그룹(예를 들어, 신경망의 레이어의 중간 노드들, 신경망의 영역 등)에 대한 중간 데이터의 희소성을 모니터링하고 - 개별 중간 노드들 및/또는 중간 노드 그룹들에 대한 모니터링 기간을 별도로 조정할 수 있다. 희소성 모니터는 희소성이 안정적인지 여부를 주기적으로 계속 결정하고 모니터링 기간이 최대 길이, 즉, 하이버네이션 모드 모니터링 기간까지 증가될 때까지 이러한 방식으로 중간 노드들에 대한 모니터링 기간의 길이를 늘린다(그리고 또한 희소성이 불안정한 것으로 발견되면 활성 모드 초기 값만큼 다시 모니터링 기간을 점진적으로 단축시킬 수 있다). 활성 모드에서, 모니터링 기간이 각 모니터링된 중간 노드에 대한 하이버네이션 모드 모니터링 기간까지 증가될 때, 희소성이 안정적인 상태로 남아 있으면, 희소성 모니터는 하이버네이션 모드로 전환된다.
희소성 모니터가 하이버네이션 모드에서 동작하는 경우, 모니터링 기간은 모든 중간 노드들에 대한 하이버네이션 모드 모니터링 기간으로 고정되며 - 따라서 모니터링 기간은 각 중간 노드에 대한 최대 길이에 달해 있다. 하이버네이션 모드에서 지정된 수의 중간 노드들에 대한 희소성이 불안정한 것으로 결정되면, 희소성 모니터는 하이버네이션 모드에서 활성 모드로 전환된다. 활성 모드로 전환될 때, 모니터링 기간은 활성 모드 초기 값으로 감소되며, 희소성 모니터는 상기에 설명된 바와 같이 동작한다.
일부 실시예들에서, 희소성 모니터는 중간 노드들에 대한 모니터링 간격 동안 희소성의 모니터링의 "빠른"종료를 지원한다. 이러한 실시예들에서, 한 번 이상의 훈련 반복으로부터의 중간 데이터가 지정된 희소성(예를 들어, 5 %, 10 % 등) 미만인 것으로 발견되고, 따라서 데이터가 상대적으로 가득 차 있거나/희소성이 많지 않은 경우, 희소성 모니터는 모니터링 간격의 나머지 훈련 반복을 위한 중간 데이터의 획득 및 처리를 중단한다. 이러한 실시예들에서, 희소 특성들을 나타내는 값들은 일반 모니터링 간격의 모든 훈련 반복보다 적은 중간 데이터를 기반으로 생성될 수 있다.
일부 실시예들에서, 중간 데이터에 대한 희소 특성들을 나타내는 상기에 설명된 값들은 두 번 이상의 훈련 반복에 대한 하나 이상의 중간 노드들에 대한 중간 데이터의 희소성 경향 또는 패턴이거나 이를 포함한다. 예를 들어, 경향은 지정된 수의 훈련 반복에 걸쳐 하나 이상의 중간 노드들에 대한 희소성 값 경향(예를 들어, 증가, 감소, 증가나 감소 비율 등)를 포함할 수 있다. 다른 예로서, 패턴들은 0(또는 다른 값)을 출력하는 중간 노드들의 그룹화, 0(또는 다른 값)을 출력하는 주어진 수보다 많은 중간 노드들을 갖는 중간 노드들의 레이어, 블록 비율(예를 들어, 희소성이 값이 0인 중간 데이터를 기반으로 하는 경우 0 블록 비율) 등과 같은 패턴들을 포함할 수 있다.
일부 실시예들에서, 희소 특성들을 나타내는 값들은 히스토그램의 빈과 유사한 다수의 "스테이지들"로 구성되며, 각 스테이지는 희소 특성 값들의 각각의 값 또는 범위를 나타낸다. 예를 들어, 일부 실시예들에서, 스테이지들은 10 % 내지 0 % 희소성과 연관된 제1 스테이지(한 번 이상의 훈련 반복에 대한 하나 이상의 중간 노드들에 대한 중간 데이터의 10 % 이하에 대해 0 또는 다른 지정된 값이 발생함), 20 % 내지 11 % 희소성과 연관된 제2 스테이지, 30 % 내지 21 % 희소성과 연관된 제3 스테이지 등을 포함한다. 이러한 실시예들에서, 희소성 모니터는 희소 특성들을 나타내는 값으로서 스테이지 값(예를 들어, 제1 스테이지의 경우 1의 값, 제2 스테이지의 경우 2의 값 등)을 프로세서에 반환할 수 있다.
설명된 바와 같이 중간 노드들에 의해 출력된 중간 데이터의 희소성을 추적하기 위해 희소성 모니터를 사용함으로써, 설명된 실시예들은 프로세서가 신경망에서 중간 노드들의 데이터 출력들에 관한 현재의 실시간 정보에 기초하여 후속 훈련 반복에 대한 중간 데이터의 처리를 제어하도록 할 수 있다. 이를 통해 프로세서가 신경망을 통해 훈련 데이터의 인스턴스들을 보다 효율적으로 처리하도록 도울 수 있으며, 이는 전력 절감, 처리 동작들의 속도 향상 등을 할 수 있다. 훈련 데이터의 개별 인스턴스들을 보다 효율적으로 처리하는 것은 훈련 프로세스를 더 빨라지게 하고 전력 소모가 줄어들게 하며, 이는 전자 장치의 성능을 향상시켜 - 전자 장치에 대한 사용자 만족도가 높아지는 것으로 이어진다. 추가로, 하이버네이션 모드와 활성 모드, 그리고 이와 관련된 동적으로 조정 가능한 모니터링 기간들을 사용함으로써, 희소성 모니터는 전자 장치에서 계산 리소스, 통신 인터페이스 등에 불필요하게 부담을 주지 않고 희소성을 모니터링할 수 있다.
전자 장치
설명된 실시예들에서, 전자 장치는, 그 중에서도, 신경망에 대한 훈련 프로세스의 훈련 반복 동안 중간 데이터의 희소성을 결정하기 위한 동작들을 수행한다. 도 2는 일부 실시예들에 따른 전자 장치(200)를 예시하는 블록도를 나타낸다. 도 2에서 볼 수 있는 바와 같이, 전자 장치(200)는 프로세서(202), 메모리(204) 및 희소성 모니터(206)를 포함한다. 일반적으로, 프로세서(202), 메모리(204) 및 희소성 모니터(206)는 하드웨어, 즉 다양한 회로 요소들 및 장치들을 사용하여 구현된다. 예를 들어, 프로세서(202), 메모리(204) 및 희소성 모니터(206)는 하나 이상의 개별 반도체 칩들을 포함하여 하나 이상의 반도체 칩들 상에 전체적으로 제조될 수 있으며, 개별 회로 요소들과 결합하여 반도체 칩들로부터 형성될 수 있으며, 개별 회로 요소들만으로 제조될 수 있다. 본원에 설명된 바와 같이, 프로세서(202), 메모리(204) 및 희소성 모니터(206) 중 일부 또는 전부는 중간 데이터의 희소성을 결정하는 것과 관련된 동작들을 수행한다.
프로세서(202)는 전자 장치(200)에서 계산 동작을 수행하는 기능 블록이다. 예를 들어, 프로세서(202)는 하나 이상의 중앙 처리 장치(CPU) 코어들, 그래픽 처리 장치(GPU) 코어들, 주문형 반도체들(ASIC들), 필드 프로그래밍 가능 게이트 어레이들(FPGA들) 등 이거나 이를 포함할 수 있다. 일부 실시예들에서, 프로세서(202)는 회로 요소들/기능 블록들이 연관된 동작들을 수행하도록 하는 프로그램 코드를 실행하는 파이프 라인들, 실행 유닛들, 컴퓨팅 유닛들 등과 같은 회로 요소들 또는 기능 블록들을 포함한다. 일부 실시예들에서, 프로세서(202)는 지정된 처리 동작들을 수행하기 위해 - 전용된 - 가능하면 특정 목적에 특화된 - 하드웨어 회로들을 포함한다.
메모리(204)는 전자 장치(200)를 위한 메모리(예를 들어, "메인" 메모리)의 동작들을 수행하는 전자 장치(200)의 기능 블록이다. 메모리(204)는 4세대 이중 데이터 레이트 동기식 동적 랜덤 액세스 메모리(DDR4 SDRAM), 정적 랜덤 액세스 메모리(SRAM), 및/또는 전자 장치(200)의 기능 블록에 의해 사용하기 위한 데이터 및 인스트럭션들을 저장하기 위한 다른 유형의 메모리 회로들 및 메모리 회로들에 저장되는 데이터 및 인스트럭션들의 액세스들을 처리하고 다른 제어 또는 구성 동작들을 수행하기 위한 제어 회로들과 같은 메모리 회로들을 포함한다. 일부 실시예들에서, 신경망 훈련 프로세스의 훈련 반복에 대한 중간 데이터는 메모리(204)에 저장되고 그로부터 검색된다.
희소성 모니터(206)는 신경망에 대한 훈련 프로세스의 훈련 반복 동안 중간 노드들로부터 출력된 중간 데이터의 희소성을 추적, 분석 및 보고하기 위한 동작들을 수행하는 기능 블록이다. 일반적으로, 희소성을 추적하는 것은 신경망의 적어도 일부 중간 노드들에 대한 중간 데이터를 획득하고 가능하면 희소성의 레코드들을 생성/저장하는 것을 포함한다. 희소성을 분석하는 것은, 획득된 중간 데이터에 기초하여, 예컨대 특정 훈련 반복에 대한 하나 이상의 중간 노드들에 대한 중간 데이터의 희소성을 나타내는 값들 및/또는 두 번 이상의 훈련 반복의 조합(예를 들어, 희소성에 대한 평균, 경향 또는 패턴)에 대한 하나 이상의 중간 노드들에 대한 희소성을 나타내는 값들과 같은, 희소성의 희소 특성들을 나타내는 값들을 결정하는 것을 포함한다. 희소성을 보고하는 것은 예컨대 파일, 메시지 등을 통해 희소성의 희소 특성들을 나타내는 값들을 하나 이상의 다른 기능 블록들(예를 들어, 프로세서(202) 등)에 전송하는 것을 포함한다.
도 3은 일부 실시예들에 따른 희소성 모니터(206)를 예시하는 블록도를 나타낸다. 도 2에서 볼 수 있는 바와 같이, 희소성 모니터(206)는 희소성 정보(INFO) 리스트(300), 희소성 프로세서(302), 희소성 스테이지 계산기(CALC)(304) 및 스케줄러(306)를 포함한다. 희소성 정보 리스트(300)는 한 번 이상의 훈련 반복에 대한 신경망의 하나 이상의 중간 노드들로부터 획득된 중간 데이터 및/또는 한 번 이상의 훈련 반복에 대한 중간 데이터에 기초하여 계산된 값들을 저장하는 기능 블록이다. 예를 들어, 일부 실시예들에서, 희소성 정보 리스트(300)는 각각의 한 번 이상의 훈련 반복 동안 중간 노드들로부터 획득되는(예를 들어, 이들로부터 캡처되거나 판독되는) 하나 이상의 중간 노드들(및 가능하면 다수의 중간 노드들 각각)에 대한 중간 데이터의 실제 값들을 포함/저장한다. 다른 예로서, 일부 실시예들에서, 희소성 정보 리스트(300)는 중간 데이터의 또는 중간 데이터 내의 희소성의 평균, 합계, 패턴 식별자 등과 같은 실제 중간 데이터로부터 계산되거나 도출된 값들을 포함한다. 희소성 정보 리스트(300)는 또한 훈련 반복(들)의 식별자, 모니터링 간격 및/또는 중간 데이터가 획득되었을 때의 모니터링 기간, 중간 데이터가 획득되었던 중간 노드들의 식별자들, 중간 데이터의 소스들 및/또는 그 안의 희소성을 식별하기 위한 기타 정보와 같은 메타데이터를 저장할 수 있다.
희소성 프로세서(302)는 중간 데이터의 희소 특성들을 나타내는 값들을 결정하기 위해 한 번 이상의 훈련 반복, 모니터링 간격 및/또는 모니터링 기간 동안 획득된 중간 데이터를 분석하기 위한 동작들을 수행하는 기능 블록이다. 즉, 희소성 프로세서(302)는 한 번 이상의 훈련 반복, 모니터링 기간 및/또는 모니터링 간격 동안 개별 중간 노드들 및/또는 이들의 그룹들(예를 들어, 신경망의 하나 이상의 레이어들 또는 영역들의 중간 노드들, 등)에 대한 희소 특성들을 나타내는 값들을 계산하거나 결정한다. 예를 들어, 희소성 프로세서(302)는 개별 중간 노드들 및/또는 이들의 그룹들에 대한 실제 희소성(즉, 0 및/또는 다른 값을 출력하는 중간 노드들)을 결정할 수 있다. 다른 예로서, 희소성 프로세서(302)는 한 번 이상의 훈련 반복에 대한 개별 중간 노드들 및/또는 이들의 그룹들에 대한 중간 데이터의 희소성에 대한 평균, 중간값 또는 전형적인 값들을 계산할 수 있다. 상기에 설명된 바와 같이, 희소성 프로세서(302)는 희소성 정보 리스트(300)에서, 평균, 중간값 또는 전형적인 값들, 뿐만 아니라 희소성의 희소 특성들을 나타내는 기타 값들을 계산하기 위해 사용되는 여러 번의 트레이닝 반복, 모니터링 기간 및/또는 모니터링 간격에 대해 그로부터 계산된 이력 또는 과거 중간 데이터 및/또는 값들을 유지할 수 있다. 또 다른 예로서, 희소성 프로세서(302)는 한 번 이상의 훈련 반복, 모니터링 기간 또는 모니터링 간격 동안 중간 데이터에서 0들을 출력하는 노드들의 그룹들 또는 영역들과 같은 희소성의 패턴을 계산하거나 결정할 수 있다. 또 다른 예로서, 희소성 프로세서(302)는 두 번 이상의 트레이닝 반복, 모니터링 기간 또는 모니터링 간격 동안 하나 이상의 중간 노드들에 대한 희소성 경향을 계산하거나 결정할 수 있다. 또 다른 예로서, 희소성 프로세서(302)는 한 번 이상의 트레이닝 반복, 모니터링 기간 또는 모니터링 간격에 대해 중간 노드들의 그룹들에 대한 중간 노드들의 제로 블록 비율을 계산하거나 결정할 수 있다.
중간 데이터를 분석하는 것 외에도, 일부 실시예에서, 희소성 프로세서(302)는 희소 특성들을 나타내는 값들을 포함하는 출력들을 생성한다. 예를 들어, 희소성 프로세서(302)는 희소 특성들 및/또는 그에 기초한 정보를 나타내는 값들을 포함하는 하나 이상의 전자 파일들, 메시지들 등을 생성할 수 있다. 일부 실시예들에서, 희소성 프로세서(302)는 전자 장치(200)(예를 들어, 프로세서(202))의 하나 이상의 다른 기능 블록들에 출력들을 전달한다.
희소성 스테이지 계산기(304)는 한 번 이상의 훈련 반복, 모니터링 기간 및/또는 모니터링 간격에 대한 하나 이상의 중간 노드들에 대한 희소성의 "스테이지"를 계산하기 위한 동작들을 수행하는 기능 블록이다. 일부 실시예들에서, 각 스테이지는 가능한 희소성 값 세트 중에서 희소 특성들의 값들의 각각의 값 또는 범위를 나타낸다. 예를 들어, 일부 실시예들에서, 스테이지들은 10 % 내지 0 % 희소성과 연관된 제1 스테이지(한 번 이상의 훈련 반복에 대한 하나 이상의 중간 노드들에 대한 중간 데이터의 10 % 이하에 대해 0 또는 다른 지정된 값이 발생함), 20 % 내지 11 % 희소성과 연관된 제2 스테이지, 30 % 내지 21 % 희소성과 연관된 제3 스테이지 등을 포함한다. 이러한 실시예들에서, 한 번이상의 훈련 반복, 모니터링 기간 또는 모니터링 간격에 대한 하나 이상의 중간 노드들로부터의 중간 데이터 세트가 주어지면, 희소성 스테이지 계산기(304)는 스테이지 값(예를 들어, 제1 스테이지의 경우 1의 값, 제2 스테이지의 경위 2의 값 등)을 희소 특성들을 나타내는 값으로 계산할 수 있다. 따라서, 일부 실시예들에서, 훈련 반복, 모니터링 기간 또는 모니터링 간격에 대한 희소성 값들은 단순화된 값들(예를 들어, 몇 비트)로 표현될 수 있으며, 이는 희소성을 나타내는 값들의 통신이 더욱 효율적으로 만든다. 일부 실시예들에서, 사용되는 스테이지의 수는 프로세서 (202)에 이용 가능한 희소 계산 메커니즘/커널, 데이터 압축 버전 등과 같은 훈련 데이터의 후속 인스턴스들을 처리 시 프로세서(202)에 의해 이루어질 수 있는 다수의 변경들에 기초한다.
스케줄러(306)는 희소성 모니터(206)가 중간 데이터를 획득 및/또는 분석하는 시기/방법을 제어하기 위한 동작들을 수행하는 기능 블록이다. 일부 실시예들에서, 스케줄러(306)는 희소성 모니터(206)가 동작하는 동작 모드를 결정한다. 이러한 실시예들에서, 희소성이 불안정한 경우 - 또는 모니터링 기간들 간에 또는 모니터링 간격들 간에 지정된 양 이상으로 변경되는 경우 - 스케줄러(306)는 희소성의 지속적인 안정성(또는 불안정성)에 따라 모니터링 기간의 길이가 동적으로 조정되는 동안 활성 모드를 선택할 수 있다. 반대로, 희소성이 안정적인 경우 - 또는 모니터링 기간들 간에 또는 모니터링 간격들 간에 지정된 양보다 적게 변경될 경우 - 스케줄러(306)는 모니터링 기간의 길이가 최대 값으로 유지되는 동안 하이버네이션 모드를 선택할 수 있다. 활성 모드 및 하이버네이션 모드는 하기에 보다 상세하게 설명된다.
희소성 모니터(206)가 기능 블록의 특정 배열을 갖는 도 3에 도시되어 있지만, 일부 실시예들에서, 희소성 모니터(206) 상이한 수 및/또는 배열의 기능 블록들을 포함한다. 예를 들어, 일부 실시예들에서, 희소성 프로세서(302)는 희소성 스테이지 계산기(304), 스케줄러(306) 등의 요소들을 포함한다. 일반적으로, 희소성 모니터(206)는 본원에 설명된 동작들을 수행하기 충분한 기능 블록들을 포함한다.
프로세서(202) 및 희소성 모니터(206)는 도 2에서 별도로 도시되어 있지만, 일부 실시예들에서, 프로세서(202)는 희소성 모니터(206)를 포함한다. 예를 들어, 일부 실시예들에서, 프로세서(202)는 신경망 가속기, 즉 희소성 모니터(206)를 포함하는 신경망 동작들을 효율적으로 수행하도록 설계된 프로세서이다. 일반적으로, 설명된 실시예들에서, 본원에 설명된 동작들을 수행하는 프로세서(202) 및/또는 희소성 모니터(206)의 임의의 배열이 사용될 수 있다.
하드웨어 엔티티인, 희소성 모니터(206)가 특정 동작들을 수행하는 것으로 설명되었지만, 일부 실시예들에서, 다른 엔티티가 상기 동작들을 수행한다. 예를 들어, 일부 실시예들에서, 프로세서(202)는 희소성 모니터(206)(및 그 안에 포함된 기능 블록들)에 귀속되는 일부 또는 모든 동작들을 수행한다. 이러한 실시예들에서, 프로세서(202)는 프로세서(202)가 동작들을 수행하도록 하는 프로그램 코드를 실행할 수 있다.
전자 장치(200)가 특정 기능 블록들 및 회로 요소들을 포함하는 것으로 도시되어 있지만, 전자 장치(200)는 예시를 위해 단순화된다. 일부 실시예들에서, 전자 장치(200)는 추가 또는 상이한 기능 블록들, 서브시스템들 및/또는 회로 요소들을 포함하거나 - 추가 또는 상이한 기능 블록들, 서브시스템들 및/또는 회로 요소들을 갖는 장치에 포함된다. 예를 들어, 전자 장치(200) 또는 디바이스는 디스플레이 서브시스템들, 전력 서브시스템들, 입력-출력(I/O) 서브시스템들 등을 포함할 수 있다. 일반적으로, 전자 장치(200)는 본원에 설명된 동작들을 수생하기 위한 충분한 기증 블록들 등을 포함한다.
전자 장치(200)는 계산 동작들을 수행하는 임의의 장치일 수 있거나 그에 포함될 수 있다. 예를 들어, 전자 장치(200)는 서버 컴퓨터, 데스크톱 컴퓨터, 랩톱 컴퓨터, 웨어러블 컴퓨팅 장치, 태블릿 컴퓨터, 한 피스의 가상 또는 증강 현실 장비, 스마트 폰, 인공 지능(AI) 또는 기계 학습 장치, 네트워크 기기, 장난감, 한 피스의 시청각 장비, 가전 제품, 차량 등 및/또는 이들의 조합일 수 있거나 이에 포함될 수 있다.
모니터링 기간 및 모니터링 간격
설명된 실시예들에서, 희소성 모니터(예를 들어, 희소성 모니터(206))는 "모니터링 기간" 및 "모니터링 간격"을 사용하여 신경망에 대한 훈련 반복에 대한 중간 데이터의 희소성을 모니터링한다. 도 4는 일부 실시예들에 따른 모니터링 기간(400) 및 모니터링 간격(402)을 예시하는 타임라인 도면을 나타낸다. 스케줄러(306)는, 모니터링 기간이 중간 데이터의 희소성의 안정성에 기초하여 동적으로 조정되는 활성 모드 동안 개별 중간 노드들 또는 이들의 그룹들에 대해, 도 4에 도시된 것과 유사한 모니터링 기간 및 모니터링 간격을 사용할 수 있다. 이에 반해, 하이버네이션 모드 동안, 모니터링 기간은 모든 중간 노드들에 대해 모두 동일한 길이이다.
해당 모니터링 기간(400)의 "활성" 부분 동안 발생하는 각 모니터링 간격(402)(도 4에 크로스 해칭으로 도시됨) 동안, 발생하는 다수 번의 트레이닝 반복 각각에 대해, 스케줄러(306)는 희소성 프로세서(302)가 본원에 설명된 최종 분석을 위한 하나 이상의 중간 노드들로부터 중간 데이터를 획득하도록 한다. 예를 들어, 모니터링 간격이 A ms인 경우, 희소성 프로세서(302)는 A ms에서 발생하는 B 훈련 반복에 대해 하나 이상의 중간 노드들로부터 중간 데이터를 획득할 수 있다(단, 본원의 다른 곳에서 설명된 바와 같이 빠른 종료가 이를 조기에 종료시킬 수 있음). 나머지 모니터링 기간(400)(도 4에 흰색으로 도시됨) 동안, 즉 모니터링 기간의 "유휴" 부분 동안, 스케줄러(306)는 희소성 프로세서(302)가 중간 노드들부터 중간 데이터를 획득하는 것을 스킵하도록 한다. 일부 실시예들에서, 스케줄러(306)는 또한 희소성 프로세서(302) 및/또는 희소성 모니터(206)의 다른 기능 블록들이 전력을 보존하고 열 발생 등을 방지하기 위해 모니터링 기간의 유휴 부분 동안 저전력 동작 상태로 들어가도록 한다.
도 4에서, 모니터링 기간(400 1 내지 N-1)은 동일한 시간 길이 및/또는 훈련 반복 횟수, 예를 들어 1 초 또는 250 회의 훈련 반복이며, 각 모니터링 기간(400)의 시작 시 발생하는 모니터링 간격(402)은 지정된 시간 길이 및/또는 반복 횟수, 예를 들어, 100 ms 또는 50 회의 훈련 반복이다. 다른/과거의 모니터링 기간(도시되지 않음)을 뒤따를 수 있는 모니터링 기간(1 내지 N-1) 동안, 희소성 프로세서(302)는 희소성이 안정적이고 따라서 모니터링 기간이 증가될 수 있다고 결정한다. 예를 들어, 희소성 프로세서(302)는, 모니터링 기간(1 내지 N-1 동안) 발생하는 훈련 반복에 대한 하나 이상의 중간 노드들로부터의 중간 데이터에 기초하여, 희소성이 모니터링 기간들(1 내지 N-1)(및 가능하면 조기의 모니터링 기간들, 도시되지 않음) 간에 지정된 양(예를 들어, 5 %, 10 % 또는 다른 값) 미만만큼 변경되었고 - 따라서 희소성이 안정적이라고 결정할 수 있다. 따라서, 스케줄러(306)는 모니터링 기간(N)에 의해 도시된 바와 같이 하나 이상의 중간 노드들에 대한 모니터링 기간(400)의 길이를 증가시킬 수 있다. 도 4에서, 모니터링 기간(N)은 모니터링 기간(1 내지 N-1)의 약 2배이지만, 최대 모니터링 기간 값까지 길이가 증가하더라도 사용될 수 있다.
특정 모니터링 기간들(400) 및 모니터링 간격들(402)이 도 4에 도시되어 있지만, 일부 실시예들에서, 상이한 배열의 모니터링 기간들 및/또는 모니터링 간격들이 사용된다. 예를 들어, 모니터링 간격(402)은 모니터링 기간(400)의 시작 이외의 시간에 발생할 수 있으며, 모니터링 기간(400) 당 하나 이상의 모니터링 간격(402)이 발생할 수 있는 등의 일을 할 수 있다. 일반적으로, 설명된 실시예들에서, 충분한 모니터링 기간(400) 및 모니터링 간격(402)이 본원에 설명된 동작들을 수행하는 데 사용된다.
데이터 및 정보의 흐름
설명된 실시예들에서, 희소성 모니터(예를 들어, 희소성 모니터(206))는 중간 데이터의 희소성을 모니터링하기 위한 다양한 데이터 및 정보를 수신하고 생성한다. 도 5는 일부 실시예들에 따른 희소성 모니터로 및 로부터 데이터 및 정보의 흐름을 예시하는 블록도를 나타낸다. 도 5는 일부 실시예들의 일 예로서 제시되며, 다른 실시예들에서, 상이한 기능 블록들은 데이터 및 정보의 일부 또는 전부를 수신하고 생성한다는 점에 유의하자. 추가로, 신경망(502)이 신경망(100)의 표현과 유사한 단순화된 표현을 사용하여 도 5에 도시되어 있지만, 신경망(502)은, 노드들의 해당 유형들 및 연결성을 갖는, 컨볼루션 신경망, 방사형 기저 네트워크, 순환 신경망 등과 같은 상이한 배열 및/또는 유형의 노드들을 포함할 수 있다.
도 5에서 볼 수 있는 바와 같이, 프로세서(202)는 신경망(502)에 대한 훈련 프로세스 동안 신경망(502)을 통해 훈련 데이터(500)의 인스턴스들을 처리하기 위한 동작들을 수행한다. 예를 들어, 신경망(502)이 이미지들을 지정된 이미지 요소들을 포함하는(또는 포함하지 않는) 것으로 분류한다고 가정하면, 프로세서(202)는 이미지 요소가 주어진 이미지에 존재하는지 여부를 나타내는 출력들을 생성하도록 신경망을 통해 이미지들(예를 들어, 이미지 데이터를 포함하는 디지털 파일들)을 처리할 수 있다. 신경망(502)을 통해 훈련 데이터(500)의 인스턴스들을 처리하는 것은 프로세서(202)가 신경망에서 하나 이상의 중간 노드들(및 가능하면 다른 노드들, 예를 들어 입력 노드들)로부터 또는 이와 연관된 중간 데이터(504)를 생성하도록 한다. 예를 들어, 정류된 선형 유닛(ReLU)과 같은 활성화 함수를 갖는 중간 노드의 경우, 프로세서는 중간 노드들에 대한 해당 가중치 입력들을 기반으로 활성화 함수를 평가(즉, 활성화 함수의 결과를 계산)하여 중간 노드들로부터의 출력들을 생성할 수 있으며, 중간 노드들로부터의 출력들은 이러한 노드들로부터 또는 이들과 관련된 중간 데이터 역할을 한다.
중간 데이터(504)는, 예컨대 프로세서(202)로부터 희소성 모니터(206)로 직접 전달되거나 프로세서(202)에 의한 계산 동안 메모리에 저장된 후 희소성 모니터(206)에 의해 메모리(204)로부터 판독되는 것과 같이, 희소성 모니터(206)에 의해 획득된다. 추가로, 희소성 모니터(206)는 희소성 계산에 사용될 수 있는 신경망에 관한 정보인, 신경망 정보(INFO)(508)를 프로세서(202)(또는 전자 장치(200)의 다른 엔티티)로부터 획득한다. 신경망 정보(508)는 신경망(502)의 유형, 수, 배열/연결성 및/또는 신경망(502)의 노드들의 일부 또는 전부의 속성들, 신경망(502)에 의해 수행될 지정된 태스크, 수행될 훈련 반복 횟수, 처리될 훈련 데이터의 인스턴스들에 대한 정보 등과 같은 정보를 포함한다.
희소성 모니터(206)는 한 번 이상의 훈련 반복, 모니터링 기간, 또는 모니터링 간격에 대한 중간 데이터(504) 및 중간 데이터(504)에 대한 희소 특성들(510)을 나타내는 값들을 결정하기 위한 신경망 정보(508)을 사용한다. 희소 특성들을 나타내는 값들을 결정하기 위해, 희소성 모니터(206)는 하나 이상의 중간 노드들에 대한 현재 희소성(예를 들어, 0 또는 다른 값을 출력하는 노드들), 하나 이상의 중간 노드들에 대한 평균, 중간값 또는 전형적인 희소성, 하나 이상의 중간 노드들에 대한 희소성 경향, 하나 이상의 노드들에 대한 희소성 패턴, 한번 이상의 훈련 반복, 모니터링 기간 또는 모니터링 간격에 대한 제로 블록 비율 등과 같은 값들을 계산할 수 있다. 일부 실시예들에서, 희소성 모니터(206)는 개별 중간 노드들, 신경망의 레이어 내의 중간 노드들 등과 같은 지정된 하나 이상의 중간 노드들의 세트에 대한 희소성을 나타내는 값들을 결정한다.
희소성 모니터(206)에 의해 결정된 희소 특성들을 나타내는 특정 값들은 희소성이 결정되는 중간 노드들 및/또는 훈련 반복, 모니터링 기간 또는 모니터링 간격에 따라 달라진다. 예를 들어, 일부 실시예들에서, 희소 특성들(510)을 나타내는 값들은 숫자(예를 들어, 백분율, 평균 등), 패턴 식별자, 경향 표시기 등이다. 다른 예로서, 일부 실시예들에서, 희소 특성들(510)을 나타내는 값들은 하나 이상의 중간 노드들이 각각 0들 또는 다른 값들을 출력할 때 0과 1을 통해 훈련 반복의 시퀀스를 나타내는 0/1 문자열과 같은 문자열이다. 다른 예로서, 일부 실시예들에서, 희소 특성들(510)을 나타내는 값들은 스테이지들이며, 이를 통해 희소성의 대응 범위가 하나 이상의 각각의 디지트들로 표현된다.
희소성 모니터(206)는 예를 들어 메모리(204) 및/또는 희소성 모니터(206)의 로컬 메모리(예를 들어, 희소성 정보 리스트(300))에 저장하고, 및/또는 희소 특성들을 나타내는 값들을 전자 장치(200)의 하나 이상의 다른 기능 블록들에 출력할 수 있다. 예를 들어, 일부 실시예들에서, 희소성 모니터(206)는 희소 특성들을 나타내는 값들을 포함하는 파일을 생성하며 (예컨대 메모리(204)의 공유 메모리 위치에 파일을 저장함으로써) 파일을 프로세서(202)에 제공한다. 그런 다음, 프로세서(202)는 희소 특성들을 나타내는 하나 이상의 값들에 적어도 부분적으로 기초하여 후속 훈련 반복을 실행하는 하나 이상의 양상들을 제어한다. 예를 들어, 프로세서(202)는 후속 훈련 반복(예를 들어, 있는 경우, 희소 계산 메커니즘/커널 및/또는 단순화된 계산이 사용되는 경우)을 위해 수행될 특정 유형의 계산을 선택할 수 있으며, 후속 훈련 반복 등에 대한 중간 데이터를 메모리(204)에 저장할 때 사용될 압축을 선택할 수 있다.
일부 실시예들에서, 프로세서(202)는 어떤 유형의 계산이 사용중인지에 따라 (또는 따르지 않고) 적어도 일부 계산 회로들 및/또는 다른 기능 블록들의 성능 레벨(예를 들어, 전압 및/또는 제어 클록)을 디스에이블시키거나, 전원을 끄거나, 그렇지 않으면 감소시킨다. 예를 들어, 희소성이 더 높고 따라서 더 많은 희소 행렬 계산이 후속 훈련 반복에 사용되는 경우, 프로세서(202)는 계산을 수행하는 데 사용되지 않을 계산 유닛들, 파이프 라인들, 메모리 인터페이스 요소들, 컨트롤러들 및/또는 기타 기능 블록들을 디스에이블시킬 수 있다.
활성 모드 하이버네이션 모드
일부 실시예들에서, 희소성 모니터(예를 들어, 희소성 모니터(206))는 신경망에 대한 훈련 프로세스의 훈련 반복 동안 중간 데이터의 희소성을 모니터링할 때 활성 모드와 하이버네이션 모드 중 하나로 동작한다. 도 6은 일부 실시예들에 따른 다양한 동작 모드들 간 전환을 예시하는 상태도를 나타낸다. 도 6에서 볼 수 있는 바와 같이, 희소성 모니터가 동작할 수 있는 상태들은 오프(600), 활성 모드(602) 및 하이버네이션 모드(604)를 포함한다. 오프(600)에서, 희소성 모니터는 전자 장치(200)가 훈련 데이터의 인스턴스들을 처리하지 않고 차단될 때 및/또는 희소성 모니터가 저전력 모드에 있을 때와 같이, 중간 데이터의 희소성을 모니터링하지 않는다 (단, 희소성 모니터는 적어도 일부 기능을 유지할 수 있음). 희소성 모니터는 희소성 모니터에 전원이 인가될 때와 같이 "온" 신호를 수신 시, 프로세서(예를 들어, 프로세서(202))로부터 희소성을 모니터링을 시작/재개하라는 요청을 수신 시, 프로세스에 의해 훈련 데이터/훈련 반복의 인스턴스들의 처리 등을 검출 시, 오프(600)에서 활성 모드(602)로(또는 대안으로, 일부 실시예들에서는 하이버네이션 모드(604)로) 전환된다. 희소성 모니터는 희소성 모니터에 대한 전원이 차단될 때와 같이 "오프" 신호를 수신 시, 프로세서(예를 들어, 프로세서(202))로부터 희소성 모니터링을 중단하라는 요청을 수신 시, 프로세서에 의한 훈련 데이터/훈련 반복의 인스턴스들의 처리 없음 등을 검출 시, 활성 모드(602) 또는 하이버네이션 모드(604)에서 오프(600)로 전환된다.
활성 모드(602)에서, 희소성 모니터는 다른 훈련 반복에 대한 중간 데이터가 상이한 레벨의 희소성을 갖거나 가질 수 있을 때(즉, 상이한 개수 또는 패턴의 중간 노드들이 0들 또는 다른 값을 생성할 때)와 같이, 상대적으로 불안정한/변경되는 희소성을 모니터링한다. 희소성이 불안정하기 때문에 (그리고 감소될 수 있기 때문에), 고정된 모니터링 기간은 희소성을 모니터링하는 데 덜 적합하다. 이런 이유로, 활성 모드(602)에서, 희소성 모니터는 중간 노드들 및/또는 이들의 그룹들에 대한 현재 희소성 및 희소성 내역을 기반으로 중간 노드들 및/또는 이들의 그룹들(예를 들어, 신경망의 레이어들, 특정 유형의 신경망의 영역들 등에서의 중간 노드들)에 대한 모니터링 기간을 동적으로 조정한다.
도 7은 일부 실시예들에 따른 활성 모드(602)에서 희소성 모니터의 모니터링 기간을 동적으로 조정하는 의사 코드 예를 나타낸다. 도 7에서 볼 수 있듯이, 희소성 모니터는 먼저 희소성에 대한 충분한 "이력", 즉, 한 번 이상의 훈련 반복 또는 모니터링 간격에 대해 (그리고 보다 구체적으로는, 지정된 수의 훈련 반복 또는 모니터링 간격에 대해) 하나 이상의 중간 노드들에 대한 희소성 레코드를 생성한다. 그런 다음, 희소성 모니터는 현재 희소성 또는 희소성에 대한 현재 값을 설정한다. 다음으로, 희소성 모니터는 현재 희소성을 이력/과거 희소성의 지정된 값(이력 희소성의 레코드에서 제1 위치로서 도 7에 도시됨)과 비교하여 현재 희소성이 이력 희소성에서 떨어진 임계값 미만인지 여부를 결정한다. 즉, 희소성이 이력 희소성과 현재 희소성 사이에서 약간만 변경되었는지를 결정한다. 그렇다면, 희소성은 안정적이며 모니터링 기간은 주어진 양만큼 증가된다(이는 도 7에 2배로 도시되어 있지만, 다양한 증가가 사용될 수 있음). 모니터링 기간의 증가는 하이버네이션 모니터링 기간의 최대값으로 제한되며, 이는 일반적으로 활성 모드(602) 또는 하이버네이션 모드(604)에서 사용되는 가장 긴 모니터링 기간이다. 즉, 희소성이 활성 모드에서 비교적 안정적인 한, 희소성 모니터는 모니터링 기간이 하이버네이션 모니터링 기간과 동일한 최대 길이에 도달할 때까지 주기적으로 모니터링 기간을 늘릴 것이다. 일부 실시예들에서, 도 7에 도시되지 않았지만, 모니터링된 기간이 증가된 후 모니터링된 희소성이 불안정한 것으로 발견되면 모니터링 기간은 또한 감소/단축(예를 들어, 반으로 자르거나, 지정된 양만큼 감소)될 수 있다 - 단, 이러한 감소는 모니터링 기간이 활성 모드 초기 값(모니터링 기간의 최소값)과 같아 질 때 까지만 발생한다.
상기에 설명된 바와 같이, 일부 실시예들에서, 활성 모드에서, 개별 중간 노드들에 의해 출력되는 중간 데이터는 희소성 모니터에 의해 별도로 모니터링될 수 있다. 이러한 실시예들의 일부에서, 모니터링 기간은 개별 중간 노드들의 분해능으로 설정될 수 있다. 즉, 상이한 중간 노드들은 상이한 모니터링 기간을 사용하여 모니터링될 수 있다. 예를 들어, 희소성 모니터는 제1 모니터링 기간을 사용하여 제1 중간 노드 또는 제1 중간 노드 그룹의 중간 데이터를 모니터링 할 수 있으며, 제2 모니터링 기간을 사용하여 제2 중간 노드 또는 제2 중간 노드 그룹을 모니터링 등을 할 수 있다. 이는 중간 노드들에서 희소성(또는 희소성의 패턴, 평균, 경향 등)의 검출을 위한 세분화된 해상도를 희소성 모니터에 제공한다.
희소성 모니터가 활성 모드(602)에서 동작할 때, 그 중에서도, 희소성이 비교적 안정적이라고 결정 시, 희소성 모니터는 하이버네이션 모드(604)로 전환된다. 하이버네이션 모드(604)에서, 모니터링 기간은 동적으로 조정되지 않으며, 모든 중간 노드들에 대해 동일한 모니터링 기간(즉, 하이버네이션 모드 모니터링 기간)이 사용된다. 하이버네이션 모드(604)로부터, 희소성이 비교적 불안정적일 때, 즉 지정된 양 이상으로 변경될 때, 희소성 모니터는 활성 모드(602)로 전환된다.
도 8은 일부 실시예들에 따른 활성 모드에서 하이버네이션 모드로의 전환 및 그 반대의 전환에 대한 의사 코드 예를 나타낸다. 도 8에서 볼 수 있는 바와 같이, 활성 모드에서, 희소성 모니터는 중간 데이터를 주기적으로 반복하여 각 중간 데이터가 하이버네이션 모드 모니터링 기간을 사용하여 모니터링되고 있고 데이터가 유효한지 여부, 즉 초기 희소성 임계값(이는 예를 들어, 소프트웨어에 의해, 프로세서에 의해 선택되거나, 설정되거나 구성된 값 등임)보다 큰 희소성을 갖는지 여부를 결정한다. 즉, 데이터가 이미 가장 느린 속도(즉, 가장 긴/하이버네이션 모드 모니터링 기간)로 모니터링되고 있고 적은 양만큼만 변경되는 희소성을 갖는지를 결정한다. 그렇다면, 희소성 모니터는 "하이버네이션 준비 유효 카운트"를 증가시킨다. 희소성 모니터는 또한 중간 데이터에 대해 모니터링이 "빠른" 종료가 이루어진 경우(즉, 중간 데이터 모니터링이 희소성이 낮아 모니터링 간격의 종료 전에 종료되는 경우)와 같이, 중간 데이터가 유효하지 않은 것으로 표시되는 경우 "하이버네이션 준비 무효" 카운트를 증가시킨다. 모든 중간 데이터가 하이버네이션을 위해 준비되면, 즉 하이버네이션 준비 유효 카운트와 하이버네이션 준비 무효 카운트의 합이 모니터링된 중간 데이터의 수와 같으면, 희소성 모니터는 하이버네이션 모드(604)로 전환된다. 그러나, 초기 상태, 즉 모든 중간 데이터가 유효하지 않은 것으로 표시되는 경우, 하이버네이션 모드(604) 로의 전환을 유발하지 않을 수 있다는 점에 유의하자.
도 8의 예에 계속하여, 하이버네이션 모드(604)로부터, 충분한 중간 데이터가 획득된 후, 중간 데이터가 불안정한 희소성을 갖는 것으로 결정될 때, 희소성 모니터는 활성 모드(602)로 전환된다. 액티브 모드(602)로의 전환의 일부는 모니터링 기간을 하이버네이션 모드 모니터링 기간보다 짧은 활성 모드 초기 값으로 줄이며, 하이버네이션 모드 모니터링 기간의 작은 부분일 수 있다.
희소성을 모니터링하기 위한 프로세스들
도 9는 일부 실시예들에 따른 신경망에 대한 훈련 프로세스의 훈련 반복 동안 중간 데이터에서 희소성을 모니터링하는 프로세스를 예시하는 흐름도를 나타낸다. 도 9에 도시 된 동작들은 일부 실시예들에 의해 수행되는 동작들의 일반적인 예로서 제시된다는 점에 유의한다. 다른 실시예들에 의해 수행되는 동작들은 상이한 동작들, 상이한 순서로 수행되는 동작들 및/또는 상이한 엔티티들 또는 기능 블록들에 의해 수행되는 동작들을 포함한다.
도 9에서, 희소성은 훈련 프로세스 동안 신경망의 "적어도 일부"의 중간 노드들에 대해 모니터링된다. 중간 노드들의 특정한 "적어도 일부"는 겨우 하나의 중간 노드 및 무려 중간 노드들 모두를 포함할 수 있다. 일부 실시예들에서, 모니터링되는 특정한 중간 노드들은 관리자로부터의 명령들에 응답하고, 프로세서(예를 들어, 프로세서(202))로부터 요청들을 수신하고, 펌웨어를 실행하는 등과 같이, 희소성 모니터(예를 들어, 희소성 모니터(206))에 의해 설정된다. 일반적으로, 설명된 실시예들에서, 희소성 모니터는 개별 중간 노드들 및/또는 이들의 그룹들에 대한 희소성을 모니터링할 수 있다.
도 9의 동작들은 희소성 모니터가 모니터링 기간의 모니터링 간격 동안, 모니터링 간격 동안 발생하는 훈련 반복 동안 신경망의 적어도 일부의 중간 노드들에 의해 출력된 중간 데이터를 획득할 때 시작된다(단계 900). 상기에 설명된 바와 같이, 중간 데이터는 훈련 데이터의 인스턴스를 처리하는 동안, 즉 훈련 반복 동안 신경망의 중간(또는 "숨겨진") 노드들에 의해 출력되는 결과들이다. 중간 데이터가 획득되는 방법은 중간 데이터를 생성하는 프로세서의 배열에 따라 달라진다. 예를 들어, 일부 실시예들에서, 중간 데이터는 프로세서로부터 희소성 모니터에 의해 수신됨으로써 (예를 들어, 하나 이상의 메시지들 또는 통신들에서) 획득된다. 다른 예로서, 일부 실시예들에서, 중간 데이터는 메모리(예를 들어, 메모리(204))로부터 희소성 모니터에 의해 검색됨으로써 획득된다.
그런 다음, 희소성 모니터는, 중간 데이터에 적어도 부분적으로 기초하여, 중간 데이터에 대한 희소 특성들을 나타내는 하나 이상의 값들을 생성한다(단계 902). 예를 들어, 희소성 모니터는 중간 데이터를 사용하여 희소 특성들을 나타내는 값으로서 제로 생성 중간 노드들의 수 또는 백분율을 생성할 수 있다. 다른 예로서, 희소성 모니터는 중간 데이터를 사용하여 희소 특성들을 나타내는 값으로 제로 블록 비율 또는 다른 패턴 식별자를 생성할 수 있다. 다른 예로서, 희소성 모니터는 중간 노드들 중 적어도 일부로부터의 과거/이력 중간 데이터와 함께 중간 데이터를 사용하여 희소 특성들을 나타내는 값으로서 평균, 경향 및/또는 다른 값들을 생성할 수 있다. 일반적으로, 이 동작을 위해, 희소성 모니터는 하나 이상의 모니터링 간격의 한 번 이상의 훈련 반복에 걸쳐 적어도 일부의 중간 노드들에 대한 중간 데이터의 희소성을 평가하기 위해 프로세서 및/또는 다른 엔티티들에 의해 사용될 수 있는 값들을 생성한다.
그런 다음, 희소성 모니터는 희소 특성들을 나타내는 하나 이상의 값들을 프로세서로 전송한다(단계 904). 예를 들어, 희소성 모니터는 희소 특성들을 나타내는 값들을 포함하는 하나 이상의 메시지들을 생성하고 프로세서에 전달할 수 있다. 다른 예로서, 희소성 모니터는 희소 특성들을 나타내는 하나 이상의 값들을 프로세서와 공유되는 메모리의 위치에 저장할 수 있다.
그런 다음, 프로세서는 희소 특성들을 나타내는 하나 이상의 값들에 기초하여 후속 훈련 반복을 실행하는 하나 이상의 양상들을 제어한다(단계 906). 예를 들어, 프로세서는 희소 특성들을 나타내는 하나 이상의 값들을 사용하여 후속 훈련 반복에 사용될 특정 행렬 수학 연산과 같은 계산 메커니즘들을 선택할 수 있다. 예를 들어, 프로세서는 희소 특성들을 나타내는 값들이 희소성이 상대적으로 높다는 것을 나타낼 때(즉, 더 많은 수의 중간 노드들이 0들 또는 다른 값들을 생성할 때) 중간 데이터를 계산하기 위해 블록-희소 행렬 곱셈을 사용하도록 선택할 수 있다. 다른 예로서, 프로세서는 희소 특성들을 나타내는 하나 이상의 값들을 사용하여 중간 데이터가 후속 트레이닝 반복을 위해 메모리(예를 들어, 메모리(204))에 저장되기 전에 중간 데이터에 사용될 데이터 압축을 선택할 수 있다.
활성 모드 및 하이버네이션 모드를 사용하기 위한 프로세스
도 10a 내지 10b는 일부 실시예들에 따른 희소성 모니터(예를 들어, 희소성 모니터(206))에서 활성 모드 및 하이버네이션 모드를 사용하기 위한 프로세스를 예시하는 흐름도들을 나타낸다. 도 10a 내지 10b에 도시된 동작들은 일부 실시예들에 의해 수행되는 동작들의 일반적인 예로서 제시된다는 점에 유의한다. 다른 실시예들에 의해 수행되는 동작들은 상이한 동작들, 상이한 순서로 수행되는 동작들 및/또는 상이한 엔티티들 또는 기능 블록들에 의해 수행되는 동작들을 포함한다.
도 10a 내지 10b의 동작을 위해, 희소성 모니터는 필수 사항은 아니지만 활성 모드에서 시작하는 것으로 가정한다. 일부 실시예들에서, 희소성 모니터는 하이버네이션 모드에서 시작된다. 상기에 설명된 바와 같이, 도 10a 내지 10b에 도시된 바와 같이, 활성 모드에서, 희소성 모니터는 개별 중간 노드들 및/또는 이들의 그룹들에 대한 모니터링 기간의 길이를 변경할 수 있다. 그러나, 하이버네이션 모드에서, 모든 중간 노드들에 대해 동일한 고정된 모니터링 기간이 사용된다.
도 10a 내지 10b의 동작들은 활성 모드에서 동작하는 희소성 모니터가 모니터링 간격 동안 한 번 이상의 훈련 반복으로부터 중간 데이터를 획득할 때 시작된다(단계 1000). 이 동작을 위해, 희소성 모니터는, 메모리(예를 들어, 메모리(204))로부터, 프로세서(예를 들어, 프로세서(202))로부터 또는 기타 소스로부터, 신경망을 통해 하나 이상의 해당 훈련 데이터 인스턴스들을 처리할 때 프로세서에 의해 생성된 중간 데이터를 획득한다.
그런 다음, 희소성 모니터는 희소성 모니터가 활성 모드에서 하이버네이션 모드로 전환될 수 있는지 여부를 결정하며, 이는 모든 중간 노드들이 하이버네이션 모니터링 모드 모니터링 기간과 동일한 모니터링 기간 또는 가장 긴 허용된 모니터링 기간을 사용하여 모니터링되고 있는지 여부를 결정하는 것을 포함하며, 희소성은 안정적이며 (이에 따라 안정적 상태로 유지된다)(단계 1002). 예를 들어, 희소성 모니터는 모니터링 간격에서 모니터링 간격까지(또는 지정된 훈련 반복에서 다른 훈련 반복으로) 중간 데이터의 각 부분의 희소성 변경을 임계값과 비교하여 희소성이 지정된 양보다 적게 변경되었는지 - 이에 따라 안정적인지를 결정할 수 있다. 모든 중간 노드들이 하이버네이션 모드 모니터링 기간과 동일한 모니터링 기간을 사용하여 모니터링되고 희소성이 충분히 안정적인 경우(단계 1002), 희소성 모니터는 하이버네이션 모드로 전환된다(단계 1004).
그렇지 않으면, 적어도 일부 중간 노드들이 하이버네이션 모드 모니터링 기간과 동일한 모니터링 기간을 사용하여 모니터링되지 않거나 희소성이 충분히 안정적이지 않은 경우(단계 1002), 희소성 모니터는 모니터링 기간이 각 중간 노드에 대해 증가(또는 가능하면 감소)어야 하는지를 결정한다. 보다 구체적으로, 차례로 각 중간 노드에 대해(단계 1006), 희소성 모니터는 해당 중간 노드에 대한 희소성이 해당 중간 노드에 대한 모니터링 기간을 증가시킬만큼 충분히 안정적인지 여부를 결정한다(단계 1008). 예를 들어, 희소성 모니터는 해당 중간 노드의 희소성을 나타내는 현재 값과 해당 중간 노드의 희소성을 나타내는 이력/과거 값 사이의 차이를 차이 임계값과 비교할 수 있다. 희소성이 충분히 안정적인 경우, 희소성 모니터는 해당 중간 노드에 대한 모니터링 기간의 길이를 증가시킨다(단계 1010). 예를 들어, 희소성 모니터는 모니터링 기간을 두 배로 늘리거나 모니터링 기간에 지정된 양(의 시간, 훈련 반복 등)을 추가할 수 있다. 모니터링 기간을 증가시키면, 희소성 모니터는 하이버네이션 모드 모니터링 기간까지 모니터링 기간을 증가시킨다. 예를 들어, 모니터링 기간에 대한 활성 모드 초기 값은 하이버네이션 모드 모니터링 기간의 길이의 1/8일 수 있으며, 따라서 모니터링 기간은 증가할 때마다(예를 들어, 해당 모니터링 간격 동안) 두 배로 증가하면, 중간 노드에 대한 모니터링 기간이 하이버네이션 모드 모니터링 기간에 도달하기 전에 세 번의 개별 증가가 허용된다. 이에 반해, 희소성이 충분히 안정적이지 않은 경우(단계 1008), 희소성 모니터는 모니터링 기간을 변경하지 않은 채 두고 (또는 모니터링 기간이 더 이상 활성 모드 초기 값보다 더 오래 유지되지 않는 한 모니터링 기간을 감소시킬 수 있음) 단계 1006으로 돌아가서 다음 중간 노드가 처리될 수 있다. 최종 중간 노드가 처리되면(단계 1006), 희소성 모니터는 다음 훈련 반복으로부터 중간 데이터를 획득하기 위해 단계 1000으로 돌아간다.
단계 1002로 돌아가서, 모든 중간 노드들이 하이버네이션 모드 모니터링 기간과 동일한 모니터링 기간을 사용하여 모니터링되고 희소성이 충분히 안정적인 경우, 희소성 모니터는 하이버네이션 모드로 전환된다(단계 1004). 하이버네이션 모드에서, 모든 중간 노드들에 대한 희소성은 하이버네이션 모드 모니터링 기간을 사용하여 모니터링된다는 점을 상기한다. 하이버네이션 모드에서, 희소성 모니터는 모니터링 간격 동안 한 번 이상의 훈련 반복으로부터 중간 데이터를 획득한다(단계 1012). 이 동작을 위해, 희소성 모니터는, 메모리(예를 들어, 메모리(204))로부터, 프로세서(예를 들어, 프로세서(202))로부터 또는 기타 소스로부터, 신경망을 통해 하나 이상의 해당 훈련 데이터 인스턴스들을 처리할 때 프로세서에 의해 생성된 중간 데이터를 획득한다. 단계 1012의 모니터링 간격은 단계 1000의 모니터링 간격과 서로 다른/이후의 모니터링 간격이다.
그런 다음, 희소성 모니터는 희소성 모니터가 하이버네이션 모드에서 활성 모드로 전환될 수 있는지 여부를 결정하며, 이는 희소성이 충분히 불안정한지 여부를 결정하는 것을 포함한다(단계 1014). 예를 들어, 희소성 모니터는 모니터링 간격에서 모니터링 간격까지(또는 지정된 훈련 반복에서 다른 훈련 반복으로) 중간 데이터의 각 부분의 희소성 변경을 임계값과 비교하여 희소성이 지정된 양보다 많이 변경되었는지 - 이에 따라 불안정적인지를 결정할 수 있다. 희소성이 충분히 불안정적인 경우(단계 1014), 희소성 모니터는 활성 모드(단계 1016)로 전환되며, 이는 단계 1000으로 돌아가 활성 모드에서 다음 훈련 반복으로부터 중간 데이터를 획득하는 것을 포함한다. 그렇지 않으면 희소성이 안정적으로 유지되는 경우, 희소성 모니터는 단계 1012로 돌아가서 하이버네이션 모드에서 다음 훈련 반복으로부터 중간 데이터를 획득한다.
모니터링 간격의 빠른 종료
도 11은 일부 실시예들에 따른 희소성 모니터에 의해 모니터링 간격의 빠른 종료를 위한 프로세스를 예시하는 흐름도를 나타낸다. 도 11에 도시된 동작들은 일부 실시예들에 의해 수행되는 동작들의 일반적인 예로서 제시된다는 점에 유의한다. 다른 실시예들에 의해 수행되는 동작들은 상이한 동작들, 상이한 순서로 수행되는 동작들 및/또는 상이한 엔티티들 또는 기능 블록들에 의해 수행되는 동작들을 포함한다.
도 11에 도시된 프로세스는 희소성 모니터(예를 들어, 희소성 모니터(206))가 여러 번의 훈련 반복을 포함하는 모니터링 간격 동안, 여러 번의 훈련 반복의 초기 훈련 반복으로부터 중간 데이터를 획득할 때 시작된다(단계 1100). 예를 들어, 희소성 모니터는 (모니터링 기간 동안 발생하는 수많은 훈련 반복 중에서) 첫 번째 훈련 반복으로부터만 또는 처음 몇 번의 훈련 반복으로부터만 중간 데이터를 획득할 수 있다. 중간 데이터를 획득하는 것은 본원의 다른 부분에 설명되어 있다.
그런 다음, 희소성 모니터는 중간 데이터가 희소성 임계값 미만인지 여부를 결정한다(단계 1102). 예를 들어, 희소성 모니터는 0을 중간 데이터로 출력하는 중간 노드의 수를 카운트하고 0과 동일한 중간 데이터의 백분율 또는 비율을 계산할 수 있다. 그런 다음, 희소성 모니터는 이 백분율 또는 비율을 지정된 희소성 임계값과 비교할 수 있다.
중간 데이터가 희소성 임계값 미만인 경우(단계 1102), 즉 몇 개의 0들(또는 다른 값)만 있어서, 중간 데이터의 희소성이 임계값 미만인 경우(즉, 데이터가 상대적으로 꽉 찬 경우), 희소성 모니터는 모니터링 간격 동안 중간 데이터의 획득 및 처리의 빠른 종료가 이루어지게 한다. 보다 구체적으로, 희소성 모니터는 모니터링 간격 동안 조기에 희소성 모니터링을 종료하고, 이에 따라 초기 훈련 반복 이후의 훈련 반복에 대한 중간 데이터를 획득하지 않는다(단계 1104). 모니터링 간격 동안 이러한 방식으로 모니터링을 종료함으로써, 희소성 모니터는 - 중간 데이터의 희소성이 낮을 때 (그리고 전형적인/전체 계산 및 데이터 저장 기술들이 프로세서(202)에 의해 사용될 때) - 중간 데이터를 획득하고 처리하는 것 - 및 이에 따른 전력 소모, 계산 리소스와 통신 시스템 대역폭 등의 사용 -을 방지한다. 희소성 모니터는 또한 중간 데이터에 대해 모니터링 간격이 조기에 종료되었다는 표시를 저장한다(단계 1106). 예를 들어, 희소성 모니터는 중간 데이터를 유효하지 않은 것으로 표시하여 전형적인 획득 및 처리가 수행되지 않았음을 나타낼 수 있다.
중간 데이터가 희소성 임계값보다 높고(단계 1102), 따라서 데이터가 상대적으로 더 희소하거나/더 많은 0들(또는 다른 값)을 가질 때, 희소성 모니터는 모니터링 간격 동안 모니터링을 계속하며, 상기 계속하는 것은 초기 훈련 반복 이후 훈련 반복으로부터 중간 데이터를 획득하는 것을 포함한다(단계 1108). 다시 말해, 이 경우, 희소성 모니터는 전형적인 또는 통상의 희소성 모니터링을 계속하며 - 모니터링 간격의 빠른 종료를 사용하지 않는다.
일부 실시예들에서, 전자 장치(예를 들어, 전자 장치(200) 및/또는 그 일부 부분)는 본원에 설명된 동작들의 일부 또는 전부를 수행하기 위해 비일시적 컴퓨터 판독 가능 저장 매체에 저장된 코드 및/또는 데이터를 사용한다. 보다 구체적으로, 전자 장치는 컴퓨터 판독 가능 저장 매체로부터 코드 및/또는 데이터를 판독하고 코드를 실행하고/하거나 설명된 동작들을 수행 시 데이터를 사용한다. 컴퓨터 판독 가능 저장 매체는 전자 장치에 의해 사용하기 위한 코드 및/또는 데이터를 저장하는 임의의 장치, 매체 또는 이들의 조합일 수 있다. 예를 들어, 컴퓨터 판독 가능 저장 매체는, 이에 제한되는 것은 아니나, 플래시 메모리, 랜덤 액세스 메모리(예를 들어, eDRAM, RAM, SRAM, DRAM, DDR4 SDRAM 등), 읽기 전용 메모리(ROM) 및/또는 자기 또는 광학 저장 매체들(예를 들어, 디스크 드라이브들, 자기 테이프, CD들, DVD들 등)을 포함할 수 있다.
일부 실시예들에서, 하나 이상의 하드웨어 모듈들은 본원에 설명된 동작들을 수행한다. 예를 들어, 하드웨어 모듈들은, 이에 제한되는 것은 아닌, 하나 이상의 프로세서들/코어들/중앙 처리 장치들(CPU들), 주문형 반도체(ASIC) 칩, 신경망 프로세서들 또는 가속기들, 필드 프로그램 가능 게이트 어레이들(FPGA들), 컴퓨팅 장치들, 임베디드 프로세서들, 그래픽 프로세서들(GPU들)/그래픽 코어들, 파이프라인들, 가속 처리 장치들(APU들), 희소성 모니터들, 기능 블록들 및/또는 기타 프로그래밍 가능 논리 장치들을 포함할 수 있다. 이러한 하드웨어 모듈들이 활성화되면, 하드웨어 모듈은 동작들 중 일부 또는 전부를 수행한다. 일부 실시예들에서, 하드웨어 모듈들은 동작들을 수행하기 위해 인스트럭션들(프로그램 코드, 펌웨어 등)을 실행하여 구성되는 하나 이상의 범용 회로들을 포함한다.
일부 실시예들에서, 본원에 설명된 구조들 및 메커니즘들의 일부 또는 전부를 나타내는 데이터 구조(예를 들어, 전자 장치(200), 희소성 모니터(206) 및/또는 그의 일부)는 데이터베이스 또는 구조들 및 메커니즘들을 포함한 하드웨어를 제작하기 위해, 전자 장치에 의해 판독되고 직접 또는 간접적으로 사용될 수 있는 기타 데이터 구조를 포함하는 비일시적 컴퓨터 판독 가능 저장 매체에 저장된다. 예를 들어, 데이터 구조는 베릴로그 또는 VHDL과 같은 고급 설계 언어(HDL)의 하드웨어 기능에 대한 동작 레벨 설명 또는 레지스터 트랜스퍼 수준(RTL) 설명일 수 있다. 설명은 상기에 설명된 구조들 및 메커니즘들을 포함하는 하드웨어의 기능을 나타내는 합성 라이브러리로부터 게이트들/회로 요소들의 리스트를 포함하는 넷리스트를 생성하도록 설명을 합성할 수 있는 합성 도구에 의해 판독될 수 있다. 그런 다음, 넷리스트는 마스크들에 적용될 기하학적 모양들을 설명하는 데이터 세트를 생성하기 위해 배치 및 라우팅될 수 있다. 그런 다음, 마스크들은 상기에 설명된 구조들 및 메커니즘들에 대응하는 반도체 회로 또는 회로들(예를 들어, 집적 회로들)를 생성하도록 다양한 반도체 제조 단계들에서 사용될 수 있다. 대안으로, 컴퓨터 액세스 가능 저장 매체의 데이터베이스는 원하는 바와 같은 넷리스트(합성 라이브러리 여부에 상관없이) 또는 데이터 세트, 또는 그래픽 데이터 시스템(GDS) II 데이터일 수 있다.
이 설명에서, 변수들 또는 지정되지 않은 값들(즉, 값들의 특정 인스턴스들이 없는 값들의 일반적인 설명)은 N과 같은 문자로 표현된다. 본원에 사용된 바와 같이, 이 설명의 다른 위치들에서 유사한 문자들을 사용할 수 있음에도 불구하고, 각 경우의 변수들 및 지정되지 않은 값들이 반드시 동일하지는 않다. 즉, 일반적인 변수들 및 지정되지 않은 값들의 일부 또는 전부에 대해 의도된 서로 다른 가변량 및 값들이 있을 수 있다. 즉, 이 설명에서 변수들 및 지정되지 않은 값들을 나타내는 데 사용되는 N 및 기타 문자들은 반드시 서로 관련이 있는 것은 아니다.
본원에 사용된 바와 같이 "기타 등등" 또는 "등"이라는 표현은 및/또는의 경우, 즉 상기 등이 연관되는 리스트의 요소들 중 "적어도 하나"의 등가물을 제시하도록 의도된다. 예를 들어, "전자 장치가 제1 동작, 제2 동작 등을 수행한다"라는 문구에서, 전자 장치는 제1 동작, 제2 동작 및 기타 동작들 중 적어도 하나를 수행한다. 추가로, 등과 연관된 리스트의 요소들은 단지 한 세트의 예들 중 하나의 예일뿐이며 - 예들 중 적어도 일부는 일부 실시예들에서 나타나지 않을 수 있다.
실시예들에 대한 상술한 설명들은 예시 및 설명을 위한 목적으로만 제시되었다. 이들은 개시된 형태들로만 실시예들을 철저하게 만들거나 제한하려는 것은 아니다. 따라서, 많은 수정들 및 변형들이 당업자들에게 명백할 것이다. 추가로, 상기 개시는 실시예들을 제한하려는 것은 아니다. 실시예들의 범위는 첨부된 청구 범위에 의해 정의된다.

Claims (23)

  1. 전자 장치에 있어서,
    신경망에 대한 훈련 프로세스 동안 훈련 반복을 실행하도록 구성된 프로세서로서, 각 훈련 반복은 상기 신경망을 통해 훈련 데이터의 개별 인스턴스를 처리하는 것을 포함하는, 상기 프로세서; 및
    희소성 모니터로서,
    하나 이상의 모니터링 기간들 각각의 모니터링 간격 동안, 각 모니터링 간격 동안 발생하는 훈련 반복 동안 상기 신경망의 적어도 일부 중간 노드들에 의해 출력된 중간 데이터를 획득하고;
    상기 중간 데이터에 적어도 부분적으로 기초하여, 상기 중간 데이터에 대한 희소 특성들을 나타내는 하나 이상의 값들을 생성하고;
    상기 프로세서로, 상기 희소 특성들을 나타내는 상기 하나 이상의 값들을 전송하도록 구성되되, 상기 프로세서는 상기 희소 특성들을 나타내는 상기 하나 이상의 값들에 적어도 부분적으로 기초하여 후속 훈련 반복을 실행하는 하나 이상의 양상들을 제어하도록 구성되는, 상기 희소성 모니터를 포함하는, 전자 장치.
  2. 제1항에 있어서, 상기 희소성 모니터는,
    활성 모드에서, 상기 희소성 모니터가,
    상기 중간 노드들 중 상기 적어도 일부의 각 중간 노드에 대해, 둘 이상의 모니터링 간격으로부터 상기 희소 특성들을 나타내는 상기 하나 이상의 값들에 기초하여, 상기 희소 특성들을 상기 둘 이상의 모니터링 간격 간 활성 모드 임계량 이상으로 변경했는지 여부를 결정하고;
    상기 희소 특성들을 상기 임계량 이상으로 변경하지 않고, 이에 따라 상기 희소성이 안정적인 경우, 해당 중간 노드에 대한 후속 모니터링 기간에 대한 상기 모니터링 기간의 길이를 증가시키되, 상기 모니터링 기간의 길이는 하이버네이션 모드 모니터링 기간의 길이의 최대값까지 증가되는 동안,
    동작하도록 더 구성되는, 전자 장치.
  3. 제2항에 있어서, 상기 희소 특성들을 중간 노드에 대한 상기 임계량 이상으로 변경했고, 이에 따라 상기 희소성이 불안정적인 경우, 상기 모니터링 기간의 현재 길이를 유지하거나 해당 중간 노드에 대한 후속 모니터링 기간에 대한 상기 모니터링 기간의 길이를 감소시키고, 상기 모니터링 기간의 길이는 활성 모드 초기 값의 최대값까지 감소되는, 전자 장치.
  4. 제2항에 있어서, 후속 모니터링 기간에 대한 상기 모니터링 기간의 길이를 증가시키는 것은 서로 다른 중간 노드들이 상기 활성 모드에서 서로 다른 모니터링 기간을 가질 수 있도록 상기 신경망의 개별 중간 노드들에 대한 상기 모니터링 기간의 길이를 개별적으로 증가시키는 것을 포함하는, 전자 장치.
  5. 제2항에 있어서, 상기 활성 모드에서 동작하는 동안, 상기 희소성 모니터는,
    상기 모니터링 기간의 길이가 상기 중간 노드들 중 상기 적어도 일부 모두에 대한 상기 하이버네이션 모드 모니터링 기간의 길이로 증가되고,
    상기 중간 노드들 중 상기 적어도 일부 각각에 의해 출력된 상기 중간 데이터가 중간 데이터 희소성 임계값 미만일 때,
    상기 희소성 모니터를 하이버네이션 모드로 전환하도록 더 구성되며,
    상기 희소성 모니터는 상기 모니터링 기간의 길이를 상기 하이버네이션 모드에 있는 모든 중간 노드들에 대한 상기 하이버네이션 모드 모니터링 기간의 길이로 변경되지 않은 채로 두는, 전자 장치.
  6. 제5항에 있어서, 상기 희소성 모니터는,
    상기 하이버네이션 모드에서 동작하는 동안,
    상기 중간 노드들 중 상기 적어도 일부의 각 중간 노드에 대해, 둘 이상의 모니터링 간격으로부터 상기 희소 특성들을 나타내는 상기 하나 이상의 값들에 기초하여, 상기 희소 특성들을 상기 둘 이상의 모니터링 간격 간 상기 활성 모드 임계량 이상으로 변경했는지 여부를 결정하고;
    상기 희소 특성들을 지정된 수의 중간 노드들에 대한 상기 임계량 이상으로 변경했고, 이에 따라 상기 희소성이 불안정적인 경우, 상기 희소성 모니터를 상기 활성 모드로 전환하되, 상기 전환하는 것은 상기 모니터링 기간의 길이를 상기 하이버네이션 모드 모니터링 기간보다 짧은 활성 모드 초기 값으로 감소시키는 것을 포함하도록 더 구성되는, 전자 장치.
  7. 제1항에 있어서, 상기 희소성 모니터는,
    상기 중간 노드들 중 상기 적어도 일부의 중간 노드에 대해, 상기 희소 특성들을 나타내는 상기 값들 중 하나 이상이 희소성 임계값 미만이고 이에 따라 상기 데이터가 희소하지 않을 경우, 해당 중간 노드에 대한 현재 모니터링 간격을 조기에 종료하고, 이에 의해 상기 현재 모니터링 간격 동안 발생하는 상기 훈련 반복의 적어도 일부 동안 해당 중간 노드에 의해 출력된 상기 중간 데이터를 획득하지 않는, 전자 장치.
  8. 제1항에 있어서, 상기 중간 데이터에 대한 희소 특성들을 나타내는 상기 하나 이상의 값들을 생성하는 것은 하나 이상의 모니터링 간격 동안 발생하는 두 번 이상의 훈련 반복으로부터 획득된 중간 데이터를 평균내는 것을 포함하는, 전자 장치.
  9. 제1항에 있어서, 후속 훈련 반복을 실행하는 상기 하나 이상의 양상들을 제어하는 것은,
    상기 희소 특성들을 나타내는 상기 하나 이상의 값들이 높은 희소성을 나타낼 경우, 중간 데이터를 포함하는 동작들에 대한 단순화된 계산들을 사용하도록 상기 후속 훈련 반복을 구성하는 것을 포함하는, 전자 장치.
  10. 제1항에 있어서, 후속 훈련 반복을 실행하는 상기 하나 이상의 양상들을 제어하는 것은,
    상기 희소 특성들을 나타내는 상기 하나 이상의 값들이 높은 희소성을 나타낼 경우, 훈련 반복 동안 메모리에 상기 중간 데이터를 저장하기 위한 감소된 또는 압축된 데이터 포맷들을 사용하도록 상기 프로세스를 구성하는 것을 포함하는, 전자 장치.
  11. 제1항에 있어서, 상기 중간 데이터의 상기 희소 특성들을 나타내는 상기 하나 이상의 값들은 복수의 스테이지들 중에서 선택된 하나 이상의 스테이지들을 포함하며, 상기 복수의 스테이지들의 각 스테이지는 상기 중간 데이터에 대한 가능한 희소성 값들의 범위 중 대응되는 서로 다른 부분을 나타내는, 전자 장치.
  12. 제1항에 있어서, 상기 희소 특성들을 나타내는 상기 하나 이상의 값들은 둘 이상의 훈련 인스턴스들에 대한 상기 중간 데이터의 희소성 경향 또는 패턴을 포함하는, 전자 장치.
  13. 제1항에 있어서, 상기 희소 특성들을 나타내는 상기 하나 이상의 값들은 하나 이상의 훈련 인스턴스들에 대한 상기 중간 데이터에 대한 제로 블록 비율을 포함하는, 전자 장치.
  14. 신경망에 대한 훈련 프로세스 동안 훈련 반복을 실행하도록 구성된 프로세서로서, 각 훈련 반복은 상기 신경망을 통해 훈련 데이터의 개별 인스턴스를 처리하는 것을 포함하는, 상기 프로세서 및 희소성 모니터를 포함하는 전자 장치에서 중간 데이터의 희소성에 대한 모니터링 방법에 있어서, 상기 방법은,
    상기 희소성 모니터에 의해, 하나 이상의 모니터링 기간들 각각의 모니터링 간격 동안, 각 모니터링 간격 동안 발생하는 훈련 반복 동안 상기 신경망의 적어도 일부 중간 노드들에 의해 출력된 중간 데이터를 획득하는 단계;
    상기 희소성 모니터에 의해, 상기 중간 데이터에 적어도 부분적으로 기초하여, 상기 중간 데이터에 대한 희소 특성들을 나타내는 하나 이상의 값들을 생성하는 단계; 및
    상기 희소성 모니터에 의해, 상기 프로세서로, 상기 희소 특성들을 나타내는 상기 하나 이상의 값들을 전송하는 단계로서, 상기 프로세서는 상기 희소 특성들을 나타내는 상기 하나 이상의 값들에 적어도 부분적으로 기초하여 후속 훈련 반복을 실행하는 하나 이상의 양상들을 제어하도록 구성되는, 상기 전송하는 단계를 포함하는, 방법.
  15. 제14항에 있어서, 상기 희소성 모니터에 의해,
    활성 모드에서, 상기 희소성 모니터가,
    상기 중간 노드들 중 상기 적어도 일부의 각 중간 노드에 대해, 둘 이상의 모니터링 간격으로부터 상기 희소 특성들을 나타내는 상기 하나 이상의 값들에 기초하여, 상기 희소 특성들을 상기 둘 이상의 모니터링 간격 간 활성 모드 임계량 이상으로 변경했는지 여부를 결정하고;
    상기 희소 특성들을 상기 임계량 이상으로 변경하지 않고, 이에 따라 상기 희소성이 안정적인 경우, 해당 중간 노드에 대한 후속 모니터링 기간에 대한 상기 모니터링 기간의 길이를 증가시키되, 상기 모니터링 기간의 길이는 하이버네이션 모드 모니터링 기간의 길이의 최대값까지 증가되는 동안,
    동작하는 단계를 더 포함하는, 방법.
  16. 제15항에 있어서, 후속 모니터링 기간에 대한 상기 모니터링 기간의 길이를 증가시키는 단계는 서로 다른 중간 노드들이 상기 활성 모드에서 서로 다른 모니터링 기간을 가질 수 있도록, 상기 신경망의 개별 중간 노드들에 대한 상기 모니터링 기간의 길이를 개별적으로 증가시키는 단계를 포함하는, 방법.
  17. 제15항에 있어서, 상기 희소성 모니터에 의해,
    상기 활성 모드에서 동작하는 동안,
    상기 모니터링 기간의 길이가 상기 중간 노드들 중 상기 적어도 일부 모두에 대한 상기 하이버네이션 모드 모니터링 기간의 길이로 증가되고,
    상기 중간 노드들 중 상기 적어도 일부 각각에 의해 출력된 상기 중간 데이터가 중간 데이터 희소성 임계값 미만일 때,
    상기 희소성 모니터를 하이버네이션 모드로 전환하는 단계를 더 포함하며,
    상기 희소성 모니터는 상기 모니터링 기간의 길이를 모든 중간 노드들에 대한 상기 하이버네이션 모드 모니터링 기간의 길이로 변경되지 않은 채로 두는, 방법.
  18. 제17항에 있어서, 상기 희소성 모니터에 의해,
    상기 하이버네이션 모드에서 동작하는 동안,
    상기 중간 노드들 중 상기 적어도 일부의 각 중간 노드에 대해, 둘 이상의 모니터링 간격으로부터 상기 희소 특성들을 나타내는 상기 하나 이상의 값들에 기초하여, 상기 희소 특성들을 상기 둘 이상의 모니터링 간격 간 상기 활성 모드 임계량 이상으로 변경했는지 여부를 결정하는 단계; 및
    상기 희소 특성들을 지정된 수의 중간 노드들에 대한 상기 임계량 이상으로 변경했고, 이에 따라 상기 희소성이 불안정적인 경우, 상기 희소성 모니터를 상기 활성 모드로 전환하는 단계로서, 상기 전환하는 단계는 상기 모니터링 기간의 길이를 상기 하이버네이션 모드 모니터링 기간보다 짧은 활성 모드 초기 값으로 감소시키는 단계를 포함하는, 상기 전환하는 단계를 포함하는, 방법.
  19. 제14항에 있어서, 상기 희소성 모니터에 의해,
    상기 중간 노드들 중 상기 적어도 일부의 중간 노드에 대해, 상기 희소 특성들을 나타내는 상기 값들 중 하나 이상이 희소성 임계값 미만이고 이에 따라 상기 데이터가 희소하지 않을 경우, 해당 중간 노드에 대한 현재 모니터링 간격을 조기에 종료하고, 이에 의해 상기 현재 모니터링 간격 동안 발생하는 상기 훈련 반복의 적어도 일부 동안 해당 중간 노드에 의해 출력된 상기 중간 데이터를 획득하지 않는 단계를 더 포함하는, 방법.
  20. 제14항에 있어서, 상기 중간 데이터에 대한 희소 특성들을 나타내는 상기 하나 이상의 값들을 생성하는 단계는 하나 이상의 모니터링 간격 동안 발생하는 두 번 이상의 훈련 반복으로부터 획득된 중간 데이터를 평균내는 단계를 포함하는, 방법.
  21. 제14항에 있어서, 후속 훈련 반복을 실행하는 상기 하나 이상의 양상들을 제어하는 단계는,
    상기 희소 특성들을 나타내는 상기 하나 이상의 값들이 높은 희소성을 나타낼 경우, 중간 데이터를 포함하는 동작들에 대한 단순화된 계산들을 사용하도록 상기 후속 훈련 반복을 구성하는 단계를 포함하는, 방법.
  22. 제14항에 있어서, 후속 훈련 반복을 실행하는 상기 하나 이상의 양상들을 제어하는 단계는,
    상기 희소 특성들을 나타내는 상기 하나 이상의 값들이 높은 희소성을 나타낼 경우, 훈련 반복 동안 메모리에 상기 중간 데이터를 저장하기 위한 감소된 또는 압축된 데이터 포맷들을 사용하도록 상기 프로세스를 구성하는 단계를 포함하는, 방법.
  23. 제14항에 있어서, 상기 중간 데이터의 상기 희소 특성들을 나타내는 상기 하나 이상의 값들은 복수의 스테이지들 중에서 선택된 하나 이상의 스테이지들을 포함하며, 상기 복수의 스테이지들의 각 스테이지는 상기 중간 데이터에 대한 가능한 희소성 값들의 범위 중 대응되는 서로 다른 부분을 나타내는, 방법.
KR1020217019514A 2019-04-29 2020-04-29 신경망 네트워크 훈련 동안 데이터 희소성 모니터링 KR20210148072A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/397,283 US11562248B2 (en) 2019-04-29 2019-04-29 Data sparsity monitoring during neural network training
US16/397,283 2019-04-29
PCT/US2020/030359 WO2020223278A1 (en) 2019-04-29 2020-04-29 Data sparsity monitoring during neural network training

Publications (1)

Publication Number Publication Date
KR20210148072A true KR20210148072A (ko) 2021-12-07

Family

ID=72917098

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217019514A KR20210148072A (ko) 2019-04-29 2020-04-29 신경망 네트워크 훈련 동안 데이터 희소성 모니터링

Country Status (6)

Country Link
US (1) US11562248B2 (ko)
EP (1) EP3963515A4 (ko)
JP (2) JP7342128B2 (ko)
KR (1) KR20210148072A (ko)
CN (1) CN113228060A (ko)
WO (1) WO2020223278A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11955167B2 (en) * 2021-01-14 2024-04-09 Northwestern University Computing-in-memory accelerator design with dynamic analog RAM cell and associated low power techniques with sparsity management

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8700552B2 (en) * 2011-11-28 2014-04-15 Microsoft Corporation Exploiting sparseness in training deep neural networks
US9507833B2 (en) * 2012-05-29 2016-11-29 Sas Institute Inc. Systems and methods for quantile determination in a distributed data system
JP6083300B2 (ja) 2013-03-29 2017-02-22 富士通株式会社 プログラム、並列演算方法および情報処理装置
US9728184B2 (en) * 2013-06-18 2017-08-08 Microsoft Technology Licensing, Llc Restructuring deep neural network acoustic models
JP6327926B2 (ja) * 2014-04-30 2018-05-23 国立研究開発法人情報通信研究機構 階層型ニューラルネットワークの学習システム及び方法
US20150324689A1 (en) 2014-05-12 2015-11-12 Qualcomm Incorporated Customized classifier over common features
US10614798B2 (en) * 2016-07-29 2020-04-07 Arizona Board Of Regents On Behalf Of Arizona State University Memory compression in a deep neural network
US11048997B2 (en) * 2016-12-27 2021-06-29 Texas Instruments Incorporated Reduced complexity convolution for convolutional neural networks
US10871964B2 (en) * 2016-12-29 2020-12-22 Qualcomm Incorporated Architecture for sparse neural network acceleration
JP6911949B2 (ja) 2017-07-04 2021-07-28 日本電気株式会社 情報処理装置、制御方法、及びプログラム
CN107688850B (zh) * 2017-08-08 2021-04-13 赛灵思公司 一种深度神经网络压缩方法
US20190081637A1 (en) * 2017-09-08 2019-03-14 Nvidia Corporation Data inspection for compression/decompression configuration and data type determination
US10366322B2 (en) * 2017-10-06 2019-07-30 DeepCube LTD. System and method for compact and efficient sparse neural networks
US10482156B2 (en) * 2017-12-29 2019-11-19 Facebook, Inc. Sparsity-aware hardware accelerators
US11645529B2 (en) * 2018-05-01 2023-05-09 Hewlett Packard Enterprise Development Lp Sparsifying neural network models
US11403528B2 (en) * 2018-05-31 2022-08-02 Kneron (Taiwan) Co., Ltd. Self-tuning incremental model compression solution in deep neural network with guaranteed accuracy performance
US20200226473A1 (en) * 2019-01-15 2020-07-16 BigStream Solutions, Inc. Systems, apparatus, methods, and architectures for heterogeneous precision acceleration of quantized neural networks

Also Published As

Publication number Publication date
US20200342327A1 (en) 2020-10-29
JP2023162348A (ja) 2023-11-08
JP7342128B2 (ja) 2023-09-11
EP3963515A1 (en) 2022-03-09
WO2020223278A1 (en) 2020-11-05
JP2022536567A (ja) 2022-08-18
EP3963515A4 (en) 2023-01-25
US11562248B2 (en) 2023-01-24
CN113228060A (zh) 2021-08-06

Similar Documents

Publication Publication Date Title
US11481637B2 (en) Configuring computational elements for performing a training operation for a generative adversarial network
Salamat et al. F5-hd: Fast flexible fpga-based framework for refreshing hyperdimensional computing
KR20210029785A (ko) 활성화 희소화를 포함하는 신경 네트워크 가속 및 임베딩 압축 시스템 및 방법
US11615265B2 (en) Automatic feature subset selection based on meta-learning
US11275558B2 (en) Sorting instances of input data for processing through a neural network
CN111492381A (zh) 神经网络的功能子网络的同时训练
CN110826708B (zh) 一种用多核处理器实现神经网络模型拆分方法及相关产品
US11880769B2 (en) Using multiple functional blocks for training neural networks
JP7319271B2 (ja) 電子デバイスの活性化関数機能ブロック
US20190310864A1 (en) Selecting a Precision Level for Executing a Workload in an Electronic Device
US20200302283A1 (en) Mixed precision training of an artificial neural network
JP2023162348A (ja) ニューラルネットワークのトレーニング中のデータスパース性の監視
US20220076095A1 (en) Multi-level sparse neural networks with dynamic rerouting
US20190354852A1 (en) Stress indicators associated with instances of input data for training neural networks
Li et al. A power-efficient optimizing framework FPGA accelerator for YOLO
CN117999560A (zh) 机器学习模型的硬件感知渐进训练
Javed et al. ApproxCT: Approximate clustering techniques for energy efficient computer vision in cyber-physical systems
US11392794B2 (en) Amplification of initial training data
Yik et al. Input feature pruning for accelerating GNN inference on heterogeneous platforms
US20210264264A1 (en) Learning device, learning method, learning program, evaluation device, evaluation method, and evaluation program
JP7454888B1 (ja) ハードウェア特性を利用してニューラルネットワークモデルを軽量化する方法及び装置
KR102641629B1 (ko) 설명 가능한 인공지능 기반의 트랜스포머를 활용한 데이터 처리 방법 및 시스템
TWI833209B (zh) 用於神經網路的優化方法、電腦系統及電腦可讀取媒體
US20220108156A1 (en) Hardware architecture for processing data in sparse neural network
JPH02171861A (ja) Cmosゲートアレイ消費電力計算方式