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

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

最佳答案

按精度计算的模型性能将相同(仅考虑编码器和解码器的输出)。推理性能可能会根据您用于推理的方法而有所不同(例如:贪婪搜索、集束搜索、top-k 和 top-p )。有关 this 的更多信息.

对于onnx seq2seq模型,需要通过hand实现model.generate()方法.但是 onnxt5 lib执行得很好greedy search (对于 onnx 模型)。然而,大多数 NLP 生成模型通过 beam search 产生了良好的结果。方法(你可以引用链接源,了解 huggingface 如何为他们的模型实现波束搜索)。不幸的是,对于 onnx 模型,您必须自己实现它。

如 this notebook 所示,推理速度明显提高通过 onnx-runtime(示例在 bert 上)。 您必须在 onnx-runtime 上分别运行编码器和解码器,并且可以利用 onnx-runtime。如果您想了解更多关于 onnx 及其运行时的信息,请参阅 this link .

更新:可以引用fastT5库,它为 t5 实现了 greedybeam searchbart 看看这个 issue .

https://stackoverflow.com/questions/66183163/

相关文章:

javascript - React App - 我的警告窗口出现两次

ajax - ASP.NET Core Razor ajax POST 请求数据对象为空

javascript - 使用路由器 "No overload matches this call"

go 1.16 embed - strip 目录名

flutter - 调用者没有执行指定操作的权限

java - 输出最大分数

python - 条件运算符不匹配

swift - 如何使用 SwiftUI 中的扩展将 Hashable 协议(protocol)添加

asp.net - 将具有策略的授权应用于 asp.net core 中命名空间内的所有 Contr

c++ - 自动类型检测是否只查看一个语句