当前位置:网站首页>MindSpore:【mindinsight】【Profiler】用execution_time推导出来的训练耗时远小于真实的耗时
MindSpore:【mindinsight】【Profiler】用execution_time推导出来的训练耗时远小于真实的耗时
2022-08-04 09:03:00 【小乐快乐】
问题描述:
【功能模块】
【mindinsight】【Profiler】
起因是,之前我们模型中最耗时的两个算子是transpose和confusion transpose d:
一个epoch需要979.7s:
我们进行优化,把transpose和confusion_transpose_d两个算子的耗时优化到可以忽略不计,优化后:
可以看到transpose和confusion_transpose_d两个算子的耗时已经可以忽略不计了,而其他算子的耗时没有明显改变。由于transpose和confusion_transpose_d在优化前的占比达到了91.95%,所以理论上一个epoch的时间应该会缩短到100s左右,但实际上优化后一个epoch仍然需要328s:
所以是否说明每个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的训练时间,都比真实的训练时间少了两百多秒。而在优化后,这两百多秒已经成为性能的最主要瓶颈。我们想知道其中的原因,以及如何进一步优化训练时间?
优化前:
优化后:
解决方案:
1、通过迭代轨迹看,迭代间隙有28ms左右,即每个step获取数据的时间。
2、迭代轨迹中,前反向耗时除了每个算子的耗时外,还要考虑每个算子的调度间隙,即算子间的空隙是不是比较大。
另外,看这个前反向耗时的变化趋势,会有一个周期性的变化,这个要确认下原因是什么导致的。周期性的保存CKPT文件?
边栏推荐
- 请你谈谈网站是如何进行访问的?【web领域面试题】
- C# DirectoryInfo类
- 华为od项目
- 【高并发基石】多线程、守护线程、线程安全、线程同步、互斥锁
- leetcode动态规划经典例题——53.最大子数组和
- 【云驻共创】HCSD 大咖直播–就业指南
- The separation configuration Libpq is supported, speaking, reading and writing
- 智汇华云 | 华云软件定义网络 DCI介绍
- Post-94 Byte P7 posted the salary slip: It's really good to make up for this...
- RL学习笔记(一)
猜你喜欢
Cloud function to achieve automatic website check-in configuration details [Web function/Nodejs/cookie]
No module named 'flask_misaka' has been resolved [BUG solution]
下午14:00面试,14:08低着头出来了 ,问的实在是太...
[Punctuality Atom STM32 Serial] Chapter 4 STM32 First Experience Excerpted from [Punctual Atom] MiniPro STM32H750 Development Guide_V1.1
【论文笔记】Understanding Long Programming Languages with Structure-Aware Sparse Attention
VRRP + MSTP configuration, huawei eNSP experiment 】 【
yolo x 跑起来,详细的不行,且内含800错误解决办法
.NET深入解析LINQ框架(五:IQueryable、IQueryProvider接口详解)
张朝阳对话俞敏洪:谈宇宙、谈焦虑、谈创业、谈退休、谈人生
OAK-FFC-4P全网首次测试
随机推荐
PD 源码分析- Checker: region 健康卫士
如何快速将Zabbix5.0升级至6.0?
yolo x 跑起来,详细的不行,且内含800错误解决办法
路由/三层交换机DHCP下发地址详解【华为eNSP】
王爽汇编语言第四章:第一个程序
Unity3D data encryption
94后字节P7晒出工资单:狠补了这个,真不错...
sync-diff-inspector 使用实践
今年37了,被大厂抢着要...
【论文笔记】Dynamic Convolution: Attention over Convolution Kernels
Apache Druid 实时分析数据库入门介绍
tcp连接的细节
async - await
从底层看 Redis 的五种数据类型
抬升市场投资情绪,若羽臣是否还需“自身硬”?
After four years of outsourcing, the autumn recruits finally landed
下午14:00面试,14:08低着头出来了 ,问的实在是太...
命里有时终须有--记与TiDB的一次次擦肩而过
Shared_preload_libraries cause many syntaxes not supported
户外徒步旅行