Documentation | Utilities | Sustainability at TU Dortmund
- What is ADEPT
- Features
- Core Technologies and Frameworks
- Quick start
- Adding functionality
- Contributors
ADEPT is a framework for detecting anomalies in energy consumption data. As such, it includes interfaces for processing user time series data and can be used to interactively visualize explanatory information about anomalies. ADEPT features several shallow and deep machine learning algorithms for anomaly detection and explanation.
The ADEPT framework was presented at ECML PKDD 2022 in Grenoble, France, as a contribution to the Demo Track. Müller, B. T., et al. (2022). ADEPT: Anomaly Detection, Explanation, and Processing for Time Series with a Focus on Energy Consumption Data.
The framework was designed and implemented as part of a project group at the Faculty of Computer Science at the Technical University of Dortmund. Originally, it was intended to support the university's facility management in finding anomalous energy consumption and make informed decisions on how to intervene.
Note: Because the university's energy consumption data is under strict NDA, we are unable to provide the original data. We also cannot provide trained models that could be used to make assumptions about the energy consumption. We plan to add synthetic data so that interested parties can reproduce our results.
- 🕵️ anomaly detection: visualise energy consumption and detect anomalies
- 🤖 on-demand machine learning: models allow for on-demand training on the selected data
- ⚙️ configurable ML: easily fine-tune selections, thresholds and hyperparameters for detections
- 📈 explainability: anomalies are explained with normal-patterns and feature-attributions
- 💻 client application: an easy-to-use web application for non-specialist users
- 📚 OpenAPI documentation: all APIs are fully specified in OpenAPI and easy to use for further development
- 🖥️ responsive design: fully responsive client application for usage on any device
- 🏛️ microservice architecture: easy cloud-ready scaling and development on SOLID-principles
- 🐳 docker ready: all core components are docker ready, so you can start them right out of the box
Technology | Description | Usage |
---|---|---|
Docker | Container virtualization | Containerization of microservices |
FastAPI | Framework for building APIs in Python | API endpoints of the Backend |
Uvicorn | Web server implementation for Python | Backend web server for the APIs |
OpenAPI | Documentation standard for REST-APIs | Documentation of the ADEPT API |
TensorFlow | Machine learning library | Anomaly detection algorithms |
Requests | Python library for HTTP-Requests | Internal API requests |
React | JavaScript library for user interfaces | Realization of the Frontend |
MUI | React UI component library | Material design UI components |
Pull the repository and all of its submodules with
git clone --recurse-submodules https://github.com/ADEPT-ML/Server.git
Before you start ADEPT, you must create a top-level data
folder containing 1) the building-xls-files and 2) the
temperature data. These files must be in the correct format, or you will have to change the import code in
the Data-Management
service.
\-Server
├── Anomaly-Detection
├── Backend
├── data
│ ├── building_data.xls
│ └── metadata.csv
├── Data-Management
├── Explainability
├── Feature-Engineering
├── Frontend
├── Preprocessing
└── [...]
If ADEPT is to be deployed outside of localhost, the BACKEND_BASE_URL
in the docker_compose must be adjusted (otherwise .env in
the Frontend repository for deployments without Docker).
The complete system can be quickly bootstrapped with Docker:
# execute the script to boot all necessary components
sh ADEPT-Start.sh
Consider using an IDE for git if you want to contribute to the project.
Container-Name | Image-Name | Ports |
---|---|---|
ADEPT-ML-Frontend | server-react | 0.0.0.0:80 ➜ 80/tcp |
ADEPT-ML-Backend | server-backend | 0.0.0.0:8000 ➜ 80/tcp |
ADEPT-ML-Data-Management | server-data-management | 0.0.0.0:8001 ➜ 80/tcp |
ADEPT-ML-Preprocessing | server-preprocessing | 0.0.0.0:8002 ➜ 80/tcp |
ADEPT-ML-Feature-Engineering | server-feature-engineering | 0.0.0.0:8003 ➜ 80/tcp |
ADEPT-ML-Anomaly-Detection | server-anomaly-detection | 0.0.0.0:8004 ➜ 80/tcp |
ADEPT-ML-Explainability | server-explainability | 0.0.0.0:8005 ➜ 80/tcp |
Information about the functionality of the individual services can be found in the sub-repos or is documented in the code (pydoc, OpenAPI).
All endpoints are fully specified in OpenAPI. You can access Swagger via /docs
- e.g. localhost:8001/docs
for
the Data-Management
.
You can use ADEPT to test innovative techniques by simply customizing the appropriate component of the framework. For example, if you want to try a new ml model for the detection process, you can simply add the model under:
▶ How to add new models or change detection-configuration
▶ How to add explainability modules
▶ How to add new import-functionality (for other formats)
Benedikt Tobias Müller | Janis Büse | Marvin Ender |
---|---|---|
Copyleft © ADEPT ML, TU Dortmund 2023