728x90
개요
Singularity는 HPC(High-Performance Computing) 환경에 특화된 컨테이너 솔루션으로, 과학 연구 및 데이터 집약적인 작업을 위해 설계되었습니다. Docker와 유사하게 컨테이너 기술을 기반으로 하지만, HPC 환경의 요구 사항을 충족하도록 최적화되었습니다.
주요 특징
1. 보안 중심 설계
- Singularity는 루트 권한 없이 컨테이너 실행이 가능합니다.
- 일반 사용자가 컨테이너를 실행하더라도 호스트 시스템의 보안을 유지합니다.
- 컨테이너 내부의 프로세스는 사용자의 권한으로 실행되며, 이는 HPC 클러스터와 같은 멀티유저 환경에서 매우 중요합니다.
2. HPC 환경 통합
- Singularity는 MPI(Message Passing Interface), InfiniBand 등과 같은 HPC 라이브러리 및 네트워크를 완벽히 지원합니다.
- 컨테이너 내부와 외부 간의 파일 시스템이 자연스럽게 통합됩니다. (예: 컨테이너 내에서 홈 디렉토리 사용 가능)
3. 이미지 형식
- Singularity는 단일 .sif 파일 형식으로 컨테이너 이미지를 관리합니다. 이 형식은 이식성이 높고, 서명(Signing) 기능을 제공하여 보안을 강화합니다.
- .sif 파일은 고정된 크기의 읽기 전용 이미지로 생성되어, HPC 시스템의 스토리지 효율성을 높이고 데이터 손상을 방지합니다.
4. 루트리스 실행
- Docker와 달리 Singularity는 루트 권한이 없어도 컨테이너 생성과 실행이 가능합니다. 이는 공유 HPC 클러스터에서 안전하게 사용할 수 있도록 설계된 부분입니다.
- Singularity는 루트 권한이 없기 때문에 데몬이 없습니다.
5. Singularity 와 Docker 의 비교
특징 | Singularity | Docker |
HPC 지원 | HPC 환경에 최적화 | 기본적으로 클라우드 및 서버 환경 중심 |
루트 권한 | 필요 없음 | 루트 권한 필요 |
파일 시스템 통합 | 호스트 파일 시스템과 투명하게 통합 | 기본적으로 파일 시스템 격리 |
이미지 형식 | 단일 .sif 파일 | 레이어 기반 .tar 형식 |
보안 | 컨테이너 실행 시 높은 보안 | 보안 문제 가능(루트 권한 등) |
Singularity 설치 및 사용 예시
- 설치
sudo apt-get install singularity
- Docker 이미지 변환
singularity build my_image.sif docker://ubuntu:20.04
- 컨테이너 실행
singularity exec my_image.sif python script.py
- MPI 작업 실행
singularity exec --bind /path/to/data my_mpi_container.sif mpirun -np 4 ./my_mpi_program
Singularity 와 SGE(Sun Grid Engine) 예시
#!/bin/bash
#$ -cwd
#$ -pe mpi 4
#$ -N singularity_job
module load singularity
singularity exec my_container.sif mpirun -np $NSLOTS ./my_program
Singularity와 PBS의 사용 예시
#!/bin/bash
#PBS -N singularity_job
#PBS -l nodes=2:ppn=4
#PBS -q batch
#PBS -j oe
module load singularity
mpirun -np $PBS_NP singularity exec my_container.sif ./my_program
Singularity와 Slurm의 사용 예시
#!/bin/bash
#SBATCH --job-name=singularity_job
#SBATCH --ntasks=8
#SBATCH --nodes=2
#SBATCH --time=01:00:00
#SBATCH --output=output.log
#SBATCH --partition=compute
module load singularity
srun singularity exec my_container.sif ./my_program
Singularity와 HPC 스케줄러 통합의 주요 이점
- 컨테이너와 스케줄러 간 자연스러운 호환성
- 파일 시스템 접근 통합
- MPI 및 GPU 지원
- 작업 재현성
- 유연한 하드웨어 활용
- 복잡한 설치 과정의 다양한 소프트웨어 설치 필요 X
Singularity와 Software 예시
- Lammps
singularity build lammps.sif docker://lammps/lammps:stable
singularity exec lammps.sif lmp -in input.in
- VASP
singularity exec vasp.sif mpirun -np 16 vasp_std
- ANSYS
singularity exec --nv ansys_container.sif fluent -g -i input.jou
Docker 이미지(singularity)로 Software 활용의 장점과 한계
장점
- 의존성 관리 문제 해결: 서버 환경과 무관하게 동일한 소프트웨어 환경 실행 가능.
- 시간 절약: 설치 및 환경 설정에 소요되는 시간 대폭 감소.
- 이식성: 여러 서버에서 동일한 이미지를 사용하여 실행 가능.
- 보안: Singularity는 루트 권한 없이 실행되므로, 서버 보안 위험이 줄어듭니다.
- MPI 및 GPU 지원: 병렬 계산과 GPU 가속 작업 모두 지원.
한계
- 상용 소프트웨어 라이선스: VASP, ANSYS와 같은 상용 소프트웨어는 라이선스 문제로 이미지를 직접 빌드하거나 설정해야 합니다.
- 특화된 컨테이너 이미지 준비 필요: 기본적으로 제공되지 않는 소프트웨어는 Dockerfile 또는 Singularity 레시피를 작성해 컨테이너를 빌드해야 합니다.
- 호환성: 일부 스케줄러나 클러스터 설정에서 추가적인 튜닝이 필요할 수 있습니다.
Singularity & Apptainer
Singularity에 대해 찾아보다가 이름이 바뀐 것을 확인할 수 있었습니다. Apptainer로 2021년 11월부터 변경되었습니다.
이는 Singularity 프로젝트가 Linux Foundation의 소프트웨어 관리 하에 오픈소스 커뮤니티로 통합되면서 이루어진 변화입니다. 이름 변경은 브랜드와 오픈소스 정신을 더 잘 반영하기 위한 결정으로, 기술적인 변경보다는 주로 프로젝트 관리와 관련된 부분에서 이루어진 점을 강조하고 있습니다.
( 커맨드가 singularity run -> apptainer run 으로 변경됨)
'HPC' 카테고리의 다른 글
[HPC] CPU 성능 분석 (0) | 2025.01.24 |
---|---|
[HPC]Singularity 설치 및 사용 가이드 (0) | 2024.12.05 |
[Ubuntu] SGE 설치 (0) | 2024.09.03 |
HPE (Hewlett Packard Enterprise): 고성능 컴퓨팅의 선두 주자 (0) | 2024.06.11 |
PBS 클러스터: 고성능 컴퓨팅 환경의 중심 (0) | 2024.06.09 |