Pensieve is a system that generates adaptive bitrate algorithms using reinforcement learning. http://web.mit.edu/pensieve/
- Install prerequisites (tested with Ubuntu 16.04, Tensorflow v1.1.0, TFLearn v0.3.1 and Selenium v2.39.0)
python setup.py
- To train a new model, put training data in
sim/cooked_tracesand testing data insim/cooked_test_traces, then insim/runpython get_video_sizes.pyand then run
python multi_agent.py
The reward signal and meta-setting of video can be modified in multi_agent.py and env.py. More details can be found in sim/README.md.
- To test the trained model in simulated environment, first copy over the model to
test/modelsand modify theNN_MODELfield oftest/rl_no_training.py, and then intest/runpython get_video_sizes.pyand then run
python rl_no_training.py
Similar testing can be performed for buffer-based approach (bb.py), mpc (mpc.py) and offline-optimal (dp.cc) in simulations. More details can be found in test/README.md.
- To run experiments over mahimahi emulated network, first copy over the trained model to
rl_server/resultsand modify theNN_MODELfiled ofrl_server/rl_server_no_training.py, and then inrun_exp/run
python run_all_traces.py
This script will run all schemes (buffer-based, rate-based, Festive, BOLA, fastMPC, robustMPC and Pensieve) over all network traces stored in cooked_traces/. The results will be saved to run_exp/results folder. More details can be found in run_exp/README.md.
- To run real-world experiments, first setup a server (
setup.pyautomatically installs an apache server and put needed files in/var/www/html). Then, copy over the trained model torl_server/resultsand modify theNN_MODELfiled ofrl_server/rl_server_no_training.py. Next, modify theurlfield inreal_exp/run_video.pyto the server url. Finally, inreal_exp/run
python run_exp.py
The results will be saved to real_exp/results folder. More details can be found in real_exp/README.md.