建议使用以下浏览器,以获得最佳体验。 IE 9.0+以上版本 Chrome 31+ 谷歌浏览器 Firefox 30+ 火狐浏览器
请选择 进入手机版 | 继续访问电脑版
设置昵称

在此一键设置昵称,即可参与社区互动!

确定
我再想想
选择版块
直达楼层
标签
您还可以添加5个标签
  • 没有搜索到和“关键字”相关的标签
  • 云产品
  • 解决方案
  • 技术领域
  • 通用技术
  • 平台功能
取消

采纳成功

您已采纳当前回复为最佳回复

DrDr

发帖: 6粉丝: 0

发消息 + 关注

发表于2021年04月06日 21:51:49 82 4
直达本楼层的链接
楼主
显示全部楼层
[问题求助] 【mindinsight】【Profiler】用execution_time推导出来的训练耗时远小于真实的耗时

【功能模块】

【mindinsight】【Profiler】


起因是,之前我们模型中最耗时的两个算子是transpose和confusion transpose d:

image.png

一个epoch需要979.7s:

image.png


我们进行优化,把transpose和confusion_transpose_d两个算子的耗时优化到可以忽略不计,优化后:

image.png

可以看到transpose和confusion_transpose_d两个算子的耗时已经可以忽略不计了,而其他算子的耗时没有明显改变。由于transpose和confusion_transpose_d在优化前的占比达到了91.95%,所以理论上一个epoch的时间应该会缩短到100s左右,但实际上优化后一个epoch仍然需要328s:

image.png

所以是否说明每个epoch有228s左右的时间没有被统计到算子的execution_time中?


我们进一步算了一下:

一个epoch是1562个step。由于开启了dataset_sink_mode,更新频率是71,所以execution_time应该是每71个step的总时间?。


优化前:用ConfusionTransposeD算子的耗时计算一个epoch的耗时:execution_time / percent * (1562 / 71) = 22458 / 0.6666 * (1562 / 71) = 741188.119ms ≈ 741s

而实际一个epoch耗时979s,所以有238s的差距


优化后:用BatchMatMul算子的耗时计算一个epoch的耗时:execution_time / percent * (1562 / 71) = 2170 / 0.8015 * (1562 / 71) = 59563.3188ms 60s

而实际一个epoch耗时328s,所以有268s的差距


也就是说,优化前后,用execution_time推导出来的一个epoch的训练时间,都比真实的训练时间少了两百多秒。而在优化后,这两百多秒已经成为性能的最主要瓶颈。我们想知道其中的原因,以及如何进一步优化训练时间?


举报
分享

分享文章到朋友圈

分享文章到微博

采纳成功

您已采纳当前回复为最佳回复

chengxiaoli

发帖: 154粉丝: 27

级别 : 版主,版块专家

发消息 + 关注

发表于2021年04月06日 23:55:18
直达本楼层的链接
沙发
显示全部楼层

您好,感谢您的使用,问题已经收到,会尽快给您解答

点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

欧功畅

发帖: 0粉丝: 0

发消息 + 关注

发表于2021年04月07日 09:14:10
直达本楼层的链接
板凳
显示全部楼层
您好,能否提供性能分析首页的截图,看看“迭代轨迹”的图
评论
DrDr 2021-4-7 09:47 评论

已发,见后面的回帖

... 查看全部
点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

DrDr

发帖: 6粉丝: 0

发消息 + 关注

发表于2021年04月07日 09:46:34
直达本楼层的链接
地板
显示全部楼层

优化前:

image.png

image.png

优化后:

image.png

image.png

点赞 评论 引用 举报

采纳成功

您已采纳当前回复为最佳回复

ttandqq

发帖: 0粉丝: 0

发消息 + 关注

更新于2021年04月07日 10:57:09
直达本楼层的链接
5#
显示全部楼层

1、通过迭代轨迹看,迭代间隙有28ms左右,即每个step获取数据的时间。

2、迭代轨迹中,前反向耗时除了每个算子的耗时外,还要考虑每个算子的调度间隙,即算子间的空隙是不是比较大。

另外,看这个前反向耗时的变化趋势,会有一个周期性的变化,这个要确认下原因是什么导致的。周期性的保存CKPT文件?

截图.PNG

 


评论
DrDr 2021-4-8 09:26 评论

非常感谢,很有帮助!我们发现周期性的变化是因为我们用的优化器的特点,每71个step会有一个step是二阶优化,速度慢很多。我们后来多次实验发现profiler中展示的execution_time仅包含二阶优化的step(具体原因还不清楚)。所以我们之前用execution_time反推训练时间的时候,推出来的时间没有把一阶优化的step算进去,所以少了两百多秒。

... 查看全部
点赞 评论 引用 举报

游客

富文本
Markdown
您需要登录后才可以回帖 登录 | 立即注册

邀请回答
您可以邀请3位专家

结贴

您对问题的回复是否满意?
满意度
非常满意 满意 一般 不满意
我要反馈
0/200