검색 상세

컨테이너 환경에서 GPU 자원을 고려한 다중 프로세스 스케줄링 연구

A Study to Multi Process Scheduling Considering GPU Resource in Container Environments

초록 (요약문)

GPU(Graphics Processing Unit)는 보통 수 백 개에서 수 천 개의 코어로 구성되어 병렬 연산에 특화되어 있다. 초기에는 그래픽 처리를 위해 사용하였는데 최근 GPU를 CPU(Central Processing Unit)처럼 범용적인 연산에 활용할 수 있는 GPGPU(General-Purpose computing on Graphics Processing Unit) 기술이 나오면서 그 활용이 다양해졌다. GPGPU기술로 단순한 연산을 GPU의 core로 동시에 가능해졌고 간단한 연산을 반복하는 딥러닝의 학습과정에 활용되면서 GPU의 수요가 폭발적으로 증가하고 있다. 최근 GPU의 시장 규모가 매년 30%씩 커지고 있다. 딥러닝 학습을 빠르게 처리하기 위해서 고성능 GPU에 대한 수요도 늘고 이에 따라 GPU의 하드웨어 성능도 계속해서 높아지고 있다. 하지만 실제 GPU를 사용하는 산업현장에서는 딥러닝 학습 외에도 딥러닝 서비스 개발, 추론 작업에도 GPU를 많이 사용하고 있다. 서비스 개발과 추론 작업은 높은 GPU처리가 필요한 것이 아니라서 GPU 전체를 사용하지 않는다. 그래서 실제 GPU 사용자들의 1/3은 GPU의 15%도 활용하지 않아 고가의 GPU를 낭비하고 있다. 여러 사용자가 단일 GPU를 함께 사용할 수 있지만 동시에 여러 사용자가 사용하면 시분할로 GPU를 점유할 수 있어서 성능이 저하된다. 또한 특정 사용자가 메모리를 과도하게 사용하면 다른 사용자는 사용할 수 없다는 문제가 있다. 이러한 문제를 개선하기 위해 본 논문에서는 다수의 컨테이너에 GPU 자원을 나누어 사용할 수 있도록 스케줄링하여 여러 사용자가 동시에 컨테이너 환경에서 GPU를 사용할 수 있는 방법인 pGPU(Partitioning GPU)를 제안한다. 컨테이너 환경을 제공하여 각 사용자마다 독립된 개발 환경에서 각 컨테이너에 할당된 GPU 자원 내에서 작업할 수 있다. NVIDIA GPU를 사용하고 NVIDIA CUDA Runtime API를 사용하는 환경에서 프로토타입을 구현하였고, GPU를 컨테이너 별로 분할하여 할당하였다. 할당된 GPU를 초과하여 사용하면 컨테이너의 상태가 STOP으로 변경되어 다시 컨테이너를 RUN으로 변경 후 작업해야하는 번거로운 기존의 방법에서 해당 프로세스의 GPU사용만 반려하는 방법으로 구현하여 컨테이너 사용자의 불편함도 최소화 할 수 있다.

more

초록 (요약문)

GPU (Graphics Processing Unit)is usually composed of hundreds to thousands of cores and is specialized in parallel operations. Initially, it was used for graphics processing, but its use has recently diversified with the advent of GPGPU(General Purpose computing on Graphics Processing Unit) that can use GPU for general purpose operations such as CPU(central processing units). GPGPU enables simple operations at the same time as GPU core, and demand for GPU is exploding as they are used in the learning process of deep learning that repeats simple operations. Recently, GPU market size is growing by 30% every year. In order to quickly process deep learning, the demand for high-performance GPU is also increasing, and accordingly, the hardware performance of GPU continues to increase. However, in industrial sites that actually use GPU, it is used a lot for deep learning service development and reasoning work in addition to deep learning. Service development and inference work do not require high GPU processing, so the entire GPU is not used. Therefore, one-third of actual GPU users waste expensive GPU because they do not use 15% of GPU. Multiple users can use a single GPU together, but if multiple users use it at the same time, GPU can be occupied in a time-division, resulting in poor performance. In addition, there is a problem that if a specific user uses memory excessively, other users cannot use it. To improve this problem, this paper proposes a Parting GPU (pGPU), a method in which multiple users can use GPU in a container environment at the same time by scheduling GPU resources to be shared and used in multiple containers. By providing a container environment, each user may work within GPU resources allocated to each container in an independent development environment. Prototypes were implemented in environments using the NVIDIA GPU and the NVIDIA CUDA Runtime API, and it was divided and allocated for each container. If the allocated GPU is used in excess, the container's state is changed to STOP, so the container has to be changed back to RUN and then returned only to the GPU use of the process, minimizing the inconvenience of container users.

more