还未完成的。。。。。。
作者 Yanchen 毕业于普林斯顿大学机器学习方向,现就职于微软Redmond总部,从事大规模分布式机器学习和企业级AI研发工作。在该篇文章中,作者介绍了实时深度学习的推理加速和持续性训练。
引言
深度学习变革了许多计算机视觉和自然语言处理(NLP)领域内的任务,它为越来越多的消费者和工业产品提供更强大的智能,并潜在地影响了人们在日常经验和工业实践上的标准流程。从理论上来说,深度学习和其他基于统计机器学习方法的自动化系统十分类似,它们都可以采用两个过程描述。首先,深度神经网络(DNN)模型明确地指向为问题领域和可用数据而训练,通常训练会在 GPU 或高性能 CPU 集群上花费大约十多小时到几周的时间。然后它才能部署到产品环境中,并持续输入数据流且产生实时推理,而产生的输出会直接作为端结果或继续馈送到下游系统中。无论哪种方式,具有严格延迟要求的应用都需要进行轻量且快速的深度学习推理(如自动驾驶汽车或搜索引擎),通常每个样本数据需要在几十毫秒内响应。因此,相对于学术上关注于更快地训练,产业上往往更关注于更快地推理,推动更快的加速成为了很多硬件和软件解决方案的焦点和核心。
深度学习系统另外一个重要的方面就是需要处理输入和输出数据随时间的分布变化。像任何统计机器学习模型一样,深度神经网络的有效性极其依赖于假设输入和输出数据的分布并不会随时间地变化而产生明显的改变,从而最初学习到的复杂模型和模式可以在以后继续使用。然而,这类假设在现实中是很少成立的,特别是在信息安全等领域,快节奏潜在数据生成机制的变化属于常态(在信息安全案例中,攻击和防御参与双方都在不断调整策略而尽力胜过对手,因此它们都在挖掘对手的潜在漏洞)。因此随着使用深度学习能解决更多以前无法解决的问题,深度神经网络的持续性训练问题和如何在不损害产品质量前提下训练,就受到了机器学习服务提供商(Machine-Learning-as-a-Service /MLaaS)和大量应用程序架构师的关注。
在本报告中,我们将介绍深度神经网络推理加速和产品场景下的持续性训练近期的一些技术、趋势和研究。我们报告的目标并不是钻研几个具体的技术,而是对解决这两个问题的硬件和软件解决方案进行调查和概览。我们希望提供给读者继续研究的出发点,并希望能激发更多不同专业的人才参与到我们的讨论和知识的交流中。
推理加速
推理加速-硬件
DNN 训练和推理都是计算密集型过程,只不过方式完全不一样。训练需要很高的吞吐量,因此也通常在 GPU 上完成,因为 DNN 模型的训练通常会涉及大量的并行计算和简单的控制流与功耗效率。而将训练分为数百个输入数据为一批也很常见(如计算机视觉任务中的图像、NLP 任务中的语句序列和语音识别任务中的语谱图等),因此将每个批量作为一个单位执行前向传播和反向传播,这样可以通过多个 GPU 存储器分摊加载神经网络权重的成本。
对于推理来说,最重要的性能目标就是延迟。为了最小化网络的端到端响应时间,推理