연산 세션에 폴더 마운트

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

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

스토리지 폴더를 마운트 하여 연산 세션 시작

참고

Folders to mount 패널에는 현재 사용자가 마운트 가능한 데이터 폴더만 출력됩니다. 예를 들어, 다른 프로젝트에 속한 프로젝트 폴더는 표시되지 않습니다. 각 폴더 이름 아래에서 해당 폴더가 속한 스토리지 호스트도 확인할 수 있습니다.

생성된 세션에서 터미널 아이콘을 클릭해 터미널 창을 띄워 봅시다. 터미널에서 ls 명령을 내려보면 user1-ml-test 폴더와 user2-vfolder 폴더가 홈 디렉토리 하위에 마운트 되어 보이는 것을 알 수 있습니다.

참고

선택한 폴더는 기본적으로 연산 세션 내의 /home/work/ 하위에 폴더의 이름으로 마운트 됩니다. 예를 들어, 폴더의 이름이 test 일 경우, /home/work/test 에 마운트 됩니다. 만약, 연산 세션 내 마운트 경로를 변경하고 싶다면 Path & Alias 입력 필드에 절대 경로를 입력합니다. 만약, test 폴더의 마운트 경로를 /workspace 로 입력한 경우, test 폴더가 연산 세션 내의 /workspace 경로에 마운트 됩니다. 상대 경로를 입력하면 /home/work/ 아래에 마운트 됩니다.

연산 세션이 삭제된 후에도 파일을 보존할 수 있는지 확인하기 위해 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 으로 패키지를 설치하면 사용자 홈폴더 하위에 있는 .local 폴더에 패키지를 설치하기 때문입니다 (자동 마운트 폴더는 사용자 홈폴더 하위에 마운트 됩니다). 따라서, 만약 tqdm 이라는 파이썬 패키지를 연산 환경과 상관없이 항상 설치되어 있는 상태를 유지하려면 터미널에서 다음과 같은 명령을 내릴 수 있습니다:

pip install tqdm

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

경고

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

Homebrew를 통해 패키지 설치

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

Homebrew는 다음과 같이 구성할 수 있습니다.

  • Data & Storage 페이지에서 .linuxbrew 폴더 생성.

  • 연산 세션을 생성(.linuxbrew 폴더가 자동으로 /home/linuxbrew/.linuxbrew 위치에 마운트).

  • 연산 세션 내에서 Homebrew 설치(아직 설치하지 않은 경우).

    $ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    
  • Homebrew 패키지는 다음과 같이설치할 수 있습니다:

    $ brew install hello
    $ hello
    Hello, world!
    

brew 는 패키지를 /home/linuxbrew/.linuxbrew 디렉토리 하위에 설치하는데, .linuxbrew 라는 데이터 폴더가 있다면 연산 세션 생성 시 자동으로 그 위치에 마운트합니다. 따라서, .linuxbrew 라는 자동 마운트 폴더를 생성해두면 연산 세션을 삭제하고 새로운 연산 세션을 생성하더라도 기존에 설치했던 Homebrew 패키지를 다시 사용할 수 있습니다.