发布网友 发布时间:2022-10-12 20:08
共1个回答
热心网友 时间:2023-10-15 18:35
@(Engineering Practice)[Deep Learning, Recommendation System, Inference]
在给定用户和用户上下文(如入口、时间、地域、用户的人口统计学数据等)的情况下,计算用户与库存(如商品、文章、用户等)发生交互(如点击、购买、连接等)的概率,并筛选最有可能 个库存推荐给用户,促成交互和转化。
算法设计上,大致可以按下图来划分。目前主流工业使用以DNN models为主,这也是本文的目标workload。
DNN RecSys Model = Feature Engineering + Feature Interaction + Predictor DNN
不同的feature engineering, feature interaction和predictor DNN的选型造就了不同的模型和workload特性。
It leads to lower Computational Intensity than CNN workloads.
Tensor operations which are Embedding Lookup & Tensor Manipulation occupy a non-negligible part.
Diverse combinations of lead to workload heterogeneity.
其中,模型优化专注于优化模型自身的性能,部署优化专注于优化模型在部署环境尤其是混部环境下的性能。
graph fusion/stitching
"MatMul + BiasAdd + Activation" 是FC子图中的典型子图,也是graph optimizer(如TF Grappler等)一般都会实现的graph optimization pass。目前主要是基于模板匹配的方式来实现。
在RecSys中的一个复杂性在于,对于同一个"MatMul + BiasAdd + Activation"语义,经常会有不同子图形式,下面给出两种:
可以看到,虽然上述两个子图语义上仍然是"MatMul+BiasAdd+Activation", 但由于形式上已经产生变化,基于模板匹配的子图融合pass对他们并不能正确地辨识和融合,需要使用更高抽象度的融合pass去辨识。实践也表明,增强的pass会给线上inference带来20%左右的latency减少。
Multi-Head Attention作为attention结构的基本子图,仔细分析并做极致优化是非常有必要的。
Mixed deployment brings deployment optimization
* proposed DeepRecSched to search good deployment configurations with dry-run. *的实验报告了在CPU上 2x的QPS,在GPU上 5x的QPS。
其他探索可见 《深度学习推理性能优化》 部署优化部分。
主要有两个方向: