深入Facebook机器学习部门:服务、模型、框架和硬件(贾扬清等HPCA论文)

简介: 近日 Facebook 研究团队公开一篇 HPCA 2018 论文,作者包括 Caffe 作者贾扬清等人,深度揭示了 Facebook 内部支持机器学习的硬件和软件基础架构。Facebook 的几乎所有的服务都广泛应用机器学习,其中计算机视觉只占资源需求的一小部分。

092e8e6bb585cabd4069d24bb94ea46acf9cca29

机器学习是 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)是指产品利用一系列输入来构建一个调优模型的实例,并利用该模型创建表示、预测或其他形式的有用信号。

05f169f1497892cad417053ba77b5434d2d1e682

图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模型类型和对应的产品/服务。

1a7227fa83453bc5f7186b2f72d3eacd806f2d06

表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 上机器学习的硬件资源


(详细解析见论文原文)

20955338b089bca4bfca194094c78aa949081a14

图2:基于CPU的计算服务器

fe36fae6cbd1cff2e6900fb74cf4fdbd092e40e5

图3:Big Basin GPU服务器设计,包括一个3U机箱的8个GPU。

1e29d750cf8eab755f409031ff435793a48fa8e1

表2:用于各种工作负载的脱机训练使用的频率、持续时间和资源。

e6bd8f896c8eb2a92b53f3dd8110d07cf52fc8f4

表3:在线推理工作负载的资源需求。

4541ab33b390ce23aa1b48c391afdae37c3a266e

图4:2017年9月19日的24小时里,Facebook的所有fleet的日负荷。

结论

基于机器学习的工作负载越来越重要,其影响涵盖了系统堆栈的所有部分。对此,计算机体系结构界对如何最好地应对已经出现的挑战表现出越来越大的关注。虽然以前的工作围绕有效地处理ML训练和推理的必要计算而展开,但是考虑到在解决方案被大规模应用时出现的额外挑战,情况会改变。

在 Facebook,我们发现了几个关键因素,这些因素在我们的数据中心基础架构的设计过程中起决定性作用:数据与计算机协同定位的重要性,处理各种ML工作负载的重要性,不仅仅是计算机视觉, 以及由于日计算周期的闲置容量而产生的机会。我们在设计开源硬件的端到端解决方案时,考虑了上述每个因素,以及平衡性能和可用性的开源软件生态系统。这些解决方案为今天服务超过21亿人的大规模机器学习工作负载提供了强大的动力,同时也反映了机器学习算法和系统设计方面专家的跨学科努力。


原文发布时间为:2017-12-19

本文作者:刘小芹

本文来自云栖社区合作伙伴新智元,了解相关信息可以关注“AI_era”微信公众号

原文链接:深入Facebook机器学习部门:服务、模型、框架和硬件(贾扬清等HPCA论文)

相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
相关文章
|
11天前
|
机器学习/深度学习 人工智能 算法
探索机器学习中的线性回归模型
本文深入探讨了机器学习中广泛使用的线性回归模型,从其基本概念和数学原理出发,逐步引导读者理解模型的构建、训练及评估过程。通过实例分析与代码演示,本文旨在为初学者提供一个清晰的学习路径,帮助他们在实践中更好地应用线性回归模型解决实际问题。
|
20天前
|
机器学习/深度学习 数据采集 监控
如何使用机器学习模型来自动化评估数据质量?
如何使用机器学习模型来自动化评估数据质量?
|
17天前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
54 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
21天前
|
机器学习/深度学习 算法 PyTorch
用Python实现简单机器学习模型:以鸢尾花数据集为例
用Python实现简单机器学习模型:以鸢尾花数据集为例
48 1
|
28天前
|
机器学习/深度学习 人工智能 自然语言处理
【EMNLP2024】阿里云人工智能平台 PAI 多篇论文入选 EMNLP2024
阿里云人工智能平台 PAI 的多篇论文在 EMNLP2024 上入选。论文成果是阿里云与华南理工大学金连文教授团队、复旦大学王鹏教授团队共同研发。EMNLP 是人工智能自然语言处理领域的顶级国际会议,聚焦于自然语言处理技术在各个应用场景的学术研究,尤其重视自然语言处理的实证研究。该会议曾推动了预训练语言模型、文本挖掘、对话系统、机器翻译等自然语言处理领域的核心创新,在学术和工业界都有巨大的影响力。此次入选标志着阿里云人工智能平台 PAI 在自然语言处理和多模态算法能力方面研究获得了学术界认可。
|
1月前
|
机器学习/深度学习 数据采集 Python
从零到一:手把手教你完成机器学习项目,从数据预处理到模型部署全攻略
【10月更文挑战第25天】本文通过一个预测房价的案例,详细介绍了从数据预处理到模型部署的完整机器学习项目流程。涵盖数据清洗、特征选择与工程、模型训练与调优、以及使用Flask进行模型部署的步骤,帮助读者掌握机器学习的最佳实践。
77 1
|
1月前
|
机器学习/深度学习 数据采集 监控
如何使用机器学习模型来自动化评估数据质量?
如何使用机器学习模型来自动化评估数据质量?
|
15天前
|
机器学习/深度学习 自然语言处理 语音技术
探索机器学习中的深度学习模型:原理与应用
探索机器学习中的深度学习模型:原理与应用
29 0
|
2月前
|
人工智能 算法 测试技术
PAI 大语言模型评测平台现已支持裁判员模型评测
本文将为您介绍如何在 PAI 大语言模型评测平台,基于裁判员模型,评价开源模型或者微调后模型的性能。该功能限时免费,欢迎使用。
|
26天前
|
机器学习/深度学习 算法
探索机器学习模型的可解释性
【10月更文挑战第29天】在机器学习领域,一个关键议题是模型的可解释性。本文将通过简单易懂的语言和实例,探讨如何理解和评估机器学习模型的决策过程。我们将从基础概念入手,逐步深入到更复杂的技术手段,旨在为非专业人士提供一扇洞悉机器学习黑箱的窗口。