SustainML is a framework and an associated toolkit that will foster energy efficiency throughout the whole life-cycle of ML applications: from the design and exploration phase that includes exploratory iterations of training, testing and optimizing different system versions through the final training of the production systems (which often involves huge amounts of data, computation and epochs) and (where appropriate) continuous online re-training during deployment for the inference process. The framework will optimize the ML solutions based on the application tasks, across levels from hardware to model architecture. It will also collect both previously scattered efficiency-oriented research, as well as novel Green-AI methods.
AI developers from all experience levels can make use of the framework through its emphasis on human-centric interactive transparent design and functional knowledge cores, instead of the common blackbox and fully automated optimization approaches in AutoML.
This project is a work in progress and the following features presented here will be extended, updated, and improved in future versions.
The SustainML Framework is composed of different Software Modules, each one related to specific task, which are specialized in solving the different parts of the machine learning problem architecture definition, starting from the user’s problem description. Each of the modules conforms a Node. These steps are basically:
- Encode the problem and constraints defined by the user
- Suggest a machine learning model
- Propose an optimized hardware for running the suggested model
- Warn about the estimated carbon footprint that would take training the model in the hardware
All the Nodes shall import its corresponding Python library, so that each Node can be abstracted from the DDS communications.
This library repository contains all the modules definitions. The Framework uses the library API to deploy those different SustainML modules. The exchanged information between the modules is over DDS.
The Framework includes a Graphical User Interface (GUI) in which user interacts and introduces the ML problem definition. That GUI implements also the Orchestrator node, a key node that feds the remain modules with the information provided by the user, retrieves all the results, and display them to the user though this GUI.
This process can be iterative. So, based on a previous solution and the user's feedback, the framework provides new ML solutions.
This repository is divided in sub-packages with different targets:
sustainml_cpp
: Main definition and implementation of the project logic library. C++ API provided.sustainml_docs
: ReadTheDocs documentation project (available here)sustainml_modules
: Set of piped modules that use the Python API.sustainml_py
: Wrap of the project logic library. Python API.sustainml_swig
: Binding from the C++ APIsustainml_cpp
to thesustainml_py
Python API.
If you need support you can reach us by mail at [email protected] or by phone at +34 91 804 34 48
.
This project has received funding from the European Union’s Horizon Europe research and innovation programme (HORIZON-CL4-2021-HUMAN-01) under grant agreement No 101070408.