本发明涉及深度学习技术领域;具体地,涉及一种利用辅助图测量深度学习模型中层计算时间的方法。
背景技术:
深度学习目前已经在诸如金融保险、安防监控等个行业得到了广泛应用。深度学习的核心方法是使用神经网络模型分析和描述数据的特征。相较于线性算法,深度学习往往需要更为庞大的数据训练方能取得准确的模型。训练一个神经网络模型往往需要数天或者数周的时间才能完成。对此,提前获知深度学习时间,并据此调度训练任务、合理分配资源,将可提高训练效率。
深度学习模型,通常包括多个层,而训练时间有主要由各层计算时间决定。虽然训练时间,也在一定程度上受到参数传输时间的影响。但是,较之计算时间,模型训练过程中的传输时间可通过模型数据流图中的参数规模及网络带宽等以较容易的方式获得,本发明不做过多讨论。
然而,对于深度学习模型中层计算时间的测量,根据现有技术来看,直接准确地测量层的计算时间是很困难的。这是由于模模型训练过程中存在着一些系统开销,如初始化、读取输入数据、计算损耗等,这些都会影响层计算时间的测量结果。
技术实现要素:
有鉴于此,本发明提供一种利用辅助图测量深度学习模型中层计算时间的方法。该方法通过引入辅助图,解决了直接测量层计算时间时存在的系统开销导致测量不准确的问题。
一方面,本发明提供一种用于测量深度学习模型中层的计算时间的辅助图。
上述的用于测量深度学习模型中层计算时间的辅助图,包括:
输入层、输出层,以及成对的pad层和slice层;
其中,pad层的输出即slice层的输入;
pad层和slice层中间可插入待测层构建新的图;在新图中,pad层的输出作为待测层的输入,待测层的输出作为slice层的输入;
pad层和slice层均为大小和形状可变化的层,能够灵活地改变其输入、输出规模以适应待测层。
可选地,前面述及的slice层为稳定的层,即其开销不会随输入、输出规模的改变而剧烈变化。
可选地,pad层能够接受很小规模的输入并输出很大规模的输出;
slice层能够接受很大规模的输入并输出很小规模的输出。
另一方面,本发明提供一种测量深度学习模型中层的计算时间的方法。
结合第一方面,上述的测量深度学习模型中层的计算时间的方法,包括:
构建第一方面述及的辅助图,记为g’;
将待测层插入到辅助图g’的pad层和slice层中间,构建新的图g”;
测量图g’、g”的执行时间tc(g’)、tc(g”),
将图g”、g’间的时间差作为待测层的计算时间tc,即tc=tc(g”)-tc(g’)。
可选地,在前面述及的图g’中,以待预测层的输入规模作为pad层的输出规模,也即slice层的输入规模。
可选地,在图g’、g”中,输入层的输出规模、输出层的输入规模均很小(相对于待测层的输入、输出规模),以减少对测量结果的影响。
可选地,在图g’、g”中,输入层、输出层的输入、输出规模均相同。
可选地,前面述及的待预测层为多个层的组合,根据前面述及的方法测量可获得其执行时间。
又一方面,本发明提供一种预测模型单轮迭代时间的方法。
结合第二方面,上述的预测模型单轮迭代时间的方法,包括:
解析获得模型中的层,
遍历各层,对任一的层,
若能根据历史日志中的相似层计算时间估算的,则估算其计算时间;
否则,根据第二方面述及的方法测量其计算时间;
同时,根据各层参数规模和传输速率计算其传输时间;
根据流水线策略累加上述各层的传输时间和计算时间,得到该模型的单轮迭代时间。
可选地,前面述及的历史日志中相似层的计算时间,也是通过第二方面述及的方法测量获得的。
本发明提供的技术方案,较之现有技术,具有诸多有益效果,包括:
误差小,测量更准确;
通过引入辅助图,对层计算时间的测量、以及进一步对整个轮迭代时间的预测,都能够避免系统开销(如初始化、读取输入数据、计算损耗等)干扰。
附图说明
为更加清楚地说明本发明实施例或现有技术中的技术方案,下面将对本发明中一部分实施例或现有技术描述中涉及的附图做简单介绍。
图1为本发明一实施例提供一种测量深度学习模型中层的计算时间方法的测量过程示意图;其中,图1(a)为空白的辅助图g’,图1(b)为图g’在插入待测层li后构建的新的图g”。
具体实施方式
下面结合本发明实施例的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
以下为本发明的一个优选实施例。
图1为本发明一实施例提供一种测量深度学习模型中层的计算时间方法的测量过程示意图;
如图1所示,图1(a)即为构建的空白的辅助图g’,
对应地,图1(b)即为将待测层li插入到图g’的pad层和slice层中间后构建的新图g”。其中,
辅助图g’中的slice层为稳定的层,即其开销不会随输入、输出规模的改变而剧烈变化;
在整个测量过程中(包括图中测量待测层li时),图g’、g”中,输入层的输出规模、输出层的输入规模均被设定为s,且被控制在远小于待测层的输入、输出规模的范围内,以减少对测量结果的影响;这里,pad层能够接受很小规模的输入并输出很大规模的输出;而slice层能够接受很大规模的输入并输出很小规模的输出。
在测量待测层li时,调整图g’中的pad层的输出规模,也即slice层的输入规模,将其调为待测层li的输入规模;
构建图g’、g”后,测量图g’、g”的执行时间tc(g’)、tc(g”),
求图g”、g’间的时间差,即获得了待测层li的计算时间tc(li),即tc(li)=tc(g”)-tc(g’)。
以上所述仅为本发明的具体实施方式,但本发明的保护范围并不局限于此。