KR20230068709A - 스케줄러, 스케줄러의 동작 방법 및 이를 포함한 전자 장치 - Google Patents

스케줄러, 스케줄러의 동작 방법 및 이를 포함한 전자 장치 Download PDF

Info

Publication number
KR20230068709A
KR20230068709A KR1020210154784A KR20210154784A KR20230068709A KR 20230068709 A KR20230068709 A KR 20230068709A KR 1020210154784 A KR1020210154784 A KR 1020210154784A KR 20210154784 A KR20210154784 A KR 20210154784A KR 20230068709 A KR20230068709 A KR 20230068709A
Authority
KR
South Korea
Prior art keywords
models
accelerator
layer
scheduler
time
Prior art date
Application number
KR1020210154784A
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 KR1020210154784A priority Critical patent/KR20230068709A/ko
Priority to US17/887,968 priority patent/US20230143270A1/en
Publication of KR20230068709A publication Critical patent/KR20230068709A/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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • 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

Abstract

스케줄러, 스케줄러의 동작 방법 및 이를 포함한 전자 장치가 개시된다. 일 실시예에 따른 가속기에서 실행할 모델을 결정하는 스케줄러의 동작 방법은 가속기에서 서로 독립적으로 실행되는 복수의 모델들에 대한 하나 이상의 실행 요청을 수신하는 단계, 복수의 모델들 각각에 대응하는 QoS(Quality of Service) 정보를 예측하는 단계 및 복수의 모델들 각각에서 스케줄링 대상이 되는 후보 레이어가 가속기에서 실행될 때 발생하는 유휴 시간(idle time) 및 QoS 정보 중 적어도 하나에 기초하여, 복수의 모델들을 레이어 단위로 스케줄링하는 단계를 포함한다.

Description

스케줄러, 스케줄러의 동작 방법 및 이를 포함한 전자 장치{SCHEDULER, METHOD FOR OPERATING THE SAME AND ELECTRONIC DEVICE INCLUDING THE SAME}
아래 실시예들은 스케줄러, 스케줄러의 동작 방법 및 이를 포함한 전자 장치에 관한 것이다.
인공 지능(Artificial Intelligence; AI) 기술이 발전함에 따라 인공 지능만을 위한 독자적인 하드웨어의 필요성이 증가하고 있다. 인공 지능은 예를 들어, 특정한 연산을 통해 추론과 학습을 수행할 수 있다. 이와 같이 인공 지능을 구현하고 실행하기 위한 전용 하드웨어로서 다양한 장치들이 개발되고 있다.
인공 지능을 위한 전용 하드웨어는 예를 들어, CPU(Central Processing Unit), GPU(Graphics Processing Unit) 등에 의해 구현될 수도 있고, 용도 변경이 가능한 FPGA(Field Programmable Gate Array), 및 ASIC(Application Specific Integrated Circuit) 등에 의해 구현될 수도 있다.
일 실시예에 따른 가속기에서 실행할 모델을 결정하는 스케줄러의 동작 방법은 상기 가속기에서 서로 독립적으로 실행되는 복수의 모델들에 대한 하나 이상의 실행 요청을 수신하는 단계; 상기 복수의 모델들 각각에 대응하는 QoS(Quality of Service) 정보를 예측하는 단계; 및 상기 복수의 모델들 각각에서 스케줄링 대상이 되는 후보 레이어가 상기 가속기에서 실행될 때 발생하는 유휴 시간(idle time) 및 상기 QoS 정보 중 적어도 하나에 기초하여, 상기 복수의 모델들을 레이어 단위로 스케줄링하는 단계를 포함한다.
상기 스케줄링하는 단계는 상기 복수의 모델들 각각의 후보 레이어 중에서 상기 가속기의 상태에서 상기 유휴 시간이 최소인 제1 레이어를 탐색하는 단계; 및 상기 복수의 모델들 각각에 대응하는 상기 QoS 정보에 기초하여, 상기 제1 레이어의 스케쥴링 여부를 결정하는 단계를 포함할 수 있다.
상기 QoS 정보를 예측하는 단계는 상기 복수의 모델들 각각에 대응하는 QoS 슬랙 시간(QoS slack time)을 예측하는 단계; 및 상기 복수의 모델들 각각에 대응하는 스탠드얼론 실행 시간(standalone execution time)을 예측하는 단계를 포함할 수 있다.
상기 제1 레이어의 스케쥴링 여부를 결정하는 단계는 상기 복수의 모델들 중에서, QoS 슬랙 시간이 스탠드얼론 실행 시간보다 작거나 같은 모델이 있는지 판단하는 단계; 및 상기 QoS 슬랙 시간이 상기 스탠드얼론 실행 시간보다 작거나 같은 모델이 없을 경우, 상기 제1 레이어를 스케쥴링하는 단계를 포함할 수 있다.
일 실시예에 따른 스케줄러의 동작 방법은 상기 복수의 모델들 중에서, QoS 슬랙 시간이 스탠드얼론 실행 시간보다 작거나 같은 모델이 있는지 판단하는 단계; 및 상기 QoS 슬랙 시간이 상기 스탠드얼론 실행 시간보다 작거나 같은 모델이 있을 경우, 해당 모델의 제2 레이어를 스케쥴링하는 단계를 더 포함할 수 있다.
상기 스케쥴링하는 단계는 상기 복수의 모델들 각각의 후보 레이어 중에서 상기 가속기의 상태에서 상기 유휴 시간이 작은 순서로 미리 정해진 개수의 레이어들을 탐색하는 단계; 및 상기 레이어들 사이의 상기 유휴 시간 차이를 비교하는 단계를 포함할 수 있다.
상기 스케쥴링하는 단계는 상기 유휴 시간 차이가 임계값보다 클 경우, 상기 유휴 시간이 최소인 제1 레이어를 스케쥴링하는 단계를 포함할 수 있다.
상기 스케쥴링하는 단계는 상기 유휴 시간 차이가 임계값보다 작거나 같을 경우, 상기 레이어들 중에서 QoS 슬랙 시간이 가장 작은 레이어를 스케쥴링하는 단계를 포함할 수 있다.
상기 가속기의 상태는 상기 가속기에 포함된 메모리의 사용 정보; 상기 가속기의 연산 리소스가 마지막으로 활용된 시점 및 메모리 액세스 리소스가 활용되기 시작한 시점 간 차이; 및 상기 복수의 모델들 각각의 진행 상태 중 적어도 하나를 포함할 수 있다.
일 실시예에 따른 가속기에서 실행할 모델을 스케줄링하는 스케줄러는 하나 이상의 프로세서를 포함하고, 상기 하나 이상의 프로세서는 상기 가속기에서 서로 독립적으로 실행되는 복수의 모델들에 대한 하나 이상의 실행 요청을 수신하고, 상기 복수의 모델들 각각에 대응하는 QoS(Quality of Service) 정보를 예측하고, 상기 복수의 모델들 각각에서 스케줄링 대상이 되는 후보 레이어가 상기 가속기에서 실행될 때 발생하는 유휴 시간(idle time) 및 상기 QoS 정보 중 적어도 하나에 기초하여, 상기 복수의 모델들을 레이어 단위로 스케줄링할 수 있다.
상기 프로세서는 상기 복수의 모델들 각각의 후보 레이어 중에서 상기 가속기의 상태에서 상기 유휴 시간이 최소인 제1 레이어를 탐색하고, 상기 복수의 모델들 각각에 대응하는 상기 QoS 정보에 기초하여, 상기 제1 레이어의 스케쥴링 여부를 결정할 수 있다.
상기 프로세서는 상기 복수의 모델들 각각에 대응하는 QoS 슬랙 시간(QoS slack time)을 예측하고, 상기 복수의 모델들 각각에 대응하는 스탠드얼론 실행 시간(standalone execution time)을 예측할 수 있다.
상기 프로세서는 상기 복수의 모델들 중에서, QoS 슬랙 시간이 스탠드얼론 실행 시간보다 작거나 같은 모델이 있는지 판단하고, 상기 QoS 슬랙 시간이 상기 스탠드얼론 실행 시간보다 작거나 같은 모델이 없을 경우, 상기 제1 레이어를 스케쥴링할 수 있다.
상기 프로세서는 상기 복수의 모델들 중에서, QoS 슬랙 시간이 스탠드얼론 실행 시간보다 작거나 같은 모델이 있는지 판단하고, 상기 QoS 슬랙 시간이 상기 스탠드얼론 실행 시간보다 작거나 같은 모델이 있을 경우, 해당 모델의 제2 레이어를 스케쥴링할 수 있다.
상기 프로세서는 상기 복수의 모델들 각각의 후보 레이어 중에서 상기 가속기의 상태에서 상기 유휴 시간이 작은 순서로 미리 정해진 개수의 레이어들을 탐색하고, 상기 레이어들 사이의 상기 유휴 시간 차이를 비교할 수 있다.
상기 프로세서는 상기 유휴 시간 차이가 임계값보다 클 경우, 상기 유휴 시간이 최소인 제1 레이어를 스케쥴링할 수 있다.
상기 프로세서는 상기 유휴 시간 차이가 임계값보다 작거나 같을 경우, 상기 레이어들 중에서 QoS 슬랙 시간이 가장 작은 레이어를 스케쥴링할 수 있다.
상기 가속기의 상태는 상기 가속기에 포함된 메모리의 사용 정보; 상기 가속기의 연산 리소스가 마지막으로 활용된 시점 및 메모리 액세스 리소스가 활용되기 시작한 시점 간 차이; 및 상기 복수의 모델들 각각의 진행 상태 중 적어도 하나를 포함할 수 있다.
일 실시예에 따른 전자 장치는 상기 가속기에서 서로 독립적으로 실행되는 복수의 모델들에 대한 하나 이상의 실행 요청을 수신하고, 상기 복수의 모델들 각각에 대응하는 QoS(Quality of Service) 정보를 예측하고, 상기 복수의 모델들 각각에서 스케줄링 대상이 되는 후보 레이어가 상기 가속기에서 실행될 때 발생하는 유휴 시간(idle time) 및 상기 QoS 정보 중 적어도 하나에 기초하여, 상기 복수의 모델들을 레이어 단위로 스케줄링하는 스케줄러; 및 상기 스케줄러에서 결정된 스케줄에 따라 상기 복수의 모델들을 레이어 단위로 실행하는 가속기를 포함한다.
도 1a 및 도 1b는 일실시예에 따른 전자 장치를 설명하기 위한 도면이다.
도 2는 일실시예에 따른 가속기의 하드웨어 리소스를 설명하기 위한 도면이다.
도 3은 일실시예에 따른 전자 장치에서 레이어 단위 스케줄링을 수행하는 동작을 설명하기 위한 도면이다.
도 4a 및 도 4b는 일실시예에 따른 유휴 시간을 설명하기 위한 도면이다.
도 5는 일 실시예에 따른 스케줄러의 동작 방법을 설명하기 위한 도면이다.
도 6은 일 실시예에 따른 스케줄러의 블록도를 도시한 설명하기 도면이다.
도 7은 일 실시예에 따른 가속기에서 실행할 모델을 결정하는 스케줄러의 동작 방법을 설명하기 위한 순서도이다.
도 8 및 도 9는 일실시예에 따른 전자 장치의 예시들을 나타낸 도면이다.
본 명세서에서 개시되어 있는 특정한 구조적 또는 기능적 설명들은 단지 기술적 개념에 따른 실시예들을 설명하기 위한 목적으로 예시된 것으로서, 실제로 구현된 형태는 다양한 다른 모습을 가질 수 있으며 본 명세서에 설명된 실시예로만 한정되지 않는다.
제1 또는 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 이해되어야 한다. 예를 들어 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 표현들, 예를 들어 "~간의"와 "바로~간의" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 실시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
실시예들은 퍼스널 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 스마트 폰, 텔레비전, 스마트 가전 기기, 지능형 자동차, 키오스크, 웨어러블 장치 등 다양한 형태의 제품으로 구현될 수 있다. 이하, 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
도 1a 및 도 1b는 일실시예에 따른 전자 장치를 설명하기 위한 도면이다.
도 1a을 참조하면, 일실시예에 따른 전자 장치(100)는 호스트 프로세서(110), 오프-칩 메모리(off-chip memory)(120), 메모리 컨트롤러(130) 및 가속기(140)를 포함할 수 있다. 호스트 프로세서(110), 오프-칩 메모리(120), 메모리 컨트롤러(130) 및 가속기(140)는 버스(bus), NoC(Network on a Chip), PCIe(Peripheral Component Interconnect Express) 등을 통하여 서로 통신할 수 있다.
호스트 프로세서(110)는 전자 장치(100)에 포함된 컴포넌트들의 동작을 제어하는 장치로, 예를 들어, 중앙 처리 장치(CPU; Central Processing Unit)를 포함할 수 있다. 호스트 프로세서(110)는 뉴럴 네트워크를 가속기(140)에서 처리하기 위한 하나 이상의 요청을 수신하고, 해당 요청에 응답하여 가속기(140)에서 실행 가능한 명령어를 생성한다. 요청은 뉴럴 네트워크에 기반한 데이터 추론을 위한 것으로, 예를 들어, 객체 인식, 패턴 인식, 컴퓨터 비전, 음성 인식, 기계 번역, 기계 통역 등을 위해 가속기(140)로 하여금 뉴럴 네트워크를 실행하게 하여 데이터 추론 결과를 얻기 위한 것일 수 있다. 호스트 프로세서(110)는 추론 대상 데이터와 뉴럴 네트워크의 파라미터들을 가속기(140)로 전달할 수 있다. 나아가, 요청은 뉴럴 네트워크 학습을 위한 것을 더 포함할 수 있고, 이 경우 호스트 프로세서(110)는 학습 대상 데이터와 뉴럴 네트워크의 파라미터들을 가속기(140)로 전달할 수 있다.
오프-칩 메모리(120)는 가속기(140)의 외부에 배치된 메모리로서, 예를 들어, 전자 장치(100)의 메인 메모리로 활용되는 DRAM(Dynamic Random Access Memory)일 수 있다. 오프-칩 메모리(120)는 추론 대상 데이터 및/또는 가속기(140)에서 실행할 뉴럴 네트워크의 파라미터들을 저장할 수 있으며, 저장된 데이터는 이후 추론 수행을 위해 가속기(140)로 전달될 수 있다. 또한, 오프-칩 메모리(120)는 가속기(140)에서 뉴럴 네트워크를 실행하는 데 가속기(140) 내부의 온-칩 메모리(on-chip memory)가 충분하지 않은 경우에 활용될 수도 있다.
오프-칩 메모리(120)는 가속기(140) 내부의 온-칩 메모리보다 큰 메모리 용량을 가지고 있으나, 뉴럴 네트워크 실행 시 가속기(140)가 오프-칩 메모리(120)로 액세스하는 비용이 내부의 온-칩 메모리로 액세스하는 비용보다 크다. 메모리 액세스 비용은 해당 메모리에 액세스하여 데이터를 읽거나 쓸 때 요구되는 전력 및/또는 시간을 나타낼 수 있다.
가속기(140)는 호스트 프로세서(110)의 명령어에 따른 뉴럴 네트워크를 실행하여 입력되는 데이터를 추론하는 AI 가속기(Artificial Intelligence accelerator)로서, 호스트 프로세서(110)와 구별되는 별도의 프로세서일 수 있다. 예를 들어, 가속기(140)는 NPU(Neural Processing Unit), GPU, TPU(Tensor Processing Unit), DSP(Digital Signal Processor) 등일 수 있다.
가속기(140)는 뉴럴 네트워크에 따른 연산들의 특성 상 범용의 호스트 프로세서(110)에서 처리되기 보다는 별도의 전용 프로세서(다시 말해, 가속기(140))에서 처리되는 것이 보다 효율적인 작업들을 처리할 수 있다. 이때 가속기(140)에 포함된 하나 이상의 프로세싱 엘리먼트들(PEs; Processing Elements) 및 온-칩 메모리가 활용될 수 있다. 온-칩 메모리는 가속기(140) 내부에 포함된 글로벌 쉐어드 버퍼(global shared buffer) 및/또는 로컬 버퍼(local buffer)를 포함하는 장치로서, 가속기(140) 외부에 위치하는 오프-칩 메모리(120)와 구분될 수 있다. 예를 들어, 온-칩 메모리는 주소 공간(address space)을 통해 액세스 가능한 스크래치패드 메모리(scratchpad memory), SRAM(Static Random Access Memory) 등을 포함할 수 있다.
뉴럴 네트워크는 복수의 레이어들을 포함한다. 일실시예에서, 뉴럴 네트워크는 입력 레이어, 복수의 히든 레이어들 및 출력 레이어를 포함한다. 각각의 레이어들은 인공 뉴런이라고도 불리는 복수의 노드들을 포함한다. 각 노드는 하나 이상의 입력 및 출력을 가지는 계산 단위를 나타내고, 노드들은 상호 연결될 수 있다. 노드들 간의 연결에는 가중치가 설정될 수 있으며, 이러한 가중치는 조정 또는 변경될 수 있다. 가중치는 연관된 데이터 값을 증폭, 감소 또는 유지시킴으로써 해당 데이터 값이 최종 결과에 미치는 영향도를 결정할 수 있다. 출력 레이어에 포함된 각각의 노드에는 이전 레이어에 포함된 노드들의 가중된 입력들이 입력될 수 있다. 가중된 데이터가 임의의 레이어로부터 다음 레이어로 입력되는 과정을 전파(propagation)라고 지칭할 수 있다.
일실시예에 따라 호스트 프로세서(110)에 다수의 요청이 수신되면, 가속기(140)는 호스트 프로세서(110)에서 전달된 명령어에 따라 복수의 뉴럴 네트워크들을 실행할 수 있다. 이때, 가속기(140)에서 실행되는 복수의 뉴럴 네트워크들은 서로 상이한 구조의 뉴럴 네트워크이거나, 또는 동일 뉴럴 네트워크가 여러 번 실행되는 것일 수 있다. 만약 호스트 프로세서(110)에 요청이 수신된 순서에 따라 단순히 복수의 뉴럴 네트워크들이 가속기(140)에서 실행된다면, 각 뉴럴 네트워크의 워크로드 특성 상 실행 중간에 가속기(140)의 하드웨어 리소스가 사용되지 않는 유휴 시간을 줄이기 어렵고, 늦게 수신된 요청이 이전 요청을 처리하는 동안 크게 지연되는 테일-레이턴시(tail-latency)가 크게 발생할 수 있다. 이러한 가속기 활용률(utilization) 저하를 방지할 수 있도록 가속기(140)에서 실행되는 복수의 뉴럴 네트워크들을 스케줄링할 필요가 있으며, 특히 복수의 뉴럴 네트워크들을 레이어 단위로 스케줄링함으로써 실행 중간에 발생하는 유휴 시간을 최소화시킬 수 있다. 본 명세서에서 뉴럴 네트워크는 설명의 편의를 위해 모델로도 지칭될 수 있다.
도 1b를 참조하면, 일실시예에 따른 스케줄링된 모델을 실행하는 가속기(140)의 예시적인 구조가 도시된다. 가속기(140)는 복수의 프로세싱 엘리먼트들 및 복수의 프로세싱 엘리먼트들 중 적어도 하나가 액세스 가능한 멀티레벨 메모리를 포함할 수 있다. 멀티레벨 메모리는 가속기(140)의 온-칩 메모리에 해당하는 레벨0 메모리(141-1), 레벨1 메모리(142-1), 레벨2 메모리(143-1)를 통칭하는 표현이다.
복수의 프로세싱 엘리먼트들 중 어느 하나인 프로세싱 엘리먼트(141)는 레벨0 메모리(141-1), 레벨0 DMA(141-3), MAC(Multiplier-Accumulator)(141-5), 레벨0 컨트롤러(141-7)를 포함할 수 있다.
레벨0 메모리(141-1)는 대응하는 프로세싱 엘리먼트(141)가 액세스 가능한 메모리일 수 있다. 달리 표현하면, 레벨0 메모리(141-1)는 가속기(140)에 포함된 복수의 프로세싱 엘리먼트들 중에서 하나의 프로세싱 엘리먼트(141)로부터만 액세스될 수 있다.
레벨0 DMA(141-3)는 레벨0 컨트롤러(141-7)의 명령에 따라 레벨0 메모리(141-1)의 입력 데이터 및/또는 출력 데이터를 제어할 수 있다. 레벨0 DMA(141-3)는 레벨0 컨트롤러(141-7)로부터의 명령에 포함된 출발지(source), 목적지(destination), 데이터 크기에 대한 정보에 따라 레벨0 메모리(141-1)에서 특정 데이터를 읽거나, 레벨0 메모리(141-1)에 특정 데이터를 쓸 수 있다.
이때, 레벨0 메모리(141-1)에 입력되거나 레벨0 메모리(141-1)에서 출력되는 데이터는 모니터링 및/또는 프로파일링될 수 있는데, 이러한 모니터링 및/또는 프로파일링 동작은 레벨0 DMA(141-3)에서 수행되거나, 또는 별도의 엘리먼트에서 수행될 수 있다. 모니터링 및/또는 프로파일링을 통해, 레벨0 메모리(141-1)의 액세스 비용, 레벨0 메모리(141-1)의 사용 정보, 레벨0 메모리(141-1)에 저장된 데이터 종류 등이 확인될 수 있다. 예를 들어, 레벨0 DMA(141-3)은 레벨0 메모리(141-1)의 사용 정보가 몇 퍼센트인지, 레벨0 메모리(141-1)에 저장된 데이터가 어떤 워크로드에 관한 것인지 확인할 수 있다.
MAC(141-5)은 프로세싱 엘리먼트(141)에 할당된 워크로드의 연산을 수행할 수 있다. 예를 들어, MAC(141-5)은 주어진 데이터에 대해 곱셈 누적 연산을 수행할 수 있다. 또한, MAC(141-5)은 주어진 데이터에 대해 활성 함수(activation function)를 적용시킬 수 있다. 활성 함수는 예를 들어 시그모이드(sigmoid), 하이퍼볼릭 탄젠트(hyperbolic tangent; tanh), 렐루(rectified linear unit; ReLU) 등을 포함할 수 있다.
레벨0 컨트롤러(141-7)는 프로세싱 엘리먼트(141)에 포함된 컴포넌트들을 제어하는 장치로서, 예를 들어, 레벨0 메모리(141-1), 레벨0 DMA(141-3) 및 MAC를 제어할 수 있다.
앞선 프로세싱 엘리먼트(141)에 대한 설명은 가속기(140)에 포함된 복수의 프로세싱 엘리먼트들 각각에 마찬가지로 적용될 수 있다. 다시 말해, 가속기(140)는 각각이 독자적으로 연산을 수행할 수 있는 복수의 프로세싱 엘리먼트들을 포함할 수 있다.
일실시예에서, 복수의 프로세싱 엘리먼트들은 n개의 프로세싱 엘리먼트들마다 클러스터링될 수 있다. 여기서, n은 1보다는 크고, 가속기(140)에 포함된 프로세싱 엘리먼트들 개수 보다는 작은 자연수일 수 있다. 달리 표현하면, 가속기(140)에 포함된 복수의 프로세싱 엘리먼트들 중 일부가 클러스터링될 수 있으며, 이에 대해서는 클러스터링된 프로세싱 엘리먼트들(142)을 기준으로 설명한다.
클러스터링된 프로세싱 엘리먼트들(142)은 하나의 레벨1 메모리(142-1)를 공유할 수 있다. 달리 표현하면, 레벨1 메모리(142-1)는 클러스터링된 프로세싱 엘리먼트들(142)에 의해 액세스될 수 있다. 예를 들어, 클러스터링된 프로세싱 엘리먼트들(142) 내 제1 프로세싱 엘리먼트와 제2 프로세싱 엘리먼트 각각에서 수행되는 연산들이 서로 상이하더라도 해당 연산에 필요한 데이터 일부는 공통될 수 있다. 이러한 공통되는 데이터를 제1 프로세싱 엘리먼트와 제2 프로세싱 엘리먼트 각각의 레벨0 메모리(141-1)에 각자 저장하기 보다는 레벨1 메모리(142-1)에 저장하여 제1 프로세싱 엘리먼트와 제2 프로세싱 엘리먼트가 공유함으로써, 가속기(140)의 효율을 높일 수도 있다. 도 1b에 도시된 개념적 예시에서, 프로세싱 엘리먼트들 각각은 자신과 인접한 레벨1 메모리(142-1)에 액세스할 수 있다.
도 1b에서는 미도시되었지만, 레벨1 메모리(142-1)의 데이터 입출력을 제어하는 레벨1 DMA에서 레벨1 메모리(142-1)에 입력되거나 레벨1 메모리(142-1)에서 출력되는 데이터를 모니터링 및/또는 프로파일링할 수 있다. 또한, 레벨1 컨트롤러도 존재하여 레벨1 메모리(142-1) 및 레벨1 DMA를 제어할 수 있다.
또한, 복수의 프로세싱 엘리먼트들 전체(143)는 레벨2 메모리(143-1)를 공유할 수 있다. 달리 표현하면, 레벨2 메모리(143-1)는 가속기(140)에 포함된 복수의 프로세싱 엘리먼트들에 의해 액세스될 수 있다. 예를 들어, 가속기(140)에 포함된 복수의 프로세싱 엘리먼트들 중 동일한 그룹으로 클러스터되지 않았지만 수행하는 연산에 필요한 데이터 일부가 공통되는 프로세싱 엘리먼트들이 존재할 수 있다. 이러한 프로세싱 엘리먼트들은 레벨1 메모리(142-1)를 통해서는 해당 데이터를 공유하지 못하지만 레벨2 메모리(143-1)를 통해 공통되는 데이터를 효율적으로 공유하여 가속기(140)의 효율을 높일 수 있다. 마찬가지로 도 1b에서는 미도시되었지만, 레벨2 메모리(143-1)의 데이터 입출력을 제어하는 레벨2 DMA에서 레벨2 메모리(143-1)에 입력되거나 레벨2 메모리(143-1)에서 출력되는 데이터를 모니터링 및/또는 프로파일링할 수 있다. 또한, 레벨2 메모리(143-1) 및 레벨2 DMA를 제어하는 레벨2 컨트롤러도 존재할 수 있다.
정리하면, 각 프로세서 유닛들은 자신의 레벨0 메모리(141-1), 자신과 인접한 레벨1 메모리(142-1), 가속기(140)의 레벨2 메모리(143-1)에 액세스할 수 있고, 할당된 워크로드를 수행할 때 이러한 메모리들을 활용할 수 있다. 이처럼, 가속기(140)는 멀티레벨 메모리를 포함할 수 있으며, 포함된 메모리들은 계층적(hierarchy)일 수 있다. 또한, 가속기(140)에 포함된 DMA, 컨트롤러도 계층적 멀티레벨을 가질 수 있다.
도 1b의 예시에서, 가속기(140)에 포함된 복수의 프로세싱 엘리먼트들은 4개의 워크로드들을 동시에 수행할 수 있다. 예컨대, 연산량이 많은 워크로드는 많은 수의 프로세싱 엘리먼트들에 할당되어 처리되고, 연산량이 상대적으로 적은 워크로드는 적은 수의 프로세싱 엘리먼트들에 할당되어 처리될 수 있다.
도 1b에서는 설명의 편의를 위해 64개의 프로세싱 엘리먼트들이 8개씩 클러스터링되어 4개의 워크로드들이 수행될 때 3개 레벨 메모리들이 활용되는 것으로 도시되어 있으나, 이외에도 다양한 개수의 프로세싱 엘리먼트, 워크로드, 레벨이 제한 없이 적용될 수 있다.
이하, 도면들을 참조하여 모델들을 스케줄링하는 과정을 상세히 설명한다.
도 2는 일실시예에 따른 가속기의 하드웨어 리소스를 설명하기 위한 도면이다.
도 2를 참조하면, 일실시예에 따른 가속기(210) 및 오프-칩 메모리(220)가 도시된다.
일실시예에서, 가속기(210)는 글로벌 쉐어드 버퍼 및 글로벌 쉐어드 버퍼를 공유하는 복수의 PE 어레이들을 포함할 수 있다. 각 PE 어레이들은 로컬 버퍼 및 로컬 버퍼를 공유하는 복수의 프로세싱 엘리먼트들(PEs)을 포함할 수 있다. 여기서, 글로벌 쉐어드 버퍼와 로컬 버퍼는 가속기(210) 내부에 위치하는 것으로 온-칩 메모리로 지칭될 수 있다.
가속기(210)에서 모델 실행을 위해, 메모리 액세스를 통해 모델 실행에 필요한 데이터를 읽고, 하나 이상의 프로세싱 엘리먼트들에서 연산을 수행하고, 연산 결과를 메모리에 저장하는 과정이 반복적으로 수행될 수 있다. 여기서 메모리는 온-칩 메모리뿐만 아니라 오프-칩 메모리(220)도 포함할 수 있다.
온-칩 메모리는 가속기(210) 내부에 위치한 메모리로서 메모리 액세스 비용이 오프-칩 메모리(220)보다 낮으나, 메모리 용량이 오프-칩 메모리(220)보다 작아서 온-칩 메모리만으로는 프로세싱 엘리먼트들에서 연산 처리를 위한 데이터를 모두 저장하기가 충분하지 않을 수 있고, 이 경우 오프-칩 메모리(220)가 활용될 수 있다.
이처럼 가속기(210)에서 모델을 실행하기 위해 여러 하드웨어 리소스가 이용될 수 있고, 정리하면 하나 이상의 프로세싱 엘리먼트들에 기반한 연산 리소스와 온-칩 메모리 및/또는 오프-칩 메모리(220)에 기반한 메모리 액세스 리소스가 활용될 수 있다.
예를 들어, 연산 리소스는 프로세싱 엘리먼트에서 처리 가능한 연산량을 나타내고, FLOPS(Floating point Operations Per Second), TOPS(Tera Operations Per Second) 단위로 표현될 수 있다. 메모리 액세스 리소스는 PE 어레이들 사이의 NoC(Network on a Chip) 대역폭, 가속기(210)와 오프-칩 메모리(220) 사이의 메모리 대역폭을 나타내고, GB/s 단위로 표현될 수 있다. 또한, 메모리 액세스 리소스는 글로벌 쉐어드 버퍼 및 로컬 버퍼의 메모리 용량을 나타내고, MB 단위로 표현될 수도 있다.
일실시예에서, 메모리 대역폭은 상대적으로 고용량의 오프-칩 메모리(220)에 저장된 데이터를 연산을 위해 가속기(210) 내 상대적으로 저용량의 글로벌 쉐어드 버퍼로 이동시키기 위한 것이고, NoC 대역폭은 글로벌 쉐어드 버퍼로 이동된 데이터를 실제 연산을 수행하는 PE 어레이로 이동시키기 위한 것으로, 일반적으로 메모리 대역폭이 가속기(210) 내부의 NoC 대역폭보다 작을 수 있다.
모델들 및/또는 각 모델에 포함된 레이어들은 상이한 워크로드 특성을 가질 수 있고, 이로 인해 각 모델이나 각 레이어에서 요구되는 연산 리소스와 메모리 액세스 리소스가 상이할 수 있다. 따라서, 모델들 및/또는 각 모델에 포함된 레이어들의 워크로드 특성을 고려한 스케줄링을 통해 가속기 내 각 리소스들이 활용되는 시간이 최대한 겹치도록 하여 유휴 시간을 최소화시키고 전체 시스템 성능을 향상시킬 수 있다.
일실시예에서, 모델 스케줄링에서는 데이터 의존성(data dependency)과 온-칩 메모리의 가용여부가 고려될 수 있다.
데이터 의존성은 프로그래머 또는 컴파일러가 원하는 결과를 얻기 위해 의도한 데이터 간의 계산 순서를 나타내는 것으로, 한 모델에 포함된 복수의 레이어들은 미리 정해진 순서에 따라 순차적으로 처리될 수 있다. 다만, 가속기(210)에서 처리되는 복수의 모델들 간에는 데이터 의존성이 없으므로, 모델들 간 처리 순서가 바뀌더라도 무방할 수 있다. 예를 들어, 제1 모델에 포함된 한 레이어를 처리한 후에는 해당 레이어의 후속 레이어를 처리하거나, 또는 제2 모델에서 이어서 처리되어야 할 레이어를 처리할 수 있다. 이처럼 제1 모델과 제2 모델 간 처리 순서가 레이어 단위로 변경될 수 있다.
온-칩 메모리의 가용여부가 가속기(210)의 처리를 제한할 수도 있다. 온-칩 메모리는 가속기(210) 내부 메모리로서 빠른 액세스가 가능하지만 메모리 용량이 프로세싱 유닛들에서 연산을 수행하기에 충분하지 않을 수 있다. 가속기(210)의 외부 메모리에 해당하는 오프-칩 메모리(220)를 활용하는 경우에는 앞서 설명한 것처럼 메모리 액세스 시간이 온-칩 메모리보다 크기 때문에 스케줄링 수행 시 고려될 수 있다. 다시 말해, 모델들 각각의 중간 데이터가 가속기(210)의 온-칩 메모리에 재사용되는 방식도 메모리 액세스 비용에 영향을 미치므로 스케줄링에 고려될 수 있다.
도 3은 일실시예에 따른 전자 장치에서 레이어 단위 스케줄링을 수행하는 동작을 설명하기 위한 도면이다.
도 3을 참조하면, 일실시예에 따른 전자 장치에 포함된 호스트 장치(310)와 가속기 장치(320)는 PCIe로 서로 연결되어, 호스트 장치(310)에서 결정된 스케줄링에 의해 가속기 장치(320)에서 모델이 실행될 수 있다. 다만, 호스트 장치(310)와 가속기 장치(320) 간 연결을 PCIe로 한정하는 것은 아니고, 다른 형태의 연결에도 본 명세서의 설명이 적용될 수 있다.
호스트 장치(310)는 호스트 메모리, 호스트 프로세서, 입력 스토리지를 포함할 수 있다. 호스트 메모리는 단일 또는 다수의 사용자로부터의 요청들을 저장하는 요청 큐(Request Queue)를 포함할 수 있다. 요청 큐는 가속기 장치(320)가 지원하는 모델에 대한 실행 요청들 계속해서 축적할 수 있다. 도 3에 도시된 BERT, ResNet 등은 사용자로부터 실행 요청을 받은 모델들을 나타낼 수 있다.
호스트 프로세서는 요청 큐에 저장된 요청들에 대응하는 모델들 중에서 다음에 실행할 레이어를 스케줄링하는 스케줄러(scheduler)를 포함할 수 있다.
스케줄러는 온라인으로 가속기 장치(320)에서 스케줄링된 레이어의 실행이 완료될 때마다 호출되어 해당 시점에서 가속기 장치(320)의 유휴 시간을 최소화하는 레이어를 스케줄링할 수 있다. 달리 표현하면, 스케줄러는 호출된 시점에 가용한 사용자 요청들에 대응하는 복수의 모델들 각각에서 스케줄링 대상이 되는 후보 레이어가 가속기 장치(320)에서 실행될 때 발생하는 유휴 시간을 계산해서, 유휴 시간이 최소인 레이어를 스케줄링하여 가속기 장치(320)에서 실행되게 할 수 있다. 복수의 모델들 사이에 데이터 의존성이 없으므로, 스케줄러는 요청 순서에 독립적으로 모델들을 레이어 단위로 스케줄링할 수 있다.
이처럼, 스케줄러는 매 레이어 실행이 완료될 때마다 각 후보 레이어 선택 시 발생하는 가속기 장치(320)의 유휴 시간을 계산하고, 이러한 유휴 시간이 최소인 레이어를 스케줄링함으로써, 각 모델에 포함된 레이어들의 전체 실행 고려 없이 일부 레이어들에 기반한 런타임 스케줄링을 통해서도 가속기 장치(320)의 스루풋(throughput) 및 성능을 최대화시킬 수 있다.
다만, 사용자 요청의 QoS(Quality-of-Service)를 고려하지 않고, 스루풋 최대화만을 목표로 사용자 요청을 스케줄링하게 될 경우, 단일 사용자 요청이 스케줄링에 의해서 지나치게 지연되는 것을 방지하지 못할 수 있다. 이러할 경우, 과도한 양의 사용자 요청이 쌓여 서버 부하량이 증가되고, 전체 서비스의 단위 시간당 처리량(예를 들어, 스루풋)은 증가시키지만, 개개의 사용자 요청 서비스 시간(Service Latency)을 길어지게 만들어 결국 QoS을 저하시킬 수 있다.
일 실시예에 따른 QoS는 서비스를 제공함에 있어서 공급자와 사용자간에 서비스에 대하여 협약한 측정지표와 목표를 의미할 수 있고, SLA(Service Level Agreement)로 지칭될 수도 있다. 나아가, QoS는 서비스 처리 시간에 의해 정의될 수 있다. 예를 들어, 클라우드에 입력된 사용자 요청이 예상 범위 이내의 지연시간을 (Service latency) 갖고 서비스 되는 것을 QoS가 높다고 지칭될 수 있다.
이에, 일 실시예에 따른 스케줄러는 스루풋을 우선시하는 스케줄링과 QoS 관리를 우선시하는 스케줄링을 적절한 시점에 전환하며 실행할 수 있다. 아래에서 상세히 설명하겠지만, 이를 위해서 스케줄러는 QoS 바이올레이션(QoS violation)이 가까운 시점을 예측하고, 그 직전까지는 스루풋을 우선시하는 반면, QoS 바이올레이션에 가까운 시점이 오면 해당 사용자 요청을 우선시하여 QoS 바이올레이션을 막을 수 있다. QoS 바이올레이션(QoS violation)은 서비스가 제공하는 품질이 미리 정해진 임계값 미만으로 떨어진 상태를 의미하며, QoS 실패(failure)로 지칭될 수도 있다. 보다 구체적으로, QoS 바이올레이션은 클라우드에 입력된 사용자 요청이 미리 정해진 임계값 보다 지연된 상태를 의미할 수 있다. 이러한 QoS 관리를 고려한 스케줄링 동작은 도 5 내지 도 7를 통해 상세히 설명한다.
또한, 가속기 장치(320)에서 실행되는 레이어가 전환될 때마다(이를 테면, 컨텐츠 스위칭) 스케줄러가 호출되더라도 실시간 스케줄링이 가능하며, 다수의 모델에 대한 확장성도 지원할 수 있다.
일 실시예에서, 다음의 가속기 상태가 추적 및 기록될 수 있으며, 스케줄러는 가속기 상태를 이용하여 스케줄링을 수행할 수 있다. 가속기 상태는 가속기에 포함된 메모리의 사용 정보(예컨대, 온-칩 메모리의 전체 용량, 사용 용량 및/또는 남은 용량 등; MB 단위), 가속기의 연산 리소스가 마지막으로 활용된 시점 및 메모리 액세스 리소스가 활용되기 시작한 시점 간 차이(예컨대, 사이클(cycle) 단위), 복수의 모델들 각각의 진행 상태(예컨대, n번째 레이어 등으로 표현되는 것으로, 동일 모델에 포함된 레이어들에서는 데이터 의존성이 존재하는 것을 고려) 중 적어도 하나를 포함할 수 있다.
또한, 스케줄러는 온-칩 메모리의 상태에 따라 미래에 유휴 시간이 발생할 수 있는 잠재적인 가능성을 계산함으로써, 현재 시점의 레이어 선택이 미래의 레이어 스케줄링에 주는 영향도 고려하여 스케줄링을 수행할 수 있다.
스케줄러는 요청 큐에 저장된 모든 모델들의 실행이 완료될 때까지 상술된 스케줄링을 수행할 수 있다.
입력 스토리지는 모델 실행을 위한 모델 파라미터와 추론 대상이 되는 입력 데이터를 포함할 수 있다.
호스트 장치(310)는 스케줄러에서 결정된 어느 시점에 어떤 레이어를 수행할지에 대한 가속기 명령어를 가속기 장치(320)로 전달할 수 있고, 가속기 장치(320)는 가속기 명령어에 따라 레이어를 실행하고, 레이어 실행이 완료된 모델의 추론 결과를 호스트 장치(310)로 리턴할 수 있다.
상술된 방식을 통해, 레이어 단위의 런타임 스케줄링 수행을 위한 별도의 전용 하드웨어나 보조 하드웨어의 추가 없이도 런타임 스케줄러를 효과적으로 구현할 수 있다.
도 4a 및 도 4b는 일실시예에 따른 유휴 시간을 설명하기 위한 도면이다.
도 4a 및 도 4b를 참조하여, QoS 관리를 고려한 스케줄링 동작을 설명하기에 앞서, 스루풋을 우선시하는 스케줄링하는 방법에 관해 설명한다.
연산 리소스에서 연산이 수행되기 위해서는 메모리 액세스 리소스를 통해 연산 대상이 되는 데이터를 읽는 과정이 선행되어야 한다. 또한, 메모리 액세스 리소스와 연산 리소스는 병렬적으로 동작할 수 있으므로, 연산 리소스에서 연산 동작이 수행되는 동안, 다음 연산을 위한 데이터를 메모리 액세스 리소스를 통해 미리 읽음으로써, 연산 리소스에서 현재 연산 동작이 완료되면 이어서 다음 연산 동작이 수행되게 하여 불필요한 유휴 시간을 줄일 수 있다. 이러한 메모리 액세스 리소스와 연산 리소스의 유휴 시간이 작을수록 가속기의 활용률이 향상될 수 있어 높은 성능을 기대할 수 있다.
도 4a를 참조하면, 일실시예에 따른 연산 리소스의 유휴 시간을 설명하기 위한 예시가 도시된다. 도 4a에 예시적으로 도시된 "1"은 스케줄링된 1번째 레이어로서 가장 최근에 스케줄링된 이전 레이어를 나타내고, "2"는 1번째 레이어의 실행 완료 후 이어서 실행할 2번째 레이어로서 스케줄링 대상이 되는 후보 레이어를 나타낼 수 있다.
도 4a의 예시에서, 메모리 액세스 리소스를 통해 1번째 레이어의 데이터가 로딩되면, 이어서 연산 리소스에서 1번째 레이어에 대한 연산이 수행되고, 메모리 액세스 리소스에서 다음에 실행할 2번째 레이어에 대한 메모리 액세스가 시작될 수 있다. 이때, 2번째 레이어에 대한 메모리 액세스 시간이 1번째 레이어에 대한 연산 시간보다 길다면, 2번째 레이어에 대한 메모리 액세스가 완료되지 않아 2번째 레이어 연산을 위한 모델 파라미터 등이 충분히 준비되지 않았으므로 연산 리소스에서 1번째 레이어에 대한 연산이 종료되더라도 이어서 2번째 레이어에 대한 연산이 수행될 수 없고, 2번째 레이어의 메모리 액세스가 완료될 때까지 유휴 시간이 발생한다. 정리하면, 연산 리소스의 유휴 시간은 스케줄링 대상이 되는 후보 레이어에 대한 메모리 액세스의 실행 시간이 가장 최근에 스케줄링된 이전 레이어에 대한 연산 리소스의 실행 시간보다 긴 경우에 발생할 수 있다.
일 실시예에서, 스케줄러는 이전 레이어에 대해 연산 리소스가 마지막으로 실행된 시점 t2과 메모리 액세스 리소스가 마지막으로 실행된 시점 t1 간 차이와 스케줄링 대상이 되는 후보 레이어에 대한 메모리 액세스 리소스의 실행 시간에 기초하여, 연산 리소스의 유휴 시간을 결정할 수 있다. 예를 들어, 스케줄러는 후보 레이어에 대한 메모리 액세스 리소스의 실행 시간에서 시점 t1과 시점 t2 간 차이를 차감함으로써, 연산 리소스의 유휴 시간을 계산할 수 있다.
도 4b를 참조하면, 일실시예에 따른 메모리 액세스 리소스의 유휴 시간을 설명하기 위한 예시가 도시된다. 도 4b에서 예시적으로 도시된 "1"은 스케줄링된 1번째 레이어이고, "2"는 스케줄링된 2번째 레이어로서 가장 최근에 스케줄링된 이전 레이어를 나타내고, "3"은 2번째 레이어의 실행 완료 후 이어서 실행할 3번째 레이어로서 스케줄링 대상이 되는 후보 레이어를 나타낼 수 있다.
도 4b의 예시에서, 메모리 액세스 리소스를 통해 1번째 레이어의 데이터가 로딩되면, 이어서 연산 리소스에서 1번째 레이어에 대한 연산이 수행되고, 메모리 액세스 리소스는 이어서 2번째 레이어에 대한 데이터 로딩을 수행할 수 있다. 다만, 메모리 액세스 리소스는 온-칩 메모리의 한정적인 크기로 인해 이후 레이어들의 데이터 로딩을 온-칩 메모리의 여유 용량에 한해서 수행할 수 있다. 도 4b의 예시처럼, 1번째 레이어에 대한 연산 시간이 이후 레이어(예컨대, 2번째 레이어 및 3번째 레이어 등)에 대한 메모리 액세스 리소스의 실행 시간보다 긴 경우, 온-칩 메모리가 가득차서 더 이상의 데이터 로딩이 불가능한 시점 t1에 도달하면, 메모리 액세스 리소스의 유휴 시간이 발생한다. 연산 리소스에서 1번째 레이어에 대한 연산이 완료되면(도 4b의 시점 t2), 1번째 레이어의 연산과 관련된 데이터가 온-칩 메모리에서 제거되어 중단되었던 메모리 액세스 리소스의 실행이 재개될 수 있다.
스케줄러는 가속기의 온-칩 메모리의 크기 제한에 의해 스케줄링 대상이 되는 후보 레이어에 대한 메모리 액세스 리소스의 실행이 중단된 시점 t1 및 가장 최근에 스케줄링된 이전 레이어의 연산 리소스의 실행이 완료된 시점 t2에 기초하여 결정될 수 있다. 예를 들어, 스케줄러는 시점 t1과 시점 t2 간 차이를 메모리 액세스 리소스의 유휴 시간으로 계산할 수 있다. 또한, 스케줄러는 메모리 액세스 리소스의 유휴 시간을 계산할 때 앞서 설명한 가속기 상태를 고려할 수 있다.
일실시예에 따른 스케줄러는 복수의 모델들 각각에서 스케줄링 대상이 되는 후보 레이어 중 메모리 액세스 리소스의 유휴 시간과 연산 리소스의 유휴 시간의 합이 최소가 되는 레이어를 스케줄링할 수 있다. 만약 메모리 액세스 리소스의 유휴 시간과 연산 리소스의 유휴 시간의 합이 동일한 후보 레이어가 복수인 경우, 메모리 액세스 리소스의 유휴 시간이 최소인 레이어를 스케줄링할 수 있다. 다시 말해, 가속기의 연산 리소스가 마지막으로 활용된 시점 및 메모리 액세스 리소스가 활용되기 시작한 시점 간 차이가 온-칩 메모리에 의해 발생하는 메모리 액세스 리소스의 유휴 시간과 유사한 수준으로 유지되는 레이어가 우선적으로 스케줄링될 수 있다. 이를 통해, 다음 스케줄링에서 발생 가능한 유휴 시간을 최소화 시킬 수 있다.
도 5는 일 실시예에 따른 스케줄러의 동작 방법을 설명하기 위한 도면이다.
도 5 를 참조하면, 일 실시예에 따른 스케줄러는 복수의 모델들 각각에서 스케줄링 대상이 되는 후보 레이어가 가속기에서 실행될 때 발생하는 유휴 시간(idle time) 및 QoS 정보 중 적어도 하나에 기초하여, 복수의 모델들을 레이어 단위로 스케줄링할 수 있다. 예를 들어, 스케줄러는 QoS 바이올레이션(QoS violation)이 가까운 시점을 예측하고, 그 직전까지는 스루풋을 우선시하는 반면, QoS 바이올레이션에 가까운 시점이 오면 해당 사용자 요청을 우선시하여 QoS 바이올레이션을 막을 수 있다. 이러한 예측과 전환 기법을 효과적으로 구현하기 위해서 QoS 바이올레이션이 가까운 시점을 정확히 예측하는 과정이 선행되어야 한다.
QoS 바이올레이션이 가까운 시점을 정확히 예측하기 위하여, 스케줄러는 복수의 모델들 각각에 대응하는 스탠드얼론 실행 시간(standalone execution time) 및 복수의 모델들 각각에 대응하는 QoS 슬랙 시간(QoS slack time)을 예측할 수 있다. 여기서, 스탠드얼론 실행 시간 및 QoS 슬랙 시간은 각각 아래 수학식 1 및 수학식 2와 같이 표현할 수 있다.
Figure pat00001
Figure pat00002
수학식 1에서, C는 해당 DNN 모델의 현재 실행 인덱스이며, L은 마지막 실행 인덱스를 의미하고, memory time 및 compute time은 각각 메모리 액세스 리소스와 연산 리소스를 의미한다.
수학식 2에서, Enqueue Time은 사용자 요청이 서비스 큐에 들어온 시점의 타임 스탬프(timestamp), Current Time은 현재 스케줄러가 불린 시점의 마지막 타임 스탬프를, QoS constraint는 해당 서비스 요청이 시스템에 입력된 시점부터 실행되기까지 기대하는 제약 시간을 의미한다.
일 실시예에 따른 스케줄러는 QoS 슬랙 시간이 스탠드얼론 실행 시간보다 작거나 같은 모델이 있는지 판단할 수 있다. 만일, QoS 슬랙 시간이 스탠드얼론 실행 시간 보다 크면, 아직 다른 레이어를 실행할 여유가 남아있는 것이고, QoS 슬랙 시간이 스탠드얼론 실행 시간 보다 작거나 같으면 더이상 다른 레이어를 스케줄 할 수 없고, 해당 모델의 QoS 바이올레이션이 임박했다고 판단할 수 있다.
도 5를 참조하면, "A"는 가장 먼저 받은 서비스 요청에 따라 실행되는 첫번째 뉴럴 네트워크 모델을 나타내고, "B"는 두번째로 받은 서비스 요청에 따라 실행되는 두번째 뉴럴 네트워크 모델을 나태내고, "C"는 세번째로 받은 서비스 요청에 따라 실행되는 세번째 뉴럴 네트워크 모델을 나타낼 수 있다.
도 5의 예시에서, 그래프(510)는 사용자 요청의 QoS를 고려하지 않고, 스루풋 최대화만을 목표로 사용자 요청을 스케줄링하는 예시에 관한 것이다. 그래프(510)를 참조하면, 각 사용자 요청이 하나의 가속기 장치(예를 들어, NPU)에서 순차적으로 실행되며, 이때, "A"보다 뒤늦게 들어온 "B", "C"는 "A"로 인한 지연 시간 때문에 QoS 바이올레이션이 일어날 수 있다. 정리하면, 스루풋 최대화만을 목표로 사용자 요청을 스케줄링할 경우, 단일 사용자 요청이 스케줄링에 의해서 지나치게 지연되는 것을 방지하지 못할 수 있다.
그래프(520)는 사용자 요청의 QoS를 고려하는 스케줄링 방법의 예시에 관한 것으로, 그래프(520)를 참조하면 QoS 바이올레이션이 예측될 때마다 해당 요청을 우선적으로 스케줄링함으로써 높은 서비스 품질 및 사용자 요청의 최대 지연시간을 효과적으로 관리할 수 있다.
예를 들어, 스케줄러는 "A"의 QoS 슬랙 시간과 QoS 스탠드얼론 시간을 계산하고, QoS 슬랙 시간이 스탠드얼론 실행 시간 보다 작게되는 시점을 예측하고, 그 직전까지는 스루풋을 우선시하는 동작을 수행하는 반면, 예측한 시점이 오면 "A" 에 대한 연산을 수행하여 "A"의 QoS 바이올레이션을 막을 수 있다. 이후, 마찬가지로 스케줄러는 "B"의 QoS 슬랙 시간과 QoS 스탠드얼론 시간을 계산하고, QoS 슬랙 시간이 스탠드얼론 실행 시간 보다 작게되는 시점을 예측하고, 그 직전까지는 스루풋을 우선시하는 동작을 수행하는 반면, 예측한 시점이 오면 "B"에 대한 연산을 수행하여 "B"의 QoS 바이올레이션을 막을 수 있다.
그래프(530)를 참조하면, 사용자 요청의 QoS를 고려하여 스케줄링을 하였을 때, 그렇지 않았을 때보다 높은 서비스 품질 및 사용자 요청의 최대 지연시간을 효과적으로 관리할 수 있음을 알 수 있다.
도 6은 일 실시예에 따른 스케줄러의 블록도를 도시한 도면이다.
도 6을 참조하면, 일 실시예에 따른 스케줄러는 전환 매니저(transition manager)(610), 제1 스케줄러(620) 및 제2 스케줄러(630)를 포함할 수 있다.
일 실시예에 따른 사용자 요청이 전송되어 호스트 프로세서의 사용자 요청 큐(Request Queue)에 쌓일 수 있다. 호스트 프로세서는 가장 최근에 들어온 사용자 요청들 중 미리 정해진 개수를 스케줄러로 전달할 수 있다.
일 실시예에 따른 전환 매니저(610)는 전달 받은 사용자 요청들 각각에 대응하는 모델들 각각의 QoS 슬랙 시간 및 QoS 스탠드얼론 실행 시간을 예측할 수 있다. 나아가, 전환 매니저(610)는 제1 스케줄러(620)와 제2 스케줄러(630)를 전환하며 실행할 수 있다.
일 실시예에 따른 제1 스케줄러(620)는 스루풋을 우선시하는 스케줄링을 수행하는 스케줄러이고, 제2 스케줄러(620)는 QoS 관리를 우선시하는 스케줄링을 수행하는 스케줄러일 수 있다.
보다 구체적으로, 제1 스케줄러(620)는 복수의 모델들 각각에서 스케줄링 대상이 되는 후보 레이어 중 메모리 액세스 리소스의 유휴 시간과 연산 리소스의 유휴 시간의 합이 최소가 되는 레이어를 스케줄링할 수 있다. 제2 스케줄러(620)는 복수의 모델들 중에서, QoS 슬랙 시간이 스탠드얼론 실행 시간보다 작거나 같은 모델이 있는지 판단하고, 해당 모델이 있을 경우 해당 모델의 레이어를 스케쥴링할 수 있다.
정리하면, 제2 스케줄러(620)에서 QoS 슬랙 시간이 스탠드얼론 실행 시간보다 작거나 같은 모델이 있는지 판단하기 전까지는 제1 스케줄러(620)에 기초하여 스케줄링하고, 이후에 전환 매니저(610)는 제1 스케줄러(620)에서 제2 스케줄러(620)로 전환하여, 제2 스케줄러(620)에서 해당 모델을 스케줄링할 수 있다. 나아가, 해당 모델에 대한 연산이 완료될 경우, 전환 매니저(610)는 다시 제1 스케줄러(620)로 전환할 수 있다.
도 7은 일 실시예에 따른 가속기에서 실행할 모델을 결정하는 스케줄러의 동작 방법을 설명하기 위한 순서도이다.
도 7의 동작은 도시된 순서 및 방식으로 수행될 수 있지만, 도시된 실시예의 사상 및 범위를 벗어나지 않으면서 일부 동작의 순서가 변경되거나 일부 동작이 생략될 수 있다. 도 7 도시된 다수의 동작은 병렬로 또는 동시에 수행될 수 있다.
도 7을 참조하면, 단계(705)에서, 스케줄러는 가속기에서 서로 독립적으로 실행되는 복수의 모델들에 대한 하나 이상의 실행 요청을 수신할 수 있다.
단계(710)에서, 스케줄러는 복수의 모델들 각각에 대응하는 스탠드얼론 실행 시간을 예측할 수 있다.
단계(715)에서, 스케줄러는 복수의 모델들 각각에 대응하는 QoS 슬랙 시간을 예측할 수 있다. 일 실시예에 따른 QoS 정보는 스탠드얼론 실행 시간 및 QoS 슬랙 시간을 포함할 수 있다.
단계(720)에서, 스케줄러는 각 요청 별로 현재 진행중인 레이어에 대한 정보를 수신할 수 있다. 예를 들어, 스케줄러는 현재 가속기 장치에서 어떤 모델의 어떤 레이어에 대한 연산을 수행하고 있는지에 대한 정보를 수신할 수 있다.
스케줄러는 복수의 모델들 각각에서 스케줄링 대상이 되는 후보 레이어 중 메모리 액세스 리소스의 유휴 시간과 연산 리소스의 유휴 시간의 합이 최소가 되는 레이어를 스케줄링할 수 있다.
나아가, 스케줄러는 후보 레이어들 사이의 우선 순위가 타이 브레이킹(Tie-breaking)될 때에는 후보 레이어들 중 QoS 슬랙 시간이 가장 적은 것을 선택할 수 있다.
단계(725)에서, 스케줄러는 복수의 모델들 각각의 후보 레이어 중에서 가속기의 상태에서 유휴 시간이 작은 순서로 미리 정해진 개수의 레이어들을 탐색할 수 있다.
나아가, 단계(730)에서, 스케줄러는 레이어들 사이의 유휴 시간 차이를 비교할 수 있다.
단계(735)에서, 스케줄러는 유휴 시간 차이가 임계값보다 작지 않다는 판단에 기초하여, 유휴 시간이 최소인 레이어를 스케쥴링할 수 있고, 반대로 단계(740)에서, 스케줄러는 유휴 시간 차이가 임계값보다 작거나 같다는 판단에 기초하여, 레이어들 중에서 QoS 슬랙 시간이 가장 작은 레이어를 스케쥴링할 수 있다.
단계(745)에서, 스케줄러는 복수의 모델들 중에서, QoS 슬랙 시간이 스탠드얼론 실행 시간보다 작거나 같은 모델이 있는지 판단할 수 있다.
단계(750)에서, 스케줄러는 QoS 슬랙 시간이 스탠드얼론 실행 시간보다 작거나 같은 모델이 없다는 판단에 기초하여, 단계(735) 또는 단계(740)에서 결정된 레이어를 스케쥴링할 수 있다.
반대로, 단계(755)에서, 스케줄러는 QoS 슬랙 시간이 스탠드얼론 실행 시간보다 작거나 같은 모델이 있다는 판단에 기초하여, 해당 모델의 레이어를 스케쥴링하여 QoS 바이올레이션을 방지할 수 있다.QoS
도 8 및 도 9는 일실시예에 따른 전자 장치의 예시들을 나타낸 도면이다.
도 8을 참조하면, 일실시예에 따른 전자 장치는 서버(800)로 구현될 수 있다.
서버(800)는 사용자에 의해 제어되는 사용자 단말과 구분되는 별도의 장치로서, 유선 및/또는 무선 네트워크를 통해 하나 이상의 사용자 단말과 통신을 수행할 수 있다. 서버(800)는 다수의 사용자들이 각자 자신의 단말을 통해 동시다발적으로 전송하는 요청들을 수신할 수 있다. 서버(800)는 앞서 설명한 스케줄러(910)를 통해 가속기(920)에서 실행할 모델들을 레이어 단위로 스케줄링할 수 있다. 가속기(920)는 스케줄링에 따라 복수의 모델들을 실행하여 추론 결과들을 결정할 수 있다. 그리고, 서버(800)는 추론 결과들을 각각 대응하는 사용자 단말로 리턴할 수 있다. 예를 들어, 사용자 단말은 스마트폰, 태블릿, 랩탑, 퍼스널 컴퓨터 등 다양한 컴퓨팅 장치, 스마트 시계, 스마트 안경 등 다양한 웨어러블 기기, 스마트 스피커, 스마트 TV, 스마트 냉장고 등 다양한 가전장치, 스마트 자동차, 스마트 키오스크, IoT(Internet of Things) 기기 등을 포함할 수 있다.
도 9를 참조하면, 일실시예에 따른 전자 장치는 사용자 단말(900)로 구현될 수 있다. 도 9에서는 설명의 편의를 위해 사용자 단말(900)이 스마트 폰으로 도시되었지만, 이외에도 사용자에 의해 제어되는 기기라면 제한 없이 적용될 수 있다. 사용자 단말(900)은 직접 사용자로부터 요청들을 획득하고, 앞서 설명한 스케줄러(99)를 통해 가속기(920)에서 실행할 모델들을 스케줄링할 수 있다. 가속기(920)는 스케줄링에 따라 복수의 모델들을 실행하여 추론 결과들을 결정할 수 있다.
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (20)

  1. 가속기에서 실행할 모델을 결정하는 스케줄러의 동작 방법에 있어서,
    상기 가속기에서 서로 독립적으로 실행되는 복수의 모델들에 대한 하나 이상의 실행 요청을 수신하는 단계;
    상기 복수의 모델들 각각에 대응하는 QoS(Quality of Service) 정보를 예측하는 단계; 및
    상기 복수의 모델들 각각에서 스케줄링 대상이 되는 후보 레이어가 상기 가속기에서 실행될 때 발생하는 유휴 시간(idle time) 및 상기 QoS 정보 중 적어도 하나에 기초하여, 상기 복수의 모델들을 레이어 단위로 스케줄링하는 단계
    를 포함하는 스케줄러의 동작 방법.
  2. 제1항에 있어서,
    상기 스케줄링하는 단계는
    상기 복수의 모델들 각각의 후보 레이어 중에서 상기 가속기의 상태에서 상기 유휴 시간이 최소인 제1 레이어를 탐색하는 단계; 및
    상기 복수의 모델들 각각에 대응하는 상기 QoS 정보에 기초하여, 상기 제1 레이어의 스케쥴링 여부를 결정하는 단계
    를 포함하는, 스케줄러의 동작 방법.
  3. 제1항에 있어서,
    상기 QoS 정보를 예측하는 단계는
    상기 복수의 모델들 각각에 대응하는 QoS 슬랙 시간(QoS slack time)을 예측하는 단계; 및
    상기 복수의 모델들 각각에 대응하는 스탠드얼론 실행 시간(standalone execution time)을 예측하는 단계
    를 포함하는, 스케줄러의 동작 방법.
  4. 제2항에 있어서,
    상기 제1 레이어의 스케쥴링 여부를 결정하는 단계는
    상기 복수의 모델들 중에서, QoS 슬랙 시간이 스탠드얼론 실행 시간보다 작거나 같은 모델이 있는지 판단하는 단계; 및
    상기 QoS 슬랙 시간이 상기 스탠드얼론 실행 시간보다 작거나 같은 모델이 없을 경우, 상기 제1 레이어를 스케쥴링하는 단계
    를 포함하는, 스케줄러의 동작 방법.
  5. 제2항에 있어서,
    상기 복수의 모델들 중에서, QoS 슬랙 시간이 스탠드얼론 실행 시간보다 작거나 같은 모델이 있는지 판단하는 단계; 및
    상기 QoS 슬랙 시간이 상기 스탠드얼론 실행 시간보다 작거나 같은 모델이 있을 경우, 해당 모델의 제2 레이어를 스케쥴링하는 단계
    를 더 포함하는, 스케줄러의 동작 방법.
  6. 제1항에 있어서,
    상기 스케쥴링하는 단계는
    상기 복수의 모델들 각각의 후보 레이어 중에서 상기 가속기의 상태에서 상기 유휴 시간이 작은 순서로 미리 정해진 개수의 레이어들을 탐색하는 단계; 및
    상기 레이어들 사이의 상기 유휴 시간 차이를 비교하는 단계
    를 포함하는, 스케줄러의 동작 방법.
  7. 제6항에 있어서,
    상기 스케쥴링하는 단계는
    상기 유휴 시간 차이가 임계값보다 클 경우, 상기 유휴 시간이 최소인 제1 레이어를 스케쥴링하는 단계
    를 포함하는, 스케줄러의 동작 방법.
  8. 제6항에 있어서,
    상기 스케쥴링하는 단계는
    상기 유휴 시간 차이가 임계값보다 작거나 같을 경우, 상기 레이어들 중에서 QoS 슬랙 시간이 가장 작은 레이어를 스케쥴링하는 단계
    를 포함하는, 스케줄러의 동작 방법.
  9. 제2항에 있어서,
    상기 가속기의 상태는
    상기 가속기에 포함된 메모리의 사용 정보;
    상기 가속기의 연산 리소스가 마지막으로 활용된 시점 및 메모리 액세스 리소스가 활용되기 시작한 시점 간 차이; 및
    상기 복수의 모델들 각각의 진행 상태
    중 적어도 하나를 포함하는,
    스케줄러의 동작 방법.
  10. 하드웨어와 결합되어 제1항 내지 제9항 중 어느 하나의 항의 방법을 실행시키기 위하여 매체에 저장된 컴퓨터 프로그램.
  11. 가속기에서 실행할 모델을 스케줄링하는 스케줄러에 있어서,
    하나 이상의 프로세서를 포함하고,
    상기 하나 이상의 프로세서는
    상기 가속기에서 서로 독립적으로 실행되는 복수의 모델들에 대한 하나 이상의 실행 요청을 수신하고,
    상기 복수의 모델들 각각에 대응하는 QoS(Quality of Service) 정보를 예측하고,
    상기 복수의 모델들 각각에서 스케줄링 대상이 되는 후보 레이어가 상기 가속기에서 실행될 때 발생하는 유휴 시간(idle time) 및 상기 QoS 정보 중 적어도 하나에 기초하여, 상기 복수의 모델들을 레이어 단위로 스케줄링하는, 스케줄러.
  12. 제11항에 있어서,
    상기 프로세서는
    상기 복수의 모델들 각각의 후보 레이어 중에서 상기 가속기의 상태에서 상기 유휴 시간이 최소인 제1 레이어를 탐색하고,
    상기 복수의 모델들 각각에 대응하는 상기 QoS 정보에 기초하여, 상기 제1 레이어의 스케쥴링 여부를 결정하는, 스케줄러.
  13. 제11항에 있어서,
    상기 프로세서는
    상기 복수의 모델들 각각에 대응하는 QoS 슬랙 시간(QoS slack time)을 예측하고,
    상기 복수의 모델들 각각에 대응하는 스탠드얼론 실행 시간(standalone execution time)을 예측하는, 스케줄러.
  14. 제12항에 있어서,
    상기 프로세서는
    상기 복수의 모델들 중에서, QoS 슬랙 시간이 스탠드얼론 실행 시간보다 작거나 같은 모델이 있는지 판단하고,
    상기 QoS 슬랙 시간이 상기 스탠드얼론 실행 시간보다 작거나 같은 모델이 없을 경우, 상기 제1 레이어를 스케쥴링하는, 스케줄러.
  15. 제12항에 있어서,
    상기 프로세서는
    상기 복수의 모델들 중에서, QoS 슬랙 시간이 스탠드얼론 실행 시간보다 작거나 같은 모델이 있는지 판단하고,
    상기 QoS 슬랙 시간이 상기 스탠드얼론 실행 시간보다 작거나 같은 모델이 있을 경우, 해당 모델의 제2 레이어를 스케쥴링하는, 스케줄러.
  16. 제11항에 있어서,
    상기 프로세서는
    상기 복수의 모델들 각각의 후보 레이어 중에서 상기 가속기의 상태에서 상기 유휴 시간이 작은 순서로 미리 정해진 개수의 레이어들을 탐색하고,
    상기 레이어들 사이의 상기 유휴 시간 차이를 비교하는, 스케줄러.
  17. 제16항에 있어서,
    상기 프로세서는
    상기 유휴 시간 차이가 임계값보다 클 경우, 상기 유휴 시간이 최소인 제1 레이어를 스케쥴링하는, 스케줄러.
  18. 제16항에 있어서,
    상기 프로세서는
    상기 유휴 시간 차이가 임계값보다 작거나 같을 경우, 상기 레이어들 중에서 QoS 슬랙 시간이 가장 작은 레이어를 스케쥴링하는, 스케줄러.
  19. 제12항에 있어서,
    상기 가속기의 상태는
    상기 가속기에 포함된 메모리의 사용 정보;
    상기 가속기의 연산 리소스가 마지막으로 활용된 시점 및 메모리 액세스 리소스가 활용되기 시작한 시점 간 차이; 및
    상기 복수의 모델들 각각의 진행 상태
    중 적어도 하나를 포함하는, 스케줄러.
  20. 가속기에서 서로 독립적으로 실행되는 복수의 모델들에 대한 하나 이상의 실행 요청을 수신하고, 상기 복수의 모델들 각각에 대응하는 QoS(Quality of Service) 정보를 예측하고, 상기 복수의 모델들 각각에서 스케줄링 대상이 되는 후보 레이어가 상기 가속기에서 실행될 때 발생하는 유휴 시간(idle time) 및 상기 QoS 정보 중 적어도 하나에 기초하여, 상기 복수의 모델들을 레이어 단위로 스케줄링하는 스케줄러; 및
    상기 스케줄러에서 결정된 스케줄에 따라 상기 복수의 모델들을 레이어 단위로 실행하는 가속기
    를 포함하는 전자 장치.
KR1020210154784A 2021-11-11 2021-11-11 스케줄러, 스케줄러의 동작 방법 및 이를 포함한 전자 장치 KR20230068709A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020210154784A KR20230068709A (ko) 2021-11-11 2021-11-11 스케줄러, 스케줄러의 동작 방법 및 이를 포함한 전자 장치
US17/887,968 US20230143270A1 (en) 2021-11-11 2022-08-15 Apparatus and method with scheduling

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210154784A KR20230068709A (ko) 2021-11-11 2021-11-11 스케줄러, 스케줄러의 동작 방법 및 이를 포함한 전자 장치

Publications (1)

Publication Number Publication Date
KR20230068709A true KR20230068709A (ko) 2023-05-18

Family

ID=86229847

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210154784A KR20230068709A (ko) 2021-11-11 2021-11-11 스케줄러, 스케줄러의 동작 방법 및 이를 포함한 전자 장치

Country Status (2)

Country Link
US (1) US20230143270A1 (ko)
KR (1) KR20230068709A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220049294A (ko) * 2020-10-14 2022-04-21 삼성전자주식회사 스케줄러, 스케줄러의 동작 방법 및 이를 포함한 전자 장치

Also Published As

Publication number Publication date
US20230143270A1 (en) 2023-05-11

Similar Documents

Publication Publication Date Title
US11726931B2 (en) Artificial intelligence-enabled management of storage media access
Glushkova et al. Mapreduce performance model for Hadoop 2. x
Choi et al. Lazy batching: An SLA-aware batching system for cloud machine learning inference
US10613957B2 (en) Achieving balanced execution through runtime detection of performance variation
KR20210148586A (ko) 스케줄러, 스케줄러의 동작 방법 및 이를 포함한 가속기 시스템
Lim et al. Zico: Efficient {GPU} memory sharing for concurrent {DNN} training
US20220414503A1 (en) Slo-aware artificial intelligence inference scheduler for heterogeneous processors in edge platforms
CN111190735B (zh) 一种基于Linux的片上CPU/GPU流水化计算方法及计算机系统
KR20210108749A (ko) 가속기, 가속기의 동작 방법 및 이를 포함한 가속기 시스템
Maruf et al. Extending resources for avoiding overloads of mixed‐criticality tasks in cyber‐physical systems
JP2022068110A (ja) データ処理方法、データ処理装置及びデータ処理装置を含む電子装置
KR20230068709A (ko) 스케줄러, 스케줄러의 동작 방법 및 이를 포함한 전자 장치
Ki et al. Co-optimizing CPU voltage, memory placement, and task offloading for energy-efficient mobile systems
Kim et al. Co-scheML: Interference-aware container co-scheduling scheme using machine learning application profiles for GPU clusters
Saleem et al. A Survey on Dynamic Application Mapping Approaches for Real-Time Network-on-Chip-Based Platforms
Zhao et al. Insight and reduction of MapReduce stragglers in heterogeneous environment
Tang et al. Mv-net: Toward real-time deep learning on mobile gpgpu systems
KR20210103367A (ko) 가속기, 가속기의 동작 방법 및 이를 포함한 전자 장치
KR20220049294A (ko) 스케줄러, 스케줄러의 동작 방법 및 이를 포함한 전자 장치
Ogden et al. Layercake: Efficient Inference Serving with Cloud and Mobile Resources
Chen et al. Conlar: Learning to allocate resources to docker containers under time-varying workloads
US20230004855A1 (en) Co-operative and adaptive machine learning execution engines
Liu et al. SRAF: a service-aware resource allocation framework for VM management in mobile data networks
Pei et al. Workflow scheduling using graph segmentation and reinforcement learning
HoseinyFarahabady et al. Low Latency Execution Guarantee Under Uncertainty in Serverless Platforms