摘要
支持机器学习的软件和硬件结构。
挑战:传送数据给高性能分布式训练flow。大量计算
1.Introduction
本文介绍了支持机器学习Facebook的数据中心基础架构的几个重要方面。 基础设施包括内部的“ML-as a -Service” flow,开源机器学习框架和分布式训练算法。硬件采用CPU和GPU集群。
massive amount of data for ML. 给模型送数据的技术包括:decouple of data feed and training, data/compute co-location, networking optimizations。Diurnal load cycles 留下大量CPU 在off-peak时期给分布式训练算法。Disaster recovery planning
contirbution:
1.ML 应用于几乎所有services,CV代表资源需要的小部分
2.Facebook依赖于不止神经网络的大量ML方法
3.大量数据通过ML pipeline。创造超出计算节点的挑战
4.CPU推理,CPU/GPU训练
5.分布式学习
2.machine learning at facebook
在这里插入图片描述
training phase: offline
inference phase: online
A.major services leveraging ML
news feed ranking algorithms:实现当登录Facebook时首先看到对他们最重要的事情。
Ads:给用户定点投放广告
search:垂直搜索
sigma:内部程序的一般分类和异常检测框架
Lumos:从图片中提取高级属性和embedding
facer:人脸检测和识别框架
language translation:
speech recognition:语音转文字
B.ML MODELS
Logistic regression(LR), SVM, GBDT, DNN
LR和SVM高效训练和预测。
GBDT需要额外计算资源增加准确性。
DNN需要资源最多,最准确。
C.ML as a service inside facebook
FBLearner feature store:收集特征
FBLearner flow:模型训练平台
FBLearner predictor:实时推理
D.deep learning framework
caffe2
pytorch
ONNX:将pytorch转换到caffe2
3.resource implication of machine learning
A.总结Facebook硬件资源
Big basin gpu服务器用于训练网络
B.线下训练资源实现
compute type and locality
GPU训练:Lumos, speech recoginition, language translation
CPU训练:news feed, sigma
both训练:facer, search
GPU现在离线训练,大量训练数据使得gpu需要放在接近被访问数据的生产环境中,数据源的位置重要。
Memory, storage and network:
用户增多数据量增加,增加数据访问的网络带宽,需要local/nearby storage,避免远距离大批量数据传输,避免因为等待额外的数据训练停顿。
Scaling Considerations and Distributed Training:
分布式训练增加训练的模型和数据的并行性,Ethernet-based networking提供近乎线性的拓展能力,拓展能力取决于带宽和模型大小。梯度更新在模型之间相互共享,实现tradeofff在synchronization(所有复制品模型状态相同), consistency(每个模型正确更新), performance(线性拓展)
大模型采用模型并行进行训练,模型各层分布,可能会造成模型端到端的延时,下降模型精度。
C.resource implications of online inference
线上模型推理,用Ads ranking model举例子,尽量从2CPU转移到1CPU上,有的甚至放在mobile device上,增加了latency,减少了communication cost。
不同产品对latency要求不同
4.machine learning at datacenter scale
考虑数据需要和容灾能力
A getting data to the models
问题:TB级别的数据,需要复杂的预处理保证数据干净和归一化,因此需要大量storage, network, CPU。
解决方案:
-
data workload (reader)和training workload(trainer)需求不同,分开
-
network usage. 优化compression, scheduling algorithms, data/compute palcement
B.levraging scale
Off-peak hours采用heterogeneous资源进行分布式训练机制
问题:1. scheduler平衡异构硬件负载,以便主机不需要等待同步
-
多台主机训练,scheduler必须考虑到网络topology和synchronization cost
-
算法需要提供check-pointing ,以便停止和重启训练。
C.disaster recovery
what happens :engineer efficiency降低,需要快速更新模型的产品受到影响
communitu integrity: offensive content detection
news feed: 现在CPU/GPU上offline train, then continuous online training on CPU
Ads:
Infrastructure Support for Disaster Recovery:
5.future directions
卷积和中等尺寸大小的矩阵乘法对于前向传播和后向传播十分重要,使用更大的batch size,参数权重能够更多重用。
实时推理、每个节点需要小的batch size,小batch size导致更低的计算密度,降低性能,整个模型不能放入on-die sram和last-level cache。通过模型压缩解决(pruning, quantization) 和high-bandwidth memory解决。
分布式训练需要network topology + sheduling,广泛使用的是data parallelism。