Add recommender system chapter (#36)

* Fix a typo

* Add chapter recommender system
This commit is contained in:
Yao Fu
2022-03-10 08:34:34 +00:00
committed by GitHub
parent 9ae711e2aa
commit 675b4a0655
6 changed files with 1335 additions and 2 deletions

View File

@@ -10,7 +10,7 @@
## 文本
* LaTeX文件转换Markdown文件
* Linux下安装Pandoc命令agt-get install pandoc
* Linux下安装Pandoc命令apt-get install pandoc
* 使用Pandoc命令pandoc -s example.tex -o example.md
* 使用Pandoc转换后需要注意修改的地方
* 表格需要手动改

View File

@@ -1 +0,0 @@
# 在线机器学习

View File

@@ -0,0 +1,64 @@
# 深度学习推荐系统
推荐系统通过对用户特征、历史行为等数据的分析,为用户推荐可能感兴趣的内容、商品或者广告。在信息爆炸的时代,高效且准确的推荐结果极大地提升了在线服务的质量。近年来,基于深度学习的推荐模型由于可以高效地利用在线服务中产生的海量数据,被谷歌、脸书、阿里巴巴等各大公司广泛应用于生产环境中。本节主要介绍深度学习推荐系统在工业界的主流系统架构、问题以及可能的解决方案。
## 背景
为了方便本节的讨论,我们首先简单介绍一些推荐系统的基本概念,包括三部分:推荐模型的结构,推荐系统的架构,和评估推荐系统的关键指标。
基于深度学习的推荐模型在过去几年受到了学术界和工业界的高度关注得到了快速发展。目前主流的推荐模型1234的基本结构可以总结如图 :numref:`ch10-recommendation-models`
![推荐模型的基本结构](../img/ch10/ch10-recommendation-models.svg)
:width:`800px`
:label:`ch10-recommendation-models`
推荐模型以用户和内容的交互历史、用户属性、内容属性等特征作为输入对输入特征进行充分相互作用再将交互结果交由稠密深度神经网络来预测用户点击候选内容的可能性。【以xxx网络为例】。由于推荐模型的输入中包含大量无法直接进行矩阵运算的类别数据例如用户和商品标识符所以必须使用嵌入表将类别数据转换为数字向量形式。由于每种类别数据包含的每种情况都需要一个单独的嵌入项来表示而稠密深度神经网络的参数可以共享在大规模推荐模型中嵌入表占据了绝大部分内存[@MLSYS2021_979d472a; @DBLP:journals/corr/abs-2003-05622]。举例说明假设一个推荐模型需要处理1亿条短视频内容而每条短视频对应的嵌入项为一个64维的32位浮点数向量那么仅该内容嵌入表就需要就需要占据大约24GB内存。如果考虑到用户标识符等其他嵌入表那么单个模型可以轻易占据近100GB内存。而在工业界生产环境中TB级的推荐模型[@DBLP:journals/corr/abs-2003-05622]也是非常常见的。
在实际的生产环境中,除了推荐模型本身,推荐系统通常包括:数据收集、数据处理、数据存储、模型训练、模型存储、模型评估、推理服务等多个子系统。如图 :numref:`ch10-abstract-recommendation-systems`所示,这些子系统之间分工协作、紧密配合,构成一个从用户反馈、到模型更新、再到新推荐结果生成的闭环。下一小节中将重点介绍模型训练、推理子系统的结构。
![推荐系统的抽象架构](../img/ch10/ch10-abstract-recommendation-systems.svg)
:width:`800px`
:label:`ch10-abstract-recommendation-systems`
深度学习模型给出的推荐结果的准确性是推荐系统需要关注的一个基本指标。然而不同于一般学术论文中使用的基准数据集,生产环境中推荐模型面对的是动态变化的数据分布。例如,每天的热点内容不同,每个用户的兴趣也会不断变化。为了保持模型的性能,推荐系统需要不断根据用户的反馈对已有模型进行更新。而这就需要系统能够将用户的行为转换为模型可以处理的数据。系统首先在提供服务的同时收集用户的行为,例如用户对内容的浏览、点击动作。收集到的数据还需要进一步加工处理,从而得到模型可以接受的格式化数据。
除了推荐准确性,对于在线服务的提供者而言,可用性是一个非常关键的指标。当用户需要一个推荐结果时,相比于给用户一个不完全准确的推荐,"无响应"的结果对于用户的体验伤害更大。因此,在某种程度上可以说系统可用性是比推荐结果的准确性更加关键的一个指标。然而这并不意味着准确性不重要,在一定的资源限制下,在线推荐系统的设计者必须谨慎地在准确性和可用性之间进行平衡。例如,使用更宽、更深、更复杂的神经网络模型可能会给出更加准确的推荐结果,但如果其推断延迟高于给定的阈值,那么这样的模型不能直接运用于生产环境中。
## 主流系统架构
正如上文提到的,嵌入表占据了推荐模型绝大部分存储而其更新具有显著的稀疏性,因此推荐系统通常采用上一章介绍的参数服务器架构来存储模型。具体来讲,所有参数被分布存储在一组参数服务器上,而训练服务器一方面从数据存储模块拉取训练数据,另一方面根据训练数据从参数服务器上拉取对应的嵌入项和所有稠密神经网络参数。训练服务器本地更新之后将本地梯度或新的参数发送回参数服务器以更新全局参数。全局参数更新可以选择全同步,半同步,或异步更新。类似的,推理服务器在接到一批用户的推荐请求后,从参数服务器拉去相应的嵌入项和稠密神经网络参数来响应用户的请求。为了提升训练(推理)的吞吐,可以在训练(推理)服务器上缓存一部分参数。
为了避免训练服务器和参数服务器之间的通信限制训练吞吐率一些公司也在探索单机多GPU训练超大规模推荐系统。然而正如前文提到的即使是单个推荐模型的参数量1̃00GB也超出了目前最新的GPU显存。有鉴于此脸书公司的定制训练平台
-- Zion [@DBLP:journals/corr/abs-2104-05158]
利用计算设备之间的高速链接将多台设备的存储共享起来可以单机训练TB级推荐模型。然而对于更大规模的模型或中小型企业、实验室参数服务器架构依然是性价比最高的解决方案。
为了提升在发生故障的情况下的可用性,在线服务中的深度学习推荐模型通常都采用多副本分布式部署。同一个模型的多个副本通常会被部署在至少两个不同的地理区域内的多个数据中心中,如图 :numref:`ch10-recommendation-systems`,以应对大面积停电或者网络中断而导致整个地区的所有副本都不可用。除了容错方面的考虑,部署多个副本还有其他几点优势。首先,将模型部署在靠近用户的云服务器上可以提升响应速度。其次,部署多份副本也可以拓展模型推理服务的吞吐率。
![推荐系统的分布式架构](../img/ch10/ch10-recommendation-systems.svg)
:width:`800px`
:label:`ch10-recommendation-systems`
## 现有解决方案及其存在的问题
在线服务系统的两个主要诉求:
- 大模型的高效存储。为了提升训练和推理的性能通常推荐模型全部存储在内存中然而纯内存存储对于内存的需求极高。正如前文分析的单个模型就要占据至少100GB的内存而一个在线推荐系统中需要同时运行多个模型负责不同的服务。如果考虑到除了在线服务模型算法研究人员还需要上线测试不同的模型结构或者训练策略系统中通常会同时存在上百个超大模型。因此在线推荐系统亟需既能拓展存储容量又不会影响训练和推理性能的存储解决方案。
- 大模型的快速更新。
在线服务系统所面对的环境是复杂多变的,因此其中的机器学习模型必须不断更新以应对新的数据分布。以一个短视频推荐系统为例,其面对的变化主要来自三点。首先,每时每刻都有大量的新视频上传,这些新视频的特征分布和模型训练时所见到的数据不同;其次,对于不断加入的新用户,模型难以直接给出最优的推荐结果;最后,全部用户和内容之间的交互在不断改变,表现为热点视频在持续变化。因此,为了应对以上变化,在线服务中不可能奢望仅仅训练一次模型就能够一劳永逸地解决问题。目前业界主流的做法是利用新产生的数据不断地增量式更新所部属的模型。在学术界和工业界大量的研究和实践[@UnbiasedOnline; @practicallessons; @continuum; @kraken]中都发现模型更新可以有效缓解概念漂移带来的危害,而且更新的频率越高,模型的性能越好。
在线推荐系统对跨地域地部署的大模型进行快速更新的需求在现有的系统中很难得到满足。一种最直观的解决方案是周期性地将训练服务器上的模型参数发给所有副本。然而这种方式面临着非常大的资源瓶颈。我们以网络开销为例进行分析。假设负责训练的参数服务器存储有100GB的参数每10分钟将所有参数在训练集群内部模型更新的速度极快10分钟足够将所有参数更新多次发给其余2个副本。这就需要至少2.6Gbps的网络带宽。然而我们的分析只是最基本的情况,没有考虑网络传输的额外开销以及可能出现的失败重传,也没有考虑需要水平扩展至更多副本、更大模型、更高的更新频率的情况。为了缓解网络瓶颈,人们不得不选择以更慢的速度更新更大的模型,或者限制模型大小以追求更快的更新速度。简单的广播模型参数除了会有很大的资源瓶颈,还无法保证多副本之间的一致性。然而如果采用先用的数据库系统来保证一致性,只能使得资源开销更加严重,进一步限制系统的规模和效率。
## 未来可以探索的方向
为了解决在线深度学习推荐系统的以上几点问题,研究人员也探索了几个潜在的方向。
- 云--边--端协同推荐系统。随着边缘设备的增加以及用户端设备性能逐渐增强,服务提供者可以通过将部分计算服务从云服务器下放至边缘服务器乃至用户的设备上来提高模型的反应速度。例如,有研究[@gong2020edgerec]探索了将模型的前几层下放至客户端上,并且利用用户的本地数据进行个性化训练以给出更加准确的推荐结果。当用户的兴趣发生改变时,客户端上的小模型可以实时地更新以响应用户的请求。除此之外,还可以借鉴联邦学习中的概念,例如有研究[@NEURIPS2020_a1d4c20b]探索了利用知识迁移的方法在云-端之间传递信息。在在线推荐系统中使用这种方法可以彻底解耦云上的大模型与客户端的小模型。
- 异构硬件多级存储。前文提到GPU显存无法装下完整的模型参数一些现有的系统[@DBLP:journals/corr/abs-2003-05622]为了充分利用GPU的计算优势采用多级缓存的思想将部分参数分级存储于显存、主存和固态硬盘上。在他们提出的这个分级系统中主要解决了缓存策略和异构硬件的适配问题。然而在设计类似的存储系统时还应该考虑到机器学习模型内在的一些访存特征以进一步优化。Kraken[@kraken]这篇工作讨论了利用机器学习模型的特征对嵌入项的哈希表的存储进行优化的方法。此外,新型硬件的发展为解决大规模推荐模型的高效存储提供了新的可能。比如非易失存储可以作为主存的扩展,进一步提升系统可以支持的模型尺寸。然而目前还没有见到专门为在线机器学习优化的非易失存储系统。另外也有工作[@MLSYS2021_ec895663]讨论了利用FPGA加速嵌入表的访存并且相比于CPU服务器取得了非常显著的效果。
- 内存高效的嵌入项存储与计算。除了系统上的设计,研究人员也在探索其他算法优化手段来压缩嵌入表的内存需求。直接使用低精度浮点数可以有效降低内存开销,但是还是会对模型的精度产生一定的影响。因此在在线推荐服务这种精度敏感的场景中并不适用。除此之外,[@MLSYS2021_979d472a]利用低秩分解可以将一个大矩阵分解为两个小矩阵(向量)。这种方法可以在保留原矩阵大量信息的前提下显著减小内存开销。除了低秩分解外,还有其他[@10.1145/3394486.3403059]分解嵌入表的手段。还有研究[@ginart2021mixed]表明,没有必要为所有的项目都使用一样长的嵌入项,可以根据嵌入项的重要性动态决定其长度以节省内存开销。作为系统设计者,如何将层出不穷的算法优化手段高效地实现是需要考虑的问题。
## 小结
推荐系统作为深度学习在工业界最成功的落地成果之一,极大地提升了用户的在线服务体验,并且为各大公司创造了可观的利润,然而也带来了许多系统层面的挑战亟待解决。本节简单介绍了典型的工业界推荐系统架构及其面临的挑战,并给出了潜在的解决方案的方向。在实际生产环境中,具体的系统设计方案根据不同推荐场景的需求而变化,不存在一种万能的解决方案。

View File

@@ -0,0 +1,368 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="246.21597mm"
height="115.64939mm"
viewBox="0 0 246.21597 115.64939"
version="1.1"
id="svg2503"
inkscape:version="1.1.2 (1:1.1+202202050950+0a00cf5339)"
sodipodi:docname="ch10-abstract-recommendation-systems.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview2505"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:zoom="0.64052329"
inkscape:cx="-409.82116"
inkscape:cy="348.93345"
inkscape:window-width="1848"
inkscape:window-height="1136"
inkscape:window-x="72"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="g2529" />
<defs
id="defs2500">
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath2539">
<path
d="M 0,1.206994e-5 H 959.76 V 540.00001 H 0 Z"
id="path2537" />
</clipPath>
</defs>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(9.3151489,-56.379776)">
<g
id="g2529"
inkscape:label="ch10-abstract-recommendation-systems"
transform="matrix(0.35277777,0,0,-0.35277777,-55.540502,209.45446)">
<g
id="g2531" />
<g
id="g2543">
<path
d="m 131.5325,433.4125 h 696.935 V 169.8802 h -696.935 z"
style="fill:#e7e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path2547" />
<g
id="g2549"
transform="matrix(7.874016e-5,0,0,-7.874016e-5,131.5325,433.4125)">
<path
d="M 0,0 H 8851075 V 3346861 H 0 Z"
style="fill:none;stroke:#2f528f;stroke-width:12700;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:8;stroke-dasharray:none;stroke-opacity:1"
id="path2551" />
</g>
<path
d="m 505.3118,341.8305 c 0,12.1208 9.8258,21.9466 21.9466,21.9466 h 87.7832 c 12.1208,0 21.9466,-9.8258 21.9466,-21.9466 V 209.3659 c 0,-12.1208 -9.8258,-21.9466 -21.9466,-21.9466 h -87.7832 c -12.1208,0 -21.9466,9.8258 -21.9466,21.9466 z"
style="fill:#deebf7;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path2553" />
<g
id="g2555"
transform="matrix(7.874016e-5,0,0,-7.874016e-5,505.3118,363.7771)">
<path
d="M 0,278721.2 C 0,124787.7 124787.9,0 278721.5,0 H 1393569 c 153933,0 278721,124787.7 278721,278721.2 V 1961023 c 0,153933 -124788,278721 -278721,278721 H 278721.5 C 124787.9,2239744 0,2114956 0,1961023 Z"
style="fill:none;stroke:#2f528f;stroke-width:12700;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:8;stroke-dasharray:none;stroke-opacity:1"
id="path2557" />
</g>
<g
id="g2559"
transform="matrix(0.24,0,0,0.24,546.3399,-259.92)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:75px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text2563"><tspan
x="0 65.107498 108.315 151.52251 190.08 206.7375"
y="0"
sodipodi:role="line"
id="tspan2561">Model</tspan></text>
</g>
<g
id="g2565"
transform="matrix(0.24,0,0,0.24,541.6499,-280.8)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:75px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text2569"><tspan
x="0 23.955 49.485001 87.014999 103.695 144.825 161.505 202.63499"
y="0"
sodipodi:role="line"
id="tspan2567">training</tspan></text>
</g>
<path
d="m 162.5433,243.4849 c 0,6.193 5.0204,11.2134 11.2134,11.2134 h 109.2496 c 6.193,0 11.2134,-5.0204 11.2134,-11.2134 v -44.8522 c 0,-6.193 -5.0204,-11.2134 -11.2134,-11.2134 H 173.7567 c -6.193,0 -11.2134,5.0204 -11.2134,11.2134 z"
style="fill:#e2f0d9;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path2571" />
<g
id="g2573"
transform="matrix(7.874016e-5,0,0,-7.874016e-5,162.5433,254.6983)">
<path
d="M 0,142409.9 C 0,63759.09 63759.06,0 142409.8,0 H 1529880 c 78651,0 142410,63759.09 142410,142409.9 v 569623.2 c 0,78650.8 -63759,142409.9 -142410,142409.9 H 142409.8 C 63759.06,854443 0,790683.9 0,712033.1 Z"
style="fill:none;stroke:#2f528f;stroke-width:12700;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:8;stroke-dasharray:none;stroke-opacity:1"
id="path2575" />
</g>
<g
id="g2577"
transform="matrix(0.24,0,0,0.24,210.319,-314.4)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:75px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text2581"><tspan
x="0 51.5625 89.025002 112.9875 150.45"
y="0"
sodipodi:role="line"
id="tspan2579">Data</tspan></text>
</g>
<g
id="g2583"
transform="matrix(0.24,0,0,0.24,191.444,-335.28)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:75px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text2587"><tspan
x="0 33.855 77.084999 93.764999 110.445 149.02499 182.88 206.83501 223.515 266.745"
y="0"
sodipodi:role="line"
id="tspan2585">collection</tspan></text>
</g>
<g
id="g2589"
transform="matrix(0.24,0,0,0.24,381.5622,-146.88)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:75px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text2593"><tspan
x="0 43.23 81.809998 115.665 158.895 221.925 284.95499 323.535 364.66501 407.89499 445.42499 469.38 486.06 529.28998 570.41998 590.70001 629.28003 664.185 694.89001 718.84497 757.42499"
y="0"
sodipodi:role="line"
id="tspan2591">Recommendation System</tspan></text>
</g>
<path
d="m 131.5325,153.5595 h 696.9346 v -46.972 H 131.5325 Z"
style="fill:#fff2cc;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path2595" />
<g
id="g2597"
transform="matrix(7.874016e-5,0,0,-7.874016e-5,131.5325,153.5595)">
<path
d="M 0,0 H 8851069 V 596545 H 0 Z"
style="fill:none;stroke:#2f528f;stroke-width:12700;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:8;stroke-dasharray:none;stroke-opacity:1"
id="path2599" />
</g>
<g
id="g2601"
transform="matrix(0.24,0,0,0.24,304.1873,-416.16)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:75px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text2605"><tspan
x="0 50.52 67.214996 110.46 153.705 191.175 207.87 228.16499 279.73499 318.255 353.17499 369.87 403.73999 442.26001 472.98001 493.27499 545.89502 562.59003 586.56 627.70502 648 691.245 729.76501 763.63501 806.88 869.92499 932.96997 971.48999 1012.635 1055.88 1093.35 1117.3199 1134.015 1177.26 1218.405 1238.7 1277.22 1315.74 1341.285 1376.205 1392.9 1426.77"
y="0"
sodipodi:role="line"
id="tspan2603">Global Devices with Recommendation Service</tspan></text>
</g>
<path
d="m 229.8815,153.5595 v 26.3597 h -3 v -26.3596 z m 3,24.8597 -4.4999,9 -4.5001,-9 z"
style="fill:#4472c4;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path2607" />
<path
d="m 162.5433,352.5636 c 0,6.193 5.0204,11.2134 11.2134,11.2134 h 109.2496 c 6.193,0 11.2134,-5.0204 11.2134,-11.2134 v -44.8522 c 0,-6.193 -5.0204,-11.2134 -11.2134,-11.2134 H 173.7567 c -6.193,0 -11.2134,5.0204 -11.2134,11.2134 z"
style="fill:#e2f0d9;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path2609" />
<g
id="g2611"
transform="matrix(7.874016e-5,0,0,-7.874016e-5,162.5433,363.777)">
<path
d="M 0,142409.9 C 0,63759.09 63759.06,0 142409.8,0 H 1529880 c 78651,0 142410,63759.09 142410,142409.9 v 569623.2 c 0,78650.8 -63759,142409.9 -142410,142409.9 H 142409.8 C 63759.06,854443 0,790683.9 0,712033.1 Z"
style="fill:none;stroke:#2f528f;stroke-width:12700;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:8;stroke-dasharray:none;stroke-opacity:1"
id="path2613" />
</g>
<g
id="g2615"
transform="matrix(0.24,0,0,0.24,210.3215,-205.2)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:75px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text2619"><tspan
x="0 51.5625 89.025002 112.9875 150.45"
y="0"
sodipodi:role="line"
id="tspan2617">Data</tspan></text>
</g>
<g
id="g2621"
transform="matrix(0.24,0,0,0.24,186.7565,-226.32)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:75px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text2625"><tspan
x="0 43.23 68.760002 111.99 145.845 184.35001 215.05499 245.75999 262.44 303.57001"
y="0"
sodipodi:role="line"
id="tspan2623">processing</tspan></text>
</g>
<path
d="m 333.9276,341.8305 c 0,12.1208 9.8258,21.9466 21.9465,21.9466 h 87.7833 c 12.1207,0 21.9465,-9.8258 21.9465,-21.9466 V 209.3659 c 0,-12.1208 -9.8258,-21.9466 -21.9465,-21.9466 h -87.7833 c -12.1207,0 -21.9465,9.8258 -21.9465,21.9466 z"
style="fill:#e2f0d9;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path2627" />
<g
id="g2629"
transform="matrix(7.874016e-5,0,0,-7.874016e-5,333.9276,363.7771)">
<path
d="M 0,278721.2 C 0,124787.7 124787.9,0 278721.5,0 H 1393569 c 153933,0 278721,124787.7 278721,278721.2 V 1961023 c 0,153933 -124788,278721 -278721,278721 H 278721.5 C 124787.9,2239744 0,2114956 0,1961023 Z"
style="fill:none;stroke:#2f528f;stroke-width:12700;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:8;stroke-dasharray:none;stroke-opacity:1"
id="path2631" />
</g>
<g
id="g2633"
transform="matrix(0.24,0,0,0.24,350.1407,-270.72)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:75px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text2637"><tspan
x="0 51.5625 89.025002 112.9875"
y="0"
sodipodi:role="line"
id="tspan2635">Data</tspan></text>
</g>
<g
id="g2639"
transform="matrix(0.24,0,0,0.24,391.1407,-270.72)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:75px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text2643"><tspan
x="0 30.727501 54.705002 97.957497 123.51 160.9875"
y="0"
sodipodi:role="line"
id="tspan2641">storag</tspan></text>
</g>
<g
id="g2645"
transform="matrix(0.24,0,0,0.24,440.1407,-270.72)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:75px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text2649"><tspan
x="0"
y="0"
id="tspan2647">e</tspan></text>
</g>
<path
d="m 676.696,352.5638 c 0,6.193 5.0204,11.2134 11.2134,11.2134 H 797.159 c 6.193,0 11.2134,-5.0204 11.2134,-11.2134 v -44.8522 c 0,-6.193 -5.0204,-11.2134 -11.2134,-11.2134 H 687.9094 c -6.193,0 -11.2134,5.0204 -11.2134,11.2134 z"
style="fill:#deebf7;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path2651" />
<g
id="g2653"
transform="matrix(7.874016e-5,0,0,-7.874016e-5,676.696,363.7772)">
<path
d="M 0,142409.9 C 0,63759.09 63759.06,0 142409.8,0 H 1529880 c 78651,0 142410,63759.09 142410,142409.9 v 569623.2 c 0,78650.8 -63759,142409.9 -142410,142409.9 H 142409.8 C 63759.06,854443 0,790683.9 0,712033.1 Z"
style="fill:none;stroke:#2f528f;stroke-width:12700;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:8;stroke-dasharray:none;stroke-opacity:1"
id="path2655" />
</g>
<g
id="g2657"
transform="matrix(0.24,0,0,0.24,717.7242,-205.2)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:75px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text2661"><tspan
x="0 65.107498 108.315 151.52251 190.08 206.7375"
y="0"
sodipodi:role="line"
id="tspan2659">Model</tspan></text>
</g>
<g
id="g2663"
transform="matrix(0.24,0,0,0.24,713.4092,-226.32)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:75px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text2667"><tspan
x="0 30.727501 54.705002 97.957497 123.51 160.9875 204.24001"
y="0"
sodipodi:role="line"
id="tspan2665">storage</tspan></text>
</g>
<path
d="m 676.696,243.485 c 0,6.193 5.0204,11.2134 11.2134,11.2134 H 797.159 c 6.193,0 11.2134,-5.0204 11.2134,-11.2134 v -44.8522 c 0,-6.193 -5.0204,-11.2134 -11.2134,-11.2134 H 687.9094 c -6.193,0 -11.2134,5.0204 -11.2134,11.2134 z"
style="fill:#deebf7;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path2669" />
<g
id="g2671"
transform="matrix(7.874016e-5,0,0,-7.874016e-5,676.696,254.6984)">
<path
d="M 0,142409.9 C 0,63759.09 63759.06,0 142409.8,0 H 1529880 c 78651,0 142410,63759.09 142410,142409.9 v 569623.2 c 0,78650.8 -63759,142409.9 -142410,142409.9 H 142409.8 C 63759.06,854443 0,790683.9 0,712033.1 Z"
style="fill:none;stroke:#2f528f;stroke-width:12700;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:8;stroke-dasharray:none;stroke-opacity:1"
id="path2673" />
</g>
<g
id="g2675"
transform="matrix(0.24,0,0,0.24,706.7842,-314.4)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:75px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text2679"><tspan
x="0 18.75 59.924999 81.824997 120.375 145.875 184.425 225.60001 259.42499 297.97501"
y="0"
sodipodi:role="line"
id="tspan2677">Inference</tspan></text>
</g>
<g
id="g2681"
transform="matrix(0.24,0,0,0.24,719.2843,-335.28)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:75px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text2685"><tspan
x="0 30.727501 69.254997 94.807503 129.735 168.2625"
y="0"
sodipodi:role="line"
id="tspan2683">server</tspan></text>
</g>
<path
d="m 229.8815,254.6984 v 34.2996 l -3,1e-4 v -34.2997 z m 3,32.7996 -4.4999,9 -4.5001,-8.9999 z"
style="fill:#4472c4;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path2687" />
<path
d="m 294.2197,331.6375 32.2079,-10e-5 v -3 l -32.2079,10e-5 z m 30.7079,2.9999 9,-4.5 -9,-4.5 z"
style="fill:#4472c4;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path2689" />
<path
d="m 465.6039,332.479 32.2079,-10e-5 v -3 l -32.2079,10e-5 z m 30.7079,2.9999 9,-4.5 -9,-4.5 z"
style="fill:#4472c4;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path2691" />
<path
d="m 636.9882,331.6218 h 32.2078 v -3 h -32.2078 z m 30.7079,3 8.9999,-4.5001 -9,-4.4999 z"
style="fill:#4472c4;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path2693" />
<path
d="m 745.6621,296.498 10e-5,-34.2996 -3,-10e-5 -10e-5,34.2997 z m 3.0001,-32.7996 -4.5,-9.0001 -4.5,9 z"
style="fill:#4472c4;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path2695" />
<path
d="m 745.6621,187.4194 10e-5,-26.3597 h -3 l -10e-5,26.3597 z m 3.0001,-24.8597 -4.5,-9 -4.5,9 z"
style="fill:#4472c4;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path2697" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 19 KiB

View File

@@ -0,0 +1,410 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="221.8651mm"
height="116.44902mm"
viewBox="0 0 221.8651 116.44902"
version="1.1"
id="svg5"
inkscape:version="1.1.2 (1:1.1+202202050950+0a00cf5339)"
sodipodi:docname="ch10-recommendation-models.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview7"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:zoom="0.64052329"
inkscape:cx="139.7295"
inkscape:cy="208.42334"
inkscape:window-width="1848"
inkscape:window-height="1136"
inkscape:window-x="72"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="g31" />
<defs
id="defs2">
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath41">
<path
d="M 0,1.206994e-5 H 959.76 V 540.00001 H 0 Z"
id="path39" />
</clipPath>
</defs>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-33.872301,-93.374718)">
<g
id="g31"
inkscape:label="ch10-recommendation-models"
transform="matrix(0.35277777,0,0,-0.35277777,-72.127508,259.40457)"
inkscape:transform-center-x="5.4120119"
inkscape:transform-center-y="14.561554">
<g
id="g33" />
<g
id="g45"
transform="translate(38.836459)">
<path
d="m 341.70731,426.19171 h 230.2644 v -17.0613 h -230.2644 z"
style="fill:#fbe5d6;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path49" />
<g
id="g51"
transform="matrix(7.874016e-5,0,0,-7.874016e-5,341.70731,426.19171)">
<path
d="M 0,0 H 2924358 V 216679 H 0 Z"
style="fill:none;stroke:#2f528f;stroke-width:12700;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:8;stroke-dasharray:none;stroke-opacity:1"
id="path53" />
</g>
<g
id="g55"
transform="matrix(0.24,0,0,0.24,577.21161,-126.07949)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:66.6667px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text59"><tspan
x="0 46.353329 61.439995 88.526657 109.87999 147.89998 170.31998 201.60664 219.82664 257.84665 277.66663 295.88663 312.5733 349.05997 370.4133 404.76663 427.18661 460.53995 490.75995 512.11328 527.19995 565.21997 601.7066 628.79327 647.01324 672.03326 690.25323 731.40662 764.75995 801.24658 839.79993 854.8866 893.43988 926.79321 948.14655 982.49988 1000.7199 1017.4066 1038.7599 1073.1133 1129.3999"
y="0"
sodipodi:role="line"
id="tspan57">History of Interactions / Candidate Items</tspan></text>
</g>
<path
d="m 461.64181,405.05411 10e-5,-13.022 h -3 l -10e-5,13.022 z m 3.0001,-11.522 -4.5,-9 -4.5,9 z"
style="fill:#4472c4;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path61" />
<path
d="m 272.25971,360.61831 c 0,14.0487 11.3887,25.4375 25.4374,25.4375 h 133.7049 c 14.0487,0 25.4375,-11.3888 25.4375,-25.4375 v -101.7469 c 0,-14.0487 -11.3888,-25.4374 -25.4375,-25.4374 h -133.7049 c -14.0487,0 -25.4374,11.3887 -25.4374,25.4374 z"
style="fill:#f8cbad;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path63" />
<g
id="g65"
transform="matrix(7.874016e-5,0,0,-7.874016e-5,272.25971,386.05581)">
<path
d="M 0,323055.9 C 0,144637.1 144636.9,0 323055.6,0 H 2021107 c 178419,0 323056,144637.1 323056,323055.9 V 1615241 c 0,178419 -144637,323056 -323056,323056 H 323055.6 C 144636.9,1938297 0,1793660 0,1615241 Z"
style="fill:none;stroke:#2f528f;stroke-width:12700;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:8;stroke-dasharray:none;stroke-opacity:1"
id="path67" />
</g>
<g
id="g69"
transform="matrix(0.24,0,0,0.24,320.42711,-226.15949)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:66.6667px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text73"><tspan
x="0 34.89333 69.786659 104.67999 139.57332 197.39998 215.62665 244.78664 263.01331 297.90665 332.79996"
y="0"
sodipodi:role="line"
id="tspan71">1000M x 100</tspan></text>
</g>
<g
id="g75"
transform="matrix(0.24,0,0,0.24,307.48711,-245.11949)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:66.6667px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text79"><tspan
x="0 44.273331 71.346657 105.75333 128.15999 146.36665 179.70665 235.97998 273.98663 308.39331 346.93329 385.4733 400.61328 437.08661"
y="0"
sodipodi:role="line"
id="tspan77">User Embedding</tspan></text>
</g>
<path
d="m 473.69021,379.57151 c 0,4.0434 3.2778,7.3212 7.3212,7.3212 h 157.4843 c 4.0434,0 7.3212,-3.2778 7.3212,-7.3212 v -29.2845 c 0,-4.0434 -3.2778,-7.3212 -7.3212,-7.3212 h -157.4843 c -4.0434,0 -7.3212,3.2778 -7.3212,7.3212 z"
style="fill:#f8cbad;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path81" />
<g
id="g83"
transform="matrix(7.874016e-5,0,0,-7.874016e-5,473.69021,386.89271)">
<path
d="M 0,92979.86 C 0,41628.5 41628.35,0 92979.53,0 H 2093030 c 51352,0 92980,41628.5 92980,92979.86 V 464892.1 c 0,51351.4 -41628,92979.9 -92980,92979.9 H 92979.53 C 41628.35,557872 0,516243.5 0,464892.1 Z"
style="fill:none;stroke:#2f528f;stroke-width:12700;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:8;stroke-dasharray:none;stroke-opacity:1"
id="path85" />
</g>
<g
id="g87"
transform="matrix(0.24,0,0,0.24,524.00361,-170.95949)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:66.6667px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text91"><tspan
x="0 34.89333 69.786659 127.61332 145.83998 174.99998 193.22665 228.11998 263.01331"
y="0"
sodipodi:role="line"
id="tspan89">10M x 100</tspan></text>
</g>
<g
id="g93"
transform="matrix(0.24,0,0,0.24,502.62861,-189.91949)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:66.6667px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text97"><tspan
x="0 16.666664 37.999996 72.399994 128.66666 146.86665 180.19998 236.46664 274.46664 308.86664 347.39996 385.93329 401.06662 437.53329"
y="0"
sodipodi:role="line"
id="tspan95">Item Embedding</tspan></text>
</g>
<path
d="m 473.69021,326.43531 c 0,4.0434 3.2778,7.3213 7.3212,7.3213 h 157.4843 c 4.0434,0 7.3212,-3.2779 7.3212,-7.3213 v -29.2844 c 0,-4.0434 -3.2778,-7.3213 -7.3212,-7.3213 h -157.4843 c -4.0434,0 -7.3212,3.2779 -7.3212,7.3213 z"
style="fill:#f8cbad;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path99" />
<g
id="g101"
transform="matrix(7.874016e-5,0,0,-7.874016e-5,473.69021,333.75661)">
<path
d="M 0,92979.86 C 0,41628.5 41628.35,0 92979.53,0 H 2093030 c 51352,0 92980,41628.5 92980,92979.86 V 464892.1 c 0,51351.4 -41628,92979.9 -92980,92979.9 H 92979.53 C 41628.35,557872 0,516243.5 0,464892.1 Z"
style="fill:none;stroke:#2f528f;stroke-width:12700;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:8;stroke-dasharray:none;stroke-opacity:1"
id="path103" />
</g>
<g
id="g105"
transform="matrix(0.24,0,0,0.24,515.56601,-223.99949)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:66.6667px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text109"><tspan
x="0 44.273331 71.346657 105.75333 128.15999 146.36665 187.50665 225.51331 261.98663 283.32663 317.73331 346.87329 368.21329"
y="0"
sodipodi:role="line"
id="tspan107">User Context</tspan></text>
</g>
<g
id="g111"
transform="matrix(0.24,0,0,0.24,520.25101,-242.95949)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:66.6667px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text115"><tspan
x="0 33.333328 89.599991 127.59999 161.99998 200.53331 239.06664 254.19998 290.66663"
y="0"
sodipodi:role="line"
id="tspan113">Embedding</tspan></text>
</g>
<path
d="m 473.69021,270.87671 c 0,4.0434 3.2778,7.3212 7.3212,7.3212 h 157.4843 c 4.0434,0 7.3212,-3.2778 7.3212,-7.3212 v -29.2845 c 0,-4.0434 -3.2778,-7.3212 -7.3212,-7.3212 h -157.4843 c -4.0434,0 -7.3212,3.2778 -7.3212,7.3212 z"
style="fill:#f8cbad;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path117" />
<g
id="g119"
transform="matrix(7.874016e-5,0,0,-7.874016e-5,473.69021,278.19791)">
<path
d="M 0,92979.86 C 0,41628.5 41628.35,0 92979.53,0 H 2093030 c 51352,0 92980,41628.5 92980,92979.86 V 464892.1 c 0,51351.4 -41628,92979.9 -92980,92979.9 H 92979.53 C 41628.35,557872 0,516243.5 0,464892.1 Z"
style="fill:none;stroke:#2f528f;stroke-width:12700;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:8;stroke-dasharray:none;stroke-opacity:1"
id="path121" />
</g>
<g
id="g123"
transform="matrix(0.24,0,0,0.24,515.50351,-279.67949)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:66.6667px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text127"><tspan
x="0 16.666664 37.999996 72.399994 128.66666 146.86665 187.99998 225.99998 262.46664 283.79996 318.19998 347.33331 368.66663"
y="0"
sodipodi:role="line"
id="tspan125">Item Context</tspan></text>
</g>
<g
id="g129"
transform="matrix(0.24,0,0,0.24,520.25351,-298.63949)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:66.6667px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text133"><tspan
x="0 33.333328 89.599991 127.59999 161.99998 200.53331 239.06664 254.19998 290.66663"
y="0"
sodipodi:role="line"
id="tspan131">Embedding</tspan></text>
</g>
<path
d="m 279.56401,216.03121 c 0,4.5998 3.7289,8.3288 8.3287,8.3288 h 345.5347 c 4.5998,0 8.3288,-3.729 8.3288,-8.3288 v -33.314 c 0,-4.5999 -3.729,-8.3288 -8.3288,-8.3288 h -345.5347 c -4.5998,0 -8.3287,3.7289 -8.3287,8.3288 z"
style="fill:#e7e6e6;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path135" />
<g
id="g137"
transform="matrix(7.874016e-5,0,0,-7.874016e-5,279.56401,224.36001)">
<path
d="M 0,105775.7 C 0,47357.38 47357.18,0 105775.2,0 H 4494066 c 58418,0 105775,47357.38 105775,105775.7 v 423087.6 c 0,58418.3 -47357,105775.7 -105775,105775.7 H 105775.2 C 47357.18,634639 0,587281.6 0,528863.3 Z"
style="fill:none;stroke:#2f528f;stroke-width:12700;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:8;stroke-dasharray:none;stroke-opacity:1"
id="path139" />
</g>
<path
d="m 310.44791,216.68441 h 300.5217 v -10.6908 h -300.5217 z"
style="fill:#ed7d31;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path141" />
<g
id="g143"
transform="matrix(7.874016e-5,0,0,-7.874016e-5,310.44791,216.68441)">
<path
d="M 0,0 H 3816626 V 135773 H 0 Z"
style="fill:none;stroke:#2f528f;stroke-width:12700;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:8;stroke-dasharray:none;stroke-opacity:1"
id="path145" />
</g>
<path
d="m 342.84481,195.76531 h 238.3239 v -10.6908 h -238.3239 z"
style="fill:#ed7d31;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path147" />
<g
id="g149"
transform="matrix(7.874016e-5,0,0,-7.874016e-5,342.84481,195.76531)">
<path
d="M 0,0 H 3026713 V 135773 H 0 Z"
style="fill:none;stroke:#2f528f;stroke-width:12700;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:8;stroke-dasharray:none;stroke-opacity:1"
id="path151" />
</g>
<path
d="m 382.13131,156.01991 h 156.0208 v -14.9758 h -156.0208 z"
style="fill:#fbe5d6;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path153" />
<g
id="g155"
transform="matrix(7.874016e-5,0,0,-7.874016e-5,382.13131,156.01991)">
<path
d="M 0,0 H 1981465 V 190193 H 0 Z"
style="fill:none;stroke:#2f528f;stroke-width:12700;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:8;stroke-dasharray:none;stroke-opacity:1"
id="path157" />
</g>
<path
d="m 461.64141,177.20781 0.3528,-15.9888 -2.9993,-0.0662 -0.3528,15.9888 z m 3.319,-14.423 -4.3004,-9.097 -4.6974,8.8985 z"
style="fill:#4472c4;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path159" />
<g
id="g161"
transform="matrix(0.24,0,0,0.24,548.91311,-397.27949)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:66.6667px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text165"><tspan
x="0 38.539997 72.946663 103.15332 141.15999 197.43332 253.70663 288.11331 324.58664 363.12662 396.46661 417.80661 432.94662 470.95328 507.42661 534.49994 552.7066 577.71326 595.91992 634.45996 667.79993 704.27325"
y="0"
sodipodi:role="line"
id="tspan163">Recommendations / Rank</tspan></text>
</g>
<g
id="g167"
transform="matrix(0.24,0,0,0.24,678.38511,-230.95949)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:75px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text171"><tspan
x="0 37.5 100.5 143.7 182.25 225.45 268.64999 285.29999 326.47501"
y="0"
sodipodi:role="line"
id="tspan169">Embedding</tspan></text>
</g>
<g
id="g173"
transform="matrix(0.24,0,0,0.24,656.63511,-252.07949)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:75px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text177"><tspan
x="0 39.584999 79.169998 118.755 149.49001 169.8 220.33501 262.01999"
y="0"
sodipodi:role="line"
id="tspan175">100s GB</tspan></text>
</g>
<g
id="g179"
transform="matrix(0.24,0,0,0.24,724.38501,-252.07949)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:75px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text183"><tspan
x="0"
y="0"
id="tspan181"></tspan></text>
</g>
<g
id="g185"
transform="matrix(0.24,0,0,0.24,738.26001,-252.07949)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:75px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text189"><tspan
x="0 39.584999 79.169998 109.905 130.215 169.27499"
y="0"
sodipodi:role="line"
id="tspan187">10s TB</tspan></text>
</g>
<g
id="g191"
transform="matrix(0.24,0,0,0.24,653.46281,-334.63949)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:75px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text195"><tspan
x="0 51.5625 90.074997 128.58749 171.825 192.1125 246.825 285.33749 326.47501 352.01251 389.47501 406.16251 426.45001 481.16251 519.67499 543.63751 596.25 639.48749 665.02502 700.46252 731.17499 751.46252 773.32501 824.88751 879.59998 934.3125 965.02502"
y="0"
sodipodi:role="line"
id="tspan193">Deep Neural Networks (DNNs)</tspan></text>
</g>
<g
id="g197"
transform="matrix(0.24,0,0,0.24,704.39781,-355.51949)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:75px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text201"><tspan
x="0 39.584999 79.169998 109.905 130.215 180.75 222.435"
y="0"
sodipodi:role="line"
id="tspan199">10s GB</tspan></text>
</g>
<g
id="g203"
transform="matrix(0.24,0,0,0.24,762.64771,-355.51949)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:75px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text207"><tspan
x="0"
y="0"
id="tspan205"></tspan></text>
</g>
<g
id="g209"
transform="matrix(0.24,0,0,0.24,776.52271,-355.51949)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:75px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text213"><tspan
x="0 39.584999 79.169998 118.755 149.49001 169.8 220.33501"
y="0"
sodipodi:role="line"
id="tspan211">100s GB</tspan></text>
</g>
<g
id="g215"
transform="matrix(0.24,0,0,0.24,259.79951,-84.559494)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:bold;font-size:83.3333px;font-family:DengXian;-inkscape-font-specification:DengXian-Bold;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text219"><tspan
x="0 59.899998 104.175 148.45 198.45 221.36665 261.99167 306.26666 350.01666 380.74164 429.18332 451.05832 499.49997 549.5 572.41663 624.5 668.76666 707.83331 757.83331 831.79163 905.74994 950.0166 998.45831 1048.4583 1092.2083 1122.4166 1144.2916 1194.2916 1242.7333 1265.6499 1342.7333 1392.7333 1442.7333 1487.0083 1508.8833 1531.7999 1559.3999 1619.2999 1659.9249 1712.0083 1789.0916"
y="0"
sodipodi:role="line"
id="tspan217">Deep Learning Recommendation Model (DLRM)</tspan></text>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 22 KiB

View File

@@ -0,0 +1,492 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="189.60625mm"
height="133.89859mm"
viewBox="0 0 189.60625 133.89859"
version="1.1"
id="svg3164"
inkscape:version="1.1.2 (1:1.1+202202050950+0a00cf5339)"
sodipodi:docname="ch10-recommendation-systems.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview3166"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:document-units="mm"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:zoom="0.78840488"
inkscape:cx="-32.343788"
inkscape:cy="173.13439"
inkscape:window-width="1848"
inkscape:window-height="1136"
inkscape:window-x="72"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="g3270" />
<defs
id="defs3161">
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath3280">
<path
d="M 0,1.206994e-5 H 959.76 V 540.00001 H 0 Z"
id="path3278" />
</clipPath>
</defs>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-10.417964,-102.80125)">
<g
id="g3270"
inkscape:label="ch10-recommendation-systems"
transform="matrix(0.35277777,0,0,-0.35277777,-64.112267,264.95213)">
<g
id="g3272" />
<g
id="g3284">
<path
d="m 211.7668,458.0968 h 197.868 V 145.3991 h -197.868 z"
style="fill:#e7e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path3288" />
<g
id="g3290"
transform="matrix(7.874016e-5,0,0,-7.874016e-5,211.7668,458.0968)">
<path
d="M 0,0 H 2512924 V 3971261 H 0 Z"
style="fill:none;stroke:#2f528f;stroke-width:12700;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:8;stroke-dasharray:none;stroke-opacity:1"
id="path3292" />
</g>
<path
d="M 430.4942,459.1402 H 573.9724 V 145.3991 H 430.4942 Z"
style="fill:#e7e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path3294" />
<g
id="g3296"
transform="matrix(7.874016e-5,0,0,-7.874016e-5,430.4942,459.1402)">
<path
d="M 0,0 H 1822173 V 3984513 H 0 Z"
style="fill:none;stroke:#2f528f;stroke-width:12700;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:8;stroke-dasharray:none;stroke-opacity:1"
id="path3298" />
</g>
<path
d="M 604.7551,459.1403 H 748.2333 V 145.3991 H 604.7551 Z"
style="fill:#e7e6e6;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path3300" />
<g
id="g3302"
transform="matrix(7.874016e-5,0,0,-7.874016e-5,604.7551,459.1403)">
<path
d="M 0,0 H 1822173 V 3984513 H 0 Z"
style="fill:none;stroke:#2f528f;stroke-width:12700;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:8;stroke-dasharray:none;stroke-opacity:1"
id="path3304" />
</g>
<path
d="m 241.6388,398.3336 c 0,6.1929 5.0204,11.2133 11.2134,11.2133 h 109.2496 c 6.193,0 11.2134,-5.0204 11.2134,-11.2133 v -44.8523 c 0,-6.1929 -5.0204,-11.2133 -11.2134,-11.2133 H 252.8522 c -6.193,0 -11.2134,5.0204 -11.2134,11.2133 z"
style="fill:#deebf7;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path3306" />
<g
id="g3308"
transform="matrix(7.874016e-5,0,0,-7.874016e-5,241.6388,409.5469)">
<path
d="M 0,142409.9 C 0,63759.09 63759.06,0 142409.8,0 H 1529880 c 78651,0 142410,63759.09 142410,142409.9 v 569623.2 c 0,78650.8 -63759,142409.9 -142410,142409.9 H 142409.8 C 63759.06,854443 0,790683.9 0,712033.1 Z"
style="fill:none;stroke:#2f528f;stroke-width:12700;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:8;stroke-dasharray:none;stroke-opacity:1"
id="path3310" />
</g>
<g
id="g3312"
transform="matrix(0.24,0,0,0.24,267.727,-148.8)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:75px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text3316"><tspan
x="0 41.145 78.614998 104.16 141.63 204.675 243.19501 267.16501 305.685 331.23001"
y="0"
sodipodi:role="line"
id="tspan3314">Parameter</tspan></text>
</g>
<g
id="g3318"
transform="matrix(0.24,0,0,0.24,254.102,-169.68)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:75px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text3322"><tspan
x="0 38.5425 77.084999 102.5775 137.44501 175.9875 201.48 221.7975 268.14001 284.7825 325.95001 356.6925 380.685 419.22751"
y="0"
sodipodi:role="line"
id="tspan3320">Server Cluster</tspan></text>
</g>
<g
id="g3324"
transform="matrix(0.24,0,0,0.24,253.977,-191.76)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:75px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text3328"><tspan
x="0 21.877501 61.455002 101.0325 140.61 171.33749 191.64 230.1675 268.69501 294.2475 329.17499 367.70251 393.255 423.98251"
y="0"
sodipodi:role="line"
id="tspan3326">(100s Servers)</tspan></text>
</g>
<path
d="m 241.6388,215.8224 c 0,6.193 5.0204,11.2134 11.2134,11.2134 h 109.2496 c 6.193,0 11.2134,-5.0204 11.2134,-11.2134 v -44.8522 c 0,-6.193 -5.0204,-11.2134 -11.2134,-11.2134 H 252.8522 c -6.193,0 -11.2134,5.0204 -11.2134,11.2134 z"
style="fill:#e2f0d9;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path3330" />
<g
id="g3332"
transform="matrix(7.874016e-5,0,0,-7.874016e-5,241.6388,227.0358)">
<path
d="M 0,142409.9 C 0,63759.09 63759.06,0 142409.8,0 H 1529880 c 78651,0 142410,63759.09 142410,142409.9 v 569623.2 c 0,78650.8 -63759,142409.9 -142410,142409.9 H 142409.8 C 63759.06,854443 0,790683.9 0,712033.1 Z"
style="fill:none;stroke:#2f528f;stroke-width:12700;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:8;stroke-dasharray:none;stroke-opacity:1"
id="path3334" />
</g>
<g
id="g3336"
transform="matrix(0.24,0,0,0.24,276.1645,-331.2)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:75px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text3340"><tspan
x="0 39.060001 64.620003 102.105 118.74 159.89999 176.535 217.69501 260.95499"
y="0"
sodipodi:role="line"
id="tspan3338">Training</tspan></text>
</g>
<g
id="g3342"
transform="matrix(0.24,0,0,0.24,279.0395,-352.32)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:75px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text3346"><tspan
x="0 68.752502 112.005 137.5575 173.00999 211.53751 237.09"
y="0"
sodipodi:role="line"
id="tspan3344">Worker</tspan></text>
</g>
<g
id="g3348"
transform="matrix(0.24,0,0,0.24,280.7245,-374.16)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:75px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text3352"><tspan
x="0 46.357498 63.014999 104.1225 134.88 158.8125 197.37"
y="0"
sodipodi:role="line"
id="tspan3350">Cluster</tspan></text>
</g>
<path
d="m 435.5212,332.8103 c 0,8.6213 6.9889,15.6103 15.6102,15.6103 h 100.4559 c 8.6213,0 15.6103,-6.989 15.6103,-15.6103 v -62.4387 c 0,-8.6213 -6.989,-15.6102 -15.6103,-15.6102 H 451.1314 c -8.6213,0 -15.6102,6.9889 -15.6102,15.6102 z"
style="fill:#deebf7;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path3354" />
<g
id="g3356"
transform="matrix(7.874016e-5,0,0,-7.874016e-5,435.5212,348.4206)">
<path
d="M 0,198249.9 C 0,88759.51 88759.44,0 198249.8,0 H 1474040 c 109491,0 198250,88759.51 198250,198249.9 v 792972.2 c 0,109489.9 -88759,198249.9 -198250,198249.9 H 198249.8 C 88759.44,1189472 0,1100712 0,991222.1 Z"
style="fill:none;stroke:#2f528f;stroke-width:12700;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:8;stroke-dasharray:none;stroke-opacity:1"
id="path3358" />
</g>
<g
id="g3360"
transform="matrix(0.24,0,0,0.24,461.6093,-212.16)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:75px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text3364"><tspan
x="0 41.145 78.614998 104.16 141.63 204.675 243.19501 267.16501 305.685 331.23001"
y="0"
sodipodi:role="line"
id="tspan3362">Parameter</tspan></text>
</g>
<g
id="g3366"
transform="matrix(0.24,0,0,0.24,477.1744,-233.28)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:75px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text3370"><tspan
x="0 38.5425 77.084999 102.5775 137.44501 175.9875 201.48"
y="0"
sodipodi:role="line"
id="tspan3368">Server</tspan></text>
</g>
<g
id="g3372"
transform="matrix(0.24,0,0,0.24,470.1094,-255.12)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:75px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text3376"><tspan
x="0 43.23 81.809998 125.04 141.72 158.39999 192.255 229.785"
y="0"
sodipodi:role="line"
id="tspan3374">Replicas</tspan></text>
</g>
<g
id="g3378"
transform="matrix(0.24,0,0,0.24,447.8594,-277.2)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:75px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text3382"><tspan
x="0 21.877501 61.455002 101.0325 140.61 171.33749 191.64 230.1675 268.69501 294.2475 329.17499 367.70251 393.255 423.98251"
y="0"
sodipodi:role="line"
id="tspan3380">(100s Servers)</tspan></text>
</g>
<path
d="m 609.782,332.8104 c 0,8.6213 6.989,15.6102 15.6103,15.6102 h 100.4559 c 8.6213,0 15.6102,-6.9889 15.6102,-15.6102 v -62.4387 c 0,-8.6213 -6.9889,-15.6102 -15.6102,-15.6102 H 625.3923 c -8.6213,0 -15.6103,6.9889 -15.6103,15.6102 z"
style="fill:#deebf7;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path3384" />
<g
id="g3386"
transform="matrix(7.874016e-5,0,0,-7.874016e-5,609.782,348.4206)">
<path
d="M 0,198249.8 C 0,88759.45 88759.44,0 198249.8,0 H 1474040 c 109491,0 198250,88759.45 198250,198249.8 v 792971.6 c 0,109490.6 -88759,198249.6 -198250,198249.6 H 198249.8 C 88759.44,1189471 0,1100712 0,991221.4 Z"
style="fill:none;stroke:#2f528f;stroke-width:12700;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:8;stroke-dasharray:none;stroke-opacity:1"
id="path3388" />
</g>
<g
id="g3390"
transform="matrix(0.24,0,0,0.24,635.8702,-212.16)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:75px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text3394"><tspan
x="0 41.145 78.614998 104.16 141.63 204.675 243.19501 267.16501 305.685 331.23001"
y="0"
sodipodi:role="line"
id="tspan3392">Parameter</tspan></text>
</g>
<g
id="g3396"
transform="matrix(0.24,0,0,0.24,651.4352,-233.28)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:75px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text3400"><tspan
x="0 38.5425 77.084999 102.5775 137.44501 175.9875 201.48"
y="0"
sodipodi:role="line"
id="tspan3398">Server</tspan></text>
</g>
<g
id="g3402"
transform="matrix(0.24,0,0,0.24,644.3702,-255.12)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:75px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text3406"><tspan
x="0 43.23 81.809998 125.04 141.72 158.39999 192.255 229.785"
y="0"
sodipodi:role="line"
id="tspan3404">Replicas</tspan></text>
</g>
<g
id="g3408"
transform="matrix(0.24,0,0,0.24,622.1202,-277.2)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:75px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text3412"><tspan
x="0 21.877501 61.455002 101.0325 140.61 171.33749 191.64 230.1675 268.69501 294.2475 329.17499 367.70251 393.255 423.98251"
y="0"
sodipodi:role="line"
id="tspan3410">(100s Servers)</tspan></text>
</g>
<path
d="m 373.3152,377.4074 h 129.5442 v -21.4868 h -3 v 19.9868 l 1.5,-1.5 H 373.3152 Z m 132.5442,-19.9868 -4.5,-9 -4.5,9 z"
style="fill:#4472c4;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path3414" />
<path
d="m 373.3152,377.4074 h 303.805 v -21.4868 h -3 v 19.9868 l 1.5,-1.5 h -302.305 z m 306.805,-19.9868 -4.5,-9 -4.5,9 z"
style="fill:#4472c4;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path3416" />
<path
d="m 435.5212,214.2697 c 0,6.193 5.0204,11.2134 11.2134,11.2134 h 109.2496 c 6.193,0 11.2134,-5.0204 11.2134,-11.2134 v -44.8522 c 0,-6.193 -5.0204,-11.2134 -11.2134,-11.2134 H 446.7346 c -6.193,0 -11.2134,5.0204 -11.2134,11.2134 z"
style="fill:#e2f0d9;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path3418" />
<g
id="g3420"
transform="matrix(7.874016e-5,0,0,-7.874016e-5,435.5212,225.4831)">
<path
d="M 0,142409.9 C 0,63759.09 63759.06,0 142409.8,0 H 1529880 c 78651,0 142410,63759.09 142410,142409.9 v 569623.2 c 0,78650.8 -63759,142409.9 -142410,142409.9 H 142409.8 C 63759.06,854443 0,790683.9 0,712033.1 Z"
style="fill:none;stroke:#2f528f;stroke-width:12700;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:8;stroke-dasharray:none;stroke-opacity:1"
id="path3422" />
</g>
<g
id="g3424"
transform="matrix(0.24,0,0,0.24,465.6094,-343.44)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:75px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text3428"><tspan
x="0 18.75 59.924999 81.824997 120.375 145.875 184.425 225.60001 259.42499 297.97501"
y="0"
sodipodi:role="line"
id="tspan3426">Inference</tspan></text>
</g>
<g
id="g3430"
transform="matrix(0.24,0,0,0.24,474.6094,-364.56)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:75px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text3434"><tspan
x="0 46.357498 63.014999 104.1225 134.88 158.8125 197.37"
y="0"
sodipodi:role="line"
id="tspan3432">Cluster</tspan></text>
</g>
<path
d="m 609.5173,214.779 c 0,6.193 5.0204,11.2134 11.2134,11.2134 h 109.2496 c 6.193,0 11.2134,-5.0204 11.2134,-11.2134 v -44.8522 c 0,-6.193 -5.0204,-11.2134 -11.2134,-11.2134 H 620.7307 c -6.193,0 -11.2134,5.0204 -11.2134,11.2134 z"
style="fill:#e2f0d9;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path3436" />
<g
id="g3438"
transform="matrix(7.874016e-5,0,0,-7.874016e-5,609.5173,225.9924)">
<path
d="M 0,142409.9 C 0,63759.09 63759.06,0 142409.8,0 H 1529880 c 78651,0 142410,63759.09 142410,142409.9 v 569623.2 c 0,78650.8 -63759,142409.9 -142410,142409.9 H 142409.8 C 63759.06,854443 0,790683.9 0,712033.1 Z"
style="fill:none;stroke:#2f528f;stroke-width:12700;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:8;stroke-dasharray:none;stroke-opacity:1"
id="path3440" />
</g>
<g
id="g3442"
transform="matrix(0.24,0,0,0.24,639.6055,-342.96)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:75px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text3446"><tspan
x="0 18.75 59.924999 81.824997 120.375 145.875 184.425 225.60001 259.42499 297.97501"
y="0"
sodipodi:role="line"
id="tspan3444">Inference</tspan></text>
</g>
<g
id="g3448"
transform="matrix(0.24,0,0,0.24,648.6055,-364.08)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:75px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text3452"><tspan
x="0 46.357498 63.014999 104.1225 134.88 158.8125 197.37"
y="0"
sodipodi:role="line"
id="tspan3450">Cluster</tspan></text>
</g>
<path
d="m 308.977,334.768 1e-4,-100.2323 h -3 l -1e-4,100.2323 z m -6,-1.5 4.5,9 4.5,-9 z m 9.0001,-97.2322 -4.5,-9 -4.5,9 z"
style="fill:#4472c4;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path3454" />
<path
d="m 502.8593,254.7614 10e-5,-21.7783 h -3 l -10e-5,21.7782 z m 3.0001,-20.2783 -4.5,-9 -4.5,9 z"
style="fill:#4472c4;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path3456" />
<path
d="m 674.1203,254.7752 -0.1958,-21.2693 2.9999,-0.0276 0.1957,21.2693 z m -3.1818,-19.7418 4.417,-9.041 4.5826,8.9582 z"
style="fill:#4472c4;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path3458" />
<g
id="g3460"
transform="matrix(0.24,0,0,0.24,239.7701,-104.16)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:75px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text3464"><tspan
x="0 51.5625 89.025002 112.9875 150.45 170.7375 217.125 255.6375 296.77499 320.73749 346.27499 384.78751 405.07501 426.9375 478.5 524.88751"
y="0"
sodipodi:role="line"
id="tspan3462">Data Centre (DC)</tspan></text>
</g>
<g
id="g3466"
transform="matrix(0.24,0,0,0.24,375.8952,-104.16)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:75px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text3470"><tspan
x="0"
y="0"
id="tspan3468">1</tspan></text>
</g>
<g
id="g3472"
transform="matrix(0.24,0,0,0.24,484.6233,-101.28)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:75px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text3476"><tspan
x="0 51.5625 97.949997 118.2375"
y="0"
sodipodi:role="line"
id="tspan3474">DC 2</tspan></text>
</g>
<g
id="g3478"
transform="matrix(0.24,0,0,0.24,659.5434,-101.28)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:75px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text3482"><tspan
x="0 51.5625 97.949997 118.2375"
y="0"
sodipodi:role="line"
id="tspan3480">DC 3</tspan></text>
</g>
<path
d="M 211.7668,127.5573 H 748.2333 V 80.58521 H 211.7668 Z"
style="fill:#fff2cc;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path3484" />
<g
id="g3486"
transform="matrix(7.874016e-5,0,0,-7.874016e-5,211.7668,127.5573)">
<path
d="M 0,0 H 6813125 V 596545 H 0 Z"
style="fill:none;stroke:#2f528f;stroke-width:12700;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:8;stroke-dasharray:none;stroke-opacity:1"
id="path3488" />
</g>
<g
id="g3490"
transform="matrix(0.24,0,0,0.24,304.1875,-442.08)">
<text
transform="matrix(1,0,0,-1,0,2250)"
style="font-variant:normal;font-weight:normal;font-size:75px;font-family:DengXian;-inkscape-font-specification:DengXian-Regular;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="text3494"><tspan
x="0 50.52 67.214996 110.46 153.705 191.175 207.87 228.16499 279.73499 318.255 353.17499 369.87 403.73999 442.26001 472.98001 493.27499 545.89502 562.59003 586.56 627.70502 648 691.245 729.76501 763.63501 806.88 869.92499 932.96997 971.48999 1012.635 1055.88 1093.35 1117.3199 1134.015 1177.26 1218.405 1238.7 1277.22 1315.74 1341.285 1376.205 1392.9 1426.77"
y="0"
sodipodi:role="line"
id="tspan3492">Global Devices with Recommendation Service</tspan></text>
</g>
<path
d="m 501.9562,157.1873 v -21.7034 h -3 v 21.7034 z m 3,-20.2033 -4.4999,-9.0001 -4.5001,9 z"
style="fill:#4472c4;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path3496" />
<path
d="m 676.9328,157.1873 10e-5,-21.7034 h -3 l -10e-5,21.7034 z m 3.0001,-20.2033 -4.5,-9.0001 -4.5,9 z"
style="fill:#4472c4;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path3498" />
<path
d="m 308.977,128.4665 1e-4,23.7903 h -3 l -1e-4,-23.7903 z m 3.0001,22.2903 -4.5,9 -4.5,-9 z"
style="fill:#4472c4;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path3500" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 26 KiB