今天总结一篇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: