From T3_KR_KNU
(→CVMFS singularity.opensciencegrid.org repository에서 제공하고 있는 Apptainer 이미지) |
(→CVMFS singularity.opensciencegrid.org repository에서 제공하고 있는 Apptainer 이미지) |
||
Line 150: | Line 150: | ||
/cvmfs/singularity.opensciencegrid.org/: | /cvmfs/singularity.opensciencegrid.org/: | ||
lscsoft pystamp eic eicweb opencarp htc library pycbc | lscsoft pystamp eic eicweb opencarp htc library pycbc | ||
− | + | ||
... | ... | ||
<중략> | <중략> | ||
Line 157: | Line 157: | ||
/cvmfs/singularity.opensciencegrid.org/cwinpy: | /cvmfs/singularity.opensciencegrid.org/cwinpy: | ||
cwinpy-containers | cwinpy-containers | ||
− | + | ||
/cvmfs/singularity.opensciencegrid.org/cwinpy/cwinpy-containers: | /cvmfs/singularity.opensciencegrid.org/cwinpy/cwinpy-containers: | ||
cwinpy-dev-python38:latest | cwinpy-dev-python38:latest | ||
− | + | ||
/cvmfs/singularity.opensciencegrid.org/matthew-pitkin: | /cvmfs/singularity.opensciencegrid.org/matthew-pitkin: | ||
cwinpy-containers | cwinpy-containers | ||
− | + | ||
/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/patrickrmiles: | ||
− | + | ||
/cvmfs/singularity.opensciencegrid.org/scipp-atlas: | /cvmfs/singularity.opensciencegrid.org/scipp-atlas: | ||
mario-mapyde | mario-mapyde | ||
− | + | ||
/cvmfs/singularity.opensciencegrid.org/scipp-atlas/mario-mapyde: | /cvmfs/singularity.opensciencegrid.org/scipp-atlas/mario-mapyde: | ||
− | + | ||
/cvmfs/singularity.opensciencegrid.org/rucio: | /cvmfs/singularity.opensciencegrid.org/rucio: | ||
igwn-rucio-client | igwn-rucio-client | ||
− | + | ||
/cvmfs/singularity.opensciencegrid.org/rucio/igwn-rucio-client: | /cvmfs/singularity.opensciencegrid.org/rucio/igwn-rucio-client: | ||
Revision as of 06:34, 23 April 2025
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를 이용하여 el9 프로그램 실행하기
$ 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-el9 Singularity> cat /etc/redhat-release AlmaLinux release 9.5 (Teal Serval)
- cmssw-el8, cmssw-slc6 등 본인이 원하는 환경을 실행할 수 있습니다.
- 처음 실행할 때는 이미지를 다운로드 받기 때문에 시간이 걸릴수 있습니다.
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:latest/ 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:latest \ > ./HelloTensorflow.py 'Hello, TensorFlow!' 25 $
- shell 예제와 동일한 python 코드를 파일로 만들어 실행합니다.
CVMFS singularity.opensciencegrid.org repository에서 제공하고 있는 Apptainer 이미지
2024년 6월 현재 CVMFS singularity.opensciencegrid.org repository에서 제공하고 있는 Apptainer 이미지는 다음과 같습니다. 계속해서 업데이트 되니 본인에게 필요한 이미지가 있는지 확인해보세요.
$ 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/