Skip to content

The main repository for the ADEPT framework

License

Notifications You must be signed in to change notification settings

ADEPT-ML/Server

Repository files navigation

ADEPT Logo

ADEPT Server

Anomaly Detection, Explanation and Processing for Time Series

Documentation | Utilities | Sustainability at TU Dortmund



ADEPT Screenshot

Contents

What is ADEPT?

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.

Features

  • 🕵️ 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

Core Technologies and Frameworks

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

Quick start

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.

Services and port mappings

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).

OpenAPI

All endpoints are fully specified in OpenAPI. You can access Swagger via /docs - e.g. localhost:8001/docs for the Data-Management.

image

Adding functionality

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)

Contributors

Benedikt Tobias Müller Janis Büse Marvin Ender
Benedikt Tobias Müller Janis Büse Marvin Ender

License

Copyleft © ADEPT ML, TU Dortmund 2023