Pitree
Practical Implementation of ABR Algorithms Using Decision Trees (ACM MM 2019)
Install / Use
/learn @newtrip-project/PitreeREADME
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
mkdir results
mkdir tree
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.)
Simulation with Pensieve Simulator
python main.py -a pensieve -t fcc -q lin -d path/to/your/tree.pk -l
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.
Put the Decision Tree into HTML and Deploy with Apache
Currently, you may want to refer to this link for details. We will refactor this part soon.
Start a Server with Tornado
python server_tornado.py
Citation
@inproceedings{meng2019pitree,
author = {Meng, Zili and Chen, Jing and Guo, Yaning and Sun, Chen and Hu, Hongxin and Xu, Mingwei},
title = {PiTree: Practical Implementation of ABR Algorithms Using Decision Trees},
year = {2019},
url = {https://doi.org/10.1145/3343031.3350866},
booktitle = {Proceedings of the 27th ACM International Conference on Multimedia},
pages = {2431–2439},
series = {MM ’19}
}
Contact
For any questions, please post an issue or send an email to zilim@ieee.org.
Related Skills
node-connect
346.8kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
107.6kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
346.8kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
346.8kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
