개요

Backend.AI 는 오픈소스 클라우드 자원 관리 플랫폼입니다. Backend.AI 는 클라우드 또는 온-프레미스 클러스터 환경에서 연산 자원을 효율적으로 관리하며 언제 어디서나 on-demand 로 계산에 필요한 가상화된 연산 환경을 제공합니다. 또한, Backend.AI 의 컨테이너 기반 GPU 분할 가상화 기술을 통해 하나의 물리 GPU 를 유연하게 나누어 여러 사용자가 동시에 사용할 수 있도록 지원하고 있어, GPU 의 효율적인 활용을 돕습니다.

Backend.AI는 머신러닝 및 고성능 컴퓨팅 클러스터에 적합한 성능 향상 위주의 다양한 최적화들과 함께, 연구원, 관리자 및 데브옵스등 다양한 사용자 층을 지원하는 관리 기능 및 연구 편의 기능을 제공하고 있습니다. 엔터프라이즈 버전은 멀티 도메인 관리 및 슈퍼어드민 전용 Control-Panel 앱, GPU 분할 가상화 플러그인 기능을 추가적으로 지원합니다.

Backend.AI 서버가 지원하는 기능을 손쉽게 활용할 수 있도록 GUI 클라이언트 패키지도 함께 제공하고 있습니다. Backend.AI Web-UI는 웹 또는 앱 형태의 GUI 클라이언트로, Backend.AI 서버에 접속하여 연산 자원을 활용하고 자신의 환경을 관리할 수 있는 편리한 그래픽 인터페이스를 제공합니다. 대부분의 작업을 마우스 클릭과 짧은 타이핑으로 할 수 있어 보다 직관적으로 사용할 수 있습니다.

주요 개념

Diagram explaining key concepts
  • 사용자: 사용자는 Backend.AI에 접속하여 작업을 수행하는 주체입니다. 사용자는 가지는 권한에 따라 일반 사용자, 도메인 어드민(domain admin), 수퍼 어드민(superadmin)으로 구분됩니다. 일반 사용자는 자신의 연산 세션과 관련된 작업만을 수행할 수 있는 데 반해, 도메인 어드민은 한 도메인 내에 속하는 작업을 수행할 수 있는 권한을 가지고 있으며, 수퍼 어드민은 시스템 전체에 걸쳐 거의 대부분의 작업을 수행할 수 있습니다. 사용자는 하나의 도메인에 속하게 되며, 도메인 내의 여러 프로젝트에 동시 속할 수 있습니다.

  • 연산 세션, 컨테이너: 자신의 연산 코드가 실행되는 격리된 가상 환경입니다. 자신이 온전한 사용자 권한을 가진 실제 리눅스 서버처럼 보이며, 물리적으로는 다른 사용자의 코드와 같은 서버에서 실행되더라도 다른 사용자를 서로 볼 수 없습니다. Backend.AI는 이러한 가상 환경을 컨테이너(container)라는 기술을 통해 구현합니다. 사용자는 자신이 속한 도메인과 프로젝트 내에서만 연산 세션을 생성할 수 있습니다.

  • 도메인: Backend.AI에서 지원하는 권한 및 자원 제어를 위한 최상위 계층입니다. 회사나 조직의 경우, 도메인을 하나의 계열사로 보고 도메인 별 (또는 계열사 별) 권한 및 자원 정책 등을 설정할 수 있습니다. 사용자는 반드시 하나의 도메인에 속하며, 자신의 도메인에서만 세션을 생성하거나 관련 정보를 확인할 수 있습니다. 도메인에는 하나 이상의 도메인 관리자가 있을 수 있으며, 도메인 관리자는 도메인 내의 정책을 설정하거나 세션을 관리할 수 있습니다. 예를 들어, 도메인 내에서 사용할 수 있는 총 자원량을 설정할 경우, 도메인 내 사용자가 생성한 모든 컨테이너의 자원은 설정된 양보다 클 수 없습니다.

  • 프로젝트: 도메인 하위에 속하는 계층으로, 한 도메인에는 여러 개의 프로젝트가 존재할 수 있습니다. 프로젝트는 하나의 작업 프로젝트 단위라고 생각할 수도 있습니다. 사용자는 한 도메인 내에 존재하는 여러 개의 프로젝트에 동시에 속할 수 있습니다. 연산 세션은 반드시 하나의 프로젝트에 속해야 하며, 사용자는 자신이 속한 프로젝트 내에서만 세션을 생성할 수 있습니다. 도메인 관리자는 도메인 내에 속한 프로젝트의 정책을 설정하거나 세션을 관리할 수 있습니다. 예를 들어, 프로젝트 내에서 사용할 수 있는 총 자원량을 설정할 경우, 프로젝트 내 사용자가 생성한 모든 컨테이너의 자원은 설정된 양보다 클 수 없습니다.

  • 이미지: 각 컨테이너에는 미리 설치된 언어별 런타임과 각종 연산 프레임워크들이 설치되어 있는데, 실행되기 전의 그러한 스냅샷 상태를 이미지(image)라고 합니다. 사용자는 클러스터 관리자가 제공하는 이미지를 골라서 실행하거나, 자신이 추가로 사용하고 싶은 소프트웨어가 설치된 이미지를 직접 만들거나 관리자에게 생성 또는 등록을 요청할 수 있습니다.

  • Virtual Folder (vfolder; 가상 폴더): 사용자 별로 자신의 컨테이너가 어느 노드에서 실행 되든 관계없이 항상 접근 및 컨테이너에 탑재 가능한 “클라우드” 폴더입니다. 자신만의 가상 폴더를 생성한 후 미리 자신의 프로그램 코드, 데이터 등을 업로드해두고 연산 세션 실행 시 탑재하여 로컬 디스크에 있는 파일인 것처럼 읽고 쓸 수 있으며, 다른 사용자와의 공유도 가능합니다.

  • 애플리케이션 서비스, 서비스 포트(service port): 연산 세션 내에서 실행되는 다양한 사용자 애플리케이션(예: DIGITS, Jupyter Notebook, shell 터미널, TensorBoard 등)에 접속할 수 있게 해주는 기능입니다. 사용자는 컨테이너의 주소 및 포트 번호를 직접 알 필요 없이, 제공되는 CLI client 또는 Web-UI를 이용하여 원하는 세션의 데몬에 바로 접속할 수 있습니다.

  • Web-UI: 웹 (web) 형태로 서비스 되는 GUI 클라이언트. Backend.AI 서버의 주소 를 지정하고 사용자 계정 정보를 입력해 로그인 한 후 서비스를 사용할 수 있습니다.

  • 로컬 wsproxy: Web-UI 앱에서 내장하고 있는 프록시 서버. 콘솔 앱에서 사용 가능한 Jupyter Notebook, Terminal 등의 서비스는 websocket 을 통해 서버와 통신하는 데, Web-UI 앱과 주고받는 일반적인 HTTP 요청을 websocket 형태로 변환하여 메시지를 전달해 주는 역할을 합니다. Web-UI 앱과 wsproxy 와의 연결이 끊기거나 wsproxy 서버가 죽은 경우 Notebook, Terminal 등의 서비스 접속이 불가능합니다.

  • 웹 wsproxy: 웹 형태로 제공되는 Web-UI의 경우 브라우저의 특성상 별도 내장 서버를 운영할 수 없습니다. 이 경우 wsproxy 서버를 별도의 웹 서버로 독립 운영하여 Web-UI 앱에서 웹 wsproxy를 바라보게 만듦으로써 Jupyter Notebook, Terminal 등과 같은 서비스를 웹 환경에서도 사용할 수 있습니다.

Backend.AI 기능 상세

Category

Feature

GPU support

Container-level multi GPU

(Enterprise) Fractional GPU sharing & scaling

Multiple CUDA library version support (8.0 to 11.5)

Scaling

On-premise installation on both bare-metal / VM

Hybrid cloud (on-premise + cloud)

Polycloud (multi-cloud federation)

Scheduling

Unified scheduling & monitoring with GUI admin

Per-user (keypair) resource policy

(Enterprise) Per-project resource policy

Availability-slot based scheduling

Cluster partitioning

Resource groups by H/W spec and usage

(Enterprise) Access control of users to resource group

(Enterprise) Access control of project to resource group

Security

Sandboxing via hypervisor/container

Access logs for each user

Per session (container) logs

UI / UX

GUI web interface

(Enterprise) Admin GUI web interface

Data management

EFS, NFS, SMB and distributed file system (CephFS, GlusterFS, HDFS, etc)

(Enterprise) Storage solution integration:

  • PureStorage FlashBlade

  • NetApp ONTAP & NetApp XCP

  • Weka.io

  • Dell EMC

Fine-grained Access control to data by user/project

Developer support

Universal programming languages (Python, C/C++, etc)

Interactive web apps (Terminal, Jupyter, VSCode, etc)

For data scientists

NGC (NVIDIA GPU CLoud) image integration

Popular ML libraries: TensorFlow, PyTorch, etc

Concurrent user of multiple versions of libraries

Periodic update of ML libraries

Customer support

On-site installation (bare-metal / VM)

Configuration support (on-premise + cloud)

Admin/user training

Support for updating to latest version

Priority development and escalation

Customized container image / kernel or kernel repository

사용자 역할 별 접근 가능한 메뉴 안내

참고

  • * 표시가 붙은 페이지는 관리자용 메뉴입니다.

  • 관리자 전용 기능은 어드민 전용 메뉴 에서 확인할 수 있습니다.

페이지 \ 역할

일반 사용자

어드민

요약 (Summary)

O

O

세션 (Sessions)

O

O

모델 서빙 (Serving)

O

O

가져오기 및 실행하기(Import & Run)

O

O

데이터 & 폴더 (Data & Storage)

O

O

자원 요약 (Agent Summary)

O

O

통계 (Statistics)

O

O

사용자 (Users)*

X

O

실행 환경 (Environments)*

X

O

자원 (Resources)*

X

O

환경 설정 (Configurations)*

X

O

관리 (Maintenance)*

X

O

정보 (Information)*

X

O

사용자 설정 (UserSettings)

O

O