여기 계신 분들중에 Slurm 경험 있는 분 계실까요?
slurm이 현장에서 자주 쓰이나요?. ChatGPT 등에게 물어보면 HPC 분야에 자주 쓰이는 거같기는 한데… 요즘 LLM 정보가 맞는건지 검증하기 위해서는 현장의 실제 상황을 알고 싶은 마음에 ㅋㅋ
회사에서 다른 연구원들과 인공지능 연구개발 할 때 자원을 합리적으로 쓰려고 사용중인데, 다른 회사에서도 쓰는지는 잘 모르겠습니다..
안녕하세요? 김세곤님,
Slurm 은 Job Scheduler 로 대학 및 연구기관 HPC 센터에 많이 사용합니다. 국내에도 원자력센터나 기상 센터 등의 데이터센터에 사용되고 있습니다. 또한, 금융권에서도 LLM의 Foundation Model 개발하거나 Fine tuning 을 할 때, 사용하고 있습니다. 특히, GPU 클러스터에서 대규모 AI 모델 학습 관리나 기업 내 AI 연구 클러스터 (NVIDIA, Microsoft 등)에서 사용하고 있습니다.
미국 에너지부(DoE)의 많은 시스템에서 사용하고 있고, 전 세계 Top 500의 슈퍼컴퓨터 환경 (예: Oak Ridge의 Summit, NERSC의 Perlmutter 등) 에서도 잘 사용하고 있습니다. 그 이유는 오픈소스이기 때문에 매우 확장 가능하고 유연하고, 다양한 플러그인 시스템을 통해 커스터마이징 가능합니다.
또한, MPI 지원, 인피니밴드 네트워킹, GPU 작업 스케쥴링에 뛰어납니다. 경쟁 기술에서는 Podman, PBS (Portable Batch System), IBM Spectrum LSF, Grid Engine, Podman 기술이 있으며, 요즈음은 배치 스케줄링 관점에서 Kubernetes 기술도 지원합니다. GPU Operator를 이용하기 떄문에 예전처럼 느리지 않습니다.
그러나, Slurm 의 단점은 분산 컴퓨팅의 Job Scheduler 이기 때문에 LLM 학습이후 Production 때 CI/CD를 지원하지 않습니다. 이건 별도로 구축해야 합니다.
온-프레미스 환경인 HPE, NVIDIA, Dell, SuperMicro 장비 모두 지원하고, 퍼블릭 클라우드인 Azure, Google Cloud, OCI, AWS 인스턴스에 모두 지원하고 있고, 개발 및 배포, 운영 솔루션이 최신 업데이트 되고 있습니다. 특히, AWS 경우엔 SageMaker Hyperpod 내부 엔진이 Slurm 으로 이루어져 있어서 적어도 1백대 - 1천대 인스턴스를 생성해서 Job Scheduling 하는 데모를 볼 수 있습니다.
그럼 더 궁금한 점이 있다면 댓글을 주시고 위의 관련 내용들을 검색해 보시면 Slurm 활용 사례를 한 눈에 볼 수 있을 것 같습니다. 감사합니다.
@synabreu 님! 자세한 정보 감사합니다. ChatGPT에 물어보면 맞는 것도 있고 틀린 것도 있어서… 검증이 안됐는데… 답변 주신 내용으로 좀 더 분석을 해보고, 저희 팀원들이랑 내부 구축에 Slurm을 사용 할지 여부를 한번 확인하겠습니다.
감사합니다.
@cvnrainland 네엡~ 초기 검토하는 데, 도움이 되었으면 합니다. 다만 멀티 노드 멀티 GPU에서 잘 사용하기 까지는 학습히는 데 러닝 커브가 있습니다. 그외 궁금한 점이 있다면 댓글을 남겨 주세요~!!
@synabreu 예. 그러겠습니다. 너무 감사합니다.
아래 추가적으로 댓글은 NVIDIA 김창민 상무님이 추가적으로 의견을 주신 내용입니다.
" 하나더 제대로 Slurm을 배우기를 원하시는 분들은 SchedMD에서 제공하는 training https://www.schedmd.com/slurm-support/our-services/ 강력 추천드립니다!
"
안녕하세요.
이전 직장(SI대기업 AI연구소)에서 Pretraining/Finetuning 용으로 사용할 GPU 장비를 Slurm 클러스터로 관리했던 경험이 있습니다.
저희는 2019년에 NVIDIA에서 공개했던 deepops 사용해 구성했었고요.(GitHub - NVIDIA/deepops: Tools for building GPU clusters) 오픈소스이나, 지금은 NVIDIA에서 더 이상 지원해주고 있지 않아서 사실상 deprecated 된 상태이긴 합니다만 어떤 요소들을 설치해주나 참고는 하실 수 있을 것 같습니다.
Slurm에 대해서는 위에 synabreu님이 잘 정리해주셨고, 제 개인적인 경험으로는 1)HPC용 container (apptainer 등)을 쓸 수 있었고, 2)다수의 노드 관리하는 입장에서는 관리자를 위한 기능이 풍부하다고 느껴졌으며 3)infiniband/rdma 사용을 위해서 k8s에는 별도 플러그인이 필요했는데 이처럼 k8s에 이것저것 plugin을 추가하다보면 control plane의 복잡도가 금방 올라가서 관리자 입장에서는 좀 고역이었는데 slurm의 control plane은 거기에 비하면 상당히 단순했던 것 같습니다.
단점으로는 역시 Job scheduler이기 때문에 CI/CD가 지원이 안 되고, 실제 프로덕션 레벨의 서비스에 필요한 유연하고 풍부한 container 관리 기능들은 slurm은 제공하지 않습니다. 저희는 서빙의 경우엔 아예 CSP에 VM 만들어서 CI/CD 구축하고 k8s로 추론 서비스를 띄우는 것으로 해결하였습니다. 그리고 아무래도 k8s보다는 참고할 자료가 좀 적습니다. Slurm을 필요로 할 만큼 많은 장비를 보유한 곳이 결국 학교나 연구소, 자체 DC를 보유할만한 대기업 정도이다 보니 그런 것 같습니다.
헉 혹시 김창민 상무님도 클라우드브로 회원이신가용?
예. 저희 Bro분이십니다.
다음주에 점심식사 하기로 했어요.
안녕하세요.
Slurm을 아시는 분이 많이 없는데 이렇게 게시판에 언급되니 반갑네요.
HPC에서 잡스케쥴러가 필수적인데 상용 스케쥴러는 IBM의 LSF, 알테어란 회사의 PBS Pro가 있고요.
오픈소스도 여러개 있지만 현재까지 잘 유지되는건 Slurm입니다.
다른 오픈소스로 Grid Engine, Torque, OpenPBS등이 있는데 가장 유명한 것은 Slurm입니다.
그리고 K8s와 동시에 쓰이는 경우는 거의 없고 하나를 선택하는 것이 일반적입니다.
간단히 설명하면 K8s는 MLOps 기능, Slurm과 같은 HPC 스케줄러는 스케줄링에 장점이 있다고 보시면 됩니다.
AI의 경우에는 학습에는 Slurm이 추론에는 K8s가 더 낫다고 알려져있습니다.
당연히 학습의 경우 조금이라도 자원을 효율적으로 쓰는 것이 좋아서 그렇고 추론은 복잡한 파이프라인을 관리해야 되기 때문입니다.
그리고 현재는 Slurm도 꽤 괜찮은 컨테이너 기능을 지원하고 있고 K8s의 장점을 흡수하려는 노력을 많이 하고 있습니다.
클라우드에서 Slurm 사례를 보시려면 제가 운영하는 Awesome Cloud HPC가 있는데요.
https://github.com/kjrstory/awesome-cloud-hpc
여기서 Management Tool의 대다수는 Slurm을 지원하고 있습니다.
참고로 저 리스트중 특정 상품을 담당하고 있지만 혹시 광고로 느끼실 것 같아 언급을 삼가겠습니다.
@kjrstory 님! 완전 감동입니다. 잘 참고하겠습니다. ^^
@yoohee.chung 님! 좋은 정보에 감사드립니다. ^^
@yoohee.chung @synabreu
역시 전문가분들의 조언을 여기서 받네요.
감사합니다.