연산 세션

Backend.AI Web-UI 에서 가장 많이 방문하게 될 페이지는 Sessions 와 Storage 페이지입니다. Sessions 페이지에서는 컨테이너 기반의 연산 세션을 조회하거나 생성 및 사용할 수 있고, Storage 페이지에서는 데이터를 보관하는 저장 폴더를 생성할 수 있습니다. 여기서는 Sessions 페이지에서 컨테이너 기반의 연산 세션을 생성하고 각종 웹 애플리케이션을 활용하는 방법을 알아봅니다.

새로운 세션 시작하기

사용자 계정으로 로그인 후 좌측 메뉴의 Sessions 를 클릭하여 Sessions 페이지로 이동합니다. Sessions 페이지는 새로운 연산 세션을 시작하거나 이미 실행 중인 연산 세션을 관리할 때 사용할 수 있습니다.

../_images/sessions_page.png

새로운 연산 세션을 시작하려면 START 버튼을 클릭합니다. Backend.AI 24.03 버전부터는 세션 런처(NEO)의 개선된 버전을 제공합니다. 이전의 대화식 세션 런처를 사용하고 싶다면, 알림에서 Classic 버튼을 누르고 세션을 생성하세요. 사용 방법에 대한 자세한 내용은 다음 링크 를 참고하세요.

../_images/launch_session_1.png

첫 번째 페이지에서는 세션의 형태인 interactive 또는 batch 를 선택해야 합니다. 그리고 세션 이름을 지정할 수 있습니다. (선택사항)

  • Session type: 세션의 형태를 결정합니다. 현재 가능한 세션 형태는 “Interactive” 와 “Batch” 두 가지가 있습니다. 두 형태의 주요한 차이점은 다음과 같습니다:

    • Interactive 형태 연산 세션

      • Backend.AI 초기 버전부터 지원하던 형태입니다.

      • 사용자가 별도의 실행 스크립트를 지정하지 않고 일단 세션을 생성한 후 상호 작용하는 방식으로 세션을 사용하게 됩니다.

      • 사용자가 명시적으로 삭제하지 않는 한 세션은 자동 삭제되지 않습니다. 다만, 관리자가 별도의 세션 자동 수거 설정을 켜둔 경우에는, 그 조건에 따라 자동으로 삭제될 수도 있습니다.

    • Batch 형태 연산 세션

      • Backend.AI 22.03 부터 GUI 를 통해 제공합니다. 다만, CLI 의 경우에는 그 이전부터 지원하고 있었습니다.

      • 사용자가 연산 세션을 생성할 때 실행할 스크립트를 미리 지정합니다.

      • 자원이 할당되는 즉시 해당 스크립트를 실행하고, 스크립트가 종료되는 그 즉시 연산 세션을 자동으로 삭제합니다. 따라서, 실행할 코드가 사전에 정의되어 있거나 작업을 파이프라이닝 하는 경우에는, 연산 서버 팜(server farm)의 자원을 보다 효율적으로 활용할 수 있는 장점이 있습니다.

      • 연산 세션 시작 시점을 지정할 수 있습니다. 다만, 시작 시점에 반드시 연산 세션이 자원을 할당받을 수 있는 것은 아닙니다(자원 부족 등의 이유로 PENDING 상태에 계속 머물 수 있습니다). 시작 시점 이전에는 자원이 있어도 연산 세션을 스케줄링 하지 않는 개념으로 이해하는 것이 정확합니다.

      ../_images/session_type_batch.png
  • Session name: 생성할 연산 세션의 이름을 지정할 수 있습니다. 지정하면 Session Info에 이 이름이 나타나므로 연산 세션의 구분이 용이합니다. 지정하지 않으면 임의의 이름이 자동으로 지정됩니다. 세션 이름은 4-64자 사이의 알파벳 또는 숫자만 받아들이며, 공백은 허용되지 않습니다.

다음 페이지로 진행하려면 아래쪽의 Next 버튼을 클릭하거나, 우측의 Environments & Resource allocation 버튼을 클릭하십시오. 추가 설정 없이 세션을 생성하려면 Skip to review 버튼을 누르십시오. 이 경우, 다른 페이지의 설정은 모두 기본값을 사용하게 됩니다.

두 번째 페이지에서 설정할 수 있는 각 항목에 대한 자세한 설명은 다음을 참고하십시오.

../_images/launch_session_2.png
  • Environments: TensorFlow, PyTorch, C++ 등과 같은 연산 세션의 기본 환경을 지정합니다. TensorFlow를 선택하면 연산 세션에서 TensorFlow 라이브러리를 사용할 수 있습니다. 다른 환경을 선택하면 해당 환경이 기본적으로 설치된 연산 세션을 생성하게 됩니다.

  • Version: 환경의 버전을 선택합니다. 예를 들어, TensorFlow 환경에서는 1.15, 2.3 등과 같은 버전을 선택할 수 있습니다.

  • Image Name: 연산 세션에 사용할 이미지의 이름을 지정할 수 있습니다. 환경 설정에 따라 이 설정이 사용 불가능할 수도 있습니다.

  • Set Environment Variable: 사용자가 연산 세션에 환경 변수를 설정할 수 있는 인터페이스를 제공합니다. 사용 방법은 세션 생성하기 전에 환경 변수를 추가하는 방법 섹션을 참고하십시오.

  • Resource Group: 연산 세션을 생성할 자원 그룹을 지정합니다. 자원 그룹은 각 사용자가 접근할 수 있는 호스트 서버를 묶은 단위이며, 주로 같은 종류의 GPU 자원을 보유하고 있는 서버들을 하나의 자원 그룹으로 설정합니다. 관리자는 서버를 종류별로 구분하여 자원 그룹으로 묶고, 사용자가 사용할 수 있는 자원 그룹의 종류를 지정할 수 있습니다. 사용자는 관리자가 허가한 자원 그룹 서버에만 연산 세션을 생성할 수 있습니다. 자원 그룹이 여러 개인 경우 원하는 그룹을 선택할 수 있지만, 하나만있는 경우에는 변경할 수 없습니다.

  • Resource Presets: 이 템플릿은 연산 세션에 할당할 CPU, 메모리, GPU 등의 자원 세트를 미리 정의해 둔 것입니다. 관리자는 미리 자주 사용하는 자원 설정을 정의할 수 있습니다. 숫자 입력을 조정하거나 슬라이더를 움직이면 원하는 자원량을 할당할 수 있습니다.

    ../_images/resource_presets.png

    각 항목의 의미는 다음과 같으며, 도움말 (?) 버튼을 클릭해서 확인할 수도 있습니다.

    • CPU: CPU는 명령어로 지정된 기본 산술, 논리, 제어 및 입출력 (I/O) 작업을 수행합니다. 고성능 컴퓨팅 워크로드의 경우 많은 CPU가 도움이 되지만, 여러 CPU를 사용하도록 프로그램 코드를 작성해야 합니다. (그렇지 않으면 대부분의 CPU는 사용되지 않을 것입니다.)

    • 컴퓨터 메모리는 임시 저장 영역입니다. 중앙 처리 장치 (CPU)에 필요한 데이터와 명령들을 보관하는 역할을 합니다.머신 러닝 워크로드를 처리할 때 GPU를 연산 장치로 사용하는 경우, GPU 메모리의 두 배 이상의 메모리를 할당해야 합니다. 그렇지 않으면 GPU의 유휴 시간이 증가하여 성능이 저하됩니다.

    • Shared Memory: 연산 세션에 할당할 공유 메모리의 용량 (GB). RAM에 설정된 메모리 중 일부를 떼어 공유 메모리로 사용합니다. 따라서, RAM에 지정된 양보다 클 수 없습니다.

    • AI Accelerator: AI 가속기 (GPU 및 NPU)는 기계 학습과 관련된 행렬 / 벡터 계산에 적합합니다. AI 가속기는 훈련 및 인퍼런스 알고리즘을 몇 배나 가속화하여 기계 학습 워크로드의 실행 시간을 몇 주에서 며칠로 줄입니다.

    • 세션은 지정된 환경과 자원에 따라 생성되는 계산 환경 단위입니다. 이 값을 1보다 큰 값으로 설정하면 위의 자원 설정을 이용한 여러 세션이 지정한 값 만큼 동시에 생성됩니다. 세션 시작 요청 시 사용 가능한 자원이 충분하지 않은 경우, 생성하지 못한 세션 시작 요청들은 생성 대기열에 추가됩니다.

    • Cluster mode: Backend.AI 는 한 번에 여러 연산 세션을 생성할 수 있는 클러스터 모드를 지원합니다. 더 자세한 정보는 Backend.AI 클러스터 연산 세션 개요 섹션을 참고하세요

  • High-Performance Computing Optimizations: Backend.AI 는 HPC 최적화 관련 값을 설정할 수 있습니다. 더 자세한 정보는 가속화 컴퓨팅 최적화하기 섹션을 참고하세요.

다음 페이지로 진행하려면 아래쪽의 Next 버튼을 클릭하거나, 우측의 Data & Storage 버튼을 클릭하세요.

../_images/launch_session_3.png

여기서는 연산 세션에 마운트 할 데이터 폴더를 지정할 수 있습니다. 연산 세션이 삭제되면 기본적으로 모든 데이터가 함께 삭제되지만, 여기서 마운트 한 폴더에 저장된 데이터는 삭제되지 않습니다. 마운트 폴더에 저장된 데이터는 다른 연산 세션을 생성할 때 다시 마운트하여 재사용 할 수도 있습니다. 폴더를 마운트하고 연산 세션을 실행하는 방법에 대한 정보는 연산 세션에 폴더 마운트 장을 참고하십시오. 여기서는 폴더를 마운트 하지 않고 그냥 지나가겠습니다. 다음 페이지로 이동합시다.

../_images/launch_session_4.png

네 번째 페이지에서는 사전 개방 포트와 같은 네트워크 구성을 설정할 수 있습니다.

네트워크 설정을 완료했다면, 아래쪽의 Next 버튼을 클릭하거나, 우측의 Confirm and Launch 버튼을 클릭하여 마지막 페이지로 이동합니다.

../_images/launch_session_5.png

마지막 페이지에 도착했습니다. 이전 페이지에서 설정한 연산 세션 환경, 자원 할당량과 마운트 정보, 설정된 환경변수, 사전 개방 포트 등의 정보를 볼 수 있습니다. 원하는 설정인지 마지막으로 확인한 후 Launch 버튼을 클릭합니다. 만약, 변경하고 싶은 설정이 있다면 Previous 버튼을 클릭하여 이전 페이지로 돌아갈 수 있습니다. 혹은, 각 카드 우측 상단에 있는 Edit 버튼을 눌러 해당 페이지로 돌아갈 수 있습니다.

설정에 문제가 있는 경우, 다음과 같이 오류가 표시됩니다. 설정을 수정하려면 Edit를 클릭하십시오.

../_images/launch_session_error_card.png

아무 폴더를 마운트 하지 않았다는 경고 대화 상자가 나타납니다. 이번에는 경고를 무시하고 Start 버튼을 클릭하여 진행합니다.

../_images/no_vfolder_notification_dialog.png

Running 탭에서 새로운 연산 세션이 생성되는 것을 확인합시다.

../_images/session_created.png

RUNNING 탭에서 현재 실행중인 세션에 대한 정보를 확인할 수 있습니다. 여기서는 interactive, batch 타입의 세션 모두 보여줍니다. BATCH 탭과 INTERACTIVE 탭은 각 타입에 해당하는 세션들만 보여주는데, 이 때 종료된 세션은 해당하지 않습니다. FINISHED 탭에는 종료 된 세션 목록이 표시되고 OTHERS 탭에는 오류가 있는 컴퓨팅 세션이 표시됩니다. 세션 별로 세션 환경, 할당 및 사용 자원량, 세션 시작 시간 등의 정보를 확인할 수 있습니다.

참고

수퍼어드민의 경우 현재 클러스터에서 실행 중인 (또는 종료된) 모든 세션 정보를 확인할 수 있고, 일반 사용자의 경우에는 자신이 사용한 세션만 조회 가능합니다.

참고

간헐적인 네트워크 접속 불량 등의 문제로 세션 리스트가 정상적으로 표시되지 않는 경우가 발생할 수 있습니다. 이 때는 브라우저 페이지를 새로고침하면 해결할 수 있습니다.

../_images/session_list_status.png ../_images/session_status_detail_information.png

Backend.AI 는 PENDING, TERMINATED, CANCELLED 세션에 대한 상세 상태 정보를 제공합니다. 특히, PENDING 세션의 경우, 세션이 스케줄링 되지 않고 PENDING 상태에 머물러 있는 이유를 알 수 있어 유용합니다. 상세 정보를 확인하려면, 각 세션 상태를 나타내는 부분 바로 옆에 있는 물음표 아이콘을 클릭하십시오.

../_images/resource_stat_and_session_list.png

자원 통계는 화면 상단에 표시됩니다. 현재 사용중인 자원의 양과 할당 가능한 총 자원의 양을 확인할 수 있습니다. 디스플레이 바는 상단과 하단으로 나뉩니다. 상단은 현재 스케일링 그룹의 자원 할당 상태를 나타내고 하단은 접근 가능한 총 자원의 할당 상태를 나타냅니다.

  • (현재 스케일링 그룹 내에서 사용자가 할당한 자원의 양) / (현재 스케일링 그룹 내에 서 사용자 할당 가능한 자원의 총합)

  • (사용자가 할당한 총 자원 양) / (사용자가 할당한 총 자원 양 + 현재 스케일링 그룹 내에서 사용자가 할당 가능한 자원의 총합)

참고

만약 GPU 자원이 FGPU 로 표시되어 있다면, 이는 서버가 GPU 자원을 가상화된 형태로 제공하고 있다는 것을 의미합니다. Backend.AI 는 하나의 물리 GPU 를 여러 개로 분할해서 여러 사용자가 나누어 사용할 수 있는 가상화 기술을 지원하고 있습니다. 따라서, GPU 연산 소요가 크지 않은 작업을 수행하고자 할 경우에는 GPU 의 일부만 할당하여 연산 세션을 생성 할 수 있습니다. FGPU 가 실제로 할당하는 GPU 자원의 양은 관리자 설정에 따라 시스템 별로 다양할 수 있습니다.

예를 들어, 관리자가 하나의 GPU 를 다섯 조각으로 분할 설정한 경우, 5 FGPU 가 1 물리 GPU, 또는 1 FGPU 가 0.2 물리 GPU 를 뜻합니다. 이 때 1 FGPU 를 설정하여 연산 세션을 생성하면, 그 세션에서는 0.2 물리 GPU 에 해당하는 SM(streaming multiprocessor) 과 GPU 메모리를 활용할 수 있습니다.

Jupyter Notebook 사용하기

이미 실행 중인 연산 세션을 사용하고 관리하는 법에 관해 살펴보겠습니다. 세션 리스트의 Control 열을 보면 몇 가지 아이콘이 있습니다. 제일 첫 아이콘을 클릭하면 다음 그림과 같이 앱 런처가 뜨면서 해당 세션이 지원하는 몇 가지 앱 서비스가 뜨게 됩니다. 앱 런처 대화창은 연산 세션 생성 직후 자동으로 열리기도 합니다.

../_images/app_launch_dialog.png

참고

앱 아이콘 아래에는 두 가지 체크 옵션이 있습니다. 각 항목을 체크하고 앱을 띄우면 다음과 같은 기능이 반영됩니다:

  • Open app to public : 앱을 외부에 공개합니다. 기본적으로 터미널 및 Jupyter Notebook 서비스와 같은 웹 서비스는 별도 인증을 거치므로 서비스 URL을 알고 있더라도 다른 사용자가 액세스 할 수 없습니다. 그러나 이 옵션을 선택하면 서비스 URL(및 포트 번호)을 아는 사람이 접근하고 사용할 수 있습니다. 물론 사용자가 서비스에 접근하려면 네트워크 경로가 있어야합니다.

  • Try preferred port: 이 옵션을 선택하지 않으면 Backend.AI에서 미리 준비한 포트 풀에서 웹 서비스의 포트 번호가 무작위로 할당됩니다. 이 항목을 체크하고 특정 포트 번호를 입력하면 입력한 포트 번호를 먼저 시도합니다. 그러나 포트가 포트 풀에 존재하지 않거나 다른 서비스가 이미 포트를 사용 중일 수 있기 때문에 원하는 포트가 항상 할당된다는 보장은 없습니다. 이 경우 포트 번호는 임의로 할당됩니다.

시스템 설정에 따라, 이 옵션들은 보이지 않을 수도 있습니다.

Jupyter Notebook 을 클릭해봅시다.

../_images/jupyter_app.png

새로운 창이 뜨면서 Jupyter Notebook 이 실행되는 것을 확인할 수 있습니다. 이 Notebook 은 실행 중인 연산 세션 내부에서 생성된 것으로, 별다른 설정 없이 버튼 클릭만으로 손쉽게 사 용할 수 있습니다. 또한, 연산 세션이 기본적으로 제공하는 언어 환경 및 라이브러리를 그대로 활용할 수 있어 별도의 패키지 설치 과정이 필요 없습니다. 자세한 Jupyter Notebook 사용 법은 공식 문서 등을 참고하시기 바랍니다.

Notebook 의 파일 탐색기에서 id_container 파일은 private SSH key 를 담고 있습니다. 필요할 경우 다운로드 하여 컨테이너로의 SSH/SFTP 접속에 이용할 수 있습니다.

우측 상단의 NEW 버튼을 클릭한 후 Backend.AI 용 Notebook 을 선택하면 새로운 코드를 입력할 수 있는 ipynb 창이 뜹니다.

../_images/backendai_notebook_menu.png

이 창에서 세션 환경에 맞는 코드를 입력하고 실행해볼 수 있습니다. 코드는 Backend.AI 서버를 구성하는 노드 중 연산 세션이 실제로 생성된 노드에서 실행이 되며, 로컬 머신에는 별도 환경을 구성할 필요가 없습니다.

../_images/notebook_code_execution.png

창을 닫으면 Notebook 파일 탐색기에 방금 작업한 Untitled.ipynb 파일이 생성되어 있는 것을 확인할 수 있습니다. 여기 생성된 파일은 세션을 삭제할 경우 같이 삭제되는 것에 주의하십시오. 생성된 파일을 세션이 사라지더라도 보존하는 방법은 폴더 섹션에서 설명합니다.

../_images/untitled_ipynb_created.png

웹 터미널 활용

세션 목록 페이지로 돌아갑니다. 이번에는 터미널을 시작하겠습니다. 컨테이너의 ttyd 앱을 사용하려면 터미널 아이콘(제어판의 두 번째 버튼)을 클릭합니다. 터미널이 새 창에 나타나고 다음 그림과 같이 셸 명령을 실행하여 연산 세션에 접근 할 수 있습니다. 명령 사용에 익숙하다면 다양한 Linux 명령을 쉽게 실행할 수 있습니다. Jupyter Notebook에서 자동으로 생성 된 Untitled.ipynb 파일이 ls 명령과 함께 나열되는 것을 볼 수 있습니다. 이는 두 앱이 동일한 컨테이너 환경에서 실행되고 있음을 보여줍니다.

../_images/session_terminal.png

만약 여기서 파일을 만들면 앞서 띄운 Jupyter Notebook 에서 즉시 그 파일을 확인할 수 있 습니다. 반대로, Jupyter Notebook 에서 편집한 파일의 변경 사항도 터미널에서 바로 확인할 수 있습니다. 같은 연산 세션을 사용하고 있기 때문입니다.

이 외에도 연산 세션이 제공하는 서비스의 종류에 따라 TensorBoard, Jupyter Lab 등과 같은 웹 기반 서비스를 이용할 수 있습니다.

연산 세션 로그 조회

돌아가고 있는 연산 세션의 Control 열의 마지막 아이콘을 클릭하면 연산 세션의 로그를 조회할 수 있습니다.

../_images/session_log.png

참고

22.09 버전부터, 다이얼로그 우상단에 위치한 다운로드 버튼을 클릭해 세션 컨테이너 로그를 내려받을 수 있습니다. 이 기능은 산출물 추적에 유용하게 사용됩니다.

실행중인 세션 이름 변경하기

활성 상태에 있는 세션 이름을 변경할 수 있습니다. 세션 정보 열에 있는 편집 아이콘을 클릭한 후 새 이름을 입력하고 확인 버튼을 누르기만 하면 됩니다. 다만, 새로운 세션 이름도 세션 이름 작성 규칙 은 따라야 합니다.

../_images/session_renaming.png

연산 세션 삭제하기

특정 세션을 삭제하기 위해서는 빨간색 전원 아이콘을 누르면 됩니다. 연산 세션 내부 폴더의 데이터는 연산 세션이 종료되는 순간 같이 삭제되므로, 계속 유지해야 하는 데이터라면 마운트 한 폴더에 옮기거나 처음부터 폴더에 업로드하는 것을 권합니다.

../_images/session_destroy_dialog.png

유휴 상태 검사

Backend.AI는 최대 세션 수명 시간, 네트워크 트래픽 기반 유휴 시간, 사용량 기반 자원 수거를 기준으로 세션이 자동으로 삭제될 수 있습니다.

연산 세션 종료 기준은 유휴 상태 검사 컬럼에서 확인할 수 있습니다.

../_images/idle_checks_column.png

각 항목의 의미는 다음과 같으며, 우측의 정보(i) 버튼을 클릭해서 자세한 설명을 확인할 수도 있습니다.

  • 최대 세션 수명 시간: 세션 생성 후 이 시간이 지나면 세션을 강제 종료합니다. 이는 세션이 무한히 실행되는 것을 방지하기 위한 조치입니다.

  • 네트워크 트래픽 기반 유휴 시간: 사용자(브라우저)와 연산 세션 사이에 이 시간 동안 아무런 네트워크 트래픽이 없을 경우 연산 세션을 삭제합니다. 사용자와 연산 세션 사이의 트래픽은 앱 (터미널, Jupyter 등)을 통해 상호작용(키보드 입력, Jupyter 셀 생성 등) 하는 경우 지속적으로 발생합니다. 만약, 연산 세션을 띄운 채 일정 시간 동안 아무런 입력을 하지 않으면 자동 삭제 조건을 만족하게 됩니다. 연산 세션에서 작업을 수행 중인 프로세스가 있더라도, 사용자와의 상호작용이 없는 경우에는 삭제 대상입니다.

  • 사용량 기반 자원 수거: 연산 세션에 할당된 자원을 자원의 활용률을 기준으로 회수합니다. 연산 세션의 삭제 여부는 다음 두 가지 요소에 따라 결정됩니다:

    • 유예 기간: 이 기간 동안은 자원 사용량 기반 체커가 작동하지 않습니다. 즉, 유예 기간이 지나기 전까지는 사용량이 기준보다 낮더라도 연산 세션이 삭제되지 않습니다. 하지만 유예 기간이 지나고 나면, 설정된 유휴 시간(idle timeout) 동안의 평균 자원 사용률이 기준에 미치지 못하는 경우 해당 세션이 삭제될 수 있습니다. 유예 기간은 세션 종료가 이루어지지 않는 것을 보장하는 시간일 뿐입니다. 이는 주로 사용률이 낮은 GPU 자원을 효율적으로 관리하기 위한 조치입니다.

    • 자원 사용량 기준: 연산 세션의 자원 사용량이 일정 시간(idle timeout) 동안 설정된 기준값을 넘지 못하면, 해당 세션은 자동으로 삭제됩니다. 예를 들어, 가속 장치 사용률 기준을 1%로 설정했다면 idle timeout 시간 동안 평균 가속 장치 사용률이 1% 미만인 연산 세션은 삭제 대상이 됩니다. 값이 설정되지 않는 자원은 자동 삭제 기준에서 제외됩니다.

    참고

    유예 기간이 지난 후에는 사용량이 낮으면 언제든지 삭제될 수 있습니다. 자원을 잠깐 사용했다고 해서 유예 기간이 연장되지 않습니다. 오직 현 시점으로부터 지난 idle timeout 시간 동안의 평균 자원 사용률만이 고려됩니다.

사용량 기반 자원 수거에 마우스를 가져가면, 사용률과 수거 기준값을 보여주는 툴팁이 나타납니다. 현재 사용률이 수거 기준값에 접근할수록(사용량이 저조할수록) 글자 색이 노란색, 빨간색 순으로 변하게 됩니다.

../_images/utilization_checker.png

참고

환경 설정 값에 따라, 유휴 상태 검사 기준과 사용량 기반 자원 수거 툴팁에 나타나는 자원 항목이 다르게 보일 수 있습니다.

세션 생성하기 전에 환경 변수를 추가하는 방법

Backend.AI에서는 사용자에게 더 편리한 환경을 제공하기 위해, 세션 시작 화면에서 세션에 추가될 환경 변수 추가 기능을 지원합니다. 이 기능에서 여러분은 PATH 를 비롯한 모든 환경 변수를 환경변수 설정 다이얼로그에서 환경 변수명과 환경 변수 값을 입력해서 추가할 수 있습니다.

더 많은 환경 변수를 추가하고 싶을 경우, 입력 필드 첫번째 행의 오른쪽에 있는 + Add environment variables 버튼을 클릭하면 됩니다. 또한 환경 변수를 지우고 싶을 경우, 역시 지우고자 하는 행의 - 버튼을 클릭하면 됩니다.

환경 설정 버튼

환경 변수 명과 값을 같은 행의 입력 필드에 입력할 수 있습니다.

세션 생성하기 전에 사전 개방 포트를 추가하는 방법

Backend.AI는 컨테이너 시작 전 사전 개방 포트를 설정하는 것을 지원합니다. 이 기능을 사용하면, 서빙 포트를 노출하기 위해 별도의 이미지를 추가로 빌드할 필요가 없습니다.

To add preopen ports, simply enter multiple values separated by either a comma (,) or a space.

사전 개방 포트 설정

이 다이얼로그에서 여러분은 사전 개방 포트를 추가하거나, 작성한 사전 개방 포트를 갱신하거나, 삭제할 수 있습니다. 더 자세히 알고 싶으실 경우 다이얼로그 헤더 부분에 있는 도움말 (?) 버튼을 클릭해주세요.

입력란에 1024 ~ 65535 사이의 포트값을 입력한 뒤, SAVE 버튼을 클릭하세요. 설정된 사전 개방 포트값은 세션 앱 런처에서 확인할 수 있습니다.

../_images/session_app_launcher.png

참고

사전 개방 포트는 컨테이너 내부 포트입니다. 따라서, 다른 앱들과 달리 세션 앱 런처에서 사전 개방 포트를 클릭하면 빈 페이지가 뜹니다. 해당 포트에 서버를 먼저 바인드 한 후 사용해주세요.

컨테이너 커밋 저장하기

Backend.AI는 22.09 버전부터 “컨테이너 커밋 기능“을 지원하고, 24.03 버전부터 “세션을 이미지로 변환하는 기능“을 지원합니다. RUNNING 상태에 있는 연산 세션을 커밋하면 현재 컨테이너의 상태를 새로운 이미지로 저장할 수 있습니다. RUNNING 상태에 있는 연산 세션의 RUNNING 세션의 제어 열에 있는 커밋 버튼을 클릭하면 세션의 정보를 보여주는 다이얼로그가 나타납니다. 정보를 확인한 후 확인 버튼을 클릭하면 컨테이너가 새로운 이미지로 변환됩니다.

컨테이너 커밋 확인

다이얼로그의 커밋 버튼을 클릭하게 되면, Backend.AI 에서는 내부적으로 도커에 tar.gz 형식으로 새 이미지를 저장하게 됩니다. 새 이미지는 호스트 상의 특정 디렉토리에 저장되므로, 사용자의 로컬 환경에서 직접 접근할 수는 없습니다. 이미지 파일을 얻기 위해서는 관리자에게 연락을 해야 합니다.

진행 중인 세션을 이미지로 커밋하려면, 다이얼로그에서 Convert Session to Image 체크박스를 체크하고 세션 이름을 입력합니다. 세션 이름은 알파벳 또는 숫자, 또는 하이픈(-) 이나 언더바(_)로 구성할 수 있으며, 최소 4글자에서 32자까지만 입력해야 합니다. 세션 이름을 입력한 뒤에는 PUSH SESSION TO CUSTOMIZED IMAGE 버튼을클릭합니다. 이렇게 만들어진 사용자 정의 이미지는 추후 세션 생성 시 사용할 수 있습니다.

사용자 정의 이미지를 세션으로 푸시

참고

현재 Backend.AI 는 세션이 INTERACTIVE 모드일 때에만 컨테이너 커밋과 세션을 이미지로 변환하는 기능을 지원합니다. 또한 컨테이너 커밋 과정 동안에는 세션을 종료할 수 없는데, 이는 컨테이너 커밋 과정 중 예기치 못한 실행 에러를 방지하기 위함입니다. 진행중인 컨테이너 커밋 작업을 중지하려면, 세션을 선택한 다음 강제 종료해주시기 바랍니다.

참고

사용자 자원 정책에 의해 Convert Session to Image 작업 횟수가 제한될 수 있습니다. 이 경우, 기존 사용자 정의 이미지를 제거 한 후 다시 시도하거나 관리자에게 문의하세요.

진행 중인 세션의 변환된 이미지 활용

진행 중인 세션을 이미지로 변환하면, 다음 세션 생성 시 세션 런처의 환경 설정에서 해당 이미지를 선택하여 사용할 수 있습니다. 이 이미지는 다른 사용자에게 공개되지 않으며, 현재 세션의 상태를 그대로 유지하여 사용하는 데 유용합니다. 변환된 이미지는 Customized<session name> 태그가 붙습니다.

사용자 정의 이미지 선택

향후 세션 생성을 위해 환경 이름을 수동으로 입력하려면, 복사 아이콘을 누릅니다.

사용자 정의 이미지 복사

가속 컴퓨팅 최적화하기

Backend.AI 는 nthread-var 의 내부 컨트롤 변수 설정 인터페이스를 제공합니다.Backend.AI 는 기본적으로 이 값을 세션의 CPU 코어 수와 같도록 설정해두며, 이는 일반적인 고성능 컴퓨팅 워크로드를 가속하는 효과가 있습니다. 그러나, 일부 멀티스레드 워크로드의 경우 OpenMP를 사용하는 다중 프로세스가 동시에 실행되어 비정상적으로 많은 스레드가 생성되고, 현저한 성능 저하가 발생할 수 있습니다. 이러한 문제를 해결하려면, 스레드 값을 1 또는 2로 조정하십시오.

Session HPC Optimization

웹 터미널 고급 사용법

위에서 사용 해보았던 웹 기반 터미널은 내부적으로 tmux 라는 유틸리티를 사용하고 있습니다. tmux 는 하나의 쉘 내에서 여러 개의 창을 띄워 다중 작업 할 수 있도록 지원하는 terminal multiplexer 로, 쉘이 닫히더라도 작업하던 내용을 보존할 수 있는 등 다양한 장점을 가지고 있습니다. 보다 강력한 터미널 기능을 활용하고 싶다면 tmux 공식 문서 및 기타 인터넷 상의 다양한 사용 예제를 참고하십시오.

여기서는 몇 가지 간단하지만 유용한 기능을 소개하겠습니다.

터미널 내용 복사하기

tmux 는 다양한 장점을 가지고 있지만 처음 접하는 사용자라면 다소 혼란스러운 부분도 있습니 다. 특히, tmux 는 자체 클립보드 버퍼를 가지고 있어 터미널의 내용을 복사할 경우 기본적으로 tmux 내에서만 붙여넣을 수 있다는 부분에서 어려움을 겪을 수 있습니다. 여기에 웹 기반 터미 널에서는 사용자 시스템의 클립보드를 tmux 에 노출시키기 어렵다는 한계가 더해져서, tmux 쉘을 사용하고 있는 상태에서는 마우스 드래그를 통해 터미널 내용을 복사한 후 사용자 컴퓨터의 다른 프로그램에 붙여넣을 수가 없습니다. 소위 말하는 Ctrl-C / Ctrl-V 가 작동하지 않는 것입니다.

만약 터미널 내용을 사용자 시스템의 클립보드로 복사하여 붙여넣기를 할 필요가 있을 때는 잠시 tmux 의 마우스 지원 설정을 끌 수 있습니다. 먼저 Ctrl-B 키를 눌러 tmux 의 제어 모드로 진입합니다. 그 후 :set -g mouse off 를 입력하고 엔터키를 누릅니다 (처음 콜론까지 입력해야 합니다). 입력하는 내용은 tmux 하단의 상태바에서 확인할 수 있습니다. 그 후 터미널에서 마우스로 원하는 텍스트를 드래그 하고 Ctrl-C 또는 Cmd-C 키를 누르면 사용자 컴퓨터의 클립보드에 해당 내용이 복사 됩니다.

마우스 지원을 끈 상태에서는 마우스 휠로 스크롤하여 터미널의 이전 페이지 내용을 확인할 수 없습니다. 이 때는 다시 마우스 지원을 켜면 됩니다. Ctrl-B 를 누른 후 이번에는 :set -g mouse on 을 입력해봅시다. 이제 마우스 휠을 스크롤하여 이전 페이지의 내용을 볼 수 있게 되었습니다.

이와 같이 Ctrl-B:set -g mouse off 또는 :set -g mouse on 을 기억하면 조금 더 편리하게 웹 터미널을 활용할 수 있습니다.

참고

Ctrl-B 키는 tmux 의 기본 제어 모드 키입니다. 만약 홈 디렉토리의 .tmux.conf 를 수정하여 다른 제어 키를 설정한 경우에는, Ctrl-B 대신 설정된 키 조합을 눌러야 합니다.

참고

윈도우즈 환경에서는 다음 단축키를 참고하세요.

  • 복사: Shift 키를 누른 상태에서 마우스 우클릭해서 드래그

  • 불여넣기: Ctrl-Shift-V 키를 누름

키보드를 이용해 터미널 이전 내용 확인하기

터미널 내용 복사도 하면서 터미널의 이전 내용도 확인하고 싶은 경우에도 방법이 있습니다. 바로 키보드를 이용해서 이전 내용을 확인하는 것입니다. 이번에도 Ctrl-B 를 먼저 클릭 해준 뒤 Page UpPage Down 키를 눌러 봅시다. 키보드 만으로 터미널의 이전 내용을 탐색할 수 있다는 것을 확인할 수 있습니다. 탐색 모드에서 빠져 나오려면 q 키를 눌러주면 됩니다. 이 방법을 이용하면 마우스 지원을 끈 상태에서도 터미널 이전 내용 확인이 가능합니다.

여러 개의 쉘 띄우기

tmux 의 가장 큰 장점은 하나의 터미널 창에서 여러 개의 쉘을 띄우고 사용할 수 있다는 점입니 다. 백문이 불여일견이니 Ctrl-B 키를 누른 후 c 키를 이어서 눌러봅시다. 기존 창의 내용이 사라지고 새로운 쉘 환경이 뜬 것을 확인할 수 있습니다. 그러면 기존 창은 사라진 것일까요? 그렇지 않습니다. Ctrl-B 누른 후 w 키를 눌러 봅시다. 다음과 같이 현재 tmux 상에서 열려 있는 쉘 리스트가 조회되는 것을 볼 수 있습니다. 여기서 0: 으로 시작하는 쉘이 처음 보던 쉘 환경이고, 1: 로시작하는 쉘은 방금 새로 생성한 쉘입니다. 위/아래 방향 키를 이용해서 쉘 사이를 이동할 수 있습니다. 0: 번 쉘에 커서를 가져다 두고 엔터 키를 눌러 선택 해보겠습니다.

tmux's multiple session management

첫 번째 쉘 환경이 나타나는 것을 볼 수 있습니다. 이러한 방식으로 웹 터미널 내에서 여러 쉘 환경을 사용할 수 있습니다. 현재 쉘을 종료하려면 exit 명령을 입력하거나 Ctrl-B x 키를 누른 다음 y 를 입력하십시오.

정리하면 다음과 같습니다:

  • Ctrl-B c: 새로운 tmux 쉘 생성

  • Ctrl-B w: tmux 쉘 조회 및 이동/선택

  • exit 또는 Ctrl-B x: 현재 tmux 쉘 종료

위 명령을 조합하여 여러 개의 쉘에서 동시에 다양한 작업을 수행할 수 있습니다.