Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/lablup/backend.ai
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.
https://github.com/lablup/backend.ai
api backendai cloud-computing containers distributed-computing docker documentation hpc monitoring paas python
Last synced: 4 days ago
JSON representation
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.
- Host: GitHub
- URL: https://github.com/lablup/backend.ai
- Owner: lablup
- License: lgpl-3.0
- Created: 2016-10-06T05:08:49.000Z (about 8 years ago)
- Default Branch: main
- Last Pushed: 2024-10-29T09:21:38.000Z (15 days ago)
- Last Synced: 2024-10-29T09:21:45.457Z (15 days ago)
- Topics: api, backendai, cloud-computing, containers, distributed-computing, docker, documentation, hpc, monitoring, paas, python
- Language: Python
- Homepage: https://www.backend.ai
- Size: 499 MB
- Stars: 513
- Watchers: 25
- Forks: 152
- Open Issues: 435
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: .github/CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
Backend.AI
==========[![PyPI release version](https://badge.fury.io/py/backend.ai-manager.svg)](https://pypi.org/project/backend.ai-manager/)
![Supported Python versions](https://img.shields.io/pypi/pyversions/backend.ai-manager.svg)
![Wheels](https://img.shields.io/pypi/wheel/backend.ai-manager.svg)
[![Gitter](https://badges.gitter.im/lablup/backend.ai.svg)](https://gitter.im/lablup/backend.ai)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.Contents in This Repository
---------------------------This repository contains all open-source server-side components and the client SDK for Python
as a reference implementation of API clients.### Directory Structure
* `src/ai/backend/`: Source codes
- `manager/`: Manager
- `manager/api`: Manager API handlers
- `agent/`: Agent
- `agent/docker/`: Agent's Docker backend
- `agent/k8s/`: Agent's Kubernetes backend
- `kernel/`: Agent's kernel runner counterpart
- `runner/`: Agent's in-kernel prebuilt binaries
- `helpers/`: Agent's in-kernel helper package
- `common/`: Shared utilities
- `client/`: Client SDK
- `cli/`: Unified CLI for all components
- `storage/`: Storage proxy
- `storage/api`: Storage proxy's manager-facing and client-facing APIs
- `web/`: Web UI server
- `static/`: Backend.AI WebUI release artifacts
- `plugin/`: Plugin subsystem
- `test/`: Integration test suite
- `testutils/`: Shared utilities used by unit tests
- `meta/`: Legacy meta package
* `docs/`: Unified documentation
* `tests/`
- `manager/`, `agent/`, ...: Per-component unit tests
* `configs/`
- `manager/`, `agent/`, ...: Per-component sample configurations
* `docker/`: Dockerfiles for auxiliary containers
* `fixtures/`
- `manager/`, ...: Per-component fixtures for development setup and tests
* `plugins/`: 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 copy
* `stubs/`: Type annotation stub packages written by us
* `tools/`: A directory to host Pants-related tooling
* `dist/`: A directory to put build artifacts (.whl files) and Pants-exported virtualenvs
* `changes/`: News fragments for towncrier
* `pants.toml`: The Pants configuration
* `pyproject.toml`: Tooling configuration (towncrier, pytest, mypy)
* `BUILD`: The root build config file
* `**/BUILD`: Per-directory build config files
* `BUILD_ROOT`: An indicator to mark the build root directory for Pants
* `requirements.txt`: The unified requirements file
* `*.lock`, `tools/*.lock`: The dependency lock files
* `docker-compose.*.yml`: Per-version recommended halfstack container configs
* `README.md`: This file
* `MIGRATION.md`: The migration guide for updating between major releases
* `VERSION`: 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.Getting Started
---------------### Installation for Single-node Development
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.### Installation for Multi-node Tests & Production
Please consult [our documentation](http://docs.backend.ai) for community-supported materials.
Contact the sales team ([email protected]) for professional paid support and deployment options.### Accessing Compute Sessions (aka Kernels)
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.* Jupyter: data scientists' favorite tool
* Most container images have intrinsic Jupyter and JupyterLab support.
* Web-based terminal
* All container sessions have intrinsic ttyd support.
* SSH
* All container sessions have intrinsic SSH/SFTP/SCP support with auto-generated per-user SSH keypair.
PyCharm and other IDEs can use on-demand sessions using SSH remote interpreters.
* VSCode
* Most container sessions have intrinsic web-based VSCode support.### Working with Storage
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.Major Components
----------------### Manager
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`
* [README](https://github.com/lablup/backend.ai/blob/main/src/ai/backend/manager/README.md)
* Legacy per-pkg repo: https://github.com/lablup/backend.ai-manager
* Available plugin interfaces
- `backendai_scheduler_v10`
- `backendai_hook_v20`
- `backendai_webapp_v20`
- `backendai_monitor_stats_v10`
- `backendai_monitor_error_v10`### Agent
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`
* [README](https://github.com/lablup/backend.ai/blob/main/src/ai/backend/agent/README.md)
* Legacy per-pkg repo: https://github.com/lablup/backend.ai-agent
* Available plugin interfaces
- `backendai_accelerator_v21`
- `backendai_monitor_stats_v10`
- `backendai_monitor_error_v10`### Storage Proxy
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`
* [README](https://github.com/lablup/backend.ai/blob/main/src/ai/backend/storage/README.md)
* Legacy per-pkg repo: https://github.com/lablup/backend.ai-storage-proxy### Webserver
It hosts the SPA (single-page application) packaged from our web UI codebase for end-users
and basic administration tasks.* `src/ai/backend/web`
* [README](https://github.com/lablup/backend.ai/blob/main/src/ai/backend/web/README.md)
* Legacy per-pkg repo: https://github.com/lablup/backend.ai-webserver**Synchronizing the static Backend.AI WebUI version:**
```console
$ scripts/download-webui-release.sh
```### Kernels
Computing environment recipes (Dockerfile) to build the container images to execute
on top of the Backend.AI platform.* https://github.com/lablup/backend.ai-kernels
### Jail
A programmable sandbox implemented using ptrace-based system call filtering written in Rust.
* https://github.com/lablup/backend.ai-jail
### Hook
A set of libc overrides for resource control and web-based interactive stdin (paired
with agents).* https://github.com/lablup/backend.ai-hook
### Client SDK Libraries
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.* Python (provides the command-line interface)
* `pip install backend.ai-client`
* https://github.com/lablup/backend.ai/tree/main/src/ai/backend/client
* Java
* Currently only available via GitHub releases
* https://github.com/lablup/backend.ai-client-java
* Javascript
* `npm install backend.ai-client`
* https://github.com/lablup/backend.ai-client-js
* PHP (under preparation)
* `composer require lablup/backend.ai-client`
* https://github.com/lablup/backend.ai-client-phpPlugins
-------* `backendai_accelerator_v21`
- [`ai.backend.accelerator.cuda`](https://github.com/lablup/backend.ai/tree/main/src/ai/backend/accelerator/cuda_open): CUDA accelerator plugin
- [`ai.backend.accelerator.cuda` (mock)](https://github.com/lablup/backend.ai/tree/main/src/ai/backend/accelerator/cuda_mock): CUDA mockup plugin
- This emulates the presence of CUDA devices without actual CUDA devices,
so that developers can work on CUDA integration without real GPUs.
- [`ai.backend.accelerator.rocm`](): ROCm accelerator plugin
- More available in the enterprise edition!
* `backendai_monitor_stats_v10`
- [`ai.backend.monitor.stats`](https://github.com/lablup/backend.ai-monitor-datadog)
- Statistics collector based on the Datadog API
* `backendai_monitor_error_v10`
- [`ai.backend.monitor.error`](https://github.com/lablup/backend.ai-monitor-sentry)
- Exception collector based on the Sentry APILegacy Components
-----------------These components still exist but are no longer actively maintained.
### Media
The front-end support libraries to handle multi-media outputs (e.g., SVG plots,
animated vector graphics)* The Python package (`lablup`) is installed *inside* kernel containers.
* To interpret and display media generated by the Python package, you need to load
the Javascript part in the front-end.
* https://github.com/lablup/backend.ai-media### IDE and Editor Extensions
* Visual Studio Code Extension
* Search “Live Code Runner” among VSCode extensions.
* https://github.com/lablup/vscode-live-code-runner
* Atom Editor plugin
* Search “Live Code Runner” among Atom plugins.
* https://github.com/lablup/atom-live-code-runnerWe 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.Python Version Compatibility
----------------------------| 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 | |License
-------Refer to [LICENSE file](https://github.com/lablup/backend.ai/blob/main/LICENSE).