timeline工具简介
本地使用
- 在训练的主循环外加上
profiler.start_profiler(…)
和profiler.stop_profiler(…)
。运行之后,代码会在/tmp/profile
目录下生成一个profile的记录文件。
提示:请不要在timeline记录信息时运行太多次迭代,因为timeline中的记录数量和迭代次数是成正比的。
- for pass_id in range(pass_num):
- for batch_id, data in enumerate(train_reader()):
- if pass_id == 0 and batch_id == 5:
- profiler.start_profiler("All")
- elif pass_id == 0 and batch_id == 10:
- profiler.stop_profiler("total", "/tmp/profile")
- exe.run(fluid.default_main_program(),
- feed=feeder.feed(data),
- fetch_list=[])
- ...
- 运行
python paddle/tools/timeline.py
来处理/tmp/profile
,这个程序默认会生成一个/tmp/timeline
文件,你也可以用命令行参数来修改这个路径,请参考timeline.py。
- python Paddle/tools/timeline.py --profile_path=/tmp/profile --timeline_path=timeline
- 打开chrome浏览器,访问,用
load
按钮来加载生成的timeline
文件。
- 结果如下图所示,可以放到来查看timetime的细节信息。
分布式使用
一般来说,分布式的训练程序都会有两种程序:pserver和trainer。我们提供了把pserver和trainer的profile日志用timeline来显示的方式。
trainer打开方式与本地使用部分的第1步相同
pserver可以通过加两个环境变量打开profile,例如:
- FLAGS_rpc_server_profile_period=10 FLAGS_rpc_server_profile_path=./tmp/pserver python train.py
- 把pserver和trainer的profile文件生成一个timeline文件,例如:
- python /paddle/tools/timeline.py
- --profile_path trainer0=local_profile_10_pass0_0,trainer1=local_profile_10_pass0_1,pserver0=./pserver_0,pserver1=./pserver_1
- --timeline_path ./dist.timeline
- 在chrome中加载dist.timeline文件,方法和本地使用第4步相同。