An open API service indexing awesome lists of open source software.

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

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.