Centaur:使用FPGA加速推荐系统推理

今天总结一篇ISCA20的文章:Centaur: A Chiplet-based, Hybrid Sparse-Dense Accelerator for Personalized Recommendations

一、概述

本文面向推荐系统的推理过程,并使用FPGA加速整个操作。今天读了一下这篇文章,感觉其中有一些点可以总结下来。

二、Insight

上图为推荐系统的概念图,包括稀疏数据(emb)以及稠密数据,然后经过interaction之后进入上层的MLP训练。

由于稀疏emb数据太大,导致GPU显存装不下,所以现在很多时候默认是使用CPU对模型进行推理,在推理的过程中,我们可以获取到下面的breakdown图:

  • 1 由该图可知,EMB和MLP的时间占了整个推理的绝大部分=>所以本文要针对这两个环节提出方案。
  • 2 上图表明在embedding table lookup过程中,LLC(最后一级的cache)的miss率非常高,说明应用的数据局部性非常差,且命中率与batch size有关,bs越大的话命中率越低。

第六个图由于table比较小,所以效果不明显。

  • 3 上图表示DRAM的带宽用量,发现带宽离峰值还差的很远(77GB/s),且(b)图展示了batch size越大,带宽越高,table中所需vector越多,带宽越高。

三、使用CPU+FPGA的Motivation

1 CPU在业界因为价格问题所以备受喜爱;

2 CPU相比于GPU可以提供低延迟效果;

3 GPU显存不够,用CPU更合理;

所以本文使用了Package-integrated CPU+FPGA。将CPU与FPGA打通,共享一个物理内存。

如上图的c所示。最终目的是,整个emb都在dram里面存在,然后FPGA通过高速带宽访问dram。

四、设计

设计部分不展开讲了,主要包括emb操作以及MLP操作。

EMB操作:

主要是为了访存快,所以用了CPU↔FPGA的cache coherent link。直接访问dram中的数据,而不用通过cpu端的层级cache(cache bypassing route)。

整个架构如上图。

文章说这个单项带宽能达到28.8GB/s(two PCIe links and one cache coherent UPI link.)。而我们知道PCIe-3也就16GB/s。

MLP计算:

计算中规中矩,没有什么特别的创新,就不展开了。

五、实验

上图与CPU比,平均提升27倍的性能。

然后是breakdown:

你可能感兴趣的:(Centaur:使用FPGA加速推荐系统推理)