KR102113093B1 - 딥 뉴럴 네트워크를 위한 gpu 메모리 관리 방법 및 그를 수행하는 연산 장치 - Google Patents

딥 뉴럴 네트워크를 위한 gpu 메모리 관리 방법 및 그를 수행하는 연산 장치 Download PDF

Info

Publication number
KR102113093B1
KR102113093B1 KR1020180003587A KR20180003587A KR102113093B1 KR 102113093 B1 KR102113093 B1 KR 102113093B1 KR 1020180003587 A KR1020180003587 A KR 1020180003587A KR 20180003587 A KR20180003587 A KR 20180003587A KR 102113093 B1 KR102113093 B1 KR 102113093B1
Authority
KR
South Korea
Prior art keywords
gpu
unit
schedule
neural network
deep neural
Prior art date
Application number
KR1020180003587A
Other languages
English (en)
Other versions
KR20190085444A (ko
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 KR1020180003587A priority Critical patent/KR102113093B1/ko
Priority to PCT/KR2018/014894 priority patent/WO2019139253A1/ko
Priority to US16/961,073 priority patent/US20210064997A1/en
Publication of KR20190085444A publication Critical patent/KR20190085444A/ko
Application granted granted Critical
Publication of KR102113093B1 publication Critical patent/KR102113093B1/ko

Links

Images

Classifications

    • 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
    • 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
    • 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
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management

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

Abstract

본 명세서에서 개시되는 실시예들은 딥 뉴럴 네트워크를 위한 GPU 메모리 관리 방법 및 그를 수행하는 연산 장치에 관한 것으로서, GPU의 딥 뉴럴 네트워크의 수행을 관찰하여 GPU 메모리에 입력되어야 할 데이터의 크기를 줄임으로써 GPU의 성능을 확장하는 GPU 메모리 관리 방법 및 그를 수행하는 연산 장치에 관한 것이다. 일 실시예에 따르면, GPU 및 CPU를 포함하는 연산 장치가 수행하는 딥 뉴럴 네트워크를 위한 GPU 메모리 관리 방법으로서, 상기 딥 뉴럴 네트워크에 포함된 단위작업에 대한 상기 GPU의 처리에 기초하여 GPU 메모리 관리 스케줄을 생성하는 단계 및 상기 스케줄에 기초하여 상기 딥 뉴럴 네트워크의 수행에 필요한 데이터를 상기 GPU 메모리와 상기 CPU 메모리 사이에서 이동시키는 단계를 포함하는 GPU 메모리 관리 방법이 개시된다.

Description

딥 뉴럴 네트워크를 위한 GPU 메모리 관리 방법 및 그를 수행하는 연산 장치{GPU MEMORY MANAGEMENT FOR DNNs AND COMPUTING SYSTEM THEREOF}
본 명세서에서 개시되는 실시예들은 딥 뉴럴 네트워크를 위한 GPU 메모리 관리 방법 및 그를 수행하는 연산 장치에 관한 것으로서, GPU에서 수행되는 딥 뉴럴 네트워크의 딥러닝을 관찰하여 GPU 메모리의 사용량을 줄임으로써 GPU의 메모리 크기로 인한 한계를 극복하고 보다 효과적으로 딥러닝을 수행하게 하는 GPU 메모리 관리 방법 및 그를 수행하는 연산 장치에 관한 것이다.
딥 러닝은 인공신경망(artificial neural network)에 많은 수의 레이어(layer)를 만들고 학습시키는 여러 가지 방법을 통틀어 일컫는다. 인공신경망에 대한 연구는 오래전부터 진행되어 왔으나 방대한 계산량 때문에 2000년대 중반에 이르기까지 실용화 되지 못하였다. 특히 GPU를 활용하여 딥 뉴럴 네트워크(DNN; Deep Neural Network)를 이용한 딥러닝을 수행함에 있어서, GPU 메모리 용량의 한계라는 어려움이 있어 왔다.
관련하여 선행기술 문헌인 한국등록특허 제10-17667875호는 GPU를 기반으로 하는 딥러닝에 관한 기술로서, 특히, 'GPU장치를 기반으로 하는 딥러닝 분석을 이용한 영상 보정 방법'을 개시하고 있다. 그러나 상술한 선행기술에 의하더라도 GPU 메모리의 용량의 한계를 극복하기 위한 기술에 관해서는 여전히 미흡한 측면이 있다.
한편, 전술한 배경기술은 발명자가 본 발명의 도출을 위해 보유하고 있었거나, 본 발명의 도출 과정에서 습득한 기술 정보로서, 반드시 본 발명의 출원 전에 일반 공중에게 공개된 공지기술이라 할 수는 없다.
본 명세서에서 개시되는 실시예들은, GPU 메모리 용량의 한계를 극복할 수 있는 GPU 메모리 관리 방법 및 그를 위한 연산 장치를 개시하고자 한다.
또한 실시예들은, GPU가 딥 뉴럴 네트워크를 이용한 딥러닝을 수행함에 있어서, CPU 메모리를 활용함으로써 GPU 메모리의 한계를 극복하고자 한다.
또한 실시예들은, 딥 뉴럴 네트워크의 딥러닝에서 각 레이어에 대한 작업이 반복적으로 수행된다는 특성에 기초하여, GPU의 작업 처리 패턴에 따라 GPU 메모리 및 CPU 메모리 사이에서 딥 뉴럴 네트워크의 딥러닝에 필요한 데이터를 이동시키는 효과적인 스케줄을 생성하고자 한다. 이때, 실시예들은, GPU 메모리 및 CPU 메모리 사이에서의 데이터의 이동과, GPU의 연산 처리를 중첩킴으로써 데이터의 이동으로 연산이 지연되는 시간을 최소화하고자 한다.
또한 실시예들은, 딥 뉴럴 네트워크의 입력 데이터를 분할하여 한번에 GPU에서 수행되는 배치 사이즈(batch size)를 축소함으로써 GPU 메모리의 한계를 극복하고자 한다.
또한 실시예들은, 기존의 딥 뉴럴 네트워크의 프레임워크의 소스 코드를 수정하거나 다시 컴파일할 필요 없이 GPU 메모리 관리 방법을 수행함으로써 사용의 투명성을 확보하고자 한다.
상술한 기술적 과제를 달성하기 위한 기술적 수단으로서, 일 실시예에 따르면, GPU 및 CPU를 포함하는 연산 장치가 수행하는 딥 뉴럴 네트워크를 위한 GPU 메모리 관리 방법으로서, 상기 딥 뉴럴 네트워크에 포함된 단위작업에 대한 상기 GPU의 처리에 기초하여 GPU 메모리 관리 스케줄을 생성하는 단계; 및 상기 스케줄에 기초하여 상기 딥 뉴럴 네트워크의 딥러닝에 필요한 데이터를 상기 GPU 메모리와 상기 CPU 메모리 사이에서 이동시키는 단계를 포함하는 GPU 메모리 관리 방법이 개시된다.
다른 실시예에 따르면, GPU 메모리 관리 방법을 수행하는 프로그램이 기록된 컴퓨터 판독 가능한 기록매체가 개시된다. 이때 GPU 메모리 관리 방법은, 연산 장치에 의해 수행되는 것으로서, 상기 딥 뉴럴 네트워크에 포함된 단위작업에 대한 상기 GPU의 처리에 기초하여 GPU 메모리 관리 스케줄을 생성하는 단계; 및 상기 스케줄에 기초하여 상기 딥 뉴럴 네트워크의 딥러닝에 필요한 데이터를 상기 GPU 메모리와 상기 CPU 메모리 사이에서 이동시키는 단계를 포함할 수 있다.
또 다른 실시예에 따르면, 연산 장치에 의해 수행되며, GPU 메모리 관리 방법을 수행하기 위해 매체에 저장된 컴퓨터 프로그램이 개시된다. 이때 GPU 메모리 관리 방법은, 연산 장치에 의해 수행되는 것으로서, 상기 딥 뉴럴 네트워크에 포함된 단위작업에 대한 상기 GPU의 처리에 기초하여 GPU 메모리 관리 스케줄을 생성하는 단계; 및 상기 스케줄에 기초하여 상기 딥 뉴럴 네트워크의 딥러닝에 필요한 데이터를 상기 GPU 메모리와 상기 CPU 메모리 사이에서 이동시키는 단계를 포함할 수 있다.
또 다른 실시예에 따르면, GPU 및 CPU를 포함하고, 딥 뉴럴 네트워크에 포함된 단위작업에 대한 상기 GPU의 처리에 기초하여 GPU 메모리 관리 스케줄을 생성하고, 상기 스케줄에 기초하여 상기 딥 뉴럴 네트워크의 딥러닝에 필요한 데이터를 상기 GPU 메모리와 상기 CPU 메모리 사이에서 이동시키는 연산부를 포함하는 연산 장치가 개시된다.
전술한 과제 해결 수단 중 어느 하나에 의하면, 본 명세서에서 개시되는 실시예들은, GPU 메모리 용량의 한계를 극복할 수 있는 GPU 메모리 관리 방법 및 그를 위한 연산 장치를 개시할 수 있다.
또한 실시예들은, GPU가 딥 뉴럴 네트워크를 이용한 딥러닝을 수행함에 있어서, CPU 메모리를 활용함으로써 GPU 메모리의 한계를 극복할 수 있다.
또한 실시예들은, 딥 뉴럴 네트워크의 딥러닝에서 소정 작업이 반복적으로 수행된다는 특성에 기초하여, GPU의 작업 처리 패턴에 따라 GPU 메모리 및 CPU 메모리 사이에서 딥 뉴럴 네트워크의 딥러닝에 필요한 데이터를 이동시키는 데에 있어서 효과적인 스케줄을 생성할 수 있다. 이때, 실시예들은, GPU 메모리 및 CPU 메모리 사이에서의 데이터의 이동과, GPU의 연산 처리를 중첩킴으로써 데이터의 이동으로 연산이 지연되는 시간을 최소화할 수 있다.
또한 실시예들은, 딥 뉴럴 네트워크의 입력 데이터를 분할하여 한번에 GPU에서 수행할 배치 사이즈(batch size)를 축소함으로써 GPU 메모리의 한계를 극복할 수 있다.
또한 실시예들은, 기존의 딥 뉴럴 네트워크의 프레임워크의 소스 코드를 수정하거나 다시 컴파일할 필요 없이 GPU 메모리 관리 방법을 수행함으로써 사용의 투명성을 확보할 수 있다.
개시되는 실시예들에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 개시되는 실시예들이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도 1 및 도 2는 일 실시예에 따른 연산 장치의 구성을 도시한 블록도이다.
도 3 내지 도 5는 일 실시예에 따른 연산 장치의 동작을 설명하기 위한 예시도이다.
도 6 내지 도 9는 일 실시예들에 따른 GPU 메모리 관리 방법을 설명하기 위한 순서도이다.
아래에서는 첨부한 도면을 참조하여 다양한 실시예들을 상세히 설명한다. 아래에서 설명되는 실시예들은 여러 가지 상이한 형태로 변형되어 실시될 수도 있다. 실시예들의 특징을 보다 명확히 설명하기 위하여, 이하의 실시예들이 속하는 기술분야에서 통상의 지식을 가진 자에게 널리 알려져 있는 사항들에 관해서 자세한 설명은 생략하였다. 그리고, 도면에서 실시예들의 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 구성이 다른 구성과 "연결"되어 있다고 할 때, 이는 '직접적으로 연결'되어 있는 경우뿐 아니라, '그 중간에 다른 구성을 사이에 두고 연결'되어 있는 경우도 포함한다. 또한, 어떤 구성이 어떤 구성을 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한, 그 외 다른 구성을 제외하는 것이 아니라 다른 구성들을 더 포함할 수도 있음을 의미한다.
이하 첨부된 도면을 참고하여 실시예들을 상세히 설명하기로 한다.
도 1은 일 실시예에 따른 연산 장치(100)의 구성을 도시한 블록도이다.
본 명세서의 실시예에 따르면, 연산 장치(100)는 딥 뉴럴 네트워크(DNN; Deep Neural Network)를 이용한 딥러닝을 수행하기 위한 GPU(Graphics Processing Unit)를 포함하며, GPU가 딥 뉴럴 네트워크를 이용한 딥러닝을 수행함에 있어서의 GPU 메모리의 한계를 극복하기 위한 GPU 메모리 관리 방법을 수행한다.
도 1을 참고하면, 일 실시예에 따른 연산 장치(100)는 입출력부(110), 저장부(120), 통신부(130) 및 연산부(140)를 포함할 수 있다.
일 실시예에 따른 입출력부(110)는 사용자로부터 입력을 수신하기 위한 입력부와, 연산의 수행 결과, 예를 들어 딥 뉴럴 네트워크의 딥러닝의 수행 결과 등에 대한 정보를 표시하기 위한 출력부를 포함할 수 있다. 예를 들어, 입출력부(110)는 사용자의 입력을 수신하는 조작 패널(operation panel) 및 영상을 출력하는 디스플레이 패널(display panel) 등을 포함할 수 있다.
구체적으로, 입력부는 키보드, 물리 버튼, 터치 스크린 또는 카메라 등과 같이 다양한 형태의 입력 수신 장치들을 포함할 수 있다. 또한, 출력부는 디스플레이 패널, 스피커 또는 헤드셋 등을 포함할 수 있다. 다만, 입출력부(110)는 상술한 예시에 한정되지 않고 다양한 입출력을 지원하는 구성을 포함할 수 있다.
한편, 저장부(120)에는 딥 뉴럴 네트워크의 딥러닝을 위한 다양한 종류의 데이터가 설치 및 저장될 수 있다. 일 실시예에 따르면, 저장부(120)는 딥 뉴럴 네트워크의 대상이 되는 입력 데이터, 중간 데이터 및 딥러닝의 결과 데이터 등을 저장할 수 있으며, 딥 뉴럴 네트워크의 딥러닝을 위한 애플리케이션 및/또는 장치 드라이버와 같은 소프트웨어를 저장 및 구동할 수 있다. 실시예에 따르면, 저장부(120)는 후술할 연산부(140)에 포함되는 GPU 및 CPU 중 적어도 하나에 내장될 수도 있다.
한편, 통신부(130)는 다른 디바이스 또는 네트워크와 유무선 통신을 수행할 수 있다. 이를 위해, 통신부(130)는 다양한 유무선 통신 방법 중 적어도 하나를 지원하는 통신 모듈을 포함할 수 있다. 예를 들어, 통신 모듈은 칩셋(chipset)의 형태로 구현될 수 있다.
통신부(130)가 지원하는 무선 통신은, 예를 들어 Wi-Fi(Wireless Fidelity), Wi-Fi Direct, 블루투스(Bluetooth), UWB(Ultra-Wide Band) 또는 NFC(Near Field Communication) 등일 수 있다. 또한, 통신부(130)가 지원하는 유선 통신은, 예를 들어 USB 또는 HDMI(High Definition Multimedia Interface) 등일 수 있다.
일 실시예에 다르면, 통신부(130)는 딥 뉴럴 네트워크의 대상이 되는 입력 데이터를 제3의 서버로부터 수신할 수 있다.
한편, 연산부(140)는 연산 장치(100)의 전체적인 동작을 제어할 수 있다. 실시예에 따르면, 연산부(140)는 딥 뉴럴 네트워크를 이용한 딥러닝을 수행하기 위하여 연산 장치(100)에 포함된 다른 구성들을 제어하고, 딥 뉴럴 네트워크를 이용한 딥러닝을 수행하기 위하여 각종 데이터를 처리할 수 있다. 이때, 딥러닝이란, 딥 뉴럴 네트워크의 학습 및 추론을 포함할 수 있다.
여기서 도 2는 연산부(140)의 일 실시예를 설명하기 위한 블록도이다. 도 2를 참고하면, 연산부(140)는 CPU(141) 및 GPU(142)와 같은 프로세서를 포함할 수 있다. 실시예에 따르면, CPU(141) 및 GPU(142)는 각각 내장된 메모리를 포함할 수 있다. 즉, CPU(141)는 CPU 메모리를, GPU(142)는 GPU 메모리를 각각 포함할 수 있다.
이때, 도 3을 참고하면, 도 3은 딥 뉴럴 네트워크의 구성을 도식화한 예시도이다. 도 3에 따르면, 딥 뉴럴 네트워크는 복수의 레이어(31)로 이루어진다. 딥 뉴럴 네트워크(DNN)는 풀리커넥티드 레이어(fully connected layer; FC 레이어)로 구성된 뉴럴 네트워크를 비롯하여 CNN(Convolution Neural Network) 및 RNN(Recurrent Neural Network) 등 3개 이상의 레이어가 있는 뉴럴 네트워크를 모두 포함한다. 이같은 딥 뉴럴 네트워크에 포함된 각 레이어에서 처리되는 연산 과정을 '단위작업'이라 한다. 실시예에 따르면, 단위작업은 소정 함수로 구현될 수 있으며, 이때 소정 함수는 CUDA kernel이나 OpenCL kernel로 구현될 수 있으며, cuDNN이나 cuBlas와 같은 라이브러리 형태로 제공될 수 있다.
또한, 딥 뉴럴 네트워크의 딥러닝은 복수의 레이어(31) 각각에 대응하는 단위작업을 순차적으로 수행하는 과정을 반복할 수 있다. 이때, 반복되는 복수의 레이어를 포함하여 '반복단위(Iteration, 32)'라 한다. 즉, 딥 뉴럴 네트워크의 딥러닝은 복수의 레이어(31)를 포함하는 반복단위(32)를 수회 반복함으로써 복수의 레이어(31) 각각에 대응되는 단위작업을 반복하는 과정을 포함할 수 있다.
이때, 실시예에 따르면, 상술한 딥 뉴럴 네트워크를 이용한 딥러닝은 GPU(142)가 수행할 수 있다. 즉, GPU(142) 는 복수의 단위작업을 순차적으로 수행하는 반복단위를 반복하며 딥 뉴럴 네트워크를 이용한 딥러닝을 수행할 수 있다.
여기서 도 4를 참고하면, 도 4는 단위작업과 단위작업을 수행하기 위해 필요한 정보인 '필요데이터(41)'의 관계를 도식화한 예시도이다. 도 4에 따르면, 각 단위작업은 하나 이상의 필요데이터(41)와 매칭될 수 있다. 또한, 하나의 단위작업에 대응되는 하나 이상의 필요데이터(41)를 포함하는 데이터 단위를 '필요데이터번들(42)'이라 한다. 실시예에 따르면, 필요데이터(41)는 입력 데이터, 각 레이어에서 사용되는 가중치(weight) 값, 각 레이어에서 출력되는 중간 결과물(feature map) 등을 포함할 수 있다.
한편, GPU(142)는 각 단위작업을 수행함에 있어서, 필요데이터(41) 또는 필요데이터번들(42)을 각 단위작업의 수행 전 또는 각 단위작업의 수행 중 GPU 메모리에 입력 받을 수 있다. 또한, GPU(142)는 GPU 메모리에 입력된 필요데이터(41)에 기초하여 단위작업을 수행함으로써 딥 뉴럴 네트워크를 이용한 딥러닝을 수행할 수 있다. 이때, 딥 뉴럴 네트워크를 이용한 딥러닝을 수행함에 있어서의 GPU(142)의 성능은 GPU 메모리의 관리에 따라 좌우될 수 있다.
기존의 딥 뉴럴 네트워크를 이용한 딥러닝에서는 필요데이터를 처리하기 위해서 모든 단위작업에 대응하는 모든 필요데이터를 GPU 메모리에 입력한 채로 딥러닝을 진행한다. 이 경우 GPU 메모리의 크기가 모든 필요데이터 전체의 크기보다 작은 경우 딥러닝을 수행할 수 없다.
따라서 실시예에 따르면, 연산부(140)는 GPU 메모리 관리 방법을 수행하여 최소한의 성능 저하로 대용량의 메모리를 필요로 하는 딥 뉴럴 네트워크를 이용한 딥러닝을 수행하고자 한다. 관련하여 이하에서는 연산부(140)가 수행하는 GPU 메모리 관리 방법을 자세히 설명한다. 이하에서 설명되는 GPU 메모리 관리 방법은, 실시예에 따라 연산부(140)에 포함된 CPU(141)에 의해 제어되거나 GPU(142)에 의해 제어될 수 있다.
실시예에 따르면, 연산부(140)는 GPU 메모리를 효과적으로 활용하기 위하여 딥 뉴럴 네트워크의 딥러닝에 필요한 데이터를 GPU 메모리 및 CPU 메모리 사이에서 이동시킬 수 있다. 예를 들면, 연산부(140)는 필요데이터를 CPU 메모리로부터 GPU 메모리로 이동시키거나 GPU 메모리로부터 CPU 메모리로 이동시킬 수 있다. 이때, 처리가 수행되어야 할 필요데이터를 CPU 메모리에서 GPU 메모리로 이동시키는 것을 '스왑인(swap-in)', 처리가 완료된 필요데이터를 GPU 메모리에서 CPU 메모리로 이동시키는 것을 '스왑아웃(swap-out)'이라 한다.
한편, 연산부(140)는 GPU 메모리의 관리를 위하여 GPU 메모리 관리 스케줄을 생성할 수 있다. 실시예에 따르면, 연산부(140)는 GPU 메모리 관리 스케줄을 생성하되, GPU(142)의 딥 뉴럴 네트워크에 포함된 단위작업에 대한 처리에 기초하여 스케줄을 생성할 수 있다.
상술한 바와 같이, GPU(142)는 하나 이상의 단위작업을 포함하는 반복단위를 반복함으로써 하나 이상의 단위작업을 순차적으로 수행하되, 반복적으로 수행할 수 있다.
이때, 연산부(140)는 설정된 횟수에 대응하는 단위작업의 반복 처리에 기초하여 스케줄을 생성하고, 설정된 횟수 이후의 단위작업의 반복 처리에 대하여 생성된 스케줄을 적용할 수 있다. 즉, 연산부(140)는 단위작업이 수회 반복될 때, 반복 초기의 단위작업의 처리에 기초하여 획득한 단위작업의 처리 정보에 기초하여 스케줄을 생성할 수 있다. 또한, 연산부(140)는 생성한 스케줄을, 스케줄 생성 이후의 반복되는 단위작업에 적용할 수 있다.
이때, 도 5를 참고하면, 도 5는 스케줄 생성을 위한 단위작업의 초기 반복의 과정을 도식화한 예시도이다. 도 5에 따르면, 연산부(140)는 단위작업(51)을 수행하기에 앞서 단위작업에 대응하는 하나 이상의 필요데이터를 스왑인(52)할 수 있다. 예를 들어, 연산부(140)는 단위작업(51)에 대응되는 하나 이상의 필요데이터를 일괄적으로 스왑인(52)할 수 있다.
그리고 연산부(140)는 스왑인(52)한 필요데이터에 기초하여 단위작업(51)을 진행함에 따라 발생하는 호출을 후킹(hooking)할 수 있다. 이때, 연산부(140)는 호출에 기초하여 단위작업 처리 정보를 획득하고, 획득한 단위작업 처리 정보에 기초하여 필요데이터 각각에 대한 스케줄을 생성할 수 있다.
또한, 연산부(140)는 단위작업(51)이 완료되면, 처리된 필요데이터를 스왑아웃(53)할 수 있다. 예를 들어, 연산부(140)는 스왑인(51)한 필요데이터에 기초하여 단위작업(51)을 수행한 후, 처리가 완료된 하나 이상의 필요데이터를 일괄적으로 스왑아웃(53)할 수 있다.
또한, 연산부(140)는 딥 뉴럴 네트워크의 딥러닝의 수행에 따라 단위작업의 후순위 작업(54, 55)을 순차적으로 수행할 수 있다. 이 경우, 연산부(140)는 순차적으로 진행되는 후순위 작업(54, 55) 각각에 대하여 상술한 스왑인, 스왑아웃 과정을 동일하게 수행하며, 각 단위작업에 대응되는 단위작업 처리 정보를 획득할 수 있다.
실시예에 따르면, 단위작업 처리 정보는 단위작업에 대한 실행 정보, 필요데이터에 대한 정보 및 GPU 메모리 정보 중 적어도 하나를 포함할 수 있다. 이때, 단위작업에 대한 실행 정보는 단위작업 실행 시간, 단위작업 실행 순서, 단위작업에 대응되는 함수, 단위작업에 매칭되는 필요데이터에 대한 정보, 가령, 단위작업에 매칭되는 필요데이터를 특정하기 위한 정보 등을 포함할 수 있다. 또한, 필요데이터에 대한 정보는 필요데이터의 크기, 필요데이터의 GPU 메모리 및 CPU 메모리 사이에서의 이동 시간 등을 포함할 수 있다. 그리고 GPU 메모리 정보는 GPU 메모리의 크기 등을 포함할 수 있다.
실시예에 따르면, 연산부(140)는 획득한 단위작업 처리 정보에 기초하여 필요데이터에 대한 스왑인 및 스왑아웃을 단위작업과 중첩하여 수행함으로써 단위작업의 처리 시간을 단축할 수 있다.
이를 위해, 연산부(140)는 획득한 단위작업 처리 정보를 선형계획법(LP; Linear Programming)에 적용할 수 있다. 이때, 선형계획법은 정수선형계획법(ILP; Integer Linear Programming)을 포함할 수 있다.
선형계획법은 최적화 문제의 일종으로 주어진 선형 조건들을 만족시키면서 선형인 목적 함수를 최대화 혹은 최소화하는 데에 활용되는 기법이다. 예를 들어, 가변 요소 사이에 일차 방정식이 성립할 경우(선형 관계에 있을 때), 변화의 한계를 이용하여 부등식을 세우고 이를 통해 정해진 목적함수를 최소화하거나 최대화하는 변수의 값을 구할 수 있다. 실시예에 따르면, 선형계획법은 상용 솔버(solver)를 이용하여 문제를 해결할 수 있다.
실시예에 따르면, 연산부(140)는 획득한 단위작업 처리 정보가 적용된 정수선형계획법에 기초하여 부등식을 생성하고, 필요데이터의 이동과 딥러닝의 연산이 최대한 중첩되도록 하여 딥 뉴럴 네트워크의 딥러닝 실행 시간을 최소화하는 스케줄을 도출 할 수 있다.
한편, 실시예에 따르면, 연산부(140)는 휴리스틱 기법에 기초하여 스케줄을 생성할 수 있다. 이때, 연산부(140)는 단위작업에 대응하는 하나 이상의 필요데이터를 스왑인하고, 단위작업에 따라 처리된 필요데이터를 스왑아웃함에 있어서, 스왑인 및 스왑아웃하는 데 소요되는 시간이 단위작업의 처리 시간을 초과하면, 단위작업의 선순위 작업에서 처리될 수 있는 스왑인 명령어를 탐색하여 선순위 작업의 진행 중에 처리되도록 스케줄을 생성할 수 있다.
보다 구체적인 실시예에 따르면, 연산부(140)는 복수의 단위작업을 순차적으로 진행하며, 각 단위작업 진행 중에 필요한 필요데이터를 스왑인하고, 처리 완료된 필요데이터를 각 단위작업 진행 중에 스왑아웃할 수 있다.
이때, 연산부(140)는 단위작업 중, 스왑인 및 스왑아웃하는 데 소요되는 시간이 단위작업의 처리 시간을 초과하는 '초과단위작업'을 검출하고, 초과단위작업에 대응되는 스왑인 명령어를 탐색하여 탐색된 스왑인 명령어를 중첩해서 처리할 수 있는 초과단위작업의 선순위 작업을 탐색할 수 있다. 이때, 초과단위작업에 대응되는 스왑인 명령어를 중첩해서 처리할 수 있는 초과단위작업의 선순위 작업을 '초과선순위 작업'이라 부른다.
실시예에 따르면, 연산부(140)는 초과단위작업에 대응되는 스왑인 명령어가 초과선순위 작업에 중첩되도록 스케줄을 생성할 수 있다. 이때, 연산부(140)는 초과선순위 작업을 탐색하되, 초과단위작업에 대응되는 스왑인 명령어의 처리 시간이 가장 많이 중첩될 수 있는 초과선순위 작업을 탐색하고 이에 기초하여 스케줄을 생성할 수 있다.
또한, 실시예에 따르면, 연산부(140)는 초과선순위 작업을 탐색하는 동안 동일한 필요데이터에 대한 스왑아웃 명령어가 탐색되면, 스왑인 명령어와 스왑아웃 명령어를 소거하여 불필요한 통신을 방지할 수 있다.
실시예에 따르면, 연산부(140)는 초과선순위 작업을 탐색하여 스왑인 명령어의 처리 시간이 중첩되도록 스케줄을 생성함에 있어서, 단위작업을 반복하며 스케줄을 업데이트할 수 있다. 이때, 연산부(140)는, 더 이상 스케줄에 변동이 없을 때까지 반복단위를 반복하며 초과선순위 작업의 탐색 과정을 수행하고, 스케줄 생성이 완료되면, 이후의 단위작업에 생성된 스케줄을 적용하여 반복단위를 반복함으로써 딥 뉴럴 네트워크를 이용한 딥러닝을 수행할 수 있다.
실시예에 따른 휴리스틱 기법과 선형계획법에 기초한 GPU 메모리 관리 방법을 비교하면, 선형계획법은 최적의 값을 도출할 수 있으나 휴리스틱 기법에 비하여 최적 값을 도출하는 데 소요되는 시간이 길다. 반면, 휴리스틱 기법은 최적의 값이 아닌 최적에 가까운 값을 도출할 수 있으나 선형계획법에 비하여 소요되는 시간이 짧다는 장점이 있다.
한편, 연산부(140)는 딥 뉴럴 네트워크를 이용한 딥러닝을 수행하기 위한 입력 데이터를 분할함으로써 GPU(142)에서 한번에 처리할 배치 사이즈를 축소할 수 있다. 예를 들어, 연산부(140)는 256개의 배치(batch)를 포함하는 입력 데이터를 64개의 배치를 가진 입력 데이터 4개로 분할할 수 있다. 이때, 연산부(140)는 분할된 4개의 입력 데이터 각각에 기초하여 단위작업을 포함하는 딥 뉴럴 네트워크를 이용하여 딥러닝을 수행하여 결과 데이터(Output Feature Map)를 도출할 수 있다.
실시예에 따르면, 연산부(140)는 단위작업을 진행하며, 생성된 스케줄에 기초하여 해당 단위작업 또는 해당 단위작업의 후순위 작업에 대응하는 필요데이터를 스왑인하거나 GPU(142)에서 처리가 완료된 필요데이터를 스왑아웃할 수 있다.
실시예에 따르면, 상술한 GPU 메모리 관리 방법은 기존의 딥 뉴럴 네트워크 프레임워크의 소스 코드를 수정하거나 다시 컴파일 할 필요가 없다. 이를 위해 연산부(140)는 상술한 GPU 메모리 관리 방법을 공유 라이브러리(shared library) 형태에 기초하여 수행할 수 있다. 예를 들어, 연산부는 공유 라이브러리를 통해 스왑인 및 스왑아웃을 수행함으로써 딥 뉴럴 네트워크 프레임워크의 메모리를 할당, 해제하고, 단위작업의 호출을 중간에 후킹함으로써 메모리 관리를 할 수 있다. 그리고 소스 코드가 공개 되지 않은 cuDNN과 cuBlas와 같은 상용 라이브러리의 호출도 가로채서 메모리 관리를 할 수 있다.
한편, 도 6 내지 도 9는 연산 장치(100)가 수행하는 GPU 메모리 관리 방법을 설명하기 위한 순서도들이다. 도 6 내지 도 9에 도시된 실시예에 따른 GPU 메모리 관리 방법은 도 1 내지 도 5와 관련한 실시예에 따른 연산 장치(100)에서 시계열적으로 처리되는 단계들을 포함한다. 따라서, 이하에서 생략된 내용이라고 하더라도 도 1 내지 도 5와 관련한 실시예에 따른 연산 장치(100)에 관하여 이상에서 기술한 내용은 도 6 내지 도 9에 도시된 실시예들에 따른 GPU 메모리 관리 방법에도 적용될 수 있다.
도 6을 참고하면, 연산 장치(100)는 GPU(142)의 딥 뉴럴 네트워크에 포함된 단위작업에 대한 처리에 기초하여 GPU 메모리 관리 스케줄을 생성할 수 있다(S61).
그리고 연산 장치(100)는 스케줄에 기초하여 딥 뉴럴 네트워크의 딥러닝의 수행에 필요한 데이터를 GPU 메모리와 CPU 메모리 사이에서 이동시킬 수 있다(S62). 이때, S62단계에서 연산 장치(100)는, 단위작업을 진행하며, 생성된 스케줄에 기초하여 단위작업 또는 단위작업의 후순위 작업에 대응하는 필요데이터를 CPU 메모리로부터 GPU 메모리로 스왑인(swap-in)하거나 GPU(142)에서 처리가 완료된 필요데이터를 GPU 메모리로부터 CPU 메모리로 스왑아웃(swap-out)할 수 있다.
실시예에 따르면, 딥 뉴럴 네트워크의 딥러닝은 하나 이상의 단위작업을 포함하는 반복단위를 수회 반복함으로써 수행된다. 이 같은 특성에 따라 연산 장치(100)는, S61단계에서 설정된 횟수에 대응하는 단위작업의 반복 처리에 기초하여 스케줄을 생성할 수 있으며, S62단계에서 설정된 횟수 이후의 단위작업의 반복 처리에 대하여 스케줄을 적용할 수 있다.
한편, 도 7을 참고하면, 연산 장치(100)는 스케줄을 생성함에 있어서(S61), 단위작업에 대응하는 하나 이상의 필요데이터를 스왑인할 수 있다(S71). 이때, 연산 장치(100)는 단위작업을 진행함에 따라 발생하는 호출을 후킹(hooking)하고(S72), 호출에 기초하여 단위작업 처리 정보를 획득하여 필요데이터 각각에 대한 스케줄을 생성할 수 있다(S73).
관련하여 도 8을 참고하면, 연산 장치(100)는 단위작업에 대한 실행 정보, 필요데이터에 대한 정보 및 GPU 메모리 정보에 대한 정보 중 적어도 하나를 포함하는 단위작업 처리 정보를 획득하고(S81), 획득한 단위작업 처리 정보를 선형계획법에 적용하여 딥 뉴럴 네트워크의 딥러닝의 실행 시간이 최소화되는 스케줄을 생성할 수 있다(S82).
또한, 실시예에 따르면, 연산 장치(100)는 스케줄을 생성하기 위하여(S61), 단위작업에 대응하는 하나 이상의 필요데이터를 스왑인하고, 단위작업에 따라 처리된 필요데이터를 스왑아웃함에 있어서, 스왑인 및 스왑아웃하는 데 소요되는 시간이 단위작업의 처리 시간을 초과하면, 단위작업의 선순위 작업에서 처리될 수 있는 스왑인 명령어를 탐색하여 선순위 작업의 진행 중에 처리되도록 스케줄을 생성할 수 있다.
한편, 도 9를 참고하면, 연산 장치(100)는 딥 뉴럴 네트워크의 딥러닝을 위한 입력 데이터를 분할할 수 있다(S91). 실시예에 따르면, 연산 장치(100)는 분할된 입력 데이터에 기초하여 S61 단계 이후의 GPU 메모리 관리 방법을 수행할 수 있다.
이상의 실시예들에서 사용되는 '~부'라는 용어는 소프트웨어 또는 FPGA(field programmable gate array) 또는 ASIC 와 같은 하드웨어 구성요소를 의미하며, '~부'는 어떤 역할들을 수행한다. 그렇지만 '~부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '~부'는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 '~부'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램특허 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다.
구성요소들과 '~부'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '~부'들로 결합되거나 추가적인 구성요소들과 '~부'들로부터 분리될 수 있다.
뿐만 아니라, 구성요소들 및 '~부'들은 디바이스 또는 보안 멀티미디어카드 내의 하나 또는 그 이상의 CPU 들을 재생시키도록 구현될 수도 있다.
도 6 내지 도 9를 통해 설명된 실시예들에 따른 GPU 메모리 관리 방법은 컴퓨터에 의해 실행 가능한 명령어 및 데이터를 저장하는, 컴퓨터로 판독 가능한 매체의 형태로도 구현될 수 있다. 이때, 명령어 및 데이터는 프로그램 코드의 형태로 저장될 수 있으며, 프로세서에 의해 실행되었을 때, 소정의 프로그램 모듈을 생성하여 소정의 동작을 수행할 수 있다. 또한, 컴퓨터로 판독 가능한 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터로 판독 가능한 매체는 컴퓨터 기록 매체일 수 있는데, 컴퓨터 기록 매체는 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함할 수 있다. 예를 들어, 컴퓨터 기록 매체는 HDD 및 SSD 등과 같은 마그네틱 저장 매체, CD, DVD 및 블루레이 디스크 등과 같은 광학적 기록 매체, 또는 네트워크를 통해 접근 가능한 서버에 포함되는 메모리일 수 있다.
또한 도 6 내지 도 9를 통해 설명된 실시예들에 따른 GPU 메모리 관리 방법은 컴퓨터에 의해 실행 가능한 명령어를 포함하는 컴퓨터 프로그램(또는 컴퓨터 프로그램 제품)으로 구현될 수도 있다. 컴퓨터 프로그램은 프로세서에 의해 처리되는 프로그래밍 가능한 기계 명령어를 포함하고, 고레벨 프로그래밍 언어(High-level Programming Language), 객체 지향 프로그래밍 언어(Object-oriented Programming Language), 어셈블리 언어 또는 기계 언어 등으로 구현될 수 있다. 또한 컴퓨터 프로그램은 유형의 컴퓨터 판독가능 기록매체(예를 들어, 메모리, 하드디스크, 자기/광학 매체 또는 SSD(Solid-State Drive) 등)에 기록될 수 있다.
따라서 도 6 내지 도 9를 통해 설명된 실시예들에 따른 GPU 메모리 관리 방법은 상술한 바와 같은 컴퓨터 프로그램이 컴퓨팅 장치에 의해 실행됨으로써 구현될 수 있다. 컴퓨팅 장치는 프로세서와, 메모리와, 저장 장치와, 메모리 및 고속 확장포트에 접속하고 있는 고속 인터페이스와, 저속 버스와 저장 장치에 접속하고 있는 저속 인터페이스 중 적어도 일부를 포함할 수 있다. 이러한 성분들 각각은 다양한 버스를 이용하여 서로 접속되어 있으며, 공통 머더보드에 탑재되거나 다른 적절한 방식으로 장착될 수 있다.
여기서 프로세서는 컴퓨팅 장치 내에서 명령어를 처리할 수 있는데, 이런 명령어로는, 예컨대 고속 인터페이스에 접속된 디스플레이처럼 외부 입력, 출력 장치상에 GUI(Graphic User Interface)를 제공하기 위한 그래픽 정보를 표시하기 위해 메모리나 저장 장치에 저장된 명령어를 들 수 있다. 다른 실시예로서, 다수의 프로세서 및(또는) 다수의 버스가 적절히 다수의 메모리 및 메모리 형태와 함께 이용될 수 있다. 또한 프로세서는 독립적인 다수의 아날로그 및(또는) 디지털 프로세서를 포함하는 칩들이 이루는 칩셋으로 구현될 수 있다.
또한 메모리는 컴퓨팅 장치 내에서 정보를 저장한다. 일례로, 메모리는 휘발성 메모리 유닛 또는 그들의 집합으로 구성될 수 있다. 다른 예로, 메모리는 비휘발성 메모리 유닛 또는 그들의 집합으로 구성될 수 있다. 또한 메모리는 예컨대, 자기 혹은 광 디스크와 같이 다른 형태의 컴퓨터 판독 가능한 매체일 수도 있다.
그리고 저장 장치는 컴퓨팅 장치에게 대용량의 저장공간을 제공할 수 있다. 저장 장치는 컴퓨터 판독 가능한 매체이거나 이런 매체를 포함하는 구성일 수 있으며, 예를 들어 SAN(Storage Area Network) 내의 장치들이나 다른 구성도 포함할 수 있고, 플로피 디스크 장치, 하드 디스크 장치, 광 디스크 장치, 혹은 테이프 장치, 플래시 메모리, 그와 유사한 다른 반도체 메모리 장치 혹은 장치 어레이일 수 있다.
상술된 실시예들은 예시를 위한 것이며, 상술된 실시예들이 속하는 기술분야의 통상의 지식을 가진 자는 상술된 실시예들이 갖는 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 상술된 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
본 명세서를 통해 보호 받고자 하는 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태를 포함하는 것으로 해석되어야 한다.
100: 연산 장치 110: 입출력부
120: 저장부 130: 통신부
140: 연산부 141: CPU
142: GPU

Claims (10)

  1. GPU 및 CPU 를 포함하는 연산 장치가 수행하는 딥 뉴럴 네트워크를 위한 GPU 메모리 관리 방법에 있어서,
    상기 딥 뉴럴 네트워크에 포함된 단위작업을 상기 GPU 가 미리 설정된 횟수만큼 반복하여 처리한 결과에 기초하여 GPU 메모리 관리 스케줄을 생성하는 단계; 및
    상기 GPU 상에서 상기 단위작업을 반복적으로 수행하되, 상기 스케줄에 기초하여 상기 딥 뉴럴 네트워크의 딥러닝에 필요한 데이터를 CPU 메모리로부터 GPU 메모리로 스왑인하거나 상기 GPU 에서 처리 완료된 데이터를 상기 CPU 메모리로 스왑아웃하여 이동시키는 단계를 포함하는, GPU 메모리 관리 방법.
  2. 제1항에 있어서,
    상기 이동시키는 단계는,
    상기 딥 뉴럴 네트워크의 딥러닝에 필요한 데이터를 CPU 메모리로부터 GPU 메모리로 스왑인하되, 상기 스케줄에 기초하여 상기 단위작업 및 상기 단위작업의 후순위 작업 중 적어도 하나에 대응하는 필요데이터를 상기 CPU 메모리로부터 상기 GPU 메모리로 스왑인하는 것을 특징으로 하는, GPU 메모리 관리 방법.
  3. 제1항에 있어서,
    상기 이동시키는 단계는,
    상기 설정된 횟수 이후의 상기 단위작업의 반복 처리에 대하여 상기 스케줄을 적용하는 것을 특징으로 하는, GPU 메모리 관리 방법.
  4. 제1항에 있어서,
    상기 스케줄을 생성하는 단계는,
    상기 단위작업에 대응하는 하나 이상의 필요데이터를 스왑인하는 단계;
    상기 단위작업의 처리를 진행함에 따라 발생하는 호출을 후킹하는 단계; 및
    상기 호출에 기초하여 단위작업 처리 정보를 획득하여 상기 필요데이터 각각에 대한 스케줄을 생성하는 단계를 포함하는, GPU 메모리 관리 방법.
  5. 제4항에 있어서,
    상기 필요데이터 각각에 대한 스케줄을 생성하는 단계는,
    상기 단위작업에 대한 실행 정보, 상기 필요데이터에 대한 정보 및 상기 GPU 메모리에 대한 정보 중 적어도 하나를 포함하는 단위작업 처리 정보를 상기 호출에 기초하여 획득하는 단계; 및
    상기 단위작업 처리 정보를 선형계획법에 적용하여 상기 딥 뉴럴 네트워크의 딥러닝의 실행 시간이 최소화되는 스케줄을 생성하는 단계를 포함하는, GPU 메모리 관리 방법.
  6. 제1항에 있어서,
    상기 스케줄을 생성하는 단계는,
    상기 단위작업에 대응하는 하나 이상의 필요데이터를 스왑인하고, 상기 단위작업에 따라 처리된 필요데이터를 스왑아웃함에 있어서, 스왑인 및 스왑아웃하는 데 소요되는 시간이 상기 단위작업의 처리 시간을 초과하면, 상기 단위작업의 선순위 작업에서 처리될 수 있는 스왑인 명령어를 탐색하여 상기 선순위 작업의 진행 중에 처리되도록 스케줄을 생성하는 것을 특징으로 하는, GPU 메모리 관리 방법.
  7. 제1항에 있어서,
    상기 스케줄을 생성하는 단계 이전에,
    딥 뉴럴 네트워크를 위한 입력 데이터를 분할하는 단계를 더 포함하고,
    상기 스케줄을 생성하는 단계는,
    상기 분할된 입력 데이터 각각에 대하여 수행되는 것을 특징으로 하는, GPU 메모리 관리 방법.
  8. 제 1 항에 기재된 방법을 수행하는 프로그램이 기록된 컴퓨터 판독 가능한 기록매체.
  9. 연산 장치에 의해 수행되며, 제 1 항에 기재된 방법을 수행하기 위해 기록매체에 저장된 컴퓨터 프로그램.
  10. GPU 및 CPU를 포함하고, 딥 뉴럴 네트워크에 포함된 단위작업을 상기 GPU가 미리 설정된 횟수만큼 반복하여 처리한 결과에 기초하여 GPU 메모리 관리 스케줄을 생성하고, 상기 GPU 상에서 상기 단위작업을 반복적으로 수행하되, 상기 스케줄에 기초하여 상기 딥 뉴럴 네트워크의 수행에 필요한 데이터를 CPU 메모리로부터 GPU 메모리로 스왑인하거나 상기 GPU 에서 처리 완료된 데이터를 상기 CPU 메모리로 스왑아웃하여 이동시키는 연산부를 포함하는, 연산 장치.
KR1020180003587A 2018-01-10 2018-01-10 딥 뉴럴 네트워크를 위한 gpu 메모리 관리 방법 및 그를 수행하는 연산 장치 KR102113093B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020180003587A KR102113093B1 (ko) 2018-01-10 2018-01-10 딥 뉴럴 네트워크를 위한 gpu 메모리 관리 방법 및 그를 수행하는 연산 장치
PCT/KR2018/014894 WO2019139253A1 (ko) 2018-01-10 2018-11-29 딥 뉴럴 네트워크를 위한 gpu 메모리 관리 방법 및 그를 수행하는 연산 장치
US16/961,073 US20210064997A1 (en) 2018-01-10 2018-11-29 Method for gpu memory management for deep neural network and computing device for performing same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180003587A KR102113093B1 (ko) 2018-01-10 2018-01-10 딥 뉴럴 네트워크를 위한 gpu 메모리 관리 방법 및 그를 수행하는 연산 장치

Publications (2)

Publication Number Publication Date
KR20190085444A KR20190085444A (ko) 2019-07-18
KR102113093B1 true KR102113093B1 (ko) 2020-05-20

Family

ID=67218593

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180003587A KR102113093B1 (ko) 2018-01-10 2018-01-10 딥 뉴럴 네트워크를 위한 gpu 메모리 관리 방법 및 그를 수행하는 연산 장치

Country Status (3)

Country Link
US (1) US20210064997A1 (ko)
KR (1) KR102113093B1 (ko)
WO (1) WO2019139253A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11526728B2 (en) * 2018-04-09 2022-12-13 Microsoft Technology Licensing, Llc Deep learning model scheduling
KR102086757B1 (ko) * 2019-07-31 2020-03-09 서강대학교 산학협력단 Gpu 메모리 스케줄러 및 이를 이용한 gpu 메모리 선점 방법
KR102491202B1 (ko) * 2019-09-10 2023-01-25 주식회사 모빌린트 인공 신경망 연산을 수행하는 방법, 시스템 및 비일시성의 컴퓨터 판독 가능 기록 매체
KR20210157636A (ko) 2020-06-22 2021-12-29 삼성전자주식회사 가속기, 가속기의 동작 방법 및 이를 포함한 가속기 시스템
KR20220064665A (ko) * 2020-11-12 2022-05-19 삼성전자주식회사 인공지능 모델을 분산 처리하는 전자 장치 및 그 동작 방법
CN113485801B (zh) * 2021-06-25 2023-07-28 中国科学技术大学苏州高等研究院 基于神经网络相似度建模的实时dnn调度系统及方法
CN117892769B (zh) * 2024-03-15 2024-06-11 之江实验室 神经网络训练方法、显存调度方法、系统、设备和产品

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100988395B1 (ko) * 2003-02-18 2010-10-18 마이크로소프트 코포레이션 태스크 스케줄링 방법, 태스크 스케줄링 지원 장치, 코프로세싱 스케줄러에 관련하여 사용하기 위한 코프로세서, 및 컴퓨터 판독가능 저장 매체
KR101079697B1 (ko) 2009-10-05 2011-11-03 주식회사 글로벌미디어테크 범용 그래픽 처리장치의 병렬 프로세서를 이용한 고속 영상 처리 방법
KR101137107B1 (ko) * 2003-12-09 2012-07-02 마이크로소프트 코포레이션 그래픽 처리 유닛을 사용해 기계 학습 기술들의 처리를가속화하고 최적화하는 시스템 및 방법
KR101766787B1 (ko) 2016-11-04 2017-08-09 (주)한국플랫폼서비스기술 Gpu장치를 기반으로 하는 딥러닝 분석을 이용한 영상 보정 방법

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8225074B2 (en) * 2008-10-02 2012-07-17 Nec Laboratories America, Inc. Methods and systems for managing computations on a hybrid computing platform including a parallel accelerator
US9307048B2 (en) * 2010-12-28 2016-04-05 Microsoft Technology Licensing, Llc System and method for proactive task scheduling of a copy of outlier task in a computing environment
FR2996037B1 (fr) * 2012-09-24 2015-05-29 Allegorithmic Moteur hybride pour processeur central et processeur graphique
CA2946775C (en) * 2015-10-29 2024-05-07 Subodh Kumar Automated server workload management using machine learning
KR101953906B1 (ko) * 2016-04-11 2019-06-12 한국전자통신연구원 태스크 스케줄링 방법 및 장치
US10891156B1 (en) * 2017-04-26 2021-01-12 EMC IP Holding Company LLC Intelligent data coordination for accelerated computing in cloud environment
US11138494B2 (en) * 2017-05-02 2021-10-05 International Business Machines Corporation Storage controller acceleration for neural network training and inference
US11003992B2 (en) * 2017-10-16 2021-05-11 Facebook, Inc. Distributed training and prediction using elastic resources
US10698766B2 (en) * 2018-04-18 2020-06-30 EMC IP Holding Company LLC Optimization of checkpoint operations for deep learning computing

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100988395B1 (ko) * 2003-02-18 2010-10-18 마이크로소프트 코포레이션 태스크 스케줄링 방법, 태스크 스케줄링 지원 장치, 코프로세싱 스케줄러에 관련하여 사용하기 위한 코프로세서, 및 컴퓨터 판독가능 저장 매체
KR101137107B1 (ko) * 2003-12-09 2012-07-02 마이크로소프트 코포레이션 그래픽 처리 유닛을 사용해 기계 학습 기술들의 처리를가속화하고 최적화하는 시스템 및 방법
KR101079697B1 (ko) 2009-10-05 2011-11-03 주식회사 글로벌미디어테크 범용 그래픽 처리장치의 병렬 프로세서를 이용한 고속 영상 처리 방법
KR101766787B1 (ko) 2016-11-04 2017-08-09 (주)한국플랫폼서비스기술 Gpu장치를 기반으로 하는 딥러닝 분석을 이용한 영상 보정 방법

Also Published As

Publication number Publication date
KR20190085444A (ko) 2019-07-18
WO2019139253A1 (ko) 2019-07-18
US20210064997A1 (en) 2021-03-04

Similar Documents

Publication Publication Date Title
KR102113093B1 (ko) 딥 뉴럴 네트워크를 위한 gpu 메모리 관리 방법 및 그를 수행하는 연산 장치
CN107038018B (zh) 访问多维张量中的数据
JP5461533B2 (ja) ローカル及びグローバルのデータ共有
KR102277172B1 (ko) 인공 신경망 선택 장치 및 방법
TW202127324A (zh) 用於實施卷積神經網路的可配置處理器元素陣列
US20140298351A1 (en) Parallel operation method and information processing apparatus
US20220147795A1 (en) Neural network tiling method, prediction method, and related apparatus
JP7179853B2 (ja) オンチップの計算ネットワーク
US20170316591A1 (en) Graph processing using a shared memory
JP2018055688A5 (ko)
US20150324131A1 (en) System and method for memory allocation in a multiclass memory system
KR102034659B1 (ko) 컨볼루션 뉴럴 네트워크를 위한 하드웨어 가속기 및 컨볼루션 연산량 감소 방법
US20160147571A1 (en) Method for optimizing the parallel processing of data on a hardware platform
US20200151579A1 (en) System for managing calculation processing graph of artificial neural network and method of managing calculation processing graph by using the same
JP7225859B2 (ja) 情報処理装置、情報処理プログラム、及び情報処理方法
KR102642333B1 (ko) 인공 신경망의 데이터의 주소를 생성하는 방법 및 장치
US10795404B2 (en) Information processing acceleration control system
CN103955443A (zh) 一种基于gpu加速的蚁群算法优化方法
JP5687603B2 (ja) プログラム変換装置、プログラム変換方法、および変換プログラム
KR20200068553A (ko) 딥러닝 네트워크를 이용하여 복수의 이미지들로부터 이야기를 생성하기 위한 방법 및 장치
JP6763411B2 (ja) 設計支援装置、設計支援方法、および設計支援プログラム
US11204876B2 (en) Method and apparatus for controlling memory using prefetch information
KR102086043B1 (ko) 희박 데이터를 위한 데이터 분석 방법 및 이를 수행하기 위한 장치
KR102376527B1 (ko) Dnn 프레임워크를 이용하는 단일 가속기용 프로그램을 복수의 가속기에서 처리하는 방법 및 컴퓨터 프로그램
KR101690315B1 (ko) 병렬처리 이웃 탐색 시스템 및 그 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant