https://github.com/grayzing/green-gcn
Advanced O-RU sleep control using Graph Convolutional Deep Q Network + Distributed PER
https://github.com/grayzing/green-gcn
3gpp 5g deep-q-learning gnn graph-neural-network machine-learning reinforcement-learning simulation
Last synced: 12 days ago
JSON representation
Advanced O-RU sleep control using Graph Convolutional Deep Q Network + Distributed PER
- Host: GitHub
- URL: https://github.com/grayzing/green-gcn
- Owner: grayzing
- License: mit
- Created: 2025-09-16T21:04:31.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2026-05-29T00:38:59.000Z (27 days ago)
- Last Synced: 2026-05-29T02:22:59.039Z (27 days ago)
- Topics: 3gpp, 5g, deep-q-learning, gnn, graph-neural-network, machine-learning, reinforcement-learning, simulation
- Language: Python
- Homepage:
- Size: 41 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# GREEN-GCN Testbed
Open Radio Access Networks (O-RAN) significantly reduces operating costs, increases flexibility for network operators, and allow for more intelligent cellular networks. In the context of Ultra Dense Networks (UDNs), energy efficiency (EE) is a critical problem, especially due to the dense placement of Radio Units (O-RUs), which drives up energy costs for providers. O-RU sleep switching, where underutilized O-RUs are placed into sleep modes to conserve energy, is a practical and attractive solution. Hard-coded methods such as MILP solvers and heuristics struggle with the dynamic and asymmetrical traffic associated with UDNs. We propose GREEN-GCN: a deep reinforcement learning (DRL) approach to O-RU sleep switching, which leverages a graph convolutional network for intelligent advanced sleep mode (ASM) management of O-RUs. To train the model, we utilized Ape-X distributed prioritized experience replay, ensuring generalization of the model to different network scenarios, and reducing the training time required for convergence of the model.
## Artefact Evaluation
First clone the repo
```bash
git clone https://github.com/grayzing/rasmo.git
cd rasmo
```
Then install dependencies (after setting up whatever venv)
```bash
pip install -r requirements.txt
```
### Training
Change your hyperparameters in `hyperparameters.yaml`, then run
```bash
cd src
python3 distributed.py
```
unfortunately you can't read training logs in `/logs` in real-time, since they are `.h5.` To stop your training and read the training logs (which really only record mean loss per training pass), do a KeyboardInterrupt on the `distributed.py` training (usually Ctrl + C on UNIX-like systems), and then
```bash
cd ../logs
python3 plot_training.py
```
If you've been running the training for long enough, the updated Q model should've been saved anyway. So you can just spin the `distributed.py` back up as normal.
### Quirks/Bugs
**"CRITICAL ERROR in Learner Loop: high - low range exceeds valid bounds"**
This means that there is an NaN TD-error that was generated. If you were messing with the reward/state functions, that is why. Revert the reward/state functions and try again.