13.4. 未来可以探索的方向

为了解决在线深度学习推荐系统的以上几点问题,研究人员也探索了几个潜在的方向。

  • 云–边–端协同推荐系统。随着边缘设备的增加以及用户端设备性能逐渐增强,服务提供者可以通过将部分计算服务从云服务器下放至边缘服务器乃至用户的设备上来提高模型的反应速度。例如,有研究 [Gong et al., 2020]探索了将模型的前几层下放至客户端上,并且利用用户的本地数据进行个性化训练以给出更加准确的推荐结果。当用户的兴趣发生改变时,客户端上的小模型可以实时地更新以响应用户的请求。除此之外,还可以借鉴联邦学习中的概念,例如有研究 [He et al., 2020]探索了利用知识迁移的方法在云-端之间传递信息。在在线推荐系统中使用这种方法可以彻底解耦云上的大模型与客户端的小模型。

  • 异构硬件多级存储。前文提到GPU显存无法装下完整的模型参数,一些现有的系统 [Zhao et al., 2020]为了充分利用GPU的计算优势,采用多级缓存的思想,将部分参数分级存储于显存、主存和固态硬盘上。在他们提出的这个分级系统中,主要解决了缓存策略和异构硬件的适配问题。然而在设计类似的存储系统时,还应该考虑到机器学习模型内在的一些访存特征以进一步优化。Kraken [Xie et al., 2020]这篇工作讨论了利用机器学习模型的特征对嵌入项的哈希表的存储进行优化的方法。此外,新型硬件的发展为解决大规模推荐模型的高效存储提供了新的可能。比如非易失存储可以作为主存的扩展,进一步提升系统可以支持的模型尺寸。然而目前还没有见到专门为在线机器学习优化的非易失存储系统。另外也有工作 [Jiang et al., 2021]讨论了利用FPGA加速嵌入表的访存并且相比于CPU服务器取得了非常显著的效果。

  • 内存高效的嵌入项存储与计算。除了系统上的设计,研究人员也在探索其他算法优化手段来压缩嵌入表的内存需求。直接使用低精度浮点数可以有效降低内存开销,但是还是会对模型的精度产生一定的影响。因此在在线推荐服务这种精度敏感的场景中并不适用。除此之外, [Yin et al., 2021]利用低秩分解可以将一个大矩阵分解为两个小矩阵(向量)。这种方法可以在保留原矩阵大量信息的前提下显著减小内存开销。除了低秩分解外,还有其他 [Shi et al., 2020]分解嵌入表的手段。还有研究 [Ginart et al., 2021]表明,没有必要为所有的项目都使用一样长的嵌入项,可以根据嵌入项的重要性动态决定其长度以节省内存开销。作为系统设计者,如何将层出不穷的算法优化手段高效地实现是需要考虑的问题。