개요

Backend.AI는 오픈소스 클라우드 리소스 관리 플랫폼입니다. Backend.AI는 클라우드 또는 온-프레미스 클러스터 환경에서 연산 자원을 효율적으로 관리하며 언제 어디서나 on-demand로 계산에 필요한 가상화된 연산 환경을 제공합니다. GPU 분할 가상화를 제공하여, 과학자, 데브옵스, 기업 및 AI 애호가들이 효율적으로 규모를 확장할 수 있게 돕습니다.

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

Backend.AI 서버가 지원하는 기능을 손쉽게 활용할 수 있도록 GUI 클라이언트 패키지도 함께 제공하고 있습니다. Backend.AI Console은 웹 또는 앱 형태의 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 또는 GUI console을 이용하여 원하는 세션의 데몬에 바로 접속할 수 있습니다.
  • 콘솔 앱: 웹(web) 또는 앱(app) 형태로 서비스 되는 GUI 클라이언트. Backend.AI 서버의 주소를 지정하고 사용자 계정 정보를 입력해 로그인 한 후 서비스를 사용할 수 있습니다.
  • 로컬 wsproxy: 콘솔 앱에서 내장하고 있는 프록시 서버. 콘솔 앱에서 사용 가능한 Jupyter Notebook, Terminal 등의 서비스는 websocket을 통해 서버와 통신하는데, 콘솔 앱과 주고받는 일반적인 HTTP 요청을 websocket 형태로 변환하여 메시지를 전달해 주는 역할을 합니다.
    • 콘솔 앱과 wsproxy 와의 연결이 끊기거나 wsproxy 서버가 죽은 경우 Notebook, Terminal 등의 서비스 접속이 불가능합니다.
  • 웹 wsproxy: 웹 형태로 제공되는 콘솔 앱의 경우 브라우저의 특성상 별도 내장 서버를 운영할 수 없습니다. 이 경우 wsproxy 서버를 별도의 웹 서버도 독립 운영하여 콘솔 앱에서 웹 wsproxy를 바라보게 만듦으로써 Jupyter Notebook, Terminal 등과 같은 서비스를 웹 환경에서도 사용할 수 있습니다.