Datasets are not included
Download data from its official custodian, follow its license, and convert or mount it locally.
Start here
NILMTK is split across four repositories. Pick the job below; the site will take you to the right package and commands.
Repositories
Use core for data, metadata for shared meaning, contrib for models, and NILMbench for fixed protocols and published results.
Data and metrics
Converters, buildings, meters, preprocessing, metrics, and classical baselines.
Model implementations
Maintained classical, TensorFlow, and PyTorch implementations with shared interfaces.
Benchmarks and results
T1/T2/T3 protocols, CPU smoke tests, CUDA runs, result provenance, and the leaderboard.
How they connect
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 organizationInstall
Choose a tab and copy the commands. The model install includes core and metadata. Dataset files are downloaded separately.
# 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')"
# Converters, meters, metadata, and metrics
uv venv --python 3.11
source .venv/bin/activate
uv pip install \
"nilmtk @ git+https://github.com/nilmtk/nilmtk.git"
nilmtk-convert --help
# One onboarding Dockerfile; no image per model
git clone https://github.com/nilmtk/nilmtk-contrib.git
cd nilmtk-contrib
docker build -t nilmtk-contrib:latest .
docker run --rm -it nilmtk-contrib:latest bash
git clone https://github.com/nilmtk/nilmbench.git
cd nilmbench
uv venv --python 3.11
source .venv/bin/activate
UV_TORCH_BACKEND=cpu uv pip install ".[benchmark]"
nilmbench list
Download data from its official custodian, follow its license, and convert or mount it locally.
nilmtk-contrib provides the common environment. Do not create an image for every model.
NILMbench pins CPU-smoke and CUDA runtimes used to certify results.
Citations
Cite each NILMTK layer you use. Also cite the original model and dataset papers.
Open the core BibTeX| If your work uses… | Cite | DOI |
|---|---|---|
| Dataset conversion, meters, preprocessing, or metricsNILMTK core | NILMTK: An Open Source Toolkit for Non-intrusive Load Monitoring | 10.1145/ |
| Schema, taxonomy, synonyms, or dataset semanticsNILM Metadata | Towards Reproducible Research in Energy Disaggregation | 10.1109/ |
| The shared model suite or rapid experimentation APInilmtk-contrib | Towards Reproducible State-of-the-Art Energy Disaggregation | 10.1145/ |
| T1/T2/T3 protocols, runner, or leaderboard resultsNILMBench2026 · BuildSys '26 | NILMBench2026: A Benchmark for Energy Disaggregation | 10.1145/ |
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
Model code goes to nilmtk-contrib. Leaderboard evidence goes to NILMbench after the fixed real-data protocol passes.
Add the model to nilmtk-contrib using shared validation, windowing, checkpoint, and logging utilities.
Model repository ↗Cover malformed inputs, short chunks, lazy imports, determinism, serialization, CPU smoke, and the targeted CUDA path.
Model tests ↗Add only the adapter and search space to NILMbench. Dataset and task logic stays in the benchmark, never in a model notebook.
Benchmark repository ↗Freeze source revisions, image digest, data identity, hardware, seeds, and protocol. Candidate results remain separate.
Run protocol ↗Review immutable result bundles; CI regenerates the leaderboard and rejects hand-edited or incomparable ranks.
Living leaderboard ↗Help
Open an issue with the exact command, operating system, Python version, dataset, and a small reproducer.