Slurm VS Kubernetes
Slurm(Simple Linux Utility for Resource Management)이란?
MLOps를 이야기하면, 대부분 K8S는 많이 들어 봤을것이다. 하지만, Slurm에 대해서는 생소한 사람들도 많을 것이다. Slurm과 K8S를 비교하기에 앞서, 간단하게 알아보자.
우선 이름에서 알 수 있듯. Slurm은 리소스를 관리하기 위한 시스템이다. 그렇다면, 어떤 환경의 리소스를 다루느냐? 그건 바로 HPC(High Performance Computing) 환경이다. Slurm은 대규모 연산에 특화되어 있는 시스템으로 다수의 노드를 관리하는데 탁월한 시스템이다.
크게 slurmctld, slurmd, slurmdbd 3가지 구성요소를 가지고 있으며 slurmctld는 중앙 제어 데몬으로 전체 클러스터의 작업 스케줄링과 자원 관리를 담당한다. 그리고 slurmd는 각 클러스터 노드에서 연산을 담당하는 데몬으로 해당 노드의 작업 실행을 관리한다. 마지막으로 slurmdbd는 클러스터의 데이터베이스 데몬으로 각종 활동에 대한 로그를 저장한다.
여기서 크게 본다면, slurmctld와 slurmd의 관계는 K8S의 마스터 노드와 슬레이브 노드의 구조와 유사하다고 생각하면 된다.
Slurm과 K8S를 비교해보자
Slurm과 K8S 모두 클러스터를 관리하기 위해 개발되었다. 두 시스템 모두 공통으로 클러스터 환경에서 리소스를 관리하고, 작업을 효과적으로 스케줄링하는 기능을 지원한다. 여러 컴퓨터 노드를 통합하여 관리하며, 사용자의 작업 요청에 따라서 자동으로 처리하는 기능을 지원한다. 전반적인 기능은 유사하지만, 각 시스템의 목적에 따라 차이가 있다.
우선 Slurm은 HPC(High Performance Computing) 환경에 특화된 작업 스케줄링 및 자원 관리 시스템이다. 미리 작성한 작업 스크립트를 기반으로 자원을 스케줄링하며 GPU, CPU, 메모리 그리고 디스크 공간까지 세밀하게 조절이 가능하다. 대규모의 클러스터를 관리하는데 용이하며, 다수의 작업 큐 관리에 탁월한 장점이 있다. 대체로 연구 및 학술적인 환경에서 주로 사용되는 시스템이다.
K8S는 컨테이너 오케스트레이션 시스템으로, 컨테이너화된 애플리케이션의 배포, 관리 및 스케일링에 중점을 두고 있다. 이에 따라서, 마이크로 서비스나 클라우드 네이티브 환경에 용이하다. 데이터 수집 및 관리, 모델의 학습 그리고 서비스까지 자동화가 이뤄지게 되어 서비스 운영에 탁월하다. 빠르게 배포하고, 확장 및 축소 그리고 안정성까지 확보한 서비스를 위해 주로 사용되는 시스템이다.
결론적으로, Slurm은 모델의 학습 및 연구 그리고 K8S는 서비스 운영을 포괄적으로 관리가 용이하다. 개인적인 의견으로는 Slurm이나 K8S 두 시스템 모두 처음 기반을 구축하기 위해서는 상당한 인력과 시간이 필요하다. 이후 확장성을 고려해서 K8S를 먼저 구축하고 이후에 필요한 경우 K8S의 스케줄러 대신 Slurm의 스케줄러를 추가로 교체하는 방법 등을 사용하는 것이, 커리어 측면이나 이후 확장성을 고려했을 때 좋을 것으로 판단된다.
여담으로, Slurm과 K8S는 비슷한 목표를 가지고 있지만 구체적인 적용 영역과 방법에서의 차이가 발생하는 것이 마치 DevOps와 MLOps의 관계와 유사하다는 생각이 든다.
Reference
'Study > MLOps' 카테고리의 다른 글
AWS Container Support Service (1/3) (0) | 2024.03.07 |
---|---|
근본의 Ansible? (0) | 2024.01.03 |
도대체 MLOps는 무엇일까? (1) | 2023.11.21 |
pydantic을 사용하여, 안정성 높이기 (0) | 2023.01.26 |
BentoML로 모델 서빙하기 (0) | 2022.11.03 |