如何设计出摆脱缓慢模型的方法

所以你刚刚完成了那个伟大的神经网络架构的设计。但你如何处理它很慢的事实?

来源:Another Datum

所以你刚刚完成了你那个伟大的神经网络架构的设计。它有 300 个完全连接的层,与 200 个卷积层交错,每个卷积层有 20 个通道,其中结果作为具有少量注意力的双向堆叠 LSTM 的种子输入。训练后,你将获得 99.99% 的准确率,并且你已准备好将其交付生产。

卷积层 双向 堆叠 LSTM 注意力

但随后你意识到生产限制不允许您使用这个野兽进行推理。你需要在 200 毫秒内完成推理。

换句话说,你需要砍掉一半的层,放弃使用卷积,我们先不要开始讨论昂贵的 LSTM...

如果你能让这个惊人的模型运行得更快就好了!

有时你可以

在 Taboola 我们做到了。 好吧,不完全是... 让我解释一下。

我们的一个模型必须预测某个项目的 CTR(点击率),或者换句话说 — 用户喜欢文章推荐并点击它的概率。

该模型有多种模态作为输入,每种模态都会经历不同的转换。其中一些是:

    分类特征:这些特征嵌入到密集表示中 图像:像素通过卷积层和全连接层 文本:在标记化之后,文本通过 LSTM,然后进行自我注意
  • 分类特征:这些特征嵌入到密集表示中
  • 嵌入
  • 图像:像素通过卷积层和全连接层
  • 文本:在标记化之后,文本通过 LSTM,然后进行自我注意
  • 自我注意

    然后将这些处理过的模态通过全连接层,以学习模态之间的相互作用,最后,它们通过 MDN 层。

    MDN

    可以想象,这个模型很慢。

    我们决定坚持模型的预测能力,而不是削减组件,并提出了一个工程解决方案。

    如果可以的话请缓存我