经过移动计算而不是数据来扩展 架构反转
发布时间:2024-11-15 04:41:17点击:
大型玩家的扩展技巧正变得越来越关键,这造成了架构反转的激增。
你能否曾经想过,环球上最大的互联网和社交媒体公司是如何如此极速地向如此多的用户提供算法内容的?
想想像 TikTok 这样的公司须要做些什么才干为人们提供源源不时的共性化视频片段。他们领有某个模型来代表用户,他们须要经常使用这个模型从数十亿个备选视频中找到最适宜向特定用户展现的视频片段。而且,由于他们也有数十亿用户,他们须要每秒启动数百万次这样的操作。
传统处置打算
处置 TikTok 疑问的简双方法是将用户模型与每个视频片段启动比拟,以确定每个视频片段与该用户的婚配水平。妇孺皆知,这种蛮力方法无法扩展——关于十亿个视频和每秒一百万个恳求,这将变成每秒一千万亿次比拟!
对此的清楚处置打算是索引:保养一个数据结构,使之能够从用户模型中找到适宜的视频片段,而无需思考每个片段。例如,假设用户模型留意到对英语视频的偏好,则可以将视频与 B 树索引,该 B 树间接指向英语视频,以便可以疏忽其他视频。或许,假设用户示意为兴味向量嵌入,则可以经常使用向量索引(如分层可导航小环球 (HNSW) 算法)来查找具备相似向量的视频,而无需思考其他视频。
实践系统将经常使用这些索引的组合。如今,索引只提供关于哪些视频或许适宜用户的粗略批示。为了真正出现用户发现最幽默或最有用的内容,你须要在用户模型和每个候选名目之间启动更准确的比拟——如今通经常常使用神经网络来成功。这就是事情变得幽默的中央。
不影响品质的扩展
从新评分的经常出现方法是将从索引中检索到的候选名目传递给架构中的另一个组件,该组件口头每个名目的详细评分。应该以这种形式从新评分多少个名目?这应该是一切候选名目的必定比例。
要了解这一点,请思考索引检索加上从新评分是对一切候选名目的蛮力评分的近似值,咱们须要思考的是这种提升带来的品质损失。这可以用给定视频(假设经常使用蛮力评价将显示给用户)出如今要从新排序的汇合中的概率来示意。
随着该汇合相关于候选名目完整汇合的大小变小,该概率趋于零。随着要从新评分的比例减小,品质损失会变大,并且随着完整评分算法的改良,品质损失也会变大,由于有更多物品要失去。
让咱们详细一点,假定咱们想要从新评分 1% 的候选名目,并且每个名目蕴含 2kb 的对最终评分有用的数据(大概一个向量和一百个属性)。关于十亿个名目,这象征着每个恳求须要从新评分 1000 万个名目,而关于每秒一百万个恳求,这象征着咱们须要每秒移动 20 PB 的数据启动从新排序!即使是这个小比例也显然离可行性很远,那么大型公司在做什么呢?
答案是他们没有将数据移动到评分计算节点,而是将评分计算移动到索引中,以便在数据所在的位置本地口头,从而绕过了整个疑问。
架构反转行未来到
如今,为什么咱们其他人应该关心这个疑问,由于咱们很幸运地没有像 TikTok、Google 等公司那样领有数十亿用户?许多要素变得越来越关键:
出于这些要素,最大玩家的扩展技巧关于咱们其他人来说变得越来越关键,这造成了的架构反转的激增,从传统的两层系统(其中数据从搜查引擎或数据库中查找并发送到有形态计算层)转变为将该计算拔出数据自身。
如今,要真正做到这一点,您还须要一个能够实践治理您的数据的平台,以这种形式对数据启动索引和计算。这造成了Vespa.ai的遍及,该平台最后是雅虎在还是大型玩家之一时用于架构反转的处置打算。该技术起初开源了。
Vespa.ai 准许您将结构化数据、向量/张量和全文一同存储和索引在恣意数量的机器上,并在数据存储的本地口头任何类型的张量计算和机器学习推理。