IT/기초 지식

[Singularity] Singularity란?

개발자 두더지 2021. 5. 21. 00:01
728x90

 이번 포스팅에서는 Singularity란 무엇이고, 커맨드 군집 그리고 설치 방법에 대해서 간단히 살펴보고자한다. 조작 방법은 차차 나중에 포스팅할 예정이다.  

 

Singularity란


 Singularity란 한 마디로 설명하자면 HPC용의 컨테이너형 가상화이다. 과학 및 고성능 컴퓨팅 환경용으로 설계된 오픈 소스 베이스의 컨테이너 플랫폼으로 아래와 같은 특징이 있다.

 일반 유저 계정으로 컨테이너를 기동시키거나 중지시킬 수 있다. 즉, 유저 어카운트에 sudo권한을 부여할 필요가 없어서 좋다.  여러 명에서 작업을 할 때에 sudo권한을 가진 유저 중 한 명이 잘못 조작하는 것과 같은 번거로운 문제가 해결된다.

  • Docker이미지를 이용할 수 있다. 다시 말하자면, docker 및 nvidia-docker컨테이너 이미지를 사용할 수 있다.
  • 실행 유저 어카운트의 권한을 그대로 컨테이너에 인계할 수 있다. 컨테이너 내에서 파일의 작성하고 편집해도 owner은 실행 유저 그대로이다. 
  • GPU의 가상화에 대응가능하다. 컨테이너 실행시에 옵션을 부여하면 컨테이너내에 GPU도 이용가능하다.
  • 호스트의 $HOME아래를 컨테이너에 바인딩(공유)할 수 있다. 즉, $HOME이외에도 그 아래까지도 기본적으로 컨테이너쪽에 공유되므로 모델이나 교사 데이터의 이동이나 복사가 편리하다. 또한 시스템 관리자가 유저 바인딩을 허가한 경우는 유저쪽에서 바인딩 소스 및 대상을 지정할 수 있다.

 

호스트(바인딩 소스) 컨테이너(바인딩 타켓)
$HOME $HOME
/sys /sys
/proc /proc
/tmp /tmp
/var/tmp /var/tmp
/etc/resolv.conf /etc/resolv.conf
/etc/passwd /etc/passwd
$PWD $PWD

 

 

커맨드의 전체 그림


커맨드 군집을 살펴 보자면 아래의 이미지와 같이 다섯 가지가 있지만, 

command 설명 sample
build build를 사용하여 기존의 컨테이너를 다운로드하여 어셈블하거나 어떠한 포멧으로부터 다른 포멧으로 컨테이너를 변환하는 것등이 가능하다. singularity build singlarity-tensorflow.img docker://tensorflow/tensorflow
inspect 이미지 개요를 조사하기 위한 커맨드. runscript, 디스크립트, 환경, 헬프 및 메타 데이터 레벨을 간단히 표시해준다. singularity inspect singlarity-tensorflow.img
exec 호스트 시스템상에 직접 실행되고 있는 것과 같이, 컨테이너 이미지내의 임의의 컨테이너를 생성할 수 있다. 이 exec는 Docker exec와 달리, 컨테이너를 사용하기 전에 컨테이너를 "실행"할 필요가 없다. singularity exec singlarity-tensorflow.img python mnist_softmax.py
shell 컨테이너내에 대화형 쉘을 자동적으로 생성한다. singularity shell singlarity-tensorflow.img
run 컨테이너가 파일명으로 직접 실행 혹은 실행되었을 때에 실행될 커스텀 액션을 정의할 수 있다. singularity run singlarity-tensorflow.img
./singlarity-tensorflow.img
pull Docker Hub 혹은 Singularity Hub로 부터 컨테이너의 이미지를 취득할 수 있는 커맨드 singularity pull singlarity-tensorflow.img docker://tensorflow/tensorflow

 

 

Singularity의 설치


상황에 따라 1번 방법 혹은 2번 방법을 선택해서 다운로드하길 바란다.

[1번] 공식 홈페이지의 설명대로 설치한다.

Mac과 Windows는 vagrant > virtualbox > singularity > ubutu라는 흐름으로 되어 있다.

Mac

설명 : 블로그 포스트 (일본어 자료)

공식 홈페이지: https://singularity.lbl.gov/install-mac

Windows

설명 : 홈페이지상에 존재

공식 홈페이지 : https://singularity.lbl.gov/install-windows

Linux

설명 : 블로그 포스트 (일본어 자료)

공식 홈페이지  : https://singularity.lbl.gov/install-linux

[2번] (비공식) Docker컨테이너 상에서 구축한다.

설명 : 블로그 포스트 (일본어 자료)

일본어 자료라도 구글 번역 기능 + 코드를 참고해서 설치할 수 있을 거라고 생각합니다.


참고자료

https://qiita.com/mkt3/items/b9f86f5ddf9eb0f43608

https://qiita.com/daikumatan/items/a1f442777f9b7bc13112

728x90