我正在考虑将ml模型转换为ONNX格式,以便利用它的速度增长(ONNX )。然而,我并不真正理解与旧模型相比,新模型中发生了什么根本性的变化。而且,我也不知道是否有什么缺点。如果对此有任何想法,我将不胜感激。
发布于 2021-02-14 07:51:08
模型在精度上的性能将是相同的(仅考虑编码器和解码器的输出)。推理性能可能因您用于推理的方法而不同(例如:贪婪搜索、波束搜索、top-k和top-p )。有关这的更多信息。
对于onnx seq2seq模型,需要通过手实现model.generate()
方法。但是onnxt5
库在实现贪婪搜索 (对于onnx模型)方面做得很好。然而,大多数NLP生成模型都通过波束搜索方法获得了很好的结果(您可以参考链接的源代码,了解huggingface如何实现对其模型的波束搜索)。不幸的是,对于onnx模型,您必须自己实现它。
推理速度肯定会增加,如这个笔记本中所示的onnx运行时(这个例子在伯特上)。您必须在onnx运行时分别运行编码器和解码器&可以利用onnx运行时。如果您想了解关于onnx及其运行时的更多信息,请参考此链接。
Update:您可以参考fastT5
库,它为t5实现了greedy
和beam search
。对于bart
,请看一下这个问题。
https://stackoverflow.com/questions/66183163
复制