KR20240007354A - 가속기를 분할하는 전자 장치, 배치를 할당하는 전자 장치 및 그 동작 방법 - Google Patents

가속기를 분할하는 전자 장치, 배치를 할당하는 전자 장치 및 그 동작 방법 Download PDF

Info

Publication number
KR20240007354A
KR20240007354A KR1020220084124A KR20220084124A KR20240007354A KR 20240007354 A KR20240007354 A KR 20240007354A KR 1020220084124 A KR1020220084124 A KR 1020220084124A KR 20220084124 A KR20220084124 A KR 20220084124A KR 20240007354 A KR20240007354 A KR 20240007354A
Authority
KR
South Korea
Prior art keywords
size
batch
partition
partitions
processor
Prior art date
Application number
KR1020220084124A
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 KR1020220084124A priority Critical patent/KR20240007354A/ko
Priority to US18/348,667 priority patent/US20240012690A1/en
Publication of KR20240007354A publication Critical patent/KR20240007354A/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/5055Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering software capabilities, i.e. software resources associated or available to the machine
    • 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/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4831Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority
    • G06F9/4837Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority time dependent
    • 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
    • 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
    • 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
    • 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
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/501Performance criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5022Workload threshold
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/503Resource availability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Neurology (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

가속기를 분할하는 전자 장치, 배치를 할당하는 전자 장치 및 그 동작 방법이 개시된다. 일 실시예에 따른 전자 장치는 프로세서 및 상기 프로세서에 의해 실행 가능한 적어도 하나의 명령어를 포함하는 메모리를 포함하고, 상기 적어도 하나의 명령어가 상기 프로세서에서 실행되면, 상기 프로세서는, 가속기를 분할한 파티션(partition)의 크기 및 상기 파티션에 입력되는 배치(batch)의 크기에 따른 상기 파티션의 자원 활용도에 기초하여, 상기 파티션의 크기에 대응하는 상기 배치의 크기를 결정하고, 상기 배치의 크기 별 개수 및 상기 파티션의 크기에 대응하는 상기 배치의 크기에 기초하여, 상기 파티션의 크기 별 개수를 결정하고, 상기 파티션의 크기 별 개수에 따라, 상기 가속기를 분할할 수 있다.

Description

가속기를 분할하는 전자 장치, 배치를 할당하는 전자 장치 및 그 동작 방법{ELECTRONIC DEVICE FOR PARTITIONING ACCELLERATOR, ELECTRONIC DEVICE FOR SCHEDULING BATCH AND METHOD FOR OPERATING METHOD THEREOF}
아래의 개시는 가속기를 분할하는 전자 장치, 배치를 할당하는 전자 장치 및 그 동작 방법에 관한 것이다.
인공 지능(Artificial Intelligence; AI) 기술에 대한 수요가 증가함에 따라 인공 지능 모델의 처리량을 높이기 위한 방안의 필요성이 증가하고 있다. 인공 지능의 연산을 수행하는 가속기를 분할하여, 분할된 파티션에 배치를 포함하는 쿼리를 할당하여 처리하는 기술이 활용되고 있다.
다양한 실시예들에 따른 전자 장치는 프로세서 및 상기 프로세서에 의해 실행 가능한 적어도 하나의 명령어를 포함하는 메모리를 포함하고, 상기 적어도 하나의 명령어가 상기 프로세서에서 실행되면, 상기 프로세서는, 가속기를 분할한 파티션(partition)의 크기 및 상기 파티션에 입력되는 배치(batch)의 크기에 따른 상기 파티션의 자원 활용도에 기초하여, 상기 파티션의 크기에 대응하는 상기 배치의 크기를 결정하고, 상기 배치의 크기 별 개수 및 상기 파티션의 크기에 대응하는 상기 배치의 크기에 기초하여, 상기 파티션의 크기 별 개수를 결정하고, 상기 파티션의 크기 별 개수에 따라, 상기 가속기를 분할할 수 있다.
상기 자원 활용도는, 상기 파티션에서 실행되는 DNN 모델에 따라 결정될 수 있다.
상기 프로세서는, 상기 파티션의 자원 활용도가 미리 설정된 임계 자원 활용도에 해당할 때의 상기 배치의 크기에 기초하여, 상기 파티션의 크기에 대응하는 상기 배치의 크기를 결정할 수 있다.
상기 프로세서는, 상기 파티션의 크기 및 상기 배치의 크기에 따른 스루풋(throughput)을 고려하여, 상기 파티션의 크기 별 개수를 결정할 수 있다.
상기 프로세서는, 상기 파티션의 크기 별 개수에 따라 처리할 수 있는 상기 배치의 크기 별 개수와 상기 배치의 크기 별 개수가 대응하도록, 상기 파티션의 크기 별 개수를 결정할 수 있다.
상기 프로세서는, 가속기를 분할한 하나 이상의 파티션들(partition)의 크기 및 각 파티션에 입력되는 배치(batch)의 크기에 따라 결정된 처리 시간에 기초하여, 상기 하나 이상의 파티션들 각각에 상기 배치가 할당되는 경우, 상기 하나 이상의 파티션들 각각에서 상기 배치의 처리가 완료되는 예측 완료 시간을 계산하고, 상기 예측 완료 시간을 상기 배치에 미리 설정된 제한 완료 시간과 비교하여, 상기 배치를 상기 하나 이상의 파티션들 중 하나에 할당할 수 있다.
상기 처리 시간은, 상기 하나 이상의 파티션들에서 실행되는 DNN 모델에 따라 결정될 수 있다.
상기 프로세서는, 상기 하나 이상의 파티션들 각각에서 처리 중인 배치의 남은 처리 시간, 상기 하나 이상의 파티션들 각각에 기 할당된 배치의 처리 시간 및 상기 배치의 처리 시간에 기초하여, 상기 하나 이상의 파티션들 각각에서 상기 예측 완료 시간을 계산할 수 있다.
상기 프로세서는, 상기 예측 완료 시간이 상기 제한 완료 시간보다 앞서는 파티션 중에서, 크기가 가장 작은 파티션에 상기 배치를 할당할 수 있다.
상기 프로세서는, 상기 예측 완료 시간이 상기 제한 완료 시간보다 앞서는 파티션이 없는 경우, 상기 예측 완료 시간이 가장 빠른 파티션에 상기 배치를 할당할 수 있다.
다양한 실시예들에 따른 전자 장치는 프로세서 및 상기 프로세서에 의해 실행 가능한 적어도 하나의 명령어를 포함하는 메모리를 포함하고, 상기 적어도 하나의 명령어가 상기 프로세서에서 실행되면, 상기 프로세서는, 가속기를 분할한 하나 이상의 파티션들(partition)의 크기 및 각 파티션에 입력되는 배치(batch)의 크기에 따라 결정된 처리 시간에 기초하여, 상기 하나 이상의 파티션들 각각에 상기 배치가 할당되는 경우, 상기 하나 이상의 파티션들 각각에서 상기 배치의 처리가 완료되는 예측 완료 시간을 계산하고, 상기 예측 완료 시간을 상기 배치에 미리 설정된 제한 완료 시간과 비교하여, 상기 배치를 상기 하나 이상의 파티션들 중 하나에 할당할 수 있다.
상기 처리 시간은, 상기 하나 이상의 파티션들에서 실행되는 DNN 모델에 따라 결정될 수 있다.
상기 프로세서는, 상기 하나 이상의 파티션들 각각에서 처리 중인 배치의 남은 처리 시간, 상기 하나 이상의 파티션들 각각에 기 할당된 배치의 처리 시간 및 상기 배치의 처리 시간에 기초하여, 상기 하나 이상의 파티션들 각각에서 상기 예측 완료 시간을 계산할 수 있다.
상기 프로세서는, 상기 예측 완료 시간이 상기 제한 완료 시간보다 앞서는 파티션 중에서, 크기가 가장 작은 파티션에 상기 배치를 할당할 수 있다.
상기 프로세서는, 상기 예측 완료 시간이 상기 제한 완료 시간보다 앞서는 파티션이 없는 경우, 상기 예측 완료 시간이 가장 빠른 파티션에 상기 배치를 할당할 수 있다.
상기 가속기를 분할한 하나 이상의 파티션들은, 상기 가속기를 분할한 파티션(partition)의 크기 및 상기 파티션에 입력되는 배치(batch)의 크기에 따른 상기 파티션의 자원 활용도를 식별하는 동작, 상기 파티션의 자원 활용도에 기초하여, 상기 파티션의 크기에 대응하는 상기 배치의 크기를 결정하는 동작, 상기 배치의 크기 별 개수 및 상기 파티션의 크기에 대응하는 상기 배치의 크기에 기초하여, 상기 파티션의 크기 별 개수를 결정하는 동작 및 상기 파티션의 크기 별 개수에 따라, 상기 가속기를 분할하는 동작에 기초하여 결정될 수 있다.
도 1a는 일 실시예에 따른 전자 장치를 나타낸 도면이다.
도 1b는 일 실시예에 따른 전자 장치 및 서버를 나타낸 도면이다.
도 2는 일 실시예에 따른 분할된 가속기를 나타낸 도면이다.
도 3은 일 실시예에 따른 가속기를 분할하는 동작 및 배치를 할당하는 동작을 설명하기 위한 도면이다.
도 4는 일 실시예에 따른 DNN 모델에 따른 자원 활용도 및 지연시간을 나타낸 도면이다.
도 5는 일 실시예에 따른 파티션의 크기 및 배치의 크기에 따른 자원 활용도 및 지연시간을 나타낸 도면이다.
도 6은 일 실시예에 따른 임계 자원 활용도에 기초하여 결정된 파티션의 크기에 대응하는 배치의 크기를 나타낸 도면이다.
도 7은 일 실시예에 따른 배치의 크기 분포에 따라 결정된 파티션의 크기 별 개수를 나타낸 도면이다.
도 8은 다양한 실시예들에 따라 분할된 가속기를 나타낸 도면이다.
도 9는 일 실시예에 따라 계산된 예상 완료 시간을 나타낸 도면이다.
도 10 및 도 11은 일 실시예에 따라 배치를 포함하는 쿼리를 파티션들에 할당하는 동작을 나타낸 도면이다.
실시예들에 대한 특정한 구조적 또는 기능적 설명들은 단지 예시를 위한 목적으로 개시된 것으로서, 다양한 형태로 변경되어 구현될 수 있다. 따라서, 실제 구현되는 형태는 개시된 특정 실시예로만 한정되는 것이 아니며, 본 명세서의 범위는 실시예들로 설명한 기술적 사상에 포함되는 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 해석되어야 한다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설명된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 실시예들을 첨부된 도면들을 참조하여 상세하게 설명한다. 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조 부호를 부여하고, 이에 대한 중복되는 설명은 생략하기로 한다.
도 1a은 일 실시예에 따른 전자 장치를 나타낸 도면이다.
도 1a을 참조하면, 일실시예에 따른 전자 장치(100)은 호스트 프로세서(110), 오프-칩 메모리(off-chip memory)(120), 메모리 컨트롤러(130) 및 가속기(140)를 포함할 수 있다. 호스트 프로세서(110), 오프-칩 메모리(120), 메모리 컨트롤러(130) 및 가속기(140)는 버스(bus), NoC(Network on a Chip), PCIe(Peripheral Component Interconnect Express) 등을 통하여 서로 통신할 수 있다. 전자 장치(100)는 휴대폰, 스마트 폰, 태블릿, 전자북 장치, 랩탑, 퍼스널 컴퓨터, 또는 서버와 같은 다양한 컴퓨팅 장치, 스마트 시계, 스마트 안경, HMD(Head-Mounted Display), 또는 스마트 의류와 같은 다양한 웨어러블 기기, 스마트 스피커, 스마트 TV, 또는 스마트 냉장고와 같은 다양한 가전장치, 스마트 자동차, 스마트 키오스크, IoT(Internet of Things) 기기, WAD(Walking Assist Device), 드론, 또는 로봇을 포함할 수 있다.
호스트 프로세서(110)는 전자 장치(100)에 포함된 컴포넌트들의 동작을 제어하는 장치로, 예를 들어, 중앙 처리 장치(CPU; Central Processing Unit)일 수 있으나, 전술한 예에 한정되지 않는다. 호스트 프로세서(110)는 전자 장치(100)에서 수행되는 동작들 제어할 수 있다. 또한, 호스트 프로세서(110)는 뉴럴 네트워크를 가속기(140)에서 처리하기 위한 하나 이상의 요청을 수신하고, 해당 요청에 응답하여 가속기(140)에서 실행 가능한 명령어들을 포함한 커널을 생성하며, 생성된 커널을 가속기(140)로 전달할 수 있다. 요청은 뉴럴 네트워크에 기반한 데이터 추론을 위한 것으로, 예를 들어, 객체 인식, 패턴 인식, 컴퓨터 비전, 음성 인식, 기계 번역, 기계 통역, 추천 서비스, 개인 맞춤 서비스, 영상 처리, 자율 주행 등을 위해 가속기(140)로 하여금 뉴럴 네트워크를 실행하게 하여 데이터 추론 결과를 얻기 위한 것일 수 있다.
오프-칩 메모리(120)는 가속기(140)의 외부에 배치된 메모리로서, 예를 들어, 전자 장치(100)의 메인 메모리로 활용되는 DRAM(dynamic random access memory), HBM(high bandwidth memory) 등을 포함할 수 있으나, 전술한 예에 한정되지 않는다. 오프-칩 메모리(120)는 추론 대상 데이터 및/또는 가속기(140)에서 실행할 뉴럴 네트워크의 파라미터들을 저장할 수 있으며, 저장된 데이터는 이후 추론 수행을 위해 가속기(140)로 전달될 수 있다. 또한, 오프-칩 메모리(120)는 가속기(140)에서 뉴럴 네트워크를 실행하는 데 가속기(140) 내부의 온-칩 메모리(on-chip memory)가 충분하지 않은 경우에 활용될 수도 있다.
오프-칩 메모리(120)는 가속기(140) 내부의 온-칩 메모리보다 메모리 용량이 크지만, 뉴럴 네트워크 실행 시 가속기(140)가 오프-칩 메모리(120)로 액세스하는 비용이 내부의 온-칩 메모리(132)로 액세스하는 비용보다 클 수 있다. 메모리 액세스 비용은 해당 메모리에 액세스하여 데이터를 읽거나 쓸 때 요구되는 전력 및/또는 시간을 나타낼 수 있다.
가속기(140)는 호스트 프로세서(110)로부터 전달된 커널에 기반하여 뉴럴 네트워크를 실행하여 데이터 추론을 수행하는 AI 가속기(artificial intelligence accelerator)로서, 호스트 프로세서(110)와 구별되는 별도의 프로세서일 수 있다. 예를 들어, 가속기(140)은 NPU(neural processing unit), GPU(graphics processing unit), TPU(tensor processing unit), DSP(digital signal processor), CPU 등일 수 있으나, 전술한 예에 한정되지 않는다.
가속기(140)는 뉴럴 네트워크에서 수행되는 연산들의 특성 상 범용의 호스트 프로세서(110)에서 처리되기 보다는 별도의 전용 프로세서(다시 말해, 가속기(140))에서 처리되는 것이 보다 효율적인 작업들을 처리할 수 있다. 이때 가속기(140)에 포함된 하나 이상의 프로세싱 엘리먼트들(PEs; processing elements) 및 온-칩 메모리가 활용될 수 있다. 온-칩 메모리는 가속기(140) 내부에 포함되어 가속기(140)의 연산 수행에 필요한 데이터를 저장하거나, 연산 수행 결과를 저장하는 글로벌 쉐어드 버퍼(global shared buffer) 및/또는 로컬 버퍼(local buffer)를 포함하는 장치로서, 가속기(140) 외부에 위치하는 오프-칩 메모리(120)와 구분될 수 있다. 예를 들어, 온-칩 메모리는 주소 공간(address space)을 통해 액세스 가능한 스크래치패드 메모리(scratchpad memory), SRAM(static random access memory) 등을 포함할 수 있으나, 전술한 예에 한정되지 않는다.
뉴럴 네트워크는 딥 러닝(deep learning)에 기반하여 비선형적 관계에 있는 입력과 출력을 서로 매핑함으로써 입력에 대응하는 최적의 출력을 제공할 수 있다. 딥 러닝은 빅 데이터 세트로부터 주어진 문제를 해결하기 위한 기계 학습 기법으로, 뉴럴 네트워크의 구조를 나타내는 모델 내지 파라미터들(예컨대, 가중치(weight))을 찾아 뉴럴 네트워크를 최적화하는 과정이다. 뉴럴 네트워크는 복수의 레이어들(예컨대, 입력 레이어, 복수의 히든 레이어들 및 출력 레이어)을 포함한다. 각각의 레이어들은 인공 뉴런이라고도 불리는 복수의 노드들을 포함한다. 각 노드는 하나 이상의 입력 및 출력을 가지는 계산 단위를 나타내고, 노드들은 상호 연결될 수 있다. 노드들 간의 연결에는 가중치가 설정될 수 있으며, 이러한 가중치는 조정 또는 변경될 수 있다. 가중치는 연관된 데이터 값을 증폭, 감소 또는 유지시킴으로써 해당 데이터 값이 최종 결과에 미치는 영향도를 결정할 수 있다. 출력 레이어에 포함된 각각의 노드에는 이전 레이어에 포함된 노드들의 가중된 입력들이 입력될 수 있다. 가중된 데이터가 임의의 레이어로부터 다음 레이어로 입력되는 과정을 전파(propagation)라고 지칭할 수 있다. 본 명세서에서 뉴럴 네트워크는 설명의 편의를 위해 모델로도 표현될 수 있다.
일 실시예에서, 호스트 프로세서(110)는 가속기(140)을 분할하여 복수의 파티션들을 설정할 수 있다. 가속기(140)에서 처리되는 연산 요청은 다양한 배치(batch)의 크기를 가질 수 있다. 가속기(140)의 자원 활용도는 배치의 크기 및/또는 서비스하는 DNN 모델에 따라 달라질 수 있다. 일례로, 호스트 프로세서(110)는 서비스하는 DNN 모델 및/또는 입력되는 배치의 크기를 고려하여, 가속기(140)를 분할할 수 있다. 호스트 프로세서(110)는 가속기(140)의 자원 활용도를 높이면서, 입력된 쿼리(query)를 정해진 제한 시간(예: SLA, service level agreement) 내에 처리하도록 할 수 있다.
일 실시예에서, 호스트 프로세서(110)는 가속기(140)를 분할한 복수의 파티션들에 입력된 쿼리를 할당할 수 있다. 예를 들어, 호스트 프로세서(110)는 입력된 쿼리가 처리 완료되는 예측 완료 시간을 계산하고, 해당 쿼리에 미리 설정된 제한 완료 시간(예: SLA)과 비교하여, 쿼리를 복수의 파티션들 중 하나에 할당할 수 있다.
도 1b는 일 실시예에 따른 전자 장치(100) 및 서버(200)를 나타낸 도면이다. 예를 들어, 전자 장치(100)는 호스트 프로세서(110), 오프-칩 메모리(120) 또는 메모리 컨트롤러(130) 중 적어도 하나를 포함할 수 있다. 도 1a에 도시된 실시예와 달리, 도 1b에 도시된 실시예에 따르면, 서버(200)는 가속기(140)을 포함할 수 있다. 가속기(140)는 복수의 가속기(140-1, 140-2, ??, 140-n)을 포함할 수 있다. 예를 들어, 서버(200)는 복수의 가속기(140-1, 140-2, ??, 140-n)를 이용하여 인공지능 모델 추론 서비스를 제공할 수 있다.
예를 들어, 호스트 프로세서(110)은 서버의 가속기(140)를 분할하여 복수의 파티션들을 설정할 수 있다. 예를 들어, 호스트 프로세서(110)는 파티션의 개수를 결정할 수 있다. 예를 들어, 파티션의 개수는 파티션의 크기 별 개수를 의미할 수 있다. 예를 들어, 호스트 프로세서(110)는 파티션의 크기 별 개수를 결정하고, 파티션의 크기 별 개수에 따라 복수의 가속기(140-1, 140-2, ??, 140-n)를 분할하여, 파티션들을 설정할 수 있다.
일 실시예에 따르면, 호스트 프로세서(110)은 입력된 쿼리를 가속기(140)에 할당할 수 있다. 예를 들어, 호스트 프로세서(110)는 복수의 가속기(140-1, 140-2, ??, 140-n)를 분할하여 설정한 파티션들 중 하나에, 입력된 쿼리를 할당할 수 있다.
도 2는 일 실시예에 따른 분할된 가속기(140)를 나타낸 도면이다.
도 2에 도시된 가속기(140)의 아키텍처(architecture)는 재구성 가능한(reconfigurable) GPU의 일 예이다. 예를 들어, 가속기(140)은 분할 가능한 연산 자원을 포함하고, 호스트 프로세서(110)는 분할 가능한 연산 자원을 분할하여, 파티션들을 설정할 수 있다.
도 2에 도시된 가속기(140)는 GPU인 경우를 도시하고 있으나, 다양한 실시예들에 따르면, 전자 장치(100)의 호스트 프로세서(110)는 가속기(140)이 NPU, TPU, DSP, CPU 등인 경우에도 도 2에 도시된 실시예와 실질적으로 동일하게 가속기(140)를 분할할 수 있다.
도 2에서, GPC(graphics processing cluster)는 복수의 SM(streaming multiprocessor) 및 NoC 포트(network-on-chip port)를 포함할 수 있다. 메모리 슬라이스(memory slice)는 캐시 메모리(cache memory)(예: 도 2의 L2 cache) 및 DRAM을 포함할 수 있다.
예를 들어, 가속기(140)이 GPU인 경우, 파티션의 크기는 GPC의 개수에 따라 결정될 수 있다. 예를 들어, GPC를 4개 포함하는 파티션(141)의 크기는 4, GPC를 2개 포함하는 파티션(142)의 크기는 2, GPC를 1개 포함하는 파티션(143)의 크기는 1을 의미할 수 있다.
도 3은 일 실시예에 따른 가속기를 분할하는 동작 및 배치를 할당하는 동작을 설명하기 위한 도면이다.
도 3을 참조하면, 동작(310)에서 전자 장치(100)의 호스트 프로세서(110)는 파티션의 크기에 대응하는 배치의 크기를 결정할 수 있다. 예를 들어, 호스트 프로세서(110)는 파티션의 크기 및 파티션에 입력되는 배치의 크기에 따른 파티션의 자원 활용도에 기초하여, 파티션의 크기에 대응하는 배치의 크기를 결정할 수 있다.
예를 들어, 배치(batch)는 가속기(140)에 입력되어 일괄적으로 처리되는 데이터의 단위를 의미할 수 있다. 예를 들어, 배치는 가속기(140)에 입력되어 처리되는 복수개의 데이터를 포함할 수 있다. 예를 들어, 배치의 크기는 일괄적으로 처리되는 데이터의 개수를 의미할 수 있다. 예를 들어, 배치의 크기는 일괄적으로 처리되는 총 데이터의 크기를 의미할 수 있다.
예를 들어, 파티션의 자원 활용도(resource utilization)는 주어진 시간 동안 파티션 자원(예: 도 2의 GPC)이 활용된 시간을 의미할 수 있다. 예를 들어, 파티션의 자원 활용도가 높은 것은 파티션에서 배치를 처리하기 위하여 파티션 자원을 활용한 시간이 긴 것을 의미할 수 있다. 예를 들어, 파티션의 자원 활용도가 높은 것은 주어진 자원을 효율적으로 활용한 것으로 이해될 수 있다.
파티션에서 처리되는 배치의 크기가 증가하면, 자원 활용도가 높아지고, 지연 시간이 증가할 수 있다. 호스트 프로세서(110)는 파티션의 크기에 따라 자원 활용도를 높이면서, 입력된 쿼리를 처리에 있어서 미리 설정된 제한 조건(예: SLA)를 만족시키기 위하여, 파티션의 크기에 대응하는 배치의 크기를 결정할 수 있다.
예를 들어, 배치의 크기가 증가하는 것은 파티션에서 처리되는 데이터의 개수가 증가하는 것을 의미할 수 있다. 일례로, 파티션에서 처리되는 데이터의 개수가 증가하면, 파티션에서 배치를 처리하기 위하여 더 많은 시간동안 파티션 자원을 활용하므로, 파티션의 자원 활용도가 높아질 수 있다. 일례로, 파티션에서 처리되는 데이터의 개수가 증가하면, 파티션에서 배치를 처리하기 위하여 더 긴 시간이 필요하므로, 배치가 처리가 완료될 때까지의 지연 시간이 증가할 수 있다.
예를 들어, 각 파티션의 크기에서 입력된 배치가 처리될 때, 파티션의 자원 활용도가 특정 자원 활용도(예: 임계 자원 활용도) 이상이 되는 경우, 지연 시간이 급격하게 증가할 수 있다. 호스트 프로세서(110)는 각 파티션의 크기에서 임계 자원 활용도일 때의 배치의 크기에 기초하여, 파티션의 크기에 대응하는 배치의 크기를 결정할 수 있다.
일례로, 동작(320)에서 전자 장치(100)의 호스트 프로세서(110)는 파티션의 크기 별 개수를 결정할 수 있다. 예를 들어, 호스트 프로세서(110)는 배치의 크기 분포 및 파티션의 크기에 대응하는 배치의 크기에 기초하여, 파티션의 크기 별 개수를 결정할 수 있다. 예를 들어, 배치의 크기 분포는 배치의 크기 별 개수를 의미할 수 있다. 예를 들어, 배치의 크기 분포는 단위 시간당 전자 장치(100)에 입력되는 배치의 크기 별 개수를 의미할 수 있다. 예를 들어, 배치의 크기 분포는 이전에 입력된 쿼리들을 분석하여, 통계적으로 계산될 수 있다. 예를 들어, 배치의 크기 분포는 초당 전자 장치(100)에 입력되는 배치의 크기 별 개수의 평균을 의미할 수 있다.
예를 들어, 배치의 크기 분포는 가속기(140)에서 처리되는 쿼리에 포함된 배치의 크기에 따른 분포를 의미할 수 있다. 예를 들어, 배치의 크기 분포에서 특정 크기의 배치가 많이 입력되는 경우, 호스트 프로세서(110)는 해당 특정 크기의 배치에 대응하는 파티션이 많이 생성되도록, 파티션의 크기 별 개수를 결정할 수 있다.
일례로, 동작(330)에서, 전자 장치(100)의 호스트 프로세서(110)는 파티션의 크기 별 개수에 따라 가속기(140)을 분할할 수 있다.
상기의 동작(310, 320, 330)에서, 호스트 프로세서(110)는 가속기(140)의 자원 활용도를 높이면서, 파티션에서 배치가 처리될 때의 지연 시간이 미리 설정된 제한 조건을 만족할 수 있도록, 가속기(140)을 분할할 수 있다.
예를 들어, 동작(310)에서 호스트 프로세서(110)는 파티션에서 배치를 처리할 때 자원 활용도를 높이면서, 지연 시간이 미리 설정된 제한 조건을 초과하지 않을 수 있도록 파티션의 크기에 대응하는 배치의 크기를 결정할 수 있다.
예를 들어, 동작(320)에서 호스트 프로세서(110)는 입력되는 배치의 크기 분포에 따라 파티션의 크기 별 개수를 결정함으로써, 입력되는 배치가 효율적으로 처리되도록 가속기(140)을 분할할 수 있다.
일례로, 동작(340)에서, 전자 장치(100)의 호스트 프로세서(110)는 처리 시간에 기초하여, 파티션들 각각에 배치가 할당되는 경우, 파티션들 각각에서 배치가 처리 완료되는 예측 완료 시간을 계산할 수 있다.
예를 들어, 처리 시간은 가속기를 분할한 하나 이상의 파티션들의 크기 및 각 파티션에 입력되는 배치의 크기에 따라 결정될 수 있다. 예를 들어, 파티션의 크기가 클수록, 파티션에서 배치가 처리되는 처리 시간을 짧아질 수 있다. 예를 들어, 배치의 크기가 커질수록, 파티션에서 배치가 처리되는 처리 시간이 길어질 수 있다.
예를 들어, 처리 시간은 아래의 표 1과 같이, 각 파티션의 크기 및 각 파티션에 입력되는 배치의 크기에 따라 결정될 수 있다. 예를 들어, 파티션의 크기가 1(예: 표 1의 1 GPC)이고, 배치의 크기가 31인 경우, 처리 시간은 56 ms일 수 있다.
Batch Size 1 GPC 2 GPCs ... 7 GPCs
1 20 ms 20 ms ... 20 ms
2 22 ms 20 ms ... 20 ms
3 25 ms 21 ms ... 20 ms
... ... ... ... ...
31 56 ms 30 ms ... 25 ms
32 65 ms 32 ms ... 25 ms
일례로, 처리 시간은 파티션들에서 실행되는 DNN 모델에 따라 결정될 수 있다. 후술하는 도 4에 도시된 자원 활용도 및 지연 시간이 파티션에서 실행되는 DNN 모델에 따라 결정되는 것과 실질적으로 동일하게, 처리 시간은 파티션들에서 실행되는 DNN 모델에 따라 결정될 수 있다.예를 들어, 호스트 프로세서(110)는 분할된 각 파티션에 배치가 할당되는 경우의 처리 시간을 이용하여, 파티션들 각각에 배치가 할당되는 경우 배치의 처리가 완료되는 예측 완료 시간을 계산할 수 있다. 예를 들어, 예측 완료 시간은 해당 파티션에서 처리 중인 배치의 남은 처리 시간, 해당 파티션에 기 할당된 배치의 처리 시간, 할당되는 배치의 처리 시간의 합으로 계산될 수 있다.
일례로, 동작(350)에서, 전자 장치(100)의 호스트 프로세서(110)는 예측 완료 시간을 쿼리에 미리 설정된 제한 완료 시간(예: SLA)과 비교하여, 배치를 파티션들 중 하나에 할당할 수 있다.
예를 들어, 쿼리는 전자 장치(100)와 통신 연결될 수 있는 외부 전자 장치로부터 가속기(140)에서 처리되도록 수신한 요청을 의미할 수 있다. 예를 들어, 쿼리는 가속기(140)에서 연산되기 위한 배치를 포함할 수 있고, 쿼리를 파티션에 할당하는 것은 배치를 파티션에 할당하는 것과 실질적으로 동일하게 이해될 수 있다. 예를 들어, 쿼리에 제한 완료 시간이 설정될 수 있다.
예를 들어, 호스트 프로세서(110)는 예측 완료 시간이 제한 완료 시간보다 앞서는 파티션들 중 하나에 배치를 할당할 수 있다. 예측 완료 시간이 제한 완료 시간보다 앞선다는 것은 제한 완료 시간이 도래하기 전에 배치의 처리가 완료되는 것을 의미할 수 있다.
예를 들어, 호스트 프로세서(110)는 예측 완료 시간이 제한 완료 시간보다 앞서는 파티션들 중에서 크기가 가장 작은 파티션에 배치를 할당할 수 있다. 호스트 프로세서(110)는 예측 완료 시간이 제한 완료 시간보다 앞서는 파티션들 중에서 크기가 가장 작은 파티션에 배치를 할당하여, 자원 활용도를 높일 수 있다.
상기의 동작(340, 350)에서, 호스트 프로세서(110)은 쿼리에 미리 설정된 제한 완료 시간 내에 쿼리가 처리될 수 있도록, 쿼리를 파티션에 할당할 수 있다.
도 4는 일 실시예에 따른 DNN 모델에 따른 자원 활용도 및 지연시간을 나타낸 도면이다.
도 4를 참조하면, 자원 활용도는 DNN 모델에 따라 결정될 수 있다. 예를 들어, DNN 모델에 따른 연산이 파티션에서 수행될 수 있고, DNN 모델의 특성에 따라 자원 활용도는 달라질 수 있다.
예를 들어, 도 4와 같이, 각 DNN 모델(예: Mobile Net, ResNet, BERT)에 따른 연산이 파티션에서 실행될 때, 파티션의 크기(# of GPCs)에 따라 자원 활용도(utilization) 및 지연 시간(latency)가 달라지는 것을 확인할 수 있다.
일 실시예에 따르면, 전자 장치(100)의 호스트 프로세서(110)는 파티션에서 실행되는 DNN 모델에 따라 결정된 자원 활용도에 기초하여, 파티션에 대응하는 배치의 크기를 결정할 수 있다. 호스트 프로세서(110)는 파티션에서 실행되는 DNN 모델에 따라, 가속기(140)을 분할할 수 있다.
도 4를 참조하면, 일 실시예에 따른 호스트 프로세서(110)은 파티션에서 실행되는 DNN 모델의 연산 특성, 크기(예: 입력층, 은닉층, 출력층의 개수 또는 크기), 연결관계 등을 고려하여, 가속기(140)을 분할할 수 있다. 예를 들어, 파티션에서 실행되는 DNN 모델의 연산 특성, 크기, 연결관계 등에 따라 파티션의 크기 및 배치의 크기에 따른 자원 활용도가 결정될 수 있다. 호스트 프로세서(110)는 자원 활용도를 고려하여 가속기(140)을 분할함으로써, DNN 모델의 연산 특성, 크기, 연결관계 등에 따라 가속기(140)을 분할할 수 있다.
도 5는 일 실시예에 따른 파티션의 크기 및 배치의 크기에 따른 자원 활용도 및 지연시간을 나타낸 도면이다.
일례로, 도 5에서 파티션의 크기 small, medium, large는 도 2에 도시된 GPU에서 GPC의 개수가 각각 1, 3, 7개인 파티션을 의미할 수 있다.
도 5와 같이, 파티션의 자원 활용도는 각 파티션의 크기(예: small, medium, large) 및 배치의 크기에 따라 결정될 수 있다. 예를 들어, 입력되는 배치의 크기가 커지면, 파티션의 자원 활용도는 커질 수 있다. 예를 들어, 동일한 크기의 배치가 입력될 때, 파티션의 크기가 클수록, 자원 활용도는 낮아질 수 있다.
도 5와 같이, 각 파티션의 크기에서 처리되는 배치의 크기가 증가하면 지연 시간이 증가할 수 있다. 동일한 크기의 배치가 처리될 때, 파티션의 크기가 클수록, 지연 시간이 짧은 것을 확인할 수 있다.
도 5에서 각 파티션의 크기에서 처리되는 배치의 크기가 증가하면, 자원 활용도 및 지연 시간이 증가하는 것을 확인할 수 있다. 예를 들어, 파티션의 자원 활용도가 특정 값 이상이 되면, 지연 시간이 급격하게 증가하는 것을 확인할 수 있다. 지연 시간이 급격하게 증가하는 자원 활용도의 특정 값은, 임계 자원 활용도로 호칭될 수 있다.
도 6은 일 실시예에 따른 임계 자원 활용도(A)에 기초하여 결정된 파티션의 크기에 대응하는 배치의 크기를 나타낸 도면이다.
일례로, 호스트 프로세서(110)는 파티션의 자원 활용도가 미리 설정된 임계 자원 활용도(A)에 해당할 때의 배치의 크기에 기초하여, 파티션의 크기에 대응하는 배치의 크기를 결정할 수 있다.
도 6에서, 크기가 small인 파티션의 자원 활용도가 임계 자원 활용도(A)에 해당할 때의 배치의 크기는 B1, 크기가 medium인 파티션의 자원 활용도가 임계 자원 활용도(A)에 해당할 때의 배치의 크기는 B2, 크기가 large인 파티션의 자원 활용도가 임계 자원 활용도(A)에 해당할 때의 배치의 크기는 B3이다.
도 6에서, 호스트 프로세서(110)는 크기가 small인 파티션에 대응하는 배치의 크기는 B0 이상 B1 미만으로 결정할 수 있다. 호스트 프로세서(110)는 크기가 medium인 파티션에 대응하는 배치의 크기는 B1 이상 B2 미만으로 결정할 수 있다. 호스트 프로세서(110)는 크기가 large인 파티션에 대응하는 배치의 크기는 B2 이상 B3 미만으로 결정할 수 있다.
일례로, 파티션의 크기에 대응하는 배치의 크기는, 해당 크기의 파티션에 해당 크기의 배치가 처리되는 경우, 자원 활용도가 임계 자원 활용도 미만이 되는 배치의 크기를 의미할 수 있다. 예를 들어, 크기가 small인 파티션에 크기가 B0 이상 B1 미만의 배치가 처리되는 경우, 자원 활용도는 임계 자원 활용도 미만이 될 수 있다. 자원 활용도가 임계 자원 활용도 미만이 되는 것은, 배치가 파티션에서 처리될 때, 지연 시간이 작은 것을 의미할 수 있다.
일례로, 파티션의 크기에 대응하는 배치의 크기는 가속기(140)의 성능에 기초하여 결정될 수 있다. 예를 들어, 도 5 및 도 6에 도시된 파티션의 크기 및 배치의 크기에 따른 자원 활용도 및 지연 시간은, 가속기(140)의 성능에 따라 결정될 수 있다.
상기의 도 5 및 도 6은, 미리 설정된 임계 자원 활용도에 기초하여, 호스트 프로세서(110)가 파티션의 크기에 대응하는 배치의 크기를 결정하는 실시예를 나타낸 도면이다. 상기의 도 5 및 도 6에 도시된 실시예와 달리, 호스트 프로세서(110)는 미리 설정된 임계 지연 시간에 기초하여, 파티션의 크기에 대응하는 배치의 크기를 결정할 수 있다.
예를 들어, 임계 지연 시간은 배치가 파티션에서 처리되는 시간을 의미할 수 있다. 예를 들어, 임계 지연 시간은 배치가 파티션에서 처리가 시작되어, 처리가 완료될 때까지 소요되는 시간을 의미할 수 있다.
예를 들어, 도 5에서, 호스트 프로세서(110)는 각 파티션의 크기 및 배치의 크기에 따른 지연 시간이 임계 지연 시간(예: 20 ms)이 될 때의 배치의 크기에 기초하여, 파티션의 크기에 대응하는 배치의 크기를 결정할 수 있다.
예를 들어, 크기가 small인 파티션에서 크기가 12인 배치의 지연 시간이 20 ms인 경우, 호스트 프로세서(110)는 크기가 small인 파티션에 대응하는 배치의 크기를 1 이상 12 미만으로 결정할 수 있다. 예를 들어, 크기가 medium인 파티션에서 크기가 26인 배치의 지연 시간이 20 ms인 경우, 호스트 프로세서(110)는 크기가 medium인 파티션에 대응하는 배치의 크기를 12 이상 26 미만으로 결정할 수 있다.
도 7a 및 도 7b는 일 실시예에 따른 배치의 크기 분포에 따라 결정된 파티션의 크기 별 개수를 나타낸 도면이다.
도 7a 및 도 7b는, 파티션의 크기가 small인 파티션에 대응하는 배치의 크기는 1, 파티션의 크기가 medium인 파티션에 대응하는 배치의 크기는 2, 파티션의 크기가 large인 파티션에 대응하는 배치의 크기는 3, 4인 경우, 호스트 프로세서(110)가 파티션의 크기 별 개수를 결정하는 일 예를 나타낸 도면이다.
도 7a는 다양한 실시예들에 따른 배치의 크기 분포(batch size distribution information)를 나타낸다. 예를 들어, 도 7a에 도시된 배치의 크기 분포는 전자 장치(100)에 입력되는 쿼리를 통계적으로 분석하여 얻을 수 있다. 예를 들어, 도 7a에 도시된 배치의 크기 분포는 초당 전자 장치(100)에 입력되는 쿼리로부터 얻은 평균적인 배치의 크기 분포를 의미할 수 있다. 예를 들어, 도 7에서 배치의 크기가 1인 쿼리는 평균 초당 20개가 입력되는 것을 의미할 수 있다.
도 7a에 도시된 배치의 크기 분포에서, 크기가 small인 파티션에 대응하는 크기가 1인 배치는 초당 20개의 쿼리, 크기가 medium인 파티션에 대응하는 크기가 2인 배치는 초당 20개의 쿼리, 크기가 large인 파티션에 대응하는 크기가 3, 4인 배치는 각각 초당 40개의 쿼리, 20개의 쿼리가 입력되는 것을 나타낸다.
도 7b는 다양한 실시예들에 따른 파티션의 크기에 따른 스루풋 특성 표(throughput characterization table)를 나타낸다.일 실시예에 따른 전자 장치(100)의 호스트 프로세서(110)는 배치의 크기 분포 및 파티션의 크기에 대응하는 배치의 크기에 기초하여, 파티션 별 개수를 결정할 수 있다. 예를 들어, 호스트 프로세서(110)는 배치의 크기 분포에 따라, 입력되는 수가 많은 배치의 크기에 대응하는 파티션의 크기가 많아지도록, 파티션의 크기 별 개수를 결정할 수 있다.
일례로, 호스트 프로세서(110)는 파티션의 크기 및 배치의 크기에 따른 스루풋(throughput)을 고려하여, 파티션의 크기 별 개수를 결정할 수 있다.
도 도 7b에 도시된 스루풋 특성 표는 크기가 small인 파티션의 스루풋은 크기가 1인 배치를 포함하는 쿼리 초당 10개, 크기가 medium인 파티션의 스루풋은 크기가 2인 배치를 포함하는 쿼리 초당 20 개, 크기가 large인 파티션의 스루풋은 크기가 3인 배치를 포함하는 쿼리 초당 20개, 크기가 4인 배치를 포함하는 쿼리 초당 10개인 예를 나타낸다.
예를 들어, 호스트 프로세서(110)는 파티션의 크기 및 배치의 크기에 따른 스루풋을 고려하여, 크기가 small인 파티션의 개수(Num of Instance)는 1, 크기가 medium인 파티션의 개수는 2, 크기가 large인 파티션의 개수는 4로 결정할 수 있다.
예를 들어, 스루풋은 해당 파티션이 쿼리를 처리할 수 있는 처리율을 의미할 수 있다. 예를 들어, 도 7b를 참조하면, 크기가 small인 파티션 1개는 배치의 크기가 1인 초당 20개의 쿼리를 처리할 수 있다. 도 7a에서, 배치의 크기 분포에서 배치의 크기가 1인 쿼리는 초당 20개 입력되므로, 호스트 프로세서(110)는 크기가 small인 파티션의 개수를 1개로 결정할 수 있다.
크기가 small인 경우와 실질적으로 동일하게, 배치의 크기가 2인 초당 20개의 쿼리를 처리하기 위하여, 호스트 프로세서(110)는 크기가 medium인 파티션의 개수를 2개로 결정할 수 있다. 호스트 프로세서(110)는 배치의 크기가 3인 초당 40개의 쿼리와 배치의 크기가 4인 초당 20개의 쿼리를 처리하기 위하여, 크기가 large인 파티션의 개수를 4개로 결정할 수 있다.
상기의 예시에서, 호스트 프로세서(110)는 파티션의 크기 별 개수에 따라 처리할 수 있는 배치의 크기 별 개수와 배치의 크기 분포가 대응하도록, 파티션의 크기 별 개수를 결정할 수 있다.
예를 들어, 호스트 프로세서(110)는 파티션의 크기 별 개수에 따라, 가속기(140)를 분할할 수 있다. 예를 들어, 파티션의 크기 small, medium, large는 도 2에 도시된 GPU에서 GPC의 개수가 각각 1, 3, 7개인 파티션을 의미하고, 가속기(140)가 총 35개의 GPC를 포함하는 경우, 크기가 large인 파티션 4개, 크기가 medium인 파티션 2개, 크기가 small인 파티션 1개로 가속기(140)를 분할할 수 있다.
예를 들어, 도 7b에서 파티션의 개수(Num of Instance)는 각 파티션의 크기 별 비율을 의미할 수 있다. 예를 들어, 가속기(140)가 N개의 GPC를 포함하는 경우, 호스트 프로세서(110)는 각 small, medium, large 크기의 파티션의 개수의 합이 N개가 되고, 개수의 비가 1:2:4가 되도록, 가속기(140)를 분할할 수 있다.
예를 들어, 도 7a의 배치의 크기 분포는 입력되는 쿼리에 포함된 배치의 크기 분포에 따라 변경될 수 있다. 예를 들어, 전자 장치(100)는 변경된 배치의 크기 분포에 따라, 가속기의 파티션을 다시 할당할 수 있다.
도 8은 다양한 실시예들에 따라 분할된 가속기(140)를 나타낸 도면이다.
도 8은 가속기(140)가 7개의 GPC를 포함하는 GPU인 경우 분할된 예시를 나타낸 도면으로, 호스트 프로세서(110)는 도 8과 같이 다양한 크기 및 개수로 가속기(140)를 분할할 수 있다.다른 예로, 도 8은 전자 장치(100)가 복수의 가속기(140)를 포함하고, 호스트 프로세서(110)가 복수의 가속기(140)를 분할한 예시로 이해될 수 있다.
도 9는 일 실시예에 따라 계산된 예상 완료 시간을 나타낸 도면이다.
일례로, 호스트 프로세서(110)는 처리 시간에 기초하여, 배치가 파티션에 할당될 때 배치의 처리가 완료되는 예측 완료 시간을 계산할 수 있다. 도 9에서, 처리 완료 시간은 대기 시간 에 배치의 처리 시간 를 합한 시간을 의미할 수 있다.
예를 들어, 대기 시간 는 아래 수학식 1과 같이, 처리 중인 배치의 남은 처리 시간 와 파티션에 기 할당된 배치의 처리 시간 의 합으로 계산될 수 있다.
[수학식 1]
예를 들어, 호스트 프로세서(110)는 상기의 표 1과 같은 처리 시간을 이용하여, 대기 시간 과 입력된 배치의 처리 시간 를 계산할 수 있다.
일례로, 호스트 프로세서(110)는 아래 수학식 2와 같이 SLA 슬랙(slack)을 계산할 수 있다. 아래 수학식 2에서, 는 입력된 배치의 처리 시간 , 은 쿼리에 미리 설정된 제한 완료 시간, 는 각각 가속기(140)를 포함하는 전자 장치(100) 또는 서버(200)의 고유한 환경에 따라, SLA 슬랙의 예측 성능을 위하여 설정할 수 있는 파라미터를 의미할 수 있다.
[수학식 2]
도 10 및 도 11은 일 실시예에 따라 배치를 포함하는 쿼리를 파티션들에 할당하는 동작을 나타낸 도면이다.
도 10에서, 쿼리 A(1040)가 입력되었을 때, 파티션(1000)(도 10의 Inst 0)의 쿼리 A 예측 완료 시간(1001), 파티션(1010)(도 10의 Inst 1)의 쿼리 A 예측 완료 시간(1002), 파티션(1020)(도 10의 Inst 2)의 쿼리 A 예측 완료 시간(1002)을 나타낸다. 도 10에서 파티션(1000)의 크기는 파티션(1010, 1020)의 크기보다 작을 수 있고, 파티션(1010)과 파티션(1020)의 크기는 동일할 수 있다.
도 10에서, 호스트 프로세서(110)는 예측 완료 시간을 배치에 미리 설정된 제한 완료 시간과 비교하여, 배치를 파티션들 중 하나에 할당할 수 있다. 예를 들어, 호스트 프로세서(110)는 예측 완료 시간이 제한 완료 시간보다 앞서는 파티션 중에서 배치를 할당할 수 있다.
예를 들어, 도 10에서 파티션(1000)의 쿼리 A 예측 완료 시간(1001)보다 쿼리 A에 대하여 설정된 제한 완료 시간(예: SLA(1030))이 앞서고, 파티션(1010) 및 파티션(1020)의 쿼리 A 예측 완료 시간(1001, 1002)가 쿼리 A에 대하여 설정된 제한 완료 시간(1030)보다 앞서는 것을 확인할 수 있다. 호스트 프로세서(110)은 예측 완료 시간(1001, 1002)이 제한 완료 시간(1030)보다 앞서는 파티션(1010) 및 파티션(1020) 중 하나에 쿼리 A를 할당할 수 있다. 쿼리 A를 할당하는 것은, 쿼리 A에 포함된 배치를 파티션들(1000, 1010, 1020) 중 하나에 할당하는 것을 의미할 수 있다.
도 11은 도 10에서 호스트 프로세서(110)가 쿼리 A(1040)를 파티션(1020)에 할당하고, 쿼리 B(1050)이 입력된 경우를 나타낸 도면이다.
일례로, 호스트 프로세서(110)는 예측 완료 시간(1002, 1012, 1022)이 제한 완료 시간(1031)보다 앞서는 파티션 중에서, 크기가 가장 작은 파티션에 배치를 할당할 수 있다.
도 11에서, 파티션들(1000, 1010, 1020)에 쿼리 B(1050)가 할당되는 경우, 쿼리 B 처리 완료 시간(1002, 1012, 1022)이 쿼리 B의 제한 완료 시간(예: SLA(1031))보다 앞서는 것을 확인할 수 있다. 도 11에서, 호스트 프로세서(110)는 크기가 가장 작은 파티션(1000)에 쿼리 B(1050)을 할당할 수 있다.
호스트 프로세서(110)는 예측 완료 시간이 제한 완료 시간보다 앞서는 파티션 중에서 크기가 가장 작은 파티션에 배치를 할당하여, 가속기(140)의 자원 활용도를 높일 수 있다.
일례로, 호스트 프로세서(110)는 예측 완료 시간이 제한 완료 시간보다 앞서는 파티션이 없는 경우, 예측 완료 시간이 가장 빠른 파티션에 배치를 할당할 수 있다. 예를 들어, 도 11에 도시된 실시예에서, 파티션들(1000, 1010, 1020)에 쿼리 B(1050)가 할당되는 경우, 쿼리 B의 제한 완료 시간이 쿼리 B 처리 완료 시간(1002, 1012, 1022)보다 앞서는 경우, 호스트 프로세서(110)는 예측 완료 시간이 가장 빠른 파티션(1020)에 쿼리 B(1050)을 할당할 수 있다.
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, 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. 프로세서; 및
    상기 프로세서에 의해 실행 가능한 적어도 하나의 명령어를 포함하는 메모리
    를 포함하고,
    상기 적어도 하나의 명령어가 상기 프로세서에서 실행되면, 상기 프로세서는,
    가속기를 분할한 파티션(partition)의 크기 및 상기 파티션에 입력되는 배치(batch)의 크기에 따른 상기 파티션의 자원 활용도에 기초하여, 상기 파티션의 크기에 대응하는 상기 배치의 크기를 결정하고;
    상기 배치의 크기 별 개수 및 상기 파티션의 크기에 대응하는 상기 배치의 크기에 기초하여, 상기 파티션의 크기 별 개수를 결정하고;
    상기 파티션의 크기 별 개수에 따라, 상기 가속기를 분할하는,
    전자 장치.
  2. 제1항에 있어서,
    상기 자원 활용도는,
    상기 파티션에서 실행되는 DNN 모델에 따라 결정되는,
    전자 장치.
  3. 제1항에 있어서,
    상기 프로세서는,
    상기 파티션의 자원 활용도가 미리 설정된 임계 자원 활용도에 해당할 때의 상기 배치의 크기에 기초하여, 상기 파티션의 크기에 대응하는 상기 배치의 크기를 결정하는,
    전자 장치.
  4. 제1항에 있어서,
    상기 프로세서는,
    상기 파티션의 크기 및 상기 배치의 크기에 따른 스루풋(throughput)을 고려하여, 상기 파티션의 크기 별 개수를 결정하는,
    전자 장치.
  5. 제4항에 있어서,
    상기 프로세서는,
    상기 파티션의 크기 별 개수에 따라 처리할 수 있는 상기 배치의 크기 별 개수와 상기 배치의 크기 별 개수가 대응하도록, 상기 파티션의 크기 별 개수를 결정하는,
    전자 장치.
  6. 제1항에 있어서,
    상기 프로세서는,
    가속기를 분할한 하나 이상의 파티션들(partition)의 크기 및 각 파티션에 입력되는 배치(batch)의 크기에 따라 결정된 처리 시간에 기초하여, 상기 하나 이상의 파티션들 각각에 상기 배치가 할당되는 경우, 상기 하나 이상의 파티션들 각각에서 상기 배치의 처리가 완료되는 예측 완료 시간을 계산하고;
    상기 예측 완료 시간을 상기 배치에 미리 설정된 제한 완료 시간과 비교하여, 상기 배치를 상기 하나 이상의 파티션들 중 하나에 할당하는,
    전자 장치.
  7. 제6항에 있어서,
    상기 처리 시간은
    상기 하나 이상의 파티션들에서 실행되는 DNN 모델에 따라 결정되는,
    전자 장치.
  8. 제6항에 있어서,
    상기 프로세서는,
    상기 하나 이상의 파티션들 각각에서 처리 중인 배치의 남은 처리 시간, 상기 하나 이상의 파티션들 각각에 기 할당된 배치의 처리 시간 및 상기 배치의 처리 시간에 기초하여, 상기 하나 이상의 파티션들 각각에서 상기 예측 완료 시간을 계산하는,
    전자 장치.
  9. 제6항에 있어서,
    상기 프로세서는,
    상기 예측 완료 시간이 상기 제한 완료 시간보다 앞서는 파티션 중에서, 크기가 가장 작은 파티션에 상기 배치를 할당하는,
    전자 장치.
  10. 제6항에 있어서,
    상기 프로세서는,
    상기 예측 완료 시간이 상기 제한 완료 시간보다 앞서는 파티션이 없는 경우, 상기 예측 완료 시간이 가장 빠른 파티션에 상기 배치를 할당하는,
    전자 장치.
  11. 프로세서; 및
    상기 프로세서에 의해 실행 가능한 적어도 하나의 명령어를 포함하는 메모리
    를 포함하고,
    상기 적어도 하나의 명령어가 상기 프로세서에서 실행되면, 상기 프로세서는,
    가속기를 분할한 하나 이상의 파티션들(partition)의 크기 및 각 파티션에 입력되는 배치(batch)의 크기에 따라 결정된 처리 시간에 기초하여, 상기 하나 이상의 파티션들 각각에 상기 배치가 할당되는 경우, 상기 하나 이상의 파티션들 각각에서 상기 배치의 처리가 완료되는 예측 완료 시간을 계산하고;
    상기 예측 완료 시간을 상기 배치에 미리 설정된 제한 완료 시간과 비교하여, 상기 배치를 상기 하나 이상의 파티션들 중 하나에 할당하는,
    전자 장치.
  12. 제11항에 있어서,
    상기 처리 시간은
    상기 하나 이상의 파티션들에서 실행되는 DNN 모델에 따라 결정되는,
    전자 장치.
  13. 제11항에 있어서,
    상기 프로세서는,
    상기 하나 이상의 파티션들 각각에서 처리 중인 배치의 남은 처리 시간, 상기 하나 이상의 파티션들 각각에 기 할당된 배치의 처리 시간 및 상기 배치의 처리 시간에 기초하여, 상기 하나 이상의 파티션들 각각에서 상기 예측 완료 시간을 계산하는,
    전자 장치.
  14. 제11항에 있어서,
    상기 프로세서는,
    상기 예측 완료 시간이 상기 제한 완료 시간보다 앞서는 파티션 중에서, 크기가 가장 작은 파티션에 상기 배치를 할당하는,
    전자 장치.
  15. 제11항에 있어서,
    상기 프로세서는,
    상기 예측 완료 시간이 상기 제한 완료 시간보다 앞서는 파티션이 없는 경우, 상기 예측 완료 시간이 가장 빠른 파티션에 상기 배치를 할당하는,
    전자 장치.
  16. 제11항에 있어서,
    상기 가속기를 분할한 하나 이상의 파티션들은
    상기 가속기를 분할한 파티션(partition)의 크기 및 상기 파티션에 입력되는 배치(batch)의 크기에 따른 상기 파티션의 자원 활용도를 식별하는 동작;
    상기 파티션의 자원 활용도에 기초하여, 상기 파티션의 크기에 대응하는 상기 배치의 크기를 결정하는 동작;
    상기 배치의 크기 별 개수 및 상기 파티션의 크기에 대응하는 상기 배치의 크기에 기초하여, 상기 파티션의 크기 별 개수를 결정하는 동작; 및
    상기 파티션의 크기 별 개수에 따라, 상기 가속기를 분할하는 동작
    에 기초하여 결정되는,
    전자 장치.
  17. 가속기를 분할한 파티션(partition)의 크기 및 상기 파티션에 입력되는 배치(batch)의 크기에 따른 상기 파티션의 자원 활용도에 기초하여, 상기 파티션의 크기에 대응하는 상기 배치의 크기를 결정하는 동작;
    상기 배치의 크기 별 개수 및 상기 파티션의 크기에 대응하는 상기 배치의 크기에 기초하여, 상기 파티션의 크기 별 개수를 결정하는 동작; 및
    상기 파티션의 크기 별 개수에 따라, 상기 가속기를 분할하는 동작
    을 포함하는, 전자 장치의 동작 방법.
  18. 제17항에 있어서,
    상기 파티션의 크기에 대응하는 상기 배치의 크기를 결정하는 동작은,
    상기 파티션의 자원 활용도가 미리 설정된 임계 자원 활용도에 해당할 때의 상기 배치의 크기에 기초하여, 상기 파티션의 크기에 대응하는 상기 배치의 크기를 결정하는,
    전자 장치의 동작 방법.
  19. 제17항에 있어서,
    상기 파티션의 크기 별 개수를 결정하는 동작은,
    상기 파티션의 크기 및 상기 배치의 크기에 따른 스루풋(throughput)을 고려하여, 상기 파티션의 크기 별 개수를 결정하는,
    전자 장치의 동작 방법.
  20. 제17항에 있어서,
    상기 파티션의 크기 별 개수를 결정하는 동작은,
    상기 파티션의 크기 별 개수에 따라 처리할 수 있는 상기 배치의 크기 별 개수와 상기 배치의 크기 별 개수가 대응하도록, 상기 파티션의 크기 별 개수를 결정하는,
    전자 장치의 동작 방법.
KR1020220084124A 2022-07-08 2022-07-08 가속기를 분할하는 전자 장치, 배치를 할당하는 전자 장치 및 그 동작 방법 KR20240007354A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020220084124A KR20240007354A (ko) 2022-07-08 2022-07-08 가속기를 분할하는 전자 장치, 배치를 할당하는 전자 장치 및 그 동작 방법
US18/348,667 US20240012690A1 (en) 2022-07-08 2023-07-07 Device and method for partitioning accelerator and batch scheduling

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220084124A KR20240007354A (ko) 2022-07-08 2022-07-08 가속기를 분할하는 전자 장치, 배치를 할당하는 전자 장치 및 그 동작 방법

Publications (1)

Publication Number Publication Date
KR20240007354A true KR20240007354A (ko) 2024-01-16

Family

ID=89431288

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220084124A KR20240007354A (ko) 2022-07-08 2022-07-08 가속기를 분할하는 전자 장치, 배치를 할당하는 전자 장치 및 그 동작 방법

Country Status (2)

Country Link
US (1) US20240012690A1 (ko)
KR (1) KR20240007354A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12099525B2 (en) * 2022-12-20 2024-09-24 Databricks, Inc. State rebalancing in structured streaming

Also Published As

Publication number Publication date
US20240012690A1 (en) 2024-01-11

Similar Documents

Publication Publication Date Title
JP7430744B2 (ja) 機械学習モデルを改良して局所性を改善させること
US12001681B2 (en) Distributed storage system and data processing method
KR20210148586A (ko) 스케줄러, 스케줄러의 동작 방법 및 이를 포함한 가속기 시스템
KR20210108749A (ko) 가속기, 가속기의 동작 방법 및 이를 포함한 가속기 시스템
CN111465943B (zh) 一种集成电路和用于神经网络处理的方法
US11221876B2 (en) Scheduling applications in CPU and GPU hybrid environments
US11948352B2 (en) Speculative training using partial gradients update
KR20190136431A (ko) 뉴럴 네트워크 시스템, 이를 포함하는 어플리케이션 프로세서 및 뉴럴 네트워크 시스템의 동작방법
US11941528B2 (en) Neural network training in a distributed system
KR20220052546A (ko) 데이터 처리 방법 및 장치 및 이를 포함한 전자 장치 및 가속기 시스템
KR20220056621A (ko) 매니코어 시스템을 위한 뉴럴 네트워크 모델 처리의 병렬화 방법 및 장치
KR20210103367A (ko) 가속기, 가속기의 동작 방법 및 이를 포함한 전자 장치
KR20240007354A (ko) 가속기를 분할하는 전자 장치, 배치를 할당하는 전자 장치 및 그 동작 방법
KR20230063791A (ko) 인공지능 코어, 인공지능 코어 시스템 및 인공지능 코어 시스템의 로드/스토어 방법
KR20210106635A (ko) 가속기, 가속기의 동작 방법 및 이를 포함한 가속기 시스템
KR20220049294A (ko) 스케줄러, 스케줄러의 동작 방법 및 이를 포함한 전자 장치
KR20220033314A (ko) 호스트 프로세서 및 가속기의 동작 방법 및 이들을 포함한 전자 장치
US11797280B1 (en) Balanced partitioning of neural network based on execution latencies
KR20230135923A (ko) 기계학습 서비스를 위한 클러스터 구성 방법 및 장치
KR20230068709A (ko) 스케줄러, 스케줄러의 동작 방법 및 이를 포함한 전자 장치
Ozdal et al. Graph analytics accelerators for cognitive systems
KR20220107616A (ko) 추론 태스크들을 병렬적으로 처리하는 가속기 및 이의 동작 방법
US12124882B2 (en) Method and apparatus for lightweight and parallelization of accelerator task scheduling
CN112990448B (zh) 用于计算的方法、计算系统、计算设备和介质
US20220147398A1 (en) Method and apparatus for lightweight and parallelization of accelerator task scheduling

Legal Events

Date Code Title Description
E902 Notification of reason for refusal