Intro
Xtreme1 is an all-in-one open-source platform for multimodal training data.
Xtreme1 unlocks efficiency in data annotation, curation, and ontology management for tackling machine learning challenges in computer vision and LLM. The platform's AI-fueled tools elevate your annotation to the next efficiency level, powering your projects in 2D/3D Object Detection, 3D Semantic/Instance Segmentation, and LiDAR-Camera Fusion like never before.
Check the Enterprise Version here 🎉 Request Demo for Free.
The README document only includes content related to installation, building, and running, if you have any questions or doubts about features, you can always refer to our Docs Site.
Find us on Twitter | Medium | Issues
Key Features
Image Annotation (B-box, Polygon, Polyline, Key Point) - YOLOR | Lidar-camera Fusion Annotation - OpenPCDet & AB3DMOT
:-------------------------:|:-------------------------:
| 
:one: Supports data labeling for images, 3D LiDAR and 2D/3D Sensor Fusion datasets :two: Built-in pre-labeling models support 2D/3D object detection :three: Configurable Ontology Center for general classes (with hierarchies) and attributes for use in your model training
:four: Data management and quality monitoring :five: Find labeling errors and fix them
:six: Model results visualization to help you evaluate your model :seven: RLHF for Large Language Models :new: (beta version)
Image Data Curation (Visualizing & Debug) - MobileNetV3 & openTSNE | RLHF Annotation Tool for LLM (beta version)
:-------------------------:|:-------------------------:
| 
Install
Prerequisites
Operating System Requirements
Any OS can install the Xtreme1 platform with Docker Compose (installing Docker Desktop on Mac, Windows, and Linux devices). On the Linux server, you can install Docker Engine with Docker Compose Plugin.
Hardware Requirements
CPU: AMD64 or ARM64 RAM: 2GB or higher Hard Drive: 10GB+ free disk space (depends on data size)
Software Requirements
For Mac, Windows, and Linux with desktop.
Docker Desktop: 4.1 or newer
For Linux server.
Docker Engine: 20.10 or newer Docker Compose Plugin: 2.0 or newer
(Built-in) Models Deployment Requirements
The built-in model containers only can be running on Linux server with NVIDIA CUDA Driver and NVIDIA Container Toolkit.
GPU: NVIDIA T4 or other similar GPU RAM: 4G or higher
Install with Docker
Download Package
Already running an earlier version? Read Upgrading first. The steps below install a fresh copy: followed on their own they start an empty installation beside the one you have, and leave its data behind.
Download the latest release package and unzip it.
wget https://github.com/xtreme1-io/xtreme1/releases/download/v0.9.3/xtreme1-v0.9.3.zip
unzip -d xtreme1-v0.9.3 xtreme1-v0.9.3.zip
Start Services
Enter into the release package directory, and execute the following command to start all services. It needs a few minutes to initialize database and prepare a test dataset.
cd xtreme1-v0.9.3
docker compose up
Visit http://localhost:8190 in the browser (Google Chrome is recommended) to try out Xtreme1! You can replace localhost with IP address if you want to access from another machine.
Docker compose will pull all service images from Docker Hub, including basic services MySQL, Redis, MinIO, and application services backend, frontend. You can find the username, password, hot binding port to access MySQL, Redis and MinIO in docker-compose.yml, for example you can access MinIO console at http://localhost:8194. We use Docker volume to save data, so you won't lose any data between container recreating.
Docker Compose advanced commands:
# Start in the foreground.
docker compose up
Or add -d option to run in the background.
docker compose up -d
When finished, you can start or stop all or specific services.
docker compose start
docker compose stop
Stop all services and delete all containers, but data volumes will be kept.
docker compose down
Danger! Delete all volumes. All data in MySQL, Redis and MinIO.
docker compose down -v
Start Built-in Models
You need to explicitly specify a model profile to enable model services.
docker compose --profile model up
Make sure you have installed NVIDIA CUDA Driver and NVIDIA Container Toolkit on host machine.
# You need set "default-runtime" as "nvidia" in /etc/docker/daemon.json and restart docker to enable NVIDIA Container Toolkit
{
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
},
"default-runtime": "nvidia"
}
If you use Docker Desktop + WSL2.0, please find this issue #144 for your reference.
Upgrading
The backend applies any outstanding database migrations when it starts, so upgrading is
replacing the release package and starting the stack again. The data volumes are reused: the
project name is pinned in docker-compose.yml, so they do not depend on which directory the
package was unzipped into. docker compose down without -v keeps them.
Back up the database first. A migration that fails leaves the database where it stopped, and the
backend then serves nothing rather than serve on a half-migrated schema — the log names the
version it is on, the script that failed and the statement that failed. Recovering is by hand:
backend/src/main/resources/db/migration/README.md has the steps.
# From the directory of the version you are currently running.
docker compose exec -T mysql mysqldump -uxtreme1 -pRc4K3L6f --databases xtreme1 > xtreme1-backup.sql
docker compose down
Then, from the new release package directory.
docker compose up -d
To restore that backup, docker compose exec -T mysql mysql -uxtreme1 -pRc4K3L6f < xtreme1-backup.sql.
File storage is not in the database. docker compose down -v deletes the MinIO volume along with
everything else, and no migration will bring it back.
Upgrading from v0.9.2 or earlier
Those releases took their volume names from the directory the package was unzipped into, so starting a new release from a new directory gives an empty installation and leaves the old data in volumes nothing is using. The project name is pinned from v0.9.3 on, so this is a one-time copy. Do it with both stacks stopped.
# The old volumes are named after the old directory: a package unzipped into xtreme1-v0.9.2
gives xtreme1-v092_mysql-data and so on. Find yours.
docker volume ls
From the new release package directory, create the stack without starting it, so that Compose
creates the volumes it is going to use.
docker compose create
Copy each one across, replacing xtreme1-v092 with your own prefix.
docker run --rm -v xtreme1-v092_mysql-data:/from:ro -v xtreme1_mysql-data:/to alpine sh -c 'cd /from && cp -a . /to'
docker run --rm -v xtreme1-v092_redis-data:/from:ro -v xtreme1_redis-data:/to alpine sh -c 'cd /from && cp -a . /to'
docker run --rm -v xtreme1-v092_minio-data:/from:ro -v xtreme1_minio-data:/to alpine sh -c 'cd /from && cp -a . /to'
docker compose up -d
docker compose create has to run before the copy. Into a volume Compose did not create itself
it still starts, but it warns that the volume is not its own and suggests declaring it external,
which is not what you want here.
Nothing writes to the old volumes. Remove them with docker volume rm once the upgraded stack
has proved itself.
If you started the new version first and it came up empty, stop there. Nothing has been
deleted: the old data is still in its volumes, and docker volume ls will show them. Take the
copy above and it comes back. What cannot be undone is annotating in the empty installation
first — that leaves two databases with no way to merge them.
Run on ARM CPU
Please note that certain Docker images, including MySQL, may not be compatible with the ARM architecture. In case your computer is based on an ARM CPU (e.g. Apple M1), you can create a Docker Compose override file called docker-compose.override.yml and include the following content. While this method uses QEMU emulation to enforce the use of the ARM64 image on the ARM64 platform, it may impact performance.
services:
mysql:
platform: linux/amd64
Install from Source
If you want to build or extend the function, download the source code and run locally.
Enable Docker BuildKit
We are using Docker BuildKit to accelerate the building speed, such as cache Maven and NPM packages between builds. By default BuildKit is not enabled in Docker Desktop, you can enable it as follows. For more details, you can check the official document Build images with BuildKit.
# Set the environment variable to enable BuildKit just for once.
DOCKER_BUILDKIT=1 docker build .
DOCKER_BUILDKIT=1 docker compose up
Or edit Docker daemon.json to enable BuildKit by default, the content can be something like '{ "features": { "buildkit": true } }'.
vi /etc/docker/daemon.json
You can clear the builder cache if you encounter some package version related problem.
docker builder prune
The frontend image caches node_modules between builds. After switching to a different version of the code
(for example rolling back), clear that cache if the build fails with errors such as "esbuild-linux-64 could not be found".
docker builder prune --filter type=exec.cachemount
Clone Repository
git clone https://github.com/xtreme1-io/xtreme1.git
cd xtreme1
Build Images and Run Services
The docker-compose.yml default will pull application images from Docker Hub, if you want to build images from source code, you can comment on the service's image line and un-comment build line.
services:
backend:
# image: basicai/xtreme1-backend
build: ./backend
frontend:
# image: basicai/xtreme1-frontend
build: ./frontend
Then when you run docker compose up, it will first build the backend and frontend image and start these services. Be sure to run docker compose build when code changes, as the up command will only build images when it does not exist.
You should not commit your change todocker-compose.yml, to avoid this, you can copy docker-compose.yml to a new filedocker-compose.develop.yml, and modify this file as your development needs, as this file is already added into.gitignore. And you need to specify this specific file when running Docker Compose commands, such asdocker compose -f docker-compose.develop.yml build.
License
This software is licensed under the Apache 2.0 LICENSE. Xtreme1 is a trademark of LF AI & Data Foundation.
Xtreme1 is now hosted in LF AI & Data Foundation as the 1st open source data labeling annotation and visualization project.
If Xtreme1 is part of your development process / project / publication, please cite us ❤️ :
@misc{Xtreme1,
title = {Xtreme1 - The Next GEN Platform For Multisensory Training Data},
year = {2023},
note = {Software available from https://github.com/xtreme1-io/xtreme1/},
url={https://xtreme1.io/},
author = {LF AI & Data Foundation},
}