Repositories

Which repository
should I use?

Use core for data, metadata for shared meaning, contrib for models, and NILMbench for fixed protocols and published results.

  1. 01

    Data and metrics

    NILMTK

    Use this for dataset and meter work.

    Converters, buildings, meters, preprocessing, metrics, and classical baselines.

  2. 03

    Model implementations

    nilmtk-contrib

    Use this to run or add a model.

    Maintained classical, TensorFlow, and PyTorch implementations with shared interfaces.

  3. 04

    Benchmarks and results

    NILMbench

    Use this for comparable experiments.

    T1/T2/T3 protocols, CPU smoke tests, CUDA runs, result provenance, and the leaderboard.

How they connect

Data → model → benchmark.

NILM Metadata defines shared names and schema. NILMTK loads the data. nilmtk-contrib runs models. NILMbench fixes the protocol and publishes results.

Open the GitHub organization

Install

Python 3.11 + uv.

Choose a tab and copy the commands. The model install includes core and metadata. Dataset files are downloaded separately.

PyTorch model environment
# Python 3.11 · CPU-safe install
uv venv --python 3.11
source .venv/bin/activate
UV_TORCH_BACKEND=cpu uv pip install \
  "nilmtk-contrib[torch] @ git+https://github.com/nilmtk/nilmtk-contrib.git"
python -c "from nilmtk_contrib.torch import Seq2PointTorch; print('ready')"
A

Datasets are not included

Download data from its official custodian, follow its license, and convert or mount it locally.

B

One development Dockerfile

nilmtk-contrib provides the common environment. Do not create an image for every model.

C

Benchmark images are separate

NILMbench pins CPU-smoke and CUDA runtimes used to certify results.

Citations

What should I cite?

Cite each NILMTK layer you use. Also cite the original model and dataset papers.

Open the core BibTeX
If your work uses…CiteDOI
Dataset conversion, meters, preprocessing, or metricsNILMTK core NILMTK: An Open Source Toolkit for Non-intrusive Load Monitoring 10.1145/2602044.2602051
Schema, taxonomy, synonyms, or dataset semanticsNILM Metadata Towards Reproducible Research in Energy Disaggregation 10.1109/COMPSACW.2014.97
The shared model suite or rapid experimentation APInilmtk-contrib Towards Reproducible State-of-the-Art Energy Disaggregation 10.1145/3360322.3360844
T1/T2/T3 protocols, runner, or leaderboard resultsNILMBench2026 · BuildSys '26 NILMBench2026: A Benchmark for Energy Disaggregation 10.1145/3744256.3812587

Also cite: every evaluated model's original paper and every dataset used. A leaderboard row is evidence, not a substitute for source attribution.

Add a model

Add a model,
then benchmark it.

Model code goes to nilmtk-contrib. Leaderboard evidence goes to NILMbench after the fixed real-data protocol passes.

  1. 01

    Implement

    Add the model to nilmtk-contrib using shared validation, windowing, checkpoint, and logging utilities.

    Model repository ↗
  2. 02

    Test

    Cover malformed inputs, short chunks, lazy imports, determinism, serialization, CPU smoke, and the targeted CUDA path.

    Model tests ↗
  3. 03

    Register

    Add only the adapter and search space to NILMbench. Dataset and task logic stays in the benchmark, never in a model notebook.

    Benchmark repository ↗
  4. 04

    Run real data

    Freeze source revisions, image digest, data identity, hardware, seeds, and protocol. Candidate results remain separate.

    Run protocol ↗
  5. 05

    Publish evidence

    Review immutable result bundles; CI regenerates the leaderboard and rejects hand-edited or incomparable ranks.

    Living leaderboard ↗

Help

Need help?

Open an issue with the exact command, operating system, Python version, dataset, and a small reproducer.

Choose a repository