KR20230005348A - 뉴럴 네트워크 프로세싱 방법 및 이를 위한 장치 - Google Patents

뉴럴 네트워크 프로세싱 방법 및 이를 위한 장치 Download PDF

Info

Publication number
KR20230005348A
KR20230005348A KR1020227042156A KR20227042156A KR20230005348A KR 20230005348 A KR20230005348 A KR 20230005348A KR 1020227042156 A KR1020227042156 A KR 1020227042156A KR 20227042156 A KR20227042156 A KR 20227042156A KR 20230005348 A KR20230005348 A KR 20230005348A
Authority
KR
South Korea
Prior art keywords
memory
layer
weights
subsystem
data
Prior art date
Application number
KR1020227042156A
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 KR20230005348A publication Critical patent/KR20230005348A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/09Supervised learning

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)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Neurology (AREA)
  • Memory System (AREA)
  • Advance Control (AREA)

Abstract

본 발명의 일 실시예에 따라서 ANN(artificial neural network) 프로세싱을 위한 장치는, ANN 모델과 관련한 데이터의 R/W(read/write)를 위한 메모리들; 및 상기 데이터에 기초하여 상기 ANN 모델에 포함된 다수의 레이어들에 대한 연산(operation)들을 수행하는 적어도 하나의 연산 유닛을 포함하고, 상기 메모리들은 상이한 타입의 복수의 메모리들의 조합에 해당하는 적어도 하나의 메모리-서브시스템을 포함하고, 각 연산 유닛은 상기 적어도 하나의 메모리-서브시스템들 중에서 자신과 연계된 메모리-서브시스템을 통해서 상기 데이터의 R/W를 수행할 수 있다.

Description

뉴럴 네트워크 프로세싱 방법 및 이를 위한 장치
본 발명은 뉴럴 네트워크(neural network)에 관련된 것으로써 보다 구체적으로는 ANN(artificial neural network)와 관련된 프로세싱(processing) 방법 및 이를 수행하는 장치에 관련된 것이다.
인간의 뇌를 구성하는 뉴런들은 일종의 신호 회로를 형성하고 있으며, 뉴런들의 신호 회로를 모방한 데이터 처리 구조와 방식을 인공 신경망(artificial neural network, ANN)이라고 한다. ANN에서는 서로 연결된 다수의 뉴런들이 네트워크를 형성하는데, 개별 뉴런에 대한 입/출력 과정은 [Output = f(W1×Input1 + W2×Input2 + ... +WN×InputN]와 같이 수학적으로 모델링 될 수 있다. Wi는 가중치를 의미하며, 가중치는 ANN의 종류/모델, 계층, 각 뉴런, 학습 결과 등에 따라서 다양한 값을 가질 수 있다.
최근 컴퓨팅 기술의 발달로 ANN 중에서도 다수의 은닉 계층(hidden layer)을 가지는 DNN(deep neural network)이 다양한 분야에서 활발히 연구되고 있으며, 딥 러닝(deep learning)은 DNN에서의 훈련(training) 과정(e.g., 가중치 조절)을 의미한다. 추론(inference)은 학습된 신경망(neural network, NN) 모델에 새로운 데이터를 입력하여 출력을 얻는 과정을 의미한다.
CNN (convolutional neural network)는 대표적인 DNN 중 하나로써, 컨볼루션 계층(convolutional layer), 풀링 계층(pooling layer), 완전 연결 계층(fully connected layer) 및/또는 이들의 조합을 기반으로 구성될 수 있다. CNN은 2차원 데이터의 학습에 적합한 구조를 가지고 있으며, 대표적으로 이미지 분류(classification), 검출(detection) 등에 우수한 성능을 나타낸다고 알려져 있다.
CNN을 비롯한 NN의 훈련 또는 추론을 위한 연산에는 대규모(massive)의 계층들과 데이터, 메모리 읽기/쓰기들이 관여하므로 분산/병렬 프로세싱, 메모리 구조와 이들의 제어는 성능을 결정하는 핵심적 요소이다.
본 발명이 이루고자 하는 기술적 과제는 보다 효율적인 뉴럴 네트워크 프로세싱 방법 및 이를 위한 장치를 제공하는데 있다.
상술된 기술적 과제 외에 다른 기술적 과제들이 상세한 설명으로부터 유추될 수 있다.
본 발명의 일 측면에 따른 ANN(artificial neural network) 프로세싱을 위한 장치는, ANN 모델과 관련한 데이터의 R/W(read/write)를 위한 메모리들; 및 상기 데이터에 기초하여 상기 ANN 모델에 포함된 다수의 레이어들에 대한 연산(operation)들을 수행하는 적어도 하나의 연산 유닛을 포함할 수 있다. 상기 메모리들은 상이한 타입의 복수의 메모리들의 조합에 해당하는 적어도 하나의 메모리-서브시스템을 포함할 수 있다. 각 연산 유닛은 상기 적어도 하나의 메모리-서브시스템들 중에서 자신과 연계된 메모리-서브시스템을 통해서 상기 데이터의 R/W를 수행하도록 구성될 수 있다.
상기 ANN 모델의 제1 레이어의 가중치들에 대한 R/W는 상기 연계된 메모리-서브시스템의 제1 타입 메모리를 통해서 수행될 수 있다. 상기 제1 레이어 이후에 연산되는 상기 ANN 모델의 제2 레이어의 가중치들에 대한 R/W는 상기 연계된 메모리-서브시스템의 제2 타입 메모리를 통해서 수행될 수 있다. 상기 제2 레이어 이후에 연산되는 상기 ANN 모델의 제3 레이어의 가중치들에 대한 R/W는 상기 연계된 메모리-서브시스템의 제3 타입 메모리를 통해서 수행될 수 있다.
상기 제 2 타입 메모리의 읽기 레이턴시는, 상기 제1 타입 메모리의 읽기 레이턴시보다 길고, 상기 제3 타입 메모리의 읽기 레이턴시보다는 짧을 수 있다.
상기 제1 레이어에 대한 프로세싱 시간은 상기 제2 타입 메모리의 읽기 레이턴시 이상일 수 있다. 상기 제1 레이어에 대한 프로세싱 시간과 상기 제2 레이어에 대한 프로세싱 시간의 합은, 상기 제3 타입 메모리의 읽기 레이턴시 이상일 수 있다.
상기 제1 레이어의 프로세싱 시간 동안 상기 제2 레이어의 가중치들이 상기 제2 타입 메모리로부터 미리 패치(pre-fetch)될 수 있다. 상기 제1 레이어 및 제2 레이어의 프로세싱 시간 동안 상기 제3 레이어의 가중치들이 상기 제3 타입 메모리로부터 미리 패치(pre-fetch)될 수 있다.
각 메모리-서브시스템은 SRAM, DRAM 및 NAND 플래시 메모리의 조합일 수 있다.
상기 SRAM은 온-칩 형태로 각 연산 유닛에 결합(coupled)될 수 있다.
각 메모리-서브시스템 내에서 상기 상이한 타입의 복수의 메모리들은 계층적 (hierarchical) 메모리 구조를 가질 수 있다.
상기 계층적 메모리 구조에서 최하위 레벨에 위치한 메모리는, 딥러닝(deep learning)을 통해 사전에 훈련된(trained) 적어도 둘 이상의 DNN (deep neural network) 모델들에 대한 가중치들을 저장할 수 있다.
상기 ANN 모델에 대한 컴파일링(compiling) 결과에 기초하여 해당 레이어를 위해 사용될 메모리의 타입이 결정될 수 있다.
상기 장치는 사전에 훈련된(trained) DNN (deep neural network) 모델에 기반하여 추론 (inference)을 수행하는 가속기(Accelerator)일 수 있다.
상기 장치는 NIC (network interface card)를 통해 다수의 사용자들의 추론 요청들에 응답하는 IP (internet protocol) 네트워크 상의 데이터 센터일 수 있다.
본 발명의 다른 일 측면에 따른 ANN(artificial neural network) 프로세싱 방법은, 상이한 타입의 복수의 메모리들의 조합에 해당하는 메모리-서브시스템으로부터 ANN 모델에 포함된 다수의 레이어들 중 제1 레이어의 가중치들을 획득; 및 상기 획득된 제1 레이어의 가중치들에 기초하여 상기 제1 레이어에 대한 연산(operation)을 수행; 상기 제1 레이어에 대한 연산이 수행하는 동안에 상기 메모리-서브시스템으로부터 상기 ANN 모델의 제2 레이어의 가중치들을 획득; 및 상기 제1 레이어에 대한 연산과 상기 제2 레이어에 대한 연산이 수행되는 동안에 상기 메모리-서브시스템으로부터 상기 ANN 모델의 제3 레이어의 가중치들을 획득하는 것을 포함할 수 있다. 상기 제1 레이어의 가중치들은 상기 메모리-서브시스템의 제1 타입 메모리로부터 획득될 수 있다. 상기 제1 레이어 이후에 연산되는 상기 제2 레이어의 가중치들은 상기 메모리-서브시스템의 제2 타입 메모리로부터 획득될 수 있다. 상기 제2 레이어 이후에 연산되는 상기 제3 레이어의 가중치들은 상기 메모리-서브시스템의 제3 타입 메모리로부터 획득될 수 있다.
본 발명의 또 다른 일 측면에 따라서 상술된 방법을 수행하기 위한 명령어들을 기록한 프로세서로 읽을 수 있는 기록매체가 제공될 수 있다.
본 발명의 일 실시예에 따르면 계층적 구조를 가지는 서로 다른 타입의 메모리들이 뉴럴 네트워크 연산의 특성에 적응적으로 구성(configure) 및 제어됨으로써 보다 효율적인 뉴럴 네트워크 프로세싱 방법과 장치가 제공될 수 있다.
본 발명의 다른 기술적 효과들이 상세한 설명으로부터 유추될 수 있다.
도 1은 본 발명의 일 실시예에 따른 시스템의 일 예이다.
도 2는 본 발명의 일 실시예에 따른 PE의 일 예이다.
도 3은 본 발명의 일 실시예에 따른 NPU와 메모리 서브시스템을 도시한다.
도 4는 본 발명의 일 실시예에 따른 프로세싱 장치 수행 가능한 동작들의 일 예를 도시한다.
도 5는 본 발명의 일 실시예에 따른 추론 프로세싱을 수행하는 장치의 일 예(e.g, 데이터 센터)를 나타낸다.
도 6은 본 발명의 실시예에 따른 추론 프로세싱을 수행하는 장치의 메모리 구조들을 예시한다.
도 7의 ANN 모델의 프로세싱 예시이다.
도 8 내지 도 10은 다양한 메모리 구조들에 대한 프로세싱 성능을 비교 설명하기 위한 도면들이다.
도 11은 본 발명의 실시예에 따른 ANN 모델 파라미터(가중치)들의 저장 규칙을 설명하기 위한 도면이다.
도 12는 본 발명의 실시예에 따른 ANN 프로세싱 방법의 흐름을 설명하기 위한 도면이다.
이하 뉴럴 네트워크 프로세싱을 위한 방법 및 장치에 적용 가능한 예시적인 실시예에 대하여 살펴본다. 이하에서 설명되는 예시들은 앞서 설명된 본 발명에 대한 이해를 돕기 위한 비 한정적인 실시예들이며, 일부 실시예의 조합/생략/변경이 가능함을 당업자라면 이해할 수 있다.
도 1은 연산 처리 장치(또는 프로세서)를 포함하는 시스템의 일 예이다.
도 1을 참조하면, 본 실시예에 따른 뉴럴 네트워크 프로세싱 시스템(X100)은 CPU(Central Processing Unit)(X110)과 NPU (Neural Processing Unit)(X160) 중 적어도 하나를 포함할 수 있다.
CPU(X110)은 NPU(X160)을 포함한 시스템 내의 다른 구성요소에 다양한 명령을 내리는 호스트 역할 및 기능을 수행하도록 구성될 수 있다. CPU(X110)은 저장소(Storage/Memory, X120)와 연결되어 있을 수 있고, 내부에 별도의 저장소를 구비할 수도 있다. 수행 기능에 따라 CPU(X110)은 호스트(host)로, CPU(X110)과 연결된 저장소(X120)는 호스트 메모리(host memory)로 명명될 수 있다.
NPU(X160)은 CPU(X110)의 명령을 전송 받아 연산과 같은 특정 기능을 수행하도록 구성될 수 있다. 또한, NPU(X160)은 ANN 관련 프로세싱을 수행하도록 구성되는 적어도 하나 이상의 PE(processing element, or Processing Engine)(X161)을 포함한다. 예를 들어, NPU(X160)은 4개 내지 4096개의 PE(X161)들을 구비하고 있을 수 있으나, 반드시 이에 제한되는 것은 아니다. NPU(X160)은 4개 미만 또는 4096개 초과의 PE(X161)을 구비할 수도 있다.
NPU(X160)도 역시 저장소(X170)와 연결되어 있을 수 있고, 및/또는 NPU(X160) 내부에 별도의 저장소를 구비할 수도 있다.
저장소들(X120; 170;)은 DRAM/SRAM 및/또는 NAND 또는 이들 중 적어도 하나의 조합일 수 있으나, 반드시 이에 제한되는 것은 아니며, 데이터를 저장하기 위한 저장소의 형태라면 어떠한 형태로도 구현될 수 있다.
다시, 도 1을 참조하면, 뉴럴 네트워크 프로세싱 시스템(X100)은 호스트 인터페이스(Host I/F)(X130), 커맨드 프로세서(command processor)(X140), 및 메모리 컨트롤러(memory controller)(X150)를 더 포함할 수 있다.
호스트 인터페이스(X130)는 CPU(X110)과 NPU(X160)을 연결하도록 구성되며, CPU(X110)과 NPU(X160)간의 통신이 수행되도록 한다.
커맨드 프로세서(X140)는 호스트 인터페이스(X130)를 통해 CPU(X110)으로부터 명령을 수신하여 NPU(X160)에 전달하도록 구성된다.
메모리 컨트롤러(X150)는 CPU(X110)과 NPU(X160) 각각 또는 서로간의 데이터 전송 및 데이터 저장을 제어하도록 구성된다. 예컨대, 메모리 컨트롤러(X150)는 PE(X161)의 연산 결과 등을 NPU(X160)의 저장소(X170)에 저장하도록 제어할 수 있다.
구체적으로, 호스트 인터페이스(X130)는 컨트롤 및 상태(control/status) 레지스터를 구비할 수 있다. 호스트 인터페이스(X130)는 컨트롤 및 상태(control /status) 레지스터를 이용하여, CPU(X110)에게 NPU(X160)의 상태 정보를 제공하고, 커맨드 프로세서(X140)로 명령을 전달할 수 있는 인터페이스를 제공한다. 예컨대, 호스트 인터페이스(X130)는 CPU(X110)으로 데이터를 전송하기 위한 PCIe 패킷을 생성하여 목적지로 전달하거나, 또는 CPU(X110)으로부터 전달받은 패킷을 지정된 곳으로 전달할 수 있다.
호스트 인터페이스(X130)는 패킷을 CPU(X110)의 개입 없이 대량으로 전송하기 위해 DMA (Direct Memory Access) 엔진을 구비하고 있을 수 있다. 또한, 호스트 인터페이스(X130)는 커맨드 프로세서(X140)의 요청에 의해 저장소(X120)에서 대량의 데이터를 읽어 오거나 저장소(X120)로 데이터를 전송할 수 있다.
또한, 호스트 인터페이스(X130)는 PCIe 인터페이스를 통해 접근 가능한 컨트롤 상태 레지스터를 구비할 수 있다. 본 실시예에 따른 시스템의 부팅 과정에서 호스트 인터페이스(X130)는 시스템의 물리적인 주소를 할당 받게 된다(PCIe enumeration). 호스트 인터페이스(X130)는 할당 받은 물리적인 주소 중 일부를 통해 컨트롤 상태 레지스터에 로드, 저장 등의 기능을 수행하는 방식으로 레지스터의 공간을 읽거나 쓸 수 있다. 호스트 인터페이스(X130)의 레지스터들에는 호스트 인터페이스(X130), 커맨드 프로세서(X140), 메모리 컨트롤러(X150), 그리고, NPU(X160)의 상태 정보가 저장되어 있을 수 있다.
도 1에서는 메모리 컨트롤러(X150)가 CPU(X110)과 NPU(X160)의 사이에 위치하지만, 반드시 그러한 것은 아니다. 예컨대, CPU(X110)과 NPU(X160)은 각기 다른 메모리 컨트롤러를 보유하거나, 각각 별도의 메모리 컨트롤러와 연결되어 있을 수 있다.
상술한 뉴럴 네트워크 프로세싱 시스템(X100)에서, 이미지 판별과 같은 특정 작업은 소프트웨어로 기술되어 저장소(X120)에 저장되어 있을 수 있고, CPU(X110)에 의해 실행될 수 있다. CPU(X110)은 프로그램 실행 과정에서 별도의 저장 장치(HDD, SSD 등)에서 뉴럴 네트워크의 가중치를 저장소(X120)로 로드하고, 이것을 재차 NPU(X160)의 저장소(X170)로 로드할 수 있다. 이와 유사하게 CPU(X110)은 이미지 데이터를 별도의 저장 장치에서 읽어와 저장소(X120)에 로드하고, 일부 변환 과정을 수행한 뒤 NPU(X160)의 저장소(X170)에 저장할 수 있다.
이후, CPU(X110)은 NPU(X160)의 저장소(X170)에서 가중치와 이미지 데이터를 읽어 딥러닝의 추론 과정을 수행하도록 NPU(X160)에 명령을 내릴 수 있다. NPU(X160)의 각 PE(X161)은 CPU(X110)의 명령에 따라 프로세싱을 수행할 수 있다. 추론 과정이 완료된 뒤 결과는 저장소(X170)에 저장될 수 있다. CPU(X110)은 해당 결과를 저장소(X170)에서 저장소(X120)로 전송하도록 커맨드 프로세서(X140)에 명령을 내릴 수 있으며, 최종적으로 사용자가 사용하는 소프트웨어로 그 결과를 전송할 수 있다.
도 2는 PE의 세부 구성의 일 예이다.
도 2를 참조하면, 본 실시예에 따른 PE(Y200)은 인스트럭션 메모리(instruction memory)(Y210), 데이터 메모리(data memory)(Y220), 데이터 플로우 엔진(data flow engine)(Y240), 컨트롤 플로우 엔진(control flow engine)(250) 및/또는 오퍼레이션 유닛(operation unit)(Y280) 중 적어도 하나를 포함할 수 있다. 또한, PE(Y200)은 라우터(router)(Y230), 레지스터 파일(Y260), 그리고/또는, 데이터 페치 유닛(data fetch unit)(Y270)을 더 포함할 수 있다.
인스트럭션 메모리(Y210)는 하나 이상의 태스크(task)를 저장하도록 구성된다. 태스크는 하나 이상의 인스트럭션(instruction)으로 구성될 수 있다. 인스트럭션은 명령어 형태의 코드(code)일 수 있으나, 반드시 이에 제한되는 것은 아니다. 인스트럭션은 NPU과 연결된 저장소, NPU 내부에 마련된 저장소 및 CPU과 연결된 저장소에 저장될 수도 있다.
본 명세서에서 설명되는 태스크는 PE(Y200)에서 실행되는 프로그램의 실행 단위를 의미하고, 인스트럭션은 컴퓨터 명령어 형태로 형성되어 태스크를 구성하는 요소이다. 인공 신경망에서의 하나의 노드는f(Σ wi x xi) 등과 같은 복잡한 연산을 수행하게 되는데, 이러한 연산이 여러개의 태스크들에 의해 나눠져서 수행될 수 있다. 에컨대, 하나의 태스크로 인공 신경망에서의 하나의 노드가 수행하는 연산을 모두 수행할 수 있고, 또는 인공 신경망에서의 다수의 노드가 수행하는 연산을 하나의 태스크를 통해 연산하도록 할 수도 있다. 또한 위와 같은 연산을 수행하기 위한 명령어는 인스트럭션으로 구성될 수 있다.
이해의 편의를 위해 태스크가 복수개의 인스트럭션들로 구성되고 각 인스트럭션은 컴퓨터 명령어 형태의 코드로 구성되는 경우를 예로 든다. 이 예시에서 하기한 데이터 플로우 엔진(Y240)은 각자 실행에 필요한 데이터가 준비된 태스크들의 데이터 준비 완료를 체크한다. 이후, 데이터 플로우 엔진(240)은 데이터 준비가 완료된 순서대로 태스크의 인덱스를 페치 준비 큐에 전송하며(태스크의 실행을 시작), 페치 준비 큐, 페치 블록, 러닝 준비 큐에 순차적으로 태스크의 인덱스를 전송한다. 또한, 하기한 컨트롤 플로우 엔진(Y250)의 프로그램 카운터(Y252)는 태스크가 보유한 복수개의 인스트럭션들을 순차적으로 실행하여 각 인스트럭션의 코드를 분석하며, 이에 따라 오퍼레이션 유닛(Y280)에서의 연산이 수행된다. 본 명세서에서는 이러한 과정들을 통틀어서 “태스크를 실행한다”고 표현한다. 또한, 데이터 플로우 엔진(Y240)에서는 “데이터를 체크”, “데이터를 로드”, “컨트롤 플로우 엔진에 태스크의 실행을 지시”, “태스크의 실행을 시작”, “태스크 실행을 진행” 등의 절차가 이루어지고, 컨트롤 플로우 엔진(Y250)에 따른 과정들은 “태스크들을 실행하도록 제어한다” 또는 “태스크의 인스트럭션을 실행한다”라고 표현한다. 또한, 프로그램 카운터(252)에 의해 분석된 코드에 따른 수학적 연산은 하기한 오퍼레이션 유닛(Y280)이 수행할 수 있으며, 오퍼레이션 유닛(Y280)이 수행하는 작업을 본 명세서에서는 “연산(operation)”이라고 표현한다. 오퍼레이션 유닛(Y280)은 예컨대, 텐서 연산(Tensor Operation)을 수행할 수 있다. 오퍼레이션 유닛(Y280)은 FU(Functional Unit)로 지칭될 수도 있다.
데이터 메모리(Y220)는 태스크들과 연관된 데이터(data)를 저장하도록 구성된다. 여기서, 태스크들과 연관된 데이터는 태스크의 실행 또는 태스크의 실행에 따른 연산에 사용되는 입력 데이터, 출력 데이터, 가중치 또는 활성화값(activations)일 수 있으나, 반드시 이에 제한되는 것은 아니다.
라우터(Y230)는 뉴럴 네트워크 프로세싱 시스템을 구성하는 구성요소들 간의 통신을 수행하도록 구성되며, 뉴럴 네트워크 프로세싱 시스템을 구성하는 구성요소들 간의 중계 역할을 수행한다. 예컨대, 라우터(Y230)는 PE들 간의 통신 또는 커맨드 프로세서(Y140)와 메모리 컨트롤러(Y150) 사이의 통신을 중계할 수 있다. 이러한 라우터(Y230)는 네트워크 온 칩(Network on Chip, NOC) 형태로 PE(Y200) 내에 마련될 수 있다.
데이터 플로우 엔진(Y240)은 태스크들을 대상으로 데이터 준비 여부를 체크하고, 데이터 준비가 완료된 태스크의 순서대로 태스크를 실행하는데 필요한 데이터를 로드하여 컨트롤 플로우 엔진(Y250)에 상기 태스크들의 실행을 지시하도록 구성된다. 컨트롤 플로우 엔진(Y250)은 데이터 플로우 엔진(Y240)으로부터 지시 받은 순서대로 태스크의 실행을 제어하도록 구성된다. 또한, 컨트롤 플로우 엔진(Y250)은 태스크들의 인스트럭션을 실행함에 따라 발생하는 더하기, 빼기, 곱하기, 나누기와 같은 계산을 수행할 수도 있다.
레지스터 파일(Y260)은 PE(Y200)에 의해 빈번하게 사용되는 저장 공간으로서, PE(Y200)에 의해 코드들이 실행되는 과정에서 사용되는 레지스터를 하나 이상 포함한다. 예컨대, 레지스터 파일(260)은 데이터 플로우 엔진(Y240)이 태스크를 실행하고 컨트롤 플로우 엔진(Y250)이 인스트럭션을 실행함에 따라 사용되는 저장 공간인 레지스터를 하나 이상 구비하도록 구성될 수 있다.
데이터 페치 유닛(Y270)은 컨트롤 플로우 엔진(Y250)에 의해 실행되는 하나 이상의 인스트럭션에 따른 연산 대상 데이터를 데이터 메모리(Y220)로부터 오퍼레이션 유닛(Y280)에 페치하도록 구성된다. 또한, 데이터 페치 유닛(Y270)은 오퍼레이션 유닛(Y280)이 구비한 복수개의 연산기(Y281)들 각각에 동일하거나 각기 다른 연산 대상 데이터를 페치할 수 있다.
오퍼레이션 유닛(Y280)은 컨트롤 플로우 엔진(Y250)이 실행하는 하나 이상의 인스트럭션에 따른 연산을 수행하도록 구성되며, 실제 연산을 수행하는 연산기(Y281)를 하나 이상 포함하도록 구성된다. 연산기(Y281)들은 각각 더하기, 빼기, 곱셈, 곱셈 누적(multiply and accumulate, MAC)과 같은 수학적 연산을 수행하도록 구성된다. 오퍼레이션 유닛(Y280)은 연산기(Y281)들이 특정 단위 간격 또는 특정 패턴을 이룬 형태로 형성될 수 있다. 이와 같이 연산기(Y281)들이 어레이 형태로 형성되는 경우 어레이 형태의 연산기(Y281)들은 병렬적으로 연산을 수행하여 복잡한 행렬 연산과 같은 연산들을 일시에 처리할 수 있다.
도 2에서는 오퍼레이션 유닛(Y280)은 컨트롤 플로우 엔진(Y250)과 분리된 형태로 도시되어 있으나, 오퍼레이션 유닛(Y280)이 컨트롤 플로우 엔진(Y250)에 포함된 형태로 PE(Y200)이 구현될 수 있다.
오퍼레이션 유닛(Y280)의 연산에 따른 결과 데이터는 컨트롤 플로우 엔진(Y250)에 의해 데이터 메모리(Y220)에 저장될 수 있다. 여기서, 데이터 메모리(Y220)에 저장된 결과 데이터는 해당 데이터 메모리를 포함하는 PE과 다른 PE의 프로세싱에 사용될 수 있다. 예컨대, 제1 PE의 오퍼레이션 유닛의 연산에 따른 결과 데이터는 제1 PE의 데이터 메모리에 저장될 수 있고, 제1 PE의 데이터 메모리에 저장된 결과 데이터는 제2 PE에 이용될 수 있다.
상술한 뉴럴 네트워크 프로세싱 시스템 및 여기에 포함되는 PE(Y200)을 이용하여 인공 신경망에서의 데이터 처리 장치 및 방법, 인공 신경망에서의 연산 장치 및 방법을 구현할 수 있다.
ANN 프로세싱을 위한 이종의 메모리 구조
본 발명의 일 실시예에 따르면, ANN 프로세싱을 위하여 서로 다른 타입의 메모리들이 함께 사용될 수 있으며 이를 통해 보다 비용 효율적인 ANN 프로세싱이 가능하다. 예컨대 제안되는 이종(hetero-type) 메모리 구조는 추론 가속기 (e.g., 대용량 메모리 딥러닝 추론 가속기)등의 ANN 프로세싱 장치에서 사용될 수 있으며, 이종 메모리 구조를 통해 ANN 프로세싱 장치의 성능을 유지하면서 비용이 저감될 수 있다. 딥러닝 추론 가속기는 딥러닝을 통해 훈련된 모델을 이용하여 추론을 수행하는 가속기를 의미할 수 있다. 딥러닝 추론 가속기는 딥러닝 가속기, 추론 가속기 또는 간략히 가속기라고 지칭될 수 있다.
이하에서 편의상 추론 가속기를 중심으로 이종 메모리 구조가 설명되지만, 추론 가속기는 본 발명의 이종 메모리 구조가 적용 가능한 NPU(neural processing unit) 또는 NPU를 포함하는 ANN 프로세싱 장치의 일 형태일 뿐 본 발명의 적용은 추론 가속기에 한정되지 않는다. 예컨대, 러닝/훈련을 위한 NPU 프로세서에도 이종 메모리 구조가 사용될 수 있다.
일반적으로는, 프로세싱에 동일한 종류의 메모리가 주로 사용된다. 예를 들어, 메모리 구조는 DDR DRAM(dynamic random access memory) only로 구성되거나, HBM (high bandwidth memory) only와 같이 동종 메모리로 구성되는 것이 보편적이다.
각 메모리 타입마다 다른 특성을 가지는데, 널리 사용되는 타입의 메모리들을 간략히 언급하면 다음과 같다. (i) DRAM은 NAND와 비교시 단가가 높으며, 용량이 제한적이다. NAND 보다는 적은 지연(latency)를 나타내고 SRAM 대비에서 높은 지연을 나타낸다. (ii) NAND는 SRAM이나 DRAM과 비교할 때 저렴한 비용으로 상대적으로 높은 저장 용량을 가지는 장점이 있다 반면, NAND는 SRAM이나 DRAM 보다 높은 지연을 가진다. 또한, NAND는 in-place update가 안되므로 쓰기(write) 과정이 상대적으로 복잡한 단점이 있다. 즉 NAND에는 데이터를 덮어쓰는 것이 지원되지 않기 때문에, 기 저장된 데이터의 삭제가 선행되어야 새로운 데이터 쓰기가 가능하다. 따라서, 덮어 쓰기 방식으로 데이터를 업데이트하는 다른 메모리에 비하여 NAND는 쓰기 과정이 복잡하고 시간 지연이 높은 단점이 있다.
딥러닝 가속기의 추론을 위해서는 모델(e.g., 딥러닝을 통해 훈련된 모델, 간략히 '딥러닝 모델' 또는 '모델')이 가속기/가속기 메모리로 전송/적재될 필요가 있다. 가속기의 사용 환경과 용도에 따라서 가속기가 다양한 딥러닝 모델들을 지원해야 할 수 있다. 예컨대, 다수의 사용자들이 요청하는 딥러닝 모델들이 다양한 반면 가속기의 메모리 용량은 제한적인 상황에서는 사용자의 요청에 따라서 가속기/메모리로의 모델 전송과 변경이 빈번하게 발생될 수 있다. 보다 구체적인 예로, 음성 관련 서비스를 요청하는 사용자를 위한 모델과 이미지 관련 서비스를 요청하는 사용자를 위한 모델은 서로 상이할 수 있으며, 가속기는 각 사용자의 요청에 적합한 모델을 통해 서비스를 제공하기 위해서 가속기에 적재된 모델을 변경할 필요가 있을 수 있다.
본 발명의 일 실시예에 따르면 추론 가속기의 메모리 구조로써 서로 다른 타입의 메모리들의 하이브리드 구조가 사용될 수 있다. 일 예로, 추론 가속기의 메모리 구조로써 (DRAM only 대신) DRAM + NAND의 하이브리드 구조가 사용될 수 있다.
딥러닝 모델에 기반한 추론 프로세싱에서는 쓰기 횟수보다 읽기 횟수가 매우 많이 발생하는 특성이 있다. 예컨대, 가속기의 메모리에 한번 Write 된 딥러닝 모델은 추론 프로세싱을 위해서 여러 차례 Read 될 수 있다(i.e., write-once, read-many 엑세스 구조).
한편, NAND의 Read에 소요되는 시간은 DRAM이나 SRAM의 Read에 소요되는 시간 보다 긴 Latency를 갖지만, 딥러닝 모델에 기반한 추론 프로세싱 시간보다는 훨씬 짧은 것이 일반적이다. 추론을 위한 총 프로세싱 시간은 모델과 데이터 크기에 따라서 달라질 수 있겠으나 NAND의 Read Latency보다는 충분히 긴 시간을 필요로 하는 것이 일반적이다. 예컨대, 추론을 위한 총 프로세싱 시간은 수백 us 내지는 수십 ms를 가지는데 비하여 NAND의 Read Latency는 약10~40us 일 수 있다.
또한, 딥 러닝 추론 가속기 중 일부는 컴파일러에 의해 예측 가능한 실행 시간을 가질 수 있다. 이 경우, 추론 가속기는 실제 연산을 개시하기 이전에 컴파일러를 통해서 프로세싱 시간을 추정할 수 있다.
본 발명의 일 실시예 따르면 상대적으로 큰 지연을 가지는 NAND가 사용되더라도, 추론 가속기의 성능 저하나 프로세싱 시간의 증가를 방지 또는 최소화할 수 있다. 일 예로, (추론 가속기의 프로세싱 시간에 대한 추정치를 이용하여) DRAM + NAND의 하이브리드 구조에 기반한 추론 가속기가 DRAM only 구조에 기반한 추론 가속기와 대등한 성능을 가지도록 하는 방안이 새롭게 제안된다.
구체적인 일 예로, 딥러닝 모델을 정의하는 가중치들 중 적어도 일부가 추론 가속기의 NAND에 쓰여질 수 있다. 딥러닝 컴파일러는 프로세싱 시간을 추정하는 과정에서 해당 가중치가 필요로 하는 시점(e.g., 해당 가중치에 기반한 연산이 실제로 PE에서 수행되는 타이밍)을 사전에 알 수 있다. 따라서, 딥러닝 컴파일러는 NAND에 쓰여진 해당 가중치가 연산에서 필요로 하는 시점보다 NAND read latency에 해당하는 시간만큼 먼저 요청(e.g., 해당 가중치를 NAND에서 Read할 것을 지시)함으로써 NAND의 read latency >> DRAM latency 임에도 불구하고 성능의 저하없이 필요로 하는 시점에 가중치가 PE에 전달되도록 할 수 있다.
NAND는 DRAM에 비해 용량이 클 뿐 아니라 비-휘발성이므로, 추론 가속기의 NAND에는 많은 모델들이 저장될 수 있다. 이와 같이 추론 가속기에 다양한 모델들이 저장되어 있다면 다른 모델들에 대한 추론 요청들이 동시 다발적으로 발생하더라도 추론 프로세싱이 원활히 수행될 수 있는 장점이 있다. 추론 가속기는 사용자의 요청하는 모델을 획득하기 위해 별도로 (IP 네트워크 등의) 외부 장치에 접근할 필요 없이 추론 가속기의 NAND로부터 해당 모델을 Read하여 프로세싱을 보다 신속하고 원활하게 수행할 수 있다.
결과적으로 이종 메모리들의 하이브리드 구조를 통해서 추론 가속기의 성능의 저하 없이 비용을 저감할 수 있고, 또한 네트워크의 접근을 줄이면서 딥러닝 추론을 실행할 수 있다.
본 발명의 일 실시예에 따른 추론 가속기의 이종의 메모리들은 계층적 (hierarchical) 구조를 가질 수 있다.
도 3은 본 발명의 일 실시예에 따른 NPU와 메모리 서브시스템을 도시한다. 도 3을 참조하면, 프로세싱 장치(300)의 NPU(305) 상에는 On-Chip 형태로 제1 타입 메모리(310)가 구비될 수 있다. 또한, 프로세싱 장치(300)에는 추가적으로 제1 타입과 상이한 타입의 메모리가 적어도 하나 이상 구비될 수 있다. 도 3에서는 프로세싱 장치(300)가 제1 타입 메모리(310)에 추가적으로 제2 타입 메모리(315) 및 제3 타입 메모리(320)를 포함한다고 가정한다. Read 및/또는 Write에 대한 Latency는 제1 타입 메모리가 가장 작고, 제3 타입 메모리가 가장 클 수 있다. 제1 타입 메모리, 제2 타입 메모리 및 제3 타입 메모리는 계층적 메모리 구조를 가질 수 있다.
설명의 편의상 제1 타입 메모리는 SRAM이고, 제2 타입 메모리는 DRAM이고, 제3 타입 메모리는 NAND라고 가정한다.
추론을 위하여 다음과 같은 비용-효율적 메모리 계층 구조가 사용될 수 있다.
(a) SRAM: 경량화된 최근 모델들(modern compact models)의 효율성을 극대화하기 위하여 Large SRAM이 탑재될 수 있다.
(b) +DRAM+NAND: 성능 저하 없이 비용 효율성을 최대화하기 위해 사용될 수 있다. Deterministic execution은 +DRAM+NAND로부터의 정확한 사전-패치(prefetch)들을 스케줄링 가능하게 한다.
(c) NAND: NAND는 모델 저장을 위해 사용될 수 있다. 예컨대, NAND는 영구적(persistent) 추론 모델의 저장을 위해 사용될 수 있다.
도 4는 도 3에 도시된 메모리 구조를 갖는 프로세싱 장치(300)에서 수행 가능한 동작들의 일 예를 도시한다.
실제로 딥러닝 알고리즘은 매우 많은 레이어들을 포함하지만, 설명의 편의를 위해서 도 4에서는 가능한 간략히 도시되었다. 도 4의 (a) 추론 모델의 알고리즘은 제1 컨볼루션 레이어(Conv1), 제2 컨벌루션 레이어(Conv2), 제3 컨벌루션 레이어(Conv3), 제1 완전 연결 레이어(fc1) 및 제2 완전 연결 레이어(fc2) 순서로 연산을 수행한다고 가정한다.
또한, PE에서 Conv1 프로세싱 시간은 DRAM의 Read Latency 보다 이상이고, Conv1+Conv2 프로세싱 시간은 NAND의 Read Latency 이상이라고 가정한다(e.g., 프로세싱 장치의 컴파일러가 이와 같이 프로세싱 시간을 예측하였다고 가정).
도 4(b)를 참조하면 Conv2 관련 데이터는 SRAM이 아니라 DRAM에 저장되더라도, 성능 저하를 야기하지 않는다. t1 시점에서 Conv2 관련 데이터의 Read가 DRAM에 요청되면 PE가 Conv2의 프로세싱을 시작하는 시점까지는 DRAM으로부터 Read가 완료될 수 있다. 유사하게, Conv3, fc1 및 fc2 관련 데이터는 SRAM이나 DRAM이 아닌 NADN에 저장되더라도 해당 레이어의 프로세싱이 시작하는 시점까지는 Read가 완료될 수 있다.
상위 계층 메모리보다 상대적으로 느린 하위 계층 메모리에 저장되더라도 성능과 쓰루풋 저하를 야기하지 않는 데이터는 상위 계층 메모리보다 하위 계층 메모리에 저장하는 것이 비용 효율성 측면에서 유리하다.
대역폭에 대한 제약을 고려하지 않은 가장 간단한 예를 들면, PE는 t1 시점에서 Conv1 관련 데이터(e.g., 가중치들)를 SRAM에 요청하면서, 동시에(e.g., 동일 cycle에 또는 일정 Cycle 이내에) DRAM에 Conv2 관련 데이터(e.g., 가중치들)를 요청하고 NAND에 Conv3 관련 데이터(e.g., 가중치들)를 요청한다. PE가 SRAM으로부터의 Conv1 관련 데이터를 수신하여 Conv1 프로세싱을 수행하는 동안 DRAM으로부터의 Conv 2 관련 데이터의 Read가 수행된다. 따라서, Conv1의 프로세싱이 완료된 직후 PE는 (불필요한 Idle 없이) Conv2의 프로세싱을 시작할 수 있다. PE가 Conv1 프로세싱 및 Conv2 프로세싱을 수행하는 동안 NAND로부터의 Conv3 관련 데이터의 Read가 수행된다. Conv2의 프로세싱이 완료된 직후 PE는 (불필요한 Idle 없이) Conv3의 프로세싱을 시작할 수 있다. 마찬가지로, Conv3의 프로세싱 완료 시점까지는 fc1 관련 데이터의 준비가 완료되고, fc1의 프로세싱 완료 시점까지는 fc2 관련 데이터의 준비가 완료될 수 있다.
상술된 바와 같이 딥러닝을 통해 획득된 모델의 알고리즘은 다수의 연산 레이어들 포함하고, 각 레이어의 연산을 위해서는 가중치 등과 같은 데이터가 메모리에 저장될 필요가 있다. 저장된 데이터는 적절한 시점에 Read되어야 한다. 본 발명의 일 실시예에 따르면 해당 레이어의 연산 순서와 연산이 개시되는 시점에 따라서 데이터가 저장될 메모리 계층/타입이 결정될 수 있다.
일 예로, 데이터는 상위 계층 메모리에 우선적으로 저장되고, 상위 계층 레이어에 저장될 수 없는 잔여 데이터는 하위 계층 메모리에 저장될 수 있다. 예컨대, 데이터가 SRAM에 모두 저장될 수 없는 경우 나머지 데이터는 DRAM과 NAND에 저장될 수 있다. 나머지 데이터들 중 연산이 먼저 수행될 레이어 A에 관련된 데이터는 DRAM에 저장되고, 연산이 나중에 수행될 레이어 B에 관련된 데이터는 NAND에 저장될 수 있다. 프로세싱 장치는 사용자 요청에 따른 추론 프로세싱을 수행함에 있어서, 레이어 A를 처리하는 동안에 레이어 B와 관련된 데이터를 read latency를 고려하여 미리 요청할 수 있다. 이후 레이어 B와 관련된 데이터가 도착되면, 레이어 B의 처리가 수행될 수 있다.
도 5는 본 발명의 일 실시예에 따른 추론 프로세싱을 수행하는 장치의 일 예(e.g, 데이터 센터)를 나타낸다.
앞서 설명된 바와 같이, 네트워크 서버/데이터 센터에는 다양한 추론 요청들(e.g., 비전, 자연어 처리(natural language understanding), NLU) etc.)이 동시에 공존할 수 있다. 또한, 데이터 센터에 수신되는 요청들의 볼륨은 시간-변동하는 특성이 있다. 앞서 설명된 바와 같은 메모리 구조(e.g., NAND에 복수 모델 저장)가 데이터 센터에 적용한다면, 데이터 센터의 NPU는 SSD(Solid State Drive)나 NIC(network interface card)에 엑세스 없이도 즉시 추론 요청에 따른 연산을 시작할 수 있다.
또한 이를 통해서 댜앙한 조합의 추론 요청들이 공존하는 환경에서 NPU의 활용성을 극대화 할 수 있다.disaggregated 가속기 유닛들(AUs)을 통해 대역폭 오버헤드를 최소화하는 스케일러블(scalable)한 추론 방법이 제공될 수 있다.
도 5에서 AU1 내지 AU4는 Disaggregated 된 상태로 각각 서로 독립적인 추론 프로세싱을 수행하거나, 또는 일부 AU들간에 Aggregated 된 상태로 함께 추론 프로세싱을 수행할 수 있다. 예컨대, AU1 및 AU2는 NIC로부터 수신된 사용자의 요청에 따라서 Model A 기반의 추론 프로세싱을 각각 또는 Aggregated 된 상태로 수행할 수 있다. AU3 및 AU4는 NIC로부터 수신된 다른 사용자의 요청에 따라서 Model B 기반의 추론 프로세싱을 각각 또는 Aggregated 된 상태로 수행할 수 있다. 각 AU는 자신이 필요로 하는 모델에 대한 가중치 등의 데이터를 SSD나 NIC에 엑세스할 필요 없이. 해당 NAND로부터 Read 할 수 있다.
도 6은 본 발명의 실시예에 따른 추론 프로세싱을 수행하는 장치의 메모리 구조들을 예시한다. 도 3 등 앞서 살펴본 예시들에서는 추론 프로세싱을 수행하는 장치가 제1 타입 메모리, 제2 타입 메모리 및 제3 타입 메모리를 포함한다고 가정하였으며, 제1 타입 메모리는 SRAM, 제2 타입 메모리는 DRAM, 제3 타입 메모리는 NAND 라고 가정하였으나(e.g., 도 6(a)), 본 발명은 이에 한정되지 않으며, 메모리 타입과 개수는 다양하게 변경될 수 있다. 예컨대, 도 6(c)와 같이 PRAM(Phase-change RAM) 및/또는 MRAM(Magnetoresistance RAM)이 사용될 수도 있다. 도 (d)와 같이 SRAM/HBM/DRAM/NAND의 메모리 계층 구조도 사용될 수 있다. 도 6(e)를 도(a)와 비교하면, 도 6(e)에서는 NPU Chip에 SRAM Chip이 추가적으로 Stacked 된 형태로써, Remote SRAM으로 사용될 수 있다. 다시 말해, 도 6(e)는 Local SRAM/Remote SRAM/DRAM/NAND 메모리 계층 구조로 이해될 수 있다.
추론을 위해 사용되는 DNN 모델도 다양하게 변경될 수 있다(e.g., VGG-19, ResNet-152, LeNET..etc.).
추론 프로세싱을 위해서 Read/Write 되는 데이터는 해당 모델의 가중치(또는 모델 파라미터)를 포함할 수 있으나, 본 발명은 이에 한정되지 않는다. 학습/훈련 과정에서는 모델의 가중치가 지속적으로 업데이트되므로 여러 번의 Write을 수반하지만, 추론 과정에서는 모델의 가중치가 한번 Write 이후에는 Read only 로 사용된다. 추론 프로세싱에서의 데이터는 추가적으로 Input Activation (또는 초기 입력 값), Intermediate Activation (또는 중간 입/출력 값) 및 Output Activation(또는 최종 출력 값)을 더 포함할 수도 있다.
일 예로, 도 7의 LeNet 모델의 프로세싱 예시를 참조하여, 5x5 컨볼루션 레이어와 2x2 Max Pooling 레이어의 연산을 수행하는 과정을 살펴보면 Input Activation이 입력되면 5x5 컨볼루션 레이어에서는 가중치(파라미터)를 이용하여 컨볼루션 연산을 수행하고, 제1 Intermediate Activation 을 출력한다. 2x2 Max Pooling 레이어는 제1 Intermediate Activation 를 입력받아 제2 Intermediate Activation를 출력한다.
도 8 내지 도 10은 각기 상이한 메모리 구조들을 가지는 프로세싱 장치들이 도 7과 동일한 프로세싱을 수행할 때 각 장치의 프로세싱 성능을 비교 설명하기 위한 도면들이다.
도 8 및 도 9에서 프로세싱 장치는 SRAM + DRAM 메모리 구조를 가지고, 도 10에서의 프로세싱 장치는 SRAM + DRAM + NAND 메모리 구조를 가진다. 도 8에서는 모델의 파라미터들(가중치들)이 모두 SRAM에 저장될 수 있다고 가정한다. 도 9에서는 모델의 파라미터들(가중치들) 중 일부만 SRAM에 저장되고, 나머지 일부는 DRAM에 저장된다고 가정한다. 도 9 (a)는 데이터 Prefetch가 적용되지 않는 경우를 나타내고, 도 9(b)는 데이터 Prefetch가 적용되는 경우를 나타낸다. 도 10에서는 모델의 파라미터들 중 일부는 SRAM에 저장되고, 다른 DRAM에 저장되고, 또 다른 일부는 NAND에 저장된다.
먼저, 도 8을 참조하면, 모델 파라미터들이 모두 SRAM에 저장될 수 있는 경우(e.g., SRAM이 충분히 큰 경우), 프로세싱 장치는 다음과 같이 동작할 수 있다:
(801) Input activation을 DRAM에서 SRAM으로 전송
(802) Input activation과 Conv1 파라미터를 사용하여 Conv1 수행
(803) Conv1수행 결과 activation에 대해 MaxPool1 수행
(804) MaxPool1 수행 결과 activation과 Conv2 파라미터를 사용하여 Conv2 수행
(805) Conv2 수행 결과 activation에 대해 MaxPool2 수행
(806) MaxPool2 수행 결과 activation에 대해 FC1 파라미터를 사용하여 FC1 수행
(807) FC1 수행 결과 activation에 대해 FC2 파라미터를 사용하여 FC2 수행
(808) FC2 수행 결과를 SRAM에서 DRAM으로 전송
한편, 구현에 따라서는 (1), (8)에서 데이터 전송은 DRAM을 거치지 않고 PCIe와 같은 별도 I/O를 통해 직접 SRAM(NPU)에/으로부터 입/출력될 수도 있다.
다음으로 도 9(a)를 참조하면, 모든 모델 파라미터가 SRAM에 저장될 수 없는 경우 (e.g., 일부 모델 파라미터가 SRAM에 있거나 혹은 모든 모델 파라미터가 DRAM에 있을 수 있다), 프로세싱 장치는 다음과 같이 동작할 수 있다:
(a901) Input activation을 DRAM에서 SRAM으로 전송
(a902) Input activation과 Conv1 파라미터를 사용하여 Conv1 수행
(a903) Conv1수행 결과 activation에 대해 MaxPool1 수행
(a904) Conv2 파라미터를 DRAM에서 SRAM으로 전송
(a905) MaxPool1 수행 결과 activation과 Conv2 파라미터를 사용하여 Conv2 수행
(a906) Conv2 수행 결과 activation에 대해 MaxPool2 수행
(a907) FC1의 파라미터를 DRAM에서 SRAM으로 전송
(a908) MaxPool2 수행 결과 activation에 대해 FC1 파라미터를 사용하여 FC1 수행
(a909) FC2의 파라미터를 DRAM에서 SRAM으로 전송
(a9010) FC1 수행 결과 activation에 대해 FC2 파라미터를 사용하여 FC2 수행
(a9011) FC2 수행 결과 activation을 SRAM에서 DRAM으로 전송
도 9(b)와 같이 Prefetch가 적용되면, 프로세싱 장치는 다음과 같이 동작할 수 있다:
(b901) Input activation을 DRAM에서 SRAM으로 전송
(b902) Input activation과 Conv1 파라미터를 사용하여 Conv1 수행
(b903-1) Conv1수행 결과 activation에 대해 MaxPool1 수행
(b903-2) Conv2 파라미터를 DRAM에서 SRAM으로 Prefetch
(b904) MaxPool1 수행 결과 activation과 Conv2 파라미터를 사용하여 Conv2 수행
(b905-1) Conv2 수행 결과 activation에 대해 MaxPool2 수행
(b905-2) FC1의 파라미터를 DRAM에서 SRAM으로 Prefetch
(b906-1) MaxPool2 수행 결과 activation에 대해 FC1 파라미터를 사용하여 FC1 수행
(b906-2) FC2의 파라미터를 DRAM에서 SRAM으로 Prefetch
(b907) FC1 수행 결과 activation에 대해 FC2 파라미터를 사용하여 FC2 수행
(b908) FC2 수행 결과 activation을 SRAM에서 DRAM으로 전송
다음으로 도 10을 참조하면, Input Activation/Intermediate Activation/Output Activation은 DRAM에 저장될 수 있다.
모델 파라미터들은 다음과 같은 규칙에 따라 저장될 수 있다.
먼저, 모델이 컴파일되어 operator_0, operator_1, operator_2, …, operator_N 의 순서로 실행된다고 가정한다(e.g., 도 11).
모델 파라미터를 3개 구간들로 분류할 수 있다. 이를 시간 순서대로 제1 구간, 제2 구간 및 제3 구간이라고 가정한다.
(i) 제1 구간의 모델 파라미터는 SRAM에 저장된다.
- Operator_i이 다음 조건을 만족하는 경우 Operator_i 이전의 Operator들이 제1 구간으로 정의될 수 있다.
operator_0 내지 Operator_(i-1)의 실행시간 < Operator_i의 파라미터의 DRAM-to-SRAM 전송시간
(ii) 제3 구간의 모델 파라미터는 NAND에 저장된다.
Operator_i이 다음 조건을 만족하는 경우 Operator_i 이후의 operator들이 제3 구간으로 정의될 수 있다.
operator_0 내지 Operator_(i-1)의 실행시간 > Operator_i의 파라미터의 NAND-to-SRAM 전송시간
(iii) 제2 구간의 모델 파라미터는 DRAM에 저장된다.
제1 구간과 제3 구간 사이에 위치한 operator들이 제2 구간에 해당할 수 있다.
한편, 구현에 따라서 위 (i)~(iii) 규칙 예외가 더 정의될 수도 있다. 일 예로, 제3 구간에 해당하지만 제3 구간에서 수용 가능한 Prefetch 대역폭(bandwidth)를 만족하지 못하는 파라미터가 존재하는 경우, 해당 파라미터는 DRAM에 저장하여 DRAM + NAND의 대역폭을 활용할 수 있다. 예컨대, 제3 구간에서 NAND로부터 Prefetch 가능한 최대 대역폭이 초과되었으나, DRAM + NAND의 대역폭이 초과되지 않았다면 해당 파라미터는 NAND가 아니라 DRAM에 저장될 수 있다. 또는, SRAM에 여분의 공간이 있는 경우, SRAM + DRAM +NAND 방식이 사용될 수 있다. 예컨대, 제3 구간의 파라미터의 적어도 일부가 SRAM에 저장될 수도 있다.
도 10에서, 프로세싱 장치는 다음과 같이 동작할 수 있다:
(101-1) Input activation을 DRAM에서 SRAM으로 전송
(101-2) FC1의 파라미터를 NAND에 요청(Prefetch)
(102-1) Input activation과 Conv1 파라미터를 사용하여 Conv1 수행
(102-2) FC2의 파라미터를 NAND에 요청(Prefetch)
(103-1) Conv1수행 결과 activation에 대해 MaxPool1 수행
(103-2) Conv2 파라미터를 DRAM에서 SRAM으로 Prefetch
(104) MaxPool1 수행 결과 activation과 Conv2 파라미터를 사용하여 Conv2 수행
(105) Conv2 수행 결과 activation에 대해 MaxPool2 수행
(106) MaxPool2 수행 결과 activation에 대해 FC1 파라미터를 사용하여 FC1 수행
(107) FC1 수행 결과 activation에 대해 FC2 파라미터를 사용하여 FC2 수행
(108) FC2 수행 결과 activation을 SRAM에서 DRAM으로 전송
도 8, 도 9 및 도 10을 살펴보면, 도 10은 NAND가 사용되었음에도 불구하고 SRAM이 충분이 커서 모든 파라미터들이 SRAM에 저장된 케이스인 도 8과 동일한 프로세싱 시간을 가지는 것을 알 수 있다. 추가적으로 비용 효율성 측면을 더 고려한다면, 도 8 내지 도 10의 구조들 중 도 10의 구조가 가장 유리하다는 것을 알 수 있다.
도 12는 본 발명의 일 실시예에 따른 프로세싱 방법의 흐름을 도시한다. 도 12는 상술된 실시예들에 대한 일 구현 예이며, 본 발명은 도 12의 예시에 한정되지 않는다.
도 12를 참조하면, ANN 프로세싱을 위한 장치(이하, '장치')는 상이한 타입의 복수의 메모리들의 조합에 해당하는 메모리-서브시스템으로부터 ANN 모델에 포함된 다수의 레이어들 중 레이어 A의 가중치들을 획득한다(1205). 레이어 A의 가중치들은 메모리-서브시스템의 제1 타입 메모리로부터 획득될 수 있다.
장치는 획득된 레이어 A의 가중치들에 기초하여 레이어 A에 대한 연산(operation)을 수행한다(1210).
장치는 레이어 A에 대한 연산이 수행하는 동안에 메모리-서브시스템으로부터 ANN 모델의 레이어 B의 가중치들을 획득한다(1215). 레이어 A 이후에 연산되는 레이어 B의 가중치들은 메모리-서브시스템의 제2 타입 메모리로부터 획득될 수 있다.
장치는 레이어 A에 대한 연산(1210)과 레이어 B에 대한 연산(1220)이 수행되는 동안에 메모리-서브시스템으로부터 ANN 모델의 레이어 C의 가중치들을 획득한다(1225). 레이어 B 이후에 연산되는 레이어 C의 가중치들은 메모리-서브시스템의 제3 타입 메모리로부터 획득될 수 있다.
한편, 장치는, ANN 모델과 관련한 데이터의 R/W(read/write)를 위한 메모리들; 및 데이터에 기초하여 ANN 모델에 포함된 다수의 레이어들에 대한 연산(operation)들을 수행하는 적어도 하나의 연산 유닛을 포함할 수 있다. 메모리들은 상이한 타입의 복수의 메모리들의 조합에 해당하는 적어도 하나의 메모리-서브시스템을 포함할 수 있다. 각 연산 유닛은 적어도 하나의 메모리-서브시스템들 중에서 자신과 연계된 메모리-서브시스템을 통해서 데이터의 R/W를 수행하도록 구성될 수 있다.
ANN 모델의 레이어 A의 가중치들에 대한 R/W는 연계된 메모리-서브시스템의 제1 타입 메모리를 통해서 수행될 수 있다. 레이어 A 이후에 연산되는 ANN 모델의 레이어 B의 가중치들에 대한 R/W는 연계된 메모리-서브시스템의 제2 타입 메모리를 통해서 수행될 수 있다. 레이어 B 이후에 연산되는 ANN 모델의 레이어 C의 가중치들에 대한 R/W는 연계된 메모리-서브시스템의 제3 타입 메모리를 통해서 수행될 수 있다.
제 2 타입 메모리의 읽기 레이턴시는, 제1 타입 메모리의 읽기 레이턴시보다 길고, 제3 타입 메모리의 읽기 레이턴시보다는 짧을 수 있다.
레이어 A에 대한 프로세싱 시간은 제2 타입 메모리의 읽기 레이턴시 이상일 수 있다. 레이어 A에 대한 프로세싱 시간과 레이어 B에 대한 프로세싱 시간의 합은, 제3 타입 메모리의 읽기 레이턴시 이상일 수 있다.
레이어 A의 프로세싱 시간 동안 레이어 B의 가중치들이 제2 타입 메모리로부터 미리 패치(pre-fetch)될 수 있다. 레이어 A 및 레이어 B의 프로세싱 시간 동안 레이어 C의 가중치들이 제3 타입 메모리로부터 미리 패치(pre-fetch)될 수 있다.
각 메모리-서브시스템은 SRAM, DRAM 및 NAND 플래시 메모리의 조합일 수 있다.
SRAM은 온-칩 형태로 각 연산 유닛에 결합(coupled)될 수 있다.
각 메모리-서브시스템 내에서 상이한 타입의 복수의 메모리들은 계층적 (hierarchical) 메모리 구조를 가질 수 있다.
계층적 메모리 구조에서 최하위 레벨에 위치한 메모리는, 딥러닝(deep learning)을 통해 사전에 훈련된(trained) 적어도 둘 이상의 DNN (deep neural network) 모델들에 대한 가중치들을 저장할 수 있다.
ANN 모델에 대한 컴파일링(compiling) 결과에 기초하여 해당 레이어를 위해 사용될 메모리의 타입이 결정될 수 있다.
장치는 사전에 훈련된(trained) DNN (deep neural network) 모델에 기반하여 추론 (inference)을 수행하는 가속기(Accelerator)일 수 있다.
장치는 NIC (network interface card)를 통해 다수의 사용자들의 추론 요청들에 응답하는 IP (internet protocol) 네트워크 상의 데이터 센터일 수 있다.
상술한 본 발명의 실시예들은 다양한 수단을 통해 구현될 수 있다. 예를 들어, 본 발명의 실시예들은 하드웨어, 펌웨어(firmware), 소프트웨어 또는 그것들의 결합 등에 의해 구현될 수 있다.
하드웨어에 의한 구현의 경우, 본 발명의 실시예들에 따른 방법은 하나 또는 그 이상의 ASICs(Application Specific Integrated Circuits), DSPs(Digital Signal Processors), DSPDs(Digital Signal Processing Devices), PLDs(Programmable Logic Devices), FPGAs(Field Programmable Gate Arrays), 프로세서, 컨트롤러, 마이크로 컨트롤러, 마이크로 프로세서 등에 의해 구현될 수 있다.
펌웨어나 소프트웨어에 의한 구현의 경우, 본 발명의 실시예들에 따른 방법은 이상에서 설명된 기능 또는 동작들을 수행하는 모듈, 절차 또는 함수 등의 형태로 구현될 수 있다. 소프트웨어 코드는 메모리 유닛에 저장되어 프로세서에 의해 구동될 수 있다. 상기 메모리 유닛은 상기 프로세서 내부 또는 외부에 위치하여, 이미 공지된 다양한 수단에 의해 상기 프로세서와 데이터를 주고 받을 수 있다.
상술한 바와 같이 개시된 본 발명의 바람직한 실시예들에 대한 상세한 설명은 당업자가 본 발명을 구현하고 실시할 수 있도록 제공되었다. 상기에서는 본 발명의 바람직한 실시예들을 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 본 발명의 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다. 예를 들어, 당업자는 상술한 실시예들에 기재된 각 구성을 서로 조합하는 방식으로 이용할 수 있다. 따라서, 본 발명은 여기에 나타난 실시형태들에 제한되려는 것이 아니라, 여기서 개시된 원리들 및 신규한 특징들과 일치하는 최광의 범위를 부여하려는 것이다.
본 발명은 본 발명의 정신 및 필수적 특징을 벗어나지 않는 범위에서 다른 특정한 형태로 구체화될 수 있다. 따라서, 상기의 상세한 설명은 모든 면에서 제한적으로 해석되어서는 아니 되고 예시적인 것으로 고려되어야 한다. 본 발명의 범위는 첨부된 청구항의 합리적 해석에 의해 결정되어야 하고, 본 발명의 등가적 범위 내에서의 모든 변경은 본 발명의 범위에 포함된다. 또한, 특허청구범위에서 명시적인 인용 관계가 있지 않은 청구항들을 결합하여 실시예를 구성하거나 출원 후의 보정에 의해 새로운 청구항으로 포함할 수 있다.

Claims (14)

  1. ANN(artificial neural network) 프로세싱을 위한 장치에 있어서,
    ANN 모델과 관련한 데이터의 R/W(read/write)를 위한 메모리들; 및
    상기 데이터에 기초하여 상기 ANN 모델에 포함된 다수의 레이어들에 대한 연산(operation)들을 수행하는 적어도 하나의 연산 유닛을 포함하고,
    상기 메모리들은 상이한 타입의 복수의 메모리들의 조합에 해당하는 적어도 하나의 메모리-서브시스템을 포함하고,
    각 연산 유닛은 상기 적어도 하나의 메모리-서브시스템들 중에서 자신과 연계된 메모리-서브시스템을 통해서 상기 데이터의 R/W를 수행하도록 구성되는, 장치.
  2. 제 1 항에 있어서,
    상기 ANN 모델의 제1 레이어의 가중치들에 대한 R/W는 상기 연계된 메모리-서브시스템의 제1 타입 메모리를 통해서 수행되고,
    상기 제1 레이어 이후에 연산되는 상기 ANN 모델의 제2 레이어의 가중치들에 대한 R/W는 상기 연계된 메모리-서브시스템의 제2 타입 메모리를 통해서 수행되며,
    상기 제2 레이어 이후에 연산되는 상기 ANN 모델의 제3 레이어의 가중치들에 대한 R/W는 상기 연계된 메모리-서브시스템의 제3 타입 메모리를 통해서 수행되는, 장치.
  3. 제 2 항에 있어서, 상기 제 2 타입 메모리의 읽기 레이턴시는,
    상기 제1 타입 메모리의 읽기 레이턴시보다 길고, 상기 제3 타입 메모리의 읽기 레이턴시보다는 짧은, 장치.
  4. 제 2 항에 있어서,
    상기 제1 레이어에 대한 프로세싱 시간은 상기 제2 타입 메모리의 읽기 레이턴시 이상이고,
    상기 제1 레이어에 대한 프로세싱 시간과 상기 제2 레이어에 대한 프로세싱 시간의 합은, 상기 제3 타입 메모리의 읽기 레이턴시 이상인, 장치.
  5. 제 2 항에 있어서,
    상기 제1 레이어의 프로세싱 시간 동안 상기 제2 레이어의 가중치들이 상기 제2 타입 메모리로부터 미리 패치(pre-fetch)되고,
    상기 제1 레이어 및 제2 레이어의 프로세싱 시간 동안 상기 제3 레이어의 가중치들이 상기 제3 타입 메모리로부터 미리 패치(pre-fetch)되는, 장치.
  6. 제 1 항에 있어서,
    각 메모리-서브시스템은 SRAM, DRAM 및 NAND 플래시 메모리의 조합인, 장치.
  7. 제 6 항에 있어서,
    상기 SRAM은 온-칩 형태로 각 연산 유닛에 결합(coupled)된 것인, 장치.
  8. 제 1 항에 있어서,
    각 메모리-서브시스템 내에서 상기 상이한 타입의 복수의 메모리들은 계층적 (hierarchical) 메모리 구조를 가지는, 장치.
  9. 제 8 항에 있어서,
    상기 계층적 메모리 구조에서 최하위 레벨에 위치한 메모리는, 딥러닝(deep learning)을 통해 사전에 훈련된(trained) 적어도 둘 이상의 DNN (deep neural network) 모델들에 대한 가중치들을 저장하는, 장치.
  10. 제 1 항에 있어서,
    상기 ANN 모델에 대한 컴파일링(compiling) 결과에 기초하여 해당 레이어를 위해 사용될 메모리의 타입이 결정되는, 장치.
  11. 제 1 항에 있어서,
    상기 장치는 사전에 훈련된(trained) DNN (deep neural network) 모델에 기반하여 추론 (inference)을 수행하는 가속기(Accelerator)인, 장치.
  12. 제 1 항에 있어서,
    상기 장치는 NIC (network interface card)를 통해 다수의 사용자들의 추론 요청들에 응답하는 IP (internet protocol) 네트워크 상의 데이터 센터인, 장치.
  13. ANN(artificial neural network) 프로세싱 방법에 있어서,
    상이한 타입의 복수의 메모리들의 조합에 해당하는 메모리-서브시스템으로부터 ANN 모델에 포함된 다수의 레이어들 중 제1 레이어의 가중치들을 획득; 및
    상기 획득된 제1 레이어의 가중치들에 기초하여 상기 제1 레이어에 대한 연산(operation)을 수행;
    상기 제1 레이어에 대한 연산이 수행하는 동안에 상기 메모리-서브시스템으로부터 상기 ANN 모델의 제2 레이어의 가중치들을 획득; 및
    상기 제1 레이어에 대한 연산과 상기 제2 레이어에 대한 연산이 수행되는 동안에 상기 메모리-서브시스템으로부터 상기 ANN 모델의 제3 레이어의 가중치들을 획득하는 것을 포함하고,
    상기 제1 레이어의 가중치들은 상기 메모리-서브시스템의 제1 타입 메모리로부터 획득되고, 상기 제1 레이어 이후에 연산되는 상기 제2 레이어의 가중치들은 상기 메모리-서브시스템의 제2 타입 메모리로부터 획득되며, 상기 제2 레이어 이후에 연산되는 상기 제3 레이어의 가중치들은 상기 메모리-서브시스템의 제3 타입 메모리로부터 획득되는, 방법.
  14. 제 13 항에 기재된 방법을 수행하기 위한 명령어들을 기록한 프로세서로 읽을 수 있는 기록매체.
KR1020227042156A 2020-06-05 2021-06-04 뉴럴 네트워크 프로세싱 방법 및 이를 위한 장치 KR20230005348A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
KR20200068571 2020-06-05
KR1020200068571 2020-06-05
PCT/KR2021/007002 WO2021246818A1 (ko) 2020-06-05 2021-06-04 뉴럴 네트워크 프로세싱 방법 및 이를 위한 장치

Publications (1)

Publication Number Publication Date
KR20230005348A true KR20230005348A (ko) 2023-01-09

Family

ID=78830421

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227042156A KR20230005348A (ko) 2020-06-05 2021-06-04 뉴럴 네트워크 프로세싱 방법 및 이를 위한 장치

Country Status (3)

Country Link
US (1) US20230229899A1 (ko)
KR (1) KR20230005348A (ko)
WO (1) WO2021246818A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102609481B1 (ko) * 2023-04-12 2023-12-04 주식회사 하이퍼엑셀 레이턴시 프로세싱 유닛

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10049322B2 (en) * 2015-05-21 2018-08-14 Google Llc Prefetching weights for use in a neural network processor
US10140574B2 (en) * 2016-12-31 2018-11-27 Via Alliance Semiconductor Co., Ltd Neural network unit with segmentable array width rotator and re-shapeable weight memory to match segment width to provide common weights to multiple rotator segments
US11475274B2 (en) * 2017-04-21 2022-10-18 International Business Machines Corporation Parameter criticality-aware resilience
CN108875920A (zh) * 2018-02-12 2018-11-23 北京旷视科技有限公司 神经网络的运行方法、装置、系统及存储介质
KR102607864B1 (ko) * 2018-07-06 2023-11-29 삼성전자주식회사 뉴로모픽 시스템 및 그것의 동작 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102609481B1 (ko) * 2023-04-12 2023-12-04 주식회사 하이퍼엑셀 레이턴시 프로세싱 유닛

Also Published As

Publication number Publication date
WO2021246818A1 (ko) 2021-12-09
US20230229899A1 (en) 2023-07-20

Similar Documents

Publication Publication Date Title
US10698730B2 (en) Neural network processor
US20200249998A1 (en) Scheduling computation graph heterogeneous computer system
CN110389909A (zh) 使用深度神经网络优化固态驱动器的性能的系统和方法
US20150324685A1 (en) Adaptive configuration of a neural network device
JP2020515991A (ja) 分離された制御およびデータファブリックを組み込むニューラルネットワークプロセッサ
JP7451614B2 (ja) オンチップの計算ネットワーク
KR102572757B1 (ko) 집약성을 개선하기 위한 머신 학습 모델들의 수정
KR102191408B1 (ko) 뉴럴 네트워크 프로세서
JP5826471B2 (ja) 自律的サブシステムアーキテクチャー
US11694075B2 (en) Partitioning control dependency edge in computation graph
KR20160081815A (ko) 데이터 관리 메커니즘을 구비하는 전자 시스템 및 그것의 동작 방법
WO2020046643A1 (en) Method and system for performing parallel computation
KR20230005348A (ko) 뉴럴 네트워크 프로세싱 방법 및 이를 위한 장치
WO2021244045A1 (zh) 一种神经网络的数据处理方法及装置
US20190272460A1 (en) Configurable neural network processor for machine learning workloads
US20230237320A1 (en) Neural network processing method and device therefor
CN106462506A (zh) 呼入数据的受控缓存注入
CN115203076B (zh) 数据结构优化的专用存储器缓存
US11995472B2 (en) Memory sharing for machine learning processing
WO2021212045A1 (en) Synchronization of processing elements and software managed memory hierarchy in a machine learning accelerator
US11714556B2 (en) Systems and methods for accelerating memory transfers and computation efficiency using a computation-informed partitioning of an on-chip data buffer and implementing computation-aware data transfer operations to the on-chip data buffer
EP4372563A1 (en) Systems, methods, and apparatus for operating computational devices
US20230153583A1 (en) Compilation of neural networks into subgraphs for processing by multiple compute circuits
KR20240072930A (ko) 연산 장치들의 동작을 위한 시스템들, 방법들 및 장치들
US20210209462A1 (en) Method and system for processing a neural network