Paper Title: Offline Reinforcement Learning for Bandwidth Estimation in RTC Using a Fast Actor and Not-So-Furious Critic (🔗Link)
Submission for the 2nd Bandwidth Estimation Challenge at ACM MMSys 2024
Install the required Python packages
pip3 install -r requirements.txt
Download both testbed
(🔗Link) and emulated
(🔗Link) datasets from and put them into Data
folder
Split them into train
and test
folders. We used 98%
of the data for training and 2%
for testing.
Final structure should look like this:
|-- Data
| |-- emulated_dataset
| | |-- train
| | |-- test
| |-- testbed_dataset
| | |-- train
| | |-- test
To train the model, first run the train_critic.py
script to train the critic model.
Once the training for the critic
model is done, you can run the train_actor.py
script to train the actor
model.
To evaluate the model, run the evaluate.py
script.
This will evaluate the model on the test subset of emulated dataset and save the results in the figs
folder.
If you want to reproduce the figures in the paper, extract the call traces in the test-traces.zip
and change the line 18 (data_dir
) in eval.py
to point to this folder.
This will evaluate the model on these call traces and save the figures in the figs
folder.
You can find the visualization of the ONNX model using the Netron tool below:
If you use this code in your research, please cite our paper:
@inproceedings{FARC,
author = {Çetinkaya, Ekrem and Pehlivanoglu, Ahmet and Ayten, Ihsan U. and Yumakogullari, Basar and Ozgun, Mehmet E. and Erinc, Yigit K. and Deniz, Enes and Begen, Ali C.},
booktitle = {Proceedings of the 15th ACM Multimedia Systems Conference},
doi = {10.1145/3625468.3652184},
publisher = {Association for Computing Machinery},
series = {MMSys'24},
title = {{Offline Reinforcement Learning for Bandwidth Estimation in RTC Using a Fast Actor and Not-So-Furious Critic}},
url = {https://doi.org/10.1145/3625468.3652184},
year = {2024}
}