【问题标题】:how to speedup tensorflow RNN inference time如何加快张量流 RNN 推理时间
【发布时间】:2017-10-20 02:14:46
【问题描述】:

我们已经训练了一个用于问答的 tf-seq2seq 模型。主框架来自google/seq2seq。我们使用双向RNN(GRU encoders/decoders 128units),加入了soft attention机制。

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

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

  1. 正常(贪心算法)。它的推理时间约为40ms~100ms
  2. 光束搜索。我们尝试使用beam width 5,其推理时间约为400ms~1000ms。

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

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

【问题讨论】:

  • RNN 前向传播的最大限制因素之一是词汇量。
  • 感谢您的评论。我们的目标词汇量约为 8000。如果我们设置频率限制,它可以减少到 5000。以后我们可能会尝试使用较小的词汇量。
  • 根据您的评论,我建议您将算法分解为较小的网络。
  • 谢谢。我们可以尝试减小网络规模。

标签: python tensorflow inference


【解决方案1】:
  1. 你可以network compression
  2. 通过byte-pair-encodingunigram language model等将句子切成碎片,然后尝试TreeLSTM
  3. 您可以尝试更快的 softmax,例如自适应 softmax](https://arxiv.org/pdf/1609.04309.pdf)
  4. 试试cudnnLSTM
  5. 试试dilated RNN
  6. 切换到 CNN(如扩张型 CNN)或 BERT 以实现并行化和更高效的 GPU 支持

【讨论】:

  • 谢谢!我们的应用程序需要为用户查询输出一个实时响应。所以我们只需将一个查询语句输入模型,并让模型输出一个响应。我们的 batch_size=1 用于推理。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-03
  • 1970-01-01
  • 2017-06-12
  • 1970-01-01
  • 2016-03-28
相关资源
最近更新 更多