본문 바로가기

AstraGo

작업 스케줄러(job Scheduler)로 알아보는 Kubernetes의 빈패킹(Bin packing)


작업-AI개발-노트북
 

우리가 업무를 진행하며, 작업을 처리하는 방법은 여러 가지 있습니다. 여러 가지 할당된 업무를 배정받은 순서에 따라 차례대로 처리하는 방법. 작업 공수에 따라 우선순위를 나누어서 처리하는 방법. 이렇게 크게 두 가지 방법으로 나뉘게 됩니다.

 

만약 전자로 업무를 진행하는 중에 또 다른 업무가 급히 추가된다면, 여러분의 작업 순서는 꼬이기 마련인데요. 반대로 후자로 업무를 진행하고 있었다면, 또 다른 업무가 추가되어도 당황하지 않고 시간 내에 업무를 처리하게 됩니다. 이러한 원리는 GPU 자원의 사용에서도 동일하게 적용됩니다.

 

오늘은 클라우드 환경과 AI 작업에서 필수적으로 사용되는 ‘작업 스케줄링(Job Sceduling)’ 또는 ‘잡스케줄(Job Scedule)’을 소개해 보겠습니다.


< 한정된 AI 자원에서 극강의 효율 내기 >

 

 

예를 들어, 우리의 몸이 하나의 자원이라고 생각해 봅시다. 하나의 자원에서 다수의 업무를 동시에 처리하거나 유동적으로 분배하는 일은 어렵겠죠? 한정된 자원의 유동적인 분배는 기존 IT와 유사한데요. 그러나 AI 환경의 변화로 활용률에 대한 관심도가 증가하면서, 기존의 빠르고 유연한 배포(안정성)에 자원 활용의 극대화(효율성)까지 가진 기능과 플랫폼 필요하게 됩니다.


 

여기서 잡스케줄링(Job Sceduling)을 하게 되면, 작업 단계마다 자원 할당과 분배를 자동화해주어 우리는 편리하게 작업을 진행할 수 있게 되는데요. 마치, 다량의 업무 지시가 떨어졌을 때 누군가 스케줄표로 일괄 정리해 주어 편리함을 느끼게 되는 것처럼 말이죠!

 

< 잡스케줄러(Job Sceduler)란 무엇인가요? >

 

클라우드-온프로미스환경

작업 스케줄러(Job-Scheduler)클라우드 및 온프로미스 환경에서 여러 개의 작업(job)이 요청되었을 때 한정된 자원을 효율적으로 배분하여, 사용자의 작업이 원활히 수행되도록 도와주는 역할을 합니다.

 

예를 들어, Job A 작업에 GPU 4장이 필요하다면, 작업 스케줄러(Job Scheduler)가 JOB A를 GPU 4장이 사용 가능한 서버에 자동 할당시켜줍니다. 만약, 2장은 이미 사용하고 있는 상태라면, 4장을 요청했을 때 할당이 불가합니다. 또한 이미 2장을 점유하고 있는 상태이기 때문에 효율성이 떨어지게 됩니다.

 

이처럼 쿠버네티스 작업 스케줄러(Job-Scheduler)는 다양한 환경에서 사용자의 원활한 작업을 지원하고 한정된 자원의 효율적 배분을 가능하게 해줍니다.


 

일반적으로 1개의 잡(JOB)을 진행할 때, 1개의 GPU를 사용한다고 생각해 봅시다. 이때 가용 자원이 많은 노드부터 배정하게 된다면, 작업의 안정도는 올라가게 되지만 그만큼 낭비하는 자원이 많게 되어 효율성을 떨어뜨릴 수밖에 없는데요. 이 때문에 개발자 및 작업자들은 안정성을 기본으로 한 효율적인 잡 스케줄링이 없는지 찾아 나서게 됩니다. 여기서 빈패킹(BinPacking Scheduler)를 이용하게 된다면, 리소스 효율을 높일 수 있게 됩니다!

 

< 효율 중심의 쿠버네티스 빈패킹(Bin-Packing) >

 
엔비디아-데이터센터
이미지 출처: nvidia
 

쿠버네티스에서 제공하고 있는 방식 중 하나인 빈패킹 (Bin Packing) 스케줄러는 잡 배정 시, 가용 자원이 적은 노드부터 배정하며, 단일 노드에서만 적용할 수 있어, 효율을 높이는 방식입니다. 빈패킹 방식을 이용하면 GPU 사용률에 긍정적인 효과를 가져올 수 있습니다.

 

binpacking-빈패킹-빈패킹스케줄러-잡스케줄러
이미지 출처: 삼성 SDS

Bin Packing Schedular 방식을 사용하게 될 경우, 한 곳으로 작업 배정이 고려되기 때문에, JOB이 모두 한 곳에서 작업 수행이 되어 수행 시간을 크게 줄이는 효과를 볼 수 있습니다. 같은 시간 동안 더 많은 작업을 실행할 수 있으므로 GPU 사용률 또한 향상시킬 수 있습니다.


< GPU 활용을 극대화해줄 잡스케줄링(Job-Sceduling) >

 
아스트라고-astrago
▲ 이미지 클릭 시 아스트라고 페이지 이동 ▲

 

씨이랩의 astrago 역시, 여러분의 효율적 자원 사용을 위해 다양한 스케줄링 방식을 제공하며, 많은 프로젝트를 실행할 수 있게 도와줍니다.

1️⃣ 분산학습: 멀티 노드를 사용한 학습 진행시 네트워크 대역폭과 리소스를 고려한 스케줄링으로 분산 학습 효율 향상

2️⃣ 효율성: 잡 배정 시 가용 자원이 적은 노드부터, 가능한 단일 노드에 배정하여 효율을 높이는 방식(Bin-Packing)

3️⃣ 안정성: 잡 배정 시 가용 자원이 많은 노드부터 배정하여 작업의 안정성을 높이는 방식

 

위와 같이, astrago는 조직과 프로젝트의 목적에 맞는 스케줄러를 제공하고 있는데요. 이 중에서도 Bin-Packing 스케줄러는 효율성을 중심으로 GPU 사용률을 크게 향상시켜, 더 많은 ML 프로젝트를 실행할 수 있습니다. 또한 아스트라고 내 다양한 기능을 결합하여, 최대 200%까지 활용을 끌어올릴 수 있습니다.


 

오늘 알아본 잡스케줄링 기능과 Bin-Packing 방식을 통해 한정된 자원을 효율적으로 나눠쓸 수 있는 방법을 알아보았습니다. ML 프로젝트를 진행하시는 개발자 또는 작업자라면, 쿠버네티스 기반의 AI 머신러닝 솔루션 astrago 또한 눈 여겨보시는 게 어떨까요?

 

 

 

Email : astrago@xiilab.com

TEL: 02-6914-9369