2017-10-20 74 views
0

我们已经培训了一个tf-seq2seq模型来回答问题。主要框架是google/seq2seq。我们使用双向RNN(GRU编码器/解码器128单元),增加了软关注机制。如何加速tensorflow RNN推理时间

我们将最大长度限制为100个字。它大多只产生10〜20个单词。

对于模型的推断,我们尝试两种情况:

  1. 正常(贪心算法)。其推断时间约为40ms〜100ms
  2. 光束搜索。我们尝试使用波束宽度5,其推断时间约为400ms〜1000ms。

所以,我们想尝试使用波束宽度3,它的时间可能会减少,但它也可能影响最终效果。

那么有什么建议可以减少我们案件的推理时间吗?谢谢。

+0

RNN向前传播中最主要的限制因素之一是词汇大小。 –

+0

感谢您的评论。我们的目标词汇量大约是8000.如果我们设定了频率限制,它可以减少到5000。我们可能会尝试使用后者的小词汇量。 –

+0

根据你的评论,我会建议你将算法放到一个更小的网络中。 – lerner

回答

0

如果你的模型可以被修改并重新训练的,所以据我所知,您可以:

  1. 网络提炼到一个较小的一个,这被称为knowledge distillation

  2. 或者您可以减少词汇大小,例如将其减半,然后使用复制机制在输入序列上分配输入。每个批次都需要一个大小不一的词汇表,这些词汇表应该属于小词汇表,即pointer generator

  3. 我认为Tensorflow Lite是你在找什么。

+0

谢谢!我们的应用程序需要为用户查询输出一个实时响应。所以我们只需要将一个查询语句输入到模型中,然后让模型输出一个响应。我们的batch_size = 1用于推断。 –