Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
9164588
Update README.md
jaywonchung Feb 23, 2026
34d7502
WIP online
jaywonchung Feb 23, 2026
10de3d5
Update URLs
jaywonchung Feb 23, 2026
dd8ce9e
Documentation improvements
jaywonchung Feb 24, 2026
41e8ecc
mkdocstrings refs and conditional analytics
jaywonchung Feb 24, 2026
2b4f897
Add `site_url`
jaywonchung Feb 24, 2026
a4ff28d
v0.0.1 release
jaywonchung Feb 24, 2026
c89ca7d
Depend on Zeus >= 0.15.0
jaywonchung Feb 24, 2026
42e43e5
Add README and URLs to `pyproject.toml`
jaywonchung Feb 24, 2026
ffa3e5f
Bump to v0.0.1.post1
jaywonchung Feb 24, 2026
2db31f8
Online API improvements
jaywonchung Feb 24, 2026
842abf1
Improve mlenergy benchmark data bulk download
jaywonchung Feb 25, 2026
687447f
Upgrade mlenergy-data
jaywonchung Feb 25, 2026
cdc5e9b
[CI] Add `uv.lock` to CI trigger paths
jaywonchung Feb 25, 2026
e027975
Improve opendssdirect.py API usage
jaywonchung Feb 25, 2026
eec959d
Small efficiency improvements in opendss grid backend
jaywonchung Feb 25, 2026
dbe0e48
[Docs] Landing page and Getting Started improvements
jaywonchung Feb 25, 2026
3ff6cec
[Docs] Fix API doc generation
jaywonchung Feb 25, 2026
9b6ebc8
[Docs] Fix OG image, updates in Guide
jaywonchung Feb 25, 2026
dbc56c5
[Docs] Guide reord, architecture diagram
jaywonchung Feb 25, 2026
436ff44
[Docs] Guide updates
jaywonchung Feb 25, 2026
c1b7c32
[Grid] Remove redundant power resampling
jaywonchung Feb 25, 2026
9aca927
[Docs] Guide updates
jaywonchung Feb 25, 2026
fe66245
[Docs] Release candidate
jaywonchung Feb 26, 2026
d955047
[Docs] Update pip install command
jaywonchung Feb 26, 2026
3310f9b
[Docs] Remove redundant comment
jaywonchung Feb 26, 2026
a650224
[API] Reorg core component constructors
jaywonchung Feb 26, 2026
c99c5cd
Update uv.lock
jaywonchung Mar 1, 2026
b5f42cf
[*] Major refactor: Consistency and simplicity
jaywonchung Mar 5, 2026
97170f7
CI: Fix lint script
jaywonchung Mar 5, 2026
4f20541
[Misc] Bump to 0.1.0
jaywonchung Mar 5, 2026
3cde674
[Misc] Add docs badge
jaywonchung Mar 5, 2026
64578d3
Add multi-datacenter architecture: Coordinator accepts multiple DCs. …
Mar 16, 2026
5ec7164
Remove trace data
Mar 16, 2026
0eb9477
Add multi-datacenter architecture: Coordinator accepts multiple DCs. …
Mar 18, 2026
b9f6179
remove trace data
Mar 18, 2026
d42724c
merge from master branch
Mar 18, 2026
c3a8372
remove output results
Mar 18, 2026
173ac95
fix PR errors
Mar 18, 2026
1e91d76
fix PR errors
Mar 18, 2026
c79ca5e
fix PR errors
Mar 18, 2026
ff57fbc
fix PR errors
Mar 18, 2026
97b3749
Delete unused dss files
Mar 18, 2026
c7ac80c
refactored based on PR comments
Apr 6, 2026
57e9e96
fixed PR errors
Apr 6, 2026
1549924
add PPO
Apr 7, 2026
74e7850
fixed naming errors; added run_all_tests.sh; added basic PPO algorithm
Apr 8, 2026
5b9b2b0
Remove PPO files (not ready for merge)
Apr 8, 2026
f42d8a2
Fix ieee34 total_gpu_capacity in run_ofo.py
Apr 8, 2026
870922c
Fix plotting error
Apr 8, 2026
8504322
Fix PR error
Apr 8, 2026
817ddae
Remove run-all script, update `uv.lock`, and make OFO less verbose
jaywonchung Apr 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,6 @@ docs/api/

data/offline/
data/online/
.claude/
examples/offline/data/offline/
examples/offline/outputs
24 changes: 13 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,28 +64,30 @@ from openg2g.grid.config import TapPosition
# 1. Set up a trace-based datacenter
models = (
InferenceModelSpec(
model_label="Llama-3.1-8B", num_replicas=720, gpus_per_replica=1,
initial_batch_size=128, itl_deadline_s=0.08,
model_label="Llama-3.1-8B", gpus_per_replica=1,
itl_deadline_s=0.08, feasible_batch_sizes=(8, 16, 32, 64, 128, 256, 512),
),
InferenceModelSpec(
model_label="Llama-3.1-70B", num_replicas=180, gpus_per_replica=4,
initial_batch_size=128, itl_deadline_s=0.10,
model_label="Llama-3.1-70B", gpus_per_replica=4,
itl_deadline_s=0.10, feasible_batch_sizes=(8, 16, 32, 64, 128, 256, 512),
),
)
replica_counts = {"Llama-3.1-8B": 720, "Llama-3.1-70B": 180}
data_dir = Path("data/offline")
inference_data = InferenceData.load(data_dir, models, duration_s=3600, dt_s=0.1)
dc_config = DatacenterConfig()
dc = OfflineDatacenter(
dc_config,
OfflineWorkload(inference_data=inference_data),
OfflineWorkload(inference_data=inference_data, replica_counts=replica_counts),
dt_s=Fraction(1, 10),
total_gpu_capacity=1440,
)

# 2. Set up the grid
TAP_STEP = 0.00625
grid = OpenDSSGrid(
dss_case_dir="examples/ieee13",
dss_master_file="IEEE13Nodeckt.dss",
dss_master_file="IEEE13Bus.dss",
dc_bus="671",
dc_bus_kv=4.16,
power_factor=dc_config.power_factor,
Expand All @@ -109,22 +111,22 @@ See [`examples/`](examples/) for complete simulation scripts (offline trace-repl

## Running Example Simulations

A single `--config` flag drives both data generation and simulation. The first run downloads benchmark data from the [ML.ENERGY Benchmark v3 dataset](https://huggingface.co/datasets/ml-energy/benchmark-v3) (gated -- [request access](https://huggingface.co/datasets/ml-energy/benchmark-v3) first) and generates simulation artifacts. Subsequent runs load from cache.
The first run downloads benchmark data from the [ML.ENERGY Benchmark v3 dataset](https://huggingface.co/datasets/ml-energy/benchmark-v3) (gated -- [request access](https://huggingface.co/datasets/ml-energy/benchmark-v3) first) and generates simulation artifacts. Subsequent runs load from cache.

```bash
export HF_TOKEN=hf_xxxxxxxxxxx # needed for first run only

# Baseline: fixed taps
python examples/offline/run_baseline.py --config examples/offline/config.json --mode no-tap
python examples/offline/run_baseline.py --system ieee13 --mode no-tap

# Baseline: scheduled tap changes
python examples/offline/run_baseline.py --config examples/offline/config.json --mode tap-change
python examples/offline/run_baseline.py --system ieee13 --mode tap-change

# OFO closed-loop control
python examples/offline/run_ofo.py --config examples/offline/config.json
python examples/offline/run_ofo.py --system ieee13
```

`--config` is the only required argument. Model specs, data sources, and paths are all in the config file. Generated data is cached in `data/offline/{hash}/`.
`--system` selects the IEEE test feeder (ieee13, ieee34, or ieee123). Model specs and data sources are in `config.json`; all other experiment parameters are defined inline in each script. Generated data is cached in `data/offline/{hash}/`.

## Documentation

Expand Down
10 changes: 10 additions & 0 deletions _zensical.toml
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,16 @@ nav = [
{ "Data Pipeline" = "guide/data-pipeline.md" },
{ "Building Simulators" = "guide/building-simulators.md" },
]},
{ "Examples" = [
{ "GPU Flexibility for Voltage Regulation" = "examples/gpu-flexibility.md" },
{ "Voltage Regulation Strategies" = "examples/voltage-regulation-strategies.md" },
{ "Controller Parameter Sensitivity" = "examples/controller-parameter-sensitivity.md" },
{ "Grid Topology and DER Effects" = "examples/grid-topology-effects.md" },
{ "Datacenter Sizing and Hosting Capacity" = "examples/hosting-capacity.md" },
{ "Datacenter Location Planning" = "examples/dc-location-planning.md" },
{ "Multi-Datacenter Coordination" = "examples/multi-dc-coordination.md" },
{ "Joint PV + DC Siting and Sizing" = "examples/pv-dc-siting.md" },
]},
{ "API Reference" = "auto-generated by scripts/docs.sh and scripts/gen_api_docs.py" },
]

Expand Down
335 changes: 335 additions & 0 deletions data/grid/ieee123/IEEE123Bus.dss

Large diffs are not rendered by default.

426 changes: 213 additions & 213 deletions examples/ieee13/IEEELineCodes.dss → data/grid/ieee123/IEEELineCodes.dss

Large diffs are not rendered by default.

Loading