Вы когда-нибудь задавались вопросом

1. Почему вам не нужен класс модели для выполнения вывода ONNX или TensorRT, но он нужен для запуска вывода PyTorch?

2. Почему модель PyTorch работает медленно по сравнению с ее экспортированной версией ONNX и TensorRT?

Чтобы ответить на этот вопрос, я бы использовал следующие термины:
-компилятор
- граф вычислений (статический и динамический).

Компилятор в базовом смысле заранее выполняет работу по пониманию информации о потоке кода/вычислений. Так что пока мы запускаем код, мы экономим время.

PyTorch компилирует график вычислений во время выполнения, поэтому файлы весов PyTorch хранят только веса, но не детали того, как веса и входные данные будут передаваться во время вывода. Но файлы .onnx и .trt хранят веса вместе с потоком весов и входных данных. Следовательно, для вывода ONNX и TensorRT нам просто нужны файлы .onnx и .trt.

Однако Torch2.0 также представил компилятор, который можно использовать, запустив команду torch.compile(), которая собирает график и использует его. для вычислений снова и снова. Эта поддержка добавлена ​​не только для обучения, но и для логического вывода. Это будет огромно, если они смогут поддерживать множество моделей через это. Тем не менее, я думаю, что будет требование статического графика, что разумно.

ПРИМЕЧАНИЕ. Можно даже проанализировать файл ONNX и преобразовать его обратно в PyTorch. Я сделал это. Вы можете обратиться ко мне, если вам это нужно.