From T3_KR_KNU
Contents
[hide]Apptainer 사용법
컨테이너란?
- vmware로 대표되는 가상화 기술과는 다른 모듈식으로 프로그램을 격리하여 운영할 수 있는 기술입니다.
- 해상 운송에서 사용하는 컨테이너에서 이름을 따왔으며 OS 환경과 독립적으로 모듈식으로 설치하고 실행할 수 있습니다.
- 하드웨어 및 OS 계층을 두지 않고 프로세스만 격리하기 때문에 기존의 가상화 기술에 비해 실행속도가 월등히 빠릅니다.
- 대표적인 컨테이너 프로그램으로 docker(https://www.docker.com) 가 있습니다.
컨테이너의 장점?
- 프로그램의 배포 및 설치가 쉽습니다.
- 해당 프로그램용으로 이미 구축된 이미지를 배포하고 그 이미지를 이용해서 바로 원하는 프로그램을 실행할 수 있습니다.
- 이 부분에서 가상화 환경의 이미지와 비슷해보이나 월등이 작은 저장공간만을 사용하고 실행 속도 또한 빠릅니다.
- OS 환경과 독립적인 실행환경을 구축할 수 있습니다.
- ex) Scientific Linux 6 환경에서 Centos 7 환경에서 컴파일된 프로그램을 실행할 수 있습니다. 그 반대도 가능합니다.
- 격리 환경이므로 사용자 프로그램간의 간섭을 최소화 할 수 있습니다.
Apptainer란?
Apptainer (https://apptainer.org/) 과학 연산에 적합하게 만들어진 컨테이너 프로그램입니다. 과학연산 작업을 수행할때 docker보다 더 빠른 속도를 보여줍니다.
기본 사용법
exec
apptainer exec 컨테이너이미지 실행명령
- 준비된 이미지를 이용하여 단일 프로그램이나 스크립트를 실행합니다.
shell
apptainer shell 컨테이너이미지
- 컨테이너 안에 interactive shell을 생성합니다.
사용 예제
apptainer를 이용하여 cc7 프로그램 실행하기
$ source /cvmfs/cms.cern.ch/cmsset_default.sh $ cmssw- cmssw-alma8 cmssw-cc7 cmssw-cs8 cmssw-el5 cmssw-el7 cmssw-el9 cmssw-fc39 cmssw-slc6 cmssw-cc6 cmssw-cc8 cmssw-cs9 cmssw-el6 cmssw-el8 cmssw-env cmssw-rocky8 cmssw-ubi8 $ cmssw-cc7 Singularity> cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core)
- cmssw-el8, cmssw-el9 등 본인이 원하는 환경을 실행할 수 있습니다.
- 처음 실행할 때는 이미지를 다운로드 받기 때문에 시간이 걸릴수 있습니다.
crab3 실행
# CMSSW 설치
$ set SCRAM_ARCH=slc7_amd64_gcc12 // 아키텍쳐 설정 $ source /cvmfs/cms.cern.ch/cmsset_default.sh $ scramv1 list CMSSW | grep CMSSW_13_ // CMSSW 조회 $ scramv1 project CMSSW CMSSW_13_3_3 // CMSSW 설치
# crab 환경 설정
$ source /cvmfs/cms.cern.ch/cmsset_default.sh $ cmsenv $ source /cvmfs/cms.cern.ch/crab3/crab.sh
# 작업 설정
$ vi crab3config.py $ vi job.py
# Grid proxy 생성
$ voms-proxy-init --voms cms
# 작업 실행
$ crab submit -c crab3config.py
# 작업 조회
$ crab status
tensorflow 실행하기
shell
$ apptainer shell \ > --home $PWD:/srv \ > --bind /cvmfs \ > --contain --ipc --pid \ > /cvmfs/singularity.opensciencegrid.org/opensciencegrid/tensorflow-gpu:1.4 Singularity :~> Singularity :~> python3 Python 3.6.9 (default, Jan 26 2021, 15:33:00) [GCC 8.4.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> >>> import os >>> os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' >>> >>> import tensorflow as tf >>> >>> hello = tf.constant('Hello, TensorFlow!') >>> print(hello.numpy()) b' Hello, TensorFlow!' >>> >>> a = tf.constant(15) >>> b = tf.constant(10) >>> result = a + b >>> print(result.numpy()) 25 >>> quit() Singularity :~> Singularity :~> exit $
- 위의 각 명령 실행시 cvmfs local cache에 관련 파일들이 다운로드 되어있지 않다면 많은 시간이 소요될 수 있습니다. 파일을 받았다면 두번째 부터는 빠르게 실행됩니다.
exec
$ cat HelloTensorflow.py #!/usr/bin/python3 import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' import tensorflow as tf hello = tf.constant('Hello, TensorFlow!') print(hello.numpy()) a = tf.constant(15) b = tf.constant(10) result = a + b print(result.numpy())
$ apptainer exec \ > --home $PWD:/srv \ > --bind /cvmfs \ > --contain --ipc --pid \ > /cvmfs/singularity.opensciencegrid.org/opensciencegrid/tensorflow-gpu:1.4 \ > ./HelloTensorflow.py 'Hello, TensorFlow!' 25 $
- shell 예제와 동일한 python 코드를 파일로 만들어 실행합니다.
CVMFS singularity.opensciencegrid.org repository에서 제공하고 있는 Apptainer 이미지
2025년 4월 현재 CVMFS singularity.opensciencegrid.org repository에서 제공하고 있는 Apptainer 이미지는 다음과 같습니다.
※주의 : 계속해서 업데이트 되니, 본인에게 필요한 이미지가 있는지 확인해보시고 활용하시기 바랍니다. (ls -Rt /cvmfs/singularity.opensciencegrid.org/)
$ ls -Rt /cvmfs/singularity.opensciencegrid.org/ /cvmfs/singularity.opensciencegrid.org/: lscsoft pystamp eic eicweb opencarp htc library pycbc ... <중략> ... /cvmfs/singularity.opensciencegrid.org/cwinpy: cwinpy-containers /cvmfs/singularity.opensciencegrid.org/cwinpy/cwinpy-containers: cwinpy-dev-python38:latest /cvmfs/singularity.opensciencegrid.org/matthew-pitkin: cwinpy-containers /cvmfs/singularity.opensciencegrid.org/matthew-pitkin/cwinpy-containers: /cvmfs/singularity.opensciencegrid.org/patrickrmiles: /cvmfs/singularity.opensciencegrid.org/scipp-atlas: mario-mapyde /cvmfs/singularity.opensciencegrid.org/scipp-atlas/mario-mapyde: /cvmfs/singularity.opensciencegrid.org/rucio: igwn-rucio-client /cvmfs/singularity.opensciencegrid.org/rucio/igwn-rucio-client:
경북대 UI에서 사용시 주의사항
- 보안문제로 cvmfs 외의 이미지는 현재 지원하고 있지 않습니다.
- 따라서 이미지 생성 및 다운로드 등 이미지 사용과 관련된 명령어는 현재 사용할 수 없습니다.
- cvmfs의 특성상 원하는 이미지가 로컬 cache에 저장되어 있지 않다면 파일 다운로드로 인하여 초기 실행에 많은 시간이 필요할 수도 있습니다.
HTCondor에서 apptainer를 이용하여 코드 실행하기
참고문서
- Apptainer 사용자 가이드 : https://apptainer.org/docs/user/main/
- Apptainer 관리자 가이드 : https://apptainer.org/docs/admin/main/