新智元编译
作者:Kim Hazelwood et al.
编译:刘小芹
【新智元导读】近日 Facebook 研究团队公开一篇 HPCA 2018 论文,作者包括 Caffe 作者贾扬清等人,深度揭示了 Facebook 内部支持机器学习的硬件和软件基础架构。Facebook 的几乎所有的服务都广泛应用机器学习,其中计算机视觉只占资源需求的一小部分。此外,Facebook 依赖多种机器学习方法,包括但不限于神经网络。硬件方面,用CPU 做推理,CPU 和 GPU都用于训练,并且进行大规模分布式训练。
论文地址:https://research.fb.com/wp-content/uploads/2017/12/hpca-2018-facebook.pdf
机器学习是 Facebook 的许多重要产品和服务的核心。这篇文章描述了 Facebook 在全球范围里支持机器学习的硬件和软件基础架构。Facebook 的机器学习工作负载非常多样化:在实践中,不同的服务需要多种不同类型的模型。这种多样性对系统堆栈里的所有层都有影响。此外,在 Facebook 上存储的大部分数据都是通过机器学习流程传输的,这在向高性能分布式训练流交付数据方面提出了严峻的挑战。计算需求也很大,需要利用GPU和CPU平台进行训练,并将大量CPU容量用于实时推理。解决这些问题以及其他层出不穷的新挑战需要各方面的努力,包括机器学习算法、软件和硬件设计。
为20亿用户提供机器学习服务,Facebook如何处理计算和数据
截至2017年12月,Facebook 的用户已经超过20亿人。过去几年中,机器学习被应用于这个大规模的实际问题,形成了机器学习算法创新的良性循环,为模型提供了大量训练数据,并在高性能计算机体系结构的助力下取得进步。在 Facebook 上,机器学习提供了几乎所有用户体验方面的关键能力,包括News Feed,语音和文本翻译,照片和实时视频分类等。
Facebook 在这些服务中利用了各种各样的机器学习算法,包括支持向量机,梯度提升决策树和许多类型的神经网络。本文将描述在 Facebook 上支持机器学习的数据中心基础架构的几个重要方面。基础架构包括内部的“ML-as-a-Service”流,开源机器学习框架和分布式训练算法。从硬件角度来看,Facebook 利用大量的 CPU 和 GPU 平台来训练模型,以便在所需服务延迟时间内支持必要的训练频率。对于机器学习推理,Facebook 主要依靠 CPU 来处理所有神经网络排名服务的主要功能,例如 News Feed,这些服务占据了所有计算负载的大部分。
Facebook 通过机器学习流程将所有存储数据的很大一部分汇集起来,而且这个比例随着时间的推移不断增加,从而提高模型质量。机器学习服务所需的大量数据对 Facebook 数据中心的全球规模提出了挑战。有几种技术被用来高效地向模型提供数据,包括数据馈送和训练的解耦,数据/计算协同定位和网络优化。与此同时,Facebook 的规模也提供了独特的机会。在非高峰期间,日负载周期为分布式训练算法提供了大量可用的CPU。Facebook 的计算fleet遍布10个数据中心,规模也提供了灾难恢复能力。灾难恢复规划是很重要的,因为及时交付新的机器学习模型对于 Facebook 的运营非常重要。
展望未来,Facebook 预计在现有的功能以及新的服务上,机器学习都将快速增长。对于部署这些服务的基础架构的团队来说,这种增长意味着更多挑战。尽管在现有平台上优化基础架构有好处,但我们仍然在积极评估和创建新的硬件解决方案,同时保持算法创新。
关于 Facebook 的机器学习的主要见解:
机器学习在 Facebook 的几乎所有的服务中都有广泛应用,计算机视觉只占资源需求的一小部分。
Facebook依赖多种机器学习方法,包括但不限于神经网络。
大量数据都是通过机器学习流程传送,而这会在计算节点之外造成工程和效率方面的损失。
Facebook 目前在很大程度上依赖 CPU 做推理,CPU 和 GPU 都用于训练,但从性能功耗比的角度看,它不断对新的硬件解决方案进行原型设计和评估。
Facebook 的全球用户规模以及相应的日活动模式导致大量的机器可以用于机器学习任务,例如大规模分布式训练。
Facebook 上的机器学习
机器学习(ML)是指产品利用一系列输入来构建一个调优模型的实例,并利用该模型创建表示、预测或其他形式的有用信号。
图1表示了这个过程,由以下步骤组成,依次执行:
1)建立模型的训练阶段。这个阶段通常是离线执行的。
2)在生产中运行训练模型的推理阶段,并进行一个(一组)实时预测。这一阶段是在线执行的。
Facebook 上机器学习的一个显着特点是受到可能用于训练模型的海量数据的影响。这个数据的规模会产生很多英雄,涉及整个基础架构。
利用机器学习的主要服务:
Facebook 的大部分产品和服务都利用机器学习,包括:
News Feed:排名算法让用户每次访问 Facebook 时首先看到与他们最为相关的故事。
广告(Ads):利用ML来向用户定向显示广告。
搜索:在各种垂直领域提供专门的子搜索,例如视频、照片、人物、事件等等。
Sigma:一个通用的分类和异常检测框架,用于各种内部应用,包括站点完整性,垃圾邮件检测,支付,注册,未经授权的员工访问以及事件推荐。
Lumos:从图像及其内容中提取高级属性和嵌入,使算法能够自动理解图像。
Facer:是 Facebook 的面部检测和识别框架。
语言翻译:用于 Facebook 的内容国际化服务。
语音识别:是将音频流转换成文本的服务。
除了上面提到的主要产品之外,还有更多的长尾服务利用各种形式的机器学习。产品和服务的长尾数量达数百个。
机器学习模型
所有基于机器学习的服务都使用“特征”(或输入)来产生量化输出。在 Facebook 上使用的机器学习算法包括 Logistic回归(LR),支持向量机(SVM),梯度提升决策树(GBDT)和深度神经网络(DNN)。LR和SVM是用于训练和使用预测的有效方法。GBDT可以通过额外的计算资源来提高准确性。DNN是最具表现力的,可能提供最高的准确性,但是利用的资源也最多(至少比LR和SVM等线性模型需要的计算量多一个数量级)。这三种类型都对应具有越来越多的自由参数的模型,这些模型必须通过对有标签的输入样本预测精度进行优化来训练。
在深度神经网络中,有3个常用的类:多层感知器(MLP),卷积神经网络(CNN)和递归神经网络(RNN / LSTM)。MLP网络通常用于结构化输入特征(通常是排名),CNN作为空间处理器使用(通常用于图像处理),而RNN / LSTM网络是序列处理器(通常用于语言处理)。表1说明了这些ML模型类型和对应的产品/服务。
表1:利用机器学习算法的产品/服务
Facebook 里的 ML-as-a-Service
Facebook 有一些内部的平台和工具包,旨在简化产品中利用机器学习的任务。主要包括FBLearner,Caffe2 和 PyTorch。FBLearner 是三个工具的suit,每个工具都专注于机器学习流程的不同部分。FB Learner 利用内部作业调度程序在共享的 GPU 和 CPU 池上分配资源和调度作业,如图1所示。Facebook上的大多数ML训练都是通过FBLearner平台运行的。这些工具和平台一起工作,旨在提高ML工程师的效率,帮助他们专注于算法创新。
FBLearner Feature Store:Feature Store 本质上是一个可用于训练和实时预测的几个特征生成器的目录(catalog),它可以作为一个marketplace,多个团队可以使用它来共享和发现特征。
FBLearner Flow:是 Facebook 的机器学习平台,用于模型训练。
FBLearner Predictor:是 Facebook 的内部推理引擎,它使用在 Flow 中训练的模型来实时提供预测。
深度学习框架
对于深度学习,Facebook 使用两个截然不同但协同作用的框架:针对研究优化的 PyTorch,以及针对生产优化的 Caffe2。
Caffe2:是 Facebook 的内部生产框架,用于训练和部署大规模机器学习模型。Caffe2 专注于产品所需的几个关键特性:性能,跨平台支持,以及基本机器学习算法的覆盖范围,例如卷积神经网络(CNN),递归神经网络(RNN)和多层感知器(MLP)等,这些算法具有稀疏或密集的连接,高达数百亿的参数。Caffe2 的设计涉及模块化方法,在所有后端实现(CPU,GPU和加速器)之间共享统一的图形表示。独立的执行引擎为不同的图形执行需求提供服务,Caffe2 在不同的平台上引入第三方库(例如,cuDNN,MKL 和 Metal),以在不同平台上实现最佳运行时间。
PyTorch:是 Facebook 在AI研究领域的首选框架。它有一个前端,侧重于灵活性,debug和动态神经网络,以进行快速实验。
ONNX:全称Open Neural Network Exchange(开放神经网络交换格式),是一种以标准方式表示深度学习模型的格式,以实现跨不同框架的互操作性。
Facebook 上机器学习的硬件资源
(详细解析见论文原文)
图2:基于CPU的计算服务器
图3:Big Basin GPU服务器设计,包括一个3U机箱的8个GPU。
表2:用于各种工作负载的脱机训练使用的频率、持续时间和资源。
表3:在线推理工作负载的资源需求。
图4:2017年9月19日的24小时里,Facebook的所有fleet的日负荷。
结论
基于机器学习的工作负载越来越重要,其影响涵盖了系统堆栈的所有部分。对此,计算机体系结构界对如何最好地应对已经出现的挑战表现出越来越大的关注。虽然以前的工作围绕有效地处理ML训练和推理的必要计算而展开,但是考虑到在解决方案被大规模应用时出现的额外挑战,情况会改变。
在 Facebook,我们发现了几个关键因素,这些因素在我们的数据中心基础架构的设计过程中起决定性作用:数据与计算机协同定位的重要性,处理各种ML工作负载的重要性,不仅仅是计算机视觉, 以及由于日计算周期的闲置容量而产生的机会。我们在设计开源硬件的端到端解决方案时,考虑了上述每个因素,以及平衡性能和可用性的开源软件生态系统。这些解决方案为今天服务超过21亿人的大规模机器学习工作负载提供了强大的动力,同时也反映了机器学习算法和系统设计方面专家的跨学科努力。
论文下载:https://research.fb.com/wp-content/uploads/2017/12/hpca-2018-facebook.pdf
领取专属 10元无门槛券
私享最新 技术干货