KR20230156510A - 기계학습 추론 작업을 위한 다중 gpu 환경 기반 시공간분할 스케줄링 sw - Google Patents

기계학습 추론 작업을 위한 다중 gpu 환경 기반 시공간분할 스케줄링 sw Download PDF

Info

Publication number
KR20230156510A
KR20230156510A KR1020220055977A KR20220055977A KR20230156510A KR 20230156510 A KR20230156510 A KR 20230156510A KR 1020220055977 A KR1020220055977 A KR 1020220055977A KR 20220055977 A KR20220055977 A KR 20220055977A KR 20230156510 A KR20230156510 A KR 20230156510A
Authority
KR
South Korea
Prior art keywords
gpu
scheduler
scheduling
glit
inference
Prior art date
Application number
KR1020220055977A
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 KR1020220055977A priority Critical patent/KR20230156510A/ko
Publication of KR20230156510A publication Critical patent/KR20230156510A/ko

Links

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/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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
    • 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
    • G06F9/5044Allocation 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 hardware capabilities
    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

기계학습 추론 작업을 위한 다중 GPU 환경 기반 시공간분할 스케줄링 방법 및 시스템이 제시된다. 본 발명에서 제안하는 기계학습 추론 작업을 위한 다중 GPU 환경 기반 시공간분할 스케줄링 시스템은 수신 요청률 모니터링 및 오프라인에서의 퍼포먼스 통계를 수집하는 성능 프로파일러를 이용하여 배치 크기 및 글릿(glet) 크기의 쌍에 대한 추론 지연을 포함하는 스케줄링을 결정하는 스케줄러 -상기 스케줄러는 미리 정해진 주기로 트리거되어 재스케줄링이 필요한지 여부를 판단하고, 최적의 자원 양을 가진 가상 GPU인 글릿의 크기 및 글릿에 대한 모델 할당을 결정함- 및 상기 스케줄러가 결정한 스케줄링에 기초하여 다음 추론 요청을 처리하도록 GPU 상의 글릿을 준비하는 동적 파티션 재구성부를 포함한다.

Description

기계학습 추론 작업을 위한 다중 GPU 환경 기반 시공간분할 스케줄링 SW{Machine Learning Inference Time-spatial SW Scheduler Based on Multiple GPU}
본 발명은 기계학습 추론 작업을 위한 다중 GPU 환경 기반 시공간분할 스케줄링 방법 및 시스템에 관한 것이다.
기계학습(Machine Learning; ML) 기술의 광범위한 도입은 서버 시스템 설계에 새로운 과제가 되고 있다. 종래기술에 따른 서버 시스템은 수십년간 CPU 베이스의 연산에 최적화되어 왔다. 그러나 널리 사용되는 딥 러닝 알고리즘의 규칙적이고 충분한 병렬처리는 GPU의 풍부한 병렬 실행 단위를 악용할 수 있다. 강력한 GPU가 딥 러닝 모델의 훈련 연산을 용이하게 하고 있지만, 더 깊은 계층으로 진화하는 딥 러닝 모델의 연산 요구사항이 증가함에 따라 추론 연산도 GPU 기반 서버로 이동하고 있다[1, 2, 3].
그러나, GPU 기반 추론 서버는 ML 트레이닝 서버에서의 배치 지향 처리와는 다른 과제에 대처해야 한다. 첫째, 추론 쿼리는 서비스 레벨 목표(Service Level Objectives; SLO)를 충족하기 위해 제한된 시간 내에 처리되어야 한다. 따라서, 시스템의 전반적인 처리량도 중요할 뿐만 아니라, 일관된 서비스 품질을 유지하기 위해서는 추론 쿼리를 처리하기 위한 제한적인 응답 지연도 중요하다[2, 3, 4].
둘째, 서버 자원 활용률을 높이기 위해서는 단일 노드에서도 여러 이종 모델을 지원해야 한다. GPU의 메모리 용량이 증가함에 따라 GPU DRAM의 여러 모델에 대한 파라미터를 각 GPU에서 유지할 수 있기 때문에 GPU에서 모델을 스왑하지 않고 ML 모델을 빠르게 전환할 수 있다. 또한, 하나의 서비스에서도 복수의 이종 ML 모델을 포함할 수 있기 때문에 하나의 시스템에 다른 용도를 가진 여러 모델이 공존할 수 있다[2]. ML 모델의 이종성으로 인해 이종 모델의 동시 요청을 여러 GPU에 매핑해야 하는 새로운 스케줄링 문제가 발생한다. 다른 ML 모델에 대한 수신 쿼리는 자체 연산 요건을 가지며, 전체적인 처리량을 향상시키면서 SLO를 충족하기 위해 GPU에 적절히 라우팅해야 한다. 또한 클라우드 기반 시스템의 추론 처리 비용을 줄이기 위해 필요한 GPU 노드 수를 동적으로 조정해야 한다.
GPU 기반 ML 추론에 대한 요구가 증가하고 있는 가운데 병렬 실행 유닛이 많은 GPU의 연산 능력은 급격히 향상되고 있다. 이처럼 풍부한 병렬 실행 유닛과 GPU 메모리 용량의 증가를 조합하여 하나의 GPU에서 여러 ML 모델을 처리할 수 있다. 종래기술[2]에서는 GPU가 필요한 SLO를 충족하는 실행 처리량을 제공하는 한 여러 모델을 GPU에 매핑할 수 있다. 그러나 효율적인 선점으로 세밀한 시간 공유를 가능하게 하는 CPU와 달리 GPU는 단위가 큰 kernel 단위의 컨텍스트 전환(coarse-grained kernel-granularity context switches)만 수행한다. 또한 요구에 대한 실행 지연의 분산을 줄이기 위해 GPU는 동일 또는 다른 모델의 다음 배치를 받아들이기 전에 주어진 모델에 대한 단일 요청 배치에 할당된다[2]. 이러한 단위가 큰(coarse-grained) 시간 공유는 하나의 ML 추론이 전체 GPU 실행 유닛을 채우지 못할 수 있기 때문에 GPU의 방대한 연산 능력을 비효율적으로 활용한다.
그러나 최근 GPU 아키텍처의 발전으로 GPU의 풍부한 실행 자원을 사용할 수 있다. 최근의 GPU는 GPU 자원의 효율적인 공간 분할(MPS(Multi-Process Service) 메커니즘[5])을 지원한다. 이후의 MPS 메커니즘은 다른 컨텍스트를 동시에 실행하기 위해 분할되는 GPU의 연산 자원을 지원한다. GPU 자원을 공간적으로 분할하여 여러 ML 태스크를 동시에 처리할 수 있으므로 이러한 고유한 공간 분할 메커니즘은 제한된 코어스-입자 시간 공유 메커니즘을 강화할 수 있다. GPU에서 이 고유한 공간적인 코어스-입자 시간 자원 할당은 분할된 GPU를 나타내는 새로운 추상화와 SLO 제약 하에 높은 처리량 ML 서버를 대상으로 하는 새로운 스케줄링 프레임워크가 필요하다.
[1] NVIDIA Corporation. Deep Learning Inference Platform, 2013. https://www.nvidia. com/en-us/deep-learning-ai/solutions/ inference-platform/. [2] Haichen Shen, Lequn Chen, Yuchen Jin, Liangyu Zhao, Bingyu Kong, Matthai Philipose, Arvind Krishnamurthy, and Ravi Sundaram. Nexus: A GPU Cluster Engine for Accelerating DNN-Based Video Analysis. In Proceedings of the 27th ACM Symposium on Operating Systems Principles (SOSP), 2019. [3] Chengliang Zhang, Minchen Yu, Wei Wang, and Feng Yan. MArk: Exploiting Cloud Services for CostEffective, SLO-Aware Machine Learning Inference Serving. In Proceedings of the USENIX Annual Technical Conference (USENIX ATC), 2019. [4] Daniel Crankshaw, Xin Wang, Guilio Zhou, Michael J Franklin, Joseph E Gonzalez, and Ion Stoica. Clipper: A Low-Latency Online Prediction Serving System. In Proceedings of the 14th USENIX Symposium on Networked Systems Design and Implementation (NSDI), 2017. [5] NVIDIA Corporation. Multi-Process Service, 2019. https://docs.nvidia.com/deploy/pdf/ CUDA_Multi_Process_Service_Overview.pdf. [6] Francisco Romero, Qian Li, Neeraja J. Yadwadkar, and Christos Kozyrakis. Infaas: Automated model-less inference serving. In 2021 USENIX Annual Technical Conference (USENIX ATC 21), pages 397-411. USENIX Association, July 2021. [7] Aditya Dhakal, Sameer G Kulkarni, and K. K. Ramakrishnan. Gslice: Controlled spatial sharing of gpus for a scalable inference platform. In Proceedings of the 11th ACM Symposium on Cloud Computing, SoCC '20, page 492-506, New York, NY, USA, 2020. Association for Computing Machinery. [8] Quan Chen, Hailong Yang, Minyi Guo, Ram Srivatsa Kannan, Jason Mars, and Lingjia Tang. Prophet: Precise qos prediction on non-preemptive accelerators to improve utilization in warehouse-scale computers. In Proceedings of the 22nd International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS), 2017.
본 발명이 이루고자 하는 기술적 과제는 기계학습 추론 작업을 위한 다중 GPU 환경 기반 시공간분할 스케줄링 SW을 통해 시간 및 공간 스케줄링을 동시에 사용하여 활용률을 극대화하고, GPU를 보다 효율적으로 활용하여 동일한 품질의 서비스를 보다 적은 수의 GPU로 제공하기 위한 방법 및 시스템을 제공하는데 있다.
일 측면에 있어서, 본 발명에서 제안하는 기계학습 추론 작업을 위한 다중 GPU 환경 기반 시공간분할 스케줄링 시스템은 수신 요청률 모니터링 및 오프라인에서의 퍼포먼스 통계를 수집하는 성능 프로파일러를 이용하여 배치 크기 및 글릿(glet) 크기의 쌍에 대한 추론 지연을 포함하는 스케줄링을 결정하는 스케줄러 -상기 스케줄러는 미리 정해진 주기로 트리거되어 재스케줄링이 필요한지 여부를 판단하고, 최적의 자원 양을 가진 가상 GPU인 글릿의 크기 및 글릿에 대한 모델 할당을 결정함- 및 상기 스케줄러가 결정한 스케줄링에 기초하여 다음 추론 요청을 처리하도록 GPU 상의 글릿을 준비하는 동적 파티션 재구성부를 포함한다.
상기 스케줄러는 상기 글릿에 대한 모델 할당을 위해 각 모델에 대하여 파티션 크기에서의 배치의 프로파일 실행 지연, 간섭 함수, 모델별 서비스 레벨 목표(Service Level Objectives; SLO)를 입력 받고, 상기 미리 정해진 주기마다 추론을 실행하는 모델의 수신 요청률을 확인하며, 재스케줄링이 필요한 경우 상기 스케줄러는 상기 입력을 사용하여 탄력적 분할을 수행한다.
상기 스케줄러는 시스템의 처리량을 최대화 하기 위해 배치, GPU 분할, 시간 공유의 3차원 상에 구축된 검색 공간의 스위트 스폿(sweet spot)에 위치한 최적의 스케줄링을 결정한다.
상기 스케줄러는 가장 비용 효율이 높은 글릿 크기 및 서비스 레벨 목표 위반을 회피하는 비율을 제공하는 데 필요한 최소 글릿 크기 중 가장 작은 크기의 글릿을 선택하고, 미리 정해진 수신율을 만족시킬 때까지, 또는 시스템에 더 이상 글릿이 남지 않을 때까지 적어도 하나 이상의 글릿을 할당하고, 할당된 글릿의 시간적 스케줄링을 수행한다.
또 다른 일 측면에 있어서, 본 발명에서 제안하는 기계학습 추론 작업을 위한 다중 GPU 환경 기반 시공간분할 스케줄링 방법은 스케줄러가 구성 가능한 GPU 자원을 사용하여 최적의 자원 양을 가진 가상 GPU인 글릿(glet)을 생성하는 단계, 스케줄러가 수신 요청률 모니터링 및 오프라인에서의 퍼포먼스 통계를 수집하는 성능 프로파일러를 이용하여 배치 크기 및 글릿(glet) 크기의 쌍에 대한 추론 지연을 포함하는 스케줄링을 결정하는 단계, 스케줄러가 미리 정해진 주기로 트리거되어 재스케줄링이 필요한지 여부를 판단하고, 상기 글릿의 크기 및 글릿에 대한 모델 할당을 결정하는 단계 및 동적 파티션 재구성부를 통해 상기 스케줄러가 결정한 스케줄링에 기초하여 다음 추론 요청을 처리하도록 GPU 상의 글릿을 준비하는 단계를 포함한다.
본 발명의 실시예들에 따르면 기계학습 추론 작업을 위한 다중 GPU 환경 기반 시공간분할 스케줄링 SW는 GPU를 보다 효율적으로 활용하여 동일한 품질의 서비스를 보다 적은 수의 GPU로 제공할 수 있기 때문에 비용을 절감시키는 효과를 가져올 수 있다. 또한, 적은 수의 GPU를 활용하기 때문에 시간당 요구되는 에너지 사용량도 줄어 환경을 보호하는 효과를 기대할 수 있다.
도 1은 종래기술에 따른 SBP 알고리즘의 적용 예시를 나타내는 도면이다.
도 2는 종래기술에 따른 두 가지 기준 GPU 확장 방법을 설명하기 위한 도면이다.
도 3은 본 발명의 일 실시예에 따른 목표와 방법론을 설명하기 위한 도면이다.
도 4는 본 발명의 일 실시예에 따른 기계학습 추론 작업을 위한 다중 GPU 환경 기반 시공간분할 스케줄링 시스템의 전체 구성을 나타내는 도면이다.
도 5는 본 발명의 일 실시예에 따른 배치 크기에 따른 배치 추론 지연 결과를 나타내는 도면이다.
도 6은 본 발명의 일 실시예에 따른 두 개의 다른 스케줄링 알고리즘을 사용하는 경우의 스케줄링 가능한 시나리오의 수를 나타내는 도면이다.
도 7은 본 발명의 일 실시예에 따른 각 시나리오의 표준화된 성능을 나타내는 도면이다.
도 8은 본 발명의 일 실시예에 따른 지연 시간 오버헤드의 누적 분포 함수를 나타내는 도면이다.
도 9는 본 발명의 일 실시예에 따른 기계학습 추론 작업을 위한 다중 GPU 환경 기반 시공간분할 스케줄링 알고리즘을 나타내는 도면이다.
도 10은 본 발명의 일 실시예에 따른 글릿 및 SLO에 따른 비율을 나타내는 도면이다.
도 11은 본 발명의 일 실시예에 따른 간섭 모델을 사용한 예측 오류의 누적 분포를 나타내는 도면이다.
도 12는 본 발명의 일 실시예에 따른 글릿 스케일링 알고리즘을 나타내는 도면이다.
기계학습 알고리즘이 많은 문제들을 인간 수준의 정확도로 해결하는 것을 가능케 함으로써, 현실 문제를 해결하는 실제 응용프로그램에서 기계학습 알고리즘을 적용하는 많은 연구가 진행 중이다. 기계학습 알고리즘은 인공신경망 모델들을 기반으로 동작한다. 기계학습 알고리즘은 크게 모델을 '학습' 시키는 알고리즘과 이미 학습된 모델을 기반으로 유용한 결론을 '추론'하는 알고리즘으로 분류된다. 본 발명은 기계학습 모델들의 추론 알고리즘은 위한 작업 스케줄링 SW에 관한 것이다. 
 다양한 모델의 추론 요청이 연속적으로 들어올 경우 서비스수준목표(Service-Level Objective; SLO)를 맞추는 것은 실용적인 서비스를 위해 필수적이다. SLO를 맞추며 높은 처리량을 보여주기 위해 그래픽 처리 장치(GPU)가 사용된다. 추론 작업은 연산 자원 요구량이 높지 않기 때문에 연산 자원이 풍부한 GPU를 다수의 추론 작업끼리 공유한다. 본 발명은 다양한 모델들이 하나의 GPU를 공유할 때 발생할 수 있는 성능 간섭 현상을 예측 및 제어하고 GPU의 연산 자원을 분할하는 기법(MPS)를 활용하여 기존 방식 대비 더욱 높은 처리량을 보인다. 기존 추론 작업 스케줄링 SW는 시분할 방법론이나 공간분할 방법론 하나만 따르거나 성능 간섭 현상을 예측하지 못했으나 본 발명은 앞서 언급한 모든 요소를 포괄할 수 있다.  이하, 본 발명의 실시 예를 첨부된 도면을 참조하여 상세하게 설명한다.
기계학습 기술이 광범위한 어플리케이션에 적용됨에 따라 높은 처리량 기계학습(Machine Learning; ML) 추론 서버는 온라인 서비스 어플리케이션에 매우 중요해지고 있다. 이러한 ML 추론 서버는 두 가지 과제를 제기한다.
첫째, 일관된 서비스 수준 목표(Service-Level Objective; SLO)를 지원하기 위해 각 요청에 제한된 지연 시간을 제공해야 한다. 둘째, 특정 태스크는 여러 모델의 호출을 수반하며 여러 모델을 통합하면 시스템 활용도를 높일 수 있으므로 시스템에서 여러 이종 ML 모델을 지원할 수 있어야 한다. ML 추론 서버의 두 가지 요구사항을 해결하기 위해, 본 발명은 다중 모델 ML 추론 서버를 위한 새로운 ML 추론 스케줄링 프레임워크를 제안한다.
본 발명은 먼저 SLO 제약으로 인해 현재 GPU가 ML 추론 작업에 완전히 활용되지 않는다는 것을 보여준다. 추론 서버의 자원 효율성을 극대화하기 위해 본 발명에서 제안하는 핵심 메커니즘은 GPU 자원의 공간 분할을 위한 하드웨어 지원을 활용하는 것이다. 분할 메커니즘에서는 구성 가능한 GPU 자원을 사용하여 GPU 자원의 새로운 추상화 계층(abstraction layer)이 생성된다. 스케줄러는 가장 효과적인 자원 양을 가진 가상 GPU(glet)에 요청을 할당한다. 종래기술과 달리 스케줄러는 배치 크기, 시간 공유, 공간 공유가 다른 3차원 검색 공간을 효율적으로 탐색한다. 이 프레임워크는 특정 워크로드에 필요한 수의 GPU를 자동으로 확장하여 클라우드 기반 추론 서버의 비용을 최소화한다. 또한, GPU에서 두 개의 ML 작업이 동시에 실행될 때 잠재적인 간섭 효과에 대한 해결책도 조사한다. 제안하는 프로토타입 구현에서는 공간 분할이 SLO를 충족시키면서 처리량을 평균 61.7% 향상시킨다는 것을 확인했다.
최근 고속 ML 추론 서버가 필요하기 때문에 GPU 또는 TPU와 같은 하드웨어 가속기를 채택하는 서비스 벤더가 증가하고 있다. GPU 기반 시스템은 ML 추론 대기 시간이 짧지만 ML 훈련과 달리 높은 활용률을 얻는 것은 어려운 작업이다. GPU 사용률에 관한 훈련과 추론의 주요 차이점은 배치의 적합성에 있다. 훈련에서는, 입력 데이터가 준비되고 있기 때문에, 시스템은 임의의 수의 입력 데이터를 배치 할 수 있고, GPU가 대규모 병렬 처리를 효과적으로 활용할 수 있다. 반대로 ML 추론 서버는 GPU를 충분히 활용하지 않는다. 이는 일단 추론 요구가 도착하면 그 때에만 연산 엔진에 추론 태스크를 스케줄링할 수 있는 요청 기반(on-demand) 시스템이기 때문이다.
스케줄링 옵션 중 하나는 원하는 수의 추론 요청이 누적될 때까지 기다렸다가 대규모 배치 실행을 시작하는 것이다. 단, 서비스 레벨 목표(Service-Level Objective; SLO) 요건 때문에 어플리케이션은 배치 수집을 무한정 기다릴 수 없다. 종래기술[2, 3, 4, 6]에서는 배치 크기를 구축 및 실행하는 추정 시간에 따라 적응적으로 결정하는 적응형 배치를 채택했다. 프로파일 지연와 관찰된 수신율을 사용하여 배치 구축/실행에 필요한 유효시간을 추정한다. 적응형 배치 처리에서는 SLO를 초과하지 않는 최대 배치 크기를 경험적으로 선택한다.
일시적 스케줄링은 GPU에서 실행의 직렬화를 말한다. 각 추론이 GPU 자원 전체를 차지한다. 추론 서버는 모델마다 SLO가 다른 멀티 테넌트(multi-tenant) 시스템이다. 따라서 여러 모델을 일시적으로 스케줄링할 때 SLO 보증이 더욱 어려워진다. GPU 기반 멀티 테넌트 서비스 시스템의 ML 추론 스케줄링 문제는 기존의 빈 패킹(bin packing) 문제와 유사하다. 빈의 용량 제약 조건은 GPU에서 사용 가능한 자원이며, 항목 가중치는 주어진 추론 요청을 처리하는 데 필요한 GPU 자원이다.
종래기술[2]은 이러한 문제를 해결하고 새로운 변형 빈 패킹 알고리즘, 즉 SBP(squishy bin packing)을 제안했다. 스퀴시(squishy)라는 용어는 요청을 처리하는 데 필요한 자원(예를 들어, 항목)과 지연 시간이 배치 크기가 변경됨에 따라 달라지는 속성에서 유래했다. SBP 알고리즘은 일련의 모델을 입력으로 사용한다. 각 모델에는 서비스 요청률이 포함되어 있다.
도 1은 종래기술에 따른 SBP 알고리즘의 적용 예시를 나타내는 도면이다.
SBP 알고리즘에서의 서버는 모델별 배치를 구축하고 동시에 실행함으로써 A(110)와 B(120)의 두 가지 모델을 처리한다. SLO 위반은 배치 구축 시간과 배치 실행 시간의 합계가 두 SLO 중 하나를 초과할 때 발생한다. 따라서 SBP 알고리즘은 모든 통합 모델이 SLO를 위반하지 않도록 듀티 사이클(duty cycle)(130)이라고 불리는 배치 구축(141)의 최대 가능 기간과 대응하는 배치 크기를 경험적(142)으로 찾아낸다. SBP 알고리즘은 서비스 요청률의 변경이 있을 때까지 파이프라인 방식으로 듀티 사이클을 반복한다. 이러한 경우 재스케줄링이 필요하다.
공간 공유는 GPU 자원을 여러 조각으로 분할하는 자원 분할 기술이다. 각 분할에서는 동시 추론 서비스를 가능하게 한다. 배치 크기가 GPU 자원 전체를 활용할 수 없을 정도로 크지 않은 경우, 일시적 스케줄링이 GPU 저사용률 문제를 일으킬 수 있지만 공간 공유를 통해 GPU 사용률이 향상되어 SLO 위반 없이 높은 처리량을 얻을 수 있다.
최신 서버 규모의 GPU는 사용자에게 공간 공유 기능을 제공한다. NVIDIA Volta GPU와 Ampere GPU는 각각 종래기술에 비해 연산 자원 프로비저닝 기능과 메모리 대역폭 분리 기능을 추가했다. 이러한 자원 분할 기능을 사용하면 사용자는 GPU의 지정된 자원을 가상 GPU 집합으로 분할할 수 있으며, 가상 GPU 집합은 각각 GPU 자원의 일부에 할당된다. 이러한 기법을 본 발명에서는 글릿(glet)이라고 한다. 또한, GPU 자원 분할을 GPU 분할(partitioning)이라고 한다.
종래기술[7]에서는 GPU 공유와 관련된 기술을 활용하여 GPU의 처리량과 사용률을 향상시켰다. 종래기술[7]은 성능 피드백에 따라 GPU 자원의 양을 조정하는 자가 조정 알고리즘을 채택하고 있다. 자원 양을 조정한 후 SLO에 의해 주어진 태스크에 대해 경험적으로 배치 크기가 결정된다. 그러나 종래기술[7]에서 제공되는 솔루션은 단일 GPU로 제한되므로 추론 서버의 GPU 수를 확장하는 데 적용할 수 없다.
도 2는 종래기술에 따른 두 가지 기준 GPU 확장 방법을 설명하기 위한 도면이다.
추론 서비스를 위해 여러 모델을 예약할 때 GPU의 수를 확장하는 것은 어려운 문제이다. GPU를 최대한 활용함으로써 GPU의 수를 최소화하고 모든 모델의 SLO를 보장해야 한다.
도 2는 두 가지 기준 GPU 확장 방법을 보여 준다. 도 2(a)는 SBP 알고리즘이고, 도 2(b)는 그리디(greedy) 최적 파티션 분할이다. SBP 알고리즘은 각 모델의 듀티 사이클과 대응하는 배치 크기를 계산하여 각 모델이 충분한 GPU를 사용할 수 있도록 한다. 적용 가능한 모든 쌍의 조합을 비교한다. 한 쌍이 시간 공유에 적합한 경우 상기 쌍은 하나의 GPU를 공유하며 두 작업이 인터리빙될 때 SLO를 보장하도록 배치 크기를 조정한다. 이 프로세스는 더 이상 쌍을 일시적으로 공유할 수 없을 때까지 계속된다. 가장 적합한 파티션 분할은 필요한 최소 파티션 크기를 선택하고 가장 적합한 검색을 통해 충분한 자원이 있는 GPU에 파티션을 할당한다. 본 발명은 종래기술로부터 시간 및 공간 스케줄링을 동시에 사용하여 활용률을 극대화하고 필요한 GPU 수를 최소화하는 것을 목표로 한다.
본 발명에서는 분할 가능한 GPU에서의 ML 스케줄링을 위해 공간 분할이 있는 단일 물리 GPU에서 여러 가상 GPU를 생성할 수 있는 glet이라는 새로운 추상화를 제안한다. 제안하는 추상화에서는 특정 ML 모델에 가장 효율적인 GPU 공유를 생성하여 할당함으로써 대략적인 시간 공유의 비효율성을 방지할 수 있다. 각 glet은 다른 작업과는 독립적으로 ML 추론에 사용할 수 있다. 이러한 GPU 자원의 새로운 추상화를 통해 GPU 내에서 여러 모델이 동시에 실행되고 있는 경우에도 ML 실행 지연을 예측할 수 있으며 GPU 사용률도 향상된다.
본 발명의 실시예에 따른 glet을 기반으로 PyTorch 인터페이스에서 프로토타입으로 제작된 ML 추론 프레임워크를 제안한다. 멀티 GPU 환경에서 이종 ML 모델을 동시 지원하며 자동 확장 기능을 지원한다. 스케줄링 프레임워크는 glet 추상화를 구현하며, 검색 공간은 배치 크기 조정과 더불어 GPU 자원의 공간 및 시간 공유를 통해 다차원적이다. 각 ML 모델에 대해 연산 특성을 측정하고 프레임워크에 등록한다. 스케줄러는 각 ML 모델의 프로파일 정보를 기반으로 SLO 제약 조건을 충족하면서 처리량이 최대가 되는 곳으로 요청을 라우팅한다.
GPU 공유 공간 및 시간 분할에 필요한 메커니즘 중 하나는 두 개의 가상 GPU가 매핑된 GPU에서 두 개의 모델이 동시에 실행 중일 때 발생할 수 있는 성능 오버헤드를 식별하는 것이다. 종래기술[8]은 pre-Volta MPS 시스템에서 동시 커널의 간섭을 모델링했지만, 본 발명은 ML 간섭 워크로드의 동시 커널 실행을 위해 새롭게 조정된 추론 추정 모델을 제안한다.
본 발명의 실시예에 따르면, 4개의 GPU와 8개의 GPU가 있는 서버 시스템에서 제안된 ML 추론 프레임워크를 평가했다. 4개의 GPU를 사용한 평가 결과, glet을 사용한 스케줄링 기술은 5개의 ML 추론 시나리오에 대한 SLO 제약에 의한 처리량을 GPU 자원을 분할하지 않은 경우와 비교하여 61.7% 향상할 수 있는 것으로 나타났다.
본 발명의 실시예에 따르면, 기계학습 추론 서비스를 위한 GPU의 새로운 자원 프로비저닝 공간을 분석한다.
본 발명의 실시예에 따르면, 물리 GPU에서 자원 분할로 가상 GPU를 지원하는 glet이라는 새로운 GPU 추상화를 제안한다. 이종 ML 모델을 가장 비용 효율적인 방법으로 여러 glet에 매핑할 수 있다.
또한, 배치 크기, 시간 공유, 공간 공유를 고려한 다차원 검색을 통해 최적의 일정을 검색하는 glet의 스케줄링 프레임워크를 제안한다. 특정 이종 모델 집합에 필요한 GPU 수를 조정하여 자동 조정을 지원한다.
또한, 단일 GPU 분할에서 동시 ML 추론 실행을 위한 glet 간섭 모델을 제안한다.
도 3은 본 발명의 일 실시예에 따른 목표와 방법론을 설명하기 위한 도면이다.
본 발명의 목표는 복수 임차 ML 추론 서비스를 위한 스케줄링 체계를 고안하는 것이며, 이는 활용도를 극대화하여 최소 수의 GPU에 들어오는 추론 요청을 할당하는 것을 목표로 한다.
도 3(a)는 검색 공간 차원의 그래픽을 나타내는 도면이고, 도 3(b)는 최적의 구성을 탐색하는 과정을 나타내는 도면이다.
도 3을 참조하면, 차원의 부분 집합을 탐색하는 대신, 최적의 구성 지점을 찾기 위해 모든 스케줄링 차원, 배치, 공간 및 시간적 스케줄링에 대해 완전히 탐색하는 스케줄러를 제안한다.
본 발명의 실시예에 따른 각 ML 모델에 대해 교육받은 모델에 대해 최소 성능 프로파일이 한 번 수집된다. 스케줄러는 현재 모델의 프로파일을 기반으로 작업을 여러 물리적 GPU에 걸쳐 glet에 분산한다. 필요한 물리 GPU의 수를 최소한으로 억제하면서 SLO 명령으로 현재의 요청률을 만족시킨다. 이 프레임워크는 요구 속도의 변화에 따라 GPU 서버의 수를 자동으로 확장한다.
도 4는 본 발명의 일 실시예에 따른 기계학습 추론 작업을 위한 다중 GPU 환경 기반 시공간분할 스케줄링 시스템의 전체 구성을 나타내는 도면이다.
제안하는 스케줄러(413)는 성능 프로파일러(411)를 이용하며, 이 프로파일러(411)는 수신 요청률을 모니터링할 뿐만 아니라 오프라인에서의 퍼포먼스 통계도 수집한다. 이러한 통계는 배치 크기와 glet 크기의 쌍에 대한 추론 지연 등의 스케줄링 결정에 필요하다. 사용자 지정 작업 사양(412)은 모델별 SLO 타겟을 제공한다. 실행 시 작업 스케줄러(413)는 정기적으로 트리거되어 재스케줄링이 필요한지 여부를 확인한다(예를 들어, 수신율 변경). 필요에 따라 스케줄러는 glet의 크기와 glet에 대한 모델 할당의 두 가지 유형을 결정한다. 분할 결정에 기초하여 동적 파티션 재구성부(414)는 다음 기간에 추론 요구를 처리할 수 있도록 GPU 상의 glet(421)을 준비한다. 스케줄링 기간은 GPU 분할 지연 시간에 근거해 경험적으로 결정되기 때문에 분할의 오버헤드는 스케줄링 윈도우에 의해 숨겨진다.
본 발명의 실시예에 따르면, 스케줄링 결정이 서로 종속된 다양한 변수에 의존한다. GPU 분할 방법은 할당된 모델과 배치 크기에 따라 달라진다. 한편, 배치 크기는 할당된 자원 양과 SLO를 보장하기 위해 다른 모델과 어떻게 시간을 공유하느냐에 따라 달라진다. 따라서 최적의 스케줄 결정은 배치, GPU 분할, 거대한 검색 공간을 생성하는 시간 공유의 3차원 상에 구축된 검색 공간의 스위트 스폿(sweet spot)에 있다.
P는 GPU에서 GPU 분할 전략의 수, N은 스케줄링할 GPU의 수, M은 서비스할 모델의 수라고 하자. 각 GPU는 P개의 glet을 가질 수 있으므로 N개의 GPU를 분할하는 총 PN개의 가능한 전략이 있다. 그런 다음 M 모델을 glet에 배치할 수 있으며, 모든 M 모델을 단일 glet에 포함할 수 있다. 여러 모델의 통합이 SLO를 위반하는지 확인해야 하므로 일정성을 평가하기 위해 glet당 M2 모델 배치를 평가해야 한다. 시스템에 NP glet이 있기 때문에 M 모델의 glet에 대한 매핑은 NPM2이다. 요컨대 스케줄링 문제의 공간 복잡성은 다음과 같다.
검색 공간이 크기 때문에 최적의 솔루션을 철저히 검색하고 선택하는 것은 비현실적이다. 따라서, 본 발명에서는 glet을 GPU에 점진적으로 할당하여 검색 공간을 효과적으로 줄이는 그리디(greedy) 접근 방식을 구현한다. 도 9를 참조하여 본 발명의 실시예에 따른 기계학습 추론 작업을 위한 다중 GPU 환경 기반 시공간분할 스케줄링 알고리즘을 더욱 상세히 설명한다.
도 5는 본 발명의 일 실시예에 따른 배치 크기에 따른 배치 추론 지연 결과를 나타내는 도면이다.
도 5는 배치 크기가 1에서32로 증가했을 때의 배치 추론 지연 결과를 나타낸다.
본 발명의 실시예에 따르면, 배치 및 GPU 분할의 성능 영향을 이해하기 위해 GoogleLeNet(도 5(a)), ResNet50(도 5(b)), SSD-MobileNet-V1(도 5(c)), VGG-16(도 5(d))의 4가지 ML 모델을 사용하여 실험을 수행한다.
배치 크기별로 GPU 자원의 증가율(다시 말해, glet 크기)을 20%~100%로 조사하여 배치 크기와 연산 자원의 사용률이 어떻게 관련되어 있는지를 관찰한다. 배치 크기가 크면 자원이 추가될수록 지연 시간이 크게 줄어든다. 곡선의 큰 기울기는 특정 배치 크기에 대한 추론 실행이 지연 시간을 줄이기 위해 추가 자원을 효과적으로 사용할 수 있음을 의미한다. 반면, 배치가 작을 경우 지연 시간은 GPU 자원의 양에 크게 영향을 받지 않으며, 이는 자원 활용률이 낮음을 의미한다. 따라서 비용 효율이 높은 스케줄링을 결정할 때는 배치 크기와 GPU 자원의 양을 모두 공동 요인으로 고려해야 한다.
스케줄 기능 개선에 대한 GPU 분할의 가능성을 평가하기 위해 가능한 멀티 테넌트인 추론 서비스 시나리오를 상당히 채운 다음 시나리오 중 스케줄링 가능한 시나리오의 수를 계산하여 스케줄 기능을 측정한다. 각 시나리오에서 모델에는 0, 100, 200 초당 요청률 중 하나의 서비스 요청률이 있다. 모든 모델이 0 요청률을 갖는 시나리오를 제외하고, 본 발명에서는 실험에 총 19682 (= 39-1)개의 시나리오를 사용한다.
도 6은 본 발명의 일 실시예에 따른 두 개의 다른 스케줄링 알고리즘을 사용하는 경우의 스케줄링 가능한 시나리오의 수를 나타내는 도면이다.
도 6을 참조하면, GPU 분할을 지원하지 않는 기본 SBP 알고리즘(610)과 균등하게 분할된 두 개의 glet을 개별적으로 스케줄링하는 SBP 알고리즘(620)에 따른 두 개의 다른 스케줄링 알고리즘을 사용하는 경우의 스케줄링 가능한 시나리오의 수를 나타내고 있다. GPU 분할(620)에서는 기본 SBP 알고리즘에 의해 스케줄 불가능으로 식별된 대부분의 시나리오가 스케줄 기능으로 전환된다. 그 결과 GPU 분할을 통해 낭비되는 GPU 컴퓨팅 파워를 사용할 수 있게 되어 자원 사용률이 높아진다.
도 7은 본 발명의 일 실시예에 따른 각 시나리오의 표준화된 성능을 나타내는 도면이다.
본 발명의 일 실시예에 따른 비용 효율이 높은 분할 방식이 성능에 미치는 영향을 설명하기 위해 세 가지 분할 시나리오의 SLO 보존 처리량을 비교한다. 그림 5는 각 시나리오의 표준화된 성능을 보여 준다.
도 5를 참조하면, 첫 번째 시나리오인 시분할 스케줄링(710)에서는 GPU를 분할하지 않고 시분할 방식으로 작업을 스케줄링한다. 두 번째 시나리오인 그리디(greedy) 최적 알고리즘(720)인 기준 알고리즘에 의해 GPU를 분할한다. 알고리즘은 필요한 최소 파티션 크기를 신중하게 선택하기 때문에 가장 적합한 검색 방식으로 충분한 자원이 있는 GPU에 파티션을 할당한다. 마지막 시나리오(730)에서는 이상적 스태틱(ideal static)이 성능에 이상적인 GPU 분할 비율을 검색하여 모든 쌍에 이상적인 분할을 동일하게 적용한다. 기준 분할 스케줄러(710)는 비 분할 스케줄러를 평균 51% 능가하여 공간 공유의 성능 이점을 입증한다. 이상적 스태틱 시나리오(730)에서는 그리디 최적 조건(720)보다 평균 23% 더 나은 성능을 보여 준다. 그 결과 분할 자체는 최적의 사용률을 보장하지 않으며 처리량을 향상시키기 위해 비용 효율적인 분할이 필요하다는 것을 알 수 있다.
본 발명의 실시예에 따르면, 비용 효율이 뛰어난 GPU 분할로 SBP의 스케줄 기능을 대폭 향상시킬 수 있다. 단, GPU에서 동시에 실행되는 여러 추론 실행에서 발생하는 성능 간섭이 중요한 단점이다.
간섭 효과를 식별하기 위해 합성 시나리오 집합을 사용하여 추가 예비 실험 연구를 수행한다. 5개의 ML 모델(5C2 = 10)에서 추출한 두 모델의 쌍을 채우고, 그 쌍을 5개의 다른 배치 크기(2, 4, 8, 16, 32)와 연결하여 총 250개의 쌍을 생성한다. 또한 GPU를 (2:8), (4:6), (5:5), (6:4), (8:2)의 다양한 비율로 2개의 glet으로 분할한다. 그런 다음 합성 쌍을 다른 glet 쌍에 매핑하여 다양한 설정에서 간섭 효과를 관찰한다.
도 8은 본 발명의 일 실시예에 따른 지연 시간 오버헤드의 누적 분포 함수를 나타내는 도면이다.
도 8은 모델이 독립적으로 실행되는 경우와 비교하여, 통합 추론 실행으로 인한 지연 시간 오버헤드의 누적 분포 함수(Cumulative Distribution Function; CDF)를 보여준다. 도 8에서 알 수 있듯이, 90%의 시나리오에서 간섭으로 인한 오버헤드는 18%보다 낮으며, 이는 중간 수준이다. 단, CDF는 긴 꼬리를 보고하며, 이는 특정 상황에서 간섭 효과가 심각할 수 있음을 나타낸다. 따라서 추론 실행으로 인해 예상 범위를 크게 벗어난 지연이 발생할 경우 이 간섭으로 인해 스케줄링 결정이 크게 잘못될 수 있다.
표 1은 관련된 ML 추론 프레임워크에 대한 glet의 비교를 제공한다.
<표 1>
관련된 모든 작업은 프로파일된 지연 시간 또는 런타임 중에 수신 요청률을 활용하여 배치 크기를 동적으로 조정할 수 있다. 이종 복수 모델을 제공하려면 스케줄러가 모델의 유형을 인식할 필요가 있다. 스케줄러는 자원을 최적화하는 조정 메커니즘을 제공해야 하므로 GPU 수를 확장하는 것은 더욱 어려워진다. 관련된 몇 가지 작업에서는 두 가지 문제를 모두 해결하지 못한다.
시간적, 공간적 공유와 같은 일정 차원에 대해서는 대부분의 작업이 지연의 프로파일 정보를 활용하여 시간적 공유를 채택하고 있다. GSLICE만이 공간 공유를 고려했지만 다중 GPU 스케줄링과 시간 공유는 고려하지 않았다. 한편, 제안하는 glet은 모든 과제, 스케줄링 차원 및 동일한 GPU 내의 파티션 간의 잠재적인 간섭에 대처하는 것을 고려하므로 glet은 모든 스케줄링 측면을 고려하는 유일한 접근법이다.
도 9는 본 발명의 일 실시예에 따른 기계학습 추론 작업을 위한 다중 GPU 환경 기반 시공간분할 스케줄링 알고리즘을 나타내는 도면이다.
본 발명의 실시예에 따른 스케줄링 알고리즘은 탄력적 분할을 수행한다. 알고리즘 1은 모델을 glet으로 스케줄링하는 전반적인 절차를 설명한다. 표 2는 탄력적 분할에 사용되는 변수 목록이다.
<표 2>
본 발명의 실시예에 따른 알고리즘은 각 모델에 대해 1) L(b,p): 파티션 크기 p에서의 배치b의 프로파일 실행 지연, 2) intf: 간섭 함수, 3) SLO: 모델별 SLO의 입력을 받는다. 스케줄링 기간마다 서버는 서버에서 추론을 실행하는 모델의 수신 요청률을 확인한다. 재스케줄링이 필요한 경우 스케줄러는 제공된 입력(1행)을 사용하여 탄력적인 분할을 수행한다.
각 모델은 비율 × SLO별로 오름차순으로 정렬되어 시분할 여력이 적은 모델이 가능한 최적의 자원을 받을 수 있도록 한다(2행). 각 모델 m에 대해서, 스케줄러는, 수신율을 만족시킬 수 있을 때까지, 또는 시스템에 더 이상 glet이 남지 않을 때까지, 1개 또는 복수의 glet을 할당한다(3-4행).
본 발명의 실시예에 따르면, 이상적인 glet 크기를 결정하기 위해 탄력적 분할은 glet 크기에 가장 비용 효율적인 스위트 스팟을 할당함으로써 시스템 전체의 처리량을 최대화한다. 탄력적 분할에서는 1) 가장 비용 효율이 높은 glet 크기(peff )와 2) SLO 위반(preq)을 회피하면서 비율을 제공하는 데 필요한 최소 glet 크기 중 제일 작은 크기가 선택된다.
도 10은 본 발명의 일 실시예에 따른 글릿 및 SLO에 따른 비율을 나타내는 도면이다.
도 10은 peff 및 preq의 그래픽 예를 나타내고 있다. Peff를 취득하기 위해 스케줄러는 오프라인으로 특정 glet 크기에 대한 적절한 요청률을 프로파일한다. MAXEFFICIENTPARTITION 함수는 프로파일된 glet 크기의 스위트 스팟을 계산하여 무릎에서 glet 크기를 peff(6행)로 사용한다. MINREQUIREDPARTITION은 지정된 요청률(7행)에서 SLO 위반을 회피하기 위해 필요한 preq, glet의 최소 크기를 조사한다. 스케줄러는 항상 최소 peff 및 preq를 이상적인 파티션 크기 pideal로 선택하여 비용효율이 높은 glet 크기(8행)를 확보한다.
본 발명의 실시예에 따르면, 최적화를 찾은 후 FIND BESTFIT에서 최적화를 검색한다. 우선 스케줄러는 나머지 glet을 파티션 크기별로 오름차순으로 정렬한다(14행). 알고리즘은 glet 크기가 pideal(16행)보다 크거나 같을 때까지 나머지 glet을 검색한다. glet은 오름차순으로 정렬되어 있기 때문에 스위핑이 가장 적합함을 자연스럽게 보증한다. glet의 분할이 가능한 경우, 즉 선택한 glet의 크기가 100%인 경우 glet은 각각 pideal과 100- pideal(17-19행)의 크기를 가진 두 glet으로 분할된다. 추가 간섭에 의한 오버헤드(20행)가 있을 때 최대 배치크기 b가 SLO를 충족시킬 수 있는지 여부를 결정하고 확인한다. 유효한 배치크기가 존재할 경우 glet이 선택된다(21행). glet이 선택된 후 탄력적 분할은 glet과 시스템 내에서 이전에 할당된 glet 사이의 시간적 스케줄링을 시도한다(22행). 시간적 스케줄링은 탄력적 분할에서 배치 크기와 듀티 사이클을 계산할 때 glet 크기를 추가로 고려함으로써 수행된다. 성공하면 2개의 glet이 하나의 glet으로 병합된다. 탄력적 분할은 FIND BESTFIT(10행)의 결과로 시스템의 나머지 및 할당된 glet을 업데이트한다.
본 발명의 실시예에 따르면, 간섭 처리는 동일한 GPU의 서로 다른 glet에서 여러 개의 추론이 실행될 때 지연 시간 증가를 예측하는 것이다. 도 8과 같이 간섭 효과는 대부분의 통합 실행에서 그다지 크지 않지만 드물게 발생하는 경우에는 오버헤드가 클 수 있다.
본 발명에서는 GPU 실행의 두 가지 주요 런타임 동작을 기반으로 한 간단한 간섭 예측 모델을 제공한다. 공간 분할에 의한 간섭 효과는 일반적으로 L2 캐시를 포함한 내부 데이터 경로의 대역폭 소비 및 외부 메모리 대역폭에 의해 발생한다. 간섭 효과와 관련된 어플리케이션 동작을 찾기 위해 NVIDIA 도구(Nsight-compute)를 사용하여 동시 ML 태스크를 GPU에 프로파일링한다. 다양한 실행 통계 정보 중에서 L2 사용률과 DRAM 대역폭 사용률이 간섭과 관련된 가장 관련성이 높은 통계 정보임을 알 수 있었다.
이러한 결과를 바탕으로 다음과 같이 2개의 파라미터(L2 사용률과 DRAM 대역폭 사용률)를 사용하여 선형 모델을 구축한다.
L2m1과 L2m2는 모델1과 모델2의 L2 사용률이다. 이러한 사용률은 모델1과 모델2의 메모리 대역폭 소비량이다. 파라미터(c1, c2, c3, c4, c5)는 선형 회귀를 사용하여 검색된다.
본 발명의 실시예에 따른 추론 간섭의 총 1,250쌍(총 2,500개의 데이터)을 프로파일링하고 각 추론 태스크가 얼마나 많은 간섭을 받았는지를 기록했다. 2,500개의 데이터 중 1,750개의 실행 데이터와 750개의 검증 데이터를 무작위로 선정하였다.
도 11은 본 발명의 일 실시예에 따른 간섭 모델을 사용한 예측 오류의 누적 분포를 나타내는 도면이다.
제안된 모델은 10.26%의 오류율 내에서 최대 90%의 사례를 예측할 수 있으며 13.98%의 오류가 허용되는 경우 최대 95%까지 예측할 수 있다.
도 12는 본 발명의 일 실시예에 따른 글릿 스케일링 알고리즘을 나타내는 도면이다.
도 12를 참조하면, 알고리즘 2는 탄력적 분할이 확장성이 있기 때문에 실행 가능한 시행착오 접근법을 채택한다. 먼저 이전 스케줄링 기간의 동일한 수의 GPU(2-3행)를 사용하여 탄력적 분할을 시도한다. GPU의 수가 부족하여 결과가 실패할 경우 GPU를 1개 추가하여 동일한 검증 메커니즘을 반복하지만 필요한 GPU 수가 주어진 제한을 초과하면 알고리즘 2는 이전 기간의 결과로 돌아간다(8-10행). 그 결과, SCALING은 ELASTICPARTITIONING을 충족시키는 최소 GPU 수를 찾는다.
본 발명의 실시예에 따른 글릿용 SW 프로토타입은 도 4에서 볼 수 있듯이, 멀티 GPU 추론 프로토타입 서비스 시스템은 프런트 엔드 추론 스케줄러(410)와 백엔드 추론 실행기(420)로 구성된다. SW 모듈은 C++로 개발되었으며 대략적인 코드 행은 21.8K이다. Glet은 UNIX 도메인 소켓을 통해 다른 서버와 통신하는 별도의 프로세스로 구현된다. 각 글릿의 파티션 크기는 MPS가 지원하는 자원 프로비저닝 기능을 사용하여 제어한다.
본 발명의 실시예에 따른 프로토타입 서버는 수신 속도를 모니터링하고 20초 동안 glet을 스케줄링한다. 기간은 GPU 파티션을 재구성하는 데 약 10~15초가 걸리는 관찰에 의해 결정되었다. 본 발명의 실시예에 따른 동적 파티션 재구성기는 재구성 프로세스에서 지정된 MPS 자원으로 새 프로세스를 생성하고, PyTorch에서 사용하는 필요한 커널을 로드하며, 필요한 모델을 로드하고, 워밍업을 수행하는 작업이 포함된다. 전체 프로세스는 백그라운드에서 실행되며 SLO 위반에 미치는 영향은 최소화된다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, 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), 컴퓨터 저장 매체 또는 장치에 구체화(embody)될 수 있다.  소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다.  상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다.  상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다.  컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다.  프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다.  예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (10)

  1. 수신 요청률 모니터링 및 오프라인에서의 퍼포먼스 통계를 수집하는 성능 프로파일러를 이용하여 배치 크기 및 글릿(glet) 크기의 쌍에 대한 추론 지연을 포함하는 스케줄링을 결정하는 스케줄러 -상기 스케줄러는 미리 정해진 주기로 트리거되어 재스케줄링이 필요한지 여부를 판단하고, 최적의 자원 양을 가진 가상 GPU인 글릿의 크기 및 글릿에 대한 모델 할당을 결정함-; 및
    상기 스케줄러가 결정한 스케줄링에 기초하여 다음 추론 요청을 처리하도록 GPU 상의 글릿을 준비하는 동적 파티션 재구성부
    를 포함하는 다중 GPU 환경 기반 시공간분할 스케줄링 시스템.
  2. 제1항에 있어서,
    상기 스케줄러는,
    상기 글릿에 대한 모델 할당을 위해 각 모델에 대하여 파티션 크기에서의 배치의 프로파일 실행 지연, 간섭 함수, 모델별 서비스 레벨 목표(Service Level Objectives; SLO)를 입력 받고, 상기 미리 정해진 주기마다 추론을 실행하는 모델의 수신 요청률을 확인하며,
    재스케줄링이 필요한 경우 상기 스케줄러는 상기 입력을 사용하여 탄력적 분할을 수행하는
    다중 GPU 환경 기반 시공간분할 스케줄링 시스템.
  3. 제1항에 있어서,
    상기 스케줄러는,
    시스템의 처리량을 최대화 하기 위해 배치, GPU 분할, 시간 공유의 3차원 상에 구축된 검색 공간의 스위트 스폿(sweet spot)에 위치한 최적의 스케줄링을 결정하는
    다중 GPU 환경 기반 시공간분할 스케줄링 시스템.
  4. 제1항에 있어서,
    상기 스케줄러는,
    가장 비용 효율이 높은 글릿 크기 및 서비스 레벨 목표 위반을 회피하는 비율을 제공하는 데 필요한 최소 글릿 크기 중 가장 작은 크기의 글릿을 선택하고,
    미리 정해진 수신율을 만족시킬 때까지, 또는 시스템에 더 이상 글릿이 남지 않을 때까지 적어도 하나 이상의 글릿을 할당하고, 할당된 글릿의 시간적 스케줄링을 수행하는
    다중 GPU 환경 기반 시공간분할 스케줄링 시스템.
  5. 스케줄러가 구성 가능한 GPU 자원을 사용하여 최적의 자원 양을 가진 가상 GPU인 글릿(glet)을 생성하는 단계;
    스케줄러가 수신 요청률 모니터링 및 오프라인에서의 퍼포먼스 통계를 수집하는 성능 프로파일러를 이용하여 배치 크기 및 글릿(glet) 크기의 쌍에 대한 추론 지연을 포함하는 스케줄링을 결정하는 단계;
    스케줄러가 미리 정해진 주기로 트리거되어 재스케줄링이 필요한지 여부를 판단하고, 상기 글릿의 크기 및 글릿에 대한 모델 할당을 결정하는 단계; 및
    동적 파티션 재구성부를 통해 상기 스케줄러가 결정한 스케줄링에 기초하여 다음 추론 요청을 처리하도록 GPU 상의 글릿을 준비하는 단계
    를 포함하는 다중 GPU 환경 기반 시공간분할 스케줄링 방법.
  6. 제1항에 있어서,
    상기 스케줄러가 수신 요청률 모니터링 및 오프라인에서의 퍼포먼스 통계를 수집하는 성능 프로파일러를 이용하여 배치 크기 및 글릿(glet) 크기의 쌍에 대한 추론 지연을 포함하는 스케줄링을 결정하는 단계는,
    상기 글릿에 대한 모델 할당을 위해 각 모델에 대하여 파티션 크기에서의 배치의 프로파일 실행 지연, 간섭 함수, 모델별 서비스 레벨 목표(Service Level Objectives; SLO)를 입력 받고, 상기 미리 정해진 주기마다 추론을 실행하는 모델의 수신 요청률을 확인하는
    다중 GPU 환경 기반 시공간분할 스케줄링 방법.
  7. 제6항에 있어서,
    상기 스케줄러가 미리 정해진 주기로 트리거되어 재스케줄링이 필요한지 여부를 판단하고, 상기 글릿의 크기 및 글릿에 대한 모델 할당을 결정하는 단계는,
    재스케줄링이 필요한 경우 상기 스케줄러는 상기 입력을 사용하여 탄력적 분할을 수행하는
    다중 GPU 환경 기반 시공간분할 스케줄링 방법.
  8. 제6항에 있어서,
    상기 스케줄러가 미리 정해진 주기로 트리거되어 재스케줄링이 필요한지 여부를 판단하고, 상기 글릿의 크기 및 글릿에 대한 모델 할당을 결정하는 단계는,
    시스템의 처리량을 최대화 하기 위해 배치, GPU 분할, 시간 공유의 3차원 상에 구축된 검색 공간의 스위트 스폿(sweet spot)에 위치한 최적의 스케줄링을 결정하는
    다중 GPU 환경 기반 시공간분할 스케줄링 방법.
  9. 제5항에 있어서,
    상기 스케줄러가 미리 정해진 주기로 트리거되어 재스케줄링이 필요한지 여부를 판단하고, 상기 글릿의 크기 및 글릿에 대한 모델 할당을 결정하는 단계는,
    가장 비용 효율이 높은 글릿 크기 및 서비스 레벨 목표 위반을 회피하는 비율을 제공하는 데 필요한 최소 글릿 크기 중 가장 작은 크기의 글릿을 선택하고,
    미리 정해진 수신율을 만족시킬 때까지, 또는 시스템에 더 이상 글릿이 남지 않을 때까지 적어도 하나 이상의 글릿을 할당하고, 할당된 글릿의 시간적 스케줄링을 수행하는
    다중 GPU 환경 기반 시공간분할 스케줄링 방법.
  10. 다중 GPU 환경 기반 시공간분할 스케줄링 시스템에 의해 다중 GPU 환경 기반 시공간분할 스케줄링 방법을 실행시키기 위해 컴퓨터 판독 가능한 저장 매체에 저장된 프로그램에 있어서,
    스케줄러가 구성 가능한 GPU 자원을 사용하여 최적의 자원 양을 가진 가상 GPU인 글릿(glet)을 생성하는 단계;
    스케줄러가 수신 요청률 모니터링 및 오프라인에서의 퍼포먼스 통계를 수집하는 성능 프로파일러를 이용하여 배치 크기 및 글릿(glet) 크기의 쌍에 대한 추론 지연을 포함하는 스케줄링을 결정하는 단계;
    스케줄러가 미리 정해진 주기로 트리거되어 재스케줄링이 필요한지 여부를 판단하고, 상기 글릿의 크기 및 글릿에 대한 모델 할당을 결정하는 단계; 및
    동적 파티션 재구성부를 통해 상기 스케줄러가 결정한 스케줄링에 기초하여 다음 추론 요청을 처리하도록 GPU 상의 글릿을 준비하는 단계
    를 포함하는 컴퓨터 판독 가능한 저장 매체에 저장된 프로그램.
KR1020220055977A 2022-05-06 2022-05-06 기계학습 추론 작업을 위한 다중 gpu 환경 기반 시공간분할 스케줄링 sw KR20230156510A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020220055977A KR20230156510A (ko) 2022-05-06 2022-05-06 기계학습 추론 작업을 위한 다중 gpu 환경 기반 시공간분할 스케줄링 sw

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220055977A KR20230156510A (ko) 2022-05-06 2022-05-06 기계학습 추론 작업을 위한 다중 gpu 환경 기반 시공간분할 스케줄링 sw

Publications (1)

Publication Number Publication Date
KR20230156510A true KR20230156510A (ko) 2023-11-14

Family

ID=88745005

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220055977A KR20230156510A (ko) 2022-05-06 2022-05-06 기계학습 추론 작업을 위한 다중 gpu 환경 기반 시공간분할 스케줄링 sw

Country Status (1)

Country Link
KR (1) KR20230156510A (ko)

Non-Patent Citations (8)

* Cited by examiner, † Cited by third party
Title
[1] NVIDIA Corporation. Deep Learning Inference Platform, 2013. https://www.nvidia. com/en-us/deep-learning-ai/solutions/ inference-platform/.
[2] Haichen Shen, Lequn Chen, Yuchen Jin, Liangyu Zhao, Bingyu Kong, Matthai Philipose, Arvind Krishnamurthy, and Ravi Sundaram. Nexus: A GPU Cluster Engine for Accelerating DNN-Based Video Analysis. In Proceedings of the 27th ACM Symposium on Operating Systems Principles (SOSP), 2019.
[3] Chengliang Zhang, Minchen Yu, Wei Wang, and Feng Yan. MArk: Exploiting Cloud Services for CostEffective, SLO-Aware Machine Learning Inference Serving. In Proceedings of the USENIX Annual Technical Conference (USENIX ATC), 2019.
[4] Daniel Crankshaw, Xin Wang, Guilio Zhou, Michael J Franklin, Joseph E Gonzalez, and Ion Stoica. Clipper: A Low-Latency Online Prediction Serving System. In Proceedings of the 14th USENIX Symposium on Networked Systems Design and Implementation (NSDI), 2017.
[5] NVIDIA Corporation. Multi-Process Service, 2019. https://docs.nvidia.com/deploy/pdf/ CUDA_Multi_Process_Service_Overview.pdf.
[6] Francisco Romero, Qian Li, Neeraja J. Yadwadkar, and Christos Kozyrakis. Infaas: Automated model-less inference serving. In 2021 USENIX Annual Technical Conference (USENIX ATC 21), pages 397-411. USENIX Association, July 2021.
[7] Aditya Dhakal, Sameer G Kulkarni, and K. K. Ramakrishnan. Gslice: Controlled spatial sharing of gpus for a scalable inference platform. In Proceedings of the 11th ACM Symposium on Cloud Computing, SoCC '20, page 492-506, New York, NY, USA, 2020. Association for Computing Machinery.
[8] Quan Chen, Hailong Yang, Minyi Guo, Ram Srivatsa Kannan, Jason Mars, and Lingjia Tang. Prophet: Precise qos prediction on non-preemptive accelerators to improve utilization in warehouse-scale computers. In Proceedings of the 22nd International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS), 2017.

Similar Documents

Publication Publication Date Title
Choi et al. Serving heterogeneous machine learning models on {Multi-GPU} servers with {Spatio-Temporal} sharing
Chowdhury et al. Implementation and performance analysis of various VM placement strategies in CloudSim
CN110249311B (zh) 云计算系统中针对虚拟机的资源管理
Haque et al. Few-to-many: Incremental parallelism for reducing tail latency in interactive services
US8689226B2 (en) Assigning resources to processing stages of a processing subsystem
Jayaram Subramanya et al. Sia: Heterogeneity-aware, goodput-optimized ML-cluster scheduling
US11861272B2 (en) Comprehensive contention-based thread allocation and placement
US20160048413A1 (en) Parallel computer system, management apparatus, and control method for parallel computer system
US20210390405A1 (en) Microservice-based training systems in heterogeneous graphic processor unit (gpu) cluster and operating method thereof
Li et al. Adaptive priority-based data placement and multi-task scheduling in geo-distributed cloud systems
Czarnul et al. Optimization of execution time under power consumption constraints in a heterogeneous parallel system with gpus and cpus
US10853137B2 (en) Efficient resource allocation for concurrent graph workloads
Gu et al. FaST-GShare: Enabling efficient spatio-temporal GPU sharing in serverless computing for deep learning inference
Sena et al. Autonomic malleability in iterative mpi applications
Qin et al. Dynamic load balancing for I/O-intensive applications on clusters
Saleem et al. A Survey on Dynamic Application Mapping Approaches for Real-Time Network-on-Chip-Based Platforms
Obaida et al. Simulation of HPC job scheduling and large-scale parallel workloads
Bey et al. New tasks scheduling strategy for resources allocation in cloud computing environment
Zahaf et al. Contention-aware GPU partitioning and task-to-partition allocation for real-time workloads
Ma et al. MalleTrain: Deep Neural Networks Training on Unfillable Supercomputer Nodes
KR20230156510A (ko) 기계학습 추론 작업을 위한 다중 gpu 환경 기반 시공간분할 스케줄링 sw
Mendoza et al. Model Selection for Latency-Critical Inference Serving
Vakilinia et al. Preemptive cloud resource allocation modeling of processing jobs
Kaur et al. Genetic algorithm solution for scheduling jobs in multiprocessor environment
Nabavinejad et al. Data locality and VM interference aware mitigation of data skew in hadoop leveraging modern portfolio theory

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E902 Notification of reason for refusal