KR20240011778A - 뉴럴 네트워크들에서의 동적 활성화 희소성 - Google Patents

뉴럴 네트워크들에서의 동적 활성화 희소성 Download PDF

Info

Publication number
KR20240011778A
KR20240011778A KR1020237044243A KR20237044243A KR20240011778A KR 20240011778 A KR20240011778 A KR 20240011778A KR 1020237044243 A KR1020237044243 A KR 1020237044243A KR 20237044243 A KR20237044243 A KR 20237044243A KR 20240011778 A KR20240011778 A KR 20240011778A
Authority
KR
South Korea
Prior art keywords
partitions
neural network
outputs
layer
sparsity
Prior art date
Application number
KR1020237044243A
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 KR20240011778A publication Critical patent/KR20240011778A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0495Quantised networks; Sparse networks; Compressed networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/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/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
    • G06N3/065Analogue 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
    • G06N3/048Activation functions

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)
  • Evolutionary Computation (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

뉴럴 네트워크 계층의 출력들에 대한 희소성을 유도하는 방법은 뉴럴 네트워크의 계층으로부터 출력들을 수신하는 단계; 출력들을 복수의 파티션들로 파티셔닝하는 단계; 제로 값들을 갖는 것으로 취급될 수 있는, 복수의 파티션들 내의 제1 파티션들을 식별하는 단계; 복수의 파티션들 내의 나머지 제2 파티션들 사이에서 제1 파티션들의 위치들을 식별하는 인코딩을 생성하는 단계; 및 인코딩 및 제2 파티션들을 뉴럴 네트워크의 후속 계층으로 전송하는 단계를 포함한다.

Description

뉴럴 네트워크들에서의 동적 활성화 희소성
[0001] 본 출원은, 2021년 5월 25일에 출원되고 발명의 명칭이 "DYNAMIC ACTIVATION SPARSITY IN NEURAL NETWORKS"인 미국 정규 출원 번호 제17/330,096호의 이익 및 우선권을 주장하며, 상기 출원의 내용은 그 전체가 모든 목적을 위해 인용에 의해 본원에 포함된다.
[0002] 본 개시내용은 일반적으로 메모리 병목 현상(bottleneck)들을 감소시키기 위해 뉴럴 네트워크 컴퓨테이션들에서 희소성(sparsity)을 유도하는 것을 설명한다. 구체적으로, 본 개시내용은 계층 출력들을 파티셔닝하고 파티션별로(per-partition basis) 희소성을 유도하기 위한 방법들 및 시스템들을 설명한다.
[0003] 뉴럴 네트워크는 일반적으로, 한 세트의 입력 데이터에서 근본적인 관계들을 식별하는 일련의 순차적인 동작들로서 정의될 수 있다. 뉴럴 네트워크들은 인간의 마음이 작동하는 방식들을 모델링하는 방식으로 정보를 프로세싱한다. 따라서, 뉴럴 네트워크들의 중간 스테이지들은 뉴런들로 지칭되는 컴퓨테이셔널(computational) 엘리먼트들을 사용할 수 있다. 뉴런들 사이의 연결들은 생물학적 시스템에서 시냅스들과 같이 동작하여 뉴런 계층들 사이에 중간 컴퓨테이션들을 송신한다. 각각의 뉴런의 출력들은 상이한 시냅스 입력들을 결합하는 상이한 타입들의 함수들을 사용하여 컴퓨팅될 수 있다. 시냅스들은 각각의 뉴런의 입력들에서 가중될 수 있고, 이들 가중치들은 트레이닝 프로세스를 사용하여 설정될 수 있다. 뉴럴 네트워크들은, 가중치들 또는 파라미터들로서 네트워크 그 자체의 데이터 구조 내에 저장되는 입력들과 출력들 사이의 확률-가중 연관(probability-weighted association)들을 형성하기 위해 알려진 결과들로 예시적인 데이터를 프로세싱함으로써 트레이닝된다. 트레이닝은 트레이닝 데이터를 사용하여 지도 학습 환경(supervised learning environment)에서 발생할 수 있거나, 또는 사용 동안 수신된 입력 데이터를 사용하여 트레이닝이 비지도(unsupervised)될 수 있다.
[0004] 컴퓨테이셔널 하드웨어는 뉴럴 네트워크 기능들을 통해 입력 데이터의 프로세싱을 최적화하도록 설계되었다. 예를 들어, 뉴럴 네트워크 컴파일러는 뉴럴 네트워크의 코드-기반 정의를 수신하고, 하드웨어 뉴럴 네트워크 가속기(accelerator) 내의 하나 이상의 컴퓨트 노드(compute node)들에 대한 명령들을 생성할 수 있다. 가속기 상의 컴퓨트 노드들은 뉴럴 네트워크 동작들을 병렬로 효율적으로 프로세싱하는 개별 칩렛들 또는 다른 컴퓨테이셔널 블록들을 포함할 수 있다. 뉴럴 네트워크의 각각의 계층으로부터의 출력들은, 중간 결과들이 수신된 후에 임시 버퍼들 또는 온-칩 메모리들에 저장되고, 이어서, 뉴럴 네트워크의 후속 계층들로 전달될 수 있다. 그러나, 현대의 뉴럴 네트워크들의 컴퓨테이셔널 요구들 및 입력 사이즈들이 계속 증가함에 따라, 계층들 사이의 메모리 저장은 급속히 심각한 병목 현상이 되고 있으며, 병렬 프로세싱의 요구들은 관리하기가 어려워지고 있다. 따라서, 이 기술에서 개선들이 필요하다.
[0005] 일부 실시예들에서, 뉴럴 네트워크 계층의 출력들에 대한 희소성을 유도하는 방법은 뉴럴 네트워크의 계층으로부터 출력들을 수신하는 단계; 출력들을 복수의 파티션들로 파티셔닝하는 단계; 제로 값들을 갖는 것으로 취급될 수 있는, 복수의 파티션들 내의 제1 파티션들을 식별하는 단계; 복수의 파티션들 내의 나머지 제2 파티션들 사이에서 제1 파티션들의 위치들을 식별하는 인코딩을 생성하는 단계; 및 인코딩 및 제2 파티션들을 뉴럴 네트워크의 후속 계층으로 전송하는 단계를 포함할 수 있다.
[0006] 일부 실시예들에서, 뉴럴 네트워크 가속기는 뉴럴 네트워크의 계층을 구현하고 계층으로부터 출력들을 생성하도록 구성된 컴퓨트 노드, 및 동작들을 수행하도록 구성된 파티셔닝 회로를 포함할 수 있고, 동작들은, 뉴럴 네트워크의 계층으로부터 출력들을 수신하는 동작; 출력들을 복수의 파티션들로 파티셔닝하는 동작; 제로 값들을 갖는 것으로 취급될 수 있는, 복수의 파티션들 내의 제1 파티션들을 식별하는 동작; 및 복수의 파티션들 내의 나머지 제2 파티션들 사이에서 제1 파티션들의 위치들을 식별하는 인코딩을 생성하는 동작을 포함한다. 뉴럴 네트워크 가속기는 또한 뉴럴 네트워크의 후속 계층에 대해 인코딩 및 제2 파티션들을 저장하도록 구성된 메모리를 포함할 수 있다.
[0007] 일부 실시예들에서, 뉴럴 네트워크 계층의 출력들에 대한 희소성을 유도하는 방법은 뉴럴 네트워크의 계층으로부터 출력들을 수신하는 단계, 및 출력들을 복수의 파티션들로 파티셔닝하는 단계를 포함할 수 있고, 복수의 파티션들 각각은 복수의 출력들을 포함한다. 방법은 또한 제1 파티션들의 값들이 제로로 설정될 수 있음을 표시하는 기준을 충족하는, 복수의 파티션들 내의 제1 파티션들을 식별하는 단계; 복수의 파티션들 내의 나머지 제2 파티션들 사이에서 제1 파티션들의 위치들을 식별하는 인코딩을 생성하는 단계; 인코딩 및 제2 파티션들을 뉴럴 네트워크의 후속 계층으로 전송하고 제1 파티션들을 폐기하는 단계; 뉴럴 네트워크의 후속 계층에서 제2 파티션들을 수신하는 단계; 인코딩에 기초하여 제로 값들을 갖는 제2 파티션들을 배열하는 단계; 및 뉴럴 네트워크에서 후속 계층을 실행하는 단계를 포함할 수 있다.
[0008] 임의의 실시예들에서, 다음의 특징들 중 임의의 그리고 전부는 임의의 조합으로 그리고 제한 없이 구현될 수 있다. 방법/동작들은 또한 뉴럴 네트워크의 후속 계층에서 제2 파티션들을 수신하는 것; 및 인코딩에 기초하여 제2 파티션들을 배열하는 것을 포함할 수 있다. 후속 계층은 곱셈 연산을 수행할 수 있고, 이로써 제1 파티션들은 제로를 곱하는 연산(multiply-by-zero operation)으로서 폐기될 수 있다. 출력들은 계층으로부터의 출력들의 3차원 어레이를 포함할 수 있고, 출력들의 어레이는 뉴럴 네트워크 내의 상이한 채널들에 대한 차원을 포함한다. 복수의 파티션들은 출력들의 어레이의 3차원 파티션들을 포함할 수 있다. 제1 파티션들은 복수의 파티션들에서 인접할 필요가 없다. 제로 값들을 갖는 것으로 취급될 수 있는, 복수의 파티션들 내의 제1 파티션들을 식별하는 것은 설계 환경으로부터 기준을 수신하는 것; 및 복수의 파티션들 각각에 기준을 적용하는 것을 포함할 수 있다. 기준은, 파티션 내의 값들에 대한 집계(aggregate)를 계산하고, 집계가 임계치 미만이면, 파티션 내의 값들을 제로로 설정하는 상대 크기 함수(relative magnitude function)를 포함할 수 있다. 기준은 설계 환경으로부터 런타임 함수로서 전송될 수 있다. 기준은 뉴럴 네트워크를 표현하는 그래프의 일부로서 인코딩될 수 있다. 뉴럴 네트워크 가속기는 또한 복수의 칩렛들을 포함할 수 있고, 컴퓨트 노드는 복수의 칩렛들 내의 제1 칩렛 상에 구현될 수 있고, 후속 계층은 복수의 칩렛들 내의 제2 칩렛 상에 구현될 수 있다. 뉴럴 네트워크 가속기는 또한 뉴럴 네트워크의 후속 계층에서 제2 파티션들을 수신하는 동작 및 인코딩에 기초하여 제2 파티션들을 배열하는 동작을 포함하는 동작들을 수행하도록 구성된 시퀀서 회로를 포함할 수 있다. 뉴럴 네트워크의 계층은 컨볼루션 코어(convolution core)를 실행하는 것을 포함할 수 있다. 메모리는 온-칩 정적 랜덤-액세스 메모리(SRAM)를 포함할 수 있다. 뉴럴 네트워크를 트레이닝할 때, 파티셔닝 회로가 사용될 필요가 없다. 복수의 파티션들 내의 파티션들의 수는 뉴럴 네트워크의 트레이닝 동안 결정될 수 있다. 제로 값들을 갖는 것으로 취급될 수 있는, 복수의 파티션들 내의 제1 파티션들을 식별하는 것은 설계 환경으로부터 기준을 수신하는 것; 및 복수의 파티션들 각각에 기준을 적용하는 것을 포함할 수 있다. 출력들은 계층으로부터의 출력들의 3차원 어레이를 포함할 수 있고, 출력들의 어레이는 뉴럴 네트워크 내의 상이한 채널들에 대한 차원을 포함할 수 있고, 복수의 파티션들은 출력들의 어레이의 3차원 파티션들을 포함할 수 있다.
[0009] 다양한 실시예들의 성질 및 장점들의 추가의 이해는 도면들 및 본 명세서의 나머지 부분들을 참조하여 실현될 수 있으며, 여러 도면들 전반에 걸쳐 유사한 컴포넌트들을 지칭하기 위해 유사한 참조 번호들이 사용된다. 일부 경우들에서, 서브-라벨은 다수의 유사한 컴포넌트들 중 하나를 나타내기 위한 참조 번호와 연관된다. 기존의 서브-라벨에 대한 명시 없이 참조 번호가 참조될 때, 이는 모든 그러한 다수의 유사한 컴포넌트들을 지칭하는 것으로 의도된다.
[0010] 도 1은 상이한 뉴럴 네트워크 아키텍처들 또는 모델들에 대한 컴퓨트 스케일링의 그래프를 예시한다.
[0011] 도 2는 샘플 뉴럴 네트워크 내의 각각의 채널에 대한 활성화 밀도 분포의 차트를 예시한다.
[0012] 도 3은 일부 실시예들에 따른, 활성화 희소성을 최적으로 이용하기 위한 조합된 알고리즘-하드웨어 접근법(algorithm-to-hardware approach)의 다이어그램을 예시한다.
[0013] 도 4는 일부 실시예들에 따른 일반적인 뉴럴 네트워크 가속기를 예시한다.
[0014] 도 5는 일부 실시예들에 따른, 희소성을 유도하는 개선된 뉴럴 네트워크 가속기를 예시한다.
[0015] 도 6은 일부 실시예들에 따른, 컨볼루션 연산의 필터들이 파티셔닝 회로에 의해 파티셔닝될 수 있는 다차원 출력 어레이를 어떻게 생성할 수 있는지의 예를 예시한다.
[0016] 도 7은 출력 텐서가 임의의 차원으로 어떻게 파티셔닝될 수 있는지를 예시한다.
[0017] 도 8은 일부 실시예들에 따른, 출력 활성화 맵에서 발견되는 랜덤 희소성에 비해 파티션-유도 희소성이 제공하는 개선을 예시한다.
[0018] 도 9는 일부 실시예들에 따른 다중-타일 또는 AI-칩렛 아키텍처를 예시한다.
[0019] 도 10은 일부 실시예들에 따른, 뉴럴 네트워크 계층의 출력들에 대한 희소성을 유도하기 위한 방법의 흐름도를 예시한다.
[0020] 도 11은 다양한 실시예들이 구현될 수 있는 예시적인 컴퓨터 시스템을 예시한다.
[0021] 인공 지능(AI)은 계속해서 더 유비쿼터스화되고 있다. AI의 사용이 보다 광범위해짐에 따라, AI는 이전에 너무 복잡하다고 여겨졌던 새로운 사용 사례들을 가능하게 하고 있다. 다양한 분야들에 걸쳐 이러한 AI 채택이 증가하면서 AI 하드웨어 및 소프트웨어 둘 모두에서 필요한 성능 요건들이 추구되고 있다. 예를 들어, 새로운 알고리즘들은 컴퓨터 비전(CV) 및 자연어 프로세싱(NLP)으로부터의 더 복잡한 사용 사례들을 계속 해결하고 있으며, 컴퓨트 전력 및 메모리 저장에서의 성장에 대한 요구는 종래의 프로세스 스케일링만으로 지원될 수 있는 것을 넘어 확대되고 있다. AI 시스템들의 효율에 대한 미래의 개선들은, 단독으로 하드웨어, 소프트웨어, 트레이닝 등에 대한 혁신들보다는, 기술 스택의 상이한 레벨들에 함께 영향을 미치는 혁신들을 유발할 가능성이 있을 것이다.
[0022] 도 1은 상이한 뉴럴 네트워크 아키텍처들 또는 모델들에 대한 컴퓨트 스케일링의 그래프(100)를 예시한다. 이 그래프(100)는 최근 몇 년 간의 상이한 CV 및 NLP 뉴럴 네트워크 모델들에 대한 컴퓨트 성장을 요약한다. CV, NLP 및/또는 스피치 인식에 대한 컴퓨트 요건들의 성장이 무어의 법칙에 따르는 컴퓨테이셔널 파워의 자연스러운 성장을 빠르게 앞지르고 있음을 유의한다. 이러한 불일치는, 컴퓨트 요건들이 훨씬 더 빠른 레이트로 증가하고 있는 트랜스포머-기반 뉴럴 네트워크들을 고려할 때 훨씬 더 두드러진다. 도 1에 표현된 절대 부동 소수점 연산(FLOPS) 메트릭이 특히 뉴럴 네트워크 트레이닝과 관련되지만, 전체 컴퓨트 스케일링 트렌드는 뉴럴 네트워크들에 의해 수행되는 트레이닝 및 추론 계산들 둘 모두에 대해 동일하다. 도 1에 예시된 성능 스케일링의 요구들은 데이터 센터 또는 클라우드 플랫폼 상에서 수행되는 컴퓨테이션들과 비교하여 제한된 컴퓨테이셔널 파워를 갖는 스마트 에지 디바이스들을 사용할 때 훨씬 더 두드러진다.
[0023] 종래의 컴퓨트 및 메모리 스케일링은 장래에 AI 요구들의 성장 및 채택을 지원할 수 없을 것이 분명하다. 뉴럴 네트워크 알고리즘들로부터 하드웨어 구현들에 이르기까지, AI 스택의 상이한 부분들에 대한 지속적인 노력들이 있지만, 이들 노력들의 대부분은 본질적으로 정적이다. 기존의 최적화 노력들은 종종, 양자화 또는 프루닝(pruning)과 같은 파라미터-기반 모델 압축 접근법들에 중점을 두고 있다. 대안적으로, 최적화 노력들은 지식 증류(knowledge distillation) 또는 로우 랭크 인수분해(low-rank factorization)와 같은 알고리즘 레벨에만 전적으로 집중되었다. 이들 별개의 방법들이 개별적으로 메모리 및 컴퓨터 사용량의 감소들을 제공하지만, 최적화들의 코스 레벨 및 정확도 트레이드-오프들 ― 이들은 이러한 개선들을 특정 입력 데이터 세트들 또는 모델들로 제한함 ― 로 인해 전체적인 효율이 제한된다.
[0024] 더 많은 내부 계층들 및 입력 텐서(tensor)들이 계속해서 사이즈가 증가하면서 모델들이 더 심층화됨에 따라, 성능 요구들은 악화될 수 있다. 예를 들어, ResNet-152 모델은 152개의 내부 계층들을 포함할 수 있고, 입력 텐서들은 고해상도 이미지들을 포함할 수 있고, 입력들은 다수의 카메라 스트림들과 같은 다수의 소스들로부터 함께 패치될(patched) 수 있다. 이들 대규모 데이터 세트들로 인해, 활성화 메모리 사이즈들은 일차 병목 현상이 되고 있으며, 뉴럴 네트워크에 대한 가중치들 및 파라미터들을 저장하는 파라미터 메모리 사이즈들조차도 초과하고 있다. 본원에서 사용된 바와 같이, 파라미터 메모리는 뉴럴 네트워크 자체에 대한 가중치들 및 파라미터들의 저장을 지칭하는 반면, 활성화 메모리는 뉴럴 네트워크를 통해 흐르는 텐서들의 동적 입력/출력을 지칭한다. 양자화, 가중 프루닝(weight pruning) 등과 같은 종래의 모델 압축 기법들은 활성화 메모리가 아니라 파라미터 메모리에만 초점이 맞춰져 있어, 이 병목 현상이 해결되지 않은 채로 남겨진다.
[0025] 활성화 메모리 병목 현상을 해결하기 위한 일반적인 솔루션들은 현재 뉴럴 네트워크 기술들에서 발견되지 않는다. 구체적으로, 대부분의 뉴럴 네트워크들은 각각의 계층의 일부로서 일부 형태의 비선형성(예를 들어, ReLU, Sigmoid, Tanh 등)을 사용하기 때문에, 각각의 계층으로부터의 활성화 출력들은 자연 발생하는 희소성 레벨을 가질 것이다. 다시 말해서, 이들 활성화 함수들은, 활성화 함수들이 실행됨에 따라, 음의 값들과 같은 많은 값들을 제로가 되게 하는 경향이 있다. 그러나, 이 희소성은 동적이다. 뉴럴 네트워크에서의 파라미터 가중치들의 희소성과 달리, 이 희소성은 각각의 입력 텐서에 따라 상이하여서, 이러한 희소성의 위치를 설계 시에 예측하는 것을 불가능하게 만들 것이다. 이는 하드웨어에서 동적 활성화 희소성을 활용하는 것을 매우 어렵게 만들고, 종래의 하드웨어 가속기들은 이러한 타입의 최적화를 지원하지 않는다.
[0026] 도 2는 샘플 뉴럴 네트워크 내의 각각의 채널에 대한 활성화 밀도 분포의 차트(200)를 예시한다. 차트(200)의 데이터는 컨볼루션 아키텍처에 기초하는 대중적인 이미지-분류 뉴럴 네트워크인 VGG-16으로부터 소싱된다. Y-축 상의 각각의 채널은 고유한 뉴럴 네트워크 계층을 표현하고, 차트(200) 상의 각각의 점은 채널 당 밀도를 표현한다. 뉴럴 네트워크의 대부분의 계층들에 걸친 채널들에 대해 활성화 분포들이 매우 불규칙하고 불균일하다는 것이 관찰될 수 있다. 다시 말해서, 상이한 채널들에서의 희소성은 예측가능하지 않으며, 런타임 입력들에 크게 의존한다. 부가적으로, 차트(200)는 본원에서 "테일 워커(tail worker)" 효과로 지칭되는 희소성의 불균일한 동적 분포들로부터 기인하는 다른 과제를 나타낸다. 구체적으로, 테일-워커 효과는 전체적인 속도를 가장 느린 또는 "테일" 워커까지 제한한다. 이는, 대부분의 하드웨어 가속기들이 뉴럴 네트워크 계층들을 병렬 프로세싱 엘리먼트들 상에서 병렬로 실행되는 다수의 더 작은 커널들로 나누거나 분할하기 때문에, 성능을 개선하기 위해 활성화 희소성을 활용하는 것에 대한 제한된 장점을 유발한다.
[0027] 유사하게, 활성화 출력에서의 희소성의 예측 불가능한 분포는, 제로 값들을 제거함으로써 실현될 수 있는 메모리 절약들을 제한한다. 구체적으로, 희소 제로 값들이 활성화 맵으로부터 제거되면, 제거된 엘리먼트들의 개개의 인코딩은 여전히 보존될 필요가 있다. 다시 말해서, 출력들의 오리지널 세트가 후속 계층에 대한 입력들로서 재구성될 수 있도록 어느 제로 엘리먼트들이 제거되었는지를 특정하는 인코딩이 보존되어야 한다. 이는, 메모리 절약들이 적어도 50% 희소성 없이는 달성될 가능성이 낮을 것이며, 이 임계치 미만의 활성화 텐서들은 실제로 메모리 사용량 및 대역폭의 증가를 유발할 수 있음을 의미한다.
[0028] 본원에 설명된 실시예들은 뉴럴 네트워크들에서 동적 활성화 희소성을 활용하기 위한 범용 아키텍처 프레임워크 및 전체론적 알고리즘-하드웨어 접근법을 제안한다. 이 아키텍처는 활성화 특징 맵(예를 들어, 계층의 출력)에 "구조화된 희소성"을 도입 및 유도하며, 여기서 희소성의 구조는 계층 출력들에서 파티션들을 생성함으로써 아키텍처의 기본 실행 유닛에 맞춰진다. 예를 들어, SIMD, VLIW, 수축기 어레이들, 컨볼루션 엔진들, MAC 연산들 등을 포함하는 각각의 실행 유닛은 맞춤화된 파티션 타입들 및 사이즈들을 가질 수 있다. 이들 상이한 동작들 각각은 또한 희소성을 유도하고 전체 파티션들을 제로로 설정하는 데 사용되는 개별 기준들을 가질 수 있다. 알고리즘 및 프레임워크 레벨에서 대응하는 실행 유닛의 근본적인 조직에 맞춰진 이 구조의 사용은 컴퓨터 사용량, 메모리 용량 및 상호연결 대역폭을 최적화하기 위해 타겟팅될 최적의 설계 포인트를 생성할 수 있다.
[0029] 희소 파티션들은 활성화 계층들 사이의 메모리에 저장될 필요가 없다. 메모리 절약들 외에도, 희소 활성화들을 갖는 컴퓨트 동작들이 또한 제거될 수 있다. 예를 들어, 전체 입력 텐서가 제로로 설정될 때, 텐서에 특정 가중치를 곱하여 입력하는 컴퓨트 노드에 대한 입력은 제거될 수 있고, 따라서 이러한 컴퓨트 동작은 후속 계층들에서 완전히 스킵될 수 있다. 이는 뉴럴 네트워크에서 상당한 컴퓨트 감소를 유발할 수 있다. 부가적으로, 무어의 법칙이 느려지고 AI의 증가하는 컴퓨트 요구들을 지원하기 위한 이종 칩렛-기반 솔루션들이 채택됨으로 인해, 활성화 희소성을 활용하는 이들 실시예들은 온-패키지 상호연결들에서의 대역폭 압력들을 완화시킬 수 있다. 이는, 이들 설계들에 내재된 감소된 밀도들 및 온-패키지 상호연결들에도 불구하고, 칩렛-기반 아키텍처들 상의 AI 작업량들에 대한 거의 모놀리식 같은 스케일링을 가능하게 한다.
[0030] 도 3은 일부 실시예들에 따른, 활성화 희소성을 최적으로 이용하기 위한 조합된 알고리즘-하드웨어 접근법의 다이어그램(300)을 예시한다. 아키텍처는 심층 학습 프레임워크(302)를 포함할 수 있다. 심층 학습 프레임워크들은 사용자들이 심층 학습 모델들을 쉽게 구축할 수 있게 하는 사용자 인터페이스들 및 라이브러리들/툴들을 포함할 수 있다. 심층 학습 프레임워크들(302)의 예들은 TensorFlow®, PyTorch®, Keras®, Sonnet® 및/또는 다른 상업적으로 이용 가능한 툴들을 포함할 수 있다. 심층 학습 프레임워크는 특정 애플리케이션들을 위한 새로운 뉴럴 네트워크들을 개발하기 위해 사전-트레이닝된 모델들, 사용자-정의된 모델들 및/또는 샘플 데이터 세트들로부터 도출할 수 있다.
[0031] 일부 실시예들은, 심층 학습 프레임워크(302)와 통합될 수 있는, "PartitionDropout"으로 본원에서 지칭되는 커스텀 라이브러리(304)를 부가할 수 있다. PartitionDropout 드롭아웃 라이브러리는 사전-트레이닝된 모델들과 함께 사용될 수 있거나, 또는 모델들은 설계에 부가된 PartitionDropout을 이용하여 트레이닝될 수 있다. 라이브러리(304)는 뉴럴 네트워크 설계자가 설계 프로세스 동안 최적의 파티션 사이즈, 컴퓨트, 메모리 용량 및/또는 대역폭 감소 트레이드-오프들을 평가할 수 있게 한다.
[0032] PartitionDropout 라이브러리는 다양한 계층들의 활성화 맵들에서 희소성을 유도하기 위해 AI 하드웨어에서 부가적인 하드웨어 엘리먼트들을 구성하기 위한 코드를 부가하는 데 사용될 수 있다. 예를 들어, 이 라이브러리(304)는 사용자가 계층으로부터의 출력들에 대한 파티션들의 다양한 사이즈들 및 형상들을 특정하게 할 수 있다. 부가적으로, 라이브러리(304)는 뉴럴 네트워크 설계자가, 제로 값들을 갖는 것으로 취급될 수 있는 계층 출력의 파티션들을 결정 또는 식별하는 기준 또는 기능을 특정하도록 허용할 수 있다. 이들 2개의 파라미터들(즉, 파티셔닝 방식 및 기준)은 실험적으로 설정되거나 뉴럴 네트워크 설계자에 의해 선택될 수 있다.
[0033] 예를 들어, 일부 실시예들은 가능한 파티션 사이즈들 및 구조들의 리스트를 사용하여 뉴럴 네트워크로 샘플 데이터를 프로세싱할 수 있다. 이어서, 결과적인 시뮬레이팅된 출력들은, 다른 파티션 사이즈들/구조들을 사용하여 시뮬레이팅된 결과들과 비교하여 정확도에 대한 트레이드-오프로서 대역폭, 컴퓨트 및/또는 메모리 절약들의 관점에서 특성화될 수 있다. 이어서, 시뮬레이팅된 결과들로부터 최적의 파티션 사이즈/구조가 선택될 수 있다. 유사하게, 사용되는 기준은, 정확도와 결과적인 하드웨어 효율 사이의 트레이드-오프에서 최적의 변곡점을 식별하기 위해 상이한 임계치들을 사용하여 시뮬레이팅될 수 있다. 예를 들어, 크기-기반 기준들은, 파티션 내의 값들에 대한 집계를 계산하고, 집계가 임계치 미만이면, 파티션 내의 모든 값들을 제로로 설정할 수 있다. 이 임계치는 최적의 값을 찾기 위해 시뮬레이션 동안 위/아래로 조정될 수 있다.
[0034] 위에서 설명된 바와 같이 하드웨어가 심층 학습 프레임워크에서 설계된 방식을 구현하기 위해, 네트워크별 또는 계층별 메타데이터가 기본 하드웨어와 통신될 필요가 있을 수 있다. 예를 들어, 파티션 사이즈 또는 구조와 함께 선택된 기준 및 임계치들은 심층 학습 프레임워크(302)로부터 하드웨어(310)로 통신될 필요가 있을 수 있다. 아키텍처(300)는 이러한 통신을 제공하기 위한 다수의 상이한 방법들을 제공한다. 일부 실시예들에서, 컴파일러는 하드웨어(310)에 송신되는 뉴럴 네트워크 그래프(306)에 파티셔닝 및/또는 기준을 통합할 수 있다. 컴파일된 뉴럴 네트워크 그래프(306)는 컴퓨트 계층이 실행된 후에 PartitionDropout 계층의 동작들을 수행하기 위한 명령들을 포함할 수 있다. 예를 들어, 뉴럴 네트워크 내의 계층의 컴퓨트 동작들 이후에 실행되는 파티셔닝 회로는 컴파일러에 의해 뉴럴 네트워크의 일부로서 취급될 수 있고, 파티션을 생성하고 기준을 실행하여 희소성을 유도하기 위한 명령들이 뉴럴 네트워크 그래프(306)의 일부로서 구현될 수 있다. 대안적으로, 일부 실시예들은 PartitionDropout 명령 세트 아키텍처(ISA)를 포함하는 뉴럴 네트워크 런타임을 전송할 수 있다. AI 가속기 또는 다른 하드웨어에서 파티셔닝 회로를 개별적으로 프로그래밍하기 위해, 뉴럴 네트워크 런타임(308)이 하드웨어(310)에 전송될 수 있다.
[0035] 마지막으로, 하드웨어(310)는 위에서 설명된 바와 같이, PartitionDropout 파티셔닝 및/또는 기준을 갖는 그래프를 실행할 수 있다. 예를 들어, 하드웨어(310)는 뉴럴 네트워크 또는 계층이 상이한 AI 타일들 또는 칩렛들에 걸쳐 분산된 다중-타일 또는 AI 칩렛 솔루션을 포함할 수 있다. 아래에서 설명되는 바와 같이, 하드웨어(310)는 심층 학습 프레임워크(310)에서 특정된 기준 및/또는 파티셔닝 기능을 구현하는 회로들을 포함할 수 있다. 이들 파티셔닝 회로들은 하드웨어(310)의 컴퓨트 노드들에 의해 구현되는 임의의 및/또는 모든 계층들 이후에 포함될 수 있다.
[0036] 도 4는 일부 실시예들에 따른 일반적인 뉴럴 네트워크 가속기(400)를 예시한다. 아키텍처는 온-칩 SRAM(404) 및/또는 오프-칩 메모리(402)를 포함할 수 있다. 이들 메모리들은 입력/출력 텐서들이 뉴럴 네트워크의 다양한 계층들을 통해 전파될 때 이들을 저장할 수 있다. 실행 유닛(406)은 뉴럴 네트워크의 하나 이상의 계층들의 동작들 중 하나 이상을 수행할 수 있다. 이 예에서, 실행 유닛(406)은 이전의 컴퓨트 노드로부터 또는 뉴럴 네트워크에 대한 입력으로부터 입력 텐서를 수신하는 내부 입력 버퍼(408)를 포함할 수 있다. 입력 버퍼(408)는 부분적인 공간 차원들 및 채널 차원들 및 일부 경우들을 갖는 필터들을 포함할 수 있다. 입력 버퍼(408)는, 입력 버퍼(408)로부터 수신된 입력 텐서에 대해 하나 이상의 동작들을 수행하는 컴퓨트 코어 또는 컴퓨트 노드(410)에 텐서를 제공할 수 있다. 예를 들어, 컴퓨트 노드(410)는 컨볼루션 연산을 수행할 수 있고, 부동 소수점 곱셈-덧셈(FMA) 엔진을 사용하여 구현될 수 있다. 컴퓨트 노드(410)의 출력들은 출력 버퍼(412)에 전달될 수 있다. 출력 버퍼는 컴퓨트 노드(410)로부터의 컨볼루션 결과들을 누적할 수 있다. 컴퓨트 노드(410)에 의해 생성되는 부분 합들은 출력 버퍼(412)로부터 온-칩 SRAM(404)으로, 그리고 추가로 오프-칩 메모리(402)로 스필 오버(spill over)될 수 있다.
[0037] 도 5는 일부 실시예들에 따른, 희소성을 유도하는 개선된 뉴럴 네트워크 가속기(500)를 예시한다. 이 뉴럴 네트워크 가속기(500)는 도 4의 뉴럴 네트워크 가속기(400)에 대해 위에서 설명된 컴포넌트들을 포함할 수 있다. 그러나, 이 뉴럴 네트워크 가속기(500)는 또한 희소 파티션들이 제거된 경우 입력들을 시퀀싱하도록 구성된 시퀀서 회로(502)와 함께, 컴퓨트 노드(410)의 출력들에서 희소성을 생성하도록 구성된 파티셔닝 회로(504)를 포함할 수 있다. 파티셔닝 회로(504) 및 시퀀서 회로(502)는 위에서 설명된 바와 같이, 뉴럴 네트워크 그래프를 사용하여 그리고/또는 심층 학습 프레임워크에 의해 제공되는 런타임으로부터의 메타데이터를 사용하여 프로그래밍될 수 있다.
[0038] 파티셔닝 회로는 뉴럴 네트워크의 계층으로부터 출력들을 수신할 수 있다. 이 계층은 컴퓨트 노드(410)에 의해 구현될 수 있고, 활성화 함수들, 컨볼루션 함수들 등과 같은 상이한 수학적 함수들을 수행할 수 있다. 컴퓨트 노드(410)로부터의 출력들은 출력 버퍼(412)에서 수신 및/또는 누적될 수 있다. 이어서, 파티션 회로(504)는 다수의 액션들을 수행할 수 있다. 먼저, 파티션 회로(504)는 출력들을 복수의 상이한 파티션들로 파티셔닝할 수 있다. 파티션 구조/사이즈는 위에서 설명된 바와 같이 심층 학습 프레임워크에서 결정되고 파티션 회로(504)에 전달될 수 있다. 활성화 맵 텐서가 어떻게 파티셔닝될 수 있는지의 예들이 아래에서 제공된다. 출력들을 복수의 파티션들로 파티셔닝하는 것이 반드시 임의의 실제 값들 또는 메모리 엘리먼트들이 이동 또는 변경될 것을 요구하는 것은 아님을 유의한다. 대신에, 파티셔닝 회로(504)는 미리 결정된 파티셔닝 사이즈/구조에 따른 값들의 그룹들로서 파티션들을 식별할 수 있고, 기준을 실행하거나 또는 그렇지 않으면 각각의 파티션을 단일 엔티티로서 함께 처리할 수 있다.
[0039] 파티셔닝 회로는 또한, 제로 값들을 갖는 것으로 취급될 수 있는, 복수의 파티션들 내의 파티션들을 식별할 수 있다. 이 동작은 다수의 상이한 방식들로 수행될 수 있다. 일부 실시예들에서, 심층 학습 프레임워크로부터 수신된 기준은 각각의 파티션에 대해 실행될 수 있다. 기준의 목적은, 파티션이 단지 제로 값들만을 갖는 것으로 취급될 수 있을 정도로 파티션이 전체적으로 작은 값들을 포함하는지 여부를 결정하는 것일 수 있다. 예를 들어, 2×2×6 파티션의 값들이 0.1 미만의 집계된 합계를 가지면, 파티션의 모든 값들은 제로로 취급될 수 있다. 본 개시내용은 사용될 수 있는 기준의 타입을 제한하지 않음을 유의한다. 기준의 일 예는, 각각의 파티션의 값들을 집계하고, 그 집계된 값을 임계치와 비교하여, 그 집계가 임계치 미만이면 파티션을 제로 값들로서 취급하는 기준이다. 다른 실시예들은 상이한 기준을 사용할 수 있다. 또한, 기준은 단독으로 또는 기준들의 세트로서 다른 기준과 함께 실행될 수 있음을 유의한다. 따라서, 단일 기준에 대한 임의의 참조는 또한 다수의 기준들이 임의의 조합으로 파티션에 대해 실행되는 것을 가능하게 한다.
[0040] 제로 값들을 갖는 것으로 파티션을 취급하는 것은 파티션의 저장 위치들 각각에 실제 제로 값들(예를 들어, 0.0)을 기록하는 것을 포함할 수 있다. 이 동작은 컴퓨트 노드(410)의 출력들로서 이전에 저장된 임의의 값들을 덮어 쓸 수 있다. 이는, 정확도의 적어도 일부 손실을 유발할 수 있는 손실 절차일 수 있음을 유의한다. 그러나, 뉴럴 네트워크 동작들은 중간 계층들에서 약간의 정확도 손실을 용인할 수 있다. 이 동작은 또한 활성화 기능들과 구별될 수 있거나, 또는 다른 기능들은 한 번에 하나씩 개별 메모리 위치들 상에서 실행된다. 단일 값을 임계치와 비교하여 이를 제로로 설정하는 대신에, 이 동작은 전체 파티션의 값들을 제로로 설정한다(또는 이들을 제로로 취급함). 따라서, 단일 위치에서의 비교적 큰 비-제로 값은, 파티션에 대한 기준이 이를 지시하는 경우, 파티션에서 제로로 설정될 수 있다.
[0041] 일부 실시예들에서, 제로 값들을 갖는 것으로 파티션을 취급하는 것은 파티션의 저장 위치들에 임의의 실제 제로 값들을 기록할 필요가 없다. 대신에, 파티션은 제로 값들을 갖는 것으로 취급될 수 있다. 예를 들어, 파티션은 폐기되고 후속 계층 또는 온-칩 SRAM(404)으로 전달되지 않을 수 있다. 실제 제로 값들이 파티션의 메모리 위치들에 기록되는지 여부에 관계없이, 이들 파티션들은 출력들을 메모리에 저장할 때 폐기될 수 있다. 예를 들어, 파티션들을 메모리에 저장할 때, 파티셔닝 회로(504)는 전체 출력 어레이에서 제로 값들을 갖는 것으로 취급되는 파티션들의 위치들을 식별하는 인코딩을 생성할 수 있다. 예를 들어, 각각의 파티션과 연관된 단일 비트를 갖는 이진 스트링이 생성될 수 있다. 0 값은 파티션이 제로 값들을 갖는 것으로 취급되어야 함을 표시할 수 있는 한편, 1 값은 파티션이 메모리에 저장된 비-제로 값들을 갖는 것으로 취급되어야 함을 표시할 수 있다. 파티션들 모두를 메모리에 저장하는 대신에, 제로 값들을 갖는 것으로 취급되는 제1 세트의 파티션들("제1 파티션들")은 폐기될 수 있는 반면, 비-제로 값들을 갖는 제2 세트의 파티션들("제2 파티션들")은 메모리에 저장될 수 있다. 이 인코딩은 엄청난 메모리 절약들을 발생시킬 수 있고, 매우 큰 출력 텐서들로부터 유발되는 메모리 병목 현상을 감소시킬 수 있다. 예를 들어, 25개의 파티션들로 분할된 3D 출력 어레이는 예를 들어, 이러한 파티션들 중 10개에서 희소성을 유도할 수 있다. 값들로 가득 찬 25개의 파티션들을 저장하는 대신에, 파티셔닝 회로(504)는 출력을 인코딩하는 25-비트 스트링을 갖는 15개의 파티션들만을 저장할 필요가 있다.
[0042] 일부 실시예들은 각각의 계층에서 40%의 평균 희소성을 유도하였다. 이 희소성이 위에서 설명된 바와 같이 파티션들에서 유도될 때, 이는 활성화 메모리에서 40%의 절감을 유발한다. 온-칩 메모리 자원들에 대한 제약들을 갖는 에지 디바이스들에서, 이러한 감소는 비-칩 및 오프-칩 메모리 대역폭에서의 성능 절감들로 직접적으로 변환될 수 있다. 이는 메모리 액세스 시간들을 개선하고, 각각의 동작에 대한 메모리 전송들의 수를 최소화함으로써 뉴럴 네트워크 동작의 전체 속도를 개선한다.
[0043] 파티셔닝 회로(504)는 인코딩 및 비-제로 값들을 갖는 제2 세트의 파티션들을 메모리(예를 들어, 온-칩 SRAM(404))에 전송할 수 있다. 대안적으로, 파티셔닝 회로(504)는 출력들을 뉴럴 네트워크의 후속 계층 또는 컴퓨트 노드의 다른 입력 버퍼(408)에 직접적으로 전송할 수 있다.
[0044] 후속 계층이 파티셔닝 회로(504)로부터 인코딩된 텐서를 수신할 때, 시퀀서 회로(502)는 프로세싱을 위한 올바른 위치들에 제2 세트의 파티션들을 제공하기 위해 텐서를 디코딩할 수 있다. 희소-포맷팅된 텐서는 판독될 수 있고, 시퀀서 회로(502)의 제어 로직은 이러한 또는 다른 실행 유닛들에 전송될 상이한 파티션들을 선택할 수 있다. 예를 들어, 시퀀서 회로(502)는 인코딩을 판독하고, 필요에 따라 제로 값들로 가득 찬 파티션들을 입력 텐서에 삽입할 수 있다. 시퀀서 회로(502)는 텐서가 예상된 사이즈를 갖도록 텐서를 재조립할 수 있으며, 비-제로 값들이 입력 텐서의 예상되는 위치에 순서대로 나타난다.
[0045] 메모리 대역폭을 절약하는 것 외에도, 이러한 파티셔닝은 또한 뉴럴 네트워크 가속기(500)에 의해 수행되는 컴퓨트 동작들 중 일부를 제거할 수 있다. 일부 실시예들에서, 개별 파티션들은 상이한 실행 유닛들(406)에 전송될 수 있다. 동작이 제로 값들로 설정된 파티션을 수신하는 것이거나 그렇지 않으면 제로 값들을 갖는 것으로 취급되어야 하는 경우, 그 동작은 일부 예시들에서 제거될 수 있다. 예를 들어, 컴퓨트 노드에서의 연산이 곱셈 연산을 수반하면, 제로 파티션은 그 연산의 출력들이 제로가 되게 할 수 있다. 따라서, 연산을 실제로 수행하는 대신에, 곱셈 연산을 수행하지 않고 제로 출력들이 생성될 수 있고, 대응하는 컴퓨트 스테이지가 제거될 수 있다. 비-인접 텐서들의 경우, 개개의 출력 버퍼들은 인코딩에서 입력 텐서 구조에 기초하여 선택될 수 있다. 시퀀서 회로(502) 내의 이러한 제어 로직이 이러한 동작을 수행할 수 있다.
[0046] 도 6은 일부 실시예들에 따른, 컨볼루션 연산의 필터들이 파티셔닝 회로에 의해 파티셔닝될 수 있는 다차원 출력 어레이를 어떻게 생성할 수 있는지의 예를 예시한다. 활성화 함수에 대한 입력 텐서(602)는 다수의 입력 채널들(C)과 함께 H×W(높이×폭)의 공간 치수들을 가질 수 있으며, 따라서 3차원 입력 어레이를 산출한다. 복수의 필터들(604)을 사용하여 활성화 함수에 의해 공간 컨볼루션이 수행될 수 있다. 필터들 각각은 입력 텐서(602)와 동일한 수의 채널들(C)을 갖는 치수들(R×S)을 가질 수 있다. 활성화 함수는 컨볼루션 연산 동안 K개의 상이한 필터들을 적용할 수 있다. 결과적인 출력 텐서(606)는 K개의 필터들 각각에 대한 P×Q 2차원 어레이가 604인 것으로 특성화될 수 있다.
[0047] 도 7은 출력 텐서(606)가 임의의 차원으로 어떻게 파티셔닝될 수 있는지를 예시한다. 파티션들은 출력 텐서(606)를 공간 및 채널 차원들 둘 모두에 걸쳐 분할하여 2D 또는 3D 파티션들을 유발할 수 있음을 유의한다. 도 7에 예시된 파티션들은 단지 예로서 제공되며 제한하는 것으로 의도되지 않음을 유의한다. 파티션들에 대한 임의의 구조 또는 사이즈가 사용될 수 있다. 상이한 파티션들이 설계됨에 따라, 뉴럴 네트워크 가속기 내의 상이한 컴퓨트 노드들 사이의 통신 패턴들이 변경될 것이라는 점이 또한 유의되어야 한다. 예를 들어, 파티션들이 변경됨에 따라, 특정 파티션들이 뉴럴 네트워크에서 블록으로서 전송되어야 하는 위치들은 또한 뉴럴 네트워크의 개별 설계에 기초하여 변경될 수 있다. 이러한 라우팅 정보는 또한 파티션들이 정확한 위치들로 라우팅되도록 심층 학습 프레임워크로부터 뉴럴 네트워크 가속기의 하드웨어 컴포넌트들에 제공될 수 있다.
[0048] 기준을 적용하고 출력 텐서(606)의 다양한 파티션들에 대한 희소성을 유도한 후에, 파티셔닝 회로는 출력 텐서(606)의 18개의 파티션들을 4개의 비-희소 파티션들(702)로 감소시킬 수 있다. 메타데이터(704)는, 오리지널 출력 텐서(606)가 표현/재생성될 수 있고 비-희소 파티션들(702)이 올바른 컴퓨트 노드들에 전송될 수 있도록 인코딩을 저장할 수 있다. 메타데이터(704)에서의 인코딩은 또한 일부 후속 계층 동작들에 대해 필요하다면 희소 파티션들을 생성하는 데 사용될 수 있다.
[0049] 도 8은 일부 실시예들에 따른, 출력 활성화 맵에서 발견되는 랜덤 희소성에 비해 파티션-유도 희소성이 제공하는 개선을 예시한다. 일부 정규화 기법들(예를 들어, L1/L2, 드롭아웃(dropout) 등) 또는 수정된 활성화 함수들(예를 들어, FATReLU)이 활성화 희소성을 증가시키는 것으로 나타났지만, 이들 표준 드롭아웃 기법들을 사용하는 활성화 맵(802)에 의해 예시된 바와 같이 이들 함수들에 의해 유도된 희소성은 본질적으로 여전히 랜덤이며 시스템-레벨 아키텍처에 의해 활용되기 어렵다. 본원에서 도입된 새로운 중간 계층(파티셔닝 회로 및 시퀀서 회로)은 활성화 맵의 특정 비율을 완전히 희소하도록 만드는 데 사용될 수 있는 구조화된 드롭아웃 기법을 제공한다. 이 새로운 계층은 결정론적(deterministic)이도록 그리고 트레이닝 및/또는 추론 동안 적용되도록 설계된다. 예를 들어, 앞서 설명된 바와 같은 크기-기반 기준에서, 활성화 맵들은 먼저 공간 및/또는 채널 차원들을 가로지르는 인접 파티션들의 그리드로 분할될 수 있으며, 이들 각각은 제로 값들을 갖는 것으로 취급될 수 있고, 파티션 드롭아웃 기법을 사용하는 활성화 맵(804)에 의해 예시된 바와 같이 활성화 크기의 랭크에 기초하여 그 전체가 드롭되거나 유지될 수 있다. 이것이 정확도를 감소시킬 가능성이 있지만, 반드시 그런 것은 아니다. 일부 경우들에서, 파티션-유도 희소성은 표준 희소성을 사용하는 활성화 맵(802)과 비교하여 더 양호한 검증 정확도를 획득하는 것으로 나타났다. 이는, 파티셔닝된 드롭아웃이 위에서 설명된 하드웨어 가속을 가능하게 하는 것 외에도 더 효과적인 정규화를 제공한다는 것을 보여준다.
[0050] 도 9는 일부 실시예들에 따른 다중-타일 또는 AI-칩렛 아키텍처를 예시한다. 메모리 사용량을 감소시키고 컴퓨트 사용량을 감소시키는 것 외에도, 뉴럴 네트워크 가속기를 위한 PartitionDropout 아키텍처는 또한 다수의 AI 다이들, 타일들 또는 칩렛들에 걸쳐 스케일링할 때 상호연결 대역폭에 대한 상당한 절감들을 유발할 수 있다. 칩렛들은 대형 모놀리식 다이들에 내재된 스케일링 및 비용의 문제들을 해결하지만, 칩렛들은 통상적으로 모놀리식 다이와 동일한 레벨의 상호연결 밀도 및 전력 효율을 제공하지 않으며, 따라서 AI 가속기와 같은 코히어런트 블록을 분해하는 것은 모놀리식 솔루션들에 비해 더 낮은 컴퓨트 스케일링을 유발한다. 그러나, 본원에 설명된 아키텍처는 다수의 AI 다이들, 타일들 또는 칩렛들 사이의 상호연결에 대한 대역폭 압력들을 완화시킨다. 이는 또한, 다양한 AI 칩렛들에 걸쳐 AI 컴퓨트 스케일링의 성능 및 전력 효율을 개선한다.
[0051] 도 9는 2D 메시 토폴로지로 구성된 다수의 AI 타일들, 칩렛들 또는 다이들을 사용하는 하나의 이러한 예를 예시한다. 이 예에서, 각각의 수직 열은 앞서 도 6 및 도 7에서 설명된 K 차원에 걸쳐 분할될 수 있다. 예를 들어, 타일 (0,0)은 K = 0-15에 대한 필터들을 포함할 수 있고, 타일 (0,1)은 필터들 K = 16-31을 포함할 수 있는 식이다. 아키텍처의 각각의 수평 행은 C 차원에 걸쳐 분할되므로, HCW 0-63은 행 0의 모든 열들에 대해 브로드캐스트될 수 있고, HCW 64-127은 행 1의 모든 열들에 대해 브로드캐스트될 수 있는 식이다. 이는 단일 열의 각각의 행이 개개의 K 분할들을 갖는 부분 합들을 생성하는 것을 유발할 수 있다. 이들은 모두, 다양한 열들 사이에서 분할되는 부분 출력 텐서 PKQ를 감소시키기 위해 단일 열 내에서 감소될 수 있다. 따라서, 열들 각각의 출력은 전체 출력 텐서의 일부를 표현하며, 이는 연접되어 완전한 출력을 형성할 수 있다.
[0052] 도 9에서 노드로서 표현된 각각의 AI 타일, 다이 또는 칩렛은 도 5의 뉴럴 네트워크 가속기 아키텍처(500)를 사용하도록 구현될 수 있다. 따라서, 파티션들이 제로 값들을 갖는 것으로 취급되고 타일들 사이의 상호 연결을 통해 전파되지 않기 때문에, 각각의 노드의 출력들이 감소될 수 있다. 이는 입력 및 출력 치수들 둘 모두에서 상당한 상호연결 대역폭 절감들을 유발한다.
[0053] 도 10은 일부 실시예들에 따른, 뉴럴 네트워크 계층의 출력들에 대한 희소성을 유도하기 위한 방법의 흐름도(1000)를 예시한다. 이 방법은 앞서 도 5에 예시된 뉴럴 네트워크 가속기(500)에 의해 실행될 수 있다. 부가적으로, 파티셔닝 사이즈/구조, 사용된 기준, 및 뉴럴 네트워크 가속기를 구현하는 상이한 노드들 사이의 라우팅은 도 3에서 설명된 바와 같이 심층 학습 환경 또는 프레임워크에 프로그래밍될 수 있다.
[0054] 방법은 뉴럴 네트워크의 계층으로부터 출력들을 수신하는 단계(1002)를 포함할 수 있다. 출력은 뉴럴 네트워크의 컴퓨테이셔널 계층들 사이에 부가되는 계층에 의해 수신될 수 있다. 이러한 부가적인 계층은 위에서 설명된 파티셔닝 회로 및/또는 시퀀싱 회로를 사용하여 구현될 수 있다. 계층으로부터의 출력들은 컴퓨트 노드로부터 직접 그리고/또는 컴퓨트 노드로부터 값들을 수신 및/또는 누적하는 출력 버퍼로부터 수신될 수 있다.
[0055] 방법은 또한 출력들을 복수의 파티션들로 파티셔닝하는 단계(1004)를 포함할 수 있다. 임의의 타입, 사이즈, 구조 또는 토폴로지(topology)의 파티셔닝이 사용될 수 있다. 파티셔닝은 심층 학습 프레임워크에서 정의되고, 뉴럴 네트워크 그래프에서의 인코딩으로서 또는 부가적인 계층들을 프로그래밍하는 런타임 메타데이터로서 뉴럴 네트워크 가속기에 전달될 수 있다. 파티셔닝은 공간 및/또는 채널 차원들에 걸쳐 발생할 수 있고, 2D 및/또는 3D 파티션들을 유발할 수 있다.
[0056] 방법은 부가적으로, 제로 값들을 갖는 것으로 취급될 수 있는, 복수의 파티션들 내의 제1 파티션들을 식별하는 단계(1006)를 포함할 수 있다. 제1 파티션들은 각각의 파티션 전체에 대해 기준을 실행함으로써 식별될 수 있다. 예를 들어, 기준은 크기-기반일 수 있고, 파티션 내의 값들의 집계를 임계치와 비교하여, 파티션의 모든 값들이 전체적으로 제로로 취급되어야 하는지 여부를 결정할 수 있다. 값들을 제로로 취급하는 것은 텐서의 실제 값들을 0으로 설정하는 것, 또는 제로로서 취급되는 파티션들을 저장하거나 후속 계층으로 전파하기보다는 폐기하거나 또는 드롭아웃하도록 허용하는 것을 포함할 수 있다.
[0057] 방법은 복수의 파티션들 내의 나머지 제2 파티션들 사이에서 제1 파티션들의 위치들을 식별하는 인코딩을 생성하는 단계(1008)를 더 포함할 수 있다. 인코딩은 제로 값들을 갖는 것으로 취급되어야 하는 제1 파티션들 및 출력 텐서에서의 이들의 상대적 위치와 함께, 비-제로 값들을 갖는 것으로 취급되는 제2 파티션들을 식별할 수 있다. 인코딩은 제2 파티션들과 함께 저장되고 그리고/또는 뉴럴 네트워크의 후속 계층 또는 컴퓨트 노드로 전달될 수 있다. 이어서, 방법은 또한 인코딩 및 제2 파티션들을 뉴럴 네트워크의 후속 계층에 전송하는 단계(1010)를 포함할 수 있다.
[0058] 도 10에 예시된 특정 단계들이 다양한 실시예들에 따라 뉴럴 네트워크 계층의 출력들에 대한 희소성을 유도하는 특정 방법들을 제공한다는 것이 인식되어야 한다. 대안적인 실시예들에 따라 다른 시퀀스들의 단계들이 또한 수행될 수 있다. 예를 들어, 대안적인 실시예들은 위에서 약술된 단계들을 상이한 순서로 수행할 수 있다. 더욱이, 도 10에 예시된 개별 단계들은 개별 단계에 적절한 다양한 시퀀스들로 수행될 수 있는 다수의 서브-단계들을 포함할 수 있다. 게다가, 특정 애플리케이션들에 따라 부가적인 단계들이 부가되거나 또는 제거될 수 있다. 많은 변형들, 수정들 및 대안들이 또한 본 개시내용의 범위 내에 속한다.
[0059] 본원에 설명된 방법들 각각은 컴퓨터 시스템에 의해 구현될 수 있다. 예를 들어, 심층 학습 프레임워크는 컴퓨팅 시스템 상에서 실행될 수 있다. 이들 방법들의 각각의 단계는 컴퓨터 시스템에 의해 자동으로 실행될 수 있고, 그리고/또는 사용자를 수반하는 입력들/출력들이 제공될 수 있다. 예를 들어, 사용자는 방법의 각각의 단계에 대한 입력들을 제공할 수 있고, 이들 입력들 각각은 이러한 입력을 요청하는 특정 출력에 응답하여 이루어질 수 있으며, 출력은 컴퓨터 시스템에 의해 생성된다. 각각의 입력은 대응하는 요청 출력에 응답하여 수신될 수 있다. 또한, 입력들은 사용자로부터 수신되고, 다른 컴퓨터 시스템으로부터 데이터 스트림으로서 수신되고, 메모리 위치로부터 리트리브되고, 네트워크를 통해 리트리브되고, 웹 서비스로부터 요청되는 식일 수 있다. 마찬가지로, 출력들은 사용자에게 제공되고, 데이터 스트림으로서 다른 컴퓨터 시스템에 제공되고, 메모리 위치에 저장되고, 네트워크를 통해 전송되고, 웹 서비스에 제공되는 식일 수 있다. 요컨대, 본원에 설명된 방법들의 각각의 단계는 컴퓨터 시스템에 의해 수행될 수 있고, 컴퓨터 시스템으로의 그리고 컴퓨터 시스템으로부터의 임의의 수의 입력들, 출력들 및/또는 요청들을 수반할 수 있으며, 이는 사용자를 수반할 수 있거나 또는 수반하지 않을 수 있다. 사용자를 수반하지 않는 그러한 단계들은 인간의 개입 없이 컴퓨터 시스템에 의해 자동으로 수행된다고 말할 수 있다. 따라서, 본 개시내용의 관점에서, 본원에 설명된 각각의 방법의 각각의 단계는 사용자와의 입력 및 출력을 포함하도록 변경될 수 있거나, 또는 프로세서에 의해 임의의 결정들이 내려지는 경우 인간의 개입 없이 컴퓨터 시스템에 의해 자동으로 수행될 수 있다는 것이 이해될 것이다. 또한, 본원에 설명된 방법들 각각의 일부 실시예들은 유형의(tangible) 소프트웨어 제품을 형성하기 위해 유형의 비일시적 저장 매체 상에 저장된 명령들의 세트로서 구현될 수 있다.
[0060] 도 11은 다양한 실시예들이 구현될 수 있는 예시적인 컴퓨터 시스템(1100)을 예시한다. 시스템(1100)은 위에서 설명된 컴퓨터 시스템들 중 임의의 것을 구현하는 데 사용될 수 있다. 도면에 도시된 바와 같이, 컴퓨터 시스템(1100)은 버스 서브시스템(1102)을 통해 다수의 주변 서브시스템들과 통신하는 프로세싱 유닛(1104)을 포함한다. 이들 주변 서브시스템들은 프로세싱 가속 유닛(1106), I/O 서브시스템(1108), 저장 서브시스템(1118) 및 통신 서브시스템(1124)을 포함할 수 있다. 저장 서브시스템(1118)은 유형의 컴퓨터 판독 가능 저장 매체들(1122) 및 시스템 메모리(1110)를 포함한다.
[0061] 버스 서브시스템(1102)은, 컴퓨터 시스템(1100)의 다양한 컴포넌트들 및 서브시스템들이 의도된 바와 같이 서로 통신하게 하기 위한 메커니즘을 제공한다. 버스 서브시스템(1102)이 단일 버스로서 개략적으로 도시되지만, 버스 서브시스템의 대안적인 실시예들은 다수의 버스들을 활용할 수 있다. 버스 서브시스템(1102)은 메모리 버스 또는 메모리 컨트롤러, 주변기기 버스, 및 다양한 버스 아키텍처들 중 임의의 것을 사용하는 로컬 버스를 포함하는 여러 타입들의 버스 구조들 중 임의의 것일 수 있다. 예를 들어, 이러한 아키텍처들은 ISA(Industry Standard Architecture) 버스, MCA(Micro Channel Architecture) 버스, EISA(Enhanced ISA) 버스, VESA(Video Electronics Standards Association) 로컬 버스 및 PCI(Peripheral Component Interconnect) 버스를 포함할 수 있으며, 이들은 IEEE P1386.1 표준으로 제조된 메자닌(Mezzanine) 버스로서 구현될 수 있다.
[0062] 하나 이상의 집적 회로들(예를 들어, 종래의 마이크로프로세서 또는 마이크로컨트롤러)로서 구현될 수 있는 프로세싱 유닛(1104)은 컴퓨터 시스템(1100)의 동작을 제어한다. 하나 이상의 프로세서들은 프로세싱 유닛(1104)에 포함될 수 있다. 이들 프로세서들은 단일 코어 또는 멀티코어 프로세서들을 포함할 수 있다. 특정 실시예들에서, 프로세싱 유닛(1104)은 각각의 프로세싱 유닛에 포함된 단일 또는 멀티코어 프로세서들을 갖는 하나 이상의 독립적인 프로세싱 유닛들(1132 및/또는 1134)로서 구현될 수 있다. 다른 실시예들에서, 프로세싱 유닛(1104)은 또한, 2개의 듀얼 코어 프로세서들을 단일 칩에 통합함으로써 형성된 쿼드-코어 프로세싱 유닛으로서 구현될 수 있다.
[0063] 다양한 실시예들에서, 프로세싱 유닛(1104)은 프로그램 코드에 응답하여 다양한 프로그램들을 실행할 수 있고, 동시에 실행되는 다수의 프로그램들 또는 프로세스들을 유지할 수 있다. 임의의 주어진 시간에, 실행될 프로그램 코드의 일부 또는 전부는 프로세서(들)(1104) 및/또는 저장 서브시스템(1118)에 상주할 수 있다. 적합한 프로그래밍을 통해, 프로세서(들)(1104)는 위에서 설명된 다양한 기능들을 제공할 수 있다. 컴퓨터 시스템(1100)은 부가적으로, DSP(digital signal processor), 특수 목적 프로세서 등을 포함할 수 있는 프로세싱 가속 유닛(1106)을 포함할 수 있다.
[0064] I/O 서브시스템(1108)은 사용자 인터페이스 입력 디바이스들 및 사용자 인터페이스 출력 디바이스들을 포함할 수 있다. 사용자 인터페이스 입력 디바이스들은 키보드, 마우스 또는 트랙볼과 같은 포인팅 디바이스들, 디스플레이에 통합된 터치패드 또는 터치 스크린, 스크롤 휠, 클릭 휠, 다이얼, 버튼, 스위치, 키패드, 음성 커맨드 인식 시스템들을 갖는 오디오 입력 디바이스들, 마이크로폰들 및 다른 타입들의 입력 디바이스들을 포함할 수 있다. 사용자 인터페이스 입력 디바이스들은 예를 들어, 사용자들이 제스처들 및 음성 커맨드들을 사용하는 내추럴 사용자 인터페이스(natural user interface)를 통해 Microsoft Xbox® 360 게임 컨트롤러와 같은 입력 디바이스를 제어하고 상호작용하는 것을 가능하게 하는 Microsoft Kinect® 모션 센서와 같은 모션 감지 및/또는 제스처 인식 디바이스들을 포함할 수 있다. 사용자 인터페이스 입력 디바이스들은 또한, 사용자들로부터의 눈 활동(예를 들어, 사진을 찍고 그리고/또는 메뉴 선택을 하는 동안의 '깜박임')을 검출하고 눈 제스처들을 입력 디바이스(예를 들어, Google Glass®)에 대한 입력으로서 변환하는 Google Glass® 깜박임 검출기와 같은 눈 제스처 인식 디바이스들을 포함할 수 있다. 부가적으로, 사용자 인터페이스 입력 디바이스들은 사용자들이 음성 커맨드들을 통해 음성 인식 시스템들(예를 들어, Siri® 내비게이터)과 상호작용하는 것을 가능하게 하는 음성 인식 감지 디바이스들을 포함할 수 있다.
[0065] 사용자 인터페이스 입력 디바이스들은 또한, 3차원(3D) 마우스들, 조이스틱들 또는 포인팅 스틱들, 게임 패드들 및 그래픽 태블릿들, 및 오디오/시각적 디바이스들, 예컨대 스피커들, 디지털 카메라들, 디지털 캠코더들, 휴대용 미디어 플레이어들, 웹캠들, 이미지 스캐너들, 지문 스캐너들, 바코드 판독기 3D 스캐너들, 3D 프린터들, 레이저 거리계들 및 시선 추적 디바이스들을 제한 없이 포함할 수 있다. 부가적으로, 사용자 인터페이스 입력 디바이스들은 예를 들어, 컴퓨터 단층 촬영, 자기 공명 이미징, 포지션 방출 단층 촬영, 의료용 초음파 촬영 디바이스들과 같은 의료 이미징 입력 디바이스들을 포함할 수 있다. 사용자 인터페이스 입력 디바이스들은 또한 예를 들어, 오디오 입력 디바이스들 예컨대, MIDI 키보드들, 디지털 악기들 등을 포함할 수 있다.
[0066] 사용자 인터페이스 출력 디바이스들은 디스플레이 서브시스템, 표시등들 또는 비시각적 디스플레이들, 예컨대 오디오 출력 디바이스들 등을 포함할 수 있다. 디스플레이 서브시스템은 CRT(cathode ray tube), 예컨대, LCD(liquid crystal display) 또는 플라즈마 디스플레이를 사용하는 평면 패널 디바이스, 프로젝션 디바이스, 터치 스크린 등일 수 있다. 일반적으로, 용어 "출력 디바이스"의 사용은 컴퓨터 시스템(1100)으로부터의 정보를 사용자 또는 다른 컴퓨터에 출력하기 위한 모든 가능한 타입들의 디바이스들 및 메커니즘들을 포함하는 것으로 의도된다. 예를 들어, 사용자 인터페이스 출력 디바이스들은 모니터들, 프린터들, 스피커들, 헤드폰들, 자동차 내비게이션 시스템들, 플로터들, 음성 출력 디바이스들, 및 모뎀과 같이 텍스트, 그래픽들 및 오디오/비디오 정보를 시각적으로 전달하는 다양한 디스플레이 디바이스들을 제한 없이 포함할 수 있다.
[0067] 컴퓨터 시스템(1100)은 현재 시스템 메모리(1110) 내에 위치하는 것으로 도시된 소프트웨어 엘리먼트들을 포함하는 저장 서브시스템(1118)을 포함할 수 있다. 시스템 메모리(1110)는 프로세싱 유닛(1104)에 로딩 가능하고 실행 가능한 프로그램 명령들뿐만 아니라 이들 프로그램들의 실행 동안 생성된 데이터를 저장할 수 있다.
[0068] 컴퓨터 시스템(1100)의 구성 및 타입에 따라, 시스템 메모리(1110)는 휘발성(예컨대, RAM(random access memory)) 및/또는 비휘발성(예컨대, ROM(read-only memory), 플래시 메모리 등)일 수 있다. RAM은 통상적으로, 프로세싱 유닛(1104)에 즉시 액세스 가능하고 그리고/또는 프로세싱 유닛(1104)에 의해 현재 동작 및 실행되고 있는 데이터 및/또는 프로그램 모듈들을 포함한다. 일부 구현들에서, 시스템 메모리(1110)는 다수의 상이한 타입들의 메모리 예컨대, SRAM(static random access memory) 또는 DRAM(dynamic random access memory)을 포함할 수 있다. 일부 구현들에서, 예컨대, 시동 동안 컴퓨터 시스템(1100) 내의 엘리먼트들 사이에 정보를 전달하는 데 도움이 되는 기본 루틴들을 포함하는 BIOS(basic input/output system)가 통상적으로 ROM에 저장될 수 있다. 제한이 아닌 예로서, 시스템 메모리(1110)는 또한 클라이언트 애플리케이션들, 웹 브라우저들, 중간 계층 애플리케이션들, RDBMS(relational database management system)들 등을 포함할 수 있는 애플리케이션 프로그램들(1112), 프로그램 데이터(1114) 및 운영 체제(1116)를 또한 예시한다. 예로서, 운영 체제(1116)는 다양한 버전들의 Microsoft Windows®, Apple Macintosh® 및/또는 Linux 운영 체제들, 다양한 상업적으로 입수 가능한 UNIX® 또는 UNIX 유사 운영 체제들(다양한 GNU/Linux 운영 체제들, Google Chrome® OS 등을 제한 없이 포함함) 및/또는 iOS, Windows® Phone, Android® OS, BlackBerry® 10 OS 및 Palm® OS 운영 체제들과 같은 모바일 운영 체제들을 포함할 수 있다.
[0069] 저장 서브시스템(1118)은 또한 일부 실시예들의 기능을 제공하는 기본 프로그래밍 및 데이터 구성들을 저장하기 위한 유형의 컴퓨터 판독 가능 저장 매체를 제공할 수 있다. 프로세서에 의해 실행될 때 위에서 설명된 기능을 제공하는 소프트웨어(프로그램들, 코드 모듈들, 명령들)는 저장 서브시스템(1118)에 저장될 수 있다. 이들 소프트웨어 모듈들 또는 명령들은 프로세싱 유닛(1104)에 의해 실행될 수 있다. 저장 서브시스템(1118)은 또한 일부 실시예들에 따라 사용되는 데이터를 저장하기 위한 저장소를 제공할 수 있다.
[0070] 저장 서브시스템(1100)은 또한 컴퓨터 판독 가능 저장 매체들(1122)에 추가로 연결될 수 있는 컴퓨터 판독 가능 저장 매체 판독기(1120)를 포함할 수 있다. 함께 그리고 선택적으로, 시스템 메모리(1110)와 조합하여, 컴퓨터 판독 가능 저장 매체들(1122)은 원격, 로컬, 고정식 및/또는 착탈식 저장 디바이스들에, 컴퓨터 판독 가능 정보를 일시적으로 그리고/또는 보다 영구적으로 포함, 저장, 송신 및 리트리브하기 위한 저장 매체를 더한 것을 포괄적으로 표현할 수 있다.
[0071] 코드 또는 코드의 일부분들을 포함하는 컴퓨터 판독 가능 저장 매체들(1122)은 정보의 저장 및/또는 송신을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 착탈식 및 비착탈식 매체들과 같은(그러나 이에 제한되지 않음) 저장 매체들 및 통신 매체들을 포함하는 임의의 적절한 매체들을 또한 포함할 수 있다. 이는 유형의(tangible) 컴퓨터 판독 가능 저장 매체들 예컨대, RAM, ROM, EEPROM(electronically erasable programmable ROM), 플래시 메모리 또는 다른 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 다른 광학 저장소, 자기 카세트들, 자기 테이프, 자기 디스크 저장 또는 다른 자기 저장 디바이스들 또는 다른 유형의 컴퓨터 판독 가능 매체들을 포함할 수 있다. 이는 또한, 무형의(nontangible) 컴퓨터 판독 가능 매체들 예컨대, 데이터 신호들, 데이터 송신들, 또는 원하는 정보를 송신하는 데 사용될 수 있고 컴퓨팅 시스템(1100)에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다.
[0072] 예로서, 컴퓨터 판독 가능 저장 매체들(1122)은 비착탈식 비휘발성 자기 매체들로부터 판독하거나 이에 기록하는 하드 디스크 드라이브, 착탈식 비휘발성 자기 디스크로부터 판독하거나 이에 기록하는 자기 디스크 드라이브, 및 착탈식 비휘발성 광학 디스크, 예컨대 CD ROM, DVD, 및 Blu-Ray® 디스크, 또는 다른 광학 매체들로부터 판독하거나 이에 기록하는 광학 디스크 드라이브를 포함할 수 있다. 컴퓨터 판독 가능 저장 매체들(1122)은 Zip® 드라이브, 플래시 메모리 카드들, USB(universal serial bus) 플래시 드라이브들, SD(secure digital) 카드들, DVD 디스크들, 디지털 비디오 테이프 등을 포함할 수 있다(그러나 이에 제한되지 않음). 컴퓨터 판독 가능 저장 매체들(1122)은 또한, 비휘발성 메모리에 기초하는 SSD(solid-state drive), 예컨대 플래시 메모리 기반 SSD들, 기업용 플래시 드라이브들, 솔리드 스테이트 ROM 등, 휘발성 메모리에 기초하는 SSD들, 예컨대 솔리드 스테이트 RAM, 동적 RAM, 정적 RAM, DRAM 기반 SSD들, MRAM(magnetoresistive RAM) SSD들, 및 DRAM과 플래시 메모리 기반 SSD들의 조합을 사용하는 하이브리드 SSD들을 포함할 수 있다. 디스크 드라이브들 및 이와 연관된 컴퓨터 판독 가능 매체들은 컴퓨터 시스템(1100)을 위한 컴퓨터 판독 가능 명령들, 데이터 구조들, 프로그램 모듈들 및 다른 데이터의 비휘발성 저장을 제공할 수 있다.
[0073] 통신 서브시스템(1124)은 다른 컴퓨터 시스템들 및 네트워크들에 대한 인터페이스를 제공한다. 통신 서브시스템(1124)은 컴퓨터 시스템(1100)으로부터 데이터를 수신하고 다른 시스템들로 데이터를 송신하기 위한 인터페이스로서 역할을 한다. 예를 들어, 통신 서브시스템(1124)은 컴퓨터 시스템(1100)이 인터넷을 통해 하나 이상의 디바이스들에 연결되는 것을 가능하게 한다. 일부 실시예들에서, 통신 서브시스템(1124)은 무선 음성 및/또는 데이터 네트워크들에 액세스하기 위한 라디오 주파수(RF) 트랜시버 컴포넌트들(예를 들어, 셀룰러 전화 기술, 진보된 데이터 네트워크 기술 예컨대, 3G, 4G 또는 EDGE(enhanced data rates for global evolution), WiFi(IEEE 802.11 패밀리 표준들) 또는 다른 모바일 통신 기술들 또는 이들의 임의의 조합을 사용함), GPS(global positioning system) 수신기 컴포넌트들 및/또는 다른 컴포넌트들을 포함할 수 있다. 일부 실시예들에서, 통신 서브시스템(1124)은 무선 인터페이스 외에도 또는 무선 인터페이스 대신에 유선 네트워크 연결(예를 들어, 이더넷)을 제공할 수 있다.
[0074] 일부 실시예들에서, 통신 서브시스템(1124)은 또한, 컴퓨터 시스템(1100)을 사용할 수 있는 하나 이상의 사용자들을 대신하여 구조화된 및/또는 구조화되지 않은 데이터 피드들(1126), 이벤트 스트림들(1128), 이벤트 업데이트들(1130) 등의 형태로 입력 통신을 수신할 수 있다.
[0075] 예로서, 통신 서브시스템(1124)은 소셜 네트워크들 및/또는 다른 통신 서비스들의 사용자들로부터 실시간으로 데이터 피드들(1126) 예컨대, Twitter® 피드들, Facebook® 업데이트들, 웹 피드들 예컨대, RSS(Rich Site Summary) 피드들 및/또는 하나 이상의 제3자 정보 소스들로부터의 실시간 업데이트들을 수신하도록 구성될 수 있다.
[0076] 부가적으로, 통신 서브시스템(1124)은 또한, 실시간 이벤트들의 이벤트 스트림들(1128) 및/또는 이벤트 업데이트들(1130)을 포함할 수 있는 연속적인 데이터 스트림들의 형태로 데이터를 수신하도록 구성될 수 있으며, 이는 명시적인 종료 없이 본질적으로 연속적이거나 무한할 수 있다. 연속적인 데이터를 생성하는 애플리케이션들의 예들은 예를 들어, 센서 데이터 애플리케이션들, 금융 티커(financial ticker)들, 네트워크 성능 측정 툴들(예를 들어, 네트워크 모니터링 및 트래픽 관리 애플리케이션들), 클릭스트림 분석 툴들, 자동차 트래픽 모니터링 등을 포함할 수 있다.
[0077] 통신 서브시스템(1124)은 또한 구조화된 및/또는 구조화되지 않은 데이터 피드들(1126), 이벤트 스트림들(1128), 이벤트 업데이트들(1130) 등을, 컴퓨터 시스템(1100)에 결합된 하나 이상의 스트리밍 데이터 소스 컴퓨터들과 통신할 수 있는 하나 이상의 데이터베이스들로 출력하도록 구성될 수 있다.
[0078] 컴퓨터 시스템(1100)은 핸드헬드 휴대용 디바이스(예를 들어, iPhone® 셀룰러 폰, iPad® 컴퓨팅 태블릿, PDA), 웨어러블 디바이스(예를 들어, Google Glass® 머리 장착형 디스플레이), PC, 워크스테이션, 메인프레임, 키오스크, 서버 랙 또는 임의의 다른 데이터 프로세싱 시스템을 포함하는 다양한 타입들 중 하나일 수 있다.
[0079] 컴퓨터들 및 네트워크들의 끊임없이 변하는 성질로 인해, 도면에 묘사된 컴퓨터 시스템(1100)의 설명은 특정 예로서만 의도된다. 도면에 묘사된 시스템보다 더 많거나 더 적은 컴포넌트들을 갖는 다수의 다른 구성들이 가능하다. 예를 들어, 커스터마이징된 하드웨어가 또한 사용될 수 있고 그리고/또는 특정 엘리먼트들이 하드웨어, 펌웨어, 소프트웨어(애플릿들을 포함함) 또는 조합으로 구현될 수 있다. 추가로, 네트워크 입력/출력 디바이스들과 같은 다른 컴퓨팅 디바이스들에 대한 연결이 이용될 수 있다. 본 개시내용 및 본원에 제공된 교시들에 기초하여, 다양한 실시예들을 구현하기 위한 다른 방식들 및/또는 방법들이 명백할 것이다.
[0080] 전술한 설명에서, 설명의 목적들을 위해, 다양한 실시예들의 철저한 이해를 제공하기 위해 다수의 특정 세부사항들이 제시되었다. 그러나, 일부 실시예들은 이들 특정 세부사항들 중 일부 없이 실시될 수 있다는 것이 명백할 것이다. 다른 경우들에서, 잘 알려진 구조들 및 디바이스들은 블록도 형태로 도시된다.
[0081] 전술한 설명은 단지 예시적인 실시예들을 제공하며, 본 개시내용의 범위, 적용 가능성, 또는 구성을 제한하도록 의도되지 않는다. 오히려, 다양한 실시예들의 전술한 설명은 적어도 하나의 실시예를 구현하기 위한 가능한 개시내용을 제공할 것이다. 첨부된 청구항들에 제시된 바와 같은 일부 실시예들의 사상 및 범위를 벗어나지 않으면서, 엘리먼트들의 기능 및 어레인지먼트에서 다양한 변경들이 이루어질 수 있다는 것이 이해되어야 한다.
[0082] 실시예들의 철저한 이해를 제공하기 위해 전술한 설명에서 특정 세부사항들이 제공된다. 그러나, 이들 특정 세부사항들 없이 실시예들이 실시될 수 있다는 것이 이해될 것이다. 예를 들어, 회로들, 시스템들, 네트워크들, 프로세스들, 및 다른 컴포넌트들은 불필요한 세부사항으로 실시예들을 모호하게 하지 않기 위해 블록도 형태의 컴포넌트들로서 도시되었을 수 있다. 다른 경우들에서, 실시예들을 모호하게 하는 것을 피하기 위해, 잘 알려진 회로들, 프로세스들, 알고리즘들, 구조들 및 기법들이 불필요한 세부 사항 없이 도시되었을 수 있다.
[0083] 또한, 개별 실시예들은 플로차트, 흐름도, 데이터 흐름도, 구조도, 또는 블록도로서 묘사된 프로세스로서 설명될 수 있다는 것이 유의된다. 플로차트가 순차적인 프로세스로서 동작들을 설명했을 수 있지만, 동작들 중 다수는 병렬로 또는 동시에 수행될 수 있다. 게다가, 동작들의 순서는 재배열될 수 있다. 프로세스는 프로세스의 동작들이 완료될 때 종료되지만, 도면에 포함되지 않은 부가적인 단계들을 가질 수 있다. 프로세스는 방법, 기능, 절차, 서브루틴, 서브프로그램 등에 대응할 수 있다. 프로세스가 함수에 대응할 때, 프로세스의 종결은 호출 함수 또는 주 함수로의 함수의 리턴에 대응할 수 있다.
[0084] 용어 "컴퓨터 판독 가능 매체"는 휴대용 또는 고정된 저장 디바이스들, 광학 저장 디바이스들, 무선 채널들, 및 명령(들) 및/또는 데이터를 저장, 포함 또는 반송할 수 있는 다양한 다른 매체들을 포함한다(그러나 이에 제한되지 않음). 코드 세그먼트 또는 기계 실행 가능 명령들은 절차, 함수, 서브프로그램, 프로그램, 루틴, 서브루틴, 모듈, 소프트웨어 패키지, 클래스, 또는 명령들, 데이터 구조들, 또는 프로그램 스테이트먼트들의 임의의 조합을 나타낼 수 있다. 코드 세그먼트는, 정보, 데이터, 독립변수들, 파라미터들, 또는 메모리 콘텐츠들을 전달 및/또는 수신함으로써 다른 코드 세그먼트 또는 하드웨어 회로에 결합될 수 있다. 정보, 독립변수들, 파라미터들, 데이터 등은, 메모리 공유, 메시지 전달, 토큰 전달, 네트워크 송신 등을 포함하는 임의의 적절한 수단을 통해 전달, 포워딩, 또는 송신될 수 있다.
[0085] 또한, 실시예들은, 하드웨어, 소프트웨어, 펌웨어, 미들웨어, 마이크로코드, 하드웨어 디스크립션 언어들, 또는 이들의 임의의 결합에 의해 구현될 수 있다. 소프트웨어, 펌웨어, 미들웨어 또는 마이크로코드로 구현될 때, 필요한 작업들을 수행하기 위한 프로그램 코드 또는 코드 세그먼트들은 기계 판독 가능 매체에 저장될 수 있다. 프로세서(들)는 필요한 작업들을 수행할 수 있다.
[0086] 전술한 명세서에서, 특징들은 특징들의 구체적인 실시예들을 참조하여 설명되었지만, 모든 실시예들이 이것으로 제한되는 것은 아니라는 것이 인식되어야 한다. 일부 실시예들의 다양한 특징들 및 양상들은 개별적으로 또는 공동으로 사용될 수 있다. 추가로, 실시예들은 본 명세서의 더 넓은 사상 및 범위를 벗어나지 않으면서, 본원에 설명된 것들 이외의 임의의 수의 환경들 및 애플리케이션들에서 활용될 수 있다. 따라서, 명세서 및 도면들은 제한적이기 보다는 예시적인 것으로 간주되어야 한다.
[0087] 부가적으로, 예시의 목적들을 위해, 방법들은 특정 순서로 설명되었다. 대안적인 실시예들에서, 방법들은 설명된 순서와 상이한 순서로 수행될 수 있다는 것이 인식되어야 한다. 위에서 설명된 방법들은 하드웨어 컴포넌트들에 의해 수행될 수 있거나, 또는 기계 예컨대, 범용 또는 특수 목적 프로세서 또는 명령들로 프로그래밍된 로직 회로들이 방법들을 수행하게 하는 데 사용될 수 있는 기계 실행 가능 명령들의 시퀀스로 구체화될 수 있다는 것이 또한 인식되어야 한다. 이들 기계 실행 가능 명령들은 하나 이상의 기계 판독 가능 매체들 예컨대, CD-ROM들 또는 다른 타입의 광학 디스크들, 플로피 디스켓들, ROM들, RAM들, EPROM들, EEPROM들, 자기 또는 광학 카드들, 플래시 메모리 또는 전자 명령들을 저장하는 데 적합한 다른 타입들의 기계 판독 가능 매체들 상에 저장될 수 있다. 대안적으로, 방법들은 하드웨어 및 소프트웨어의 조합에 의해 수행될 수 있다.

Claims (20)

  1. 뉴럴 네트워크 계층의 출력들에 대한 희소성(sparsity)을 유도하는 방법으로서,
    뉴럴 네트워크의 계층으로부터 출력들을 수신하는 단계;
    상기 출력들을 복수의 파티션들로 파티셔닝하는 단계;
    제로 값들을 갖는 것으로 취급될 수 있는, 상기 복수의 파티션들 내의 제1 파티션들을 식별하는 단계;
    상기 복수의 파티션들 내의 나머지 제2 파티션들 사이에서 상기 제1 파티션들의 위치들을 식별하는 인코딩을 생성하는 단계; 및
    상기 인코딩 및 상기 제2 파티션들을 상기 뉴럴 네트워크의 후속 계층으로 전송하는 단계를 포함하는,
    뉴럴 네트워크 계층의 출력들에 대한 희소성을 유도하는 방법.
  2. 제1 항에 있어서,
    상기 뉴럴 네트워크의 후속 계층에서 상기 제2 파티션들을 수신하는 단계; 및
    상기 인코딩에 기초하여 상기 제2 파티션들을 배열하는 단계를 더 포함하는,
    뉴럴 네트워크 계층의 출력들에 대한 희소성을 유도하는 방법.
  3. 제2 항에 있어서,
    상기 후속 계층은 곱셈 연산을 수행하고, 이로써 상기 제1 파티션들은 제로를 곱하는 연산(multiply-by-zero operation)으로서 폐기될 수 있는,
    뉴럴 네트워크 계층의 출력들에 대한 희소성을 유도하는 방법.
  4. 제1 항에 있어서,
    상기 출력들은 상기 계층으로부터의 출력들의 3차원 어레이를 포함하고, 상기 출력들의 어레이는 상기 뉴럴 네트워크 내의 상이한 채널들에 대한 차원을 포함하는,
    뉴럴 네트워크 계층의 출력들에 대한 희소성을 유도하는 방법.
  5. 제4 항에 있어서,
    상기 복수의 파티션들은 상기 출력들의 어레이의 3차원 파티션들을 포함하는,
    뉴럴 네트워크 계층의 출력들에 대한 희소성을 유도하는 방법.
  6. 제1 항에 있어서,
    상기 제1 파티션들은 상기 복수의 파티션들에서 인접하지 않은,
    뉴럴 네트워크 계층의 출력들에 대한 희소성을 유도하는 방법.
  7. 제1 항에 있어서,
    상기 제로 값들을 갖는 것으로 취급될 수 있는, 상기 복수의 파티션들 내의 제1 파티션들을 식별하는 단계는,
    설계 환경으로부터 기준을 수신하는 단계; 및
    상기 복수의 파티션들 각각에 상기 기준을 적용하는 단계를 포함하는,
    뉴럴 네트워크 계층의 출력들에 대한 희소성을 유도하는 방법.
  8. 제7 항에 있어서,
    상기 기준은, 파티션 내의 값들에 대한 집계(aggregate)를 계산하고, 상기 집계가 임계치 미만이면, 상기 파티션 내의 값들을 제로로 설정하는 상대 크기 함수(relative magnitude function)를 포함하는,
    뉴럴 네트워크 계층의 출력들에 대한 희소성을 유도하는 방법.
  9. 제7 항에 있어서,
    상기 기준은 상기 설계 환경으로부터 런타임 함수로서 전송되는,
    뉴럴 네트워크 계층의 출력들에 대한 희소성을 유도하는 방법.
  10. 제7 항에 있어서,
    상기 기준은 상기 뉴럴 네트워크를 표현하는 그래프의 일부로서 인코딩되는,
    뉴럴 네트워크 계층의 출력들에 대한 희소성을 유도하는 방법.
  11. 뉴럴 네트워크 가속기(accelerator)로서,
    뉴럴 네트워크의 계층을 구현하고 상기 계층으로부터 출력들을 생성하도록 구성된 컴퓨트 노드(compute node);
    동작들을 수행하도록 구성된 파티셔닝 회로 ― 상기 동작들은,
    상기 뉴럴 네트워크의 계층으로부터 출력들을 수신하는 동작;
    상기 출력들을 복수의 파티션들로 파티셔닝하는 동작;
    제로 값들을 갖는 것으로 취급될 수 있는, 상기 복수의 파티션들 내의 제1 파티션들을 식별하는 동작; 및
    상기 복수의 파티션들 내의 나머지 제2 파티션들 사이에서 상기 제1 파티션들의 위치들을 식별하는 인코딩을 생성하는 동작을 포함함 ―; 및
    상기 뉴럴 네트워크의 후속 계층에 대해 상기 인코딩 및 상기 제2 파티션들을 저장하도록 구성된 메모리를 포함하는,
    뉴럴 네트워크 가속기.
  12. 제11 항에 있어서,
    복수의 칩렛들을 더 포함하며,
    상기 컴퓨트 노드는 상기 복수의 칩렛들 내의 제1 칩렛 상에 구현되고, 상기 후속 계층은 상기 복수의 칩렛들 내의 제2 칩렛 상에 구현되는,
    뉴럴 네트워크 가속기.
  13. 제11 항에 있어서,
    동작들을 수행하도록 구성된 시퀀서 회로를 더 포함하며,
    상기 동작들은,
    상기 뉴럴 네트워크의 후속 계층에서 상기 제2 파티션들을 수신하는 동작; 및
    상기 인코딩에 기초하여 상기 제2 파티션들을 배열하는 동작을 포함하는,
    뉴럴 네트워크 가속기.
  14. 제11 항에 있어서,
    상기 뉴럴 네트워크의 계층은 컨볼루션 코어(convolution core)를 실행하는 것을 포함하는,
    뉴럴 네트워크 가속기.
  15. 제11 항에 있어서,
    상기 메모리는 온-칩 정적 랜덤-액세스 메모리(SRAM)를 포함하는,
    뉴럴 네트워크 가속기.
  16. 제11 항에 있어서,
    상기 뉴럴 네트워크를 트레이닝할 때, 상기 파티셔닝 회로는 사용되지 않는,
    뉴럴 네트워크 가속기.
  17. 제11 항에 있어서,
    상기 복수의 파티션들 내의 파티션들의 수는 상기 뉴럴 네트워크의 트레이닝 동안 결정되는,
    뉴럴 네트워크 가속기.
  18. 제11 항에 있어서,
    상기 제로 값들을 갖는 것으로 취급될 수 있는, 상기 복수의 파티션들 내의 제1 파티션들을 식별하는 동작은,
    설계 환경으로부터 기준을 수신하는 동작; 및
    상기 복수의 파티션들 각각에 상기 기준을 적용하는 동작을 포함하는,
    뉴럴 네트워크 가속기.
  19. 제11 항에 있어서,
    상기 출력들은 상기 계층으로부터의 출력들의 3차원 어레이를 포함하고, 상기 출력들의 어레이는 상기 뉴럴 네트워크 내의 상이한 채널들에 대한 차원을 포함하고, 상기 복수의 파티션들은 상기 출력들의 어레이의 3차원 파티션들을 포함하는,
    뉴럴 네트워크 가속기.
  20. 뉴럴 네트워크 계층의 출력들에 대한 희소성을 유도하는 방법으로서,
    뉴럴 네트워크의 계층으로부터 출력들을 수신하는 단계;
    상기 출력들을 복수의 파티션들로 파티셔닝하는 단계 ― 상기 복수의 파티션들 각각은 복수의 상기 출력들을 포함함 ―;
    제1 파티션들의 값들이 제로로 설정될 수 있음을 표시하는 기준을 충족하는, 상기 복수의 파티션들 내의 상기 제1 파티션들을 식별하는 단계;
    상기 복수의 파티션들 내의 나머지 제2 파티션들 사이에서 상기 제1 파티션들의 위치들을 식별하는 인코딩을 생성하는 단계;
    상기 인코딩 및 상기 제2 파티션들을 상기 뉴럴 네트워크의 후속 계층으로 전송하고 상기 제1 파티션들을 폐기하는 단계;
    상기 뉴럴 네트워크의 후속 계층에서 상기 제2 파티션들을 수신하는 단계;
    상기 인코딩에 기초하여 제로 값들을 갖는 상기 제2 파티션들을 배열하는 단계; 및
    상기 뉴럴 네트워크에서 상기 후속 계층을 실행하는 단계를 포함하는,
    뉴럴 네트워크 계층의 출력들에 대한 희소성을 유도하는 방법.
KR1020237044243A 2021-05-25 2022-05-24 뉴럴 네트워크들에서의 동적 활성화 희소성 KR20240011778A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/330,096 US20220383121A1 (en) 2021-05-25 2021-05-25 Dynamic activation sparsity in neural networks
US17/330,096 2021-05-25
PCT/US2022/030790 WO2022251265A1 (en) 2021-05-25 2022-05-24 Dynamic activation sparsity in neural networks

Publications (1)

Publication Number Publication Date
KR20240011778A true KR20240011778A (ko) 2024-01-26

Family

ID=84194034

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020237044243A KR20240011778A (ko) 2021-05-25 2022-05-24 뉴럴 네트워크들에서의 동적 활성화 희소성

Country Status (6)

Country Link
US (1) US20220383121A1 (ko)
EP (1) EP4348511A1 (ko)
JP (1) JP2024522107A (ko)
KR (1) KR20240011778A (ko)
CN (1) CN117677957A (ko)
WO (1) WO2022251265A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2024514374A (ja) * 2021-04-09 2024-04-02 エヌビディア コーポレーション データ・セットにおけるスパース性を増大させること

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10997496B2 (en) * 2016-08-11 2021-05-04 Nvidia Corporation Sparse convolutional neural network accelerator
US11693627B2 (en) * 2018-02-09 2023-07-04 Deepmind Technologies Limited Contiguous sparsity pattern neural networks
CA3066838A1 (en) * 2019-01-08 2020-07-08 Comcast Cable Communications, Llc Processing media using neural networks
KR20200125212A (ko) * 2019-04-26 2020-11-04 에스케이하이닉스 주식회사 신경망 가속 장치 및 그것의 동작 방법
US11816574B2 (en) * 2019-10-25 2023-11-14 Alibaba Group Holding Limited Structured pruning for machine learning model

Also Published As

Publication number Publication date
WO2022251265A1 (en) 2022-12-01
US20220383121A1 (en) 2022-12-01
CN117677957A (zh) 2024-03-08
JP2024522107A (ja) 2024-06-11
EP4348511A1 (en) 2024-04-10
TW202303458A (zh) 2023-01-16

Similar Documents

Publication Publication Date Title
US20190278600A1 (en) Tiled compressed sparse matrix format
US11580386B2 (en) Convolutional layer acceleration unit, embedded system having the same, and method for operating the embedded system
US11392829B1 (en) Managing data sparsity for neural networks
CN108885571B (zh) 分批处理机器学习模型的输入
CN110852438B (zh) 模型生成方法和装置
KR20200050409A (ko) 저장 매체 액세스의 인공 지능 가능 관리
JP2020537784A (ja) ニューラルネットワークアクセラレーションのための機械学習ランタイムライブラリ
US10387161B2 (en) Techniques for capturing state information and performing actions for threads in a multi-threaded computing environment
Zhao et al. Edgeml: An automl framework for real-time deep learning on the edge
JP7285977B2 (ja) ニューラルネットワークトレーニング方法、装置、電子機器、媒体及びプログラム製品
Liu et al. AdaSpring: Context-adaptive and runtime-evolutionary deep model compression for mobile applications
CN113449859A (zh) 一种数据处理方法及其装置
CN113469354B (zh) 受存储器限制的神经网络训练
US11295236B2 (en) Machine learning in heterogeneous processing systems
US20220100763A1 (en) Optimizing job runtimes via prediction-based token allocation
WO2023099954A1 (en) Dynamic batching for inference system for transformer-based generation tasks
CN116070557A (zh) 使用强化学习的数据路径电路设计
JP2024517833A (ja) 特定用途向け機械学習アクセラレータの生成およびグローバルなチューニング
KR20240011778A (ko) 뉴럴 네트워크들에서의 동적 활성화 희소성
TWI843108B (zh) 神經網路中的動態啟動稀疏性
US20220405561A1 (en) Electronic device and controlling method of electronic device
US20230100930A1 (en) Mixing sparsity compression
KR20200139909A (ko) 전자 장치 및 그의 연산 수행 방법
US20230206113A1 (en) Feature management for machine learning system
CN115114927A (zh) 一种模型训练方法和相关装置