KR20220096466A - 뉴럴 네트워크 연산을 위한 메모리 관리 방법 및 장치 - Google Patents

뉴럴 네트워크 연산을 위한 메모리 관리 방법 및 장치 Download PDF

Info

Publication number
KR20220096466A
KR20220096466A KR1020200188928A KR20200188928A KR20220096466A KR 20220096466 A KR20220096466 A KR 20220096466A KR 1020200188928 A KR1020200188928 A KR 1020200188928A KR 20200188928 A KR20200188928 A KR 20200188928A KR 20220096466 A KR20220096466 A KR 20220096466A
Authority
KR
South Korea
Prior art keywords
memory
neural network
layers
gradient
processor
Prior art date
Application number
KR1020200188928A
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 삼성전자주식회사
Priority to KR1020200188928A priority Critical patent/KR20220096466A/ko
Priority to US17/243,991 priority patent/US20220206698A1/en
Publication of KR20220096466A publication Critical patent/KR20220096466A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/10Interfaces, programming languages or software development kits, e.g. for simulating neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • 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/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks

Landscapes

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

Abstract

메모리 관리 방법 및 장치가 개시된다. 일 실시예에 따른 메모리 관리 방법은, 뉴럴 네트워크에 관련된 파라미터 및 뉴럴 네트워크를 이용한 연산 동작을 수행하는 디바이스에 관한 정보를 수신하는 단계와, 상기 파라미터에 기초한 상기 뉴럴 네트워크에 대한 순전파(forward propagation) 연산 동작 동안, 상기 뉴럴 네트워크에 포함된 레이어 중에서 하나 이상의 레이어의 연산 동작 결과를 상기 디바이스의 제1 메모리에 저장하는 단계와, 상기 파라미터 및 상기 연산 동작 결과에 기초한 상기 뉴럴 네트워크에 대한 역전파(backward propagation) 연산 동작 동안, 상기 뉴럴 네트워크에 포함된 레이어의 변화도를 상기 디바이스의 제2 메모리에 저장하는 단계와, 상기 정보, 상기 연산 동작 결과 및 상기 변화도에 기초하여 상기 제1 메모리 및 상기 제2 메모리를 관리하는 단계를 포함한다.

Description

뉴럴 네트워크 연산을 위한 메모리 관리 방법 및 장치{MEMORY MANAGEMENT METHOD AND APPARATUS FOR NEURAL NETWORK OPERATION}
아래 실시예들은 뉴럴 네트워크 연산을 위한 메모리 관리 방법 및 장치에 관한 것이다.
뉴럴 네트워크 모델의 학습(training)은 순전파(forward propagation), 손실(Loss) 계산, 역전파(backward propagation) 과정으로 이루어져 있다. 뉴럴 네트워크의 학습 과정에서 순전파 과정을 통해 예측한 결과가 실제 정답과 비교되어 손실이 계산되고, 역전파 과정을 통해 뉴럴 네트워크 모델의 출력이 정답에 가까워지기 위해 변화해야 하는 정도가 계산된다.
학습이 진행되면서 뉴럴 네트워크 연산을 수행하는 디바이스의 메모리에는 여러가지 데이터들이 저장된다. 예를 들어, 메모리에 저장되는 데이터는 레이어에 입력되는 뉴럴 네트워크 모델의 입력 데이터(input data), 뉴럴 네트워크 모델의 레이어가 가지고 있는 가중치(weight parameter), 레이어에서 연산이 수행되어 출력된 결과가 저장되는 중간 데이터(intermediate data), 역전파 연산 과정에서 계산되는 변화도(gradient)를 포함한다.
일 실시예에 따른 메모리 관리 방법은, 뉴럴 네트워크에 관련된 파라미터 및 뉴럴 네트워크를 이용한 연산 동작을 수행하는 디바이스에 관한 정보를 수신하는 단계와, 상기 파라미터에 기초한 상기 뉴럴 네트워크에 대한 순전파(forward propagation) 연산 동작 동안, 상기 뉴럴 네트워크에 포함된 레이어 중에서 하나 이상의 레이어의 연산 동작 결과를 상기 디바이스의 제1 메모리에 저장하는 단계와, 상기 파라미터 및 상기 연산 동작 결과에 기초한 상기 뉴럴 네트워크에 대한 역전파(backward propagation) 연산 동작 동안, 상기 뉴럴 네트워크에 포함된 레이어의 변화도를 상기 디바이스의 제2 메모리에 저장하는 단계와, 상기 정보, 상기 연산 동작 결과 및 상기 변화도에 기초하여 상기 제1 메모리 및 상기 제2 메모리를 관리하는 단계를 포함한다.
상기 제1 메모리는 로컬 메모리를 포함하고, 상기 제2 메모리는 글로벌 메모리를 포함할 수 있다.
상기 정보는, 상기 디바이스의 코어의 수 및 상기 제1 메모리의 크기를 포함할 수 있다.
상기 제1 메모리에 저장하는 단계는, 상기 하나 이상의 레이어에 체크 포인트를 설정하는 단계와, 상기 체크 포인트가 설정된 하나 이상의 레이어의 연산 동작 결과를 상기 제1 메모리에 저장하는 단계를 포함할 수 있다.
상기 체크 포인트를 설정하는 단계는, 상기 뉴럴 네트워크에 포함된 레이어 중에서 상기 뉴럴 네트워크에 포함된 전체 레이어의 수의 제곱근에 대응하는 개수의 레이어들에 상기 체크 포인트를 설정하는 단계를 포함할 수 있다.
상기 제2 메모리에 저장하는 단계는, 상기 파라미터 및 상기 연산 동작 결과에 기초하여 상기 뉴럴 네트워크에 포함된 레이어의 변화도를 계산하는 단계와, 상기 변화도의 계산과 동시에 상기 변화도를 상기 제2 메모리에 저장하는 단계를 포함할 수 있다.
상기 관리하는 단계는, 상기 파라미터, 상기 연산 동작 결과 및 상기 제1 메모리의 크기에 기초하여 상기 뉴럴 네트워크에 포함된 레이어에서 처리 가능한 배치의 수(number of batch)를 계산하는 단계와, 상기 배치의 수에 기초하여 상기 뉴럴 네트워크의 병렬 연산을 위한 최대 배치수(maximum number of batch)를 획득하는 단계를 포함할 수 있다.
상기 관리하는 단계는, 상기 최대 배치수에 기초하여 상기 뉴럴 네트워크의 병렬 연산을 수행하기 위한 코드를 생성하는 단계를 더 포함할 수 있다.
상기 코드를 생성하는 단계는, 상기 하나 이상의 레이어에 설정된 체크 포인트, 상기 변화도 및 상기 최대 배치수 각각이 반영된 중간 표현(intermediate representation)에 기초하여 상기 코드를 생성하는 단계를 포함할 수 있다.
상기 메모리 관리 방법은, 상기 변화도를 계산한 이후, 상기 하나 이상의 레이어의 연산 결과를 상기 제1 메모리로부터 삭제하는 단계를 더 포함할 수 있다.
일 실시예에 따른 메모리 관리 장치는, 뉴럴 네트워크에 관련된 파라미터 및 상기 뉴럴 네트워크를 이용한 연산 동작을 수행하는 디바이스에 관한 정보를 수신하는 수신기와, 상기 파라미터에 기초한 상기 뉴럴 네트워크에 대한 순전파(forward) 연산 동작 동안, 상기 뉴럴 네트워크에 포함된 레이어 중에서 하나 이상의 레이어의 연산 동작 결과를 상기 디바이스의 제1 메모리에 저장하고, 상기 파라미터 및 상기 연산 동작 결과에 기초한 상기 뉴럴 네트워크에 대한 역전파 연산 동작 동안, 상기 뉴럴 네트워크에 포함된 레이어의 변화도를 상기 디바이스의 제2 메모리에 저장하고, 상기 정보, 상기 연산 동작 결과 및 상기 변화도에 기초하여 상기 제1 메모리 및 상기 제2 메모리를 관리하는 프로세서를 포함할 수 있다.
상기 제1 메모리는 로컬 메모리를 포함하고, 상기 제2 메모리는 글로벌 메모리를 포함할 수 있다.
상기 정보는, 상기 디바이스의 코어의 수 및 상기 제1 메모리의 크기를 포함할 수 있다.
상기 프로세서는, 상기 하나 이상의 레이어에 체크 포인트를 설정하고, 상기 체크 포인트가 설정된 하나 이상의 레이어의 연산 동작 결과를 상기 제1 메모리에 저장할 수 있다.
상기 프로세서는, 상기 뉴럴 네트워크에 포함된 레이어 중에서 상기 뉴럴 네트워크에 포함된 전체 레이어의 수의 제곱근에 대응하는 개수의 레이어에 상기 체크 포인트를 설정할 수 있다.
상기 프로세서는, 상기 파라미터 및 상기 연산 동작 결과에 기초하여 상기 뉴럴 네트워크에 포함된 레이어의 변화도를 계산하고, 상기 변화도의 계산과 동시에 상기 변화도를 상기 제2 메모리에 저장할 수 있다.
상기 프로세서는, 상기 파라미터, 상기 연산 동작 결과 및 상기 제1 메모리의 크기에 기초하여 상기 뉴럴 네트워크에 포함된 레이어에서 처리 가능한 배치의 수(number of batch)를 계산하고, 상기 배치의 수에 기초하여 상기 뉴럴 네트워크의 병렬 연산을 위한 최대 배치수(maximum number of batch)를 획득할 수 있다.
상기 프로세서는, 상기 최대 배치수에 기초하여 상기 뉴럴 네트워크의 병렬 연산을 수행하기 위한 코드를 생성할 수 있다.
상기 프로세서는, 상기 하나 이상의 레이어에 설정된 체크 포인트, 상기 변화도 및 상기 최대 배치수 각각이 반영된 중간 표현(intermediate representation)에 기초하여 상기 코드를 생성할 수 있다.
상기 프로세서는, 상기 변화도를 계산한 이후, 상기 하나 이상의 레이어의 연산 결과를 상기 제1 메모리로부터 삭제할 수 있다.
도 1은 일 실시예에 따른 메모리 관리 장치의 개략적인 블록도를 나타낸다.
도 2는 도 1에 도시된 디바이스의 개략적인 블록도를 나타낸다.
도 3은 도 1에 도시된 프로세서의 개략적인 블록도를 나타낸다.
도 4는 메모리 관리 동작을 설명하기 위한 도면이다.
도 5는 코드 생성 동작의 흐름을 나타낸다.
도 6은 도 1에 도시된 메모리 관리 장치의 동작의 흐름도를 나타낸다.
실시예들에 대한 특정한 구조적 또는 기능적 설명들은 단지 예시를 위한 목적으로 개시된 것으로서, 다양한 형태로 변경되어 구현될 수 있다. 따라서, 실제 구현되는 형태는 개시된 특정 실시예로만 한정되는 것이 아니며, 본 명세서의 범위는 실시예들로 설명한 기술적 사상에 포함되는 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 해석되어야 한다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설명된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 실시예들을 첨부된 도면들을 참조하여 상세하게 설명한다. 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조 부호를 부여하고, 이에 대한 중복되는 설명은 생략하기로 한다.
도 1은 일 실시예에 따른 메모리 관리 장치의 개략적인 블록도를 나타내고, 도 2는 도 1에 도시된 디바이스의 개략적인 블록도를 나타낸다.
도 1 및 도 2를 참조하면, 메모리 관리 장치(10)는 디바이스(400) 또는 디바이스(400)에 포함된 메모리를 관리할 수 있다. 메모리 관리 장치(10)는 디바이스(400)로부터 디바이스에 관한 정보를 이용하여 디바이스(400) 또는 디바이스(400)에 포함된 메모리를 관리할 수 있다.
디바이스(400)는 뉴럴 네트워크를 이용한 연산 동작을 수행할 수 있다. 뉴럴 네트워크(또는 인공 신경망)는 기계학습과 인지과학에서 생물학의 신경을 모방한 통계학적 학습 알고리즘을 포함할 수 있다. 뉴럴 네트워크는 시냅스의 결합으로 네트워크를 형성한 인공 뉴런(노드)이 학습을 통해 시냅스의 결합 세기를 변화시켜, 문제 해결 능력을 가지는 모델 전반을 의미할 수 있다.
뉴럴 네트워크의 뉴런은 가중치 또는 바이어스의 조합을 포함할 수 있다. 뉴럴 네트워크는 하나 이상의 뉴런 또는 노드로 구성된 하나 이상의 레이어(layer)를 포함할 수 있다. 뉴럴 네트워크는 뉴런의 가중치를 학습을 통해 변화시킴으로써 임의의 입력으로부터 예측하고자 하는 결과를 추론할 수 있다.
뉴럴 네트워크는 심층 뉴럴 네트워크 (Deep Neural Network)를 포함할 수 있다. 뉴럴 네트워크는 CNN(Convolutional Neural Network), RNN(Recurrent Neural Network), 퍼셉트론(perceptron), 다층 퍼셉트론(multilayer perceptron), FF(Feed Forward), RBF(Radial Basis Network), DFF(Deep Feed Forward), LSTM(Long Short Term Memory), GRU(Gated Recurrent Unit), AE(Auto Encoder), VAE(Variational Auto Encoder), DAE(Denoising Auto Encoder), SAE(Sparse Auto Encoder), MC(Markov Chain), HN(Hopfield Network), BM(Boltzmann Machine), RBM(Restricted Boltzmann Machine), DBN(Depp Belief Network), DCN(Deep Convolutional Network), DN(Deconvolutional Network), DCIGN(Deep Convolutional Inverse Graphics Network), GAN(Generative Adversarial Network), LSM(Liquid State Machine), ELM(Extreme Learning Machine), ESN(Echo State Network), DRN(Deep Residual Network), DNC(Differentiable Neural Computer), NTM(Neural Turning Machine), CN(Capsule Network), KN(Kohonen Network) 및 AN(Attention Network)를 포함할 수 있다.
디바이스(400)는 복수의 코어(410-1, 410-2, ??, 410-n)을 포함할 수 있다. 복수의 코어(410-1, 410-2, ??, 410-n)는 편의상 복수의 코어(410)로 지칭한다. 디바이스(400)는 복수의 코어(410)는 복수의 로컬 메모리(430-1, 430-2, ??, 430-n)을 포함할 수 있다.
다시 말해, 코어(410-1) 로컬 메모리(430-1)를 포함하고, 코어(410-3)는 로컬 메모리(430-3)를 포함하고, 코어(410-n)는 코어(430-n)를 포함할 수 있다. 복수의 로컬 메모리(430-1, 430-2, ??, 430-n)는 편의상 복수의 로컬 메모리(430)로 지칭한다. 디바이스(400)는 글로벌 메모리(450)를 포함할 수 있다.
메모리 관리 장치(10)는 수신기(100), 프로세서(200)를 포함한다. 메모리 관리 장치(10)는 메모리(300)를 더 포함할 수 있다.
수신기(100)는 수신 인터페이스를 포함할 수 있다. 수신기(100)는 뉴럴 네트워크에 관련된 파라미터 및 뉴럴 네트워크를 이용한 연산 동작을 수행하는 디바이스(400)에 관한 정보를 수신할 수 있다. 수신기(100)는 뉴럴 네트워크에 관련된 파라미터 및 디바이스(400)에 관한 정보를 프로세서(200)로 출력할 수 있다.
디바이스(400)에 관한 정보는 디바이스(400)의 코어의 수 및 제1 메모리의 크기를 포함할 수 있다. 제1 메모리는 로컬 메모리(430)를 포함할 수 있다.
프로세서(200)는 메모리(300)에 저장된 데이터를 처리할 수 있다. 프로세서(200)는 메모리(300)에 저장된 컴퓨터로 읽을 수 있는 코드(예를 들어, 소프트웨어) 및 프로세서(200)에 의해 유발된 인스트럭션(instruction)들을 실행할 수 있다.
"프로세서(200)"는 목적하는 동작들(desired operations)을 실행시키기 위한 물리적인 구조를 갖는 회로를 가지는 하드웨어로 구현된 데이터 처리 장치일 수 있다. 예를 들어, 목적하는 동작들은 프로그램에 포함된 코드(code) 또는 인스트럭션들(instructions)을 포함할 수 있다.
예를 들어, 하드웨어로 구현된 데이터 처리 장치는 마이크로프로세서(microprocessor), 중앙 처리 장치(central processing unit), 프로세서 코어(processor core), 멀티-코어 프로세서(multi-core processor), 멀티프로세서(multiprocessor), ASIC(Application-Specific Integrated Circuit), FPGA(Field Programmable Gate Array)를 포함할 수 있다.
프로세서(200)는 뉴럴 네트워크 연산 동작을 수행할 수 있다. 프로세서(200)는 HPC(High Performance Computing) 및 매니-코어(many-core) 구조를 가지는 하드웨어 환경에서 뉴럴 네트워크 연산을 수행할 수 있다.
프로세서(200)는 뉴럴 네트워크를 학습시킬 수 있다. 프로세서(200)는 디바이스(400)를 이용하여 뉴럴 네트워크를 학습시킬 수 있다. 뉴럴 네트워크의 학습은 순전파(forward propagation) 연산, 손실(loss) 계산 및 역전파(backward propagation) 연산을 포함할 수 있다. 프로세서(200)는 순전파 연산을 통해 뉴럴 네트워크가 예측한 결과를 실제 정답과 비교하여 손실을 계산하고 역전파 연산을 통해 뉴럴 네트워크가 예측한 결과가 정답에 가까워지기 위해 변화해야 하는 변화도(garident)를 계산할 수 있다.
프로세서(200)는 파라미터에 기초한 뉴럴 네트워크에 대한 순전파 연산 동작 동안, 뉴럴 네트워크에 포함된 레이어 중에서 하나 이상의 레이어의 연산 동작 결과를 디바이스(400)의 제1 메모리에 저장할 수 있다.
프로세서(200)는 하나 이상의 레이어에 체크 포인트를 설정할 수 있다. 프로세서(200)는 뉴럴 네트워크에 포함된 레이어 중에서 뉴럴 네트워크에 포함된 전체 레이어의 수의 제곱근에 대응하는 개수의 레이어들에 체크 포인트를 설정할 수 있다.
프로세서(200)는 체크 포인트가 설정된 하나 이상의 레이어의 연산 동작 결과를 제1 메모리에 저장할 수 있다.
프로세서(200)는 파라미터 및 연산 동작 결과에 기초한 뉴럴 네트워크에 대한 역전파 연산 동작 동안, 뉴럴 네트워크에 포함된 레이어의 변화도를 디바이스의 제2 메모리에 저장할 수 있다. 제2 메모리는 글로벌 메모리(450)를 포함할 수 있다.
프로세서(200)는 파라미터 및 연산 동작 결과에 기초하여 뉴럴 네트워크에 포함된 레이어의 변화도를 계산할 수 있다. 프로세서(200)는 변화도의 계산과 동시에 변화도를 제2 메모리에 저장할 수 있다.
프로세서(200)는 변화도를 계산한 이후, 하나 이상의 레이어의 연산 결과를 로컬 메모리로부터 삭제할 수 있다.
프로세서(200)는 정보, 연산 동작 결과 및 변화도에 기초하여 제1 메모리 및 제2 메모리를 관리할 수 있다. 프로세서(200)는 파라미터, 연산 동작 결과 및 제1 메모리의 크기에 기초하여 뉴럴 네트워크에 포함된 레이어에서 처리 가능한 배치의 수(number of batch)를 계산할 수 있다.
프로세서(200)는 배치의 수에 기초하여 뉴럴 네트워크의 병렬 연산을 위한 최대 배치수(maximum number of batch)를 획득할 수 있다. 프로세서(200)는 최대 배치수에 기초하여 뉴럴 네트워크의 병렬 연산을 수행하기 위한 코드를 생성할 수 있다.
프로세서(200)는 하나 이상의 레이어에 설정된 체크 포인트, 변화도 및 최대 배치수 각각이 반영된 중간 표현(intermediate representation)에 기초하여 코드를 생성할 수 있다.
메모리(300), 제1 메모리 및 제2 메모리는 뉴럴 네트워크 모델 또는 뉴럴 네트워크 모델의 파라미터를 저장할 수 있다. 메모리(300), 제1 메모리 및 제2 메모리는 프로세서(200)에 의해 실행가능한 인스트럭션들(또는 프로그램)을 저장할 수 있다. 예를 들어, 인스트럭션들은 프로세서의 동작 및/또는 프로세서의 각 구성의 동작을 실행하기 위한 인스트럭션들을 포함할 수 있다.
메모리(300), 제1 메모리 및 제2 메모리는 휘발성 메모리 장치 또는 불휘발성 메모리 장치로 구현될 수 있다.
휘발성 메모리 장치는 DRAM(dynamic random access memory), SRAM(static random access memory), T-RAM(thyristor RAM), Z-RAM(zero capacitor RAM), 또는 TTRAM(Twin Transistor RAM)으로 구현될 수 있다.
불휘발성 메모리 장치는 EEPROM(Electrically Erasable Programmable Read-Only Memory), 플래시(flash) 메모리, MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torque(STT)-MRAM), Conductive Bridging RAM(CBRAM), FeRAM(Ferroelectric RAM), PRAM(Phase change RAM), 저항 메모리(Resistive RAM(RRAM)), 나노 튜브 RRAM(Nanotube RRAM), 폴리머 RAM(Polymer RAM(PoRAM)), 나노 부유 게이트 메모리(Nano Floating Gate Memory(NFGM)), 홀로그래픽 메모리(holographic memory), 분자 전자 메모리 소자(Molecular Eelectronic Memory Device), 또는 절연 저항 변화 메모리(Insulator Resistance Change Memory)로 구현될 수 있다.
도 3은 도 1에 도시된 프로세서의 개략적인 블록도를 나타낸다.
도 3을 참조하면, 프로세서(200)는 그래프 IR(Intermediate Representation) 생성기(210), 그래프 IR 최적화기(graph IR optimizer)(230), 코드 생성기(code generator)(250)를 포함할 수 있다. 그래프 IR 최적화기(230)는 체크 포인트 생성기(231), 변화도 전달기(gradient transferer)(233) 및 배치 관리기(235)를 포함할 수 있다.
프로세서(200)는 멀티 디바이스 또는 멀티 코어 환경에서 수행될 수 있도록 뉴럴 네트워크에 기초한 컴파일(compile)을 수행할 수 있다. 컴파일을 통해, 프로세서(200)는 뉴럴 네트워크를 멀티 디바이스 또는 멀티 코어 하드웨어에서 수행될 수 있는 프로그램으로 변환할 수 있다.
프로세서(200)는 뉴럴 네트워크 모델을 그래프 IR(또는, 하이 레벨 IR(High-level IR)로 표현함으로써, 다양한 최적화를 적용한 후 이를 하드웨어 종속적인 코드로 변환할 수 있다.
그래프 IR 생성기(210)는 뉴럴 네트워크를 변환하여 그래프 IR을 생성할 수 있다. 중간 표현(Intermediate Representation, IR)은 컴파일러나 가상 머신의 내부에서 소스 코드를 표현하기 위해 사용되는 데이터 구조 또는 코드를 의미할 수 있다.
그래프 IR(Graph Intermediate Representation)은 뉴럴 네트워크 모델(예를 들어, 딥러닝 모델)을 계산 그래프로 나타낸 추상적인 표현을 의미할 수 있다. 그래프 IR은 뉴럴 네트워크 모델을 특정한 프로그래밍 언어나 하드웨어에 국한되어 동작하도록 변환하기 전 단계의 표현 방식을 의미할 수 있다.
그래프 IR은 다양한 뉴럴 네트워크 프레임워크 모델을 하나의 표현으로 나타낼 수 있고, 그래프 형태에서 다양한 최적화를 수행할 수 있기 때문에 유용할 수 있다. 또한, 하드웨어에 종속적인 표현이 아닌 그래프 표현을 사용할 경우 상이한 기술 분야에서 이미 발견된 다양한 최적화 방법이 적용될 수 있다.
그래프 IR 최적화기(230)는 그래프 IR로 변환된 뉴럴 네트워크의 최적화를 수행할 수 있다. 체크 포인트 생성기(231)는 뉴럴 네트워크의 순전파 연산 동작 동안, 뉴럴 네트워크에 포함된 레이어 중에서 하나 이상의 레이어에 체크 포인트를 설정할 수 있다.
체크 포인트 생성기(231)는 뉴럴 네트워크에 포함된 레이어에 의해 계산된 중간 결과값 중에서 디바이스(400)에 포함된 메모리에 남아있는 데이터를 그래프 중간 표현에 표시할 수 있다.
변화도 전달기(233)는 뉴럴 네트워크의 역전파 연산 동작 동안, 뉴럴 네트워크에 포함된 변화도를 제2 메모리에 저장할 수 있다. 변화도 전달기(233)는 변화도를 계산하고 계산된 변화도가 중앙 장치의 글로벌 메모리(450)로 이동된다는 중간 표현을 그래프 IR에 명시적으로 삽입할 수 있다.
배치 관리기(235)는 설정된 체크 포인트 및 계산된 변화도에 기초하여 로컬 메모리(430)를 이용하여 디바이스(400)가 최대로 실행할 수 있는 배치 수를 계산할 수 있다.
그래프 IR 최적화기(230)는 뉴럴 네트워크 모델에 상수 폴딩(contant folding) 및 퓨전(fusion)과 같은 추가적인 최적화 작업을 수행할 수 있다.
코드 생성기(250)는 최적화된 뉴럴 네트워크 모델의 중간 표현을 뉴럴 네트워크 연산이 수행되는 디바이스(400)를 제어하기 위한 코드(또는, 소스 코드)를 생성할 수 있다. 코드 생성기(250)는 호스트(host) 및 디바이스 바이너리를 생성할 수 있다. 코드 생성기(250)는 멀티 디바이스 또는 멀티 코어를 포함하는 디바이스(400)에서 수행될 수 있는 디바이스 코드 및 디바이스(400)를 제어하는 중앙 장치(예를 들어, CPU(Central Processing Unit)에서 수행될 수 있는 CPU 코드를 생성할 수 있다.
도 4는 메모리 관리 동작을 설명하기 위한 도면이다.
도 4를 참조하면, 프로세서(200)는 뉴럴 네트워크(또는, 뉴럴 네트워크 모델)을 데이터 병렬화를 이용하여 분산 학습을 이용하여 학습시킬 수 있다. 프로세서(200)는 재계산(re-calculation) 방식을 이용하여 디바이스(400)의 메모리(예를 들어, 로컬 메모리(430))를 절약할 수 있다.
재계산 방식은 뉴럴 네트워크에 포함된 레이어로부터 계산된 중간값들의 일부는 저장하지 않고, 이후에 계산된 중간값들이 필요할 경우에 다시 계산하여 사용하는 방식을 의미할 수 있다. 이 때, 재계산 방식은 뉴럴 네트워크에 포함된 레이어의 일부에 체크 포인트를 설정하여 체크 포인트가 설정된 레이어에 대해서만 중간값을 저장하고 나머지 레이어에 대해서는 저장하지 않음으로써 메모리를 절약하는 방식을 의미할 수 있다.
예를 들어, 레이어(416)의 연산을 수행하기 위해서 레이어(413) 및 레이어(415)의 연산 결과가 요구될 수 있다. 프로세서(200)는 레이어(413)의 연산 결과가 바로 사용되지 않는다고 하더라도 뉴럴 네트워크의 후반부에 위치한 레이어들의 연산을 위해 메모리에 저장할 필요가 있다. 프로세서(200)는 레이어(416)의 계산을 위해 레이어(413)에 체크 포인트를 설정하고 레이어(413)의 출력을 로컬 메모리(430)에 저장해 놓을 수 있다.
마찬가지로, 레이어(418)의 연산을 수행하기 위해 레이어(411) 및 레이어(417)의 연산 결과가 필요할 수 있기 때문에, 프로세서(200)는 레이어(411)에 체크 포인트를 설정하고 레이어(411)의 연산 결과를 로컬 메모리(430)에 저장할 수 있다.
프로세서(200)는 레이어(417)의 연산을 수행할 때, 레이어(412)의 연산 결과가 필요할 수 있다. 이 때, 프로세서(200)는 체크 포인트가 설정된 레이어(411)의 연산 결과를 이용하여 레이어(412)의 연산 결과를 재계산한 후 레이어(417)의 연산 동작을 수행할 수 있다.
체크 포인트의 설정을 통해, 디바이스(400)가 수행해야 하는 연산(computation) 양은 증가하지만, 한 번에 계산할 수 있는 입력 데이터의 배치 크기(batch size)가 증가하기 때문에 처리량과 운용량(utilization)이 증가하여 전체 학습 속도가 향상될 수 있다.
프로세서(200)는 연산에 사용된 중간값을 로컬 메모리(430)로부터 삭제할 수 있다. 예를 들어, 레이어(413)가 체크 포인트가 설정된 레이어일 경우, 레이어(413)의 연산 결과가 사용된 이후에는 레이어(413)의 연산 결과를 로컬 메모리(430)로부터 삭제할 수 있다.
프로세서(200)는 체크 포인트를 설정함으로써 디바이스(400)의 로컬 메모리(430)를 절약하고 각 디바이스(400)에서 계산되는 변화도(gradient)를 한 번에 중앙 장치(예를 들어, 글로벌 메모리(450))로 모으지(gather) 않고 각 레이어에서 계산될 때마다 적정량의 변화도를 바로 중앙 장치로 모아서 변화도가 차지하는 메모리의 양을 감소시킬 수 있다.
프로세서(200)는 학습시키고자 하는 뉴럴 네트워크에 포함된 레이어 중에서 몇 개의 레이어에 체크 포인트를 설정할지를 결정할 수 있다. 예를 들어, 프로세서(200)는 뉴럴 네트워크에 포함된 레이어의 수가 n이라고 했을 때, n의 제곱근(
Figure pat00001
) 만큼의 수의 레이어에 체크 포인트를 설정할 수 있다. 프로세서(200)는 체크 포인트를 설정할 레이어의 수를 결정함으로써 임의의 레이어의 연산을 수행하는 시점에 점유된 로컬 메모리(430)의 양을 계산할 수 있다.
도 4의 예시에서, 노드는 뉴럴 네트워크의 레이어를 나타내고, 엣지는 데이터의 흐름을 나타낼 수 있다. F가 표기된 레이어(411 내지 414)는 순전파 동작을 수행하는 노드를 나타내고, B가 표기된 레이어(415 내지 418)는 역전파가 수행되는 노드를 나타낼 수 있다.
이 때, 레이어(411)와 레이어(418)는 동일한 레이어를 의미할 수 있다. 레이어(411)는 순전파가 수행될 때를 나타내고, 레이어(418)는 레이어(411)와 동일한 레이어에서 역전파가 수행될 때를 나타낼 수 있다.
레이어(411)과 레이어(413)에 체크 포인트가 설정된 경우에, 레이어(413)의 연산 결과가 계산된 직후에 점유된 로컬 메모리(430)는 "입력 데이터 크기 + 전체 뉴럴 네트워크의 가중치 크기 + 체크 포인트가 설정된 중간 결과값(F1, F3) 데이터 크기"일 수 있다.
순전파 과정에서는 변화도가 계산되지 않아서 점유된 메모리에는 반영되지 않을 수 있다. 레이어(417)의 이전까지 역전파가 진행된 경우, 점유된 로컬 메모리(430)는 "입력 데이터 크기 + 전체 뉴럴 네트워크의 가중치 크기 + F1 중간 결과값의 크기 + 계산된 변화도(B3, B4) 크기"일 수 있다.
이 때, 레이어(413)의 중간 결과값은 레이어(416)의 연산 과정에서 이미 사용되었기 때문에 삭제될 수 있고, 레이어(415) 및 레이어(416)에서 계산된 변화도가 로컬 메모리(430)에 추가될 수 있다.
입력 데이터의 크기(IFM)와 전체 뉴럴 네트워크의 가중치 크기(W), 계산되어 이후의 레이어에서 다시 쓰일 수 있는 체크 포인트가 설정된 레이어의 중간 결과값 크기(IM) 및 이미 계산된 변화도 크기(G)를 합한 결과가 특정 시점에 점유된 데이터의 크기일 수 있다.
i번째 레이어에서 처리할 수 있는 배치 수를 Bi라고 하면, 특정 시점에 점유된 데이터의 크기는 수학식 1과 같이 나타낼 수 있다.
Figure pat00002
수학식 1에서 디바이스 메모리 크기(Device memory size)는 로컬 메모리(430)의 크기를 의미할 수 있다.
병렬화를 이용하여 뉴럴 네트워크를 학습시킬 때, 디바이스(400)에 포함된 복수의 코어(410)에서 역전파 연산 동작이 완료된 후 한 번에 계산된 모든 변화도를 글로벌 메모리(450)로 전달할 경우에 로컬 메모리(430)의 많은 부분을 변화도가 차지할 수 있기 때문에, 프로세서(200)는 역전파 과정에서 하나의 레이어에서 변화도를 계산하고 바로 글로벌 메모리(450) 저장할 수 있다.
이를 통해, 로컬 메모리(430)에서 변화도가 차지하는 부분을 줄일 수 있고, 중앙 장치는 미리 변화도를 모아서 뉴럴 네트워크 모델의 업데이트를 준비할 수 있다.
다시 말해, 변화도의 계산과 동시에 변화도를 제2 메모리에 저장할 경우 로컬 메모리에 점유된 데이터의 크기는 수학식 2와 같이 나타낼 수 있다.
Figure pat00003
프로세서(200)는 뉴럴 네트워크의 모든 레이어를 순회하면서 수학식 2를 이용하여 레이어에서 처리 가능한 배치의 수 Bi를 계산할 수 있다.
프로세서(200)는 계산한 배치의 수 Bi에 기초하여 뉴럴 네트워크의 병렬 연산을 위한 최대 배치수를 획득할 수 있다. 구체적으로, 프로세서(200)는 뉴럴 네트워크에 포함된 모든 레이어를 순회하면서 수학식 2로부터 계산된 최댓값 Bi 중에서 가장 작은 값을 데이터 병렬화를 적용하여 뉴럴 네트워크 연산 동작을 수행할 수 있는 최대 배치 수를 계산할 수 있다.
프로세서(200)는 수학식 3을 이용하여 최대 배치수를 획득할 수 있다.
Figure pat00004
여기서, n은 뉴럴 네트워크에 포함된 모든 레이어의 수를 의미할 수 있다.
도 5는 코드 생성 동작의 흐름을 나타낸다.
도 5를 참조하면, 디바이스(400)의 메모리를 관리하기 위한 코드를 생성할 수 있다. 디바이스(400)는 로컬 메모리(430) 및 글로벌 메모리(450)를 포함할 수 있다.
수신기(100)는 뉴럴 네트워크에 관련된 파라미터 및 디바이스 정보를 수신할 수 있다(510). 디바이스 정보는 뉴럴 네트워크 연산이 수행될 수 있는 하드웨어 환경에 대한 정보를 포함할 수 있다. 예를 들어, 디바이스 정보는 코어의 수 및 로컬 메모리의 크기를 포함할 수 있다.
프로세서(200)는 뉴럴 네트워크 모델을 중간 표현으로 변경(또는, 변환)할 수 있다(520). 프로세서(200)는 뉴럴 네트워크를 위한 컴파일러에서 사용하는 중간 표현을 입력 받아 디바이스(400)의 로컬 메모리(430)에 남아 재계산에 활용될 중간값 데이터를 표시하기 위해 체크 포인트를 설정할 수 있다(530).
프로세서(200)는 체크 포인트가 설정된 레이어에 대응하는 중간 표현에 기초하여 뉴럴 네트워크의 역전파 연산 동작을 수행하면서 뉴럴 네트워크의 가중치의 변화도를 중앙 장치의 글로벌 메모리(450)에 전달하여 저장할 수 있다. 프로세서(200)는 변화도의 저장을 위해 중간 표현에 변화도 이동 코드를 추가할 수 있다(540).
프로세서(200)는 변화도 이동 코드가 추가된 중간 표현, 체크 포인트가 설정된 중간값 및 가중치 이동이 적용된 중간 표현에 기초하여 디바이스(400)의 로컬 메모리(430) 상에서 뉴럴 네트워크가 최대로 실행할 수 있는 배치의 수를 계산하여 중간 표현의 메타 데이터에 추가할 수 있다(550).
프로세서(200)는 최대 배치수가 추가된 중간 표현을 멀티 코어 및 중앙 장치에서 실행될 수 있는 코드로 변환하여 분산 코드를 생성할 수 있다(560)
도 6은 도 1에 도시된 메모리 관리 장치의 동작의 흐름도를 나타낸다.
도 6을 참조하면, 수신기(100)는 뉴럴 네트워크에 관련된 파라미터 및 뉴럴 네트워크를 이용한 연산 동작을 수행하는 디바이스(400)에 관한 정보를 수신할 수 있다(610).
디바이스(400)에 관한 정보는 디바이스(400)의 코어의 수 및 제1 메모리의 크기를 포함할 수 있다.
프로세서(200)는 수신한 파라미터에 기초한 뉴럴 네트워크에 대한 순전파 연산 동작 동안, 뉴럴 네트워크에 포함된 레이어 중에서 하나 이상의 레이어의 연산 동작 결과를 디바이스(400)의 제1 메모리에 저장할 수 있다(630).
프로세서(200)는 하나 이상의 레이어에 체크 포인트를 설정할 수 있다. 프로세서(200)는 뉴럴 네트워크에 포함된 레이어 중에서 뉴럴 네트워크에 포함된 전체 레이어의 수의 제곱근에 대응하는 개수의 레이어들에 체크 포인트를 설정할 수 있다.
프로세서(200)는 체크 포인트가 설정된 하나 이상의 레이어의 연산 동작 결과를 제1 메모리에 저장할 수 있다.
프로세서(200)는 수신한 파라미터 및 연산 동작 결과에 기초한 뉴럴 네트워크에 대한 역전파 연산 동작 동안, 뉴럴 네트워크에 포함된 레이어의 변화도를 디바이스의 제2 메모리에 저장할 수 있다(650).
프로세서(200)는 파라미터 및 연산 동작 결과에 기초하여 뉴럴 네트워크에 포함된 레이어의 변화도를 계산할 수 있다. 프로세서(200)는 변화도의 계산과 동시에 변화도를 제2 메모리에 저장할 수 있다.
프로세서(200)는 변화도를 계산한 이후, 하나 이상의 레이어의 연산 결과를 상기 로컬 메모리로부터 삭제할 수 있다.
제1 메모리는 로컬 메모리를 포함하고, 제2 메모리는 글로벌 메모리를 포함할 수 있다.
프로세서(200)는 디바이스에 관한 정보, 연산 동작 결과 및 변화도에 기초하여 제1 메모리 및 상기 제2 메모리를 관리할 수 있다(670). 프로세서(200)는 수신한 파라미터, 연산 동작 결과 및 제1 메모리의 크기에 기초하여 뉴럴 네트워크에 포함된 레이어에서 처리 가능한 배치의 수를 계산할 수 있다.
프로세서(200)는 배치의 수에 기초하여 뉴럴 네트워크의 병렬 연산을 위한 최대 배치수를 획득할 수 있다. 프로세서(200)는 최대 배치수에 기초하여 뉴럴 네트워크의 병렬 연산을 수행하기 위한 코드를 생성할 수 있다.
프로세서(200)는 하나 이상의 레이어에 설정된 체크 포인트, 변화도 및 최대 배치수 각각이 반영된 중간 표현에 기초하여 코드를 생성할 수 있다.
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 컨트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있으며 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
위에서 설명한 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 또는 복수의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 이를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (20)

  1. 뉴럴 네트워크에 관련된 파라미터 및 상기 뉴럴 네트워크를 이용한 연산 동작을 수행하는 디바이스에 관한 정보를 수신하는 단계;
    상기 파라미터에 기초한 상기 뉴럴 네트워크에 대한 순전파(forward propagation) 연산 동작 동안, 상기 뉴럴 네트워크에 포함된 레이어 중에서 하나 이상의 레이어의 연산 동작 결과를 상기 디바이스의 제1 메모리에 저장하는 단계;
    상기 파라미터 및 상기 연산 동작 결과에 기초한 상기 뉴럴 네트워크에 대한 역전파(backward propagation) 연산 동작 동안, 상기 뉴럴 네트워크에 포함된 레이어의 변화도를 상기 디바이스의 제2 메모리에 저장하는 단계; 및
    상기 정보, 상기 연산 동작 결과 및 상기 변화도에 기초하여 상기 제1 메모리 및 상기 제2 메모리를 관리하는 단계
    를 포함하는 메모리 관리 방법.
  2. 제1항에 있어서,
    상기 제1 메모리는 로컬 메모리를 포함하고,
    상기 제2 메모리는 글로벌 메모리를 포함하는
    메모리 관리 방법.
  3. 제1항에 있어서,
    상기 정보는,
    상기 디바이스의 코어의 수 및 상기 제1 메모리의 크기
    를 포함하는 메모리 관리 방법.
  4. 제1항에 있어서,
    상기 제1 메모리에 저장하는 단계는,
    상기 하나 이상의 레이어에 체크 포인트를 설정하는 단계; 및
    상기 체크 포인트가 설정된 하나 이상의 레이어의 연산 동작 결과를 상기 제1 메모리에 저장하는 단계
    를 포함하는 메모리 관리 방법.
  5. 제4항에 있어서,
    상기 체크 포인트를 설정하는 단계는,
    상기 뉴럴 네트워크에 포함된 레이어 중에서 상기 뉴럴 네트워크에 포함된 전체 레이어의 수의 제곱근에 대응하는 개수의 레이어들에 상기 체크 포인트를 설정하는 단계
    를 포함하는 메모리 관리 방법.
  6. 제1항에 있어서,
    상기 제2 메모리에 저장하는 단계는,
    상기 파라미터 및 상기 연산 동작 결과에 기초하여 상기 뉴럴 네트워크에 포함된 레이어의 변화도를 계산하는 단계; 및
    상기 변화도의 계산과 동시에 상기 변화도를 상기 제2 메모리에 저장하는 단계
    를 포함하는 메모리 관리 방법.
  7. 제1항에 있어서,
    상기 관리하는 단계는,
    상기 파라미터, 상기 연산 동작 결과 및 상기 제1 메모리의 크기에 기초하여 상기 뉴럴 네트워크에 포함된 레이어에서 처리 가능한 배치의 수(number of batch)를 계산하는 단계; 및
    상기 배치의 수에 기초하여 상기 뉴럴 네트워크의 병렬 연산을 위한 최대 배치수(maximum number of batch)를 획득하는 단계
    를 포함하는 메모리 관리 방법.
  8. 제7항에 있어서,
    상기 관리하는 단계는,
    상기 최대 배치수에 기초하여 상기 뉴럴 네트워크의 병렬 연산을 수행하기 위한 코드를 생성하는 단계
    를 더 포함하는 메모리 관리 방법.
  9. 제8항에 있어서,
    상기 코드를 생성하는 단계는,
    상기 하나 이상의 레이어에 설정된 체크 포인트, 상기 변화도 및 상기 최대 배치수 각각이 반영된 중간 표현(intermediate representation)에 기초하여 상기 코드를 생성하는 단계
    를 포함하는 메모리 관리 방법.
  10. 제1항에 있어서,
    상기 변화도를 계산한 이후, 상기 하나 이상의 레이어의 연산 결과를 상기 제1 메모리로부터 삭제하는 단계
    를 더 포함하는 메모리 관리 방법.
  11. 뉴럴 네트워크에 관련된 파라미터 및 상기 뉴럴 네트워크를 이용한 연산 동작을 수행하는 디바이스에 관한 정보를 수신하는 수신기;
    상기 파라미터에 기초한 상기 뉴럴 네트워크에 대한 순전파(forward) 연산 동작 동안, 상기 뉴럴 네트워크에 포함된 레이어 중에서 하나 이상의 레이어의 연산 동작 결과를 상기 디바이스의 제1 메모리에 저장하고, 상기 파라미터 및 상기 연산 동작 결과에 기초한 상기 뉴럴 네트워크에 대한 역전파 연산 동작 동안, 상기 뉴럴 네트워크에 포함된 레이어의 변화도를 상기 디바이스의 제2 메모리에 저장하고, 상기 정보, 상기 연산 동작 결과 및 상기 변화도에 기초하여 상기 제1 메모리 및 상기 제2 메모리를 관리하는 프로세서
    를 포함하는 메모리 관리 장치.
  12. 제11항에 있어서,
    상기 제1 메모리는 로컬 메모리를 포함하고,
    상기 제2 메모리는 글로벌 메모리를 포함하는
    메모리 관리 장치.
  13. 제11항에 있어서,
    상기 정보는,
    상기 디바이스의 코어의 수 및 상기 제1 메모리의 크기
    를 포함하는 메모리 관리 장치.
  14. 제11항에 있어서,
    상기 프로세서는,
    상기 하나 이상의 레이어에 체크 포인트를 설정하고,
    상기 체크 포인트가 설정된 하나 이상의 레이어의 연산 동작 결과를 상기 제1 메모리에 저장하는
    메모리 관리 장치.
  15. 제14항에 있어서,
    상기 프로세서는,
    상기 뉴럴 네트워크에 포함된 레이어 중에서 상기 뉴럴 네트워크에 포함된 전체 레이어의 수의 제곱근에 대응하는 개수의 레이어에 상기 체크 포인트를 설정하는
    메모리 관리 장치.
  16. 제11항에 있어서,
    상기 프로세서는,
    상기 파라미터 및 상기 연산 동작 결과에 기초하여 상기 뉴럴 네트워크에 포함된 레이어의 변화도를 계산하고,
    상기 변화도의 계산과 동시에 상기 변화도를 상기 제2 메모리에 저장하는
    메모리 관리 장치.
  17. 제11항에 있어서,
    상기 프로세서는,
    상기 파라미터, 상기 연산 동작 결과 및 상기 제1 메모리의 크기에 기초하여 상기 뉴럴 네트워크에 포함된 레이어에서 처리 가능한 배치의 수(number of batch)를 계산하고,
    상기 배치의 수에 기초하여 상기 뉴럴 네트워크의 병렬 연산을 위한 최대 배치수(maximum number of batch)를 획득하는
    메모리 관리 장치.
  18. 제17항에 있어서,
    상기 프로세서는,
    상기 최대 배치수에 기초하여 상기 뉴럴 네트워크의 병렬 연산을 수행하기 위한 코드를 생성하는
    메모리 관리 장치.
  19. 제18항에 있어서,
    상기 프로세서는,
    상기 하나 이상의 레이어에 설정된 체크 포인트, 상기 변화도 및 상기 최대 배치수 각각이 반영된 중간 표현(intermediate representation)에 기초하여 상기 코드를 생성하는
    메모리 관리 장치.
  20. 제11항에 있어서,
    상기 프로세서는,
    상기 변화도를 계산한 이후, 상기 하나 이상의 레이어의 연산 결과를 상기 제1 메모리로부터 삭제하는
    메모리 관리 장치.
KR1020200188928A 2020-12-31 2020-12-31 뉴럴 네트워크 연산을 위한 메모리 관리 방법 및 장치 KR20220096466A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020200188928A KR20220096466A (ko) 2020-12-31 2020-12-31 뉴럴 네트워크 연산을 위한 메모리 관리 방법 및 장치
US17/243,991 US20220206698A1 (en) 2020-12-31 2021-04-29 Method and apparatus with memory management and neural network operation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200188928A KR20220096466A (ko) 2020-12-31 2020-12-31 뉴럴 네트워크 연산을 위한 메모리 관리 방법 및 장치

Publications (1)

Publication Number Publication Date
KR20220096466A true KR20220096466A (ko) 2022-07-07

Family

ID=82117096

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200188928A KR20220096466A (ko) 2020-12-31 2020-12-31 뉴럴 네트워크 연산을 위한 메모리 관리 방법 및 장치

Country Status (2)

Country Link
US (1) US20220206698A1 (ko)
KR (1) KR20220096466A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11790921B2 (en) * 2020-08-04 2023-10-17 OTO Systems Inc. Speaker separation based on real-time latent speaker state characterization

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10157045B2 (en) * 2016-11-17 2018-12-18 The Mathworks, Inc. Systems and methods for automatically generating code for deep learning systems
CN108154237B (zh) * 2016-12-06 2022-04-05 华为技术有限公司 一种数据处理系统及方法
US10698766B2 (en) * 2018-04-18 2020-06-30 EMC IP Holding Company LLC Optimization of checkpoint operations for deep learning computing
US11119850B2 (en) * 2018-06-29 2021-09-14 International Business Machines Corporation Determining when to perform error checking of a storage unit by using a machine learning module
US10802937B2 (en) * 2019-02-13 2020-10-13 United States Of America As Represented By The Secretary Of The Navy High order layer intrusion detection using neural networks

Also Published As

Publication number Publication date
US20220206698A1 (en) 2022-06-30

Similar Documents

Publication Publication Date Title
US11704553B2 (en) Neural network system for single processing common operation group of neural network models, application processor including the same, and operation method of neural network system
US10699194B2 (en) System and method for mimicking a neural network without access to the original training dataset or the target model
KR20210015685A (ko) 이종 컴퓨팅 플랫폼에서 뉴럴 네트워크 모델을 구현하는 방법 및 이를 수행하는 장치
CN113168559A (zh) 机器学习模型的自动化生成
CN112348163A (zh) 具有平衡求解器的深度神经网络
US11803733B2 (en) Method for implementing neural network model in heterogeneous computing platform and apparatus for performing the same
KR20220096466A (ko) 뉴럴 네트워크 연산을 위한 메모리 관리 방법 및 장치
KR20220077709A (ko) 뉴럴 네트워크 연산 방법, 장치 및 그 뉴럴 네트워크 연산을 이용한 키워드 검출 방법
US20230058341A1 (en) Neural network training method and apparatus using trend
US20220261644A1 (en) Method and apparatus for generating task plan based on neural network
US11868912B2 (en) Multi-device based inference method and apparatus
US11526795B1 (en) Executing variational quantum algorithms using hybrid processing on different types of quantum processing units
KR20220125112A (ko) 양자화를 이용한 뉴럴 네트워크 연산 방법 및 장치
KR102614909B1 (ko) 희소화를 이용한 뉴럴 네트워크 연산 방법 및 장치
CN114912590A (zh) 处理器、操作处理器的方法以及包括处理器的电子装置
US20240061972A1 (en) Method and apparatus with performance modeling
KR20210103912A (ko) 뉴럴 네트워크를 학습시키는 학습 방법 및 장치, 뉴럴 네트워크를 이용한 데이터 처리 방법 및 장치
KR102626850B1 (ko) 뉴럴 네트워크 기반 에너지 하베스팅 방법 및 시스템
KR102611480B1 (ko) 뉴럴 네트워크를 이용한 제품 검사 방법 및 장치
KR20210113004A (ko) 뉴럴 네트워크 연산을 위한 코드 생성 방법 및 장치
KR102479793B1 (ko) 연합 학습을 이용한 뉴럴 네트워크 학습 방법 및 장치
US20210279587A1 (en) Method and apparatus for neural network code generation
US20220075606A1 (en) Compiling method and apparatus for neural networks
KR20230063519A (ko) 뉴럴 네트워크 연산 장치 및 방법
KR20230068864A (ko) 뉴럴 네트워크 연산 장치 및 방법

Legal Events

Date Code Title Description
A201 Request for examination