Inspiration
PyTorch is gaining more attention from the research community for its flexibility. However, no available tool is there to help junior and even senior scientists who would like to adopt PyTorch in the field of energy disaggregation that is compatible with NILMtk, a toolkit for energy data analysis. Available tools based on other DL frameworks offer no advanced features to help scholars in their daily work forcing them to rely on spreadsheets or text files to keep track of their experiments. Furthermore, the constraint scholars and require extra-coding for common evaluation procedures like hyper-parameter optimization and cross-validation.
What it does
Deep-NILMtk is an open-source package designed specifically for deep models applied to solve NILM (detecting operational appliances using the aggregate power of the household). It allows the PyTorch community to benefit from the features included in NILMtk (A toolkit for energy datasets analysis) without the need to be familiar with it.
Challenges we ran into
The main challenge faced is to make the tool easily extendable. On one hand, the pipeline needed to be very well designed where each component can be replaced and/or changed with a custom one without affecting the whole disaggregation pipeline which is something very common in different research contributions. On the other hand, the tool needed to allow PyTorch developers working in the field of energy disaggregation to extend the tool without the need to learn new packages and interfaces specific to NILMtk. In this manner, the developer would dedicate more time to their contribution then wasting time on re-coding the whole pipeline from scratch.
Accomplishments that we're proud of
Among the important accomplishments of deep-nilmtk is the integration of not only existing baselines in other tools but also recent models (like UNET-NILM and BERT4NILM) which would allow scholars to easily experience with different datasets to achieve new findings and perform extensive evaluations in an efficient way. Another accomplishment is the easy extension of the tool with new models which would hopefully encourage scholars to share their models.
What we learned
The lessons learned through the project are many. Nevertheless, some of them are more relevant than others and marked me. First, I had the chance to have a closer inspection of the MLOps field and how it can be used to improve research efficiency as well as reproducibility. It was an opportunity to learn about the automation of many tasks in ML development that would allow you to better communicate your findings and track the progress that your model is making. I learned about automatic experiment management, data versioning control, hyper-parameter optimization as well as many other useful techniques and technologies. I also had the chance to witness the power of combining PyTorch with PyTorch-lightning and the flexibility that it offers for fast prototyping in research. It allowed me to avoid all the low-level code and made it straight-froward to try your novel ideas. Using this combination allowed me to enhance the modularity of the tool.
What's next for deep-nilmtk
The future version of the tool will certainly include more advanced tools that would facilitate the job of the PyTorch community joining the NILM scholarship.
Built With
- mlflow
- optuna
- python
- pytoch
- pytorch-lightning
Log in or sign up for Devpost to join the conversation.