![e8c485345f8aab18db63c3028622853e.png](https://i-blog.csdnimg.cn/blog_migrate/4e144ded4c2cd8480ceba6f37d291e03.jpeg)
为了加速这个搜索过程,该论文同时提出了一个新的深度学习引擎——FlexFlow。 与目前最先进的方法相比,FlexFlow 能够将训练吞吐量提高 3.3 倍并且可以达到更高的精度。 作者还比较了 FlexFlow 和 TensorFlow 在 Inception-V3 上进行端到端训练时的性能, FlexFlow 比 TensorFlow 减少了 38% 的训练时间。我们对该方法做了梳理与总结,本文是 AI 前线第 82 篇论文导读。 更多优质内容请关注微信公众号“AI 前线”(ID:ai-front) 1 背景介绍
随着深度学方法的发展,DNN 模型变得越来越大,这导致了 DNN 的计算成本也变得越来越高。因此,对于 DNN 的实际应用,分布式异构 DNN 训练集群成为了标准化的做法。尽管深度学习模型以及硬件集群变得越来越复杂,但是用于并行化训练的框架(例如,TensorFlow、Caffe2 以及 MXNet)却仅用了一些简单的并行化方法,并且其优化结果往往并不是最理想的。
最常用的神经网络并行化可分为数据并行和模型并行。数据并行的基本思想是使用多个设备上的模型副本同时对数据子集进行训练,并在迭代结束时同步跨副本的模型参数。数据并行对于计算密集型且参数量少的运算具有高效性,例如卷积操作。但对于参数量大的运算操作则不能得到最优的结果,例如嵌入操作。而模型并行则是让分布式系统种不同的设备负责网络模型的不同部分,例如将卷积操作分给一部分 GPU 而嵌入操作分给另一部分 GPU 或 CPU 设备。
图 1:左半部分为模型并行,不同的机器负责模型中的不同运算模块;右图为数据并行,在不同的设备上创建了完整的模型副本对数据子集进行处理。
去年的 PMLR 上,这篇论文的作者 Zhihao Jia 就提出了一种基于线性计算图的 CNN 逐层并行化方法——OptCNN(相关文献:https://arxiv.org/pdf/1802.04924.pdf)。OptCNN 使用动态编程的方法联合优化每种运算,但是没有考虑不同运算之间的并行性。此外,OptCNN 不适用于大部分的语言模型,包括针对机器翻译、推荐系统等趋向于 RNN 或其他非线性的深度神经网络。
针对上述问题,SOAP 从扩展搜索空间和模拟运行两方面出发,与现有的 Metropolitan-Hastings 马尔可夫蒙特卡洛方法(MCMC)相结合寻找模型在并行系统下的最优解。其中,作者通过扩展可行解集合的方法将模型的最优化搜索空间扩展为 SOAP 搜索空间,以期在更多可能的潜在并行策略中寻找最优的一种情况。此外,使用 FlexFlow 构建的执行模拟器(execution simulator)可以在 S