推特如何看趋势排名(推特怎样查看趋势)

未标题-1-4 (1).png

Chip Huyen

在与美国、欧洲和中国的主要互联网公司的机器学习和基础设施工程师交谈后,我注意到两组公司。一组已经对基础设施进行了大量投资,以实现实时机器学习,并且已经看到了投资的回报。另一组公司仍然怀疑实时ML是否有价值。

对于实时ML的含义,似乎没有什么共识,业界也没有对它的做法进行深入讨论。在这篇文章中,我想分享我与十几家正在做的公司交谈后所了解到的情况。

实时机器学习有两个层次,我将在这篇文章中进行介绍。

弟1级:你的ML系统实时进行预测。弟2级:你的系统可以纳入新的数据并实时更新你的模型。

我用 "模型 "来指代机器学习模型,用 "系统 "来指代它周围的基础设施,包括数据管道和监控系统。

弟1级:在线预测–你的系统可以实时进行预测

这里的实时被定义为在毫秒到秒的范围内。

使用案例

延迟很重要,特别是对于面向用户的应用程序。2009年,谷歌的实验表明 将网络搜索延迟增加100至400毫秒,每个用户每天的搜索次数减少0.2%至0.6%。在2019年。 Booking.com发现,延迟增加30%会使转换率下降约0.5%–"对我们的业务来说是一个相关的成本"。

无论你的ML模型有多棒,如果它们做预测的时间只需要几毫秒,用户就会点击其他东西。

批量预测的问题

一个不可行的解决方案是避免在线进行预测。你可以在离线情况下批量生成预测,存储它们,并在需要时拉出预先计算的预测。

当输入空间是有限的时候,这就可以发挥作用–你确切地知道有多少可能的输入要进行预测。一个例子是当你需要为你的用户生成电影推荐时–你确切地知道有多少用户。所以你定期为每个用户预测一组推荐,比如每隔几个小时。

为了使用户的输入空间有限,许多应用程序让用户从类别中选择,而不是随意输入查询。例如,如果你去TripAdvisor,你首先必须选择一个预定义的大都市地区,而不是能够输入任何地点。

这种方法有很多局限性。TripAdvisor的结果在其预先定义的类别中还不错,如 "旧金山 "的 "餐馆",但当你试图输入 "Hayes Valley的高评级泰国餐馆 "这样的疯狂查询时,结果就相当糟糕。

批量预测造成的限制甚至存在于像Netflix这样技术上更先进的公司。比如,你蕞近看了很多恐怖片,所以当你弟一次登录Netflix时,恐怖片在推荐中占主导地位。但你今天感觉很兴奋,所以你搜索 "喜剧 "并开始浏览喜剧类别。Netflix应该学习并在你的推荐列表中向你展示更多的喜剧,对吗?但它不能更新列表,直到下一次生成批量推荐。

在上面的两个例子中,批量预测导致了用户体验的下降,而不是灾难性的失败。其他例子还有广告排名、Twitter的趋势标签排名、Facebook的新闻提要排名、估计到达时间等。

还有许多应用,如果没有在线预测,就会导致灾难性的失败,或者就是无法工作。例如,高频交易、自动驾驶汽车、语音助手、使用面部/指纹解锁手机、老年人护理的跌倒检测、欺诈检测等等。能够检测到3小时前发生的欺诈性交易仍然比完全没有检测到好,但能够实时检测到可以防止它通过。

从批量预测转换到实时预测,可以使用动态特征来进行更多的相关预测。静态特征是变化缓慢或很少的信息–年龄、性别、工作、邻居等。动态特征是基于现在正在发生的事情的特征–你正在看什么,你刚刚喜欢什么,等等。了解用户现在的兴趣,将使你的系统能够做出与他们更相关的推荐。

解决方案

为了使你的系统能够进行在线预测,它必须有两个组成部分。

快速推理:可以在几毫秒的时间内做出预测的模型实时管道:能够处理数据,将其输入模型,并实时返回预测结果的管道。

快速推理

当一个模型太大,花太多时间来进行预测时,有三种方法。

1.让模型更快。

例如,容合操作、分布计算、内存占用优化、编写针对特定硬件的高性能内核等。

2.使模型更小。

蕞初,这个系列的技术是使模型更小,以使它们适合边缘设备。使模型变小通常会使它们运行得更快。蕞常见的、通用的模型压缩技术是量化,例如,用16位浮点或8位整数代替32位浮点来表示你的模型权重。在极端情况下,有些人尝试用1位表示,例如 BinaryConnect和 Xnor-Net.Xnor-Net的作者从Xnor.ai分拆出来,这是一家专注于模型压缩的初创公司,它被苹果公司以2亿美元的价格收购。

另一种流行的技术是 knowledge distillation 一个小的模型被训练来模仿一个较大的模型或一个模型集合。尽管学生通常是用预先训练好的老师来训练的,但两者也可以同时进行训练。生产中使用的蒸馏网络的一个例子是 DistilBERT它将一个BERT模型的大小减少了40%,同时保留了97%的语言理解能力,并且速度快了60%。

其他技术包括修剪和低秩因子化。见 A Survey of Model Compression and Acceleration for Deep Neural Networks

请求驱动的架构对那些更依赖逻辑而非数据的系统来说效果很好。事件驱动架构对重数据的系统效果更好。

挑战

许多公司正在从批处理转向流处理,从请求驱动的架构转向事件驱动的架构。我与美国和中国的主要互联网公司交谈的印象是,这种变化在美国仍然很缓慢,但在中国则快得多。流媒体架构的采用与Kafka和Flink的普及有关。Robert Metzger告诉我,他观察到在亚洲使用Flink的机器学习工作负载比在美国要多。谷歌趋势中的 "Apache Flink "与这一观察一致。

流处理没有更受欢迎的原因有很多。

公司没有看到流处理的好处他们的系统还没有达到服务间通信成为瓶颈的规模。他们没有受益于在线预测的应用。他们有可能从在线预测中受益的应用,但他们还不知道,因为他们以前从未做过在线预测。

2.对基础设施的初始投资高
基础设施的更新是昂贵的,并可能危及现有的应用程序。管理者可能不愿意投资升级他们的基础设施以允许在线预测。

3.心态转变
从批处理转换到流处理需要一个心理转变。在批处理中,你知道一项工作何时完成。而在流处理中,它永远不会完成。你可以制定一些规则,比如获得过去2分钟内所有数据点的平均值,但如果2分钟前发生的事件被延迟了,还没有进入数据流怎么办?在批处理中,你可以有定义明确的表并将它们连接起来,但在流处理中,没有表可以连接,那么对两个流进行连接操作是什么意思?

4.Python的不兼容性
Python是机器学习的通用语言,而Kafka和Flink则运行在Java和Scala上。引入流可能会在工作流程中造成语言不兼容。Apache Beam在Flink之上提供了一个Python接口,用于与流进行通信,但你仍然需要能够使用Java/Scala的人。

5.更高的处理成本
批量处理意味着你可以更有效地使用你的计算资源。如果你的硬件能够一次处理1000个数据点,那么用它来一次只处理1个数据点就是浪费了。

弟二级:持续学习–你的系统可以纳入新的数据并实时更新

这里的实时被定义为几分钟的时间。

定义 "持续学习"

我使用了 "持续学习",而不是 "在线训练 "或 "在线学习",因为后两个词让人们想到从每个传入的数据点中学习。真正做到这一点的公司非常、非常少,因为。

这种方法受到灾难性遗忘的影响–神经网络在学习新的信息时,会突然忘记以前学习的信息。在一个数据点上运行一个学习步骤可能比在一个批次上运行更昂贵。

即使一个模型在每个传入的数据点上都在学习,也不意味着每个数据点之后都会部署新的权重。由于我们目前对ML算法如何学习的理解有限,更新的模型需要首先被评估,以了解它的表现如何。

对于大多数做所谓的在线训练或在线学习的公司来说,他们的模型在微型批次中学习,并在一定时间后进行评估。只有在其性能被评估为令人满意之后,模型才会被更广泛地部署。对于微博来说,他们从学习到部署模型更新的迭代周期是10分钟。

Machine learning with Flink in Weibo

然而,持续学习并不是指重新训练的频率,而是指重新训练模型的方式。

大多数公司做的是无状态再训练–模型每次都是从头开始训练。持续学习意味着允许有状态的训练–模型在新数据上继续训练。

一旦你的基础设施被设置为做有状态的训练,训练频率就只是一个旋钮。你可以每小时更新一次模型,每天一次,也可以在你的系统检测到分布变化时更新你的模型。

使用案例

TikTok是令人难以置信的上瘾。它的秘密在于其推荐系统能快速学习你的喜好,并推荐你接下来可能会看的视频,给用户带来难以置信的滚动体验。这是可能的,因为TikTok背后的公司字节跳动已经建立了一个成熟的基础设施,使他们的推荐系统能够实时学习用户的喜好。

推荐系统是持续学习的完美人选。它们有自然的标签–如果一个用户点击了一个推荐,那就是一个正确的预测。并非所有的推荐系统都需要持续的学习。用户对房屋、汽车、航班、酒店等物品的偏好不太可能从一分钟到下一分钟发生变化,所以系统持续学习的意义不大。然而,用户对在线内容–视频、文章、新闻、推特、帖子、备忘录–的偏好可能变化非常快。由于对在线内容的偏好是实时变化的,广告系统也需要实时更新以显示相关的广告。

持续的学习对于系统适应罕见事件至关重要。考虑一下黑色星期五的网上购物。因为黑色星期五每年只发生一次,亚马逊或其他电子商务网站不可能获得足够的历史数据来了解用户在那一天的行为,所以他们的系统需要在那一天不断地学习以适应。

或者考虑当某个著名的人在推特上发布一些愚蠢的东西时的推特搜索。例如,关于 "四季全面美化 "的新闻一上线,很多人就会去搜索 "全面美化"。如果你的系统没有立即了解到这里的 "全面美化 "是指新闻发布会,那么你的用户就会得到大量的园艺推荐。

持续的学习也可以帮助解决冷启动问题。一个用户刚刚加入你的应用程序,你还没有他们的信息。如果你没有任何形式的持续学习的能力,你将不得不为你的用户提供一般的建议,直到下一次你的模型被离线训练。

解决方案

由于持续学习仍然相当新,而且大多数正在做的公司还没有公开谈论它的细节,所以没有标准的解决方案。

持续学习并不意味着 "没有批量训练"。那些蕞成功地使用持续学习的公司也在离线情况下平行训练他们的模型,然后将在线版本与离线版本相结合。

挑战

持续学习面临着许多挑战,包括理论和实践。

理论上

持续学习将我们所学到的很多关于机器学习的知识翻了个底朝天。在机器学习的入门课上,学生们可能会被教导不同版本的 "用足够数量的历时来训练你的模型,直到收敛。"在持续学习中,没有历时,你的模型对每个数据点只看一次。也没有所谓的收敛。你的基础数据分布一直在变化。没有什么固定的东西可以收敛。

持续学习的另一个理论挑战是模型评估。在传统的批量训练中,你在固定的测试集上评估你的模型。如果一个新的模型在相同的测试集上比现有的模型表现得更好,我们就说新的模型更好。然而,持续学习的目标是让你的模型适应不断变化的数据。如果你的更新模型是为了适应现在的数据而训练的,而我们知道现在的数据与过去的数据不同,那么用旧的数据来测试你的更新模型就没有意义了。

那么我们怎么知道在过去10分钟的数据上训练的模型比20分钟前的数据上训练的模型要好呢?我们必须在当前数据上比较这两个模型。在线训练需要在线评估,但是把一个没有经过测试的模型提供给用户,听起来就像一个灾难的秘诀。

许多公司还是这样做了。新的模式首先要经过离线测试,以确保它们不是灾难性的,然后通过复杂的A/B测试系统与现有模式并行评估。只有当一个模型被证明在公司关心的某些指标上优于现有模型时,它才能被更广泛地部署。(不要让我开始为在线评估选择一个指标)。

实用

目前还没有在线培训的标准基础设施。一些公司已经将流媒体架构与参数服务器,但除此之外,与我交谈过的做在线训练的公司必须在内部建立大量的基础设施。我不愿意在网上讨论这个问题,因为一些公司要求我对这些信息进行保密,因为他们正在为自己建立解决方案–这是他们的竞争优势。

美国和中国之间的MLOs竞赛

我读过很多关于美国和中国之间的人工智能竞赛的文章,但大多数比较似乎都集中于美国的人工智能数量。 论文,专利,引用, 资金 只有在我开始与美国和中国的公司讨论实时机器学习之后,我才注意到他们的MLOps基础设施有惊人的差异。

很少有美国互联网公司尝试持续学习,即使在这些公司中,持续学习也是用于简单的模型,如逻辑回归。通过与中国公司直接交谈以及与两国公司合作的人交谈,我的印象是,持续学习在中国更普遍,中国的工程师也更渴望实现这一跳跃。你可以看到一些谈话的内容。

总结

机器学习正在走向实时,无论你是否准备好了。虽然大多数公司仍在争论在线推理和持续学习是否有价值,但其中一些做得正确的公司已经看到了投资回报,他们的实时算法可能是帮助他们领先于竞争对手的一个主要因素。

我对实时机器学习还有很多想法,但这篇文章已经很长了。如果你有兴趣聊一聊这个问题。

鸣谢

这篇文章是与以下优秀的工程师和学者多次谈话的综合结果。我要感谢Robert Metzger, Neil Lawrence, Savin Goyal, Zhenzhong Xu, Ville Tuulos, Dat Tran, Han Xiao, Hien Luu, Ledio Ago, Peter Skomoroch, Piero Molino, Daniel Yao, Jason Sleight, Becket Qin, Tien Le, Abraham Starosta, Will Deaderick, Caleb Kaiser, Miguel Ramos。

还有几个人选择保持匿名。没有他们,这个帖子将是不完整的。

感谢 Luke Metz谢谢你成为一个了不起的弟一个读者!

海外精品引流脚本–最强海外引流  

官网:www.facebook18.com

唯一TG:https://t.me/Facebook181818

Facebook.png

更多海外引流脚本方案

如果你需要脚本演示、部署咨询或海外获客方案,可以通过下面入口继续查看。

官网首页 | 演示视频 | TG 在线客服 | TG 频道

相关阅读

© 版权声明
广告也精彩

相关文章