Backend.AI is a streamlined, container-based computing cluster platform that hosts popular computing/ML frameworks and diverse programming languages, with pluggable heterogeneous accelerator support including CUDA GPU, ROCm GPU, TPU, IPU and other NPUs.
Backend.AI is a streamlined, container-based computing cluster platform that hosts popular computing/ML frameworks and diverse programming languages, with pluggable heterogeneous accelerator support including CUDA GPU, ROCm GPU, TPU, IPU and other NPUs.
It allocates and isolates the underlying computing resources for multi-tenant computation sessions on-demand or in batches with customizable job schedulers with its own orchestrator. All its functions are exposed as REST/GraphQL/WebSocket APIs.
This repository contains all open-source server-side components and the client SDK for Python as a reference implementation of API clients.
src/ai/backend/
: Source codes
manager/
: Managermanager/api
: Manager API handlersagent/
: Agentagent/docker/
: Agent's Docker backendagent/k8s/
: Agent's Kubernetes backendkernel/
: Agent's kernel runner counterpartrunner/
: Agent's in-kernel prebuilt binarieshelpers/
: Agent's in-kernel helper packagecommon/
: Shared utilitiesclient/
: Client SDKcli/
: Unified CLI for all componentsstorage/
: Storage proxystorage/api
: Storage proxy's manager-facing and client-facing APIsweb/
: Web UI server
static/
: Backend.AI WebUI release artifactsplugin/
: Plugin subsystemtest/
: Integration test suitetestutils/
: Shared utilities used by unit testsmeta/
: Legacy meta packagedocs/
: Unified documentationtests/
manager/
, agent/
, ...: Per-component unit testsconfigs/
manager/
, agent/
, ...: Per-component sample configurationsdocker/
: Dockerfiles for auxiliary containersfixtures/
manager/
, ...: Per-component fixtures for development setup and testsplugins/
: A directory to place plugins such as accelerators, monitors, etc.scripts/
: Scripts to assist development workflows
install-dev.sh
: The single-node development setup script from the working copystubs/
: Type annotation stub packages written by ustools/
: A directory to host Pants-related toolingdist/
: A directory to put build artifacts (.whl files) and Pants-exported virtualenvschanges/
: News fragments for towncrierpants.toml
: The Pants configurationpyproject.toml
: Tooling configuration (towncrier, pytest, mypy)BUILD
: The root build config file**/BUILD
: Per-directory build config filesBUILD_ROOT
: An indicator to mark the build root directory for Pantsrequirements.txt
: The unified requirements file*.lock
, tools/*.lock
: The dependency lock filesdocker-compose.*.yml
: Per-version recommended halfstack container configsREADME.md
: This fileMIGRATION.md
: The migration guide for updating between major releasesVERSION
: The unified version declarationServer-side components are licensed under LGPLv3 to promote non-proprietary open innovation in the open-source community while other shared libraries and client SDKs are distributed under the MIT license.
There is no obligation to open your service/system codes if you just run the server-side components as-is (e.g., just run as daemons or import the components without modification in your codes). Please contact us (contact-at-lablup-com) for commercial consulting and more licensing details/options about individual use-cases.
Run scripts/install-dev.sh
after cloning this repository.
This script checks availability of all required dependencies such as Docker and bootstrap a development
setup. Note that it requires sudo
and a modern Python installed in the host system based on Linux
(Debian/RHEL-likes) or macOS.
Please consult our documentation for community-supported materials. Contact the sales team ([email protected]) for professional paid support and deployment options.
Backend.AI provides websocket tunneling into individual computation sessions (containers), so that users can use their browsers and client CLI to access in-container applications directly in a secure way.
Backend.AI provides an abstraction layer on top of existing network-based storages (e.g., NFS/SMB), called vfolders (virtual folders). Each vfolder works like a cloud storage that can be mounted into any computation sessions and shared between users and user groups with differentiated privileges.
It routes external API requests from front-end services to individual agents. It also monitors and scales the cluster of multiple agents (a few tens to hundreds).
src/ai/backend/manager
backendai_scheduler_v10
backendai_hook_v20
backendai_webapp_v20
backendai_monitor_stats_v10
backendai_monitor_error_v10
It manages individual server instances and launches/destroys Docker containers where REPL daemons (kernels) run. Each agent on a new EC2 instance self-registers itself to the instance registry via heartbeats.
src/ai/backend/agent
backendai_accelerator_v21
backendai_monitor_stats_v10
backendai_monitor_error_v10
It provides a unified abstraction over multiple different network storage devices with vendor-specific enhancements such as real-time performance metrics and filesystem operation acceleration APIs.
src/ai/backend/storage
It hosts the SPA (single-page application) packaged from our web UI codebase for end-users and basic administration tasks.
src/ai/backend/web
Synchronizing the static Backend.AI WebUI version:
$ git remote add webui-package https://github.com/lablup/backend.ai-app # first time only
$ scripts/download-webui-release.sh <target version to download>
Computing environment recipes (Dockerfile) to build the container images to execute on top of the Backend.AI platform.
A programmable sandbox implemented using ptrace-based system call filtering written in Rust.
A set of libc overrides for resource control and web-based interactive stdin (paired with agents).
We offer client SDKs in popular programming languages. These SDKs are freely available with MIT License to ease integration with both commercial and non-commercial software products and services.
pip install backend.ai-client
npm install backend.ai-client
composer require lablup/backend.ai-client
backendai_accelerator_v21
ai.backend.accelerator.cuda
: CUDA accelerator pluginai.backend.accelerator.cuda
(mock): CUDA mockup plugin
ai.backend.accelerator.rocm
: ROCm accelerator pluginbackendai_monitor_stats_v10
ai.backend.monitor.stats
backendai_monitor_error_v10
ai.backend.monitor.error
These components still exist but are no longer actively maintained.
The front-end support libraries to handle multi-media outputs (e.g., SVG plots, animated vector graphics)
lablup
) is installed inside kernel containers.We now recommend using in-kernel applications such as Jupyter Lab, Visual Studio Code Server, or native SSH connection to kernels via our client SDK or desktop apps.
Backend.AI Core Version | Python Version | Pantsbuild version |
---|---|---|
24.03.x / 24.09.x | 3.12.x | 2.21.x |
23.03.x / 23.09.x | 3.11.x | 2.19.x |
22.03.x / 22.09.x | 3.10.x | |
21.03.x / 21.09.x | 3.8.x |
Refer to LICENSE file.