From T3_KR_KNU
Jump to: navigation, search

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를 이용하여 코드 실행하기

참고문서