KR102029711B1 - 멀티 gpu 기반의 딥러닝 모델의 병렬화를 위한 작업 할당 장치 및 방법 - Google Patents

멀티 gpu 기반의 딥러닝 모델의 병렬화를 위한 작업 할당 장치 및 방법 Download PDF

Info

Publication number
KR102029711B1
KR102029711B1 KR1020180061512A KR20180061512A KR102029711B1 KR 102029711 B1 KR102029711 B1 KR 102029711B1 KR 1020180061512 A KR1020180061512 A KR 1020180061512A KR 20180061512 A KR20180061512 A KR 20180061512A KR 102029711 B1 KR102029711 B1 KR 102029711B1
Authority
KR
South Korea
Prior art keywords
gpu
layer
workload
task
deep learning
Prior art date
Application number
KR1020180061512A
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 KR1020180061512A priority Critical patent/KR102029711B1/ko
Application granted granted Critical
Publication of KR102029711B1 publication Critical patent/KR102029711B1/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/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/3855
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

본원은 멀티 GPU 기반의 딥러닝 모델의 병렬화를 위한 작업 할당 방법에 관한 것이며, 작업 할당 방법은 (a) 상기 딥러닝 모델 내 복수의 레이어의 전체 레이어 작업량이 멀티 GPU 각각에 대하여 나뉘어 할당된다고 가정한 GPU 마다의 이상 작업량을 산출하는 단계; 및 (b) 상기 복수의 레이어 각각의 레이어 작업량 및 상기 이상 작업량을 고려하여, 상기 멀티 GPU에 상기 복수의 레이어 각각의 작업을 순차 할당하는 단계를 포함하고, 상기 레이어 작업량은, 레이어의 필요 연산량 및 레이어 연산시의 필요 메모리 크기 중 적어도 하나에 관한 것일 수 있다.

Description

멀티 GPU 기반의 딥러닝 모델의 병렬화를 위한 작업 할당 장치 및 방법 {JOB ASSIGNMENT APPARATUS AND METHOD FOR MULTI-GPU BASED DEEP-RUNNING MODEL PARALLELIZATION}
본원은 멀티 GPU 기반의 딥러닝 모델의 병렬화를 위한 효율적인 작업 할당 장치 및 방법에 관한 것이다. 또한, 본원은 상기의 작업 할당 장치 및 방법에 의해 작업 할당이 완료된 멀티 GPU 기반의 딥러닝 모델의 병렬처리 장치 및 방법에 관한 것이다.
딥러닝(Deep Learning)은 내부적으로 행렬 곱과 같은 병렬수행이 가능한 연산들로 구성되어 있는데, 연산 가속화를 위해 주로 CPU가 아닌 GPU(graphic processing unit)를 활용한다. 그런데, GPU의 경우 사용 가능한 메모리가 제한적이기 때문에, 최근 다양한 분야에서 사용되는 복잡한 딥러닝 학습 모델의 처리시 단일 GPU에서의 연산 자체가 불가능한 경우가 많아 다수의 GPU를 통한 병렬처리 방법이 사용되고 있다.
딥러닝을 병렬화(병렬처리)하는 방법으로는 데이터 병렬화 방법과 모델 병렬화 방법이 있다. 데이터 병렬화 방법은 다수의 GPU에게 각자 다른 학습 데이터를 분배하여 동일한 연산을 수행 후 생성된 학습결과를 합치는 방식으로 동작한다. 모델 병렬화 방법은 여러개의 레이어(Layer)로 구성된 딥러닝 학습 모델에 대하여, GPU별로 각자 다른 레이어에 대한 연산을 수행하게 한다.
그런데, 종래의 모델 병렬화 방법의 경우, 레이어 각각이 파라미터의 크기나 연산의 복잡도에 따라 연산량 및 연산시 필요한 필요 메모리 크기가 제각각이기 때문에, GPU별로 적절하게 작업 분배를 해야할 필요가 있다.
또한, 종래의 모델 병렬화 방법의 경우, 다수의 GPU가 각기 다른 레이어에 대한 연산을 수행함으로 인해 선행되는 연산을 담당하는 GPU의 연산이 끝나기까지 다음 연산을 담당하는 GPU는 계속 기다려야 하고, 매번 데이터를 주고 받아야 함에 따라 입출력(input/output, I/O)이 과도하게 발생하게 되어 전체 성능이 저하되는 문제가 있다.
본원의 배경이 되는 기술은 한국등록특허공보 제10-1844914호에 개시되어 있다.
본원은 전술한 종래 기술의 문제점을 해결하기 위한 것으로서, 딥러닝을 이용한 기계학습 수행시 단일 GPU로 학습이 불가능한 딥러닝 학습 모델을 효율적으로 다수의 GPU에 할당할 수 있는 멀티 GPU 기반의 딥러닝 모델의 병렬화를 위한 효율적인 작업 할당 장치 및 방법을 제공하려는 것을 목적으로 한다.
본원은 전술한 종래 기술의 문제점을 해결하기 위한 것으로서, 종래의 모델 병렬화 방법의 경우, 선행되는 연산을 담당하는 GPU의 연산이 끝나기까지 다음 연산을 담당하는 GPU가 계속 기다려야 하고, 매번 데이터를 주고 받아야 함에 따라 입출력(input/output, I/O)이 과도하게 발생하게 되어 전체 성능이 저하되는 문제를 해소할 수 있는 작업 할당 장치 및 방법에 의해 작업 할당이 완료된 멀티 GPU 기반의 딥러닝 모델의 병렬처리 장치 및 방법을 제공하려는 것을 목적으로 한다.
다만, 본원의 실시예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 또 다른 기술적 과제들이 존재할 수 있다.
상기한 기술적 과제를 달성하기 위한 기술적 수단으로서, 본원의 일 실시예에 따른 멀티 GPU 기반의 딥러닝 모델의 병렬화를 위한 작업 할당 방법은, 딥러닝 모델에 대한 작업 할당 방법에 있어서, (a) 상기 딥러닝 모델 내 복수의 레이어의 전체 레이어 작업량이 멀티 GPU 각각에 대하여 나뉘어 할당된다고 가정한 GPU 마다의 이상 작업량을 산출하는 단계; 및 (b) 상기 복수의 레이어 각각의 레이어 작업량 및 상기 이상 작업량을 고려하여, 상기 멀티 GPU에 상기 복수의 레이어 각각의 작업을 순차 할당하는 단계를 포함하고, 상기 레이어 작업량은, 레이어의 필요 연산량 및 레이어 연산시의 필요 메모리 크기 중 적어도 하나에 관한 것일 수 있다.
또한, 상기 멀티 GPU는 동일한 타입의 GPU이고, 상기 GPU 마다의 이상 작업량은 상기 전체 레이어 작업량이 상기 멀티 GPU 각각에 대하여 동일하게 안분하여 할당된다고 가정한 작업량일 수 있다.
또한, 상기 (b) 단계는, 적어도 하나의 레이어의 작업이 기할당된 n번째 GPU의 기할당 작업량이 상기 n번째 GPU의 이상 작업량을 초과하는지 여부에 기초하여, 상기 n번째 GPU에 작업 미할당된 나머지 레이어 중 i번째 레이어의 작업을 할당할지 여부를 고려할 수 있다.
또한, 상기 (b) 단계는, 상기 n번째 GPU의 기할당 작업량이 상기 이상 작업량을 초과하는 경우, 상기 i번째 레이어의 작업 할당 없이 상기 n번째 GPU에 대한 작업 할당을 완료할 수 있다.
또한, 상기 (b) 단계는, 상기 n번째 GPU의 기할당 작업량이 상기 이상 작업량을 초과하지 않는 경우, 상기 n번째 GPU의 기할당 작업량과 상기 i번째 레이어의 작업량의 합산량이 상기 n번째 GPU에 대하여 상기 이상 작업량을 초과하도록 설정된 초과 허용 작업량을 초과하는지 여부에 기초하여, 상기 n번째 GPU에 상기 i번째 레이어의 작업을 할당할지 여부를 고려할 수 있다.
또한, 상기 (b) 단계는, 상기 합산량이 상기 초과 허용 작업량을 초과하는 경우, 상기 i번째 레이어의 작업 할당 없이 상기 n번째 GPU에 대한 작업 할당을 완료할 수 있다.
또한, 상기 (b) 단계는, 상기 합산량이 상기 초과 허용 작업량을 초과하지 않는 경우, 상기 i번째 레이어의 작업을 상기 n번째 GPU에 대하여 할당할 수 있다.
한편, 본원의 일 실시예에 따른 멀티 GPU 기반의 딥러닝 모델의 병렬처리 방법은, 상기의 작업 할당 방법에 의해, 상기 멀티 GPU에 상기 복수의 레이어 각각의 작업을 할당하는 단계; 및 (b) 작업 할당 완료된 멀티 GPU를 이용하여 입력 데이터에 대한 상기 딥러닝 모델의 병렬처리를 수행하는 단계를 포함하고, 상기 (b) 단계는, 큐(Queue)를 이용한 파이프라이닝(pipelining)을 통해 상기 병렬처리를 수행할 수 있다.
또한, 상기 (b) 단계는, 상기 멀티 GPU 중 n번째 GPU에 입력된 복수의 데이터 중 제1 데이터에 대해 연산이 완료된 제1 연산 결과값을 상기 n번째 GPU의 작업 연산 결과값을 전달받는 (n+1)번째 GPU를 위한 큐에 상기 (n+1)번째 GPU가 푸쉬하도록 하고, 상기 (n+1)번째 GPU가 상기 큐에 있는 상기 제1 연산 결과값을 이용하여 연산하도록 하며, 상기 n번째 GPU가 상기 복수의 데이터 중 제2 데이터에 대해 연산하도록 할 수 있다.
한편, 본원의 일 실시예에 따른 멀티 GPU 기반의 딥러닝 모델의 병렬화를 위한 작업 할당 장치는, 딥러닝 모델에 대한 작업 할당 장치에 있어서, 상기 딥러닝 모델 내 복수의 레이어의 전체 레이어 작업량이 멀티 GPU 각각에 대하여 나뉘어 할당된다고 가정한 GPU 마다의 이상 작업량을 산출하는 산출부; 및 (b) 상기 복수의 레이어 각각의 레이어 작업량 및 상기 이상 작업량을 고려하여, 상기 멀티 GPU에 상기 복수의 레이어 각각의 작업을 순차 할당하는 할당부를 포함하고, 상기 레이어 작업량은, 레이어의 필요 연산량 및 레이어 연산시의 필요 메모리 크기 중 적어도 하나에 관한 것일 수 있다.
또한, 상기 멀티 GPU는 동일한 타입의 GPU이고, 상기 GPU 마다의 이상 작업량은 상기 전체 레이어 작업량이 상기 멀티 GPU 각각에 대하여 동일하게 안분하여 할당된다고 가정한 작업량일 수 있다.
또한, 상기 할당부는, 적어도 하나의 레이어의 작업이 기할당된 n번째 GPU의 기할당 작업량이 상기 n번째 GPU의 이상 작업량을 초과하는지 여부에 기초하여, 상기 n번째 GPU에 작업 미할당된 나머지 레이어 중 i번째 레이어의 작업을 할당할지 여부를 고려할 수 있다.
또한, 상기 할당부는, 상기 n번째 GPU의 기할당 작업량이 상기 이상 작업량을 초과하는 경우, 상기 i번째 레이어의 작업 할당 없이 상기 n번째 GPU에 대한 작업 할당을 완료할 수 있다.
또한, 상기 할당부는, 상기 n번째 GPU의 기할당 작업량이 상기 이상 작업량을 초과하지 않는 경우, 상기 n번째 GPU의 기할당 작업량과 상기 i번째 레이어의 작업량의 합산량이 상기 n번째 GPU에 대하여 상기 이상 작업량을 초과하도록 설정된 초과 허용 작업량을 초과하는지 여부에 기초하여, 상기 n번째 GPU에 상기 i번째 레이어의 작업을 할당할지 여부를 고려할 수 있다.
또한, 상기 할당부는, 상기 합산량이 상기 초과 허용 작업량을 초과하는 경우, 상기 i번째 레이어의 작업 할당 없이 상기 n번째 GPU에 대한 작업 할당을 완료할 수 있다.
또한, 상기 할당부는, 상기 합산량이 상기 초과 허용 작업량을 초과하지 않는 경우, 상기 i번째 레이어의 작업을 상기 n번째 GPU에 대하여 할당할 수 있다.
한편, 본원의 일 실시예에 따른 멀티 GPU 기반의 딥러닝 모델의 병렬처리 장치는, 상기의 작업 할당 장치에 의해, 상기 멀티 GPU에 상기 복수의 레이어 각각의 작업을 할당하는 할당부; 및 작업 할당 완료된 멀티 GPU를 이용하여 입력 데이터에 대한 상기 딥러닝 모델의 병렬처리를 수행하는 처리부를 포함하고, 상기 처리부는, 큐(queue)를 이용한 파이프라이닝(pipelining)을 통해 상기 병렬처리를 수행할 수 있다.
또한, 상기 처리부는, 상기 멀티 GPU 중 n번째 GPU에 입력된 복수의 데이터 중 제1 데이터에 대해 연산이 완료된 제1 연산 결과값을 상기 n번째 GPU의 작업 연산 결과값을 전달받는 (n+1)번째 GPU를 위한 큐에 상기 (n+1)번째 GPU가 푸쉬하도록 하고, 상기 (n+1)번째 GPU가 상기 큐에 있는 상기 제1 연산 결과값을 이용하여 연산하도록 하며, 상기 n번째 GPU가 상기 복수의 데이터 중 제2 데이터에 대해 연산하도록 할 수 있다.
상술한 과제 해결 수단은 단지 예시적인 것으로서, 본원을 제한하려는 의도로 해석되지 않아야 한다. 상술한 예시적인 실시예 외에도, 도면 및 발명의 상세한 설명에 추가적인 실시예가 존재할 수 있다.
전술한 본원의 과제 해결 수단에 의하면, 복수의 레이어 각각의 레이어 작업량 및 이상 작업량을 고려하여 멀티 GPU에 복수의 레이어 각각의 작업을 할당하는 멀티 GPU 기반의 딥러닝 모델의 병렬화를 위한 작업 할당 장치 및 방법을 제공함으로써, 딥러닝을 이용한 기계학습 수행시 단일 GPU로 학습이 불가능한 딥러닝 학습 모델을 효율적으로 다수의 GPU에 할당할 수 있다.
전술한 본원의 과제 해결 수단에 의하면, 멀티 GPU 기반의 딥러닝 모델의 병렬처리 장치 및 방법을 제공함으로써, 종래에 선행되는 연산을 담당하는 GPU의 연산이 끝나기까지 다음 연산을 담당하는 GPU가 계속 기다려야 하고, 매번 데이터를 주고 받아야 함에 따라 입출력(input/output, I/O)이 과도하게 발생하게 되어 전체 성능이 저하되는 문제를 해소할 수 있다.
전술한 본원의 과제 해결 수단에 의하면, 작업 할당 완료된 멀티 GPU를 이용한 입력 데이터에 대한 딥러닝 모델의 병렬처리 수행시 큐(Queue)를 이용한 파이프라이닝(pipelining)을 통해 병렬처리를 수행함으로써, 선행되는 GPU의 연산 결과값들이 계속 큐에 누적되어 있을 수 있어, 선행되는 GPU의 연산이 끝나기까지 다음 연산을 담당하는 GPU가 기다릴 필요 없이 바로 다음 연산을 수행하도록 할 수 있다. 이를 통해, 본원의 멀티 GPU 기반의 딥러닝 모델의 병렬처리 장치 및 방법은 종래의 모델 병렬화 방법에서 발생하는 시간 지연(Time delay) 문제를 해소시켜 전체 성능을 효과적으로 향상시킬 수 있다.
다만, 본원에서 얻을 수 있는 효과는 상기된 바와 같은 효과들로 한정되지 않으며, 또 다른 효과들이 존재할 수 있다.
도 1은 본원의 일 실시예에 따른 멀티 GPU 기반의 딥러닝 모델의 병렬화를 위한 작업 할당 장치의 개략적인 구성을 나타낸 도면이다.
도 2는 본원의 일 실시예에 따른 멀티 GPU 기반의 딥러닝 모델의 병렬화를 위한 작업 할당 장치에 의한 멀티 GPU 기반의 딥러닝 모델의 병렬화를 위한 작업 할당 방법에 대한 동작 흐름을 개략적으로 나타낸 도면이다.
도 3은 본원의 일 실시예에 따른 멀티 GPU 기반의 딥러닝 모델의 병렬화를 위한 작업 할당 장치에 의한 멀티 GPU 기반의 딥러닝 모델의 병렬화를 위한 작업 할당 방법에 대한 동작 흐름의 다른 예를 개략적으로 나타낸 도면이다.
도 4는 본원의 일 실시예에 따른 멀티 GPU 기반의 딥러닝 모델의 병렬처리 장치의 개략적인 구성을 나타낸 도면이다.
도 5는 본원의 일 실시예에 따른 멀티 GPU 기반의 딥러닝 모델의 병렬처리 장치를 통한 딥러닝 모델의 병렬처리 방법의 동작 흐름을 설명하기 위한 도면이다.
도 6은 본원의 일 실시예에 따른 멀티 GPU 기반의 딥러닝 모델의 병렬화를 위한 작업 할당 방법에 대한 동작 흐름도이다.
도 7은 본원의 일 실시예에 따른 멀티 GPU 기반의 딥러닝 모델의 병렬처리 방법에 대한 동작 흐름도이다.
아래에서는 첨부한 도면을 참조하여 본원이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본원의 실시예를 상세히 설명한다. 그러나 본원은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본원을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
본원 명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결" 또는 "간접적으로 연결"되어 있는 경우도 포함한다.
본원 명세서 전체에서, 어떤 부재가 다른 부재 "상에", "상부에", "상단에", "하에", "하부에", "하단에" 위치하고 있다고 할 때, 이는 어떤 부재가 다른 부재에 접해 있는 경우뿐 아니라 두 부재 사이에 또 다른 부재가 존재하는 경우도 포함한다.
본원 명세서 전체에서, 어떤 부분이 어떤 구성 요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성 요소를 제외하는 것이 아니라 다른 구성 요소를 더 포함할 수 있는 것을 의미한다.
도 1은 본원의 일 실시예에 따른 멀티 GPU 기반의 딥러닝 모델의 병렬화를 위한 작업 할당 장치(10)의 개략적인 구성을 나타낸 도면이고, 도 2는 본원의 일 실시예에 따른 멀티 GPU 기반의 딥러닝 모델의 병렬화를 위한 작업 할당 장치(10)에 의한 멀티 GPU 기반의 딥러닝 모델의 병렬화를 위한 작업 할당 방법에 대한 동작 흐름을 개략적으로 나타낸 도면이다.
이하에서는 본원의 일 실시예에 따른 멀티 GPU 기반의 딥러닝 모델의 병렬화를 위한 작업 할당 장치(10)를 설명의 편의상 본 작업 할당 장치(10)라 하기로 한다.
도 1 및 도 2를 참조하면, 본 작업 할당 장치(10)는 산출부(11) 및 할당부(12)를 포함할 수 있다.
본 작업 할당 장치(10)는 딥러닝 모델에 대한 작업 할당 장치에 있어서, 딥러닝(딥러닝 모델)을 이용한 기계학습을 수행하기 이전에, 딥러닝 모델 내 복수의 레이어 각각의 작업을 멀티 GPU(graphic processing unit)에 효율적으로 할당(분배)할 수 있는 멀티 GPU 기반의 딥러닝 모델의 병렬화를 위한 작업 할당(분배) 장치에 관한 것이다.
딥러닝(Deep Learning)은 일반적으로 행렬 곱과 같은 벡터 연산으로 이루어진 복수의 레이어(Layer)로 이루어져 있다. 여기서, 복수의 레이어 각각은 사용하는 연산, 파라미터 등에 따라 연산량 및 연산시 필요한 필요 메모리 크기가 제각각이다. 따라서, 단순히 전체 레이어의 수(즉, 복수의 레이어의 개수)를 GPU의 수(즉, 멀티 GPU의 개수)만큼 나누어서 딥러닝 모델에 대한 작업을 멀티 GPU에 할당하는 경우, 특정 GPU에 부하를 주거나 또는 연산량이 적을 경우 해당 GPU의 연산 자원을 최대로 활용하기 어려운 문제가 있다. 그러므로, 멀티 GPU 기반의 효율적인 딥러닝 모델의 병렬화를 위해서는 딥러닝 모델에 대한 작업을 GPU 별로 적절하게 분배해야 할 필요가 있다.
이를 위해, 본 작업 할당 장치(10)는 복수의 레이어 각각의 레이어 작업량 및 멀티 GPU 각각 마다의 이상 작업량을 고려하여 딥러닝 모델에 대한 작업을 멀티 GPU에 할당하는 방법을 제안한다.
단계S11에서, 산출부(11)는 딥러닝 모델 내 복수의 레이어의 전체 레이어 작업량이 멀티 GPU 각각에 대하여 나뉘어 할당된다고 가정한 GPU 마다의 이상 작업량을 산출할 수 있다.
구체적으로, 산출부(11)는 딥러닝 모델을 이용한 기계학습을 수행하기 이전에, 딥러닝 모델 내 복수의 레이어 각각의 레이어 작업량을 계산하고, 계산된 복수의 레이어 각각의 레이어 작업량을 합함으로써 복수의 레이어의 전체 레이어 작업량(즉, 전체 레이어에 대한 작업량인 전체 레이어 작업량)을 산출할 수 있다.
여기서, 레이어 작업량은 레이어의 필요 연산량 및 레이어 연산시의 필요 메모리 크기 중 적어도 하나에 관한 것일 수 있다.
산출부(11)는 딥러닝 모델 내 복수의 레이어 각각의 레이어 작업량을 계산함에 있어서, i번째 레이어 Layer(i)의 레이어 작업량으로서 i번째 레이어 Layer(i)의 필요 연산량 C(i)와 필요 메모리 크기 M(i)를 계산할 수 있다. 이후, 산출부(11)는 계산된 복수의 레이어 각각의 레이어 작업량을 합함으로써, 전체 레이어 작업량으로서 전체 레이어에 대한 필요 연산량 C(total)와 전체 레이어에 대한 필요 메모리 크기 M(total)을 산출할 수 있다.
이후, 산출부(11)는 전체 레이어 작업량이 멀티 GPU 각각에 대하여 나뉘어 할당된다고 가정한 GPU 마다의 이상 작업량을 산출할 수 있다.
여기서, 멀티 GPU는 동일한 타입의 GPU이고, GPU 마다의 이상 작업량(달리 말해, GPU별 이상 작업량)은 전체 레이어 작업량이 멀티 GPU 각각에 대하여 동일하게 안분하여 할당된다고 가정한 작업량일 수 있다.
이때, 동일한 타입의 GPU라 함은 처리 속도, 처리 용량 등의 성능이 동일한 GPU를 의미할 수 있다.
본원의 일 실시예에서는 멀티 GPU가 동일한 타입의 GPU인 것으로 예시하였으나, 이에만 한정되는 것은 아니고, 멀티 GPU는 적어도 일부의 GPU가 나머지 일부의 GPU와는 다른 타입일 수 있다. 일예로, 멀티 GPU가 7개의 GPU인 경우, 7개의 GPU 중 5개의 GPU는 제1 타입이고, 2개의 GPU는 제2 타입일 수 있다. 여기서, 예시적으로 제1 타입의 GPU는 제2 타입의 GPU 보다 상대적으로 성능(처리 속도, 처리 용량 등)이 좋은 GPU를 의미할 수 있다. 다른 일예로, 멀티 GPU가 7개의 GPU인 경우, 7개의 GPU 중 4개의 GPU는 제1 타입이고, 2개의 GPU는 제2 타입이고, 1개의 GPU는 제3 타입일 수 있다. 여기서, 예시적으로 제1 타입의 GPU는 제2 타입의 GPU 보다, 제2 타입의 GPU는 제3 타입의 GPU 보다 상대적으로 성능(처리 속도, 처리 용량 등)이 좋은 GPU를 의미할 수 있다. 이처럼, 멀티 GPU 중 적어도 일부의 GPU가 나머지 일부의 GPU와는 다른 타입인 경우, 산출부(11)는 각각의 상이한 GPU의 타입을 고려하여, 멀티 GPU 각각 마다의 이상 작업량을 산출하거나 복수의 레이어 각각의 작업을 할당할 수 있다.
산출부(11)는 전체 레이어 작업량을 멀티 GPU의 수(즉, 전체 GPU의 개수)로 나눔으로써 각 GPU에 대한 이상적인 작업 할당량(분배량)인 이상 작업량을 산출할 수 있다. 여기서, 이상 작업량에는 각 GPU에 대한 이상적인 연산량인 C(ideal)과 이상적인 메모리 사용량인 M(ideal)가 포함될 수 있다.
즉, 산출부(11)는 전체 레이어에 대한 필요 연산량 C(total)를 GPU의 수로 나눔으로써 GPU 마다의 이상 작업량으로서 이상적인 연산량인 C(ideal)를 산출할 수 있다. 또한, 산출부(11)는 전체 레이어에 대한 필요 메모리 크기 M(total)를 GPU의 수로 나눔으로써 GPU 마다의 이상 작업량으로서 이상적인 메모리 사용량인 M(ideal)를 산출할 수 있다.
할당부(12)는 산출부(11)를 통해 이상 작업량이 산출된 이후, 복수의 레이어 각각의 레이어 작업량 및 이상 작업량을 고려하여, 멀티 GPU에 복수의 레이어 각각의 작업을 순차 할당할 수 있다. 이에 대한 구체적인 설명은 다음과 같다.
할당부(12)는 순차 할당을 수행하기 이전에, 멀티 GPU 각각의 작업량(즉, 멀티 GPU 각각의 연산량과 메모리 사용량)을 0으로 초기화시킬 수 있다.
초기화 이후 단계S12에서, 할당부(12)는 적어도 하나의 레이어의 작업이 기할당된 n번째 GPU의 기할당 작업량이 n번째 GPU의 이상 작업량을 초과하는지 여부에 기초하여, n번째 GPU에 작업 미할당된 나머지 레이어 중 i번째 레이어의 작업을 할당할지 여부를 고려할 수 있다.
이때, 할당부(12)는 단계S12에서 n번째 GPU의 기할당 작업량이 n번째 GPU의 이상 작업량을 초과하는 경우(S12-yes), i번째 레이어의 작업 할당 없이 n번째 GPU에 대한 작업 할당을 완료할 수 있다(S13).
단계S13에서, 할당부(12)는 i번째 레이어의 작업 할당 없이 n번째 GPU에 대한 작업 할당을 완료한 이후, 멀티 GPU 중 n번째 GPU 다음의 GPU인 (n+1)번째 GPU에 i번째 레이어의 작업을 할당할 수 있다. 달리 말해, 단계S12-yes인 경우, 할당부(12)는 i번째 레이어의 작업을 n번째 GPU에 할당하지 않고, n번째 GPU에 대한 작업 할당을 완료하며, 이후 i번째 레이어의 작업을 (n+1)번째 GPU에 할당할 수 있다.
(n+1)번째 GPU에 i번째 레이어의 작업을 할당한 이후, 할당부(12)는 n번째 GPU에 작업 미할당된 나머지 레이어 중 i번째 레이어 다음의 레이어인 (i+1)번째 레이어의 작업에 대한 할당 여부를 고려할 수 있다. 구체적으로, 할당부(12)는 i번째 레이어의 작업이 할당된 이후 (i+1)번째 레이어의 작업을 할당함에 있어서, 적어도 하나의 레이어의 작업이 기할당된 (n+1)번째 GPU의 기할당 작업량, 즉 i번째 레이어의 작업이 기할당된 (n+1)번째 GPU의 기할당 작업량이 (n+1)번째 GPU의 이상 작업량을 초과하는지 여부에 기초하여, (i+1)번째 레이어의 작업을 (n+1)번째 GPU에 할당할지 여부를 고려할 수 있다. 이러한 과정은 딥러닝 모델 내 복수의 레이어 각각의 작업이 멀티 GPU에 모두 할당될때까지 반복 수행될 수 있다.
달리 말해, 단계S13에서, (n+1)번째 GPU에 i번째 레이어의 작업이 할당된 이후, 할당부(12)는 i번째 레이어 다음의 레이어인 (i+1)번째 레이어의 작업에 대한 할당을 수행할 수 있다. 이때, 할당부(12)는 i번째 레이어 다음의 레이어인 (i+1)번째 레이어의 작업에 대한 할당을 수행함에 있어서, 그 이전의 레이어(즉, i번째 레이어)가 기할당된 GPU(즉, (n+1)번째 GPU)의 기할당 작업량이 이상 작업량(즉, (n+1)번째 GPU의 이상 작업량)을 초과하는지 여부에 기초하여, (i+1)번째 레이어의 작업을 (n+1)번째 GPU에 할당할지 여부를 고려할 수 있다. 이러한 과정은 딥러닝 모델 내 복수의 레이어 각각의 작업이 멀티 GPU에 모두 할당될때까지 반복 수행될 수 있다.
한편, 할당부(12)는 단계S12에서 n번째 GPU의 기할당 작업량이 n번째 GPU의 이상 작업량을 초과하지 않는 경우(S12-no), n번째 GPU의 기할당 작업량과 i번째 레이어의 작업량의 합산량이 n번째 GPU에 대하여 이상 작업량을 초과하도록 설정된 초과 허용 작업량을 초과하는지 여부에 기초하여, n번째 GPU에 i번째 레이어의 작업을 할당할지 여부를 고려할 수 있다(S14).
여기서, 초과 허용 작업량은 각 GPU의 이상적인 작업 할당량인 이상 작업량보다 초과 할당이 허용되는 작업량을 의미할 수 있다. 이러한 초과 허용 작업량에 대한 초과 가능 비율 값은 사용자 입력에 의하여 설정될 수 있다. 예시적으로, 사용자로부터 초과 가능 비율 값과 관련하여 1.25의 값이 입력된 경우, 초과 허용 작업량은 이상 작업량 × 1.25%의 값으로 설정될 수 있다. 즉, 각 GPU의 이상 작업량이 100이고, 초과 가능 비율 값이 1.25인 경우, 각 GPU의 초과 허용 작업량은 125(100×1.25%=125)일 수 있다. 여기서, 초과 가능 비율 값의 단위는 일예로 %인 것으로 예시하였으나, 이에만 한정되는 것은 아니다.
할당부(12)는 단계S14에서 n번째 GPU의 기할당 작업량과 i번째 레이어의 작업량의 합산량이 n번째 GPU의 초과 허용 작업량을 초과하는 경우(S14-yes), 단계13의 과정을 수행할 수 있다. 즉, 할당부(12)는 단계S14에서 합산량이 n번째 GPU의 초과 허용 작업량을 초과하는 경우(S14-yes), i번째 레이어의 작업 할당 없이 n번째 GPU에 대한 작업 할당을 완료할 수 있다(S13).
단계S13에서, 할당부(12)는 i번째 레이어의 작업 할당 없이 n번째 GPU에 대한 작업 할당을 완료한 이후, 멀티 GPU 중 n번째 GPU 다음의 GPU인 (n+1)번째 GPU에 i번째 레이어의 작업을 할당할 수 있다. 다시 말해, 단계S14-yes인 경우, 할당부(12)는 i번째 레이어의 작업을 n번째 GPU에 할당하지 않고, n번째 GPU에 대한 작업 할당을 완료하며, 이후 i번째 레이어의 작업을 (n+1)번째 GPU에 할당할 수 있다. 이에 대한 설명은 앞서 자세히 설명했으므로, 이하 생략하기로 한다.
할당부(12)는 단계S14에서 n번째 GPU의 기할당 작업량과 i번째 레이어의 작업량의 합산량이 n번째 GPU의 초과 허용 작업량을 초과하지 않는 경우(S14-no), i번째 레이어의 작업을 n번째 GPU에 대하여 할당할 수 있다(S15).
단계S15에서, 할당부(12)는 i번째 레이어의 작업을 n번째 GPU에 할당 완료한 이후, n번째 GPU에 작업 미할당된 나머지 레이어 중 i번째 레이어 다음의 레이어인 (i+1)번째 레이어의 작업에 대한 할당 여부를 고려할 수 있다. 구체적으로, 할당부(12)는 i번째 레이어의 작업이 할당된 이후 (i+1)번째 레이어의 작업을 할당함에 있어서, i번째 레이어의 작업을 포함한 적어도 하나의 레이어의 작업이 기할당된 n번째 GPU의 기할당 작업량이 n번째 GPU의 이상 작업량을 초과하는지 여부에 기초하여, n번째 GPU에 작업 미할당된 나머지 레이어 중 (i+1)번째 레이어의 작업을 n번째 GPU에 할당할지 여부를 고려할 수 있다. 이러한 과정은 딥러닝 모델 내 복수의 레이어 각각의 작업이 멀티 GPU에 모두 할당될때까지 반복 수행될 수 있다.
달리 말해, 단계S15에서, n번째 GPU에 i번째 레이어의 작업이 할당된 이후, 할당부(12)는 i번째 레이어 다음의 레이어인 (i+1)번째 레이어의 작업에 대한 할당을 수행할 수 있다. 이때, 할당부(12)는 i번째 레이어 다음의 레이어인 (i+1)번째 레이어의 작업에 대한 할당을 수행함에 있어서, 그 이전의 레이어(즉, i번째 레이어)가 기할당된 GPU(즉, n번째 GPU)의 기할당 작업량이 이상 작업량(즉, n번째 GPU의 이상 작업량)을 초과하는지 여부에 기초하여, (i+1)번째 레이어의 작업을 n번째 GPU에 할당할지 여부를 고려할 수 있다. 이러한 과정은 딥러닝 모델 내 복수의 레이어 각각의 작업이 멀티 GPU에 모두 할당될때까지 반복 수행될 수 있다.
만약, 할당부(12)는 (i+1)번째 레이어의 작업에 대한 할당 수행시, i번째 레이어가 기할당된 n번째 GPU의 기할당 작업량이 이상 작업량을 초과하는 경우, (i+1)번째 레이어의 작업 할당 없이 n번째 GPU에 대한 작업 할당을 완료할 수 있다(S13). 이후 (i+2)번째 레이어의 작업에 대한 할당 여부를 고려할 수 있다.
반면, 할당부(12)는 (i+1)번째 레이어의 작업에 대한 할당 수행시, i번째 레이어가 기할당된 n번째 GPU의 기할당 작업량이 이상 작업량을 초과하지 않는 경우, n번째 GPU의 기할당 작업량과 (i+1)번째 레이어의 작업량의 합산량이 n번째 GPU의 초과 허용 작업량을 초과하는지 여부에 기초하여, (i+1)번째 레이어의 작업을 n번째 GPU에 할당할지 여부를 고려할 수 있다. 여기서, 합산량이 초과 허용 작업량을 초과하지 않으면, 할당부(12)는 (i+1)번째 레이어의 작업을 n번째 GPU에 할당하고, 이후 (i+3)번째 레이어의 작업에 대한 할당 여부를 고려할 수 있다.
이때, 할당부(12)는 (i+3)번째 레이어의 작업에 대한 할당 수행시, i번째 레이어와 (i+1)번째 레이어가 기할당된 n번째 GPU의 기할당 작업량이 이상 작업량을 초과하는지 여부를 고려할 수 있다. 할당부(12)는 n번째 GPU의 기할당 작업량이 이상 작업량을 초과하면 n번째 GPU에 대한 작업 할당을 완료한 후 (n+1)번째 GPU에 (i+1)번째 레이어의 작업을 할당하고, n번째 GPU의 기할당 작업량이 이상 작업량을 초과하지는 않되 n번째 GPU의 기할당 작업량과 (i+3)번째 레이어의 작업량의 합산량이 n번째 GPU의 초과 허용 작업량을 초과하면 (n+1)번째 GPU에 (i+3)번째 레이어의 작업을 할당하고, n번째 GPU의 기할당 작업량이 이상 작업량을 초과하지 않으면서 합산량이 초과 허용 작업량을 초과하지 않으면 n번째 GPU에 (i+3)번째 레이어의 작업을 할당할 수 있다.
이처럼, 할당부(12)는 복수의 레이어 각각의 레이어 작업량, 이상 작업량 및 초과 허용 작업량을 고려하여, 복수의 레이어 각각의 작업을 멀티 GPU에 할당할 수 있다.
다시 말하자면, 이상 작업량이 산출된 이후 할당부(12)가 멀티 GPU에 복수의 레이어 각각의 작업을 순차 할당함에 있어서, 복수의 레이어의 전체 레이어 작업량을 이상 작업량만큼 각 GPU에 할당할 수 있다면, 멀티 GPU 각각이 모두 동일한 양의 작업을 수행할 수 있을 것이다. 그런데, 멀티 GPU에 대하여 레이어 작업량이 제각각 다른 복수의 레이어의 작업 할당시, 각 GPU에는 연속되는 레이어의 단위로 작업이 할당되어야 하기 때문에, 레이어 작업량이 특정 GPU에 집중될 수 있다.
따라서, 본 작업 할당 장치(10)에서 할당부(12)는 멀티 GPU에 대한 복수의 레이어 각각의 작업의 순차 할당시, 일예로 복수의 레이어 중 현재 GPU에 할당이 되지 않은 레이어(즉, 작업 미할당된 레이어)의 작업 순서대로 GPU에 대한 할당을 수행할 수 있다. 또한, 할당부(12)는 다음 레이어의 작업을 할당하기 이전에 특정 GPU에게 너무 작업 할당이 집중되지는 않았는지 확인하며 작업 할당을 수행할 수 있다. 즉, 할당부(12)는 다음 레이어의 작업을 할당하기 이전에, 이전 레이어의 작업이 기할당된 GPU의 기할당 작업량, 이상 작업량 및 초과 허용 작업량을 고려하여, 멀티 GPU에 대한 복수의 레이어 각각의 작업 할당을 수행할 수 있다. 이하에서는 도 3을 참조하여 본 작업 할당 장치(10)를 통한 작업 할당 방법에 대한 동작 흐름을 다시 설명하기로 한다.
상술한 설명에서, 단계 S11 내지 S15는 본원의 구현예에 따라서, 추가적인 단계들로 더 분할되거나, 더 적은 단계들로 조합될 수 있다. 또한, 일부 단계는 필요에 따라 생략될 수도 있고, 단계 간의 순서가 변경될 수도 있다.
도 3은 본원의 일 실시예에 따른 멀티 GPU 기반의 딥러닝 모델의 병렬화를 위한 작업 할당 장치(10)에 의한 멀티 GPU 기반의 딥러닝 모델의 병렬화를 위한 작업 할당 방법에 대한 동작 흐름의 다른 예를 개략적으로 나타낸 도면이다.
도 3에 도시된 멀티 GPU 기반의 딥러닝 모델의 병렬화를 위한 작업 할당 방법은 앞서 설명된 본 작업 할당 장치(10)에 의하여 수행될 수 있다. 따라서, 이하 생략된 내용이라고 하더라도 본 작업 할당 장치(10)에 대하여 설명된 내용은 멀티 GPU 기반의 딥러닝 모델의 병렬화를 위한 작업 할당 방법에 대한 설명에도 동일하게 적용될 수 있다.
도 3을 참조하면, 딥러닝 모델에 대한 작업 할당(분배)의 수행시, 먼저 단계S21에서 산출부(11)는 GPU의 개수(즉, 멀티 GPU의 개수, N), 딥러닝 모델 및 GPU의 초과 허용 작업량에 대한 초과 가능 비율(R) 값을 입력받을 수 있다. 산출부(11)는 입력된 딥러닝 모델로부터 딥러닝 모델 내 복수의 레이어의 개수(즉, 전체 레이어의 개수, L)를 식별할 수 있다. 초과 가능 비율(R) 값은 사용자 입력에 의하여 설정될 수 있다.
다음으로, 단계S22에서 산출부(11)는 딥러닝 모델 내 복수의 레이어 각각의 레이어 작업량을 계산할 수 있다. 여기서, 산출부(11)는 i번째 레이어 Layer(i)의 레이어 작업량으로서 i번째 레이어 Layer(i)의 필요 연산량 C(i)와 필요 메모리 크기 M(i)를 계산할 수 있다.
다음으로, 단계 S23에서 산출부(11)는 단계S22에서 계산된 복수의 레이어 각각의 레이어 작업량을 합함으로써, 전체 레이어 작업량으로서 전체 레이어에 대한 필요 연산량 C(total)와 전체 레이어에 대한 필요 메모리 크기 M(total)을 산출할 수 있다. 즉, 산출부(11)는 복수의 레이어 각각의 필요 연산량 C(i)를 합함으로써 전체 레이어에 대한 필요 연산량 C(total)를 산출(
Figure 112018052963840-pat00001
)하고, 복수의 레이어 각각의 필요 메모리 크기 M(i)를 합함으로써 전체 레이어에 대한 필요 메모리 크기 M(total)를 산출(
Figure 112018052963840-pat00002
)할 수 있다.
다음으로, 단계S24에서, 산출부(11)는 전체 레이어 작업량을 GPU의 개수로 나눔으로써 각 GPU에 대한 이상적인 작업 할당량인 이상 작업량을 산출할 수 있다. 즉, 산출부(11)는 전체 레이어에 대한 필요 연산량 C(total)를 GPU의 개수로 나눔으로써 이상 작업량으로서 GPU 마다의 이상적인 연산량인 C(ideal)를 산출할 수 있다. 또한, 산출부(11)는 전체 레이어에 대한 필요 메모리 크기 M(total)를 GPU의 수로 나눔으로써 GPU 마다의 이상 작업량으로서 이상적인 메모리 사용량인 M(ideal)를 산출할 수 있다. 이를 식으로 표현하면 C(ideal)= C(total)/N, M(ideal)= M(total)/N 과 같을 수 있다.
다음으로, 단계S25에서, 산출부(11)는 단계S24에서 산출된 이상 작업량과 사용자로부터 입력된 초과 가능 비율(R) 값을 곱함으로써, 각 GPU 마다의 초과 허용 작업량을 산출할 수 있다. 이를 식으로 표현하면 Over_C=C(ideal)*R, Over_M=M(ideal)*R 과 같을 수 있다.
즉, 단계S25에서 산출부(11)는 GPU 마다의 초과 허용 작업량으로서 GPU의 연산량과 관련된 초과 허용 작업량(Over_C) 및 GPU의 메모리 사용량과 관련된 초과 허용 작업량(Over_M)을 산출할 수 있다.
다음으로, 단계S26에서 할당부(12)는, 멀티 GPU에 복수의 레이어 각각의 작업을 할당하기 이전에, 멀티 GPU 각각의 작업량(즉, 멀티 GPU 각각의 연산량과 메모리 사용량)을 0으로 초기화시킬 수 있다. 즉, 단계S26에서 할당부(12)는, 각 GPU의 작업량으로서, 각 GPU의 연산량 G_C(n) 및 각 GPU의 메모리 사용량 G_M(n)을 0으로 초기화시킬 수 있다. 달리 표현하여, 각 GPU의 연산량 GPU_C(n) 및 각 GPU의 메모리 사용량 GPU_M(n)을 0으로 초기화시킬 수 있다.
각 GPU의 작업량을 초기화시킨 이후, 단계S27에서 할당부(12)는 n=0, i=0인 경우에서부터 레이어의 할당 여부에 따라 n과 i를 하나씩 증가시키면서, L개의 복수의 레이어의 작업을 순차적으로 N개의 GPU에 할당할 수 있다. 여기서, n는 멀티 GPU에서 GPU의 순차 정보를 나타내고, i는 복수의 레이어에서 레이어의 순차 정보를 나타낸다.
할당부(12)는 복수의 레이어 각각의 레이어 작업량 및 이상 작업량을 고려하여, 멀티 GPU에 복수의 레이어 각각의 작업을 순차 할당할 수 있다.
이때, 할당부(12)는 n번째 GPU(GPU:n)에 대한 작업 할당시, 복수의 레이어 중 현재 GPU에 할당이 되지 않은 레이어(즉, 작업 미할당된 레이어)의 작업을 우선적으로 할당할 수 있다. 일예로, 할당부(12)는 작업 미할당된 레이어 중 i번째 레이어 Layer(i)의 작업을 n번째 GPU(GPU:n)에 할당할 수 있다(S28).
단계S28에서 i번째 레이어 Layer(i)의 작업이 n번째 GPU(GPU:n)에 할당됨으로써, n번째 GPU(GPU:n)의 작업량 중에는 i번째 레이어 Layer(i) 작업량이 더해질 수 있다.
다시 말해, 단계S28에서 i번째 레이어 Layer(i)의 작업이 n번째 GPU(GPU:n)에 할당됨으로써, n번째 GPU의 연산량 GPU_C(n)에는 i번째 레이어 Layer(i)의 필요 연산량 C(i)가 더해지고, n번째 GPU의 메모리 사용량 GPU_M(n)에는 i번째 레이어 Layer(i)의 필요 메모리 크기 M(i)가 더해질 수 있다. 이를 식으로 표현하면, GPU_C(n)+=C(i), GPU_M(n)+=M(i)와 같을 수 있다.
i번째 레이어 Layer(i)의 작업이 n번째 GPU(GPU:n)에 할당된 이후, 단계S28에서 할당부(12)는 i를 1 증가시키고(i+=1), i가 1 증가된 (i+1)번째 레이어 Layer(i+1)의 작업에 대한 할당 여부를 고려할 수 있다.
이때, 단계S29에서 할당부(12)는, n번째 GPU(GPU:n)에 할당된 i번째 레이어 Layer(i)가 전체 레이어의 수(L)에 대응하는 레이어인지 판단(즉, i==L인지 판단)할 수 있다. 다시 말해, 단계S29에서 할당부(12)는 i번째 레이어 Layer(i)의 작업이 n번째 GPU에 할당된 이후, 멀티 GPU에 대한 할당이 이루어져야 할 레이어 중 마지막 레이어에 해당하는지 판단할 수 있다. 달리 말해, 할당부(12)는 i번째 레이어 Layer(i)의 작업이 n번째 GPU에 할당된 이후, 딥러닝 모델 내 복수의 레이어 중 i번째 레이어 Layer(i)가 마지막 레이어에 해당하는지(즉, 복수의 레이어 중 더이상 할당되어야 할 레이어가 없는지) 판단할 수 있다.
이때, 할당부(12)는 n번째 GPU(GPU:n)에 할당된 i번째 레이어 Layer(i)가 전체 레이어의 수(L)에 대응하는 레이어인 경우(S29-yes), 딥러닝 모델 내 복수의 레이어 각각의 작업이 모두 멀티 GPU에 할당된 것으로 판단하여, 복수의 레이어에 대한 작업 할당(분배)를 종료할 수 있다.
한편, 할당부(12)는 n번째 GPU(GPU:n)에 할당된 i번째 레이어 Layer(i)가 전체 레이어의 수(L)에 대응하는 레이어가 아닌 경우(S29-no), 복수의 레이어 중 i번째 레이어 Layer(i) 외에 더 할당되어야 할 다른 레이어가 존재하는 것으로 판단할 수 있다. 일예로 할당부(12)는 S29-no인 경우, 복수의 레이어 중 i번째 레이어 Layer(i) 외에 더 할당되어야 할 다른 레이어로서 (i+1)번째 레이어 Layer(i+1)에 대한 작업 할당을 고려할 수 있다.
이를 위해, 단계S30에서 할당부(12)는, (i+1)번째 레이어 Layer(i+1)의 작업을 할당하기 이전에, i번째 레이어의 작업이 기할당된 n번째 GPU의 기작업 할당량과 n번째 GPU의 이상 작업량을 비교할 수 있다. 이러한 비교를 통해 할당부(12)는, i번째 레이어의 작업이 기할당된 n번째 GPU의 기작업 할당량이 n번째 GPU의 이상 작업량을 초과하는지 판단할 수 있다. 이를 식으로 표현하면, 단계S30에서 할당부(12)는, GPU_C(n)>C(ideal)인지와 GPU_M(n)>M(ideal)인지를 판단할 수 있다.
이때, 단계S30에서, n번째 GPU의 기작업 할당량이 n번째 GPU의 이상 작업량을 초과하는 경우(S30-yes), 할당부(12)는 n번째 GPU(GPU:n)에 대한 작업 할당을 완료하고, 멀티 GPU 중 n번째 GPU 다음의 GPU인 (n+1)번째 GPU(GPU:n+1)에 대한 작업 할당을 수행할 수 있다.
구체적으로, 할당부(12)는 n번째 GPU의 기작업 할당량이 n번째 GPU의 이상 작업량을 초과하는 경우(S30-yes), (n+1)번째 GPU가 전체 GPU의 수(즉, 멀티 GPU의 수, L)에 대응하는 GPU가 아니면(즉, n+1==N이 아니면)(S32-no), n을 1 증가시킨 후(S33), 단계S28로 돌아가 (i+1)번째 레이어 Layer(i+1)의 작업을 (n+1)번째 GPU에 할당할 수 있다.
여기서, 할당부(12)는 n번째 GPU의 기작업 할당량이 n번째 GPU의 이상 작업량을 초과하는 경우(S30-yes), (n+1)번째 GPU가 전체 GPU의 수(즉, 멀티 GPU의 수, L)에 대응하는 GPU이면(즉, n+1==N이면)(S32-yes), 단계S28로 돌아가 (i+1)번째 레이어 Layer(i+1)의 작업을 n번째 GPU에 할당할 수 있다.
한편, 단계S30에서, n번째 GPU의 기작업 할당량이 n번째 GPU의 이상 작업량을 초과하지 않는 경우(S30-no), (i+1)번째 레이어에 대한 할당을 계속해서 수행할 수 있다.
구체적으로, 단계S30-no인 경우, 할당부(12)는 Layer(i)의 작업이 이미 할당되었으므로 바로 Layer(i+1)의 작업을 GPU에 할당할 수 있다. 이때, 딥러닝의 학습 모델은 주로 특정 영역의 레이어들에 작업량이 집중되어 있으므로, 레이어 작업량이 특정 GPU에 집중되는 것을 방지하기 위해 다음을 고려할 수 있다.
즉, 할당부(12)는 단계S30-no인 경우, Layer(i+1)의 작업을 GPU에 할당하기 이전에 n번째 GPU의 기작업 할당량과 단계S28에서 1이 증가된 i(즉, i+1)번째 레이어의 작업량의 합산량이 n번째 GPU의 초과 허용 작업량을 초과하는지 판단할 수 있다(S31). 이를 식으로 표현하면, 단계S31에서 할당부(12)는, GPU_C(n)+C(i)>Over_C인지와 GPU_M(n)+M(i)>Over_M인지를 판단할 수 있다. 이때, 단계S28에서 Layer(i)가 GPU:
n에 할당된 이후 i가 1 증가(즉, i+1)하였으므로, 단계S31에서 할당부(12)는, GPU_C(n)+C(i+1)>Over_C인지와 GPU_M(n)+M(i+1)>Over_M인지를 판단할 수 있다.
이때, 할당부(12)는 n번째 GPU의 기작업 할당량과 (i+1)번째 레이어의 작업량의 합산량이 n번째 GPU의 초과 허용 작업량을 초과하지 않는 경우(S31-no), 단계S28로 돌아가 (i+1)번째 레이어 Layer(i+1)의 작업을 n번째 GPU에 할당할 수 있다.
여기서, 할당부(12)는 n번째 GPU의 기작업 할당량과 (i+1)번째 레이어의 작업량의 합산량이 n번째 GPU의 초과 허용 작업량을 초과하는 경우(S31-yes), 단계S32를 수행할 수 있다.
즉, 단계S31-yes인 경우, 할당부(12)는 (n+1)번째 GPU가 전체 GPU의 수(L)에 대응하는 GPU가 아니면(즉, n+1==N이 아니면)(S32-no), n을 1 증가시킨 후(S33), 단계S28로 돌아가 (i+1)번째 레이어 Layer(i+1)의 작업을 (n+1)번째 GPU에 할당할 수 있다. 반면, 단계S31-yes인 경우, 할당부(12)는 (n+1)번째 GPU가 전체 GPU의 수(L)에 대응하는 GPU이면(즉, n+1==N이면)(S32-yes), 단계S28로 돌아가 (i+1)번째 레이어 Layer(i+1)의 작업을 n번째 GPU에 할당할 수 있다.
다시 말하자면, 단계S31에서 합산량이 초과 허용 작업량을 초과하지 않는 경우(달리 말해, 합산량이 초과 허용 작업량 이하인 경우)(S31-no), 할당부(12)는 (i+1)번째 레이어 Layer(i+1)의 작업을 n번째 GPU(GPU:n)에 할당하고, 다음 레이어(즉, (i+3)번째 레이어)에 대한 작업 할당을 수행할 수 있다. 즉, 단계S31-no인 경우, 할당부(12)는 다음 레이어인 (i+3)번째 레이어에 대해서도 (i+2)번째 레이어와 마찬가지로 동일한 작업 할당(즉, 단계S28 이후의 과정을 통한 GPU에 대한 작업 할당)을 수행할 수 있다.
반면, 단계S31에서 합산량이 초과 허용 작업량을 초과하는 경우(S31-yes), 할당부(12)는 n번째 GPU(GPU:n)에 대한 작업 할당을 완료하고, (i+1)번째 레이어 Layer(i+1)의 작업을 (n+1)번째 GPU(GPU:n+1)에 할당할 수 있다.
달리 표현하여, 할당부(12)는 n번째 GPU의 기할당 작업량과 Layer(i+1)의 작업량의 합산량이 초과 허용 작업량을 초과하는 경우, 이상 작업량에 비해 얼마만큼 초과하는지 그 비율을 확인할 수 있다. 이때, 초과 비율이 미리 설정된 범위 이내인 경우(즉, 단계S25에서 산출된 초과 허용 작업량보다 합산량이 같거나 작은 경우), 할당부(12)는 Layer(i+1)의 작업을 GPU:n에 할당할 수 있다. 반면, 초과 비율이 미리 설정된 범위를 벗어나는 경우(즉, 단계S25에서 산출된 초과 허용 작업량보다 합산량이 큰 경우), 할당부(12)는 n번째 GPU(GPU:n)에 대한 작업 할당을 완료하고, (i+1)번째 레이어 Layer(i+1)의 작업을 (n+1)번째 GPU(GPU:n+1)에 할당할 수 있다.
여기서, 합산량이 초과 허용 작업량을 초과하는지 여부를 판단하는 미리 설정된 범위(즉, 초과 가능 비율 값)는 앞서 말한 바와 같이 사용자 입력에 의해 설정될 수 있다. 일예로, 미리 설정된 범위(즉, 초과 가능 비율 값)가 1.25로 설정된 경우, 할당부(12)는 복수의 GPU 각각(즉, 단일 GPU)에 대하여 이상 작업량의 1.25 배까지 레이어의 작업에 대한 할당을 허용할 수 있다.
다시 말해, 본 작업 할당 장치(10)는 딥러닝 모델을 학습하기 이전에, 단계S21내지 단계S33의 과정을 통해 딥러닝 모델 내 복수의 레이어 각각의 작업을 멀티 GPU에 할당할 수 있다.
산출부(11)는 작업 할당을 수행하기 이전에, GPU의 개수, 딥러닝 모델 및 GPU의 초과 허용 작업량에 대한 초과 가능 비율(R) 값을 입력받을 수 있다. 산출부(11)는 입력받은 정보에 기초하여 GPU 마다의 이상적인 작업 할당량인 이상 작업량을 산출(계산)할 수 있다.
이후 할당부(12)는 딥러닝 모델 내 복수의 레이어 순서대로 멀티 GPU에 대한 레이어 작업의 할당을 수행할 수 있다. 할당부(12)는 복수의 레이어 중 제1 레이어의 작업을 멀티 GPU 중 제1 GPU에 할당하기 이전에, 제1 GPU의 기할당 작업량과 제1 GPU의 초과 허용 작업량을 확인(고려)하여, 제1 레이어의 작업을 제1 GPU에 할당할지 또는 제1 GPU와는 다른 제2 GPU에 할당할지 결정할 수 있다.
일예로, 제1 레이어의 작업이 제1 GPU에 할당된 이후, 할당부(12)는 제2 레이어의 작업에 대한 할당을 수행할 수 있다. 이때, 할당부(12)는 현재의 GPU(즉, 이전의 제1 레이어의 작업에 대한 할당이 이루어진 1 GPU)에 제2 레이어의 작업에 대한 할당이 가능한지 확인할 수 있다.
구체적으로, 할당부(12)는 제2 레이어의 작업을 할당함에 있어서, 제1 GPU의 기할당 작업량이 이상 작업량을 이미 초과하는 경우, 제1 GPU에 대한 작업 할당을 완료하고, 제2 레이어의 작업을 제2 GPU에 할당할 수 있다. 만약, 제1 GPU의 기할당 작업량이 이상 작업량을 초과하지는 않으나, 제1 GPU의 기작업 할당량과 제2 레이어의 작업을 합한 합산량이 제1 GPU의 초과 허용 작업량을 초과하는 경우, 할당부(12)는 제1 GPU에 대한 작업 할당을 완료하고, 제2 레이어의 작업을 제2 GPU에 할당할 수 있다. 이후 할당부(12)는 제3 레이어의 작업에 대한 할당시 제2 GPU의 기할당 작업량이 이상 작업량을 초과하는지 고려하여 할당 수행 여부를 결정할 수 있다. 한편, 제1 GPU의 기할당 작업량이 이상 작업량을 초과하지 않으면서, 제1 GPU의 기작업 할당량과 제2 레이어의 작업을 합한 합산량이 제1 GPU의 초과 허용 작업량을 초과하지 않는 경우, 할당부(12)는 제2 레이어의 작업을 제1 GPU에 할당할 수 있다. 이후 할당부(12)는 제3 레이어의 작업에 대한 할당시 제1 GPU의 기할당 작업량이 이상 작업량을 초과하는지 고려하여 할당 수행 여부를 결정할 수 있다.
이처럼 본 작업 할당 장치(10)에 의해 복수의 레이어 각각의 작업이 멀티 GPU에 할당된 이후 딥러닝 모델에 대한 학습이 이루어질 수 있다. 이하에서는 딥러닝 모델의 학습을 위한, 본원에서 제안하는 멀티 GPU 기반의 딥러닝 모델의 병렬처리 방법에 대하여 설명하기로 한다.
상술한 설명에서, 단계 S21 내지 S33은 본원의 구현예에 따라서, 추가적인 단계들로 더 분할되거나, 더 적은 단계들로 조합될 수 있다. 또한, 일부 단계는 필요에 따라 생략될 수도 있고, 단계 간의 순서가 변경될 수도 있다.
도 4는 본원의 일 실시예에 따른 멀티 GPU 기반의 딥러닝 모델의 병렬처리 장치(20)의 개략적인 구성을 나타낸 도면이다. 이하 설명에서 본원의 일 실시예에 따른 멀티 GPU 기반의 딥러닝 모델의 병렬처리 장치(20)는 설명의 편의상 본 병렬처리 장치(20)라 하기로 한다.
도 4를 참조하면, 본 병렬처리 장치(20)는 할당부(21) 및 처리부(22)를 포함할 수 있다.
이때, 본 병렬처리 장치(20) 내 할당부(21)는 앞서 설명한 본 작업 할당 장치(10) 내 할당부(12)와 동일한 할당부를 의미할 수 있다. 따라서, 이하 생략한 내용이라 하더라도, 앞서 설명한 본 작업 할당 장치(10) 내 할당부(12)에 대하여 설명된 내용은 본 병렬처리 장치(20) 내 할당부(21)에 대한 설명에도 동일하게 적용될 수 있다. 또한, 도면에 도시하지는 않았으나, 본 병렬처리 장치(20)는 산출부(미도시)를 포함할 수 있으며, 산출부(미도시)는 앞서 설명한 본 작업 할당 장치(10) 내 산출부(11)와 동일한 산출부일 수 있는바, 이하 중복되는 설명은 생략하기로 한다.
할당부(21)는 본 작업 할당 장치(10)를 통한 작업 할당 방법에 의해, 멀티 GPU에 딥러닝 모델 내 복수의 레이어 각각의 작업을 할당할 수 있다.
처리부(22)는 작업 할당 완료된 멀티 GPU를 이용하여 입력 데이터에 대한 딥러닝 모델의 병렬처리를 수행할 수 있다. 이때, 처리부(22)는 큐(Queue)를 이용한 파이프라이닝(pipelining)을 통해 딥러닝 모델의 병렬처리를 수행할 수 있다. 이는 도 5를 참조하여 보다 쉽게 이해될 수 있다.
도 5는 본원의 일 실시예에 따른 멀티 GPU 기반의 딥러닝 모델의 병렬처리 장치(20)를 통한 딥러닝 모델의 병렬처리 방법의 동작 흐름을 설명하기 위한 도면이다.
도 5를 참조하면, 일예로, 멀티 GPU의 수가 N개인 경우, 멀티 GPU(GPU:0, GPU:1, …, GPU:N)에는 할당부(21)에 의해 복수의 레이어 각각의 작업이 할당될 수 있다. 일예로 멀티 GPU 중 첫번째 GPU는 제1 GPU(GPU:0), 두번째 GPU는 제2 GPU(GPU:1)라 할 수 있다.
본 병렬처리 장치(20)는 딥러닝 모델의 병렬처리를 위해 큐(Queue)를 포함할 수 있다.
처리부(22)는 딥러닝 모델의 병렬처리 수행시, 멀티 GPU 중 다음 GPU가 이전 GPU에 의한 작업 연산 결과값을 이용해 연산을 수행할 수 있도록, 이전 GPU에 의한 작업 연산 결과값이 큐에 저장되도록 할 수 있다.
이를 위해, 본 병렬처리 장치(20)에서 큐(Queue)는 일예로 멀티 GPU의 수보다 하나 적은 수로 구비될 수 있다. 일예로 멀티 GPU의 수가 N개인 경우, 복수의 큐는 N-1개일 수 있다. 이때, 본원의 일 실시예에서는 N-1개의 복수의 큐를 포함하는 것으로 예시하였으나, 이에만 한정되는 것은 아니고, 하나의 저장부에 멀티 GPU 각각에 의한 연산 결과값이 구분되어 저장될 수 있다.
본 병렬처리 장치(20)가 N-1개의 복수의 큐를 포함하는 경우, 복수의 큐 각각은 멀티 GPU 중 마지막 GPU를 제외한 나머지 GPU 각각에 대응하여 나머지 GPU 각각에 의한 작업 연산 결과값을 저장할 수 있다. 이에 따라, 멀티 GPU 중 첫번째 GPU를 제외한 나머지 GPU 각각은 이전 GPU에 의하여 각 큐에 저장된 이전 GPU에 의한 작업 연산 결과값을 이용하여, 자신에게 할당된 레이어의 작업에 대한 연산을 수행할 수 있다.
즉, 본 병렬처리 장치(20)는 N-1개의 복수의 큐로서 제1 큐(Queue0_1), 제2 큐(Queue1_2), …, 제N-1큐(QueueN-1_N)를 포함할 수 있다. 여기서, 제1 큐(Queue0_1)는 제1 GPU(GPU:0)의 작업 연산 결과값을 저장하는 큐이면서, 제2 GPU(GPU:1)가 작업 수행시 고려하는 입력값이 저장되어 있는 큐를 의미할 수 있다. 이에 따르면, 제1 GPU(GPU:0)의 작업 연산 결과값은 제1 큐(Queue0_1)에 저장되고, 제2 GPU(GPU:1)는 제1 큐(Queue0_1)에 저장된 제1 GPU(GPU:0)의 작업 연산 결과값을 입력으로 하여, 제2 GPU(GPU:1) 자신에게 할당된 레이어의 작업에 대한 연산을 수행할 수 있다.
다시 말해, 도 5에서 일예로 제1 GPU(GPU:0, 31)가 멀티 GPU 중 n번째 GPU이고, 제2 GPU(GPU:1, 32)가 멀티 GPU 중 n번째 GPU 다음의 GPU인 (n+1)번째 GPU라고 하자. 또한, n번째 GPU의 작업 연산 결과값이 저장되는 큐를 제1 큐(Queue0_1, 41)라고 하자.
처리부(22)는 멀티 GPU 중 n번째 GPU(31)에 입력된 복수의 데이터(1, 2, 3, 4, 5) 중 제1 데이터(1)에 대해 연산(31a)이 완료된 제1 연산 결과값(1')을 n번째 GPU의 작업 연산 결과값을 전달받는 (n+1)번째 GPU(32)를 위한 큐(41)에 (n+1)번째 GPU(32)가 푸쉬하도록 하고, (n+1)번째 GPU(32)가 큐(41)에 있는 제1 연산 결과값(1')을 이용하여 연산하도록 하며, n번째 GPU(31)가 복수의 데이터 중 제2 데이터(2)에 대해 연산(31b)하도록 할 수 있다.
다시 말해, 일예로 딥러닝 모델에 입력 데이터로서 복수의 데이터(1, 2, 3, 4, 5)가 입력될 수 있다.
처리부(22)는 복수의 데이터(1, 2, 3, 4, 5)를 입력값으로 하여 n번째 GPU(31)에 할당된 레이어의 작업에 대한 연산이 수행되도록, n번째 GPU(31)를 통한 연산을 수행할 수 있다. 이를 통해 n번째 GPU(31)는 복수의 데이터(1, 2, 3, 4, 5)를 순차적으로 연산할 수 있다.
처리부(22)는 n번째 GPU(31)가 제1 데이터(1)에 대한 연산(31a)을 수행하도록 하고, n번째 GPU(31)의 연산(31a)에 의해 산출된 제1 데이터(1)에 대한 제1 연산 결과값(1')을 n번째 GPU(31)에 할당된 레이어의 작업에 대한 연산 결과값(즉, n번째 GPU(31)의 작업 연산 결과값)으로서 제1 큐(41)에 저장되도록 할 수 있다.
이후, 처리부(22)는 제1 연산 결과값(1')이 제1 큐(41)에 저장된 이후, n번째 GPU(31)가 제2 데이터(2)에 대한 연산(31b)을 수행하도록 하고, n번째 GPU(31)의 연산(31b)에 의해 산출된 제2 데이터(2)에 대한 제2 연산 결과값(2')을 n번째 GPU(31)에 할당된 레이어의 작업에 대한 연산 결과값(즉, n번째 GPU(31)의 작업 연산 결과값)으로서 제1 큐(41)에 저장되도록 할 수 있다. 이처럼, 복수의 데이터(1, 2, 3, 4, 5) 각각에 대한 n번째 GPU(31)의 연산 결과값은 순차적으로 n번째 GPU의 작업 연산 결과값으로서 제1 큐(41)에 저장될 수 있다.
이때, 처리부(22)는 제1 연산 결과값(1')이 제1 큐(41)에 저장된 이후, n번째 GPU(31)가 제2 데이터(2)에 대한 연산(31b)을 수행하도록 함과 동시에 (n+1)번째 GPU(32)가 제1 큐(1)에 저장된 제1 연산 결과값(1')을 입력으로 하여 제1 데이터(1)에 대응하는 제1 연산 결과값(1')에 대한 연산(32a)을 수행하도록 할 수 있다. 즉, 처리부(22)는 제1 연산 결과값(1')이 제1 큐(41)에 저장된 이후, n번째 GPU(31)에 의한 제2 데이터(2)에 대한 연산(31b)과 (n+1)번째 GPU(32)에 의한 제1 연산 결과값(1')에 대한 연산(32a)이 함께(동시에) 병렬적으로 연산 처리되도록 할 수 있다. 또한, 처리부(22)는 n번째 GPU(31)의 연산(31b)에 의해 큐(41)에 제2 연산 결과값(2')이 저장되면, (n+1)번째 GPU(32)가 제2 연산 결과값(2')에 대해 연산(32b)하도록 할 수 있다.
이처럼, 본 병렬처리 장치(10)는 큐를 이용한 파이프라이닝을 통해 딥러닝 모델에 대한 병렬처리를 수행함으로써 연산 처리 속도 등의 성능을 효과적으로 향상시킬 수 있다.
다시 말해, 처리부(22)는 딥러닝 모델의 병렬처리 수행시, (n+1)번째 GPU(GPU:n+1, 32)가 n번째 GPU(GPU:n, 31)의 결과값(작업 연산 결과값)을 입력값으로 이용하도록 할 수 있다.
종래의 모델 병렬화 방법에서는 복수의 입력 데이터(1, 2, 2, 3, 4, 5)에 대한 연산 수행시, n번째 GPU의 연산이 끝날때까지 (n+1)번째 GPU가 연산을 수행할 수 없었으며, 이에 따라 시간 지연(Time delay)이 발생하는 문제가 있었다. 이러한 문제를 해소하고자, 본 병렬처리 장치(20)는 큐를 이용한 파이프라이닝을 통한 병렬처리 방법을 제안한다.
예시적으로, 처리부(22)는 제1 데이터(1)에 대한 n번째 GPU(31)의 연산(31a)이 끝나면, 그 연산 결과값(1')을 (n+1)번째 GPU(32)를 위한 큐(41)에 (n+1)번째 GPU(32)가 푸쉬하도록 저장할 수 있다. 이후, 처리부(22)는 n번째 GPU(31)가 바로 제2 데이터(2)에 대한 연산(31b)을 수행하도록 하고, 그 연산 결과값(2')을 다시 (n+1)번째 GPU(32)를 위한 큐(41)에 (n+1)번째 GPU(32)가 푸쉬하도록 저장할 수 있다.
이때, 제1 데이터(1)의 연산 결과값(1')이 큐(41)에 저장된 이후, 처리부(22)는 (n+1)번째 GPU(32)가 큐(41)에 저장된 제1 데이터(1)에 대응하는 제1 데이터의 연산 결과값(1')을 큐(41)로부터 획득하여 제1 데이터의 연산 결과값(1')에 대한 연산(32a)을 수행하도록 하고, 그 연산 결과값을 (n+2)번째 GPU를 위한 큐에 저장할 수 있다. 제1 데이터의 연산 결과값(1')에 대한 (n+1)번째 GPU(32)의 연산(31a)이 완료(종료)되면, 처리부(22)는 (n+1)번째 GPU(32)가 n번째 GPU(31)에 의해 큐(41)에 미리 저장된 제2 데이터(2)의 연산 결과값(2')을 큐(41)로부터 획득하여 제2 데이터의 연산 결과값(2')에 대한 연산(32b)을 시간 지연(대기시간) 없이 바로 수행하도록 할 수 있다.
즉, 본 병렬처리 장치(20)는, 멀티 GPU에 복수의 레이어의 작업이 할당 완료되면, 멀티 GPU 각각이 그 이전의 GPU에 의한 작업 연산 결과값을 저장하는 큐로부터 저장된 값을 읽어와 자신에게 할당된 작업에 대한 연산 처리를 수행하도록 할 수 있다. 이때, 각각의 GPU는 자신에게 할당된 작업에 대한 연산 처리가 완료되면, 그 연산 처리 결과값을 큐에 저장하고 바로 그 다음에 입력되는 입력 데이터에 대한 연산 처리를 수행할 수 있다. 이러한 본 병렬처리 장치(10)는 큐를 이용한 파이프라이닝을 통해, 멀티 GPU 각각이 모두 시간 지연(대기시간)을 갖지 않고 바로 다음 연산을 병렬적으로 수행하도록 제공할 수 있다.
본 병렬처리 장치(20)에서 각 GPU들간에 데이터 전달(교환)시 이용되는 큐의 크기는 사용자 입력에 의하여 설정될 수 있다.
본원은 본 작업 할당 장치(10)를 통하여, 각 레이어의 필요 연산량과 각 레이어의 연산시 필요 메모리 크기를 고려하여, 멀티 GPU에 복수의 레이어의 작업을 효과적으로 할당할 수 있다. 또한, 본원은 본 병렬처리 장치(20)를 통하여, 각 GPU가 다음 GPU에게 작업 연산 결과값을 직접적으로 전달하지 않고, 큐에 푸쉬하도록 하여 다음 GPU가 시간 지연 없이 바로 다음 연산을 병렬적으로 처리하는 파이프라이닝 방식으로 병렬처리를 수행함으로써, 보다 빠른 연산이 이루어지도록 제공할 수 있다.
이러한 본원은 최근 다양한 분야에서 딥러닝이 활용되고 있음에도 불구하고 갈수록 방대해지는 데이터와 복잡해지는 딥러닝 학습모델의 연산 수요를 따라가지 못하는 문제를 해소할 수 있다.
종래에 데이터 크기의 증가에 따른 데이터 병렬화 방법이 다수의 플랫폼에서 제공되고 있으나, 딥러닝 모델 자체가 복잡한 경우에는 아무리 데이터를 분할한다 하더라도 연산 자체를 단일 GPU에서 수행하지 못하는 문제가 있다. 이에 반해, 본원은 본 작업 할당 장치(10)를 통해 복수의 레이어의 작업을 멀티 GPU에 유사한 부하의 작업량으로 할당(분배)하고, 이에 기초하여 본 병렬처리 장치(20)를 통해 딥러닝 모델의 모델 병렬화 처리를 수행함으로써, 매우 복잡한 딥러닝 학습 모델에 대한 학습시에도 성능 저하 없이 효율적인 학습이 이루어지도록 제공할 수 있다. 본원은 딥러닝 모델의 학습 성능을 향상시킬 뿐만 아니라 자원 활용을 극대화할 수 있다.
또한, 본원은 예시적으로 자율주행과 같은 다양한 인공지능 분야에서 활용될 수 있다. 본원은 종래의 기술들에 대비하여 보다 빠른 딥러닝 학습 속도를 제공할 수 있음에 따라 시시각각 최신화되는 데이터들에 대한 빠른 적용이 가능하다.
또한, 본원은 입력된 딥러닝 모델(딥러닝 학습 모델)에 대하여 딥러닝 모델 내 복수의 레이어 각각의 레이어 작업량(필요 연산량, 필요 메모리 크기)을 계산하고, 이를 기초로 하여 멀티 GPU에 복수의 레이어 각각의 작업을 적절히 분배할 수 있어, 개발자로 하여금 자원 분배에 대한 고민을 감소시켜 개발 효율을 효과적으로 향상시킬 수 있다.
본원은 딥러닝을 이용한 기계학습 수행시 데이터 병렬화가 아닌 모델 병렬화를 이용한 자원 분배(즉, 복수의 레이어의 작업을 분배)하는 기술을 제공한다.
본원은 복수의 레이어의 작업에 대한 할당(분배)시 GPU에 이루어지는 것으로 예시하였으나, 이에만 한정되는 것은 아니고, GPU 뿐만 아니라 CPU 등이 이용될 수 있다. 예시적으로, 본원은 적어도 하나의 CPU와 멀티 GPU를 하나의 연산 자원과 같이 활용하기 위해 애그리게이션(Aggregation)을 수행할 수 있으며, 이에 따라 각 연산 자원들은 직접 Peer to Peer(P2P)로 데이터를 공유할 수 있다.
본원은 멀티 GPU들 간에 데이터 전달(교환, 공유)시 큐(Queue)를 이용하여 데이터를 전달(교환, 공유)할 수 있다. 또한, 본원은 복잡도가 높은 딥러닝 모델을 기계학습시킴에 있어서, 본원에서 제안하는 작업 할당 방법에 기초한 모델 병렬화를 통해 학습 속도를 증가시키는 동시에 효율적인 자원 활용이 이루어지도록 제공할 수 있다.
또한, 본원은 일예로 네트워크가 아닌 PCI(peripheral component interconnect)를 통해 멀티 GPU들 간에 데이터 전달(교환, 공유)을 수행할 수 있다. 또한, 본원은 딥러닝 모델에 대한 병렬처리 연산을 수행함에 있어서, 큐를 이용하여 각 GPU들 간에 연산 결과값을 전달(교환, 공유)하도록 할 수 있다.
이하에서는 상기에 자세히 설명된 내용을 기반으로, 본원의 동작 흐름을 간단히 살펴보기로 한다.
도 6은 본원의 일 실시예에 따른 멀티 GPU 기반의 딥러닝 모델의 병렬화를 위한 작업 할당 방법에 대한 동작 흐름도이다.
도 6에 도시된 멀티 GPU 기반의 딥러닝 모델의 병렬화를 위한 작업 할당 방법은 앞서 설명된 본 작업 할당 장치(10)에 의하여 수행될 수 있다. 따라서, 이하 생략된 내용이라고 하더라도 본 작업 할당 장치(10)에 대하여 설명된 내용은 멀티 GPU 기반의 딥러닝 모델의 병렬화를 위한 작업 할당 방법에 대한 설명에도 동일하게 적용될 수 있다.
도 6을 참조하면, 단계S41에서, 산출부는 딥러닝 모델 내 복수의 레이어의 전체 레이어 작업량이 멀티 GPU 각각에 대하여 나뉘어 할당된다고 가정한 GPU 마다의 이상 작업량을 산출할 수 있다.
다음으로, 단계S42에서 할당부는 복수의 레이어 각각의 레이어 작업량 및 이상 작업량을 고려하여, 멀티 GPU에 복수의 레이어 각각의 작업을 순차 할당할 수 있다.
여기서, 레이어 작업량은, 레이어의 필요 연산량 및 레이어 연산시의 필요 메모리 크기 중 적어도 하나에 관한 것일 수 있다.
또한, 멀티 GPU는 동일한 타입의 GPU이고, GPU 마다의(GPU별) 이상 작업량은 전체 레이어 작업량이 멀티 GPU 각각에 대하여 동일하게 안분하여 할당된다고 가정한 작업량일 수 있다.
또한, 단계S42에서 할당부는, 적어도 하나의 레이어의 작업이 기할당된 n번째 GPU의 기할당 작업량이 n번째 GPU의 이상 작업량을 초과하는지 여부에 기초하여, n번째 GPU에 작업 미할당된 나머지 레이어 중 i번째 레이어의 작업을 할당할지 여부를 고려할 수 있다.
또한, 단계S42에서 할당부는, n번째 GPU의 기할당 작업량이 이상 작업량을 초과하는 경우, i번째 레이어의 작업 할당 없이 n번째 GPU에 대한 작업 할당을 완료할 수 있다.
또한, 단계S42에서 할당부는, n번째 GPU의 기할당 작업량이 이상 작업량을 초과하지 않는 경우, n번째 GPU의 기할당 작업량과 i번째 레이어의 작업량의 합산량이 n번째 GPU에 대하여 이상 작업량을 초과하도록 설정된 초과 허용 작업량을 초과하는지 여부에 기초하여, n번째 GPU에 i번째 레이어의 작업을 할당할지 여부를 고려할 수 있다.
또한, 단계S42에서 할당부는, 합산량이 초과 허용 작업량을 초과하는 경우, i번째 레이어의 작업 할당 없이 n번째 GPU에 대한 작업 할당을 완료할 수 있다.
또한, 단계S42에서 할당부는, 합산량이 초과 허용 작업량을 초과하지 않는 경우, i번째 레이어의 작업을 n번째 GPU에 대하여 할당할 수 있다.
또한, 단계S42에서 할당부는, i번째 레이어의 작업을 포함한 적어도 하나의 레이어의 작업이 기할당된 n번째 GPU의 기할당 작업량이 n번째 GPU의 이상 작업량을 초과하는지 여부에 기초하여, n번째 GPU에 작업 미할당된 나머지 레이어 중 (i+1)번째 레이어의 작업을 할당할지 여부를 고려할 수 있다.
상술한 설명에서, 단계 S41 내지 S42는 본원의 구현예에 따라서, 추가적인 단계들로 더 분할되거나, 더 적은 단계들로 조합될 수 있다. 또한, 일부 단계는 필요에 따라 생략될 수도 있고, 단계 간의 순서가 변경될 수도 있다.
도 7은 본원의 일 실시예에 따른 멀티 GPU 기반의 딥러닝 모델의 병렬처리 방법에 대한 동작 흐름도이다.
도 7에 도시된 멀티 GPU 기반의 딥러닝 모델의 병렬처리 방법은 앞서 설명된 본 병렬처리 장치(20)에 의하여 수행될 수 있다. 따라서, 이하 생략된 내용이라고 하더라도 본 병렬처리 장치(20)에 대하여 설명된 내용은 멀티 GPU 기반의 딥러닝 모델의 병렬처리 방법에 대한 설명에도 동일하게 적용될 수 있다.
도 7을 참조하면, 단계S51에서 할당부는, 본 작업 할당 장치(10)를 통한 멀티 GPU 기반의 딥러닝 모델의 병렬화를 위한 작업 할당 방법에 의해, 멀티 GPU에 복수의 레이어 각각의 작업을 할당할 수 있다.
다음으로, 단계S52에서 처리부는 단계S51에서 작업 할당 완료된 멀티 GPU를 이용하여 입력 데이터에 대한 딥러닝 모델의 병렬처리를 수행할 수 있다.
이때, 단계S52에서 처리부는 큐(Queue)를 이용한 파이프라이닝(pipelining)을 통해 상기 병렬처리를 수행할 수 있다.
또한, 단계S52에서 처리부는 멀티 GPU 중 n번째 GPU에 입력된 복수의 데이터 중 제1 데이터에 대해 연산이 완료된 제1 연산 결과값을 n번째 GPU의 작업 연산 결과값을 전달받는 (n+1)번째 GPU를 위한 큐에 (n+1)번째 GPU가 푸쉬하도록 하고, (n+1)번째 GPU가 큐에 있는 제1 연산 결과값을 이용하여 연산하도록 하며, n번째 GPU가 복수의 데이터 중 제2 데이터에 대해 연산하도록 할 수 있다.
상술한 설명에서, 단계 S51 내지 S52는 본원의 구현예에 따라서, 추가적인 단계들로 더 분할되거나, 더 적은 단계들로 조합될 수 있다. 또한, 일부 단계는 필요에 따라 생략될 수도 있고, 단계 간의 순서가 변경될 수도 있다.
본원의 일 실시 예에 따른 멀티 GPU 기반의 딥러닝 모델의 병렬화를 위한 작업 할당 방법 및 멀티 GPU 기반의 딥러닝 모델의 병렬처리 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
또한, 전술한 멀티 GPU 기반의 딥러닝 모델의 병렬화를 위한 작업 할당 방법 및 멀티 GPU 기반의 딥러닝 모델의 병렬처리 방법은 기록 매체에 저장되는 컴퓨터에 의해 실행되는 컴퓨터 프로그램 또는 애플리케이션의 형태로도 구현될 수 있다.
전술한 본원의 설명은 예시를 위한 것이며, 본원이 속하는 기술분야의 통상의 지식을 가진 자는 본원의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
본원의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본원의 범위에 포함되는 것으로 해석되어야 한다.
10: 멀티 GPU 기반의 딥러닝 모델의 병렬화를 위한 작업 할당 장치
20: 멀티 GPU 기반의 딥러닝 모델의 병렬처리 장치
11: 산출부
12, 21: 할당부
22: 처리부

Claims (19)

  1. 멀티 GPU 기반의 딥러닝 모델의 병렬화를 위한 작업 할당 방법으로서,
    (a) 상기 딥러닝 모델 내 복수의 레이어의 전체 레이어 작업량이 멀티 GPU 각각에 대하여 나뉘어 할당된다고 가정한 GPU 마다의 이상 작업량을 산출하는 단계; 및
    (b) 상기 복수의 레이어 각각의 레이어 작업량 및 상기 이상 작업량을 고려하여, 상기 멀티 GPU에 상기 복수의 레이어 각각의 작업을 순차 할당하는 단계,
    를 포함하고,
    상기 레이어 작업량은, 레이어의 필요 연산량 및 레이어 연산시의 필요 메모리 크기 중 적어도 하나에 관한 것이고,
    상기 (b) 단계는,
    적어도 하나의 레이어의 작업이 기할당된 n번째 GPU의 기할당 작업량이 상기 n번째 GPU의 이상 작업량을 초과하는지 여부에 기초하여, 상기 n번째 GPU에 작업 미할당된 나머지 레이어 중 i번째 레이어의 작업을 할당할지 여부를 고려하는 것인, 멀티 GPU 기반의 딥러닝 모델의 병렬화를 위한 작업 할당 방법.
  2. 제1항에 있어서,
    상기 멀티 GPU는 동일한 타입의 GPU이고,
    상기 GPU 마다의 이상 작업량은 상기 전체 레이어 작업량이 상기 멀티 GPU 각각에 대하여 동일하게 안분하여 할당된다고 가정한 작업량인 것인, 멀티 GPU 기반의 딥러닝 모델의 병렬화를 위한 작업 할당 방법.
  3. 삭제
  4. 제1항에 있어서,
    상기 (b) 단계는,
    상기 n번째 GPU의 기할당 작업량이 상기 이상 작업량을 초과하는 경우, 상기 i번째 레이어의 작업 할당 없이 상기 n번째 GPU에 대한 작업 할당을 완료하는 것인, 멀티 GPU 기반의 딥러닝 모델의 병렬화를 위한 작업 할당 방법.
  5. 제1항에 있어서,
    상기 (b) 단계는,
    상기 n번째 GPU의 기할당 작업량이 상기 이상 작업량을 초과하지 않는 경우, 상기 n번째 GPU의 기할당 작업량과 상기 i번째 레이어의 작업량의 합산량이 상기 n번째 GPU에 대하여 상기 이상 작업량을 초과하도록 설정된 초과 허용 작업량을 초과하는지 여부에 기초하여, 상기 n번째 GPU에 상기 i번째 레이어의 작업을 할당할지 여부를 고려하는 것인, 멀티 GPU 기반의 딥러닝 모델의 병렬화를 위한 작업 할당 방법.
  6. 제5항에 있어서,
    상기 (b) 단계는,
    상기 합산량이 상기 초과 허용 작업량을 초과하는 경우, 상기 i번째 레이어의 작업 할당 없이 상기 n번째 GPU에 대한 작업 할당을 완료하는 것인, 멀티 GPU 기반의 딥러닝 모델의 병렬화를 위한 작업 할당 방법.
  7. 제6항에 있어서,
    상기 (b) 단계는,
    상기 합산량이 상기 초과 허용 작업량을 초과하지 않는 경우, 상기 i번째 레이어의 작업을 상기 n번째 GPU에 대하여 할당하는 것인, 멀티 GPU 기반의 딥러닝 모델의 병렬화를 위한 작업 할당 방법.
  8. 멀티 GPU 기반의 딥러닝 모델의 병렬처리 방법으로서,
    (a) 제1항의 작업 할당 방법에 의해, 상기 멀티 GPU에 상기 복수의 레이어 각각의 작업을 할당하는 단계; 및
    (b) 작업 할당 완료된 멀티 GPU를 이용하여 입력 데이터에 대한 상기 딥러닝 모델의 병렬처리를 수행하는 단계,
    를 포함하고,
    상기 (b) 단계는, 큐(Queue)를 이용한 파이프라이닝(pipelining)을 통해 상기 병렬처리를 수행하는 것인, 멀티 GPU 기반의 딥러닝 모델의 병렬처리 방법.
  9. 제8항에 있어서,
    상기 (b) 단계는,
    상기 멀티 GPU 중 n번째 GPU에 입력된 복수의 데이터 중 제1 데이터에 대해 연산이 완료된 제1 연산 결과값을 상기 n번째 GPU의 작업 연산 결과값을 전달받는 (n+1)번째 GPU를 위한 큐에 상기 (n+1)번째 GPU가 푸쉬하도록 하고, 상기 (n+1)번째 GPU가 상기 큐에 있는 상기 제1 연산 결과값을 이용하여 연산하도록 하며, 상기 n번째 GPU가 상기 복수의 데이터 중 제2 데이터에 대해 연산하도록 하는 것인, 멀티 GPU 기반의 딥러닝 모델의 병렬처리 방법.
  10. 멀티 GPU 기반의 딥러닝 모델의 병렬화를 위한 작업 할당 장치로서,
    상기 딥러닝 모델 내 복수의 레이어의 전체 레이어 작업량이 멀티 GPU 각각에 대하여 나뉘어 할당된다고 가정한 GPU 마다의 이상 작업량을 산출하는 산출부; 및
    상기 복수의 레이어 각각의 레이어 작업량 및 상기 이상 작업량을 고려하여, 상기 멀티 GPU에 상기 복수의 레이어 각각의 작업을 순차 할당하는 할당부,
    를 포함하고,
    상기 레이어 작업량은, 레이어의 필요 연산량 및 레이어 연산시의 필요 메모리 크기 중 적어도 하나에 관한 것이고,
    상기 할당부는,
    적어도 하나의 레이어의 작업이 기할당된 n번째 GPU의 기할당 작업량이 상기 n번째 GPU의 이상 작업량을 초과하는지 여부에 기초하여, 상기 n번째 GPU에 작업 미할당된 나머지 레이어 중 i번째 레이어의 작업을 할당할지 여부를 고려하는 것인, 멀티 GPU 기반의 딥러닝 모델의 병렬화를 위한 작업 할당 장치.
  11. 제10항에 있어서,
    상기 멀티 GPU는 동일한 타입의 GPU이고,
    상기 GPU 마다의 이상 작업량은 상기 전체 레이어 작업량이 상기 멀티 GPU 각각에 대하여 동일하게 안분하여 할당된다고 가정한 작업량인 것인, 멀티 GPU 기반의 딥러닝 모델의 병렬화를 위한 작업 할당 장치.
  12. 삭제
  13. 제10항에 있어서,
    상기 할당부는,
    상기 n번째 GPU의 기할당 작업량이 상기 이상 작업량을 초과하는 경우, 상기 i번째 레이어의 작업 할당 없이 상기 n번째 GPU에 대한 작업 할당을 완료하는 것인, 멀티 GPU 기반의 딥러닝 모델의 병렬화를 위한 작업 할당 장치.
  14. 제10항에 있어서,
    상기 할당부는,
    상기 n번째 GPU의 기할당 작업량이 상기 이상 작업량을 초과하지 않는 경우, 상기 n번째 GPU의 기할당 작업량과 상기 i번째 레이어의 작업량의 합산량이 상기 n번째 GPU에 대하여 상기 이상 작업량을 초과하도록 설정된 초과 허용 작업량을 초과하는지 여부에 기초하여, 상기 n번째 GPU에 상기 i번째 레이어의 작업을 할당할지 여부를 고려하는 것인, 멀티 GPU 기반의 딥러닝 모델의 병렬화를 위한 작업 할당 장치.
  15. 제14항에 있어서,
    상기 할당부는,
    상기 합산량이 상기 초과 허용 작업량을 초과하는 경우, 상기 i번째 레이어의 작업 할당 없이 상기 n번째 GPU에 대한 작업 할당을 완료하는 것인, 멀티 GPU 기반의 딥러닝 모델의 병렬화를 위한 작업 할당 장치.
  16. 제15항에 있어서,
    상기 할당부는,
    상기 합산량이 상기 초과 허용 작업량을 초과하지 않는 경우, 상기 i번째 레이어의 작업을 상기 n번째 GPU에 대하여 할당하는 것인, 멀티 GPU 기반의 딥러닝 모델의 병렬화를 위한 작업 할당 장치.
  17. 멀티 GPU 기반의 딥러닝 모델의 병렬처리 장치로서,
    제10항의 작업 할당 장치에 의해, 상기 멀티 GPU에 상기 복수의 레이어 각각의 작업을 할당하는 할당부; 및
    작업 할당 완료된 멀티 GPU를 이용하여 입력 데이터에 대한 상기 딥러닝 모델의 병렬처리를 수행하는 처리부,
    를 포함하고,
    상기 처리부는, 큐(queue)를 이용한 파이프라이닝(pipelining)을 통해 상기 병렬처리를 수행하는 것인, 멀티 GPU 기반의 딥러닝 모델의 병렬처리 장치.
  18. 제17항에 있어서,
    상기 처리부는,
    상기 멀티 GPU 중 n번째 GPU에 입력된 복수의 데이터 중 제1 데이터에 대해 연산이 완료된 제1 연산 결과값을 상기 n번째 GPU의 작업 연산 결과값을 전달받는 (n+1)번째 GPU를 위한 큐에 상기 (n+1)번째 GPU가 푸쉬하도록 하고, 상기 (n+1)번째 GPU가 상기 큐에 있는 상기 제1 연산 결과값을 이용하여 연산하도록 하며, 상기 n번째 GPU가 상기 복수의 데이터 중 제2 데이터에 대해 연산하도록 하는 것인, 멀티 GPU 기반의 딥러닝 모델의 병렬처리 장치.
  19. 제1항, 제2항, 제4항 내지 제9항 중 어느 한 항의 방법을 컴퓨터에서 실행하기 위한 프로그램을 기록한 컴퓨터에서 판독 가능한 기록매체.
KR1020180061512A 2018-05-30 2018-05-30 멀티 gpu 기반의 딥러닝 모델의 병렬화를 위한 작업 할당 장치 및 방법 KR102029711B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180061512A KR102029711B1 (ko) 2018-05-30 2018-05-30 멀티 gpu 기반의 딥러닝 모델의 병렬화를 위한 작업 할당 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180061512A KR102029711B1 (ko) 2018-05-30 2018-05-30 멀티 gpu 기반의 딥러닝 모델의 병렬화를 위한 작업 할당 장치 및 방법

Publications (1)

Publication Number Publication Date
KR102029711B1 true KR102029711B1 (ko) 2019-10-08

Family

ID=68208972

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180061512A KR102029711B1 (ko) 2018-05-30 2018-05-30 멀티 gpu 기반의 딥러닝 모델의 병렬화를 위한 작업 할당 장치 및 방법

Country Status (1)

Country Link
KR (1) KR102029711B1 (ko)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102163402B1 (ko) 2020-06-15 2020-10-08 주식회사 딥노이드 멀티 노드와 멀티 gpu를 이용한 분산 학습 시스템 및 방법
KR20210115370A (ko) * 2020-03-12 2021-09-27 한국과학기술원 공유 gpu 클러스터를 위한 분산 딥러닝 작업 스케줄링 방법 및 이를 기록한 컴퓨터 판독 가능 기록매체
KR102309764B1 (ko) * 2020-11-24 2021-10-08 주식회사 하스퍼 복수의 gpu에 대한 분산처리를 수행하는 fpga 장치 및 이를 이용한 분산처리 수행 방법
CN113504975A (zh) * 2021-05-17 2021-10-15 华南理工大学 面向在线语义分割机器视觉检测的多任务协同调度方法
US20210373944A1 (en) * 2020-06-01 2021-12-02 Samsung Electronics Co., Ltd. Scheduler, method of operating the same, and accelerator apparatus including the same
KR20210157813A (ko) * 2020-06-22 2021-12-29 한양대학교 산학협력단 다중 gpu 시스템을 위한 신경망의 최적화 방법 및 이를 이용하는 최적화 시스템
KR20220141592A (ko) * 2021-04-13 2022-10-20 한국과학기술원 공유 gpu 클러스터의 분산 딥 러닝 작업 스케줄링 방법 및 시스템
KR102473941B1 (ko) 2021-11-30 2022-12-06 주식회사 튜닙 딥러닝 모델 병렬 처리 장치 및 방법
KR20240026325A (ko) 2022-08-18 2024-02-28 주식회사 큐램 이기종 프로세서들을 이용하여 뉴럴 네트워크 연산을 포함하는 태스크를 수행하는 방법 및 시스템

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140001970A (ko) * 2010-12-15 2014-01-07 어드밴스드 마이크로 디바이시즈, 인코포레이티드 결합된 cpu/gpu 아키텍처 시스템에서의 디바이스의 발견 및 토폴로지 보고
KR101568204B1 (ko) * 2014-07-15 2015-11-11 고려대학교 산학협력단 Cpu/gpu 기반 매니코어 시스템 및 cpu/gpu의 동시처리를 위한 멀티코어 cpu의 코어 개수 결정 방법
KR101594915B1 (ko) * 2014-01-23 2016-02-17 서울대학교산학협력단 매니코어 클러스터 시스템 상에서 병렬 프로그래밍을 수행하는 방법 및 매니코어 클러스터 시스템
KR20170133892A (ko) * 2016-05-27 2017-12-06 고려대학교 세종산학협력단 다중 cpu 및 gpu를 이용한 암호화 알고리즘의 병렬처리 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140001970A (ko) * 2010-12-15 2014-01-07 어드밴스드 마이크로 디바이시즈, 인코포레이티드 결합된 cpu/gpu 아키텍처 시스템에서의 디바이스의 발견 및 토폴로지 보고
KR101594915B1 (ko) * 2014-01-23 2016-02-17 서울대학교산학협력단 매니코어 클러스터 시스템 상에서 병렬 프로그래밍을 수행하는 방법 및 매니코어 클러스터 시스템
KR101568204B1 (ko) * 2014-07-15 2015-11-11 고려대학교 산학협력단 Cpu/gpu 기반 매니코어 시스템 및 cpu/gpu의 동시처리를 위한 멀티코어 cpu의 코어 개수 결정 방법
KR20170133892A (ko) * 2016-05-27 2017-12-06 고려대학교 세종산학협력단 다중 cpu 및 gpu를 이용한 암호화 알고리즘의 병렬처리 방법

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
서현태 외 5명. '다중 GPU 기반 딥러닝 성능 분석에 대한 연구'. 한국정보과학회 2017 한국소프트웨어종합학술대회 논문집, 2017.12., pp.1714-1716.* *
임효정 외 2명. '멀티코어형 모바일 GPU의 작업 분배 및 효율성 분석'. 한국산학기술학회논문지 제15권 제7호, 2014.07., pp.4545-4553. *

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210115370A (ko) * 2020-03-12 2021-09-27 한국과학기술원 공유 gpu 클러스터를 위한 분산 딥러닝 작업 스케줄링 방법 및 이를 기록한 컴퓨터 판독 가능 기록매체
KR102336297B1 (ko) 2020-03-12 2021-12-09 한국과학기술원 공유 gpu 클러스터를 위한 분산 딥러닝 작업 스케줄링 방법 및 이를 기록한 컴퓨터 판독 가능 기록매체
US20210373944A1 (en) * 2020-06-01 2021-12-02 Samsung Electronics Co., Ltd. Scheduler, method of operating the same, and accelerator apparatus including the same
KR102163402B1 (ko) 2020-06-15 2020-10-08 주식회사 딥노이드 멀티 노드와 멀티 gpu를 이용한 분산 학습 시스템 및 방법
KR20210157813A (ko) * 2020-06-22 2021-12-29 한양대학교 산학협력단 다중 gpu 시스템을 위한 신경망의 최적화 방법 및 이를 이용하는 최적화 시스템
KR102619539B1 (ko) * 2020-06-22 2023-12-29 한양대학교 산학협력단 다중 gpu 시스템을 위한 신경망의 최적화 방법 및 이를 이용하는 최적화 시스템
KR102309764B1 (ko) * 2020-11-24 2021-10-08 주식회사 하스퍼 복수의 gpu에 대한 분산처리를 수행하는 fpga 장치 및 이를 이용한 분산처리 수행 방법
KR20220141592A (ko) * 2021-04-13 2022-10-20 한국과학기술원 공유 gpu 클러스터의 분산 딥 러닝 작업 스케줄링 방법 및 시스템
KR102563374B1 (ko) 2021-04-13 2023-08-04 한국과학기술원 공유 gpu 클러스터의 분산 딥 러닝 작업 스케줄링 방법 및 시스템
CN113504975A (zh) * 2021-05-17 2021-10-15 华南理工大学 面向在线语义分割机器视觉检测的多任务协同调度方法
KR102473941B1 (ko) 2021-11-30 2022-12-06 주식회사 튜닙 딥러닝 모델 병렬 처리 장치 및 방법
KR20240026325A (ko) 2022-08-18 2024-02-28 주식회사 큐램 이기종 프로세서들을 이용하여 뉴럴 네트워크 연산을 포함하는 태스크를 수행하는 방법 및 시스템

Similar Documents

Publication Publication Date Title
KR102029711B1 (ko) 멀티 gpu 기반의 딥러닝 모델의 병렬화를 위한 작업 할당 장치 및 방법
JP6898496B2 (ja) 計算グラフの処理
US11989647B2 (en) Self-learning scheduler for application orchestration on shared compute cluster
CN108292374B (zh) 训练表示为计算图的神经网络
Samadi et al. E-HEFT: enhancement heterogeneous earliest finish time algorithm for task scheduling based on load balancing in cloud computing
US9203778B2 (en) Device to efficiently allocate resources for cloud computing
JP2018533795A (ja) 計算グラフのストリームベースのアクセラレータ処理
US10360074B2 (en) Allocating a global resource in a distributed grid environment
CN111488205B (zh) 面向异构硬件架构的调度方法和调度系统
CN113391918A (zh) 用于处理计算作业的方法、设备和计算机程序产品
WO2022262476A1 (en) Dynamic renewable runtime resource management
US20210390405A1 (en) Microservice-based training systems in heterogeneous graphic processor unit (gpu) cluster and operating method thereof
KR102027682B1 (ko) 부분적 계산 오프로딩을 위한 모바일 클라우드 네트워크의 로드밸런싱 방법 및 그 시스템
CN114945917A (zh) 用于深度学习的稀疏矩阵运算
US20220413941A1 (en) Computing clusters
Tuli et al. Load balancing scheme for optimization of virtual machine migration using swarm in cloud environment
Costache et al. Merkat: A market-based slo-driven cloud platform
CN112346852A (zh) 矩阵求和运算的分布式物理处理
CN113748411A (zh) 动态地优化并行计算的装置和方法
CN111522637A (zh) 一种基于成本效益的storm任务调度方法
US20240012685A1 (en) Swarm multi-agent reinforcement learning-based pipeline for workload placement
Ismail et al. Optimized load balancing based task scheduling in cloud environment
CN118093162A (zh) 一种显存分配方法和相关装置
KR20220132796A (ko) 기계학습 워크로드 처리 장치 및 방법
Pandey et al. Scalable deployment of a ligo physics application on public clouds: Workflow engine and resource provisioning techniques

Legal Events

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