KR102163402B1 - 멀티 노드와 멀티 gpu를 이용한 분산 학습 시스템 및 방법 - Google Patents

멀티 노드와 멀티 gpu를 이용한 분산 학습 시스템 및 방법 Download PDF

Info

Publication number
KR102163402B1
KR102163402B1 KR1020200072392A KR20200072392A KR102163402B1 KR 102163402 B1 KR102163402 B1 KR 102163402B1 KR 1020200072392 A KR1020200072392 A KR 1020200072392A KR 20200072392 A KR20200072392 A KR 20200072392A KR 102163402 B1 KR102163402 B1 KR 102163402B1
Authority
KR
South Korea
Prior art keywords
gpu
gpus
learning
node
deep learning
Prior art date
Application number
KR1020200072392A
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 KR1020200072392A priority Critical patent/KR102163402B1/ko
Application granted granted Critical
Publication of KR102163402B1 publication Critical patent/KR102163402B1/ko

Links

Images

Classifications

    • G06N3/0454
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/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/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1074Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
    • H04L67/1078Resource delivery mechanisms

Abstract

본 발명은 온-프레미스 또는 클라우드 환경에서 멀티 노드와 멀티 GPU를 이용한 딥러닝 분산 학습 시스템 및 방법에 관한 것으로, 해결하고자 하는 과제는 딥러닝 소스 코드를 다수의 GPU를 이용하여 분산 학습하고자 하는 경우 소스코드와 함께 학습에 사용할 GPU 수만을 지정하면 각 노드 별 GPU 분배 작업을 자동 처리함으로써 학습 결과물을 보다 빨리 도출하며, 유휴 GPU 자원을 최소한으로 하여 자원의 효율성을 극대화시키는데 있다.
일례로, 사용자로부터 딥러닝 소스코드를 입력 받고, 분산학습에 이용될 GPU의 개수를 지정 받아 딥러닝 학습을 요청하는 딥러닝 어플리케이션 툴셋부; 및 상기 딥러닝 어플리케이션 툴셋부로부터 딥러닝 소스코드와 GPU의 사용개수정보를 각각 수신하고, GPU 노드 별 GPU 가용자원에 따라 상기 GPU의 사용개수만큼의 유휴 GPU를 노드에 할당하고, GPU가 각각 할당되는 컨테이너를 생성하는 GPU 자동 할당부를 포함하는 멀티 노드와 멀티 GPU를 이용한 분산 학습 시스템을 개시한다.

Description

멀티 노드와 멀티 GPU를 이용한 분산 학습 시스템 및 방법{SYSTEM FOR EXECUTING DISTRIBUTED DEEP LEARNING USING MULTI NODE AND MULTI GRAPHICS PROCESSING UNIT AND METHOD THEREOF}
본 발명의 실시예는 온-프레미스 또는 클라우드 환경에서 멀티 노드와 멀티 GPU를 이용한 딥러닝 분산 학습 시스템 및 방법에 관한 것이다.
일반적으로 딥러닝 분산 학습은 최근 다양한 분야에서 성과를 거두며 상당히 중요해진 머신러닝 분산 학습의 기술 분야 중 하나이다.
이러한 딥러닝 분산 학습은 데이터 병렬화(data parallelism)과 모델 병렬화(model parallelism) 기술을 이용하는데, 여기서 데이터 병렬화는 데이터를 쪼개서 병렬성을 가능하게 하는 기술로, 데이터 병렬화를 사용하면 먼저 데이터를 워커 머신(worker machines(computational node)의 수만큼 나누고, 각 워커(worker)가 하나의 독립적인 조각을 갖게 하고 그 데이터에 대한 연산을 하도록 한다. 병렬적으로 데이터를 읽는 여러 개의 노드를 갖고 있기 때문에 하나의 노드를 사용할 때보다 더 많은 데이터를 읽을 수 있다. 이와 같이 딥러닝 분산 학습은 데이터 병렬화를 통해 그 처리량을 증가시킬 수 있다.
여러 개의 노드를 사용하여 수렴 속도를 높이고자 하는 분산 딥러닝에서 데이터 병렬화는 직관적인 해결 방법이 될 수 있다. 각각의 워커(worker)가 자신의 데이터 조각에 대해 학습을 진행하도록 하고 그것에 대해 파라미터 업데이트(gradient)를 하도록 한다. 모든 노드들이 네트워크를 통해 파라미터 상태를 동기화시켜 모드 같은 값을 갖도록 한다. 동기화를 하는데 시간이 지나치게 오래 걸리지 않는 한 한나의 노드를 사용할 때보다 향상된 결과를 얻을 수 있다.
한편, 딥러닝 분산 학습에서 모델 병렬화는 데이터가 아닌 모델을 여러 개의 워커(worker)로 나눈다. 예를 들어 행렬 인수분해(matrix factorization)을 하려고 할 때, 행렬의 크기가 너무 크고 거대한 행렬의 모든 파라미터를 알고 싶다고 가정할 경우, 모델 병렬화를 진행하기 위해 행렬을 작은 단위(부분 행렬)로 나누고 각각의 워커(worker)에서 나눠주게 된다. 하나의 워커(worker)에 있는 RAM이 행렬의 파라미터를 담기에 충분하지 않다면, 이러한 방법으로 여러 개의 노드의 추가적인 RAM을 사용할 수 있게 된다. 다양한 노드들이 각각의 행렬의 다른 부분들에 해당하는 일을 처리하기 때문에, 병렬적으로 계산할 때 속도 향상을 얻을 수 있게 된다.
종래에 딥러닝 분산 학습을 수행하기 위한 모델 병렬화의 경우, 레이어 각각이 파라미터의 크기나 연산의 복잡도에 따라 연산량 및 연산 시 필요한 메모리 크기가 제 각각이기 때문에, GPU 별로 적절하게 작업 분배를 해야 할 필요가 있다.
그러나, 종래에는 딥러닝 분산 학습을 위해 대부분 GPU를 멀티 노드에 수동으로 할당하거나, 단일 노드와 단일 GPU만을 사용하고 있어, 학습 결과물을 도출하는데 까지 불필요한 시간이 소요되며, GPU 자원의 효율 또한 떨어져 이에 대한 개선이 필요하다.
공개특허공보 제10-2019-0132475호(공개일자: 2019년11월27일) 등록특허공보 제10-2029711호(등록일자: 2019년10월01일)
본 발명의 실시예는, 딥러닝 소스 코드를 다수의 GPU를 이용하여 분산 학습하고자 하는 경우 소스코드와 함께 학습에 사용할 GPU 수만을 지정하면 각 노드 별 GPU 분배 작업을 자동 처리함으로써 학습 결과물을 보다 빨리 도출하며, 유휴 GPU 자원을 최소한으로 하여 자원의 효율성을 극대화할 수 있는 멀티 노드와 멀티 GPU를 이용한 분산 학습 시스템 및 방법을 제공한다.
본 발명의 일 실시예에 따른 멀티 노드와 멀티 GPU를 이용한 분산 학습 시스템은, 사용자로부터 딥러닝 소스코드를 입력 받고, 분산학습에 이용될 GPU의 개수를 지정 받아 딥러닝 학습을 요청하는 딥러닝 어플리케이션 툴셋부; 및 상기 딥러닝 어플리케이션 툴셋부로부터 딥러닝 소스코드와 GPU의 사용개수정보를 각각 수신하고, GPU 노드 별 GPU 가용자원에 따라 상기 GPU의 사용개수만큼의 유휴 GPU를 노드에 할당하고, GPU가 각각 할당되는 컨테이너를 생성하는 GPU 자동 할당부를 포함한다.
또한, 상기 GPU 자동 할당부를 통해 생성된 마스터 컨테이너와 슬레이브 컨테이너를 이용하여 딥러닝 소스코드의 분산학습을 수행하는 딥러닝 분산학습 수행부를 더 포함할 수 있다.
또한, 상기 GPU 자동 할당부는, 상기 딥러닝 어플리케이션 툴셋부의 딥러닝 학습요청 시 수신되는 GPU의 사용개수정보를 기초로 각 GPU 노드 별로 가용자원을 파악하여 GPU의 사용개수만큼의 유휴 GPU를 분할 배정할 적어도 하나의 노드를 선정하는 GPU 노드 선정부; 및 상기 GPU 노드 선정부를 통해 선정된 노드에 유휴 GPU가 할당되는 컨테이너를 마스터 컨테이너와 슬레이브 컨테이너로 구분하여 생성하는 컨테이너 생성부를 포함할 수 있다.
또한, 상기 컨테이너 생성부는, 마스터 컨테이너보다 슬레이브 컨테이너를 먼저 생성하고, 마스터 컨테이너의 분산학습 프레임워크 명령어를 수행하기 위한 데몬을 실행한 후, 분산학습 프레임워크 명령어를 통한 분산학습 실행 이전까지 대기할 수 있다.
또한, RDMA(Remote Direct Memory Access) 지원 네트워크를 통해 상기 GPU 자동 할당부와 기 등록된 적어도 하나의 개인 컴퓨터 장치의 공유 GPU 간을 상호 연결하여 개인 컴퓨터 장치의 유휴 GPU 자원을 분산 학습을 위해 이용하기 위한 통신부를 더 포함할 수 있다.
또한, 상기 GPU 자동 할당부는, 상기 딥러닝 어플리케이션 툴셋부의 딥러닝 학습요청 시 수신되는 GPU의 사용개수정보를 기초로 각 GPU 노드 별로 가용자원 파악 시 유휴 GPU의 개수가 GPU의 사용개수 미만일 경우, 상기 통신부를 통해 상기 개인 컴퓨터 장치에 각각 직접 접근하여 노드를 선정하고, 분산학습에 부족한 개수만큼의 공유 GPU를 추가 배정할 수 있다.
본 발명의 다른 실시예에 따른 멀티 노드와 멀티 GPU를 이용한 분산 학습 방법은, 딥러닝 어플리케이션 툴셋부를 이용하여 사용자로부터 딥러닝 소스코드를 입력 받고, 분산학습에 이용될 GPU의 개수를 지정 받아 딥러닝 학습을 요청하는 분산 학습 요청 단계; 및 GPU 자동 할당부가 상기 딥러닝 어플리케이션 툴셋부로부터 딥러닝 소스코드와 GPU의 사용개수정보를 각각 수신하고, GPU 노드 별 GPU 가용자원에 따라 상기 GPU의 사용개수만큼의 유휴 GPU를 노드에 할당하고, GPU가 각각 할당되는 컨테이너를 생성하는 GPU 자동 할당 단계를 포함한다.
또한, 상기 GPU 자동 할당 단계를 통해 생성된 마스터 컨테이너와 슬레이브 컨테이너를 이용하여 딥러닝 소스코드의 분산학습을 수행하는 딥러닝 분산학습 수행 단계를 더 포함할 수 있다.
또한, 상기 GPU 자동 할당 단계는, GPU 노드 선정부가 상기 분산 학습 요청 단계를 통한 딥러닝 학습요청 시 수신되는 GPU의 사용개수정보를 기초로 각 GPU 노드 별로 가용자원을 파악하여 GPU의 사용개수만큼의 유휴 GPU를 분할 배정할 적어도 하나의 노드를 선정하는 GPU 노드 선정 단계; 및 컨테이너 생성부가 상기 GPU 노드 선정 단계를 통해 선정된 노드에 유휴 GPU가 할당되는 컨테이너를 마스터 컨테이너와 슬레이브 컨테이너로 구분하여 생성하는 컨테이너 생성 단계를 포함할 수 있다.
또한, 상기 컨테이너 생성 단계는, 마스터 컨테이너보다 슬레이브 컨테이너를 먼저 생성하고, 마스터 컨테이너의 분산학습 프레임워크 명령어를 수행하기 위한 데몬을 실행한 후, 분산학습 프레임워크 명령어를 통한 분산학습 실행 이전까지 대기할 수 있다.
또한, 통신부의 RDMA(Remote Direct Memory Access) 지원 네트워크를 통해 상기 GPU 자동 할당부와 기 등록된 적어도 하나의 개인 컴퓨터 장치의 공유 GPU 간을 상호 연결하여 개인 컴퓨터 장치의 유휴 GPU 자원을 분산 학습을 위해 이용하는 개인 GPU 자원 공유 단계를 더 포함할 수 있다.
또한, 상기 GPU 자동 할당 단계는, 상기 분산 학습 요청 단계를 통한 딥러닝 학습요청 시 수신되는 GPU의 사용개수정보를 기초로 각 GPU 노드 별로 가용자원 파악 시 유휴 GPU의 개수가 GPU의 사용개수 미만일 경우, 상기 개인 GPU 자원 공유 단계를 통해 상기 개인 컴퓨터 장치에 각각 직접 접근하여 노드를 선정하고, 분산학습에 부족한 개수만큼의 공유 GPU를 추가 배정할 수 있다.
본 발명에 따르면, 딥러닝 소스 코드를 다수의 GPU를 이용하여 분산 학습하고자 하는 경우 소스코드와 함께 학습에 사용할 GPU 수만을 지정하면 각 노드 별 GPU 분배 작업을 자동 처리함으로써 학습 결과물을 보다 빨리 도출하며, 유휴 GPU 자원을 최소한으로 하여 자원의 효율성을 극대화할 수 있는 멀티 노드와 멀티 GPU를 이용한 분산 학습 시스템 및 방법을 제공할 수 있다.
도 1은 본 발명의 일 실시예에 따른 멀티 노드와 멀티 GPU를 이용한 분산 학습 시스템의 전체 구성을 나타낸 개요도이다.
도 2는 본 발명의 일 실시예에 따른 멀티 노드와 멀티 GPU를 이용한 분산 학습 시스템의 전체 구성을 나타낸 블록도이다.
도 3은 본 발명의 일 실시예에 따른 GPU 자동 할당부의 구성을 나타낸 블록도이다.
도 4는 본 발명의 일 실시예에 따른 사용자의 학습요청에 따른 분산 학습 시스템의 동작 시나리오를 설명하기 위해 나타낸 흐름도이다.
도 5는 본 발명의 일 실시예에 따른 멀티 노드와 멀티 GPU를 이용한 분산 학습 시스템의 전체적인 동작 플로우를 나타낸 흐름도이다.
도 6은 본 발명의 일 실시예에 따른 멀티 노드와 멀티 GPU를 이용한 분산 학습 시스템의 컨테이너에 대한 개념을 설명하기 위해 나타낸 도면이다.
도 7은 본 발명의 일 실시예에 따른 메모리 단위의 GPU 분배 컨테이너에 대한 개념을 설명하기 위해 나타낸 도면이다.
도 8은 본 발명의 일 실시예에 따라 개인 컴퓨터 장치로의 원격 접속을 통한 GPU의 임대 및 공유 구성이 추가된 멀티 노드와 멀티 GPU를 이용한 분산 학습 시스템의 개요도이다.
도 9는 도 8에 도시된 멀티 노드와 멀티 GPU를 이용한 분산 학습 시스템의 전체 구성을 나타낸 블록도이다.
도 10은 본 발명의 다른 실시예에 따른 멀티 노드와 멀티 GPU를 이용한 분산 학습 방법에 대한 구성을 나타낸 흐름도이다.
도 11은 도 10에 도시된 GPU 자동 할당 단계의 구성을 나타낸 흐름도이다.
본 명세서에서 사용되는 용어에 대해 간략히 설명하고, 본 발명에 대해 구체적으로 설명하기로 한다.
본 발명에서 사용되는 용어는 본 발명에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 발명의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 발명에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 발명의 전반에 걸친 내용을 토대로 정의되어야 한다.
명세서 전체에서 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다. 또한, 명세서에 기재된 "...부", "모듈" 등의 용어는 적어도 하나 이상의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다.
아래에서는 첨부한 도면을 참고하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
도 1은 본 발명의 일 실시예에 따른 멀티 노드와 멀티 GPU를 이용한 분산 학습 시스템의 전체 구성을 나타낸 개요도이고, 도 2는 본 발명의 일 실시예에 따른 멀티 노드와 멀티 GPU를 이용한 분산 학습 시스템의 전체 구성을 나타낸 블록도이고, 도 3은 본 발명의 일 실시예에 따른 GPU 자동 할당부의 구성을 나타낸 블록도이고, 도 4는 본 발명의 일 실시예에 따른 사용자의 학습요청에 따른 분산 학습 시스템의 동작 시나리오를 설명하기 위해 나타낸 흐름도이고, 도 5는 본 발명의 일 실시예에 따른 멀티 노드와 멀티 GPU를 이용한 분산 학습 시스템의 전체적인 동작 플로우를 나타낸 흐름도이고, 도 6은 본 발명의 일 실시예에 따른 멀티 노드와 멀티 GPU를 이용한 분산 학습 시스템의 컨테이너에 대한 개념을 설명하기 위해 나타낸 도면이며, 도 7은 본 발명의 일 실시예에 따른 메모리 단위의 GPU 분배 컨테이너에 대한 개념을 설명하기 위해 나타낸 도면이다.
도 1 및 도 2를 참조하면, 본 발명의 실시예에 따른 멀티 노드와 멀티 GPU를 이용한 분산 학습 시스템(1000)은 딥러닝 어플리케이션 툴셋부(100), GPU 자동 할당부(200) 및 딥러닝 분산학습 수행부(300)를 포함한다.
상기 딥러닝 어플리케이션 툴셋부(100)는, 개인 컴퓨터 장치 또는 통신 단말에 설치되고, 사용자로부터 딥러닝 소스코드를 입력 받고, 딥러닝 분산학습에 이용될 GPU의 개수 즉 몇 개의 GPU를 사용할 것인지를 지정 받아 온 프레미스(on premise) 또는 클라우드(cloud) 환경에서 딥러닝 분산학습이 수행될 수 있도록 작업 서버에 분산학습을 요청할 수 있다.
이러한 딥러닝 어플리케이션 툴셋부(100)는 딥러닝 프레임 워크 환경, 소스코드, 입력/출력의 구성요소를 구비할 수 있다. 여기서, 딥러닝 프레임 워크 환경은 사용하고 있는 딥러닝 프레임워크의 한 종류로서 사용하고 있는 딥러닝 프레임워크의 도커(Docker) 이미지를 의미한다. 예를 들어, Caffe를 사용하는 경우 Caffe가 설치된 도커 이미지를 선택한다는 것이다. 소스코드는 사용자가 작성한 소스코드로 딥러닝 훈련이나 추론을 수행하는 어플리케이션 코드를 의미한다. 입력은 딥러닝 훈련이나 추론 작업을 실행하기 위한 입력 데이터를 의미한다. 출력은 소스코드를 실행해서 나온 결과물로서, 훈련작업을 실행하는 경우 학습된 모델을 의미할 수 있으며, 추론 작업을 실행한 경우 추론된 결과를 의미할 수 있다.
상기 GPU 자동 할당부(200)는, 딥러닝 어플리케이션 툴셋부(100)로부터 딥러닝 소스코드와 GPU의 사용개수정보를 각각 수신하고, GPU 노드 별 GPU 가용자원에 따라 상기 GPU의 사용개수만큼의 유휴 GPU를 노드에 할당하고, GPU가 각각 할당되는 컨테이너를 각각 생성할 수 있다. 이를 위해 GPU 자동 할당부(200)는 도 2에 도시된 바와 같이 GPU 노드 선정부(210)와 컨테이너 생성부(220)를 포함할 수 있다.
상기 GPU 노드 선정부(210)는, 딥러닝 어플리케이션 툴셋부(100)의 딥러닝 학습요청 시 수신되는 GPU의 사용개수정보 즉, 딥러닝 소스코드로 분산학습을 위해 몇 개의 GPU를 사용할지에 대한 정보를 기초로 각 GPU 노드 별로 가용자원을 파악하여 GPU의 사용개수만큼의 유휴 GPU를 분할 배정할 적어도 하나의 노드를 선정할 수 있다.
딥러닝(Deep Learning)은 일반적으로 행렬 곱과 같은 벡터 연산으로 이루어진 복수의 레이어(Layer)로 이루어져 있다. 여기서, 복수의 레이어 각각은 사용하는 연산, 파라미터 등에 따라 연산량 및 연산 시 필요한 필요 메모리 크기가 제각각 이다. 따라서, 단순히 전체 레이어의 수(즉, 복수의 레이어의 개수)를 GPU의 수(즉, 멀티 GPU의 개수)만큼 나누어서 딥러닝 모델에 대한 작업을 멀티 GPU에 할당하는 경우, 특정 GPU에 부하를 주거나 또는 연산량이 적을 경우 해당 GPU의 연산 자원을 최대로 활용하기 어려운 문제가 있다. 그러므로, 멀티 GPU 기반의 효율적인 딥러닝 모델의 병렬화를 위해서는 딥러닝 모델에 대한 작업을 GPU 별로 적절하게 분배해야 할 필요가 있다.
상기 컨테이너 생성부(220)는, GPU 노드 선정부(210)를 통해 선정된 노드에 유휴 GPU가 할당되는 컨테이너를 마스터 컨테이너(master container)와 슬레이브 컨테이너(slave container)로 구분하여 생성할 수 있다.
이러한 GPU 자동 할당부(200)에 대한 동작 시나리오를 딥러닝 어플리케이션 툴셋부(100) 및 딥러닝 분산학습 수행부(300)의 간단한 동작 설명과 함께 설명하면, 도 4에 도시된 바와 같이, 사용자가 딥러닝 어플리케이션 툴셋부(100)를 통해 GPU를 6개 사용하는 딥러닝 분산학습을 요청하는 경우(S10), GPU 자동 할당부(200)는 GPU 가용자원에 따라 노드를 선정하여 각각의 컨테이너를 생성하는 과정(S20)을 수행하는데, 좀 더 구체적으로 우선 GPU 노드 별로 유휴 GPU가 있는지, 얼마나 있는지 등에 대한 GPU 가용자원을 파악한 후에, 유휴 GPU가 있는 것으로 파악되면, 해당 GPU에 분할 배정할 노드를 선정하는데 예를 들어 노드 1과 노드 2가 선정될 수 있다(S21). 이와 같이 선정된 2개의 노드(노드 1, 노드 2)에 GPU 개수를 할당할 수 있는데, 예를 들어 노드 1에 4개의 GPU를 할당하고, 노드 2에 2개의 GPU를 할당하여 사용자가 요청한 GPU 개수만큼의 유휴 GPU를 자동으로 배정할 수 있으며, 노드 별로 GPU가 할당되는 컨테이너를 생성(S22)하는데, 이때 컨테이너는 딥러닝 분산학습을 위한 마스터 컨테이너와 슬레이브 컨테이너로 구분하여 생성될 수 있다. 이와 같이 생성된 마스터와 슬레이브 컨테이너를 이용하여 딥러닝 분산학습 수행부(300)는 사용자가 제공한 딥러닝 소스코드에 기초한 분산학습을 수행할 수 있다.
상기의 내용에 대한 플로우를 도 5를 참조하여 정리하면, 우선 사용자의 소스코드와 GPU 개수정보와 함께 분산학습 요청이 들어오면, 스케쥴 대상을 조회할 수 있다(S10). 즉, 사용자가 요청한 학습이 어떠한 학습이고, 어떠한 GPU 자원을 이용하는지에 대하여 파악한 후, 해당 스케쥴 대상에서 가용 GPU가 존재하는지 여부를 확인한다(S20). 존재하지 않을 경우 유휴 GPU가 확인될 때까지 반복해서 확인 작업을 수행한다. 유휴 GPU가 존재할 경우 해당 GPU에 멀티 GPU 실행이 요청되었는지 여부를 확인(S30)한 후, 실행 요청이 있는 경우 n개의 슬레이브 컨테이너를 먼저 생성(S40)한 후에 GPU 슬레이브 컨테이너들의 생성이 모두 완료되었는지 여부를 확인한 후(S50), 모든 GPU 슬레이브 컨테이너들이 생성되면 슬레이브 정보와 함께 멀티 GPU JOB을 실행(S60)하고, 상기한 멀티 GPU 실행 요청 여부 과정(S30)에서 요청 여부가 없는 경우 단일 GPU JOB을 실행한다(S70).
상기 컨테이너 생성부(220)는, 마스터 컨테이너보다 슬레이브 컨테이너를 먼저 생성하고, 마스터 컨테이너의 분산학습 프레임워크 명령어를 수행하기 위한 데몬을 실행한 후, 분산학습 프레임워크 명령어를 통한 분산학습 실행 이전까지 대기할 수 있다.
예를 들어, 도 6에 도시된 바와 같이 7개의 GPU를 이용하는 분산학습 요청이 들어오면, GPU 가용자원을 확인한 후 적절한 GPU 수를 노드 별로 배치하여 슬레이브 워커를 생성한 후에 마스터 워커에서 슬레이브 워커의 네트워크 정보를 이용해 Horovod 명령을 실행한다. 좀 더 구체적으로는, 유휴 GPU가 노드 별로 배정된 후 슬레이브 컨테이너가 마스터 컨테이너보다 우선적으로 먼저 생성되며, 마스터의 Horovodrun 명령어를 수행해 ssh 데몬을 실행한 후에 대기하고, 마스터 컨테이너에서는 슬레이브 워커가 모두 생성된 후에 해당 슬레이브 정보와 함께 Horovodrun 명령어를 통해 분산학습을 수행할 수 있다.
상기 딥러닝 분산학습 수행부(300)는, GPU 자동 할당부(200)를 통해 생성된 마스터 컨테이너와 슬레이브 컨테이너를 이용하여 딥러닝 소스코드의 분산학습을 수행할 수 있다.
상기 딥러닝 분산학습 수행부(300)는 분산 처리 기술과 클라우드 서비스(또는 온-프레미스 서비스)를 이용하여 데이터를 여러 서버에 나누어 병렬로 처리할 수 있다. 이때 클러스터링이 필요한데, 이는 여러 개의 서버를 결합하여 대량의 데이터를 분산 처리하는 기술로, 데이터 처리 중 몇 개의 서버에서 장애가 발생하더라도 다른 서버에 자동으로 작업을 할당하여 계속 이어나갈 수 있다.
상기 딥러닝 분산학습 수행부(300)는 분산처리 시 슬레이브가 죽어도 마스터에 영향을 끼치지 않고 동적으로 임의의 백엔드 서버를 추가할 수 있고 장애복구 후 다른 백엔드 서버로 다시 트레이닝을 시작할 수 있게 하는 고장 감내형 특성을 갖는다. 또한, 딥러닝 계산 가속장치를 사용하기 위해 OpenCL, CUDA, NumPy도 지원하는 등 다양한 오픈 소스들을 활용하여 개발된 플랫폼으로서 python, C/C++, Javascript, JAVA 등 다양한 언어의 소스로 구성될 수 있다.
도 8은 본 발명의 실시예에 따라 개인 컴퓨터 장치로의 원격 접속을 통한 GPU의 임대 및 공유 구성이 추가된 멀티 노드와 멀티 GPU를 이용한 분산 학습 시스템의 개요도이고, 도 9는 도 8에 도시된 멀티 노드와 멀티 GPU를 이용한 분산 학습 시스템의 전체 구성을 나타낸 블록도이다.
도 8을 참조하면, 멀티 노드와 멀티 GPU를 이용한 분산 학습 시스템(1000)은 통신부(400)를 더 포함하여 구성될 수 있다.
상기 통신부(400)는, RDMA(Remote Direct Memory Access) 지원 네트워크를 통해 상기 GPU 자동 할당부와 기 등록된 적어도 하나의 개인 컴퓨터 장치의 공유 GPU 간을 상호 연결하여 개인 컴퓨터 장치의 유휴 GPU 자원을 분산 학습을 위해 이용할 수 있다.
이러한 통신부(400)는 GPU 자동 할당부(200)와 연동하는데, 이때 GPU 자동 할당부(200)는 딥러닝 어플리케이션 툴셋부(100)의 딥러닝 학습요청 시 수신되는 GPU의 사용개수정보를 기초로 각 GPU 노드 별로 가용자원 파악 시 유휴 GPU의 개수가 GPU의 사용개수 미만일 경우, 통신부(400)를 통해 지원되는 RDMA 네트워크를 통하여 기 등록되어 있는 다수의 개인 컴퓨터 장치(10)에 각각 직접 접근하여 GPU 노드를 선정하고, 분산학습에 부족한 개수만큼의 공유 GPU를 추가 배정하여 작업 서버에 할당된 GPU와 동일하게 분산학습을 수행하는데 이용할 수 있다. 개인 컴퓨터 장치(10)에 마련된 공유 GPU는 작업 서버에서 사용하는 임대 개념의 가용자원으로서 작업서버가 필요 시 원격에서 이용할 수 있는 권한을 갖는다.
다수의 개인 컴퓨터 장치(10)는 작업 서버에서 이용될 별도의 기준에 따른 우선 순위가 설정될 수 있으나, 개인 컴퓨터 장치(10) 측에서 가용자원에 대한 정보를 작업 서버로 실시간 제공하고, 제공 받은 가용자원에 대한 정보를 기반으로 선정하는 방식을 취할 수 있다. 예를 들어, 원격의 개인 컴퓨터 장치(10) A, B, C, D, E가 있다고 가정하고, A는 10의 가용자원에 대한 정보를 제공하고 있고, A는 20의 가용자원에 대한 정보를 제공하고 있고, B는 50의 가용자원에 대한 정보를 제공하고 있고, C는 100의 가용자원에 대한 정보를 제공하고 있고, D는 200의 가용자원에 대한 정보를 제공하고 있다고 가정할 경우, 가용자원이 가장 큰 D를 선정하고, D와 RDMA 네트워크를 통하여 연결되어 D에 구비된 멀티 GPU를 분산학습에 이용할 수 있다.
작업 서버의 GPU 공유에 따른 비용은 분산학습을 위한 처리량 또는 GPU 사용개수에 따라 정기적으로 책정되어 개인 컴퓨터 장치(10)를 대상으로 지급될 수 있으나, 이를 한정하는 것은 아니며 해당 개인 컴퓨터 장치(10)가 분산학습 요청자가 될 때 비용적인 측면에서 다양한 혜택 또는 보상을 제공할 수도 있다.
도 10은 본 발명의 다른 실시예에 따른 멀티 노드와 멀티 GPU를 이용한 분산 학습 방법에 대한 구성을 나타낸 흐름도이고, 도 11은 도 10에 도시된 GPU 자동 할당 단계의 구성을 나타낸 흐름도이다.
도 10을 참조하면, 본 발명의 실시예에 따른 멀티 노드와 멀티 GPU를 이용한 분산 학습 방법(S1000)은 분산 학습 요청 단계(S100), GPU 자동 할당 단계(S200) 및 딥러닝 분산학습 수행 단계(S300)를 포함한다.
상기 분산 학습 요청 단계(S100)는, 개인 컴퓨터 장치 또는 통신 단말에 설치되고, 사용자로부터 딥러닝 소스코드를 입력 받고, 딥러닝 분산학습에 이용될 GPU의 개수 즉 몇 개의 GPU를 사용할 것인지를 지정 받아 온 프레미스(on premise) 또는 클라우드(cloud) 환경에서 딥러닝 분산학습이 수행될 수 있도록 작업 서버에 분산학습을 요청할 수 있다.
이러한 분산 학습 요청 단계(S100)는 딥러닝 프레임 워크 환경, 소스코드, 입력/출력의 구성요소를 구비할 수 있다. 여기서, 딥러닝 프레임 워크 환경은 사용하고 있는 딥러닝 프레임워크의 한 종류로서 사용하고 있는 딥러닝 프레임워크의 도커(Docker) 이미지를 의미한다. 예를 들어, Caffe를 사용하는 경우 Caffe가 설치된 도커 이미지를 선택한다는 것이다. 소스코드는 사용자가 작성한 소스코드로 딥러닝 훈련이나 추론을 수행하는 어플리케이션 코드를 의미한다. 입력은 딥러닝 훈련이나 추론 작업을 실행하기 위한 입력 데이터를 의미한다. 출력은 소스코드를 실행해서 나온 결과물로서, 훈련작업을 실행하는 경우 학습된 모델을 의미할 수 있으며, 추론 작업을 실행한 경우 추론된 결과를 의미할 수 있다.
상기 GPU 자동 할당 단계(S200)는, 분산 학습 요청 단계(S100)로부터 딥러닝 소스코드와 GPU의 사용개수정보를 각각 수신하고, GPU 노드 별 GPU 가용자원에 따라 상기 GPU의 사용개수만큼의 유휴 GPU를 노드에 할당하고, GPU가 각각 할당되는 컨테이너를 각각 생성할 수 있다. 이를 위해 GPU 자동 할당 단계(S200)는 도 11에 도시된 바와 같이 GPU 노드 선정 단계(S210)와 컨테이너 생성 단계(S220)을 포함할 수 있다.
상기 GPU 노드 선정 단계(S210)는, 딥러닝 어플리케이션 툴셋부(100)의 딥러닝 학습요청 시 수신되는 GPU의 사용개수정보 즉, 딥러닝 소스코드로 분산학습을 위해 몇 개의 GPU를 사용할지에 대한 정보를 기초로 각 GPU 노드 별로 가용자원을 파악하여 GPU의 사용개수만큼의 유휴 GPU를 분할 배정할 적어도 하나의 노드를 선정할 수 있다.
딥러닝(Deep Learning)은 일반적으로 행렬 곱과 같은 벡터 연산으로 이루어진 복수의 레이어(Layer)로 이루어져 있다. 여기서, 복수의 레이어 각각은 사용하는 연산, 파라미터 등에 따라 연산량 및 연산 시 필요한 필요 메모리 크기가 제각각 이다. 따라서, 단순히 전체 레이어의 수(즉, 복수의 레이어의 개수)를 GPU의 수(즉, 멀티 GPU의 개수)만큼 나누어서 딥러닝 모델에 대한 작업을 멀티 GPU에 할당하는 경우, 특정 GPU에 부하를 주거나 또는 연산량이 적을 경우 해당 GPU의 연산 자원을 최대로 활용하기 어려운 문제가 있다. 그러므로, 멀티 GPU 기반의 효율적인 딥러닝 모델의 병렬화를 위해서는 딥러닝 모델에 대한 작업을 GPU 별로 적절하게 분배해야 할 필요가 있다.
상기 컨테이너 생성 단계(S220)는, GPU 노드 선정 단계(S210)를 통해 선정된 노드에 유휴 GPU가 할당되는 컨테이너를 마스터 컨테이너(master container)와 슬레이브 컨테이너(slave container)로 구분하여 생성할 수 있다.
이러한 GPU 자동 할당 단계(S200)에 대한 동작 시나리오를 분산 학습 요청 단계(S100) 및 딥러닝 분산학습 수행 단계(S300)의 간단한 동작 설명과 함께 설명하면, 도 4에 도시된 바와 같이, 사용자가 분산 학습 요청 단계(S100)를 통해 GPU를 6개 사용하는 딥러닝 분산학습을 요청하는 경우(S10), GPU 자동 할당 단계(S200)는 GPU 가용자원에 따라 노드를 선정하여 각각의 컨테이너를 생성하는 과정(S20)을 수행하는데, 좀 더 구체적으로 우선 GPU 노드 별로 유휴 GPU가 있는지, 얼마나 있는지 등에 대한 GPU 가용자원을 파악한 후에, 유휴 GPU가 있는 것으로 파악되면, 해당 GPU에 분할 배정할 노드를 선정하는데 예를 들어 노드 1과 노드 2가 선정될 수 있다(S21). 이와 같이 선정된 2개의 노드(노드 1, 노드 2)에 GPU 개수를 할당할 수 있는데, 예를 들어 노드 1에 4개의 GPU를 할당하고, 노드 2에 2개의 GPU를 할당하여 사용자가 요청한 GPU 개수만큼의 유휴 GPU를 자동으로 배정할 수 있으며, 노드 별로 GPU가 할당되는 컨테이너를 생성(S22)하는데, 이때 컨테이너는 딥러닝 분산학습을 위한 마스터 컨테이너와 슬레이브 컨테이너로 구분하여 생성될 수 있다. 이와 같이 생성된 마스터와 슬레이브 컨테이너를 이용하여 딥러닝 분산학습 수행 단계(S300)에서는 사용자가 제공한 딥러닝 소스코드에 기초한 분산학습을 수행할 수 있다.
상기의 내용에 대한 플로우를 도 5를 참조하여 정리하면, 우선 사용자의 소스코드와 GPU 개수정보와 함께 분산학습 요청이 들어오면, 스케쥴 대상을 조회할 수 있다(S10). 즉, 사용자가 요청한 학습이 어떠한 학습이고, 어떠한 GPU 자원을 이용하는지에 대하여 파악한 후, 해당 스케쥴 대상에서 가용 GPU가 존재하는지 여부를 확인한다(S20). 존재하지 않을 경우 유휴 GPU가 확인될 때까지 반복해서 확인 작업을 수행한다. 유휴 GPU가 존재할 경우 해당 GPU에 멀티 GPU 실행이 요청되었는지 여부를 확인(S30)한 후, 실행 요청이 있는 경우 n개의 슬레이브 컨테이너를 먼저 생성(S40)한 후에 GPU 슬레이브 컨테이너들의 생성이 모두 완료되었는지 여부를 확인한 후(S50), 모든 GPU 슬레이브 컨테이너들이 생성되면 슬레이브 정보와 함께 멀티 GPU JOB을 실행(S60)하고, 상기한 멀티 GPU 실행 요청 여부 과정(S30)에서 요청 여부가 없는 경우 단일 GPU JOB을 실행한다(S70).
상기 컨테이너 생성 단계(S220)는, 마스터 컨테이너보다 슬레이브 컨테이너를 먼저 생성하고, 마스터 컨테이너의 분산학습 프레임워크 명령어를 수행하기 위한 데몬을 실행한 후, 분산학습 프레임워크 명령어를 통한 분산학습 실행 이전까지 대기할 수 있다.
예를 들어, 도 6에 도시된 바와 같이 7개의 GPU를 이용하는 분산학습 요청이 들어오면, GPU 가용자원을 확인한 후 적절한 GPU 수를 노드 별로 배치하여 슬레이브 워커를 생성한 후에 마스터 워커에서 슬레이브 워커의 네트워크 정보를 이용해 Horovod 명령을 실행한다. 좀 더 구체적으로는, 유휴 GPU가 노드 별로 배정된 후 슬레이브 컨테이너가 마스터 컨테이너보다 우선적으로 먼저 생성되며, 마스터의 Horovodrun 명령어를 수행해 ssh 데몬을 실행한 후에 대기하고, 마스터 컨테이너에서는 슬레이브 워커가 모두 생성된 후에 해당 슬레이브 정보와 함께 Horovodrun 명령어를 통해 분산학습을 수행할 수 있다.
상기 딥러닝 분산학습 수행 단계(S300)는, GPU 자동 할당 단계(S200)를 통해 생성된 마스터 컨테이너와 슬레이브 컨테이너를 이용하여 딥러닝 소스코드의 분산학습을 수행할 수 있다.
상기 딥러닝 분산학습 수행 단계(S300)는 분산 처리 기술과 클라우드 서비스(또는 온-프레미스 서비스)를 이용하여 데이터를 여러 서버에 나누어 병렬로 처리할 수 있다. 이때 클러스터링이 필요한데, 이는 여러 개의 서버를 결합하여 대량의 데이터를 분산 처리하는 기술로, 데이터 처리 중 몇 개의 서버에서 장애가 발생하더라도 다른 서버에 자동으로 작업을 할당하여 계속 이어나갈 수 있다.
상기 딥러닝 분산학습 수행 단계(S300)는 분산처리 시 슬레이브가 죽어도 마스터에 영향을 끼치지 않고 동적으로 임의의 백엔드 서버를 추가할 수 있고 장애복구 후 다른 백엔드 서버로 다시 트레이닝을 시작할 수 있게 하는 고장 감내형 특성을 갖는다. 또한, 딥러닝 계산 가속장치를 사용하기 위해 OpenCL, CUDA, NumPy도 지원하는 등 다양한 오픈 소스들을 활용하여 개발된 플랫폼으로서 python, C/C++, Javascript, JAVA 등 다양한 언어의 소스로 구성될 수 있다.
도 8은 본 발명의 실시예에 따라 개인 컴퓨터 장치로의 원격 접속을 통한 GPU의 임대 및 공유 구성이 추가된 멀티 노드와 멀티 GPU를 이용한 분산 학습 시스템의 개요도이고, 도 9는 도 8에 도시된 멀티 노드와 멀티 GPU를 이용한 분산 학습 시스템의 전체 구성을 나타낸 블록도이다.
도 8을 참조하면, 멀티 노드와 멀티 GPU를 이용한 분산 학습 방법(S1000)은 개인 GPU 자원 공유 단계(S400)를 더 포함하여 구성될 수 있다.
상기 개인 GPU 자원 공유 단계(S400)는, RDMA(Remote Direct Memory Access) 지원 네트워크를 통해 상기 GPU 자동 할당부와 기 등록된 적어도 하나의 개인 컴퓨터 장치의 공유 GPU 간을 상호 연결하여 개인 컴퓨터 장치의 유휴 GPU 자원을 분산 학습을 위해 이용할 수 있다.
이러한 개인 GPU 자원 공유 단계(S400)는 GPU 자동 할당 단계(S200)와 연동하는데, 이때 GPU 자동 할당 단계(S200)는 딥러닝 어플리케이션 툴셋부(100)의 딥러닝 학습요청 시 수신되는 GPU의 사용개수정보를 기초로 각 GPU 노드 별로 가용자원 파악 시 유휴 GPU의 개수가 GPU의 사용개수 미만일 경우, 개인 GPU 자원 공유 단계(S400)를 통해 지원되는 RDMA 네트워크를 통하여 기 등록되어 있는 다수의 개인 컴퓨터 장치(10)에 각각 직접 접근하여 GPU 노드를 선정하고, 분산학습에 부족한 개수만큼의 공유 GPU를 추가 배정하여 작업 서버에 할당된 GPU와 동일하게 분산학습을 수행하는데 이용할 수 있다. 개인 컴퓨터 장치(10)에 마련된 공유 GPU는 작업 서버에서 사용하는 임대 개념의 가용자원으로서 작업서버가 필요 시 원격에서 이용할 수 있는 권한을 갖는다.
다수의 개인 컴퓨터 장치(10)는 작업 서버에서 이용될 별도의 기준에 따른 우선 순위가 설정될 수 있으나, 개인 컴퓨터 장치(10) 측에서 가용자원에 대한 정보를 작업 서버로 실시간 제공하고, 제공 받은 가용자원에 대한 정보를 기반으로 선정하는 방식을 취할 수 있다. 예를 들어, 원격의 개인 컴퓨터 장치(10) A, B, C, D, E가 있다고 가정하고, A는 10의 가용자원에 대한 정보를 제공하고 있고, A는 20의 가용자원에 대한 정보를 제공하고 있고, B는 50의 가용자원에 대한 정보를 제공하고 있고, C는 100의 가용자원에 대한 정보를 제공하고 있고, D는 200의 가용자원에 대한 정보를 제공하고 있다고 가정할 경우, 가용자원이 가장 큰 D를 선정하고, D와 RDMA 네트워크를 통하여 연결되어 D에 구비된 멀티 GPU를 분산학습에 이용할 수 있다.
작업 서버의 GPU 공유에 따른 비용은 분산학습을 위한 처리량 또는 GPU 사용개수에 따라 정기적으로 책정되어 개인 컴퓨터 장치(10)를 대상으로 지급될 수 있으나, 이를 한정하는 것은 아니며 해당 개인 컴퓨터 장치(10)가 분산학습 요청자가 될 때 비용적인 측면에서 다양한 혜택 또는 보상을 제공할 수도 있다.
본 실시예에 따르면, 딥러닝 분산학습을 요청하는 사용자는 자신의 딥러닝 소스코드를 많은 수의 GPU를 사용하고자 할 때 별다른 설정 없이 해당 소스코드와 함께 학습에 사용할 GPU 수만 설정해주면 딥러닝 분산학습을 자동으로 처리해주어 빠른 결과물을 도출해낼 수 있으며, 노드 별 GPU 분배 작업을 통해 유휴 GPU 자원을 최소한으로 하여 최대한의 효율을 이끌어낼 수 있다
이상에서 설명한 것은 본 발명에 의한 멀티 노드와 멀티 GPU를 이용한 분산 학습 시스템 및 방법을 실시하기 위한 하나의 실시예에 불과한 것으로서, 본 발명은 상기 실시예에 한정되지 않고, 이하의 특허청구범위에서 청구하는 바와 같이 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 분야에서 통상의 지식을 가진 자라면 누구든지 다양한 변경 실시가 가능한 범위까지 본 발명의 기술적 정신이 있다고 할 것이다.
1000: 멀티 노드와 멀티 GPU를 이용한 분산 학습 시스템
100: 딥러닝 어플리케이션 툴셋부
200: GPU 자동 할당부
210: GPU 노드 선정부
220: 컨테이너 생성부
300: 딥러닝 분산학습 수행부
400: 통신부
S1000: 멀티 노드와 멀티 GPU를 이용한 분산 학습 시스템
S100: 분산 학습 요청 단계
S200: GPU 자동 할당 단계
S210: GPU 노드 선정 단계
S220: 컨테이너 생성 단계
S300: 딥러닝 분산학습 수행 단계
S400: 개인 GPU 자원 공유 단계

Claims (8)

  1. 사용자로부터 딥러닝 소스코드를 입력 받고, 분산학습에 이용될 GPU의 개수를 지정 받아 딥러닝 학습을 요청하는 딥러닝 어플리케이션 툴셋부;
    상기 딥러닝 어플리케이션 툴셋부로부터 딥러닝 소스코드와 GPU의 사용개수정보를 각각 수신하고, GPU 노드 별 GPU 가용자원에 따라 상기 GPU의 사용개수만큼의 유휴 GPU를 노드에 할당하고, GPU가 각각 할당되는 컨테이너를 생성하는 GPU 자동 할당부; 및
    RDMA(Remote Direct Memory Access) 지원 네트워크를 통해 상기 GPU 자동 할당부와 기 등록된 적어도 하나의 개인 컴퓨터 장치의 공유 GPU 간을 상호 연결하여 개인 컴퓨터 장치의 유휴 GPU 자원을 분산 학습을 위해 이용하기 위한 통신부를 포함하고,
    상기 GPU 자동 할당부는,
    상기 딥러닝 어플리케이션 툴셋부의 딥러닝 학습요청 시 수신되는 GPU의 사용개수정보를 기초로 각 GPU 노드 별로 가용자원 파악 시 유휴 GPU의 개수가 GPU의 사용개수 미만일 경우, 상기 통신부를 통해 상기 개인 컴퓨터 장치에 각각 직접 접근하여 노드를 선정하고, 분산학습에 부족한 개수만큼의 공유 GPU를 추가 배정하는 것을 특징으로 하는 멀티 노드와 멀티 GPU를 이용한 분산 학습 시스템.
  2. 제1 항에 있어서,
    상기 GPU 자동 할당부를 통해 생성된 마스터 컨테이너와 슬레이브 컨테이너를 이용하여 딥러닝 소스코드의 분산학습을 수행하는 딥러닝 분산학습 수행부를 더 포함하는 것을 특징으로 하는 멀티 노드와 멀티 GPU를 이용한 분산 학습 시스템.
  3. 제1 항에 있어서,
    상기 GPU 자동 할당부는,
    상기 딥러닝 어플리케이션 툴셋부의 딥러닝 학습요청 시 수신되는 GPU의 사용개수정보를 기초로 각 GPU 노드 별로 가용자원을 파악하여 GPU의 사용개수만큼의 유휴 GPU를 분할 배정할 적어도 하나의 노드를 선정하는 GPU 노드 선정부; 및
    상기 GPU 노드 선정부를 통해 선정된 노드에 유휴 GPU가 할당되는 컨테이너를 마스터 컨테이너와 슬레이브 컨테이너로 구분하여 생성하는 컨테이너 생성부를 포함하는 것을 특징으로 하는 멀티 노드와 멀티 GPU를 이용한 분산 학습 시스템.
  4. 제3 항에 있어서,
    상기 컨테이너 생성부는,
    마스터 컨테이너보다 슬레이브 컨테이너를 먼저 생성하고, 마스터 컨테이너의 분산학습 프레임워크 명령어를 수행하기 위한 데몬을 실행한 후, 분산학습 프레임워크 명령어를 통한 분산학습 실행 이전까지 대기하는 것을 특징으로 하는 멀티 노드와 멀티 GPU를 이용한 분산 학습 시스템.
  5. 딥러닝 어플리케이션 툴셋부를 이용하여 사용자로부터 딥러닝 소스코드를 입력 받고, 분산학습에 이용될 GPU의 개수를 지정 받아 딥러닝 학습을 요청하는 분산 학습 요청 단계;
    GPU 자동 할당부가 상기 딥러닝 어플리케이션 툴셋부로부터 딥러닝 소스코드와 GPU의 사용개수정보를 각각 수신하고, GPU 노드 별 GPU 가용자원에 따라 상기 GPU의 사용개수만큼의 유휴 GPU를 노드에 할당하고, GPU가 각각 할당되는 컨테이너를 생성하는 GPU 자동 할당 단계; 및
    통신부의 RDMA(Remote Direct Memory Access) 지원 네트워크를 통해 상기 GPU 자동 할당부와 기 등록된 적어도 하나의 개인 컴퓨터 장치의 공유 GPU 간을 상호 연결하여 개인 컴퓨터 장치의 유휴 GPU 자원을 분산 학습을 위해 이용하는 개인 GPU 자원 공유 단계를 포함하고,
    상기 GPU 자동 할당 단계는,
    상기 분산 학습 요청 단계를 통한 딥러닝 학습요청 시 수신되는 GPU의 사용개수정보를 기초로 각 GPU 노드 별로 가용자원 파악 시 유휴 GPU의 개수가 GPU의 사용개수 미만일 경우, 상기 개인 GPU 자원 공유 단계를 통해 상기 개인 컴퓨터 장치에 각각 직접 접근하여 노드를 선정하고, 분산학습에 부족한 개수만큼의 공유 GPU를 추가 배정하는 것을 특징으로 하는 멀티 노드와 멀티 GPU를 이용한 분산 학습 방법.
  6. 제5 항에 있어서,
    상기 GPU 자동 할당 단계를 통해 생성된 마스터 컨테이너와 슬레이브 컨테이너를 이용하여 딥러닝 소스코드의 분산학습을 수행하는 딥러닝 분산학습 수행 단계를 더 포함하는 것을 특징으로 하는 멀티 노드와 멀티 GPU를 이용한 분산 학습 방법.
  7. 제5 항에 있어서,
    상기 GPU 자동 할당 단계는,
    GPU 노드 선정부가 상기 분산 학습 요청 단계를 통한 딥러닝 학습요청 시 수신되는 GPU의 사용개수정보를 기초로 각 GPU 노드 별로 가용자원을 파악하여 GPU의 사용개수만큼의 유휴 GPU를 분할 배정할 적어도 하나의 노드를 선정하는 GPU 노드 선정 단계; 및
    컨테이너 생성부가 상기 GPU 노드 선정 단계를 통해 선정된 노드에 유휴 GPU가 할당되는 컨테이너를 마스터 컨테이너와 슬레이브 컨테이너로 구분하여 생성하는 컨테이너 생성 단계를 포함하는 것을 특징으로 하는 멀티 노드와 멀티 GPU를 이용한 분산 학습 방법.
  8. 제7 항에 있어서,
    상기 컨테이너 생성 단계는,
    마스터 컨테이너보다 슬레이브 컨테이너를 먼저 생성하고, 마스터 컨테이너의 분산학습 프레임워크 명령어를 수행하기 위한 데몬을 실행한 후, 분산학습 프레임워크 명령어를 통한 분산학습 실행 이전까지 대기하는 것을 특징으로 하는 멀티 노드와 멀티 GPU를 이용한 분산 학습 방법.
KR1020200072392A 2020-06-15 2020-06-15 멀티 노드와 멀티 gpu를 이용한 분산 학습 시스템 및 방법 KR102163402B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200072392A KR102163402B1 (ko) 2020-06-15 2020-06-15 멀티 노드와 멀티 gpu를 이용한 분산 학습 시스템 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200072392A KR102163402B1 (ko) 2020-06-15 2020-06-15 멀티 노드와 멀티 gpu를 이용한 분산 학습 시스템 및 방법

Publications (1)

Publication Number Publication Date
KR102163402B1 true KR102163402B1 (ko) 2020-10-08

Family

ID=72897246

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200072392A KR102163402B1 (ko) 2020-06-15 2020-06-15 멀티 노드와 멀티 gpu를 이용한 분산 학습 시스템 및 방법

Country Status (1)

Country Link
KR (1) KR102163402B1 (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112860396A (zh) * 2021-01-28 2021-05-28 福建紫辰信息科技有限公司 一种基于分布式深度学习的gpu调度方法及系统
WO2022103181A1 (ko) * 2020-11-12 2022-05-19 삼성전자 주식회사 소프트웨어 패키지에 gpu를 할당하는 방법 및 장치
WO2022108525A1 (zh) * 2020-11-18 2022-05-27 脸萌有限公司 部署联邦学习应用的方法、装置、系统和电子设备
CN114820279A (zh) * 2022-05-18 2022-07-29 北京百度网讯科技有限公司 基于多gpu的分布式深度学习方法、装置及电子设备
KR102642396B1 (ko) * 2023-08-09 2024-02-29 (주)유알피 제한된 gpu리소스를 사용한 딥러닝 추론 모델을 위한 배치 스케줄링 장치

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101585160B1 (ko) * 2015-03-12 2016-01-13 주식회사 모비젠 독립실행환경을 제공하는 분산 컴퓨팅 시스템 및 분산 컴퓨팅 시스템의 제어방법
KR20170074789A (ko) * 2015-12-21 2017-06-30 한국전자통신연구원 컨테이너 기반의 영상 처리 방법
KR20180131836A (ko) * 2017-06-01 2018-12-11 한국전자통신연구원 파라미터 서버 및 그것에 의해 수행되는 분산 딥러닝 파라미터 공유 방법
KR102029711B1 (ko) 2018-05-30 2019-10-08 한국항공대학교산학협력단 멀티 gpu 기반의 딥러닝 모델의 병렬화를 위한 작업 할당 장치 및 방법
KR20190132475A (ko) 2017-04-26 2019-11-27 미디어 그룹 코 엘티디 작업 서버를 사용한 대규모 분산형 시스템의 기계 학습 모델의 훈련

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101585160B1 (ko) * 2015-03-12 2016-01-13 주식회사 모비젠 독립실행환경을 제공하는 분산 컴퓨팅 시스템 및 분산 컴퓨팅 시스템의 제어방법
KR20170074789A (ko) * 2015-12-21 2017-06-30 한국전자통신연구원 컨테이너 기반의 영상 처리 방법
KR20190132475A (ko) 2017-04-26 2019-11-27 미디어 그룹 코 엘티디 작업 서버를 사용한 대규모 분산형 시스템의 기계 학습 모델의 훈련
KR20180131836A (ko) * 2017-06-01 2018-12-11 한국전자통신연구원 파라미터 서버 및 그것에 의해 수행되는 분산 딥러닝 파라미터 공유 방법
KR102029711B1 (ko) 2018-05-30 2019-10-08 한국항공대학교산학협력단 멀티 gpu 기반의 딥러닝 모델의 병렬화를 위한 작업 할당 장치 및 방법

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022103181A1 (ko) * 2020-11-12 2022-05-19 삼성전자 주식회사 소프트웨어 패키지에 gpu를 할당하는 방법 및 장치
WO2022108525A1 (zh) * 2020-11-18 2022-05-27 脸萌有限公司 部署联邦学习应用的方法、装置、系统和电子设备
CN112860396A (zh) * 2021-01-28 2021-05-28 福建紫辰信息科技有限公司 一种基于分布式深度学习的gpu调度方法及系统
CN114820279A (zh) * 2022-05-18 2022-07-29 北京百度网讯科技有限公司 基于多gpu的分布式深度学习方法、装置及电子设备
CN114820279B (zh) * 2022-05-18 2023-03-24 北京百度网讯科技有限公司 基于多gpu的分布式深度学习方法、装置及电子设备
KR102642396B1 (ko) * 2023-08-09 2024-02-29 (주)유알피 제한된 gpu리소스를 사용한 딥러닝 추론 모델을 위한 배치 스케줄링 장치

Similar Documents

Publication Publication Date Title
KR102163402B1 (ko) 멀티 노드와 멀티 gpu를 이용한 분산 학습 시스템 및 방법
CN110688230B (zh) 一种同步训练方法、装置、计算机设备和存储介质
US8041790B2 (en) Dynamic definition for concurrent computing environments
WO2015117565A1 (en) Methods and systems for dynamically allocating resources and tasks among database work agents in smp environment
US9875139B2 (en) Graphics processing unit controller, host system, and methods
US11445004B2 (en) Method for processing shared data, apparatus, and server
CN116401055B (zh) 面向资源效率优化的服务器无感知计算工作流编排方法
CN108170417B (zh) 一种在mesos集群中集成高性能的作业调度框架的方法和装置
CN115543615A (zh) 一种资源分配方法、装置、电子设备及存储介质
Alam et al. Efficient task scheduling on virtual machine in cloud computing environment
US20210232438A1 (en) Serverless lifecycle management dispatcher
US20150212859A1 (en) Graphics processing unit controller, host system, and methods
CN112199184A (zh) 一种跨语言任务调度方法、装置、设备及可读存储介质
US20230037293A1 (en) Systems and methods of hybrid centralized distributive scheduling on shared physical hosts
US20210157642A1 (en) Utilizing machine learning to concurrently optimize computing resources and licenses in a high-performance computing environment
CN110515595B (zh) 一种航空电子分布式管理系统的资源建模及管理方法
Nzanywayingoma et al. Task scheduling and virtual resource optimising in Hadoop YARN-based cloud computing environment
CN113515355A (zh) 资源调度方法、装置、服务器及计算机可读存储介质
Coelho et al. Orchestration of Clusters of IoT Devices with Erlang
US20230050163A1 (en) Apparatuses and methods for scheduling computing resources
US20230214252A1 (en) System and method of path execution optimization
Singh et al. Asynchronous Execution Platform for Edge Node Devices.
Mohamaddiah et al. Job Allocation Using Two-Level Prioritization Stage Directed Acyclic Graph (DAG) Model in Cloud Environment
Blythe et al. Coordinating workflows in shared grid environments
CN113626097A (zh) 一种新型接入多算法的方法及服务器

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant