Facebook 的产品和服务是由机器学习驱动的。强大的 GPU 已成为关键推动因素之一,但它需要更多的硬件和软件来为数十亿用户提供服务。

在 Facebook 的 20 亿用户中,大多数人都不知道这项服务在多大程度上依赖人工智能来实现如此大规模的运营。Facebook 的产品,如新闻源、搜索和广告都使用机器学习,而在幕后,它为诸如面部识别和标签、语言翻译、语音识别、内容理解和异常检测等服务提供支持,以发现虚假账户和令人反感的内容。

数字是惊人的。总的来说,Facebook 的机器学习系统每天要处理超过 200 万亿次的预测和 50 亿次的翻译。Facebook 的算法每天都会自动删除数百万个虚假账户。

在今年的计算机架构国际研讨会(International Symposium on Computer Architecture,ISCA)上,Facebook 人工智能基础架构部门负责人 Kim Hazelwood 博士在一个主题演讲中解释了他们的服务是如何设计硬件和软件来处理如此规模的机器学习的。她还敦促硬件和软件架构师们不要光顾炒作,要为机器学习开发“全栈解决方案”。Hazelwood 表示:“重要的是,我们正在解决正确的问题,而不只是做其他人正在做的事情。”

Facebook 的人工智能基础架构需要处理各种各样的工作负载。有些模型可能需要几分钟的训练,而有些模型可能需要几天甚至几周的训练。例如,新闻源和广告使用的计算资源比其他算法多 100 倍。因此,只要有可能,Facebook 就会使用“传统的老式机器学习”,而且只有在绝对必要的时候才会采用深度学习——多层感知器 (MLP)、卷积神经网络 (CNN) 和递归神经网络 (RNN/LSTM)。

该公司的人工智能生态系统包括三个主要组成部分:基础架构、运行在顶层的工作流管理软件,以及 PyTorch 等核心机器学习框架。

自 2010 年以来,Facebook 一直在设计自己的数据中心和服务器。如今,它运营着 13 个大型数据中心,其中 10 个在美国,3 个在海外。并非所有这些数据中心都是相同的,因为它们是随着时间而建立起来的,并且它们不存储相同的数据,因为“最糟糕的事情是在每个数据中心中复制所有数据。”Hazelwood 说,尽管如此,公司每个季度都要“拔掉整个 Facebook 数据中心的插头”,以确保数据的连续性。数据中心的设计是为了用于处理峰值负载,这使得大约 50% 的机群在一天中的某些时间处于空闲状态,作为“自由计算”,可以用于机器学习。

Facebook 不使用单个服务器,而是在生产环境中,将数百个工作负载放入 buckets 中,并为每种类型设计定制服务器。数据存储在 Bryce Canyon 和 Lighting 存储服务器上,训练则在 Big Basin 服务器上,使用的是 Nvidia Tesla GPU,这些模型在 Twin Lakes 单至强服务器和 Tioga Pass 双至强服务器上运行。Facebook 继续对 Google 的 TPU 和微软的 BrainWave FPGA 等专用硬件进行评估,但 Hazelwood 认为,太多的投资集中在计算上,而对存储尤其是网络的投入不够,这与 Amdahl 定律相一致,可能会成为许多工作负载的瓶颈。她补充说,人工智能芯片初创公司没有把足够的精力放在软件上,这给机器学习工具和编译器留下了巨大的机遇。

AI 前线注:Amdahl 定律,是计算机系统设计的重要定量原理之一,于 1967 年由 IBM360 系列机的主要设计者 Amdahl 首先提出。该定律是指:系统中对某一部件采用更快执行方式所能获得的系统性能改进程度,取决于这种执行方式被使用的频率,或所占总执行时间的比例。Amdahl 定律实际上定义了采取增强(加速)某部分功能处理的措施后可获得的性能改进或执行时间的加速比。简单来说是通过更快的处理器来获得加速是由慢的系统组件所限制。

Facebook 自己的软件栈包括 FBLearn,这是一套针对机器学习管道不同部分的三种管理和部署工具。FBLearner Store 用于数据处理和特征提取,FBLearning Flow 用于管理训练中涉及的步骤,FBLearner Prediction 用于在生产中部署模型。我们的目标是解放 Facebook 的工程师,让他们更有效率,专注于算法设计。

Facebook 以前使用过两种机器学习框架:用于研究的 PyTorch 和用于生产的 Caffe。基于 Python 的 PyTorch 更容易使用,但 Caffe2 的性能更好。问题是,将模型从 PyTorch 移植到用于生产的 Caffe2 是一个耗时且麻烦的过程。Hazelwood 说,上个月,在 F8 开发者大会上,Facebook 宣布,现在使用 PyTorch 1.0,由于“在内部合并了它们”,这样你就能享受到 PyTorch 的外观,Caffe2 的性能。

这对于 ONNX(Open Neural Network Exchange)来说是合乎逻辑的第一步,这是由 Facebook、Microsoft 共同努力开发的一种开放格式,用于优化构建在不同框架中的深度学习模型,并在各种硬件上运行。我们面临的挑战是,目前市面上已经有很多框架了:Google TensorFlow、Microsoft Cognitive Toolkit、Apache MXNet(深受 Amazon 青睐)……这些模型需要在各种不同的平台上运行,如 Apple ML、Nvidia、Intel/Nervana 和 Qualcomm 的 Snapdragon Neural Engine 等。

在边缘设备上运行模型有很多很好的理由,但手机尤其具有挑战性。世界上许多地区仍然几乎没有移动网络,全球超过一半的地区使用的是 2012 年或更早的手机,他们使用各种硬件和软件。Hazelwood 说,目前的旗舰手机和中档手机的性能差异约为 10 倍。她说:“你不能假设你为之设计移动神经网络的每个人都在使用 iPhone X。”“在美国,这种情况非常反常。”Facebook 的 Caffe2 Go 框架旨在压缩模型以解决其中的一些问题。

深度学习时代已经到来,Hazelwood 说,有很多硬件和软件问题亟须解决。行业花费大量的时间和金钱建设更快的硅片,但她说,我们需要在应用 Proebsting 定律的软件上进行平等的投资,编译器的计算性能每 18 年只能翻一番,“请记住这一点,以便我们不会再遇到安腾的另一种情况,”Hazelwood 开玩笑地说,安腾是 Intel 未失效的 IA-64 架构。Hazelwood 说,真正的机遇是解决人们尚未致力构建具有平衡硬件和更好的软件、工具和编译器的端到端解决方案的问题。


©著作权归作者所有:来自51CTO博客作者mb5fdb0a1b25659的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. Java:下一个 COBOL?
  2. 与高清卡顿说拜拜 一招根治视频云顽疾
  3. 微软收购GitHub花的75亿美元,到底值不值?
  4. 搏击码农:一旦让我开始,我就不会停止!丨二叉树视频
  5. 《从0到1学习Flink》—— Flink Data transformation(转换)
  6. 《从0到1学习Flink》—— Flink 配置文件详解
  7. 《从0到1学习Flink》—— Data Source 介绍
  8. 《从0到1学习Flink》—— Data Sink 介绍
  9. 《从0到1学习Flink》—— 如何自定义 Data Source ?

随机推荐

  1. XML卷之实战锦囊(2):动态查询
  2. XML(5)序列化写入xml文件
  3. XML卷之实战锦囊(1):动态排序
  4. XML(4)XDocument和XmlDocument搜索指定的节
  5. dom4j 操作xml文件(全)
  6. XML(3)XDocument与XmlDocument递归读取xml
  7. 第17天 Android(安卓)Touch事件学习 4 获
  8. XML(2)通过XmlDocument与XDocument方式写入
  9. Linux Deploy:在Android上部署Linux
  10. 走近XML(1)