From 5df16006a44eca44715e84b235a9eac6ebad6c02 Mon Sep 17 00:00:00 2001 From: Yao Fu Date: Fri, 11 Mar 2022 11:48:20 +0000 Subject: [PATCH] Fix citation error (#69) --- chapter_recommender_system/index.md | 8 +-- mlsys.bib | 96 +++++------------------------ 2 files changed, 18 insertions(+), 86 deletions(-) diff --git a/chapter_recommender_system/index.md b/chapter_recommender_system/index.md index d6f063c..cc2b220 100644 --- a/chapter_recommender_system/index.md +++ b/chapter_recommender_system/index.md @@ -12,7 +12,7 @@ :width:`800px` :label:`ch10-recommendation-models` -推荐模型以用户和内容的交互历史、用户属性、内容属性等特征作为输入,对输入特征进行充分相互作用,再将交互结果交由稠密深度神经网络来预测用户点击候选内容的可能性。【以xxx网络为例】。由于推荐模型的输入中包含大量无法直接进行矩阵运算的类别数据,例如用户和商品标识符,所以必须使用嵌入表将类别数据转换为数字向量形式。由于每种类别数据包含的每种情况都需要一个单独的嵌入项来表示,而稠密深度神经网络的参数可以共享,在大规模推荐模型中,嵌入表占据了绝大部分内存 :cite:`MLSYS2021_979d472a, DBLP:journals/corr/abs-2003-05622`。举例说明,假设一个推荐模型需要处理1亿条短视频内容,而每条短视频对应的嵌入项为一个64维的32位浮点数向量,那么仅该内容嵌入表就需要就需要占据大约24GB内存。如果考虑到用户标识符等其他嵌入表,那么单个模型可以轻易占据近100GB内存。而在工业界生产环境中,TB级的推荐模型 :cite:`DBLP:journals/corr/abs-2003-05622`也是非常常见的。 +推荐模型以用户和内容的交互历史、用户属性、内容属性等特征作为输入,对输入特征进行充分相互作用,再将交互结果交由稠密深度神经网络来预测用户点击候选内容的可能性。【以xxx网络为例】。由于推荐模型的输入中包含大量无法直接进行矩阵运算的类别数据,例如用户和商品标识符,所以必须使用嵌入表将类别数据转换为数字向量形式。由于每种类别数据包含的每种情况都需要一个单独的嵌入项来表示,而稠密深度神经网络的参数可以共享,在大规模推荐模型中,嵌入表占据了绝大部分内存 :cite:`MLSYS2021_979d472a, MLSYS2020_f7e6c855`。举例说明,假设一个推荐模型需要处理1亿条短视频内容,而每条短视频对应的嵌入项为一个64维的32位浮点数向量,那么仅该内容嵌入表就需要就需要占据大约24GB内存。如果考虑到用户标识符等其他嵌入表,那么单个模型可以轻易占据近100GB内存。而在工业界生产环境中,TB级的推荐模型 :cite:`MLSYS2020_f7e6c855`也是非常常见的。 在实际的生产环境中,除了推荐模型本身,推荐系统通常包括:数据收集、数据处理、数据存储、模型训练、模型存储、模型评估、推理服务等多个子系统。如图 :numref:`ch10-abstract-recommendation-systems`所示,这些子系统之间分工协作、紧密配合,构成一个从用户反馈、到模型更新、再到新推荐结果生成的闭环。下一小节中将重点介绍模型训练、推理子系统的结构。 @@ -29,7 +29,7 @@ 正如上文提到的,嵌入表占据了推荐模型绝大部分存储而其更新具有显著的稀疏性,因此推荐系统通常采用上一章介绍的参数服务器架构来存储模型。具体来讲,所有参数被分布存储在一组参数服务器上,而训练服务器一方面从数据存储模块拉取训练数据,另一方面根据训练数据从参数服务器上拉取对应的嵌入项和所有稠密神经网络参数。训练服务器本地更新之后将本地梯度或新的参数发送回参数服务器以更新全局参数。全局参数更新可以选择全同步,半同步,或异步更新。类似的,推理服务器在接到一批用户的推荐请求后,从参数服务器拉去相应的嵌入项和稠密神经网络参数来响应用户的请求。为了提升训练(推理)的吞吐,可以在训练(推理)服务器上缓存一部分参数。 为了避免训练服务器和参数服务器之间的通信限制训练吞吐率,一些公司也在探索单机多GPU训练超大规模推荐系统。然而正如前文提到的,即使是单个推荐模型的参数量(1̃00GB)也超出了目前最新的GPU显存。有鉴于此,脸书公司的定制训练平台 --- ZionEX :cite:`DBLP:journals/corr/abs-2104-05158` +-- ZionEX :cite:`mudigere2021software` 利用计算设备之间的高速链接将多台设备的存储共享起来可以单机训练TB级推荐模型。然而对于更大规模的模型或中小型企业、实验室,参数服务器架构依然是性价比最高的解决方案。 为了提升在发生故障的情况下的可用性,在线服务中的深度学习推荐模型通常都采用多副本分布式部署。同一个模型的多个副本通常会被部署在至少两个不同的地理区域内的多个数据中心中,如图 :numref:`ch10-recommendation-systems`,以应对大面积停电或者网络中断而导致整个地区的所有副本都不可用。除了容错方面的考虑,部署多个副本还有其他几点优势。首先,将模型部署在靠近用户的云服务器上可以提升响应速度。其次,部署多份副本也可以拓展模型推理服务的吞吐率。 @@ -55,9 +55,9 @@ - 云--边--端协同推荐系统。随着边缘设备的增加以及用户端设备性能逐渐增强,服务提供者可以通过将部分计算服务从云服务器下放至边缘服务器乃至用户的设备上来提高模型的反应速度。例如,有研究 :cite:`gong2020edgerec`探索了将模型的前几层下放至客户端上,并且利用用户的本地数据进行个性化训练以给出更加准确的推荐结果。当用户的兴趣发生改变时,客户端上的小模型可以实时地更新以响应用户的请求。除此之外,还可以借鉴联邦学习中的概念,例如有研究 :cite:`NEURIPS2020_a1d4c20b`探索了利用知识迁移的方法在云-端之间传递信息。在在线推荐系统中使用这种方法可以彻底解耦云上的大模型与客户端的小模型。 -- 异构硬件多级存储。前文提到GPU显存无法装下完整的模型参数,一些现有的系统 :cite:`DBLP:journals/corr/abs-2003-05622`为了充分利用GPU的计算优势,采用多级缓存的思想,将部分参数分级存储于显存、主存和固态硬盘上。在他们提出的这个分级系统中,主要解决了缓存策略和异构硬件的适配问题。然而在设计类似的存储系统时,还应该考虑到机器学习模型内在的一些访存特征以进一步优化。Kraken :cite:`9355295`这篇工作讨论了利用机器学习模型的特征对嵌入项的哈希表的存储进行优化的方法。此外,新型硬件的发展为解决大规模推荐模型的高效存储提供了新的可能。比如非易失存储可以作为主存的扩展,进一步提升系统可以支持的模型尺寸。然而目前还没有见到专门为在线机器学习优化的非易失存储系统。另外也有工作 :cite:`MLSYS2021_ec895663`讨论了利用FPGA加速嵌入表的访存并且相比于CPU服务器取得了非常显著的效果。 +- 异构硬件多级存储。前文提到GPU显存无法装下完整的模型参数,一些现有的系统 :cite:`MLSYS2020_f7e6c855`为了充分利用GPU的计算优势,采用多级缓存的思想,将部分参数分级存储于显存、主存和固态硬盘上。在他们提出的这个分级系统中,主要解决了缓存策略和异构硬件的适配问题。然而在设计类似的存储系统时,还应该考虑到机器学习模型内在的一些访存特征以进一步优化。Kraken :cite:`9355295`这篇工作讨论了利用机器学习模型的特征对嵌入项的哈希表的存储进行优化的方法。此外,新型硬件的发展为解决大规模推荐模型的高效存储提供了新的可能。比如非易失存储可以作为主存的扩展,进一步提升系统可以支持的模型尺寸。然而目前还没有见到专门为在线机器学习优化的非易失存储系统。另外也有工作 :cite:`MLSYS2021_ec895663`讨论了利用FPGA加速嵌入表的访存并且相比于CPU服务器取得了非常显著的效果。 -- 内存高效的嵌入项存储与计算。除了系统上的设计,研究人员也在探索其他算法优化手段来压缩嵌入表的内存需求。直接使用低精度浮点数可以有效降低内存开销,但是还是会对模型的精度产生一定的影响。因此在在线推荐服务这种精度敏感的场景中并不适用。除此之外,:cite: `MLSYS2021_979d472a`利用低秩分解可以将一个大矩阵分解为两个小矩阵(向量)。这种方法可以在保留原矩阵大量信息的前提下显著减小内存开销。除了低秩分解外,还有其他 :cite:`10.1145/3394486.3403059`分解嵌入表的手段。还有研究 :cite:`ginart2021mixed`表明,没有必要为所有的项目都使用一样长的嵌入项,可以根据嵌入项的重要性动态决定其长度以节省内存开销。作为系统设计者,如何将层出不穷的算法优化手段高效地实现是需要考虑的问题。 +- 内存高效的嵌入项存储与计算。除了系统上的设计,研究人员也在探索其他算法优化手段来压缩嵌入表的内存需求。直接使用低精度浮点数可以有效降低内存开销,但是还是会对模型的精度产生一定的影响。因此在在线推荐服务这种精度敏感的场景中并不适用。除此之外,:cite:`MLSYS2021_979d472a`利用低秩分解可以将一个大矩阵分解为两个小矩阵(向量)。这种方法可以在保留原矩阵大量信息的前提下显著减小内存开销。除了低秩分解外,还有其他 :cite:`10.1145/3394486.3403059`分解嵌入表的手段。还有研究 :cite:`ginart2021mixed`表明,没有必要为所有的项目都使用一样长的嵌入项,可以根据嵌入项的重要性动态决定其长度以节省内存开销。作为系统设计者,如何将层出不穷的算法优化手段高效地实现是需要考虑的问题。 ## 小结 diff --git a/mlsys.bib b/mlsys.bib index 660795d..96e85b6 100644 --- a/mlsys.bib +++ b/mlsys.bib @@ -291,90 +291,22 @@ year = {2021} } -@article{DBLP:journals/corr/abs-2003-05622, - author = {Weijie Zhao and - Deping Xie and - Ronglai Jia and - Yulei Qian and - Ruiquan Ding and - Mingming Sun and - Ping Li}, - title = {Distributed Hierarchical {GPU} Parameter Server for Massive Scale - Deep Learning Ads Systems}, - journal = {CoRR}, - volume = {abs/2003.05622}, - year = {2020}, - url = {https://arxiv.org/abs/2003.05622}, - eprinttype = {arXiv}, - eprint = {2003.05622}, - timestamp = {Thu, 19 Aug 2021 08:41:35 +0200}, - biburl = {https://dblp.org/rec/journals/corr/abs-2003-05622.bib}, - bibsource = {dblp computer science bibliography, https://dblp.org} +@inproceedings{MLSYS2020_f7e6c855, + author = {Zhao, Weijie and Xie, Deping and Jia, Ronglai and Qian, Yulei and Ding, Ruiquan and Sun, Mingming and Li, Ping}, + booktitle = {Proceedings of Machine Learning and Systems}, + editor = {I. Dhillon and D. Papailiopoulos and V. Sze}, + pages = {412--428}, + title = {Distributed Hierarchical GPU Parameter Server for Massive Scale Deep Learning Ads Systems}, + url = {https://proceedings.mlsys.org/paper/2020/file/f7e6c85504ce6e82442c770f7c8606f0-Paper.pdf}, + volume = {2}, + year = {2020} } -@article{DBLP:journals/corr/abs-2104-05158, - author = {Dheevatsa Mudigere and - Yuchen Hao and - Jianyu Huang and - Andrew Tulloch and - Srinivas Sridharan and - Xing Liu and - Mustafa Ozdal and - Jade Nie and - Jongsoo Park and - Liang Luo and - Jie Amy Yang and - Leon Gao and - Dmytro Ivchenko and - Aarti Basant and - Yuxi Hu and - Jiyan Yang and - Ehsan K. Ardestani and - Xiaodong Wang and - Rakesh Komuravelli and - Ching{-}Hsiang Chu and - Serhat Yilmaz and - Huayu Li and - Jiyuan Qian and - Zhuobo Feng and - Yinbin Ma and - Junjie Yang and - Ellie Wen and - Hong Li and - Lin Yang and - Chonglin Sun and - Whitney Zhao and - Dimitry Melts and - Krishna Dhulipala and - K. R. Kishore and - Tyler Graf and - Assaf Eisenman and - Kiran Kumar Matam and - Adi Gangidi and - Guoqiang Jerry Chen and - Manoj Krishnan and - Avinash Nayak and - Krishnakumar Nair and - Bharath Muthiah and - Mahmoud khorashadi and - Pallab Bhattacharya and - Petr Lapukhov and - Maxim Naumov and - Lin Qiao and - Mikhail Smelyanskiy and - Bill Jia and - Vijay Rao}, - title = {High-performance, Distributed Training of Large-scale Deep Learning - Recommendation Models}, - journal = {CoRR}, - volume = {abs/2104.05158}, - year = {2021}, - url = {https://arxiv.org/abs/2104.05158}, - eprinttype = {arXiv}, - eprint = {2104.05158}, - timestamp = {Fri, 13 Aug 2021 14:56:26 +0200}, - biburl = {https://dblp.org/rec/journals/corr/abs-2104-05158.bib}, - bibsource = {dblp computer science bibliography, https://dblp.org} +@article{mudigere2021software, + title={Software-Hardware Co-design for Fast and Scalable Training of Deep Learning Recommendation Models}, + author={Mudigere, Dheevatsa and Hao, Yuchen and Huang, Jianyu and Jia, Zhihao and Tulloch, Andrew and Sridharan, Srinivas and Liu, Xing and Ozdal, Mustafa and Nie, Jade and Park, Jongsoo and others}, + journal={arXiv preprint arXiv:2104.05158}, + year={2021} } @inproceedings{gong2020edgerec,