https://onnxruntime.ai/docs/tutorials/accelerate-pytorch/pytorch.html
1. 什么时候直接用PyTorch来推理:
现成的PyTorch库和Python环境都在,且不care推理速度;
2. 什么时候用TorchScript来推理:
移动端等轻量级环境,不能安装PyTorch、Python这样的大size库时;
(PyTorch官方也说其对计算图进行了优化,可以比PyTorch直接推理要更快)(个人感觉,其实就是Facebook不想完全依赖ONNX,自己想独立做自己的部署方案)
3. 什么时候用ONNX Runtime来推理:
在意推理速度;需要部署到不同的设备上;(也支持TensorFlow等多种框架的模型)
使用ONNX和Torchscript加快推理速度的测试 - 知乎 (zhihu.com)
结论:
1. Batch size小时,ONNX明显比TorchScript要快;Batch size大时,差距缩小;
2. Batch内部的序列长度相似时,Batch size越大,加速效果约好;
3. 序列越长,加速效果越不明显
4. Batch内部的序列长度相差大的话,Batch size可能在中间某个范围是加速比最大的,因为再大就带来很多“补齐”造成的冤枉计算。