论文题目:Paleo: A Performance Model for Deep Neural Networks
文章时间:2016年11月
会议/期刊:ICML 2017
作者背景: UCLA
笔记时间:2021年10月20日周三
论文地址:https://openreview.net/forum?id=SyVVJ85lg
引用:102+
看什么?
看他如何对性能建模,参考文献是那些
整个模型还是很粗糙的,误差也很大
Abstract
尽管现在很多工具包,但是如何更好的使用并行分布式计算设备来加速训练和部署是个问题。而且,现有的并行分布式系统效率在不同的网络架构和数据集上差异很大。在给定问题的情况下,如何快速探索深度学习系统的规模空间,我们引入了一个分析性的建模模型,叫做PALEO。我们注意到神经网络对训练和验证的计算需求是很明确的。抽取这些要求,将他们同软件硬件通讯策略映射到一个特定的点,PALEO可以高效且准确的建模一个假定的深度学习系统的scalibility 和性能。PALEO对网络架构,硬件,软件,通信模式,并行策略等都有很棒的鲁棒性。我们用最近很火的几个模型做了实验,比如CNN,NiN,Inception,AlexNet等。
2 背景和相关工作
DLT比较耗时,如何加速?
2.1 硬件加速
特殊硬件,比如GPU,还有一些定制遇见TPU等。PALEO考虑硬件特征作为输入(峰值FLOPS,网络带宽),并且自适应的修改输入参数。
2.2 软件加速
有一些特殊的库,比如cuda,cuDNN,一些高度优化的算法。PALEO对每层执行时间,动态选择可选择的最好的实现。
2.3 并行
两种并行方式,数据并行,模型并行。PALEO建模来两者
2.4 通信模式
Tree-Allreduce
Butterfly reduce等
本模型没用考虑混合通讯模式。本文只考虑在线性执行情况下结果一致的的分布式通讯模式。
3 PELAO
整体架构PELAO将整个执行时间划分为计算和日讯,分别估计。计算时间从网络架构input的大小,算法复杂性,网络层涉及的操作,硬件性能。通信时间的估计基于网络的计算依赖,硬件的带宽,并行的模式。一旦网络架构设计好了,PELAO建模需要的数据都准备好了,我们可以不执行程序来预测网络的执行时间。
3.1 计算建模
我们首先描述在淡季上的计算建模。神经网络中的计算可以被表示为DAG图
3.1.1 单个层
单层操作的时间 = 从上层获取input 的时间 + 本层计算的时间 + 将outputs写入本地内存
第一个,第三个由本地带宽(数据并行)和设备间通信带宽(模型并行)来计算,第二由 FLOPs速度来表示计算
3.1.2 神经网络建模
我们首先考虑简单的顺序结构,则网络的执行时间为所有layer的叠加。这个公式看起来有点不起眼,但是是所有工作的基础。
并行结构在DNN中不罕见,为了建模并行结构,我们在并行结构前面和后面都加了barrier。我用一个超级节点来代替并行节点,这样可以把复杂的网络模型简化成顺序结构。超级节点的执行时间是由上下限的。
3.1.3 每层操作
在DNN中,每层是计算密集的,所以有很多的优化工作。这一部分考虑两个部分,矩阵乘法和FFT。
一个卷基层是很好计算矩阵乘法的部分的。
另一种实现是基于FFT的
如何选择两种实现方法,使用预定义的基于离线的启发式方法,基于给定特点情况经验性选择合适的算法。
3.2 通讯建模
通讯时间 = 数据/带宽
PALEO考虑三种通讯模式
3.3 硬件峰值使用比例
目前为止,我们都假设DL框架完美的利用了硬件,所以我们可以假设我们的模型和DL框架是无关的。
然而现实中,不太可能。达到峰值计算能力,需要定制计算库,比如Intel 的MKL,ATLAS和cuDNN,即使是定制库也只能达到峰值计算的60%。在PALEO框架定义之外的计算比如作业调度,数据拷贝,还要降低效率。有时候这些低效率来自于易于编程或者学习平台的维护。
与其找出每个框架中不高效的地方,我们用一个小部分具有代表性的workloads在单个GPU上进行试跑,我们用这个数据来拟合平台计算效率PPP,高度优化的平台,这个PPP值可能是100%,额外开销大的框架效率可能只有50%。
实验结果如table4
4 实验结果
4.1 layer级别的预测结果
4.2 case study
不同的网络在不同的worker规模下需要跑多长时间的预测
cv的网络 NiN,Inception v3, AlexNet
4.3 在假设条件下
在不同的通信模式下,AlextNet和GNN的扩展性
5 结论
我们设计了一个模型,通过抽取神经网络的计算需求和网络架构,利用软件和硬件,来高效且准确的预测模型执行时间。
在[9]里试图为不同的神经网络结构,在特定的软硬件运行环境中,对其性能状况进行建模,从而指导具体的训练过程中的运行配置(需要几张卡,几个结点,预计的加速比,等等)。目前[9]在并行加速上只考虑到了data parallelism,未考虑model parallelism。在多机的通信模式下,也没有考虑比较复杂的异步通信或是bounded-delay通信。关于通信模式未考虑异步通信,我觉得可以理解,因为异步通信是一种有损的加速通信策略,计算吞吐率的上升是以收敛行为发生变化为前提的,而并行模式下只考虑了data parallelism就给人感觉还是覆盖不足。关于Data Parallelism下allreduce的不同实现,在[9]倒是考虑了一些,比如链式的allreduce、tree-based allreduce以及butterfly allreduce,对于更精细的一些allreduce策略,比如butterfly mixing[32],并没有加以考虑。
作者:杨军
链接:https://www.zhihu.com/question/52311422/answer/130135046
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
①文章处理什么问题?
用参数预测模型的运行时间
②之前的方法如何做这个问题?
没有提及相关工作
③之前的方法有什么缺点?
④本文用了什么思想来解决之前方法的缺陷?
⑤本文具体怎么做?
⑥本文方法的哪些模块可能有效?
⑦有什么借鉴的意义?
8 实验是怎么做的
网友评论