Worker Node
Storage Node
Single Node (Tower)
4GPU Server
8GPU Server
10GPU Server
나라장터 등록제품
2GPU Workstation
4GPU Workstation
Name Node
Data Node
Network Storage
Data Server
NVMe over Fabrics
SAN Storage
Backup Appliance
나라장터 등록제품
Cloud
Open Source
NVIDIA
HCI
Backup
MLOps
DeepOps는 Nvidia에서 제공하는 GPU 클러스터 배포 자동화 도구입니다.
Ansible을 이용하여 클러스터를 구성하고, Nvidia에서 제공하는 예제를 통해 구동테스트를 할 수 있습니다. DeepOps에서 제공하는 클러스터는 두 가지입니다. 둘 중 하나를 선택하여 구성할 수 있습니다.
Slurm : 병렬 연산 잡 스케쥴러 Kubernetes : 컨테이너 오케스트레이션 도구Architecture | MULTINODE AI AS A SERVICE STACK WITH KUBERNETES & SLURM
두 클러스터는 “클러스터”라는 이름은 공유하지만, 다른 색을 띠고 있는 서비스입니다. 저는 클러스터 제안 시 아래 기준으로 제안합니다.
Slurm은
여러 서버의 리소스를 합쳐서 사용하는데 적합합니다.
Kubernetes는
여러 서버의 리소스를 나누어 사용하는데 적합합니다.
저는 두 클러스터를 위 기준으로 정리했지만, 상황에 따라 더 적합한 클러스터는 달라질 수 있습니다.
Slurm은 병렬 연산을 위해 사용할 수 있습니다.
1. 사용자가 일을 전달합니다. 2. 리소스를 확보합니다. 3. 일을 각 서버에 분배합니다. 4. 일을 완료합니다. 5. 다음 예정된 일을 시작합니다.
Kubernetes를 활용하면 보다 많은 작업을 할 수 있습니다.
1. 컨테이너 배포를 자동화합니다. 2. 컨테이너 상태를 관리합니다.
물론, 컨테이너를 용도에 맞게 구성하여 Slurm과 같이 병렬 작업을 실행할 수 도 있으리라 생각됩니다. 하지만 많은 노력이 필요하겠네요. kubernetes는 보통 MLOps에서 프로젝트나 사용자 별로 리소스를 배정하거나, 배치 잡을 실행하는데 사용됩니다.
DeepOps에는 클러스터 패키지 외에도 관리를 위한 패키지도 다수 포함되어 있습니다. 대표적으로 DCGM을 활용하여 Grafana로 출력이 가능합니다. 배포 자동화를 위한 패키지도 포함되어 있습니다. 이런 패키지들을 통해 매우 쉽게 서버를 관리할 수 있고, 매우 쉽게 클러스터를 배포할 수 있습니다.
- bootstrap 서버를 따로 사용하지 않고, master에 구성하거나, 클라이언트에 VM으로 구성해도 상관없습니다. bootstrap 서버는 초기 구성시에만 사용하고, 클러스터 구동에 영향을 주지 않습니다. 하지만 추가 패키지 업데이트 등을 진행하려면 bootstrap 이 계속 필요합니다. - 테스트 환경은 GPU 없이 테스트하였습니다. CPU잡 구동은 문제없이 진행됩니다.
너무 간단하게 slurm 클러스터와 kubernetes 구성을 해보았습니다. deepops에서 제공하는 설치 패키지는 온프레미스 환경에서 클러스터 구성시 매우 유용하게 사용될 수 있습니다. 클러스터 구성후, 사용 환경에 맞춰 몇 가지 커스텀 후에 바로 사용할 수 있는 매우 좋은 배포 도구입니다.