我正在研究将 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 实现了 greedy
和 beam search
。 bart
看看这个 issue .
https://stackoverflow.com/questions/66183163/