将seq2seqNLP模型转换为ONNX格式会对其性能产生负面影响吗?

我正在考虑将 ml NLP 模型转换为 ONNX 格式,以利用其速度提升(ONNX 运行时)。但是,我真的不明白新模型与旧模型相比有什么根本性的变化。另外,不知道有没有什么缺点。对此的任何想法将不胜感激。

回答

模型的精度性能将是相同的(仅考虑编码器和解码器的输出)。推理性能可能因您用于推理的方法而异(例如:贪婪搜索、波束搜索、top-k 和 top-p)。有关这方面的更多信息。

对于 onnx seq2seq 模型,您需要手动实现model.generate()方法。但是lib在实现贪婪搜索(对于onnx模型)方面做得很好。但是,大多数 NLP 生成模型通过波束搜索方法产生了良好的结果(您可以参考链接源了解 Huggingface 如何为其模型实现波束搜索)。不幸的是,对于 onnx 模型,您必须自己实现它。onnxt5

推理速度肯定会提高,如本笔记本中所示,onnx-runtime(示例在 bert 上)。您必须在 onnx-runtime 上分别运行编码器和解码器,并且可以利用 onnx-runtime。如果您想了解有关 onnx 及其运行时的更多信息,请参阅此链接。

更新:您可以参考fastT5库,它实现了greedybeam searcht5。为bart看看这个问题。


以上是将seq2seqNLP模型转换为ONNX格式会对其性能产生负面影响吗?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>