This project is used for training a model to sum the GSP predictions of PVNet into a national estimate.
Using the summation model to sum the GSP predictions rather than doing a simple sum increases the accuracy of the national predictions and can be configured to produce estimates of the uncertainty range of the national estimate. See the PVNet repo for more details and our paper.
git clone https://github.com/openclimatefix/PVNet_summation
cd PVNet_summation
pip install .
pip install ".[dev]"
In order to run PVNet summation, we assume that you are already set up with PVNet and have a trained PVNet model already available either locally or pushed to HuggingFace.
Before running any code, copy the example configuration to a configs directory:
cp -r configs.example configs
You will be making local amendments to these configs.
The datasets required are the same as documented in PVNet. The only addition is that you will need PVLive data for the national sum i.e. GSP ID 0.
How PVNet_summation is run is determined by the extensive configuration in the config files. The
configs stored in configs.example
.
Make sure to update the following config files before training your model:
-
At the very start of training we loop over all of the input samples and make predictions for them using PVNet. These predictions are saved to disk and will be loaded in the training loop for more efficient training. In
configs/config.yaml
updatesample_save_dir
to set where the predictions will be saved to. -
In
configs/datamodule/default.yaml
:
- Update
pvnet_model.model_id
andpvnet_model.revision
to point to the Huggingface commit or local directory where the exported PVNet model is. - Update
configuration
to point to a data configuration compatible with the PVNet model whose outputs will be fed into the summation model. - Set
train_period
andval_period
to control the time ranges of the train and val period - Optionally set
max_num_train_samples
andmax_num_val_samples
to limit the number of possible train and validation example which will be used.
- In
configs/model/default.yaml
:- Update the hyperparameters and structure of the summation model
- In
configs/trainer/default.yaml
:- Set
accelerator: 0
if running on a system without a supported GPU
- Set
Assuming you have updated the configs, you should now be able to run:
python run.py
You can use python -m pytest tests
to run tests