Simplify the model card around evaluation on the repro branch.
Browse files
README.md
CHANGED
|
@@ -9,62 +9,33 @@ tags:
|
|
| 9 |
- opfdata
|
| 10 |
---
|
| 11 |
|
| 12 |
-
|
| 13 |
|
| 14 |
-
|
| 15 |
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
## Files
|
| 19 |
-
|
| 20 |
-
```
|
| 21 |
-
{case14_ieee,case30_ieee,case57_ieee,case118_ieee,case500_goc,case2000_goc}/seed{42,3,17}/
|
| 22 |
-
best_model_state_dict.pt
|
| 23 |
-
normalizer_stats.pt
|
| 24 |
-
metrics.csv
|
| 25 |
-
HGNSQ_penalty_11_OPFData_<case>_<default|3|17>.yaml
|
| 26 |
-
splits/
|
| 27 |
-
train.pt val.pt test.pt shuffled_indices.pt
|
| 28 |
-
mlflow/
|
| 29 |
-
train/<grid>/seed{42,3,17}/<run_id>/
|
| 30 |
-
eval/<run_id>/
|
| 31 |
-
```
|
| 32 |
-
|
| 33 |
-
The training YAML sits in the same folder as the checkpoint. The same files are on GitHub: [`scripts/opfdata/configs`](https://github.com/gridfm/gridfm-graphkit/tree/genco-paper-repro/scripts/opfdata/configs). `default` is seed `42`.
|
| 34 |
-
|
| 35 |
-
`metrics.csv` is the eval test-set scalar dump for that checkpoint (`gridfm_graphkit evaluate --batch_size 512`). `splits/` are the HH-MPNN 90/5/5 index files (270k / 15k / 15k). Put them at `scripts/opfdata/splits/` when training or evaluating from [gridfm-graphkit `genco-paper-repro`](https://github.com/gridfm/gridfm-graphkit/tree/genco-paper-repro).
|
| 36 |
-
|
| 37 |
-
The [training and eval MLflow runs](https://huggingface.co/gridfm/genco-opfdata/tree/main/mlflow) are under `mlflow/` (params, tags, metrics, test CSVs and plots). Weights stay in `<grid>/seed*/`, not inside the run dirs. Table 5 uses the **eval** runs.
|
| 38 |
-
|
| 39 |
-
## Install
|
| 40 |
|
| 41 |
-
|
| 42 |
|
| 43 |
```bash
|
| 44 |
-
git clone -
|
| 45 |
cd gridfm-graphkit
|
| 46 |
-
python -m venv venv && source venv/bin/activate
|
| 47 |
pip install -e .
|
|
|
|
| 48 |
TORCH_CUDA_VERSION=$(python -c "import torch; print(torch.__version__ + ('+cpu' if torch.version.cuda is None else ''))")
|
| 49 |
pip install torch-scatter -f https://data.pyg.org/whl/torch-${TORCH_CUDA_VERSION}.html
|
| 50 |
```
|
| 51 |
|
| 52 |
-
|
| 53 |
|
| 54 |
-
|
| 55 |
-
|
| 56 |
-
|
|
| 57 |
-
|
|
| 58 |
-
| IEEE
|
| 59 |
-
| IEEE
|
| 60 |
-
|
|
| 61 |
-
|
|
| 62 |
-
| GOC 500 | [gridfm/opfdata_case500_goc](https://huggingface.co/datasets/gridfm/opfdata_case500_goc) |
|
| 63 |
-
| GOC 2000 | [gridfm/opfdata_case2000_goc](https://huggingface.co/datasets/gridfm/opfdata_case2000_goc) |
|
| 64 |
-
|
| 65 |
-
## Evaluate
|
| 66 |
-
|
| 67 |
-
From the graphkit repo root:
|
| 68 |
|
| 69 |
```bash
|
| 70 |
mkdir -p data/case118_ieee/raw scripts/opfdata/splits
|
|
@@ -80,4 +51,18 @@ gridfm_graphkit evaluate \
|
|
| 80 |
--batch_size 512
|
| 81 |
```
|
| 82 |
|
| 83 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 9 |
- opfdata
|
| 10 |
---
|
| 11 |
|
| 12 |
+
Reproduction guide: [GENCO §5.2](https://github.com/gridfm/gridfm-paper-genco/blob/main/repro_instructions/5.2_OPF_on_opfdata.md).
|
| 13 |
|
| 14 |
+
GENCO optimal-power-flow checkpoints on OPFData ([paper](https://arxiv.org/abs/2608.09921)): IEEE 14, 30, 57, and 118, and GOC 500 and 2000, seeds 42, 3, and 17.
|
| 15 |
|
| 16 |
+
## Evaluate
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 17 |
|
| 18 |
+
Use graphkit branch [genco-paper-repro](https://github.com/gridfm/gridfm-graphkit/tree/genco-paper-repro). We do not guarantee that these checkpoints work on `main`, which is under development.
|
| 19 |
|
| 20 |
```bash
|
| 21 |
+
git clone -b genco-paper-repro https://github.com/gridfm/gridfm-graphkit.git
|
| 22 |
cd gridfm-graphkit
|
|
|
|
| 23 |
pip install -e .
|
| 24 |
+
pip install "huggingface_hub[cli]"
|
| 25 |
TORCH_CUDA_VERSION=$(python -c "import torch; print(torch.__version__ + ('+cpu' if torch.version.cuda is None else ''))")
|
| 26 |
pip install torch-scatter -f https://data.pyg.org/whl/torch-${TORCH_CUDA_VERSION}.html
|
| 27 |
```
|
| 28 |
|
| 29 |
+
Run the commands below from that repo root. Graphkit loads `{data_path}/{network}/raw/*.parquet`. Configs are in [`scripts/opfdata/configs`](https://github.com/gridfm/gridfm-graphkit/tree/genco-paper-repro/scripts/opfdata/configs). Copy `splits/` to `scripts/opfdata/splits/` before evaluating. Each checkpoint folder has `best_model_state_dict.pt` and `normalizer_stats.pt`.
|
| 30 |
|
| 31 |
+
| Grid | Dataset | `network` folder |
|
| 32 |
+
|---|---|---|
|
| 33 |
+
| IEEE 14 | [gridfm/opfdata_case14_ieee](https://huggingface.co/datasets/gridfm/opfdata_case14_ieee) | `case14_ieee` |
|
| 34 |
+
| IEEE 30 | [gridfm/opfdata_case30_ieee](https://huggingface.co/datasets/gridfm/opfdata_case30_ieee) | `case30_ieee` |
|
| 35 |
+
| IEEE 57 | [gridfm/opfdata_case57_ieee](https://huggingface.co/datasets/gridfm/opfdata_case57_ieee) | `case57_ieee` |
|
| 36 |
+
| IEEE 118 | [gridfm/opfdata_case118_ieee](https://huggingface.co/datasets/gridfm/opfdata_case118_ieee) | `case118_ieee` |
|
| 37 |
+
| GOC 500 | [gridfm/opfdata_case500_goc](https://huggingface.co/datasets/gridfm/opfdata_case500_goc) | `case500_goc` |
|
| 38 |
+
| GOC 2000 | [gridfm/opfdata_case2000_goc](https://huggingface.co/datasets/gridfm/opfdata_case2000_goc) | `case2000_goc` |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 39 |
|
| 40 |
```bash
|
| 41 |
mkdir -p data/case118_ieee/raw scripts/opfdata/splits
|
|
|
|
| 51 |
--batch_size 512
|
| 52 |
```
|
| 53 |
|
| 54 |
+
Repeat for the other grids and seeds. Download each dataset into `data/<network>/raw`.
|
| 55 |
+
|
| 56 |
+
## Files
|
| 57 |
+
|
| 58 |
+
```
|
| 59 |
+
{case14_ieee,case30_ieee,case57_ieee,case118_ieee,case500_goc,case2000_goc}/seed{42,3,17}/
|
| 60 |
+
best_model_state_dict.pt
|
| 61 |
+
normalizer_stats.pt
|
| 62 |
+
metrics.csv
|
| 63 |
+
HGNSQ_penalty_11_OPFData_<case>_<default|3|17>.yaml
|
| 64 |
+
splits/
|
| 65 |
+
train.pt val.pt test.pt shuffled_indices.pt
|
| 66 |
+
mlflow/train/
|
| 67 |
+
mlflow/eval/
|
| 68 |
+
```
|