KR20220031629A - 분산 프로세싱을 가속화하기 위한 파이프라인 병렬 처리 시스템 및 방법 - Google Patents

분산 프로세싱을 가속화하기 위한 파이프라인 병렬 처리 시스템 및 방법 Download PDF

Info

Publication number
KR20220031629A
KR20220031629A KR1020227002206A KR20227002206A KR20220031629A KR 20220031629 A KR20220031629 A KR 20220031629A KR 1020227002206 A KR1020227002206 A KR 1020227002206A KR 20227002206 A KR20227002206 A KR 20227002206A KR 20220031629 A KR20220031629 A KR 20220031629A
Authority
KR
South Korea
Prior art keywords
data
neural network
circuits
layer
perform
Prior art date
Application number
KR1020227002206A
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 KR20220031629A publication Critical patent/KR20220031629A/ko

Links

Images

Classifications

    • G06N3/0635
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • G06N3/0454
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

본 개시는 분산 학습 네트워크 그래프를 가속화하기 위한 파이프라인 병렬 처리를 위한 시스템, 방법, 및 디바이스를 포함한다. 신경망의 제1 계층에 대한 제1 데이터가 메모리에 저장될 수 있다. 제1 복수의 프로세싱 요소(PE) 회로들을 포함하는 제1 회로는 메모리로부터 제1 데이터를 판독하고 제1 데이터를 사용하여 신경망의 제1 계층에 대한 계산을 수행하여 제2 데이터를 생성할 수 있다. 제1 회로는 신경망의 제2 계층에 대한 계산을 수행하기 위해 생성된 제2 데이터를 제2 회로에 대한 입력으로서 출력하는 복수의 버퍼들을 포함한다. 제2 회로는 제2 데이터를 사용하여 신경망의 제2 계층에 대한 계산을 수행하도록 구성된 제2 복수의 PE 회로들을 포함한다.

Description

분산 프로세싱을 가속화하기 위한 파이프라인 병렬 처리 시스템 및 방법
본 개시는 일반적으로 신경망용 AI 가속기에서 파이프라인 병렬 처리(pipelined parallelism)를 위한 시스템 및 방법을 포함하지만 이에 제한되지 않는 신경망에 관한 것이다.
기계 학습은 예를 들어 컴퓨터 비전, 이미지 프로세싱 등을 포함한 다양한 상이한 컴퓨팅 환경들에서 구현되고 있다. 일부 기계 학습 시스템들은 신경망(예를 들어, 인공 신경망)들을 통합할 수 있다. 그러나, 이러한 신경망들은 프로세싱 관점과 에너지 효율성 관점 모두에서 계산 비용이 많이 들 수 있다.
본 명세서에 개시된 다양한 실시예들은 신경망에 대한 AI 관련 프로세싱을 수행하기 위한 파이프라인 병렬 처리를 위한 디바이스에 관한 것이다. 디바이스는 신경망의 제1 계층에 대한 제1 데이터를 저장하도록 구성된 메모리(예를 들어, 정적 랜덤 액세스 메모리)를 포함한다. 디바이스는 메모리로부터 제1 데이터를 판독하고 제1 데이터를 사용하여 신경망의 제1 계층에 대한 계산을 수행하여 제2 데이터를 생성하도록 구성된 제1 복수의 프로세싱 요소(PE) 회로들을 갖는 제1 회로를 포함한다. 제1 회로는 생성된 제2 데이터를 제2 회로에 대한 입력으로서 출력하여 신경망의 제2 계층에 대한 계산을 수행하도록 구성된 복수의 버퍼들(예를 들어, 순차 및/또는 조합 로직 또는 디바이스들)을 더 포함한다. 제2 회로는 제2 데이터를 사용하여 신경망의 제2 계층에 대한 계산을 수행하도록 구성된 제2 복수의 PE 회로들을 포함한다.
일부 실시예들에서, 제1 복수의 PE 회로들은, 제2 복수의 PE 회로들이 신경망의 제2 계층에 대한 계산을 수행하는 동안, 신경망의 적어도 하나의 노드에 대한 계산을 수행하도록 구성된다. 일부 실시예들에서, 적어도 하나의 노드는 신경망의 제3 계층으로부터 또는 신경망의 제1 계층으로부터의 것이다. 일부 실시예들에서, 복수의 버퍼들은 메모리로 또는 메모리 외부로의 제2 데이터의 임의의 전송을 바이패스함으로써, 생성된 제2 데이터를 제2 회로에 대한 입력으로서 출력하도록 구성된다. 일부 실시예들에서, 제2 복수의 PE 회로들은 또한 제3 데이터를 생성하기 위해 제2 데이터를 사용하도록 구성된다. 일부 실시예들에서, 제2 복수의 PE 회로들은 또한 생성된 제3 데이터를 메모리에 저장하도록 구성된다. 일부 실시예들에서, 제2 회로는 생성된 제3 데이터를 제3 회로에 대한 입력으로서 출력하도록 구성된 복수의 버퍼들을 더 포함한다.
일부 실시예들에서, 제1 데이터는 신경망의 제1 계층에 대한 가중치 또는 활성화 정보 중 적어도 하나를 포함하고, 제2 데이터는 신경망의 제2 계층에 대한 가중치 또는 활성화 정보 중 적어도 하나를 포함한다. 일부 실시예들에서, 제1 복수의 PE 회로들은 제1 데이터를 사용하여 컨볼루션 연산을 수행하도록 구성되고, 제2 복수의 PE 회로들은 제2 데이터를 사용하여 내적 연산을 수행하도록 구성된다. 일부 실시예들에서, 제1 회로 및 제2 회로는 동일한 반도체 디바이스 상에 형성된다. 일부 실시예들에서, 복수의 버퍼들은 생성된 제2 데이터를 버퍼링하고 생성된 제2 데이터를 제2 회로로 출력하기에 충분한 용량으로 구성된다.
본 명세서에 개시된 다양한 실시예들은 신경망에 대한 AI 관련 프로세싱을 수행하기 위한 파이프라인 병렬 처리를 위한 방법에 관한 것이다. 방법은 메모리에 신경망의 제1 계층에 대한 제1 데이터를 저장하는 단계를 포함할 수 있다. 방법은 제1 복수의 프로세싱 요소(PE) 회로들에 의해, 메모리로부터 제1 데이터를 판독하는 단계를 포함할 수 있다. 방법은 제1 복수의 PE 회로들에 의해, 제1 데이터를 사용하여 제2 데이터를 생성하기 위해 신경망의 제1 계층에 대한 계산을 수행하는 단계를 포함할 수 있다. 방법은 제1 복수의 PE 회로들의 복수의 버퍼들에 의해, 생성된 제2 데이터를 제2 복수의 PE 회로들에 대한 입력으로서 제공하여 신경망의 제2 계층에 대한 계산을 수행하는 단계를 포함할 수 있다. 방법은 제2 복수의 PE 회로들에 의해, 제2 데이터를 사용하여 신경망의 제2 계층에 대한 계산을 수행하는 단계를 포함할 수 있다.
일부 실시예들에서, 방법은 제1 복수의 PE 회로들에 의해, 제2 복수의 PE 회로들이 신경망의 제2 계층에 대한 계산을 수행하는 동안, 신경망의 적어도 하나의 노드에 대한 계산을 수행하는 동안 단계를 포함한다. 일부 실시예들에서, 적어도 하나의 노드는 신경망의 제3 계층으로부터 또는 신경망의 제1 계층으로부터의 것이다. 일부 실시예들에서, 방법은 메모리로 또는 메모리 외부로의 제2 데이터의 임의의 전송을 바이패스함으로써 복수의 버퍼들에 의해, 생성된 제2 데이터를 제2 회로 또는 복수의 PE 회로들에 대한 입력으로서 제공하는 단계를 포함한다. 일부 실시예들에서, 방법은 제2 복수의 PE 회로들에 의해, 제2 데이터를 사용하여 제3 데이터를 생성하는 단계를 포함한다. 일부 실시예들에서, 방법은 제2 복수의 PE 회로들에 의해, 생성된 제3 데이터를 메모리에 저장하는 단계를 포함한다. 일부 실시예들에서, 방법은 제2 회로의 복수의 버퍼들(예를 들어, 제2 복수의 PE 회로들에 대응하는 버퍼들)에 의해, 생성된 제3 데이터를 제3 회로에 대한 입력으로서 제공하는 단계를 포함한다. 일부 실시예들에서, 제1 데이터는 신경망의 제1 계층에 대한 가중치 또는 활성화 정보 중 적어도 하나를 포함하고, 제2 데이터는 신경망의 제2 계층에 대한 가중치 또는 활성화 정보 중 적어도 하나를 포함한다. 일부 실시예들에서, 방법은 제1 복수의 PE 회로들에 의해, 제1 데이터를 사용하여 컨볼루션 연산을 수행하는 단계, 및 제2 복수의 PE 회로들에 의해, 제2 데이터를 사용하여 내적 연산을 수행하는 단계를 포함한다.
이러한 양상들과 다른 양상들 및 구현들이 아래에서 자세히 논의된다. 전술한 정보 및 다음의 상세한 설명은 다양한 양상들 및 구현들의 예시적인 예들을 포함하며, 청구된 양상들 및 구현들의 본질 및 특성을 이해하기 위한 개요 또는 프레임워크를 제공한다. 도면들은 다양한 양상들 및 구현들에 대한 예시 및 추가의 이해를 제공하며, 이는 본 명세서에 통합되고 그 일부를 구성한다. 실시예로의 통합에 적합한 것으로서 기술된 임의의 특징들은 본 발명의 임의의 및 모든 양상들 및 실시예들에 걸쳐 일반화될 수 있도록 의도된다는 것이 이해될 것이다.
첨부된 도면들은 일정한 비율대로 도시된 것이 아니다. 다양한 도면들의 동일한 참조 번호와 명칭들은 동일한 요소들을 나타낸다. 명확성을 위해, 모든 도면에 모든 구성 요소들이 표시된 것은 아니다.
도 1a는 본 개시내용의 예시적인 구현에 따른, 인공 지능(AI) 관련 프로세싱을 수행하기 위한 시스템의 실시예의 블록도이다.
도 1b는 본 개시내용의 예시적인 구현에 따른, 인공 지능(AI) 관련 프로세싱을 수행하기 위한 디바이스의 실시예의 블록도이다.
도 1c는 본 개시내용의 예시적인 구현에 따른, 인공 지능(AI) 관련 프로세싱을 수행하기 위한 디바이스의 실시예의 블록도이다.
도 1d는 본 개시내용의 예시적인 구현에 따른 전형적인 컴퓨팅 환경의 블록도이다.
도 2a는 본 개시내용의 예시적인 구현에 따른, 신경망에 대한 AI 관련 프로세싱을 수행하기 위한 파이프라인 병렬 처리를 위한 디바이스의 블록도이다.
도 2b는 본 개시내용의 예시적인 구현에 따른, 신경망에 대한 AI 관련 프로세싱을 수행하기 위한 파이프라인 병렬 처리를 위한 디바이스의 블록도이다.
도 2c는 본 개시내용의 예시적인 구현에 따른, 신경망에 대한 AI 관련 프로세싱을 수행하기 위한 파이프라인 병렬 처리를 위한 프로세스를 예시하는 흐름도이다.
특정 실시예들을 상세하게 예시하는 도면들로 돌아가기 전에, 본 개시는 상세한 설명에서 설명되거나 도면에서 예시된 세부사항들 또는 방법론들로 제한되지 않는다는 것을 이해해야 한다. 또한, 본 명세서에서 사용된 용어는 단지 설명의 목적을 위한 것이며 제한적인 것으로 간주되어서는 안 된다는 것을 이해해야 한다.
아래에서 본 발명의 다양한 실시예들의 설명을 읽을 목적으로, 본 명세서의 섹션 및 각각의 내용들에 대한 다음 설명이 도움이 될 수 있다.
- 섹션 A는 본 시스템, 방법 및 디바이스의 실시예를 실행하거나 구현하는 데 유용한 환경, 시스템, 구성 및/또는 기타 측면들을 설명한다;
- 섹션 B는 신경망에 대한 AI 관련 프로세싱을 수행하기 위한 파이프라인 병렬 처리를 위한 디바이스, 시스템, 및 방법의 실시예들을 설명한다.
A. 인공 지능 관련 프로세싱에 대한 환경
섹션 B에서 시스템, 장치 및/또는 방법의 실시예들의 세부사항을 논의하기 전에, 시스템, 장치 및/또는 방법의 특정 실시예들을 실행하거나 구현하는 데 유용한 환경, 시스템, 구성 및/또는 기타 측면들을 논의하는 것이 도움이 될 수 있다. 이제 도 1a를 참조하면, 인공 지능(AI) 관련 프로세싱을 수행하기 위한 시스템의 실시예가 도시되어 있다. 간략한 개요에서, 시스템은 입력 데이터(110)를 사용하여 AI 관련 프로세싱을 수행할 수 있는 하나 이상의 AI 가속기들(108)을 포함한다. AI 가속기(108)로 언급되지만, 때때로 신경망 가속기(NNA), 신경망 칩 또는 하드웨어, AI 프로세서, AI 칩 등으로 지칭된다. AI 가속기(들)(108)는 입력 데이터(110) 및/또는 파라미터(128)(예를 들어, 가중치 및/또는 편향 정보)에 따라 출력 데이터(112)를 출력하거나 제공하기 위해 AI 관련 프로세싱을 수행할 수 있다. AI 가속기(108)는 하나 이상의 신경망들(114)(예를 들어, 인공 신경망), 하나 이상의 프로세서(들)(24) 및/또는 하나 이상의 저장 디바이스들(126)을 포함 및/또는 구현할 수 있다.
위에서 언급한 요소들 또는 구성요소들 각각은 하드웨어, 또는 하드웨어와 소프트웨어의 조합으로 구현된다. 예를 들어, 이러한 요소들 또는 구성요소들 각각은 디지털 및/또는 아날로그 요소들(예를 들어, 하나 이상의 트랜지스터, 논리 게이트, 레지스터, 메모리 디바이스, 저항성 요소, 전도성 요소, 용량성 요소)을 포함할 수 있는 회로와 같은 하드웨어에서 실행되는 임의의 애플리케이션, 프로그램, 라이브러리, 스크립트, 테스크, 서비스, 프로세스 또는 임의의 유형 및 형태의 실행 가능한 명령들을 포함할 수 있다.
입력 데이터(110)는 AI 가속기(들)(108)의 신경망(114)을 구성, 조정, 트레이닝 및/또는 활성화하기 위한, 및/또는 프로세서(들)(124)에 의한 프로세싱을 위한 임의의 유형 또는 형태의 데이터를 포함할 수 있다. 신경망(114)은 때때로 인공 신경망(ANN)으로 지칭된다. 신경망을 구성, 조정 및/또는 트레이닝하는 것은 이력 데이터와 같은 트레이닝 데이터 세트들(예를 들어, 입력 데이터(110))이 프로세싱을 위해 신경망에 제공되는 기계 학습 프로세스를 참조하거나 포함할 수 있다. 조정 또는 구성은 신경망이 정확도를 개선할 수 있도록 신경망(114)의 트레이닝 또는 프로세싱을 참조하거나 포함할 수 있다. 신경망(114)을 조정하거나 구성하는 것은 예를 들어 신경망(114)에 대해 원하는 문제 또는 목표의 유형에 대해 성공적인 것으로 입증된 아키텍처들을 사용하여 신경망을 설계, 형성, 구축, 합성 및/또는 확립하는 것을 포함할 수 있다. 일부 경우에, 하나 이상의 신경망들(114)은 동일하거나 유사한 베이스라인 모델에서 시작할 수 있지만, 조정, 트레이닝 또는 학습 프로세스 동안 신경망들(114)의 결과들은 충분히 상이하게 될 수 있으며 각각의 신경망(114)이 상이한 목표 또는 목적을 위해 조정되거나 트레이닝되거나 또는 베이스라인 모델에 있는 상이한 신경망과 비교하여 더 높은 수준의 정확도와 신뢰성으로 특정 유형의 입력을 처리하고 특정 유형의 출력을 생성하도록 조정될 수 있다. 신경망(114)을 조정하는 것은 각각의 신경망(114)에 대해 상이한 파라미터들(128)을 설정하는 것, 각각의 신경망(114)에 대해 파라미터들(114)을 상이하게 미세 조정(fine-tuning)하는 것, 또는 상이한 가중치(예를 들어, 하이퍼파라미터(hyperparameters) 또는 학습률(learning rates)), 텐서 플로우(tensor flows) 등을 할당하는 것을 포함할 수 있다. 따라서, 조정 또는 트레이닝 프로세스 및 신경망(들) 및/또는 시스템의 목표에 기초하여 신경망(들)(114)에 대한 적절한 파라미터들(128)을 설정하는 것은 전체 시스템의 성능을 개선할 수 있다.
AI 가속기(108)의 신경망(114)은 예를 들어, 컨볼루션 신경망(CNN), 딥 컨볼루션 네트워크, 피드 포워드 신경망(예를 들어, 다층 퍼셉트론(MLP)), 딥 피드포워드 신경망, 방사형 기저 기능 신경망(radial basis function neural network), 코호넨 자기 조직화 신경망(Kohonen self-organizing neural network), 순환 신경망(recurrent neural network), 모듈러 신경망, 장/단기 메모리 신경망 등을 포함하는 임의의 유형의 신경망을 포함할 수 있다. 신경망(들)(114)은, 예를 들어 자연어 프로세싱(natural language processing)과 같이, 데이터(예를 들어, 이미지, 오디오, 비디오) 프로세싱, 객체 또는 피처 인식(object or feature recognition), 추천 기능(recommender functions), 데이터 또는 이미지 분류, 데이터(예를 들어, 이미지) 분석 등을 수행하기 위해 배치되거나 사용될 수 있다.
예로서, 그리고 하나 이상의 실시예들에서, 신경망(114)은 컨볼루션 신경망으로 구성되거나 이를 포함할 수 있다. 컨볼루션 신경망은 각각 다른 목적을 수행할 수 있는 하나 이상의 컨볼루션 셀들(또는 풀링 계층들) 및 커널을 포함할 수 있다. 컨볼루션 신경망은 컨볼루션 커널(때때로, 간단히 "커널"이라고도 함)을 포함, 통합 및/또는 사용할 수 있다. 컨볼루션 커널은 입력 데이터를 처리할 수 있고 풀링 계층들(pooling layers)은 예를 들어 최대값(max)과 같은 비선형 함수들을 사용하여 데이터를 단순화할 수 있고, 그에 따라 불필요한 피처들을 줄일 수 있다. 컨볼루션 신경망을 포함하는 신경망(114)은 이미지, 오디오 또는 임의의 데이터 인식 또는 기타 프로세싱을 용이하게 할 수 있다. 예를 들어, 입력 데이터(110)(예를 들어, 센서로부터)는 깔때기(funnel)를 형성하는 컨볼루션 신경망의 컨볼루션 계층들로 전달되어 입력 데이터(110)에서 검출된 피처들을 압축할 수 있다. 컨볼루션 신경망의 제1 계층은 제1 특성들을 검출할 수 있고, 제2 계층은 제2 특성들을 검출할 수 있는 식으로 된다.
컨볼루션 신경망은 시각적 이미지, 오디오 정보, 및/또는 임의의 다른 유형 또는 형태의 입력 데이터(110)를 분석하도록 구성된 일종의 딥 피드포워드 인공 신경망(deep, feed-forward artificial neural network)일 수 있다. 컨볼루션 신경망은 최소 전처리를 사용하도록 설계된 다층 퍼셉트론들을 포함할 수 있다. 컨볼루션 신경망은 공유 가중치 아키텍처 및 변환 불변(translation invariance) 특성들에 기초하여 시프트 불변 또는 공간 불변 인공 신경망들을 포함하거나 이들로 지칭될 수 있다. 컨볼루션 신경망들은 다른 데이터 분류/프로세싱 알고리즘들에 비해 상대적으로 적은 전처리를 사용하기 때문에, 컨볼루션 신경망은 다른 데이터 분류/프로세싱 알고리즘들의 경우 수동으로 엔지니어링할 수 있는 필터를 자동으로 학습할 수 있으며, 그에 따라 신경망(114)을 구성하거나, 확립하거나 또는 설정하는 것과 연관된 효율성을 향상시키고, 다른 데이터 분류/프로세싱 기술들에 비해 기술적 이점을 제공한다.
신경망(114)은 뉴런들 또는 노드들의 입력 계층(116) 및 출력 계층(122)을 포함할 수 있다. 신경망(114)은 또한 뉴런들 또는 노드들의 컨볼루션 계층들, 풀링 계층들, 완전 연결 계층들, 및/또는 정규화 계층들을 포함할 수 있는 하나 이상의 은닉 계층들(118, 119)을 가질 수 있다. 신경망(114)에서, 각각의 뉴런은 이전 계층의 몇몇 위치들로부터 입력을 수신할 수 있다. 완전 연결 계층에서, 각 뉴런은 이전 계층의 모든 요소로부터 입력을 수신할 수 있다.
신경망(114)의 각 뉴런은 이전 계층의 수용 필드로부터 오는 입력 값들에 일부 함수를 적용함으로써 출력 값을 계산할 수 있다. 입력 값들에 적용되는 함수는 가중치 벡터와 편향값(일반적으로 실수)에 의해 지정된다. 신경망(114)에서의 학습(예를 들어, 트레이닝 단계 동안)은 편향 및/또는 가중치에 대한 증분 조정을 행함으로써 진행될 수 있다. 가중치 벡터와 편향값은 필터라고 부를 수 있으며 입력의 일부 피처(예를 들어, 특정 모양)을 나타낼 수 있다. 컨볼루션 신경망들의 차별되는 특징은 많은 뉴런들이 동일한 필터를 공유할 수 있다는 것이다. 이러한 것은 메모리 풋프린트를 감소시키는데, 이는 각 수용 필드가 그 자신의 편향 및 가중치 벡터를 갖는 것이 아니라 해당 필터를 공유하는 모든 수용 필드들에서 단일 편향 및 단일 가중치 벡터가 사용될 수 있기 때문이다.
예를 들어, 컨볼루션 계층에서 시스템은 입력 계층(116)에 컨볼루션 연산을 적용하여 그 결과를 다음 계층으로 전달할 수 있다. 컨볼루션은 입력 자극에 대한 개별 뉴런의 응답을 에뮬레이트한다. 각 컨볼루션 뉴런은 그의 수용 필드에 대한 데이터만 처리할 수 있다. 컨볼루션 연산을 사용함으로써 완전히 연결된 피드포워드 신경망과 비교하여 신경망(114)에서 사용되는 뉴런들의 수를 줄일 수 있다. 따라서, 컨볼루션 연산은 자유 파라미터들의 수를 줄일 수 있고, 네트워크가 더 적은 파라미터들로 더 깊어지게(deeper) 될 수 있다. 예를 들어, 입력 데이터(예를 들어, 이미지 데이터) 크기에 관계없이 동일한 공유 가중치들을 각각 갖는 5 × 5 크기의 타일링 영역들은 25개의 학습 가능한 파라미터들만을 사용할 수 있다. 이러한 방식으로, 컨볼루션 신경망을 갖는 제1 신경망(114)은 역전파(backpropagation)를 사용함으로써 많은 층들을 갖는 전통적인 다층 신경망들을 트레이닝하는 데 있어서 소멸 또는 폭발 그레이디언트(vanishing or exploding gradients) 문제를 해결할 수 있다.
(예를 들어, 컨볼루션 신경망으로 구성된) 신경망(114)은 하나 이상의 풀링 계층들을 포함할 수 있다. 하나 이상의 풀링 계층들은 로컬 풀링 계층 또는 글로벌 풀링 계층을 포함할 수 있다. 풀링 계층들은 한 계층의 뉴런 클러스터 출력들을 다음 계층의 단일 뉴런으로 결합할 수 있다. 예를 들어, 최대 풀링(max pooling)은 이전 계층의 뉴런 클러스터 각각으로부터의 최대값을 사용할 수 있다. 또 다른 예는 평균 풀링으로, 이는 이전 계층의 뉴런 클러스터 각각으로부터의 평균값을 사용할 수 있다.
(예를 들어, 컨볼루션 신경망으로 구성된) 신경망(114)은 완전히 연결된 계층들을 포함할 수 있다. 완전히 연결된 계층들은 한 계층의 모든 뉴런을 다른 계층의 모든 뉴런에 연결할 수 있다. 신경망(114)은 계층의 각 수용 필드에 사용되는 동일한 필터로 참조될 수 있는 컨볼루션 계층들에서의 공유 가중치들로 구성될 수 있으며, 그에 따라 메모리 풋프린트를 줄이고 제1 신경망(114)의 성능을 개선할 수 있다.
은닉 계층들(118, 119)은 입력 데이터(예를 들어, 예로서 가상 현실 시스템으로부터의 센서 데이터)에 기초하여 정보를 검출하도록 조정되거나 구성되는 필터들을 포함할 수 있다. 시스템이 신경망(114)(예를 들어, 컨볼루션 신경망)의 각 층을 통과함에 따라, 시스템은 제1 계층으로부터의 입력을 변환하고 변환된 입력을 제2 계층으로 출력하는 식으로 될 수 있다. 신경망(114)은 검출되고, 처리되고 및/또는 계산되는 객체 또는 정보의 유형, 및 입력 데이터(110)의 유형에 기초하여 하나 이상의 은닉 계층들(118, 119)을 포함할 수 있다.
일부 실시예들에서, 컨볼루션 계층은 (예를 들어, CNN으로 구성된) 신경망(114)의 코어 빌딩 블록(core building block)이다. 계층의 파라미터들(128)은 작은 수용 필드를 갖지만 입력 볼륨의 전체 깊이를 통해 확장되는 학습 가능한 필터들(또는 커널들)의 세트를 포함할 수 있다. 순방향 통과 동안, 각 필터는 입력 볼륨의 폭과 높이에 걸쳐 컨볼루션되어 필터의 항목들(entries of the filter)과 입력 사이의 내적을 계산하고 해당 필터의 2차원 활성화 맵을 생성한다. 그 결과, 신경망(114)은 입력의 어떤 공간적 포지션에서 어떤 특정한 유형의 피처를 검출할 때 활성화되는 필터들을 학습할 수 있다. 깊이 차원을 따라 모든 필터들에 대한 활성화 맵들을 스택하면 컨볼루션 계층의 전체 출력 볼륨이 형성된다. 따라서 출력 볼륨의 모든 항목은 입력의 작은 영역을 보고 동일한 활성화 맵의 뉴런들과 파라미터들을 공유하는 뉴런의 출력으로 해석될 수 있다. 컨볼루션 계층에서 뉴런들은 이전 계층의 제한된 하위 영역으로부터 입력을 수신할 수 있다. 일반적으로, 하위 영역은 정사각형 모양(예를 들어, 5 × 5 크기)이다. 뉴런의 입력 영역을 수용 필드(receptive field)라고 한다. 따라서 완전히 연결된 계층에서 수용 필드는 전체 이전 계층이다. 컨볼루션 계층에서 수용 영역은 전체 이전 계층보다 작을 수 있다.
제1 신경망(114)은 (예를 들어, 입력 데이터(110)에 기초하여 객체, 이벤트, 단어 및/또는 다른 피처들의 확률을 검출하거나 결정함으로써) 입력 데이터(110)를 검출, 분류, 분할 및/또는 변환하도록 트레이닝될 수 있다. 예를 들어, 신경망(114)의 제1 입력 계층(116)은 입력 데이터(110)를 수신하고, 입력 데이터(110)를 처리하여 데이터를 제1 중간 출력으로 변환하고, 제1 중간 출력을 제1 은닉 계층(118)으로 보낼 수 있다. 제1 은닉 계층(118)은 제1 중간 출력을 수신하고, 제1 중간 출력을 처리하여 제1 중간 출력을 제2 중간 출력으로 변환하고, 제2 중간 출력을 제2 은닉 계층(119)으로 보낼 수 있다. 제2 은닉 계층(119)은 제2 중간 출력을 수신하고, 제2 중간 출력을 처리하여 제2 중간 출력을 제3 중간 출력으로 변환하고, 제3 중간 출력을 예를 들어 출력 계층(122)으로 보낼 수 있다. 출력 계층(122)은 제3 중간 출력을 수신하고, 제3 중간 출력을 처리하여 제3 중간 출력을 출력 데이터(112)로 변환하고, 출력 데이터(112)를 예를 들어, 사용자에게 렌더링하거나 저장하는 등을 위해 가능하면 후처리 엔진으로 보낼 수 있다. 출력 데이터(112)는 예로서, 객체 검출 데이터, 강화/변환/증강 데이터, 추천, 분류, 및/또는 분할 데이터를 포함할 수 있다.
도 1a를 다시 참조하면, AI 가속기(108)는 하나 이상의 저장 디바이스들(126)을 포함할 수 있다. 저장 디바이스(126)는 AI 가속기(들)(108)와 연관된 임의의 유형 또는 형태의 데이터를 저장, 보유 또는 유지하도록 설계 또는 구현될 수 있다. 예를 들어, 데이터는 AI 가속기(들)(108)에 의해 수신되는 입력 데이터(110) 및/또는 출력 데이터(112)(예를 들어, 다음 디바이스 또는 프로세싱 단계로 출력되기 전)를 포함할 수 있다. 데이터는 신경망(들)(114) 및/또는 프로세서(들)(124)의 임의의 프로세싱 단계들로부터 또는 동안 사용되는 중간 데이터를 포함할 수 있다. 데이터는 저장 디바이스(126)로부터 판독되거나 액세스될 수 있는 신경망(들)(114)의 뉴런에 대한 입력 및 프로세싱을 위한 하나 이상의 피연산자들을 포함할 수 있다. 예를 들어, 데이터는 입력 데이터, 가중치 정보 및/또는 편향 정보, 활성화 함수 정보, 및/또는 신경망(들)(114)의 하나 이상의 뉴런(또는 노드) 및/또는 계층들에 대한 파라미터(128)를 포함할 수 있으며, 이는 저장 디바이스(126)에 저장될 수 있고 저장 디바이스(126)로부터 판독되거나 액세스될 수 있다. 데이터는 신경망(들)(114)의 뉴런으로부터의 출력 데이터를 포함할 수 있으며, 이는 저장 디바이스(126)에 기록 및 저장될 수 있다. 예를 들어, 데이터는 활성화 데이터, 신경망(들)(114)의 하나 이상의 뉴런들(또는 노드들) 및/또는 계층들에 대한 정제(refine)되거나 업데이트된 데이터(예를 들어, 트레이닝 단계로부터의 가중치 정보 및/또는 편향 정보, 활성화 함수 정보, 및/또는 다른 파라미터들(128))를 포함할 수 있으며, 이는 저장 디바이스(126)에 전송되거나 기록될 수 있고, 저장될 수 있다.
일부 실시예들에서, AI 가속기(108)는 하나 이상의 프로세서들(124)을 포함할 수 있다. 하나 이상의 프로세서들(124)은 신경망(들)(114) 또는 AI 가속기(들)(108) 중 임의의 하나 이상에 대한 입력 데이터를 전처리하고 및/또는 신경망(들)(114) 또는 AI 가속기(들)(108) 중 임의의 하나 이상에 대한 출력 데이터를 후처리하기 위한 임의의 로직, 회로 및/또는 프로세싱 구성요소(예를 들어, 마이크로프로세서)를 포함할 수 있다. 하나 이상의 프로세서들(124)은 신경망(들)(114) 또는 AI 가속기(들)(108)의 하나 이상의 동작들을 구성, 제어 및/또는 관리하기 위한 로직, 회로, 프로세싱 구성요소 및/또는 기능을 제공할 수 있다. 예를 들어, 프로세서(124)는 (예를 들어, 신경망(114)의 동작들을 구현하는 회로에 대한 클록 게이팅 제어를 통해) 전력 소비를 제어하거나 감소시키기 위해 신경망(114)과 연관된 데이터 또는 신호들을 수신할 수 있다. 다른 예로서, 프로세서(124)는 개별 프로세싱(예를 들어, AI 가속기(108)의 다양한 구성요소들에서, 예를 들어 병렬로), 순차적 프로세싱(예를 들어, AI 가속기(108)의 동일한 구성요소에서, 상이한 시간들 또는 단계들에서)을 위해, 또는 저장 디바이스의 상이한 메모리 슬라이스에 저장하기 위해, 또는 상이한 저장 디바이스들에 저장하기 위해 데이터를 분할 및/또는 재배열할 수 있다. 일부 실시예들에서, 프로세서(들)(124)는 예를 들어, 특정 가중치, 활성화 함수 및/또는 파라미터 정보를 식별하고, 선택하고 및/또는 신경망(114)의 뉴런들 및/또는 계층들에 로딩함으로써, 특정 컨텍스트에 대해 동작하고, 특정 유형의 프로세싱을 제공하고, 및/또는 특정 유형의 입력 데이터를 처리하도록 신경망(114)을 구성할 수 있다.
일부 실시예들에서, AI 가속기(108)는 딥 러닝 및/또는 AI 워크로드를 다루거나 처리하도록 설계 및/또는 구현된다. 예를 들어, AI 가속기(108)는 인공 신경망, 머신 비전(machine vision) 및 기계 학습을 포함하는 인공 지능 애플리케이션들을 위한 하드웨어 가속(hardware acceleration)을 제공할 수 있다. AI 가속기(108)는 로봇 공학 관련, 사물 인터넷(IoT) 관련, 및 기타 데이터 집약적 또는 센서 중심 작업을 처리하도록 하는 동작을 위해 구성될 수 있다. AI 가속기(108)는 다중 코어 또는 다중 프로세싱 요소(PE) 설계를 포함할 수 있으며, 인공 현실(예를 들어, 가상, 증강 또는 혼합 현실) 시스템, 스마트폰, 태블릿, 및 컴퓨터와 같은 다양한 유형들 및 형태들의 디바이스들에 통합될 수 있다. AI 가속기(108)의 특정 실시예들은 적어도 하나의 디지털 신호 프로세서(DSP), 코프로세서(co-processor), 마이크로프로세서, 컴퓨터 시스템, 프로세서들의 이종 컴퓨팅 구성, 그래픽 프로세싱 유닛(GPU), 필드 프로그래밍 가능 게이트 어레이(FPGA) 및/또는 주문형 집적 회로(ASIC)를 포함하거나 이를 사용하여 구현될 수 있다. AI 가속기(108)는 트랜지스터 기반, 반도체 기반 및/또는 양자 컴퓨팅 기반 디바이스일 수 있다.
이제 도 1b를 참조하면, AI 관련 프로세싱을 수행하기 위한 디바이스의 예시적인 실시예가 도시되어 있다. 간략한 개요에서, 디바이스는 예를 들어 도 1a와 관련하여 위에서 설명된 하나 이상의 피처들을 갖는 AI 가속기(108)를 포함하거나 이에 대응할 수 있다. AI 가속기(108)는 하나 이상의 저장 디바이스들(126)(예를 들어, 정적 랜덤 액세스 메모리(SRAM) 디바이스와 같은 메모리), 하나 이상의 버퍼들, 복수의 프로세싱 요소(PE) 회로들 또는 어레이, 기타 로직 또는 회로(예를 들어, 가산기 회로), 및/또는 기타 구조들 또는 구성들(예를 들어, 상호연결들, 데이터 버스들, 클록 회로들, 전력 네트워크(들))을 포함할 수 있다. 위에서 언급한 요소들 또는 구성요소들 각각은 하드웨어, 또는 적어도 하드웨어와 소프트웨어의 조합으로 구현된다. 하드웨어는 예를 들어 회로 요소들(예를 들어, 하나 이상의 트랜지스터들, 논리 게이트들, 레지스터들, 메모리 디바이스들, 저항성 요소들, 전도성 요소들, 용량성 요소들, 및/또는 와이어 또는 전기 전도성 커넥터들)을 포함할 수 있다.
AI 가속기(108)에서 구현된 신경망(114)(예를 들어, 인공 신경망)에서, 뉴런들은 다양한 형태들을 취할 수 있고, 프로세싱 요소(PE) 또는 PE 회로로 지칭될 수 있다. 뉴런은 대응하는 PE 회로로 구현될 수 있으며, 뉴런에서 발생할 수 있는 프로세싱/활성화는 PE 회로에서 수행될 수 있다. PE는 특정 네트워크 패턴 또는 어레이에 연결되며, 상이한 패턴들이 상이한 기능적 목적들을 제공한다. 인공 신경망의 PE는 전기적으로 동작하고(예를 들어, 반도체 구현의 실시예에서), 아날로그, 디지털, 또는 하이브리드일 수 있다. 생물학적 시냅스의 효과를 병행하기 위해 PE들 간의 연결에 곱셈 가중치들(multiplicative weights)을 할당할 수 있으며, 이는 적절한 시스템 출력을 생성하기 위해 교정되거나 "트레이닝"될 수 있다.
PE는 다음의 등식들로 정의될 수 있다(예를 들어, 뉴런의 McCulloch-Pitts 모델을 나타냄):
ζ = ∑i wi xi (1)
y = σ ( ζ ) (2)
여기서, ζ는 입력들의 가중치 합(예를 들어, 입력 벡터와 탭 가중치 벡터의 내적)이고, σ(ζ)는 가중치 합의 함수이다. 가중치 및 입력 요소들이 벡터들(w 및 x)을 형성하는 경우, ζ 가중치 합은 간단한 내적이 된다:
ζ = w·x (3)
이것은 활성화 함수(예를 들어, 임계값 비교의 경우) 또는 전달 함수로 지칭될 수 있다. 일부 실시예들에서, 하나 이상의 PE들은 내적 엔진으로 지칭될 수 있다. 신경망(114)에 대한 입력(예를 들어, 입력 데이터(110)), x는 입력 공간으로부터 올 수 있고 출력(예를 들어, 출력 데이터(112))은 출력 공간의 일부이다. 일부 신경망들의 경우, 출력 공간 Y는 {0, 1}만큼 단순할 수 있거나, 또는 복잡한 다차원(예를 들어, 다중 채널) 공간(예를 들어, 컨볼루션 신경망의 경우)일 수 있다. 신경망들은 입력 공간의 자유도당(per degree of freedom) 하나의 입력을 갖고 출력 공간의 자유도당 하나의 출력을 갖는 경향이 있다.
일부 실시예들에서, PE들은 수축기 어레이(systolic array)로서 배열 및/또는 구현될 수 있다. 수축기 어레이는 셀 또는 노드라고 하는 PE들과 같은 결합된 데이터 프로세싱 유닛들(DPUs)의 네트워크(예를 들어, 동종 네트워크(homogeneous network))일 수 있다. 각각의 노드 또는 PE는 업스트림 이웃들(upstream neighbors)로부터 수신된 데이터의 함수로서 부분 결과를 독립적으로 계산할 수 있으며, 그 결과를 자체 내에 저장할 수 있고 예를 들어 그 결과를 다운스트림으로 전달할 수 있다. 수축기 어레이는 하드와이어될(hardwired) 수 잇거나 특정 애플리케이션에 대해 소프트웨어로 구성될 수 있다. 노드들 또는 PE들은 고정되고 동일할 수 있으며, 수축기 어레이의 상호 연결은 프로그래밍 가능할 수 있다. 수축기 어레이들은 동기식 데이터 전송에 의존할 수 있다.
다시 도 1b를 참조하면, PE(120)에 대한 입력 x는 저장 디바이스(126)(예를 들어, SRAM)로부터 판독되거나 액세스되는 입력 스트림(132)의 일부일 수 있다. 입력 스트림(132)은 PE들의 하나의 행(수평 뱅크 또는 그룹)으로 향할 수 있고, 하나 이상의 PE들에 걸쳐 공유될 수 있거나, 개별 PE들에 대한 입력들로서 데이터 부분들(중첩 또는 비중첩 데이터 부분들)로 분할될 수 있다. (예를 들어, 저장 디바이스(126)로부터 판독되는) 가중치 스트림의 가중치들(134)(또는 가중치 정보)은 PE들의 열(수직 뱅크 또는 그룹)로 향하거나 제공될 수 있다. 열에서의 PE들 각각은 동일한 가중치(134)를 공유하거나 대응하는 가중치(134)를 수신할 수 있다. 각각의 타겟 PE에 대한 입력 및/또는 가중치는 (예를 들어, 저장 디바이스(126)로부터) 타겟 PE로 직접 라우팅될 수 있거나(예를 들어, 다른 PE(들)을 통과하지 않고), 또는 하나 이상의 PE들을 통해(예를 들어, PE들의 행 또는 열을 따라) 타겟 PE들로 라우팅될 수 있다. 각각의 PE의 출력은 PE 어레이 밖으로 직접 라우팅될 수 있거나(예를 들어, 다른 PE(들)를 통과하지 않고), 또는 PE 어레이를 빠져나가기 위해 하나 이상의 PE들을 통해(예를 들어, PE들의 열을 따라) 라우팅될 수 있다. PE들의 각 열의 출력들은 각 열의 가산기 회로에서 합산되거나 가산될 수 있고, PE들의 각 열에 대한 버퍼(130)에 제공될 수 있다. 버퍼(들)(130)는 수신된 출력들을 저장 디바이스(126)에 제공, 전송, 라우팅, 기록 및/또는 저장할 수 있다. 일부 실시예들에서, 저장 디바이스(126)에 의해 저장되는 출력들(예를 들어, 신경망의 한 층으로부터의 활성화 데이터)은 저장 디바이스(126)로부터 검색되거나 판독될 수 있고, 추후에 (신경망의 후속 계층의) 프로세싱을 위해 PE(120) 어레이에 대한 입력으로서 사용될 수 있다. 특정 실시예들에서, 저장 디바이스(126)에 의해 저장되는 출력들은 AI 가속기(108)에 대한 출력 데이터(112)로서 저장 디바이스(126)로부터 검색되거나 판독될 수 있다.
이제 도 1c를 참조하면, AI 관련 프로세싱을 수행하기 위한 디바이스의 예시적인 실시예가 도시되어 있다. 간략한 개요에서, 디바이스는 예를 들어 도 1a 및 도 1b와 관련하여 위에서 설명된 하나 이상의 피처들을 갖는 AI 가속기(108)를 포함하거나 이에 대응할 수 있다. AI 가속기(108)는 하나 이상의 PE들(120), 다른 로직 또는 회로(예를 들어, 가산기 회로), 및/또는 다른 구조들 또는 구성들(예를 들어, 상호 연결부들, 데이터 버스들, 클록 회로, 전력 네트워크(들))을 포함할 수 있다. 위에서 언급한 요소들 또는 구성요소들 각각은 하드웨어, 또는 적어도 하드웨어와 소프트웨어의 조합으로 구현된다. 하드웨어는 예를 들어 회로 요소들(예를 들어, 하나 이상의 트랜지스터들, 논리 게이트들, 레지스터들, 메모리 디바이스들, 저항성 요소들, 전도성 요소들, 용량성 요소들, 및/또는 와이어 또는 전기 전도성 커넥터들)을 포함할 수 있다.
일부 실시예들에서, PE(120)는 하나 이상의 MAC(multiply-accumulate) 유닛들 또는 회로(140)를 포함할 수 있다. 하나 이상의 PE들은 때때로 (단독으로 또는 집합적으로) MAC 엔진으로 지칭될 수 있다. MAC 유닛은 곱셈-누산 연산(들)을 수행하도록 구성된다. MAC 유닛은 곱셈기 회로, 가산기 회로 및/또는 누산기 회로를 포함할 수 있다. 곱셈-누산 연산은 두 숫자들의 곱을 계산하고 그 곱을 누산기에 가산한다. MAC 연산은 누산기 피연산자 a와 입력 b 및 c와 관련하여 다음과 같이 나타낼 수 있다:
a ← a + (b × c) (4)
일부 실시예들에서, MAC 유닛(140)은 조합 로직으로 구현되는 곱셈기와 이에 이어지는 가산기(예를 들어, 조합 로직을 포함) 및 그 결과를 저장하는 누산기 레지스터(예를 들어, 순차 및/또는 조합 로직을 포함)를 포함할 수 있다. 누산기 레지스터의 출력은 가산기의 한 입력으로 피드백될 수 있으므로, 각 클록 사이클에서 곱셈기의 출력은 누산기 레지스터에 가산될 수 있다.
위에서 논의된 바와 같이, MAC 유닛(140)은 곱셈 및 가산 기능 모두를 수행할 수 있다. MAC 유닛(140)은 두 단계들로 동작할 수 있다. MAC 유닛(140)은 먼저 제1 단계에서 주어진 수들(입력들)의 곱을 계산할 수 있고, 제2 단계 연산(예를 들어, 가산 및/또는 누산)을 위해 결과를 전달할 수 있다. n-비트 MAC 유닛(140)은 n-비트 곱셈기, 2n-비트 가산기, 및 2n-비트 누산기를 포함할 수 있다. 복수의 MAC 유닛들 또는 어레이(140)(예를 들어, PE에서)는 병렬 통합, 컨볼루션, 상관, 행렬 곱셈, 데이터 분류 및/또는 데이터 분석 작업들을 위해 수축기 어레이로 배열될 수 있다.
여기에 설명된 다양한 시스템들 및/또는 디바이스들은 컴퓨팅 시스템에서 구현될 수 있다. 도 1d는 대표적인 컴퓨팅 시스템(150)의 블록도를 도시한다. 일부 실시예들에서, 도 1a의 시스템은 컴퓨팅 시스템(150)의 프로세싱 유닛(들)(156)(또는 프로세서들(156))의 적어도 일부를 형성할 수 있다. 컴퓨팅 시스템(150)은 예를 들어, 스마트폰, 다른 모바일 폰, 태블릿 컴퓨터, 웨어러블 컴퓨팅 디바이스(예를 들어, 스마트 워치, 아이글래스, 헤드 마운트 디스플레이), 데스크탑 컴퓨터, 랩톱 컴퓨터와 같은 디바이스(예를 들어, 소비자 디바이스)로서 구현될 수 있거나, 분산된 컴퓨팅 디바이스들로 구현될 수 있다. 컴퓨팅 시스템(150)은 VR, AR, MR 경험을 제공하도록 구현될 수 있다. 일부 실시예들에서, 컴퓨팅 시스템(150)은 프로세서(156), 저장 디바이스(158), 네트워크 인터페이스(151), 사용자 입력 디바이스(152), 및 사용자 출력 디바이스(154)와 같은 통상의 특수화된 또는 맞춤형 컴퓨터 구성요소들을 포함할 수 있다.
네트워크 인터페이스(151)는 (로컬/원격) 서버 또는 백-엔드 시스템의 네트워크 인터페이스가 또한 연결되는 로컬/광역 네트워크(예를 들어, 인터넷)에 대한 연결을 제공할 수 있다. 네트워크 인터페이스(151)는 유선 인터페이스(예를 들어, 이더넷) 및/또는 Wi-Fi, 블루투스 또는 셀룰러 데이터 네트워크 표준들(예를 들어, 3G, 4G, 5G, LTE 등)과 같은 다양한 RF 데이터 통신 표준들을 구현하는 무선 인터페이스를 포함할 수 있다.
사용자 입력 디바이스(152)는 사용자가 컴퓨팅 시스템(150)에 신호들을 제공할 수 있게 하는 임의의 디바이스(또는 디바이스들)을 포함할 수 있고; 컴퓨팅 시스템(150)은 신호들을 특정 사용자 요청 또는 정보를 나타내는 것으로 해석할 수 있다. 사용자 입력 디바이스(152)는 키보드, 터치 패드, 터치 스크린, 마우스 또는 다른 포인팅 디바이스, 스크롤 휠, 클릭 휠, 다이얼, 버튼, 스위치, 키패드, 마이크로폰, 센서들(예를 들어, 모션 센서, 눈 추적 센서 등) 등의 모두 또는 임의의 것을 포함할 수 있다.
사용자 출력 디바이스(154)는 컴퓨팅 시스템(150)이 사용자에게 정보를 제공할 수 있도록 하는 임의의 디바이스를 포함할 수 있다. 예를 들어, 사용자 출력 디바이스(154)는 컴퓨팅 시스템(150)에 의해 생성되거나 컴퓨팅 시스템(414)에 전달된 이미지들을 디스플레이하기 위한 디스플레이를 포함할 수 있다. 디스플레이는 다양한 이미지 생성 기술들, 예를 들어 액정 디스플레이(LCD), 유기 발광 다이오드(OLED)를 포함하는 발광 다이오드(LED), 프로젝션 시스템, 음극선관(CRT) 등을 지원하는 전자 장치들(예를 들어, 디지털-아날로그 또는 아날로그-디지털 변환기, 신호 프로세서 등)과 함께 통합할 수 있다. 입력 및 출력 디바이스로 기능하는 터치스크린과 같은 디바이스가 사용될 수 있다. 사용자 출력 디바이스들(154)이 디스플레이에 추가하여 또는 디스플레이 대신에 제공될 수 있다. 표시등(indicator light), 스피커, 촉각 "디스플레이" 디바이스, 프린터 등이 그 예이다.
일부 구현들은 마이크로프로세서, 저장 장치 및 비일시적 컴퓨터 판독 가능한 저장 매체에 컴퓨터 프로그램 명령들을 저장하는 메모리와 같은 전자 구성요소들을 포함한다. 본 명세서에 기술된 많은 특징들은 컴퓨터 판독 가능한 저장 매체에 인코딩된 프로그램 명령들의 세트로 지정된 프로세스들로서 구현될 수 있다. 이러한 프로그램 명령들이 하나 이상의 프로세서들에 의해 실행될 때, 이들은 프로세서들로 하여금 프로그램 명령들에 표시된 다양한 동작들을 수행하게 한다. 프로그램 명령 또는 컴퓨터 코드의 예들로서는, 컴파일러에 의해 생성된 것과 같은 기계어 코드, 및 인터프리터를 사용하여 컴퓨터, 전자 구성요소 또는 마이크로 프로세서에 의해 실행되는 상위 레벨의 코드를 포함하는 파일이 있다. 적절한 프로그래밍을 통해, 프로세서(156)는 서버 또는 클라이언트에 의해 수행되는 것으로 본 명세서에 설명된 임의의 기능 또는 메시지 관리 서비스와 연관된 다른 기능을 포함하여 컴퓨팅 시스템(150)을 위한 다양한 기능을 제공할 수 있다.
컴퓨팅 시스템(150)은 예시적이며 변형 및 수정이 가능하다는 것이 이해될 것이다. 본 개시와 관련하여 사용되는 컴퓨터 시스템은 여기에 구체적으로 설명되지 않은 다른 능력을 가질 수 있다. 또한, 컴퓨팅 시스템(150)이 특정 블록을 참조하여 설명되지만, 이러한 블록은 설명의 편의를 위해 정의된 것이고 구성요소 부분들의 특정 물리적 배열을 의미하도록 의도되지 않음을 이해해야 한다. 예를 들어, 상이한 블록들이 동일한 설비, 동일한 서버 랙, 또는 동일한 마더보드에 있을 수 있다. 또한, 블록들은 물리적으로 구별되는 구성요소들에 대응할 필요가 없다. 블록들은 예를 들어 프로세서를 프로그래밍하거나 적절한 제어 회로를 제공함으로써 다양한 동작들을 수행하도록 구성될 수 있으며, 다양한 블록들은 초기 구성을 얻는 방법에 따라 재구성할 수도 있고 그렇지 않을 수도 있다. 본 개시의 구현들은 회로 및 소프트웨어의 임의의 조합을 사용하여 구현된 전자 디바이스들을 포함하는 다양한 장치들에서 실현될 수 있다.
B. 신경망에 대한 AI 관련 프로세싱을 수행하기 위한 파이프라인 병렬 처리 방법 및 디바이스
분산 학습 네트워크 그래프(distributed learning network graph)에서 프로세싱을 가속화하는 것과 같이 신경망에 대한 AI 관련 프로세싱을 수행하기 위한 파이프라인 병렬 처리를 위한 시스템, 방법, 및 디바이스의 실시예들이 여기에 개시된다. 일부 양상들에서, 본 개시는 신경망의 적어도 2개의 계층들에 걸쳐 파이프라인 병렬 처리를 지원하는 신경망 가속기(NNA)들을 구현하는 것에 관한 것이다.  전술한 바와 같이, 신경망은 2개 이상의 계층들을 포함할 수 있다. 일부 구현들에서, 신경망의 제1 계층에 대해 계산된 출력 데이터(또는 활성화 데이터)는 로컬 버퍼들로부터 메모리(예를 들어, SRAM)로 기록된다. 메모리의 출력 데이터는 후속적으로 메모리로부터 판독되고, 신경망의 제2 계층에 대한 계산을 위해 다른 (또는 동일한) MAC 엔진 또는 NNA(예를 들어, 복수의 PE들을 포함하는 내적 엔진 또는 행렬 곱셈 가속기)에 (예를 들어, 입력 피연산자들로서) 제공된다.  이러한 메모리 판독 및 기록 동작들은 빈번할 수 있고, 상당한 양의 데이터 전송을 수반하며 상당한 전력 소비를 초래할 수 있다(예를 들어, 칩에서, 헤드 장착 디스플레이 유닛에서).
본 기술 솔루션은 AI 가속기 체이닝(chaining) 또는 파이프라이닝(pipelining)을 구현하여 제1 AI 가속기(108)(예를 들어, PE들(120)의 제1 어레이)의 로컬 버퍼들로부터의 제1 계층 출력 데이터를 제2 AI 가속기(108)(예를 들어, PE들의 제2 어레이)로 직접 보낼 수 있으며, 그에 따라, 메모리 판독 및 기록 동작들을 바이패스한다.  이러한 AI 가속기 체이닝 또는 파이프라이닝은 예를 들어 제1 계층 출력 데이터가 제2 계층 프로세싱을 위한 로컬 버퍼들(메모리로부터의 추가적인 저장소를 요구하지 않고서 충분한 버퍼링 용량을 가짐) 내에 맞출 수 있는 계층 유형들을 지원할 수 있다.  일부 실시예들에서, 잠재적으로 활용되지 않는/낮게 활용되는 PE들을 갖는 단일 AI 가속기(108)를 구현하는 대신, 둘 이상의 더 작은(그러나 더 효율적으로 활용되는) AI 가속기(108)가 예를 들어 동일하거나 유사한 총 수의 PE 회로들을 사용하여 체인 구성으로 구현될 수 있다.
여기에 설명된 구현들에 따르면, 본 기술 솔루션은, 신경망의 2개(또는 그 이상)의 계층들에 대한 동작들이 병렬로 그리고 또한 파이프라인으로(한 계층의 출력이 다음 계층으로 직접 공급될 수 있도록) 구동되거나 실행되는 파이프라인 병렬 처리를 지원할 수 있다. 따라서, 본 기술 솔루션은 병렬 프로세싱을 통해 더 나은 수행능력을 제공할 수 있고, (예를 들어, 신경망의 계층들 사이에서) 메모리에 대한 판독 및 기록 동작들을 바이패스할 수 있으며, 따라서 프로세싱 처리량 및/또는 에너지 효율성에 대한 향상을 제공할 수 있다. 본 기술 솔루션은 분산 학습 기반의 애플리케이션들(distributed learning-based applications)이 에너지 효율적인 맞춤형 하드웨어에서 병렬로 구동되는 효율적인 다층 기계 학습의 이점을 제공하는 다중 가속기 디바이스에 효율적으로 사용될 수 있게 한다. 상기 기술 솔루션의 구현에 따라, 신경망의 계층들이 파이프라이닝 또는 체이닝되어, 한 계층이 그의 출력을 입력으로서 다음 계층으로 직접 보낼 수 있고, 이는 메모리 관련 동작들 및/또는 트래픽을 피함으로써 전력을 절약할 수 있다. AI 관련 프로세싱(예를 들어, 그룹 컨볼루션)을 수행하기 위해 (더 큰 세트의 PE들 대신에) 특정 애플리케이션에 적합한 더 작은 세트의 PE들을 사용하는 데 있어서의 계산 감소에 비례하는 에너지 절감도 실현될 수 있다.
이제 도 2a 및 도 2b를 참조하면, AI 관련 프로세싱을 수행하기 위한 파이프라인 병렬 처리를 위한 디바이스(200)의 블록도가 도시되어 있다. 도 2a및 도 2b에 도시된 구성요소들 중 적어도 일부는 도 1b에 도시되고 위에서 설명된 구성요소들과 유사할 수 있다. 예를 들어, 디바이스(200)는 AI 가속기(108)이거나 이를 포함할 수 있다. 디바이스(200)는 복수의 프로세싱 요소(PE) 회로들(202) 또는 이들의 어레이를 포함할 수 있으며, 이들은 섹션 A에서 앞서 설명된 PE 회로(들)(120)와 일부 양상들에서 유사하거나 동일할 수 있다. 유사하게, 디바이스(200)는 앞서 설명되었던 저장 디바이스(124), 버퍼(들)(130) 및 가중치들(134)과 일부 양상들에서 각각 유사하거나 동일할 수 있는, 저장 디바이스(204), 버퍼(들)(206), 및 가중치들(208)을 포함 및/또는 사용할 수 있다. 아래에서 더 상세히 설명되는 바와 같이, 저장 디바이스(204)는 신경망의 제1 계층에 대한 데이터를 저장하도록 구성될 수 있다. PE 회로(들)(202)는 저장 디바이스(204)로부터 데이터를 판독하고, 신경망의 제1 계층에 대한 계산을 수행하여 데이터(예를 들어, 출력 데이터 또는 활성화 데이터)를 생성하도록 구성될 수 있다. 버퍼(들)(206)는 생성된 데이터를 다른 PE 회로(들)(202)(예를 들어, 도 2b에 도시됨)에 출력하고, 보내고, 전달하고, 전송하고 및/또는 제공하도록 구성될 수 있다. 다른 PE 회로(들)(202)는 생성된 데이터를 입력으로서 사용하여 신경망의 제2(예를 들어, 상이하거나 다음) 계층에 대한 계산을 수행하도록 구성될 수 있다.
위에서 언급한 요소들 또는 구성요소들 각각은 하드웨어, 또는 하드웨어와 소프트웨어의 조합으로 구현된다. 예를 들어, 이러한 요소들 또는 구성요소들 각각은 디지털 및/또는 아날로그 요소들(예를 들어, 하나 이상의 트랜지스터, 논리 게이트, 레지스터, 메모리 디바이스, 저항성 요소, 전도성 요소, 용량성 요소)을 포함할 수 있는 회로와 같은 하드웨어에서 실행되는 임의의 애플리케이션, 프로그램, 라이브러리, 스크립트, 테스크, 서비스, 프로세스 또는 임의의 유형 및 형태의 실행 가능한 지시들을 포함할 수 있다.
예시적인 실시예에서, 디바이스(200)는 저장 디바이스(204)(예를 들어, 메모리)를 포함하는 것으로 도시되어 있다. 저장 디바이스(204)는 데이터를 수신, 저장 및/또는 그에 대한 액세스를 제공하도록 설계되거나 구현된 디바이스(200)의 임의의 디바이스, 구성요소, 요소, 또는 서브시스템일 수 있거나 이를 포함할 수 있다. 저장 디바이스(204)는 저장 디바이스(204)의 메모리 위치들(메모리 어드레스들에 의해 식별됨)에 데이터를 기록함으로써 데이터를 저장할 수 있다. 데이터는 이후에 저장 디바이스(204)로부터 (예를 들어, 디바이스(200)의 PE 회로들(202) 또는 다른 구성요소들에 의해) 검색될 수 있다. 일부 구현들에서, 저장 디바이스(204)는 정적 랜덤 액세스 메모리(SRAM) 또는 임의의 다른 유형 또는 형태의 메모리, 저장 레지스터 또는 저장 드라이브를 포함할 수 있다. 저장 디바이스(204)는 신경망에 대한 데이터(예를 들어, 신경망의 다양한 계층들에 대한 데이터 또는 정보, 신경망의 개별 계층들 내의 다양한 노드들에 대한 데이터 또는 정보 등)를 저장하도록 설계 또는 구현될 수 있다. 예를 들어, 데이터는 활성화 (또는 입력) 데이터 또는 정보, 신경망(들)의 하나 이상의 뉴런들(또는 노드들) 및/또는 계층들에 대한 정제되거나 업데이트된 데이터(예를 들어, 트레이닝 단계로부터의 가중치 정보 및/또는 편향 정보, 활성화 함수 정보, 및/또는 다른 파라미터들)를 포함할 수 있으며, 이는 저장 디바이스(204)에 전송되거나 기록될 수 있고, 저장될 수 있다. 아래에서 더 자세히 설명되는 바와 같이, (제1 AI 가속기의) PE 회로들(202)은 저장 디바이스(204)로부터의 데이터를 사용하여 신경망으로부터 출력들을 생성하도록 구성될 수 있다.
디바이스(200)는 복수의 PE 회로들(202)을 포함하는 것으로 도시되어 있다. 일부 실시예들에서, 디바이스(200)는 제1 그룹의 PE 회로들(202A) 및 제2 그룹의 PE 회로들(202B)을 포함할 수 있다. 일부 실시예들에서, 제1 그룹의 PE 회로들(202A) 및 제2 그룹의 PE 회로들(202B)은 동일한 반도체 디바이스 또는 전자 칩 상에 구성, 배열, 통합, 또는 형성될 수 있다. 각각의 PE 회로(202)는 위에서 설명된 PE 회로들(120)과 일부 측면에서 유사할 수 있다. PE 회로들(202)은 데이터 소스로부터 입력 데이터를 판독하고 (예를 들어, 가중치 스트림(208)으로부터의 가중치 데이터, 편향 정보, 파라미터들 및/또는 커널 정보를 사용하여) 하나 이상의 계산들을 수행하여 대응하는 데이터를 생성하도록 설계 또는 구현될 수 있다. 입력 데이터는 (예를 들어, 저장 디바이스(204)로부터 수신되거나 판독된) 입력 스트림, (예를 들어, 신경망의 이전 계층 또는 노드로부터의) 활성화/입력 스트림 등이 될 수 있다. 일례로서, 제1 그룹의 PE 회로들(202A)은 저장 디바이스(204)로부터 데이터(예를 들어, 가중치 데이터(208))를 판독하고, 입력 데이터를 사용하여 출력들(예를 들어, 신경망의 제2 계층에 대한 활성화/입력 데이터)을 생성하기 위해 신경망의 제1 계층에 대한 계산을 수행하도록 구성될 수 있다. 제1 그룹의 PE 회로들(202A)은 생성된 출력 또는 활성화 데이터를 버퍼(들)(206)로 전달하도록 구성될 수 있다. 버퍼(들)(206)는 제2 그룹의 PE 회로들(202B)로 (예를 들어, 활성화 스트림으로서) 활성화 데이터를 전송, 중계, 큐잉, 버퍼링, 보냄, 제공 또는 출력하도록 구성될 수 있다.
제1 그룹의 PE 회로들(202A)이 후속 입력 데이터(또는 입력 스트림들)에 대한 계산들을 수행하는 동안, 제2 그룹의 PE 회로들(202B)은 제1 그룹의 PE 회로들(202A)로부터 수신된 활성화 데이터를 사용하여 (병렬로) 신경망의 제2 계층에 대한 계산을 수행하도록 구성될 수 있다(아래에서 더 자세히 설명됨). 따라서, (예를 들어, 제2 그룹의 PE 회로들(202B)에 의한 후속 검색을 위해) 버퍼(들)(206)로부터 (예를 들어, 제1 계층에 의해 생성되는) 생성된 데이터를 저장 디바이스(204)에 기록하는 것 대신에, 제1 그룹의 PE 회로들(202A)이 생성된 데이터를 버퍼(들)(206)에 제공하고, 차례로, 생성된 데이터를 제2 그룹의 PE 회로들(202B)에 직접 전달하도록 구성될 수 있다. 이러한 실시예들은 신경망에 대한 프로세싱 동안 저장 디바이스(204)에 대한 판독 및/또는 기록 동작들을 바이패스함으로써 에너지 소비를 감소시킬 수 있다. 또한, 제1 및 제2 그룹의 PE 회로들(202A, 202B)이 다층 계산들을 병렬로 수행함에 따라, 전체 프로세싱 처리량의 개선이 신경망의 개별 계층들에 대한 이러한 병렬 계산들에 의해 실현될 수 있다.
PE 회로들(202)은 신경망의 적어도 하나의 노드에 대한 계산을 수행하도록 구성될 수 있다. 예를 들어, 그리고 위의 섹션 A에서 더 자세히 설명된 바와 같이, 신경망은 뉴런들 또는 노드들의 입력 계층 및 출력 계층, 및 하나 이상의 은닉 계층들(예를 들어, 컨볼루션 계층들, 풀링 계층들, 완전 연결 계층들, 및/또는 정규화 계층들)을 포함할 수 있다. 각 계층은 복수의 뉴런들 또는 노드들을 포함할 수 있다. 각 노드는 이전 계층의 여러 위치들로부터 입력(예를 들어, 입력 데이터 또는 활성화 데이터 등)을 수신할 수 있다. 완전 연결 계층에서, 각 뉴런은 이전 계층의 모든 요소로부터 입력을 수신할 수 있다. 신경망의 각 뉴런은 이전 계층의 수용 필드로부터 오는 입력 값들에 일부 함수를 적용함으로써 출력 값을 계산할 수 있다. 입력 값들에 적용되는 함수는 가중치 벡터와 편향값(일반적으로 실수)에 의해 지정된다. 가중치 벡터와 편향값은 필터라고 부를 수 있으며 입력의 일부 피처를 나타낼 수 있다.
일부 실시예들에서, 제1 그룹의 PE 회로들(202A)은 신경망의 (예를 들어, 제1 계층의) 적어도 하나의 노드에 대한 계산들을 수행하도록 구성될 수 있다. 제1 그룹의 PE 회로들(202A)은 신경망의 제1 계층의 노드들 각각에 대한 계산들을 수행하도록 구성될 수 있다. 제1 계층은 복수의 노드들(뉴런들)을 포함할 수 있다. 제1 그룹의 PE 회로들(202A)로부터의 PE 회로들(202) 중 적어도 하나는 제1 계층으로부터의 노드들의 전체 또는 서브세트에 대한 계산들을 수행하도록 구성될 수 있다. 일부 실시예들에서, 제1 그룹의 PE 회로들(202A)은 신경망의 제1 계층에 대한 단일 노드에 대한 계산을 수행하도록 구성될 수 있다. 특정 실시예들에서, PE 회로들(202A) 중 하나는 제1 계층으로부터의 각 노드에 대한 계산들을 수행하도록 구성될 수 있고, 그 동안, 다른 PE 회로(202A)는 제1 계층으로부터의 상이한 노드에 대한 계산들을 수행하도록 구성될 수 있다(예를 들어, 제1 그룹(202A)으로부터의 각각의 PE 회로(202A)는 제1 계층의 전용 노드에 대한 계산들을 수행한다). 유사하게, 제2 그룹의 PE 회로들(202B)은 신경망의 제2 계층에 대한 계산들을 수행하도록 구성될 수 있다(예를 들어, PE 회로들(202B)의 서브세트가 신경망의 하나의 노드에 대한 계산들을 수행할 수 있거나, 전용 PE 회로(202B)가 신경망의 대응하는 노드에 대한 계산을 수행할 수 있거나, 또는 모든 PE 회로들(202B)이 신경망의 단일 노드에 대한 계산을 수행할 수 있는 등).
일부 실시예들에서, 신경망의 계층들 각각은 대응하는 그룹의 PE 회로들(202)을 포함할 수 있다(예를 들어, 제1 계층에 대한 제1 그룹의 PE 회로들(202A) , 제2 계층에 대한 제2 그룹의 PE 회로들(202B), 제3 계층에 대한 제3 그룹의 PE 회로들(202) 등). 일부 실시예들에서, PE 회로들(202)의 일부(예를 들어, PE 회로들(202A, 202B)의 그룹 내)는 신경망의 특정 노드들에 대한 프로세싱을 처리하기 위해 전용될 수 있다. 예를 들어, PE 회로들(202A) 중 일부는 제1 계층 내의 노드(들)에 할당되거나 매핑될 수 있고, 동시에, 다른 PE 회로들(202A)은 제3 계층 내의 노드(들)에 할당되거나 매핑될 수 있다. 일부 실시예들에서, 제1 그룹의 PE 회로들(202A)은 제1 시간 윈도우 동안 제1 계층의 제1 노드(또는 노드들의 제1 서브세트)에 대한 프로세싱을 수행하고, 제1 노드(또는 노드들의 제1 서브세트)에 대한 제1 출력(들)을 생성하고, 그 다음, 제2/후속 시간 윈도우 동안 제1 계층의 제2 노드(또는 노드들의 제2 서브세트)에 대한 프로세싱을 수행하고, 그리고 제2 노드(또는 노드들의 제2 서브세트)에 대한 제2 출력(들)을 생성할 수 있다. 제2 그룹의 PE 회로들(202B)은 제1 출력(들)을 수신하고, 제2 시간 윈도우 동안 신경망의 제2 계층에 대한 제1 노드(또는 노드들의 제1 서브세트)에 대한 프로세싱을 수행하고, 제2 계층의 제1 노드(또는 노드들의 제1 서브세트)에 대한 제1 출력(들)을 생성하고, 그 다음, 제3 시간 윈도우 동안 제2 계층의 제2 노드(또는 노드들의 제2 서브세트)에 대한 프로세싱을 수행하고, 그리고 제2 계층의 제2 노드(또는 노드들의 제2 서브세트)에 대한 제2 출력(들)을 생성할 수 있다. 이와 관련하여, 신경망은 하나 이상의 노드들의 계층들을 포함할 수 있고, PE 회로들(202)은 노드들 및/또는 계층들에 대한 파이프라인 및 병렬 계산들 모두를 수행하도록 구성될 수 있다.
버퍼들(206)은 생성된 데이터(예를 들어, PE 회로들(202)로부터 수신됨)를 출력하도록 구성될 수 있다. 일부 실시예들에서, PE 회로들(202)은 생성된 데이터를 (예를 들어, 다른 PE 회로들(202)을 바이패스하거나 다른 PE 회로들(202)을 통해 라우팅함으로써, 직접) 버퍼(206)로 전송하고, 넘겨주고, 패스하고, 전달하고, 보내고 또는 제공할 수 있다. 일부 실시예들에서, 버퍼들(206)은 생성된 데이터를 전송, 시프트 또는 출력하도록 클록 및/또는 인에이블되는 순차 디바이스들(예를 들어, 레지스터들 또는 플립-플롭들)을 포함한다. 예를 들어, 버퍼들(206)은 클록 주기에 대응할 수 있는 특정 시간량 동안 데이터를 유지하도록 구성될 수 있다(예를 들어, 특정 지속기간 또는 시간량 후에 출력으로서 데이터를 제공한다). 일부 실시예들에서, 버퍼들(206)은 리피터(또는 증폭기)를 구현하는 조합 로직이거나 이를 포함할 수 있다. 이와 같이, 버퍼들(206)은 버퍼(206)에 의해 수신된 데이터를 다른 회로 또는 서브시스템(예를 들어, 내적 엔진을 형성하는 제2 그룹의 PE 회로들(202B)로)으로 중계하도록 구성될 수 있다. 이들 및 다른 실시예들에서, 버퍼들(206)은, 저장 디바이스(204)로 또는 외부로의 제2 데이터의 임의의 전송을 바이패스함으로써, 생성된 데이터(예를 들어, 제1 그룹의 PE 회로들(202A)에 의해 생성됨)를 제2 그룹의 PE 회로들(202B)에 대한 입력으로서 출력하도록 구성될 수 있다. 버퍼들(206)은 생성된 데이터를 수신, 버퍼링, 큐잉, 제공 및/또는 제2 그룹의 PE 회로들(202B)에 출력하기에 충분한 용량으로 구성되거나 구현될 수 있다.
일부 실시예들에서, 제2 그룹의 PE 회로들(202B)은 (예를 들어, 버퍼(206)를 통해) 제1 그룹의 PE 회로들(202A)로부터 수신된 데이터를 사용하여 데이터를 생성하도록 구성될 수 있다. 구체적으로, 도 2b에 도시된 바와 같이, 제2 그룹의 PE 회로들(202B)은 버퍼들(206)을 통해 제1 그룹의 PE 회로들(202A)로부터 데이터를 수신하도록 구성될 수 있다. 제2 그룹의 PE 회로들(202B)은 버퍼들(206)로부터 활성화 데이터를 (예를 들어, 활성화 스트림으로서) 수신할 수 있다. 제2 그룹의 PE 회로들(202B)은 저장 디바이스(204)로부터의 활성화 데이터 및 다른 데이터(예를 들어, 가중치 스트림(208) 또는 섹션 A에서 앞서 설명된 바와 같은 다른 활성화 정보)를 사용하여 계산들을 수행하도록 구성될 수 있다. 다른 활성화 정보는 예를 들어 활성화 함수에 대한 정보, 편향 정보, 커널 정보, 및/또는 파라미터(들)(128)를 포함할 수 있다. 제1 그룹의 PE 회로들(202A)과 유사하게, 제2 그룹의 PE 회로들(202B)은 다른 데이터(예를 들어, 출력 데이터, 또는 신경망의 제3 계층에 대한 활성화 데이터 등)를 생성하기 위해 활성화 데이터를 수신 및 사용하도록 구성될 수 있다. 일부 실시예들에서, 제2 그룹의 PE 회로들(202B)은 생성된 데이터를 저장 디바이스(206)에 저장하도록 구성될 수 있다(예를 들어, 신경망의 다른 계층에 대한 계산(들)에서의 후속 사용을 위해). 일부 실시예들에서, 디바이스(200)는 제2 그룹의 PE 회로들(202B)에 의해 생성된 데이터를 수신하고, 데이터를 제3 그룹의 PE 회로들(202)에 전송, 전달, 제공 또는 출력하도록 구성된 추가 그룹의 버퍼들(206)을 포함할 수 있다.
일부 실시예들에서, 제1 그룹의 PE 회로들(202A)은 신경망의 계층에 대해 하나의 기능(예를 들어, 활성화 기능)을 수행하도록 구성될 수 있고, 제2 그룹의 PE 회로들(202B)은 신경망의 다른 계층에 대해 다른 기능을 수행하도록 구성될 수 있다. 예를 들어, 제1 그룹의 PE 회로들(202A)은 제1 데이터를 사용하여 컨볼루션 연산을 수행하도록 구성될 수 있다. 컨볼루션 연산은 시각적 이미지, 오디오 정보, 및/또는 임의의 다른 유형 또는 형태의 입력 데이터를 분석하도록 구성된 일종의 딥 피드포워드 인공 신경망(deep, feed-forward artificial neural network)이거나 이를 포함할 수 있다. 컨볼루션 연산은 최소 전처리를 사용하도록 설계된 다층 퍼셉트론들을 포함할 수 있다. 컨볼루션 연산은 공유 가중치 아키텍처 및 변환 불변(translation invariance) 특성들에 기초하여 시프트 불변 또는 공간 불변 인공 신경망들을 포함하거나 이들로 지칭될 수 있다. 제1 그룹의 PE 회로들(202A)은 신경망의 적어도 하나의 노드 및/또는 하나의 계층에 대해 컨볼루션 연산들을 수행하도록 구성될 수 있다. 제2 그룹의 PE 회로들(202B)은 (예를 들어, 동일한 노드(들) 및/또는 계층에 대해, 또는 신경망의 상이한 노드(들) 및/또는 계층에 대해) 제1 그룹의 PE 회로들(202A)에 의해 생성된 데이터를 사용하여 내적 연산들을 수행하도록 구성될 수 있다. 제2 그룹의 PE 회로들(202B)은 신경망에 대한 출력(210)을 형성하기 위해 내적 연산들을 수행하도록 구성될 수 있다.
본 명세서에 설명된 실시예들에 따르면, 디바이스(200)는 신경망의 2개(또는 그 이상) 계층들에 대한 동작들이 파이프라인으로 및/또는 병렬로 실행될 수 있는 신경망의 파이프라인 병렬 처리를 지원하도록 구성될 수 있다. 디바이스(200)는 신경망의 한 계층으로부터의 출력이 하나 이상의 버퍼들을 통해 다음 계층으로 직접 공급되어, 메모리에 대한 판독 및/또는 기록 동작을 효과적으로 바이패스하도록 구성될 수 있다. 이와 같이, 메모리 관련 판독 및/또는 기록 동작들을 바이패스함으로써, 그리고 더 작은 그룹의 PE들을 사용하여(예를 들어, 그룹 컨볼루션들을 수행) 계산 비용을 줄임으로써 에너지 절감이 실현될 수 있다. 또한, 프로세싱 처리량이 다중 그룹들의 PE 회로들(202A, 202B)에 의한 병렬 계산들을 통해 개선될 수 있다.
이제 도 2c를 참조하면, 예를 들어 신경망의 다중 계층들에 걸친 노드들에 대해 AI 관련 프로세싱을 수행하기 위한 파이프라인 병렬 처리를 위한 방법(215)에 대한 흐름도가 도시되어 있다. 방법(215)의 기능은 AI 가속기(108) 및/또는 디바이스(200)와 같은 도 1a 내지 도 2b에 설명된 구성요소들을 사용하여 구현되거나 이에 의해 수행될 수 있다. 간략한 개요에서, 메모리는 신경망의 제1 계층에 대한 제1 데이터를 저장할 수 있다(220). 제1 복수의 PE 회로들은 제1 데이터를 판독할 수 있다(225). 제1 복수의 PE 회로들은 제1 데이터를 사용하여 제1 계층에 대한 계산을 수행하여 제2 데이터를 생성한다(230). 복수의 버퍼들은 제2 데이터를 제2 복수의 PE 회로들에 제공할 수 있다(235). 제2 복수의 PE 회로들은 제2 데이터를 사용하여 신경망의 제2 계층에 대한 계산을 수행할 수 있다(240).
(220)의 추가 세부사항에서, 그리고 일부 실시예들에서, 방법(215)은 메모리에 신경망의 제1 계층에 대한 제1 데이터를 저장하는 단계를 포함한다. 제1 데이터는 신경망의 제1 계층에 대한 가중치 또는 활성화 정보이거나 이를 포함할 수 있다. 메모리 또는 저장 디바이스(126)는 복수의 입력 스트림들(132)에 활성화 데이터를 제공할 수 있고, 활성화 데이터는 예를 들어 AI 가속기(108)에 대한 입력 데이터(110)의 적어도 일부를 포함할 수 있다. 일부 실시예들에서, 방법(215)은 신경망의 제1 및 제2 계층에 대한 제1 및 제2 데이터를 저장하는 단계를 포함할 수 있다. 제1 데이터는 신경망의 개별 계층들에 고유할 수 있다. 일부 실시예들에서, 제1 및 제2 데이터는 신경망의 개별 계층들의 노드들에 고유할 수 있다. 메모리(또는 저장 디바이스(126))는 하나 이상의 PE들에 의한 후속 검색을 위해 제1 데이터를 수신하고 유지할 수 있다. 일부 실시예들에서, 제1 데이터(예를 들어, 가중치, 활성화 함수)는 신경망의 하나 이상의 노드들 및/또는 계층들에 대한 출력 데이터를 개선하기 위해 시간에 걸쳐(예를 들어, 가중치들 및/또는 활성화 정보를 정제(refine)하기 위한 트레이닝 단계 동안) 트레이닝되거나 정제될 수 있다.
(225)의 추가 세부사항에서, 그리고 일부 실시예들에서, 방법(215)은 제1 데이터를 판독하는 단계를 포함한다. 일부 실시예들에서, 제1 복수의 PE 회로들(제1 회로 또는 제1 AI 가속기(108))은 신경망의 제1 계층의 하나 이상의 노드들에 대해 메모리로부터 제1 데이터를 판독한다. 일부 구현들에서, 각각의 개별 PE 회로는 메모리로부터 개별 데이터를 판독하거나 액세스할 수 있다. 예를 들어, 제1 복수의 PE 회로들의 PE 회로는 특정 노드에 전용, 할당 및/또는 매핑될 수 있고, 각각의 개별 PE 회로는 메모리에 액세스하여 PE 회로에 대응하는 메모리로부터 가중치 및/또는 활성화 데이터를 검색, 액세스, 또는 판독할 수 있다. PE 회로는 아래에서 더 상세히 설명되는 바와 같이, 제1 계층에 대한 계산을 수행하기 위해 제1 데이터를 판독하도록 메모리에 액세스할 수 있다.
(230)의 추가 세부사항에서, 그리고 일부 실시예들에서, 방법(215)은 (예를 들어, 제2 회로에 대한 입력으로서) 제2 데이터를 생성하도록 제1 계층에 대한 계산을 수행하기 위해 제1 데이터를 사용하는 단계를 포함한다. 일부 실시예들에서, 제1 복수의 PE 회로들은 제1 데이터를 사용하여 신경망의 제1 계층에 대한 계산(예를 들어, 컨볼루션 연산)을 수행하여 제2 데이터를 생성한다. 제1 복수의 PE 회로들은 제1 데이터(예를 들어, 커널 또는 가중치 정보)를 사용하여 입력 스트림에 대한 계산을 수행할 수 있다. 제1 복수의 PE 회로들은 대응하는 출력(예를 들어, 신경망의 제2 계층에 대한 활성화 데이터로서 사용될 수 있음)을 생성하기 위해 입력 스트림 및 제1 데이터를 사용하여 입력 스트림에 대한 계산을 수행할 수 있다. 일부 실시예들에서, 제1 복수의 PE 회로들은 제1 데이터(및 입력 스트림)(예를 들어, 커널 정보)를 사용하여 컨볼루션 연산을 수행할 수 있다. 제1 복수의 PE 회로들은 제2 계층에 대한 활성화 데이터(또는 제2 데이터)를 생성하기 위해 컨볼루션 연산을 수행할 수 있다.
(235)의 추가 세부사항에서, 그리고 일부 실시예들에서, 방법(215)은 제2 데이터를 제2 복수의 PE 회로들에 제공하는 단계를 포함한다. 일부 실시예들에서, 제1 복수의 PE 회로들의 복수의 버퍼들은, 신경망의 제2 계층에 대한 계산을 수행하도록, 생성된 제2 데이터를 제2 복수의 PE 회로들에 대한 입력으로서 제공한다. 버퍼들은, 신경망의 제2 계층에 대한 계산 또는 프로세싱을 수행하도록, 생성된 제2 데이터를 (예를 들어, 단계(230)에서) 제2 회로에 보내거나, 전달하거나 또는 출력할 수 있다. 버퍼들은 시간의 지속기간 후 생성된 제2 데이터를 전달하거나 출력하도록 클록 및/또는 인에이블될 수 있다. 일부 실시예들에서, 버퍼들은 (클록 신호와 관련하여 비동기식으로 또는 동기식으로) 제1 복수의 PE 회로들로부터 데이터를 수신하는 데 응답하여 생성된 제2 데이터를 전달할 수 있다. 이들 실시예들 각각에서, 복수의 버퍼들은, 메모리(예를 들어, 저장 디바이스(126))로 또는 외부로의 제2 데이터의 임의의 전송을 바이패스함으로써, 생성된 제2 데이터를 제2 회로 또는 제2 복수의 PE 회로들에 대한 입력으로서 제공할 수 있다.
(240)의 추가 세부사항에서, 그리고 일부 실시예들에서, 방법(215)은 신경망의 제2 계층에 대한 계산을 수행하기 위해 제2 데이터를 사용하는 단계를 포함한다. 일부 실시예들에서, 제2 복수의 PE 회로들은 제2 데이터를 사용하여 신경망의 제2 계층에 대한 계산을 수행한다. 단계(230)와 유사하게, 제2 복수의 PE 회로들은 메모리로부터의 데이터(예를 들어, 가중치들) 및 (예를 들어, 버퍼들로부터의) 제2 데이터를 사용하여 신경망의 제2 계층에 대한 계산을 수행할 수 있다. 제2 데이터는 신경망의 제2 계층에 대한 가중치, 편향 및/또는 활성화 함수 정보를 포함할 수 있다. 일부 실시예들에서, 단계(230) 및 단계(240)는 파이프라인에서 순차적으로, 또는 실질적으로 동시에(예를 들어, 병렬로) 수행될 수 있다. 예를 들어, 제1 복수의 PE 회로들은 신경망(신경망의 제1/제2/제3 계층)의 적어도 하나의 노드에 대한 계산을 수행할 수 있고, 그 동안, 제2 복수의 PE 회로들은 신경망의 제2 계층의 적어도 다른 노드에 대한 계산을 수행하고 있을 수 있다. 일부 구현들에서, 적어도 하나의 노드는 제3 계층(예를 들어, 신경망의 제2 계층으로부터 다운스트림의 계층) 또는 제1 계층(예를 들어, 신경망의 제2 계층으로부터 업스트림)으로부터의 것일 수 있다. 일부 실시예들에서, 제2 복수의 PE 회로들은 제2 데이터를 사용하여 내적 연산들을 수행할 수 있는 내적 엔진을 포함할 수 있다. 제2 복수의 PE 회로들은 출력을 생성하기 위해 버퍼들에 의해 수신된 제2 데이터에 대해 내적 연산들을 수행할 수 있다.
일부 실시예들에서, 제2 복수의 PE 회로들은 제2 데이터를 사용하여 제3 데이터를 생성할 수 있다. 제2 복수의 PE 회로들은 (예를 들어, 메모리에 대한 기록 동작을 수행함으로써) 메모리에 제3 데이터를 저장할 수 있다. 제3 데이터는 신경망의 다른 계층에 의한 후속 사용을 위해 또는 디바이스 또는 디바이스 외부의 구성요소에 의한 후속 사용을 위해 메모리에 저장될 수 있다. 제2 복수의 PE 회로들은 제3 데이터를 제2 복수의 PE 회로들에 대응하는 복수의 버퍼들에 제공할 수 있으며, 이는 차례로, 제3 데이터를 제3 복수의 PE 회로들에 제공할 수 있다(예를 들어, 단계 (235)와 유사). 제3 복수의 PE 회로들은 제3 데이터(및 메모리로부터의 다른 데이터)를 사용하여 계산들을 수행할 수 있고, 제2 복수의 PE 회로들은 제1 복수의 PE 회로들에 대응하는 버퍼들로부터 수신된 데이터를 사용하여 (제3 복수의 PE 회로들과 병렬로) 계산들을 수행할 수 있고, 제1 복수의 PE 회로들은 (제2 및 제3 복수의 PE 회로들과 병렬로) 데이터의 입력 스트림에 대해 계산들을 수행할 수 있다. 이와 같이, 제1, 제2 및/또는 제3 복수의 PE 회로들은 병렬로 계산들을 수행할 수 있다. 또한, 제1 복수의 PE 회로들에 대한 버퍼들은 활성화 데이터(예를 들어, 제1 계층에서 계산을 수행함으로써 생성됨)를 제2 복수의 PE 회로들에 제공할 수 있고, 제2 복수의 PE 회로들에 대한 버퍼들은 대응하는 활성화 데이터(예를 들어, 제2 계층에서 활성화 데이터에 대한 계산들을 수행함으로써 생성됨)를 제3 복수의 PE 회로들에 제공할 수 있다. 따라서, 이러한 버퍼들은 메모리에 대한 활성화 데이터의 판독 및 기록 동작들을 바이패스할 수 있다.
지금까지 몇몇 예시적인 구현들을 설명 하였지만, 전술한 내용은 예시적인 것이고 제한적이지 않음이 명백하며, 예로서 제시되었다. 특히, 본 명세서에 제시된 많은 예들이 방법 동작들 또는 시스템 요소들의 특정 조합을 수반하지만, 이러한 동작들 및 이러한 요소들은 동일한 목적들을 달성하기 위해 다른 방식들에 결합될 수 있다. 하나의 구현과 관련하여 논의된 동작들, 요소들, 및 특징들은 다른 구현들 또는 구현들에서의 유사한 역할에서 배제되지 않는다.
여기에 개시된 실시예들과 관련하여 설명된 다양한 프로세스들, 동작들, 예시적인 로직들, 논리 블록들, 모듈들, 및 회로들을 구현하는 데 사용되는 하드웨어 및 데이터 프로세스 구성 요소들은 범용의 단일 또는 다중 칩 프로세서, 디지털 신호 프로세서(DSP), 주문형 집적 회로(ASIC), 필드 프로그래밍 가능 게이트 어레이(Field Programmable Gate Array)(FPGA), 또는 다른 프로그래밍 가능 로직 디바이스, 개별 게이트 또는 트랜지스터 로직, 개별 하드웨어 구성 요소들, 또는 여기에서 설명되는 기능들을 수행하도록 설계된 이들의 임의의 조합으로 구현되거나 수행될 수 있다. 범용 프로세서는 마이크프로세서이거나 또는 임의의 기존의 프로세서, 컨트롤러, 마이크로컨트롤러 또는 상태 머신일 수 있다. 프로세서는 또한 DSP와 마이크로프로세서의 조합, 복수의 마이크로프로세서들, DSP 코어와 관련된 하나 이상의 마이크로프로세서들, 또는 임의의 다른 그러한 구성과 같은 컴퓨팅 디바이스들의 조합으로 구현될 수 있다. 일부 실시예들에서, 특정 프로세스들 및 방법들은 주어진 기능에 특정한 회로에 의해 수행될 수 있다. 메모리(예를 들어, 메모리, 메모리 유닛, 저장 디바이스 등)는 본 개시에 설명된 다양한 프로세스들, 계층들 및 모듈들을 완료하거나 용이하게 하기 위한 컴퓨터 코드 및/또는 데이터를 저장하기 위한 하나 이상의 디바이스들(예를 들어, RAM, ROM, 플래시 메모리, 하드 디스크 저장 디바이스 등)을 포함할 수 있다. 메모리는 휘발성 메모리 또는 비 휘발성 메모리이거나 이를 포함할 수 있으며, 데이터베이스 구성 요소들, 객체 코드 구성 요소들, 스크립트 구성 요소들, 또는 본 개시에서 설명된 다양한 활동 및 정보 구조들을 지원하기 위한 임의의 다른 유형의 정보 구조를 포함할 수 있다. 예시적인 실시예에 따라, 메모리는 프로세싱 회로를 통해 프로세서에 통신 가능하게 연결되고, 여기에 설명된 하나 이상의 프로세스들을 (예를 들어, 프로세싱 회로 및/또는 프로세서에 의해) 실행하기 위한 컴퓨터 코드를 포함한다.
본 개시는 다양한 동작들을 수행하기 위한 방법, 시스템 및 임의의 기계 판독가능한 매체 상의 프로그램 제품을 고려한다. 본 개시의 실시예들은 현존하는 컴퓨터 프로세서를 사용하여, 또는 이러한 또는 다른 목적을 위해 통합된 적절한 시스템을 위한 특수 목적 컴퓨터 프로세서에 의해, 또는 하드와이어 시스템에 의해 구현될 수 있다. 본 개시의 범위 내의 실시예들은 기계 실행가능한 명령어들 또는 데이터 구조들을 운반하거나 저장하고 있는 기계 판독가능한 매체를 포함하는 프로그램 제품을 포함한다. 이러한 기계 판독가능한 매체는 범용 또는 특수 목적 컴퓨터 또는 프로세서를 갖는 다른 기계에 의해 액세스될 수 있는 임의의 사용 가능한 매체일 수 있다. 예를 들어, 이러한 기계 판독가능한 매체는 RAM, ROM, EPROM, EEPROM, 또는 다른 광 디스크 저장장치, 자기 디스크 저장장치 또는 다른 자기 저장 디바이스, 또는 기계 실행가능한 명령어들 또는 데이터 구조들의 형태로 원하는 프로그램 코드를 운반하거나 저장하는 데 사용될 수 있는 그리고 범용 또는 특수 목적 컴퓨터 또는 프로세서를 갖는 다른 기계에서 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 상기한 것들의 조합들은 또한 기계 판독가능한 매체의 범위 내에 포함된다. 기계 실행가능한 명령어들은 예를 들어 범용 컴퓨터, 특수 목적 컴퓨터, 또는 특수 목적 프로세싱 기계가 특정 기능 또는 기능들의 그룹을 수행하게 하는 명령어들 및 데이터를 포함한다.
본 명세서에서 사용된 어구 및 용어는 설명의 목적을 위한 것이며 제한적인 것으로 간주되어서는 안된다. 본 명세서에서 "포함하는", "구비하는", "갖는", "함유하는", "수반하는", "특징되는", "특징으로 하는", 및 이들의 변형들은 이후에 나열된 항목들, 이들의 등가물들, 및 추가 항목들은 물론, 이후 배타적으로 나열되는 항목들로 구성된 대체 구현들을 포함하는 것을 의미한다. 일 구현에서, 본 명세서에 설명된 시스템들 및 방법들은 설명된 요소들, 동작들, 또는 구성 요소들 중 하나, 둘 이상의 각각의 조합, 또는 이들의 모두로 구성된다.
본 명세서에서 단수로 언급된 시스템들 및 방법들의 구현 또는 요소 또는 행위에 대한 모든 지칭들은 또한 이러한 요소들의 복수를 포함하는 구현을 포함할 수 있으며, 본 명세서의 임의의 구현 또는 요소 또는 행위에 대한 복수의 지칭들은 또한 단일 요소만을 포함하는 구현들을 포함할 수 있다. 단수 또는 복수 형태의 지칭들은 현재 개시된 시스템 또는 방법, 이들의 구성 요소, 동작, 또는 요소를 단일 또는 복수 구성으로 제한하려는 것이 아니다. 임의의 정보, 행위 또는 요소에 기초하는 임의의 행위 또는 요소에 대한 지칭들은 행위 또는 요소가 임의의 정보, 행위 또는 요소에 적어도 부분적으로 기초하는 구현들을 포함할 수 있다.
본 명세서에 개시된 임의의 구현은 임의의 다른 구현 또는 실시예와 결합될 수 있으며, "구현", "일부 구현들", "일 구현” 등에 대한 지칭들은 반드시 상호 배타적인 것은 아니며, 구현과 관련하여 설명된 특정 특징, 구조, 또는 특성이 적어도 하나의 구현 또는 실시예에 포함될 수 있다는 것을 나타내는 것으로 의도된다. 본 명세서에서 사용되는 이러한 용어들은 반드시 모두 동일한 구현을 지칭하는 것은 아니다. 임의의 구현은 여기에 개시된 양태들 및 구현들과 일치하는 임의의 방식으로 포괄적으로 또는 배타적으로 임의의 다른 구현과 결합될 수 있다.
도면, 상세한 설명 또는 임의의 청구항에서의 기술적 특징들 다음에 참조 기호가 오는 경우, 참조 기호는 도면, 상세한 설명 및 청구의 이해도를 높이기 위해 포함되었다. 따라서, 참조 부호가 있든 없든 임의의 청구 요소의 범위에 제한적인 영향을 갖지 않는다.
본 명세서에 설명된 시스템들 및 방법들은 그 특징들로부터 벗어나지 않고서 다른 특정 형태들로 구현될 수 있다. "대략", "약" "실질적으로" 또는 다른 정도의 용어에 대한 지칭들은 달리 명시적으로 표시하지 않는 한 주어진 측정치, 단위 또는 범위로부터 +/- 10%의 변동을 포함한다. 결합된 요소들은 전기적으로, 기계적으로 또는 물리적으로 서로 직접적으로 또는 중간 요소들과 결합될 수 있다. 따라서 본 명세서에 설명된 시스템들 및 방법들의 범위는 전술한 설명이 아니라 첨부된 청구 범위에 의해 나타내지며, 청구 범위의 등가물의 의미 및 범위 내에 있는 변경들이 포함된다.
용어 "결합된" 및 그 변형들은 두 부재들을 서로 직접적으로 또는 간접적으로 결합하는 것을 포함한다. 이러한 결합은 고정적일 수 있거나(예를 들어, 영구 또는 고정), 또는 이동 가능할 수 있다(예를 들어, 제거 가능 또는 해제 가능). 이러한 결합은 두 부재들이 서로 직접적으로 결합되거나, 두 부재들이 별개의 개재 부재 및 서로 결합된 임의의 추가 중간 부재를 사용하여 서로 결합되거나, 또는 두 부재들이 두 부재들 중 하나와 하나의 단일체로 일체로 형성되는 개재 부재를 사용하여 서로 결합되는 것으로 달성될 수 있다. "결합된" 또는 그 변형들이 추가 용어(예를 들어, 직접 결합)에 의해 수정되는 경우, 위에 제공된 "결합된"의 일반 정의는 추가 용어의 일반 언어 의미에 의해 수정되며(예를 들어, "직접 결합된"은 임의의 별도의 개재 부재 없이 두 부재들의 결합을 의미한다), 위에 제공된 "결합된"의 일반 정의보다 더 좁은 정의가 된다. 이러한 결합은 기계적, 전기적 또는 유체적일 수 있다.
"또는"에 대한 지칭들은 "또는"을 사용하여 설명된 임의의 용어가 설명된 용어들 중 하나, 둘 이상, 및 모두를 나타낼 수 있도록 포괄적인 것으로 해석될 수 있다. "'A'와 'B'중 적어도 하나"에 대한 지칭은 'A'만, 'B'만은 물론, 'A'와 'B' 모두 포함할 수 있다. "포함하는" 또는 기타 개방형 용어와 함께 사용되는 이러한 지칭들은 추가 항목들을 포함할 수 있다.
다양한 요소들의 크기, 치수, 구조, 모양 및 비율, 파라미터의 값, 장착 배열, 재료 사용, 색상, 배향의 변화와 같은 설명된 요소들 및 동작들의 수정들은 본 명세서에서 개시된 청구 대상의 지침들과 이점들을 실질적으로 벗어나지 않고서 발생할 수 있다. 예를 들어, 일체로 형성된 것으로 도시된 요소들은 여러 부분들 또는 요소들로 구성될 수 있으며, 요소들의 부분들은 반대로 되거나 또는 다르게 변화될 수 있으며, 이산적인 요소들 또는 위치들의 본질 또는 수는 변경되거나 변하게 될 수 있다. 본 개시의 범위를 벗어나지 않으면서, 개시된 요소들 및 동작들의 설계, 동작 조건 및 배열에서 다른 치환, 수정, 변경 및 생략이 이루어질 수 있다.
본 명세서에서 요소들의 위치들에 대한 지칭(예를 들어, "상단", "하단", "상부", "하부")은 단지, 도면에서 다양한 요소들의 배향을 설명하기 위해 사용된다. 다양한 요소들의 배향은 다른 예시적인 실시예들에 따라 다를 수 있으며, 이러한 변형들은 본 개시에 포함되도록 의도된다.

Claims (14)

  1. 디바이스에 있어서:
    신경망의 제1 계층에 대한 제1 데이터를 저장하도록 구성된 메모리;
    상기 메모리로부터 제1 데이터를 판독하고 상기 제1 데이터를 사용하여 신경망의 제1 계층에 대한 계산을 수행하여 제2 데이터를 생성하도록 구성된 제1 복수의 프로세싱 요소(PE) 회로들을 포함하는 제1 회로로서, 상기 제1 회로는 생성된 제2 데이터를 제2 회로에 대한 입력으로서 출력하여 신경망의 제2 계층에 대한 계산을 수행하도록 구성된 복수의 버퍼들을 더 포함하는, 상기 제1 회로; 및
    제2 데이터를 사용하여 신경망의 제2 계층에 대한 계산을 수행하도록 구성된 제2 복수의 PE 회로들을 포함하는 상기 제2 회로를 포함하는, 디바이스.
  2. 제1항에 있어서, 상기 제1 복수의 PE 회로들은, 상기 제2 복수의 PE 회로들이 신경망의 제2 계층에 대한 계산을 수행하는 동안, 신경망의 적어도 하나의 노드에 대한 계산을 수행하도록 구성되고; 바람직하게는, 상기 적어도 하나의 노드는 신경망의 제3 계층으로부터 또는 신경망의 제1 계층으로부터의 것인, 디바이스.
  3. 제1항 또는 제2항에 있어서, 상기 복수의 버퍼들은 메모리로 또는 메모리 외부로의 제2 데이터의 임의의 전송을 바이패스함으로써, 상기 생성된 제2 데이터를 상기 제2 회로에 대한 입력으로서 출력하도록 구성되는, 디바이스.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서, 상기 제2 복수의 PE 회로들은 또한 제3 데이터를 생성하기 위해 제2 데이터를 사용하도록 구성되고; 바람직하게는, 상기 제2 복수의 PE 회로들은 또한 생성된 제3 데이터를 메모리에 저장하도록 구성되고; 및/또는 바람직하게는, 상기 제2 회로는 상기 생성된 제3 데이터를 제3 회로에 대한 입력으로서 출력하도록 구성된 복수의 버퍼들을 더 포함하는, 디바이스.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서, 상기 제1 데이터는 신경망의 제1 계층에 대한 가중치 또는 활성화 정보 중 적어도 하나를 포함하고, 상기 제2 데이터는 신경망의 제2 계층에 대한 가중치 또는 활성화 정보 중 적어도 하나를 포함하는, 디바이스.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서, 상기 제1 복수의 PE 회로들은 제1 데이터를 사용하여 컨볼루션 연산을 수행하도록 구성되고, 상기 제2 복수의 PE 회로들은 제2 데이터를 사용하여 내적 연산을 수행하도록 구성되는, 디바이스.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서, 상기 제1 회로 및 상기 제2 회로는 동일한 반도체 디바이스 상에 형성되는, 디바이스.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서, 상기 복수의 버퍼들은 생성된 제2 데이터를 버퍼링하고 생성된 제2 데이터를 제2 회로로 출력하기에 충분한 용량으로 구성되는, 디바이스.
  9. 방법에 있어서:
    메모리에 신경망의 제1 계층에 대한 제1 데이터를 저장하는 단계;
    제1 복수의 프로세싱 요소(PE) 회로들에 의해, 메모리로부터 상기 제1 데이터를 판독하는 단계;
    상기 제1 복수의 PE 회로들에 의해, 상기 제1 데이터를 사용하여 제2 데이터를 생성하기 위해 신경망의 제1 계층에 대한 계산을 수행하는 단계;
    상기 제1 복수의 PE 회로들의 복수의 버퍼들에 의해, 생성된 제2 데이터를 제2 복수의 PE 회로들에 대한 입력으로서 제공하여 신경망의 제2 계층에 대한 계산을 수행하는 단계; 및
    상기 제2 복수의 PE 회로들에 의해, 상기 제2 데이터를 사용하여 신경망의 제2 계층에 대한 계산을 수행하는 단계를 포함하는, 방법.
  10. 제9항에 있어서, 상기 제1 복수의 PE 회로들에 의해, 상기 제2 복수의 PE 회로들이 신경망의 제2 계층에 대한 계산을 수행하는 동안, 신경망의 적어도 하나의 노드에 대한 계산을 수행하는 단계를 더 포함하고; 바람직하게는, 상기 적어도 하나의 노드는 신경망의 제3 계층으로부터 또는 신경망의 제1 계층으로부터의 것인, 방법.
  11. 제9항 또는 제10항에 있어서, 메모리로 또는 메모리 외부로의 제2 데이터의 임의의 전송을 바이패스함으로써, 상기 복수의 버퍼들에 의해 상기 생성된 제2 데이터를 제2 복수의 PE 회로들에 대한 입력으로서 제공하는 단계를 포함하는, 방법.
  12. 제9항 내지 제11항 중 어느 한 항에 있어서, 상기 제2 복수의 PE 회로들에 의해 상기 제2 데이터를 사용하여 제3 데이터를 생성하는 단계를 더 포함하고; 바람직하게는, 상기 제2 복수의 PE 회로들에 의해, 생성된 제3 데이터를 메모리에 저장하는 단계를 더 포함하고; 및/또는 바람직하게는, 상기 제2 복수의 PE 회로들에 대응하는 복수의 버퍼들에 의해 상기 생성된 제3 데이터를 제3 회로에 대한 입력으로서 제공하는 단계를 더 포함하는, 방법.
  13. 제9항 내지 제12항 중 어느 한 항에 있어서, 상기 제1 데이터는 신경망의 제1 계층에 대한 가중치 또는 활성화 정보 중 적어도 하나를 포함하고, 상기 제2 데이터는 신경망의 제2 계층에 대한 가중치 또는 활성화 정보 중 적어도 하나를 포함하는, 방법.
  14. 제9항 내지 제13항 중 어느 한 항에 있어서, 상기 제1 복수의 PE 회로들에 의해 상기 제1 데이터를 사용하여 컨볼루션 연산을 수행하는 단계, 및 상기 제2 복수의 PE 회로들에 의해 상기 제2 데이터를 사용하여 내적 연산을 수행하는 단계를 포함하는, 방법.
KR1020227002206A 2019-07-11 2020-07-08 분산 프로세싱을 가속화하기 위한 파이프라인 병렬 처리 시스템 및 방법 KR20220031629A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/509,252 US20210012186A1 (en) 2019-07-11 2019-07-11 Systems and methods for pipelined parallelism to accelerate distributed processing
US16/509,252 2019-07-11
PCT/US2020/041218 WO2021007333A1 (en) 2019-07-11 2020-07-08 Systems and methods for pipelined parallelism to accelerate distributed processing

Publications (1)

Publication Number Publication Date
KR20220031629A true KR20220031629A (ko) 2022-03-11

Family

ID=71948741

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227002206A KR20220031629A (ko) 2019-07-11 2020-07-08 분산 프로세싱을 가속화하기 위한 파이프라인 병렬 처리 시스템 및 방법

Country Status (6)

Country Link
US (1) US20210012186A1 (ko)
EP (1) EP3997622A1 (ko)
JP (1) JP2022539662A (ko)
KR (1) KR20220031629A (ko)
CN (1) CN114051618A (ko)
WO (1) WO2021007333A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210073317A1 (en) * 2019-09-05 2021-03-11 International Business Machines Corporation Performing dot product operations using a memristive crossbar array
US20220036163A1 (en) * 2020-07-29 2022-02-03 Apple Inc. Chained neural engine write-back architecture
US20220207332A1 (en) * 2020-12-31 2022-06-30 Nxp Usa, Inc. Scalable neural network accelerator architecture
CN114820630B (zh) * 2022-07-04 2022-09-06 国网浙江省电力有限公司电力科学研究院 一种基于fpga的目标跟踪算法模型管道加速方法以及电路

Also Published As

Publication number Publication date
EP3997622A1 (en) 2022-05-18
CN114051618A (zh) 2022-02-15
WO2021007333A1 (en) 2021-01-14
US20210012186A1 (en) 2021-01-14
WO2021007333A9 (en) 2022-02-03
JP2022539662A (ja) 2022-09-13

Similar Documents

Publication Publication Date Title
US11675998B2 (en) System and method for performing small channel count convolutions in energy-efficient input operand stationary accelerator
US11615319B2 (en) System and method for shift-based information mixing across channels for shufflenet-like neural networks
US11385864B2 (en) Counter based multiply-and-accumulate circuit for neural network
US10977002B2 (en) System and method for supporting alternate number format for efficient multiplication
US20210012178A1 (en) Systems, methods, and devices for early-exit from convolution
KR20220031629A (ko) 분산 프로세싱을 가속화하기 위한 파이프라인 병렬 처리 시스템 및 방법
US11681777B2 (en) Optimization for deconvolution
US20220237262A1 (en) Power efficient multiply-accumulate circuitry
US11429394B2 (en) Efficient multiply-accumulation based on sparse matrix
KR20220031101A (ko) 네가티브 및 포지티브 값에 대한 비대칭 스케일링 인자 지원을 위한 시스템 및 방법