转载自博客
- 1
- 2
3、py virtual display安装0.2.1版本
sudo pip install pyvirtualdisplay==0.2.1
- 1
4、google-chrome游览器安装54.0.2840.90稳定版,可访问google-chrome-stable下载
chromedriver使用默认的 pensieve-master/abr_browser_dir/chromedriver-2.27.440175版
5、tensorflow安装1.1.0版本
sudo pip install tensorflow==1.1.0
- 1
6、tflearn安装0.3.1版本
sudo pip install tflearn==0.3.1
- 1
修改后的setup.py文件参见:
执行过程
-
模型训练
(1) 将训练数据放在sim/cooked_trace
中,测试数据放在sim/cooked_test_trace
中(需要创建文件夹)。
(2) 运行python get_video_sizes.py
,得到 video_size
(3) 运行python multi_agent.py
,训练模型。训练后的模型将保存在sim/results/
中。 -
数值仿真
(1) 将测试数据放入test/cooked_trace
中(需要创建文件夹)。
(2) 运行python get_video_sizes.py
(3) 将训练好的RL模型(sim/results/
文件夹中)复制到test/models/
中。
(4) 在test/rl_no_training.py
中,修改NN_MODEL = './model/pretrain_linear_reward.ckpt'
(5) 运行python rl_no_training.py
,进行测试。测试结果将被保存在test/results/
中。
(6) 类似地,可测试 bb.py,mpc.py 以及 dp. py (dp.py没有log输出,和dp.cc完全相同,可以用g++编译运行)。测试结果将被保存在test/results/
中。
(7) 修改plot_results.py
中的SCHEMES
,画出结果图,在接下来的实验中可通用。
注:数据包在“测试数据集”文件夹中。 -
mahimahi网络仿真
(1) 轨迹存放在cooked_trace/
(在Pensieve主目录中)。
(2) 将训练好的RL模型保存在rl_server/results/
中。
(3) 在rl_server/rl_no_training.py
中,修改NN_MODEL同数值仿真
(4) 在run_exp/
中运行python run_all_traces.py
开始实验。结果将保存在run_exp/results
文件夹中
注:数据包在“Mahimahi数据集”文件夹中。 -
实际平台测试
(1) setup.py初始化apache服务器并自动将视频数据放置在/var/www/html
中。
(2) 将训练好的RL模型保存在rl_server/results/
中。
(3) 在rl_server/rl_no_training.py
中,修改NN_MODEL同数值仿真。
(4) 修改real_exp/run_video.py
中的url为服务器url,本机实验使用localhost
。
(5) 在real_exp/
中运行python run_exp.py
开始实验。结果将保存在real_exp/results
文件夹中。
bug修改
-
test/dp.py
中 14行 数组越界:TOTAL_VIDEO_CHUNCK = 65
改为TOTAL_VIDEO_CHUNCK = 49
。 -
test/rl_no_training.py
中 86行函数输出不匹配:video_chunk_size, next_video_chunk_sizes, \
原来缺少next_video_chunk_sizes
。 -
real_exp/run_video.py
和run_exp/run_video.py
中:(1) 程序无法退出死循环:退出条件
return/print 'done'
修改为return/print True
,相应修改run_exp.py
和run_traces.py
中循环break的退出条件if out:
。(2)使用pyvirtualdisplay时执行
display = Display(visible=0, size=(800,600))
报url错误:注释~/.local/lib/python2.7/site-packages/pyvirtualdisplay/display.py
中:
# TODO: check only once
# cls.check_installed()
- 1
- 2
(3) chrome报错(找了很久的问题,目前还是不太清楚为什么,只有解决办法),报错如下:
Message: u'timeout: cannot determine loading status\nfrom timeout: Timed out receiving message from renderer: -0.030\n
(Session info: chrome=54.0.2840.90)\n (Driver info: chromedriver=2.27.440175(9bc1d90b8bfa4dd181fbbf769a5eb5e575574320),platform=Linux 4.15.0-142-generic x86_64)'
- 1
- 2
解决方法是注释掉option:
chrome_driver = '../abr_browser_dir/chromedriver'
#options.add_argument('--user-data-dir=' + chrome_user_dir)
#options.add_argument('--ignore-certificate-errors')
driver=webdriver.Chrome(chrome_driver, chrome_options=options)
- 1
- 2
- 3
- 4
代码解读
- 强化学习A3C算法解读
- 基本框架dash.js
- selenium+pyvirtualdisplay+chrome 模拟视频播放过程
- mahimahi网络仿真
未完待续~