Skip to content
No description, website, or topics provided.
Python
Branch: master
Clone or download
Latest commit 33b9aa2 Oct 21, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
video Finished faithfulness and deployment efforts experiments Mar 21, 2019
.gitignore
README.md
__init__.py
a3c.py
a3c_hotdash.py
fixed_env.py Finished faithfulness and deployment efforts experiments Mar 21, 2019
fixed_env_cascaded_rl.py Finish all experiments except concurrency and page-size Mar 25, 2019
fixed_env_hotdash.py Finished faithfulness and deployment efforts experiments Mar 21, 2019
get_chunk_size.py
get_reward.py
hotdadt.py
hotdash.py
learn_dt.py
load_trace.py
main.py
models.zip
pensiedt.py
pensieve.py
requirements.txt
robustmdt.py
robustmpc.py from 171 Mar 25, 2019
server.py
server_tornado.py Final version. Jul 14, 2019
traces.zip

README.md

PiTree

PiTree is a conversion tool to automatically and faithfully convert complex adaptive bitrate algorithms into lightweight decision trees. This repository is the official release of the following paper:

Zili Meng, Jing Chen, Yaning Guo, Chen Sun, Hongxin Hu, Mingwei Xu. PiTree: Practical Implementations of ABR Algorithms Using Decision Trees. In Proceedings of ACM Multimedia 2019.

For more information, please refer to https://transys.io/pitree.

Prerequisites

Tested with Python 3.7.4:

pip install -r requirements.txt
unzip traces.zip
unzip models.zip

Converting Decision Trees

Pre-built ABR Algorithms: RobustMPC, Pensieve, and HotDASH

python learn_dt.py -a pensieve -t fcc -i 500 -n 100 -q lin
Parameter Candidates Explanation
-a {robustmpc, pensieve, hotdash} The ABR algorithm to convert.
-i Integer (default=500) Number of iterations during training.
-n Integer (default=100) Number of leaf nodes.
-q {lin, log, hd} QoE metrics.
-t {fcc, norway, oboe} Trained traces.
-v {0,1} Visualized the output decision tree.
-w Integer (default=1) Degree of parallelism of teacher.predict().

The converted decision tree could be found at tree/, in the pickle format.

Add Your Own ABR Algorithms

If you want to test your own ABR algorithms with PiTree, you could

  • Expose the predict function of your methods in the format of $a=f(s)$.
  • Put your model into models/ (if any).
  • Add your methods into the interfaces defined in learn_dt.py.

(We will refactor the codes soon in a more user-friendly way and will update the repo soon.)

Emulation with Mahimahi

python main.py -a pensieve -t fcc -q lin -d
Parameter Candidates Explanation
-a {robustmpc, pensieve, hotdash} The ABR algorithm to convert.
-d {0,1} Predict with the decision tree (1) or the original model (0).
-l {0,1} Log the states and bitrates.
-q {lin, log, hd} QoE metrics.
-t {fcc, norway, oboe} Trained traces.

Start a Server with Tornado

python server_tornado.py

Contact

For any questions, please post an issue or send an email to zilim@ieee.org.

You can’t perform that action at this time.