将TensorFlow扩展到每秒3亿次预测的经验之谈

你没有看错。3亿个预测。每一秒钟

机器学习正在改变很多领域。其中一个大的领域是广告。虽然像谷歌和Facebook这样的公司因使用大数据来定位个性化广告而臭名昭著,但在这个领域还有许多其他参与者。这不应该是一个惊喜,因为在线广告据说是一个1000亿美元的产业

我们在这里看到了一些大的数字

从技术角度来看,这个行业是网络和机器学习两个领域的有趣融合。这提出了一系列有趣的挑战,必须处理。我们需要高精确度,不断更新的模型,以及非常低的延迟。这使得传统的方法/模型很难实现。这篇论文的作者,"将TensorFlow扩展到每秒3亿个预测值"详细介绍了他们的挑战和解决这些问题的方法。他们通过分享他们在与Zemanta合作中的经验来做到这一点。

良好的背景知识可以帮助你理解这篇论文/作品的背景

以上是作者的一段话。它解释了Zemanta是什么,服务如何运作,以及广告空间如何出售。最后一点详细介绍了使用机器学习最大限度地提高他们的KPI,这一点相当有趣。也许这篇文章的读者会继续在这个领域工作(一定要记住我,笑)。

对所做的设计选择的一些背景。

在这篇文章中,我将分享让Zemanta的作者/团队使用TensorFlow框架达到每秒3亿次预测的经验。像往常一样,论文的注释版本将在最后(arxiv链接已经被分享)。请务必自己阅读一遍。在这些学习中,你觉得哪个最有趣?请在评论中告诉我。如果你想更详细地讨论这篇论文,请随时通过社交媒体与我联系。

学习1:简单模型是(仍然)王道

这是从事机器学习的人非常清楚的事情。翻阅人工智能新闻,你会被原谅,认为机器学习等同于具有复杂步骤的大型模型。大多数初学者将机器学习与深度学习混为一谈,这并不奇怪。他们看到关于GPT-3或谷歌ResNet的新闻。他们认为,要建立伟大的模型,你需要知道如何建立这些需要几天时间来训练的巨大网络。

深度学习在最近几天获得了很大的关注。

本文介绍了现实情况。任何从事过机器学习的人都可以证明,下面这个备忘录是准确的。

简单的模型更容易训练,可以更快地进行测试,不需要那么多资源,而且一般不会落后太多。规模化地应用大型模型会使服务器/运行成本增加很多。作者在论文中的以下一段话反映了类似的观点。

此外,我们在生产中不利用GPU进行推理。在我们的规模下,为每台机器配备一个或多个顶级GPU将是非常昂贵的,另一方面,只有一个小的GPU机器集群将迫使我们过渡到一个基于服务的架构。鉴于这两种选择都不是特别可取,而且我们的模型与其他深度学习领域(如计算机视觉或自然语言处理)的最先进的模型相比相对较小,我们认为我们的方法更经济。由于我们的模型使用稀疏权重,我们的用例也不太适合GPU工作负载。

许多公司没有躺在身边的大型GPU系统,他们可以直接用来训练和预测数据。而且它们大多是不必要的。引用作者的话:相对较小的模型要经济得多

学习2:不要忽视懒惰的优化器

稀疏矩阵指的是数值基本为0的矩阵。它们被用来表示2对成分之间互动有限的系统。例如,想象一下一个人类矩阵,我们的行和列对应于地球上的人。如果两个人互相认识,某个特定指数的值就是1,如果不认识就是0。这是一个稀疏的矩阵,因为大多数人都不认识世界上的其他大多数人。

Zemanta所使用的矩阵是稀疏的。他们发现,造成这种情况的原因是大多数特征是分类的。使用Adam优化器会增加很多运行成本(比Adagrad多50%)。另一方面,Adagrad的性能也很糟糕。幸运的是,有一个替代品,它的性能很好,但价格却很高。LazyAdam。

懒惰评估是软件工程中一种成熟的做法。懒惰加载经常被用于基于GUI/交互式平台,如网站和游戏。懒惰优化器在机器学习中的确立只是时间问题。当它真的发生时,请留心观察。如果你想在机器学习中寻找研究的途径,这可能是一个有趣的选择。

学习3:更大的批次→更低的计算成本

这一点完全出乎我的意料。"通过深入研究TF,我们意识到,如果我们增加一个计算批次中的例子数量,计算的效率要高得多(每个例子)。这种低线性增长是由于TF代码是高度矢量化的。TF对每个计算调用也有一些开销,然后在更大的批次中摊销。鉴于此,我们认为,为了减少计算调用的数量,我们需要将许多请求加入到一个单一的计算中。"

这是个新问题。大批训练会导致计算成本降低?老实说,我还没能理解为什么。如果你们中有人知道原因,一定要和我分享。我很想知道原因。规模也是令人惊讶的。他们的计算成本减少了一半。像这样优化的全部结果是。

这个实现是高度优化的,能够将计算调用的数量减少5倍,使TF计算的CPU使用率减半。在批处理程序线程没有得到CPU时间的罕见情况下,这些请求会超时。然而,这发生在不到0.01%的请求上。我们观察到平均延迟略有增加 - 平均约5毫秒,在流量高峰期可能会更高。我们制定了服务水平协议和适当的监测,以确保稳定的延迟。由于我们没有大幅增加超时的比例,这非常有益,而且仍然是我们TF服务机制的核心。

稍微增加的延迟是有道理的。要想知道他们到底做了什么,请查看3.2节。这是整个网络的东西,所以我不是一个专家。但结果是不言自明的。

结束语

这篇论文是一个有趣的读物。它结合了工程、网络和机器学习。此外,它为机器学习在小公司的使用提供了见解,在这些公司中,巨大的模型和0.001%的性能改进并不是关键。

你可以在这里阅读我的完整注释的论文(可免费下载)。

medium.com/media/2cd46…

与我联系

如果这篇文章让你有兴趣与我联系,那么本节就是为你准备的。你可以在任何一个平台上与我联系,或查看我的其他内容。如果你想讨论家教,请在LinkedIn、IG或Twitter上给我发短信。如果你想支持我的工作,使用我的免费Robinhood推荐链接。我们都能得到一只免费的股票,而且对你没有任何风险。因此,不使用它只是损失免费的钱。

看看我在Medium上的其他文章。 : rb.gy/zn1aiu

我的YouTube:https://rb.gy/88iwdd

在LinkedIn上联系我。让我们联系:https://rb.gy/m5ok2y

我的Instagram:rb.gy/gmvuy9

我的Twitter:twitter.com/Machine0177…

我的 Substack:codinginterviewsmadesimple.substack.com/

在Robinhood上获得免费股票:https://join.robinhood.com/fnud75


将TensorFlow扩展到每秒3亿次预测的经验教训》最初发表在《极客文化》杂志上,人们通过强调和回应这个故事来继续对话。

猜你喜欢

转载自juejin.im/post/7055220948160479262