MareNostrum V와 HPC 실행 환경

핵심 요약

MareNostrum V는 바르셀로나 슈퍼컴퓨팅 센터의 약 2억 유로 규모 공공 연구 인프라다. 세계 최상위권 슈퍼컴퓨터 중 하나지만, 사용자가 체감하는 방식은 “초강력 단일 컴퓨터”가 아니라 수천 대의 독립 노드에 작업을 제출하는 분산 시스템에 가깝다.

핵심은 세 가지다.

  • 슈퍼컴퓨터는 거대한 한 대의 컴퓨터가 아니라, 고속 네트워크로 묶인 수천 개의 노드다.
  • 사용자는 로그인 노드에서 직접 계산하지 않고, SLURM 배치 스크립트로 계산 노드에 작업을 제출한다.
  • 에어갭 환경이므로 라이브러리, 데이터셋, 결과 추출까지 사전에 계획해야 한다.

아키텍처

HPC의 핵심 병목은 단순 연산량보다 노드 간 통신이다. GPU나 CPU가 빠르더라도 데이터 교환이 느리면 계산 자원이 놀게 된다.

MareNostrum V는 InfiniBand NDR200 기반 팻트리(fat-tree) 토폴로지를 사용한다. 팻트리는 상위 네트워크 계층으로 갈수록 링크 대역폭을 키워, 여러 노드가 동시에 통신해도 병목을 줄이는 구조다. 목표는 8,000개 노드 중 어떤 노드끼리도 낮은 지연 시간과 높은 대역폭으로 통신하게 만드는 것이다.

구성은 크게 나뉜다.

  • 범용 파티션(GPP): 6,408개 노드, 노드당 Intel Sapphire Rapids 112코어, 대규모 CPU 병렬 작업용.
  • 가속 파티션(ACC): 1,120개 노드, 노드당 NVIDIA H100 SXM 4개, AI 훈련·분자 동역학·특수 시뮬레이션용.
  • 로그인 노드: SSH 접속, 파일 이동, 컴파일, 작업 제출 같은 경량 작업 전용.
  • 양자 인프라: 디지털 게이트 기반 양자 시스템과 초전도 큐비트 기반 양자 어닐러가 클래식 HPC와 통합.

SLURM 작업 제출

수천 명이 같은 시스템을 쓰기 때문에 로그인 노드에서 무거운 계산을 직접 실행하면 안 된다. 계산은 SLURM(Simple Linux Utility for Resource Management)에 배치 작업으로 제출한다.

SLURM 스크립트는 다음을 명시한다.

  • --nodes: 사용할 물리 노드 수.
  • --ntasks: 생성할 MPI 태스크 수.
  • --time: wall-clock 제한 시간. 초과하면 작업은 즉시 종료된다.
  • --account: CPU/GPU 시간이 차감될 프로젝트 계정.
  • --qos: debug 같은 큐 또는 서비스 품질 등급.

작업은 큐에 들어가고, 스케줄러가 필요한 리소스를 확보하면 실행된다. stdout과 stderr는 터미널이 아니라 로그 파일로 남는다. 디버깅은 작업 종료 후 .out, .err 파일을 확인하는 방식이 기본이다.

에어갭 운영 현실

컴퓨트 노드는 외부 인터넷에 직접 접근하지 못한다. 따라서 pip install, wget, HuggingFace 다운로드 같은 작업을 실행 중에 하면 실패한다.

필요한 준비는 다음과 같다.

  • 라이브러리와 의존성을 사전에 내려받거나 컴파일해 스토리지에 배치.
  • 관리자 제공 module 시스템으로 OpenFOAM, MPI, CUDA, Python 환경 등을 로드.
  • 데이터셋은 scp, rsync 등으로 로그인 노드 경유 업로드.
  • 결과도 로그인 노드를 통해 다시 추출.

흥미로운 점은 계산이 너무 빠르기 때문에, 실제 병목이 컴퓨팅이 아니라 결과 다운로드가 되는 경우도 있다는 것이다.

OpenFOAM 예시

기사의 예시는 ML 서로게이트 모델 학습을 위해 50개 3D 메시 각각에 대해 고정밀 CFD 시뮬레이션을 돌리는 작업이다.

작업 흐름은 대략 다음과 같다.

  1. SLURM 스크립트에서 1개 노드, 6개 태스크, 30분 제한을 요청한다.
  2. module load OpenFOAM/11-foss-2023a로 환경을 구성한다.
  3. srun --mpi=pmixsurfaceFeatureExtract, blockMesh, decomposePar, snappyHexMesh, potentialFoam, simpleFoam, reconstructPar를 순차 실행한다.
  4. 50개 케이스는 수동 제출하지 않고 sbatch --dependency=afterany:$PREV_JOB_ID로 체이닝한다.
  5. 다음 날 로그와 결과 파일을 회수해 ML 훈련용 텐서로 변환한다.

핵심은 슈퍼컴퓨터에서도 “작업을 잘게 쪼개고, 의존성을 명시하고, 실패 로그를 회수하는 운영 능력”이 중요하다는 점이다.

Amdahl의 법칙

코어가 많다고 항상 빨라지는 것은 아니다. 병렬화 불가능한 직렬 구간이 전체 속도 향상의 상한을 결정한다.

공식은 다음과 같다.

S = 1 / ((1 - p) + p / N)
  • S: 전체 속도 향상.
  • p: 병렬화 가능한 비율.
  • N: 프로세서 또는 코어 수.

예를 들어 코드의 5%가 직렬이라면, 무한히 많은 코어를 써도 최대 속도 향상은 20배를 넘지 못한다. 또한 너무 많은 코어로 작업을 쪼개면 InfiniBand 통신 오버헤드가 커져 실제 계산보다 경계 조건 교환에 더 많은 시간이 들 수 있다.

슈퍼컴퓨터용 코드는 결국 컴퓨트 대 통신 비율을 관리하는 문제다.

접근 방식

MareNostrum V는 공공 연구 인프라라 연구자에게 무료로 제공된다. 단, 프로젝트 심사를 통과해 계산 시간 할당을 받아야 한다.

  • 스페인 기관 소속 연구자: 스페인 슈퍼컴퓨팅 네트워크(RES)를 통해 신청.
  • 유럽 연구자: EuroHPC 공동사업의 정기 접근 공모를 통해 신청.
  • Development Access: 코드 포팅, 벤치마킹, ML 모델 실험처럼 초기 개발 목적에 적합.

시사점

HPC 사용 역량은 단순히 빠른 하드웨어를 쓰는 능력이 아니다. 실제로는 배치 스케줄링, 의존성 관리, 에어갭 환경 준비, 로그 기반 디버깅, 병렬화 효율 판단이 결합된 운영 능력이다.

AI 인프라 관점에서도 연결점이 크다. 대규모 LLM 훈련·추론 역시 여러 GPU/노드의 병렬 처리, 고속 네트워크, KV 캐시·데이터 이동 병목, 작업 스케줄링 문제를 다룬다. HPC는 대규모 LLM 추론 인프라와 같은 문제를 더 오래 다뤄온 전통적 컴퓨팅 문화라고 볼 수 있다.

관련 노트