클러스터에 SSH로 접속했습니다. 그런데 로그인 프롬프트에서 100개의 GPU에서 작업이 실제로 실행되기까지 무슨 일이 일어나는 걸까요?
그 사이를 기록하고 싶습니다.
저는 Will Paik입니다. Northeastern University에서 HPC 머신러닝 성능 엔지니어로 일하고 있으며, 시스템 관리자(“안정적으로 유지”)와 연구자(“지금 당장 더 빠르게”) 사이의 간극을 메우는 것이 제 일입니다. Penn State에서 시작해 지금까지 9년째 비슷한 일을 하고 있습니다.
집에서는 소비자용 하드웨어로 6노드 HPC 클러스터를 직접 조립하고 있습니다. 클러스터가 필요해서가 아닙니다. 직접 만들어 보면 남이 만든 시스템을 수년간 사용해도 배우지 못하는 것들을 배울 수 있기 때문입니다.
1. 왜 이 블로그를 시작했나요? #
두 가지 빈자리가 이 블로그를 시작하게 만들었습니다.
첫 번째는 콘텐츠 자체의 빈자리입니다. HPC 관련 문서 대부분은 두 극단 중 하나에 있습니다. 수억 원 예산과 전담 IT 팀을 전제로 하는 엔터프라이즈 가이드이거나, 특정 문제 하나만 해결하고 왜 그런 문제가 생겼는지는 설명하지 않는 Stack Overflow 답변입니다. 시스템 전체가 어떻게 맞물려 돌아가는지 이해하고 싶은 사람을 위한 콘텐츠는 많지 않습니다.
두 번째는 한국어 콘텐츠의 빈자리입니다. 저는 한국인이고, HPC 시스템 관리, Slurm, NFS, 분산 스토리지, 클러스터 인프라에 대한 한국어 자료는 많이 없습니다. 한국 대학에도 클러스터가 있고, 한국 연구자들도 매일 그 시스템을 씁니다. 그들을 위한 실용적인 자료가 없다는 것은 바꿀 만한 일입니다.
2. 무엇을 하려고 하나요? #
일단은 공용 HPC 클러스터를 처음 사용하는 연구자를 위한 실용 가이드를 생각하고 있습니다. “sbatch 매뉴얼 페이지를 참고하세요” 수준이 아니라, 계정이 정지되지 않고 홈 디렉토리를 날리지 않으면서 실제로 일을 처리하는 데 필요한 것들입니다.
그 이후에는 홈 클러스터 빌드 과정을 처음부터 끝까지 기록할 계획입니다. 하드웨어 결정, 설정 파일, 실수까지 모두 담을 생각입니다. 네트워킹, 스토리지, 잡 스케줄링, Ansible 자동화, 그리고 GPU 워크로드까지입니다. 모든 것이 잘 작동한 뒤에 쓴 튜토리얼이 아니라, 실제 빌드 기록처럼 읽히는 글을 쓰고 싶습니다.
이게 ML 인프라, 분산 학습, 클러스터 벤치마킹으로 이어질지, 아니면 다른 방향이 될지는 앞으로 천천히 계획해 보겠습니다.
3. 어떻게 접근하려고 하나요? #
실제 하드웨어, 실제 출력 결과를 씁니다. 최종적으로 돌아가는 버전뿐 아니라 직접 겪은 문제나 트러블 슈팅 방법을 같이 업로드하고 싶습니다. 만들고 있는 클러스터는 소비자용 CPU, 소비자용 네트워킹, 게이밍 PC GPU 노드로 구성되어 있습니다. 해법도 그 조건에서 실제로 작동하는 것이어야 하고, 비슷한 제약이 있는 연구자에게도 쓸 수 있는 방식이어야 합니다.
모든 콘텐츠는 가능하면 영어와 한국어로 함께 제공합니다. 한국어 HPC 콘텐츠는 사실상 없다시피 하고, 그 상황을 바꾸고 싶습니다.
4. 어디에 업데이트 되나요? #
클러스터 빌드 에피소드 동영상은 The Login Node 유튜브 채널에 올라갑니다. GitHub 저장소에 공유할 자료가 있다면 올리겠습니다.
즐거운 컴퓨팅 되세요!