폴더를 마운트 하여 연산 세션 생성

주석

목표

  • 연산 세션에 마운트 할 수 있는 영속 스토리지 생성 및 삭제 기능
  • 연산 세션의 수명주기와 별도로 데이터를 보관

연산 세션을 시작하면 사용자는 /home/work/ 폴더에 접근 권한을 가지게 되는데, /home/work/ 및 그 하위에 생성된 일반 폴더와 파일은 연산 세션이 삭제되면 함께 사라지게 됩니다. 이는 연산 세션이 컨테이너에 기반하여 동적으로 생성/삭제 되기 때문으로, 컨테이너 내부의 데이터를 컨테이너의 수명 주기와 상관없이 보존하려면 별도의 호스트 폴더를 컨테이너에 마운트 한 뒤 마운트 된 폴더 내에 파일을 생성해야 합니다. Backend.AI에서는 Storage 폴더 연산 세션 생성 시 마운트 할 수 있는 기능을 제공하고 있습니다.

Sessions 페이지로 이동해서 START 버튼을 눌러 새로운 세션을 생성해 보겠습니다. 세션 생성 다이얼로그에서 Folders to mount를 클릭하면 현재 사용자가 마운트 할 수 있는 폴더의 리스트를 볼 수 있습니다. 이 중에서 마운트 하고자 하는 폴더를 클릭하여 추가할 수 있습니다. 여러 개를 클릭해서 여러 폴더를 동시에 마운트 할 수도 있습니다. 이 예제에서는 user1-ml-testuser2-vfolder 두 개의 폴더를 마운트한 후 세션을 생성 하겠습니다.

Launch a compute session with storage folders

생성된 세션에서 터미널 아이콘을 클릭해 터미널 창을 띄워 봅시다. 터미널에서 ls 명령을 내려보면 user1-ml-test 폴더와 user2-vfolder 폴더가 홈 디렉토리 하위에 마운트 되어 보이는 것을 알 수 있습니다. 연산 세션이 삭제된 후에도 파일을 보존할 수 있는지 확인하기 위해 user2-vfolder 하위에 test_file 파일을 생성해 보겠습니다. 이 파일의 내용은 《file inside user2-vfolder》로 채우겠습니다.

Mounted folders in terminal

user2-vfolder 를 대상으로 ls 명령을 실행해보면 파일이 잘 생성된 것을 확인할 수 있습니다. cat 명령으로 파일 내용도 확인해 보았습니다.

이제 세션을 삭제한 후 Data & Storage 페이지로 이동합니다. user2-vfolder 폴더를 찾아 파일 탐색기를 열고 test_file 파일이 존재하는 것을 확인합니다. Actions의 파일 다운로드 버튼을 클릭하여 파일을 로컬 머신에 받아 내용을 확인해서 파일의 내용이 《file inside user2-vfolder》 임을 확인합니다.

Download icon in the folder explorer

이처럼 연산 세션을 생성할 때 폴더 마운트를 하고, 마운트 된 폴더에서 파일 작업을 수행하면 연산 세션이 종료된 이후에도 데이터를 보존할 수 있습니다.

자동 마운트 폴더를 이용하여 연산 세션 환경 구성하기

연산 세션에 사전 설치되어 있지 않은 새 프로그램이나 라이브러리를 필요로 할 때가 있습니다. 이런 경우, 연산 세션의 수명 주기와 관계없는 Storage 폴더 특성과 자동 마운트 폴더 를 이용해서 패키지를 설치하고, 연산 세션의 종류에 상관없이 일정한 환경을 구성할 수 있습니다.

pip을 통한 파이썬 패키지 설치

.local 이라는 이름의 폴더를 생성하면 파이썬 사용자 패키지를 해당 폴더에 설치하고 공유할 수 있습니다. pip–-user 옵션을 붙여 패키지를 설치하면 사용자 홈폴더 하위에 있는 .local 폴더에 패키지를 설치하기 때문입니다 (자동 마운트 폴더는 사용자 홈폴더 하위에 마운트 됩니다). 따라서, 만약 tqdm 이라는 파이썬 패키지를 연산 환경과 상관없이 항상 설치되어 있는 상태를 유지하려면 터미널에서 다음과 같은 명령을 내릴 수 있습니다:

pip install --user tqdm

이후, 연산 세션을 새로 생성하게 되면 tqdm 패키지가 설키된 .local 폴더가 자동으로 마운트 되므로, tqdm 패키지를 다시 설치하지 않고 사용할 수 있습니다.

경고

여러 파이썬 버전이나 다른 파이썬 버전을 사용하는 세션을 사용할 경우 패키지들의 호환성 문제가 있을 수 있습니다. 이는 .bashrc 편집기능을 통해 PYTHONPATH 를 분기하는 방식으로 적용할 수 있습니다. PYTHONPATH 환경 변수에 지정된 경로에 사용자 pip 패키지가 설치되기 때문입니다.

Homebrew를 통해 패키지 설치

Ubuntu의 apt 나 CentOS의 yum 같은 패키지 매니저는 일반적으로 sudo 권한을 필요로 합니다. Backend.AI의 연산 세션은 보안을 위해 sudo 권한 및 root 접근이 기본적으로 막혀 있기 때문에 (설정에 따라 접근을 허용할 수도 있습니다), 패키지 설치를 위해서는 Homebrew on Linux 사용을 권장하고 있습니다. Homebrew는 다음과 같은 방식으로 설치 및 사용할 수 있습니다:

  • Data & Storage 페이지에서 .linuxbrew 폴더 생성
  • 연산 세션을 생성 (.linuxbrew 폴더가 자동으로 마운트)
  • Homebrew on Linux 설치
sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)"
export PATH=/home/work/.linuxbrew/bin:$PATH
brew
  • 패키지 설치
brew install fortune
fortune

위와 같은 방식으로 자동 마운트 폴더를 이용하여 다양한 설정 관리가 가능합니다. 보다 자세한 사항은 Backend.AI 위키 에서 확인할 수 있습니다.