Downloads · 30 days
9
1% of all-time downloads
lowdown-labs/fela-power-grid
fela-power-grid is a time series forecasting model from lowdown-labs. Use it for the time series forecasting task on the model card, and read the license before you ship it in a product. It is set up for transformers. The card lists the license as other.
This model is a research preview. GEFCom2014 is competition data with no stated reuse or commercial use grant (citation only), so respect that before any commercial use. Lowdown Labs has put together this model in the…
Downloads · 30 days
9
1% of all-time downloads
All-time downloads
637
Public
Parameters
186K
4 MB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors5.1 MB · 99%
From the Hugging Face model README
This model is a research preview. GEFCom2014 is competition data with no stated reuse or commercial use grant (citation only), so respect that before any commercial use. Lowdown Labs has put together this model in the interest of advancing public science.
This model forecasts how much power a solar farm or a wind farm will produce in the coming hours, and it gives a full range of outcomes (not just a single guess) so a grid operator can plan for the good case and the bad case. It is small enough to fit the envelope of a cheap microcontroller right at the station, with no cloud and no network connection, running there through an ONNX or TFLite export.
The model is a dual path Fourier Neural Operator, or FNO. The main path mixes information in the frequency domain: a fast Fourier transform, a learned filter on the frequencies, then a transform back. Weather and power move on daily and seasonal cycles, which is cheap to capture this way. Alongside it runs a small local mixer for the short range detail.
Everything is kept deliberately small: 136,780 parameters for solar, 311,554 for wind. Quantized to 8 bit integers each track is under a megabyte, and a single hourly forecast takes under a millisecond on one CPU core (measured on an x86 server CPU). That is small enough to sit on a microcontroller at the station, running through the ONNX or TFLite export. Because it runs there offline, the site's operational data never leaves the premises.
Speed and footprint, measured on CPU (AMD EPYC 9555, batch size 1, median of 20 runs).
| Track | Parameters | fp32 size | int8 size | Latency, 1 core |
|---|---|---|---|---|
| Solar, input (1, 6, 20) | 136,780 | 0.74 MB | 504 KB | 0.386 ms |
| Wind, input (1, 12, 15) | 311,554 | 1.91 MB | 1472 KB | 0.375 ms |
The int8 weights are the on device deploy size. The int8 pinball loss is essentially unchanged from fp32 (see Accuracy), so quantization is effectively lossless here.
The benchmark is GEFCom2014, the standard Global Energy Forecasting Competition dataset (Hong et al. 2016). The protocol is the final task (Task 15): train on all data before the held out test month and forecast that month from weather inputs only, with no test period power used (so there is no leakage).
Solar is 3 zones (test month June 2014), wind is 10 zones (test month December 2013). The metric is pinball loss averaged over the 1 to 99 percent quantiles, with power normalized to site capacity, exactly as in the competition. Lower pinball loss is better. "Skill" is the percent reduction in pinball loss against a named reference forecast.
| Benchmark | Metric | This model | Baseline (named) | Source |
|---|---|---|---|---|
| GEFCom2014 solar | pinball (norm.) | 0.01308 (int8 0.01328) | competition benchmark 0.0285 | measured (ours) |
| GEFCom2014 solar | skill vs competition benchmark | +54.1 percent | competition benchmark | measured (ours) |
| GEFCom2014 solar | skill vs diurnal persistence | +32.1 percent | diurnal persistence | measured (ours) |
| GEFCom2014 solar | pinball (norm.) | 0.01308 | our LightGBM quantile baseline 0.01232 | measured (ours) |
| GEFCom2014 solar | pinball (norm.) | 0.01308 | published LSTM/quantile NN 0.0143 | published |
| GEFCom2014 wind | pinball (norm.) | 0.04690 (int8 0.04692) | competition benchmark 0.0792 | measured (ours) |
| GEFCom2014 wind | skill vs competition benchmark | +40.8 percent | competition benchmark | measured (ours) |
| GEFCom2014 wind | skill vs diurnal persistence | +47.5 percent | diurnal persistence | measured (ours) |
| GEFCom2014 wind | pinball (norm.) | 0.04690 | our LightGBM quantile baseline 0.04547 | measured (ours) |
| GEFCom2014 wind | pinball (norm.) | 0.04690 | published GAN / normalizing flow / VAE / DDPM | published |
The model wins the official GEFCom2014 benchmark on both tracks, and it beats the competition benchmark by wide margins (skill +54.1 percent on solar, +40.8 percent on wind). What it is not is a new raw pinball record.
On the identical pipeline it ties our own LightGBM gradient boosted baseline (solar 0.01308 vs 0.01232, wind 0.04690 vs 0.04547). It beats a published LSTM/quantile NN on solar and a published GAN on wind, sits level with a published normalizing flow, and lands a few percent behind the best published diffusion model (VAE/DDPM) on wind.
So - the accuracy is competitive but with given resources, not chart topping. The real edge is where it delivers that accuracy: 136,780 and 311,554 parameters, under a megabyte in int8, sub millisecond on a CPU, running on station with the network gapped - which we feel is a great domain adaptation for our methodologies.
See quickstart/ for a runnable example. The model loads in a few lines with the bundled
modeling.py plus config.json, from the safe safetensors weight file (no pickle):
from huggingface_hub import hf_hub_download
import modeling # bundled in this repo
path = hf_hub_download("lowdown-labs/fela-power-grid", "solar.safetensors")
model = modeling.load_model(path, track="solar")
# Preprocess a raw NWP window (shape (6, 20) for solar), then forecast.
x = modeling.preprocess_nwp(raw_window, track="solar") # validates shape, standardizes
import torch
with torch.no_grad():
quantiles = model(x) # (1, 99): the P1..P99 power quantiles for the center forecast hour
# A P10 to P90 band for the center forecast hour:
p10 = quantiles[0, 9].item()
p90 = quantiles[0, 89].item()
print("Center hour P10..P90 (fraction of capacity):", p10, p90)
The modeling.preprocess_nwp helper standardizes the weather window and validates its
shape (it fails clearly on the wrong shape or units). For an interactive playground, see
the Hugging Face Space linked in this repo.
This model is CPU native: no GPU is required to run it, in any format. The fp32 and int8 formats run on a plain CPU.
For serving at scale, use the separate CPU native FELA server (https://github.com/Lowdown-Labs/fela_server). It runs this model on CPU, with no GPU required. The quickstart in this repo is the minimal single process path; the FELA server is the production serving path.
No proprietary or customer data was used. The model takes only numerical weather prediction covariates as input.
The training and held out evaluation splits are defined in train.py in this repo. A --smoke
flag rebuilds the split, asserts the audited held out window count per track, and exits before
training.
is_test flag defined in train.py, and train.py --smoke asserts the audited held out
counts: solar 2154 windows over 3 zones, wind 7390 windows over 10 zones. A 6 percent tail
of the training rows is held out as a validation set for early stopping (deterministic tail
slice).This section consolidates the formal references and the direct links to the real license text for every dataset and method used, verified from source.
This model does not use Gated Linear Attention, Gated DeltaNet, or Landmark Attention: both
tracks are pure FNO (see modeling.py and train.py).
What it is for:
What it is not for:
Evaluated conditions and known limits:
Privacy:
Model and technical note:
@misc{lowdownlabs_grid_renewable,
title = {FELA Grid Renewable: on station probabilistic solar and wind power forecasting},
author = {Lowdown Labs},
year = {2026},
note = {Model card}
}
You must also cite the benchmark dataset and the core libraries:
This is part of the FELA family from Lowdown Labs: one FNO architecture across many
modalities, all CPU native and subquadratic. This repo is published as
lowdown-labs/fela-power-grid. The sibling repos are:
lowdown-labs/fela-genomics: DNA sequence classification.lowdown-labs/fela-pdm: rotating machinery and turbofan health.lowdown-labs/fela-power-grid (this repo): probabilistic solar and wind power forecasting.lowdown-labs/fela-video: video moment retrieval and temporal grounding.lowdown-labs/fela-streaming-asr: streaming CPU speech recognition.These are grouped under the FELA Collection on Hugging Face. The models are independently
trained per modality and do not share weights, so none carries a base_model link.
Released under the Lowdown Labs Lovely License 1.0 (CC BY-NC 4.0 plus Hippocratic License 3.0). See LICENSE. For most LL models, a commercial license may be available; contact Lowdown Labs.