深入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论文)

相关实践学习
基于阿里云DeepGPU实例,用AI画唯美国风少女
本实验基于阿里云DeepGPU实例,使用aiacctorch加速stable-diffusion-webui,用AI画唯美国风少女,可提升性能至高至原性能的2.6倍。
相关文章
|
1天前
|
机器学习/深度学习 监控 算法
LabVIEW使用机器学习分类模型探索基于技能课程的学习
LabVIEW使用机器学习分类模型探索基于技能课程的学习
|
1天前
|
机器学习/深度学习 数据采集
构建高效机器学习模型的最佳实践
【5月更文挑战第11天】 在数据驱动的时代背景下,机器学习已经成为企业与研究者解决复杂问题的重要工具。本文将探讨构建高效机器学习模型的关键步骤,包括数据预处理、特征工程、模型选择与调参、以及性能评估。我们将深入分析这些步骤的重要性,并提供实用的技巧和最佳实践,以助读者提高模型的预测能力与泛化性能。通过案例分析和经验总结,本文旨在为从业者提供一套系统的方法论,帮助他们在面对各种机器学习项目时能够更有效地设计和实现解决方案。
4 0
|
1天前
|
机器学习/深度学习 存储 算法
【机器学习】使用贝叶斯模型做分类时,可能会碰到什么问题?怎么解决?
【5月更文挑战第11天】【机器学习】使用贝叶斯模型做分类时,可能会碰到什么问题?怎么解决?
|
2天前
|
机器学习/深度学习
【机器学习】噪声数据对贝叶斯模型有什么样的影响?
【5月更文挑战第10天】【机器学习】噪声数据对贝叶斯模型有什么样的影响?
|
2天前
|
机器学习/深度学习 数据处理
【机器学习】生成式模型与判别式模型有什么区别?
【5月更文挑战第10天】【机器学习】生成式模型与判别式模型有什么区别?
|
2天前
|
机器学习/深度学习 人工智能 算法
高性价比发文典范——101种机器学习算法组合革新骨肉瘤预后模型
随着高通量测序技术的飞速发展和多组学分析的广泛应用,科研人员在探索生物学奥秘时经常遇到一个令人又爱又恼的问题:如何从浩如烟海的数据中挖掘出潜在的疾病关联靶点?又如何构建一个全面而有效的诊断或预后模型?只有通过优雅的数据挖掘、精致的结果展示、深入的讨论分析,并且辅以充分的湿实验验证,我们才能锻造出一篇兼具深度与广度的“干湿结合”佳作。
13 0
高性价比发文典范——101种机器学习算法组合革新骨肉瘤预后模型
|
2天前
|
机器学习/深度学习 数据采集 监控
构建高效机器学习模型的最佳实践
【5月更文挑战第10天】 在面对海量数据和复杂问题时,构建一个既高效又准确的机器学习模型显得至关重要。本文将探讨一系列实用的技术和策略,旨在帮助数据科学家和工程师优化他们的机器学习工作流程。从数据预处理到模型训练,再到最终的评估与部署,我们将深入讨论如何通过最佳实践提升模型性能,同时确保过程的可复现性和可扩展性。
|
2天前
|
机器学习/深度学习 数据采集 监控
构建高效机器学习模型的五大技巧
【5月更文挑战第10天】 在数据驱动的时代,机器学习模型的性能往往决定了一个项目的成败。本文将深入探讨如何通过五个关键步骤——数据预处理、特征工程、模型选择、超参数调优以及模型评估与部署,来构建一个高效的机器学习模型。我们将提供实用的技术细节和策略,帮助读者避免常见的陷阱,并提升模型的准确性和泛化能力。无论你是机器学习新手还是有经验的开发者,本文的技巧都将对你构建更健壮、高效的模型大有裨益。
|
4天前
|
机器学习/深度学习 算法 异构计算
构建高效机器学习模型的策略与实践
【5月更文挑战第8天】 随着数据科学领域的不断进步,机器学习(ML)已成为解决复杂问题的重要工具。然而,构建一个既高效又准确的ML模型并非易事。本文将详细探讨在设计和训练机器学习模型时可以采用的一系列策略,以优化其性能和效率。我们将讨论特征工程的重要性、选择合适的算法、调整参数以及评估模型的有效性。通过这些策略,读者将能够更好地理解如何提升模型的预测能力并避免常见的陷阱。
|
4天前
|
机器学习/深度学习 算法 数据挖掘
【机器学习】各大模型原理简介
【机器学习】各大模型原理简介

热门文章

最新文章