Torch Script - это один из двух режимов использования PyTorch как раз вовремя компилятора , другой - tracing .Преимущества объясняются в связанной документации:
Torch Script - это способ создания сериализуемых и оптимизируемых моделей из кода PyTorch.Любой код, написанный в Torch Script, может быть сохранен из вашего процесса Python и загружен в процесс, в котором нет зависимости Python.
Приведенная выше цитата действительно верна как для сценариев, так и для трассировки.Итак,
- Вы получаете возможность сериализовать свои модели и позже запускать их вне Python через LibTorch, собственный модуль C ++.Это позволяет вам встраивать ваши модели DL в различные производственные среды, такие как мобильные или IoT.Существует официальное руководство по экспорту моделей в C ++ здесь .
- PyTorch может компилировать ваши jit-совместимые модули, а не запускать их в качестве интерпретатора, что позволяет проводить различные оптимизациии улучшение производительности, как во время обучения, так и умозаключенияЭто в равной степени полезно для разработки и производства.
Относительно скрипта Torch, в частности, по сравнению с трассировкой, это подмножество Python, подробно описанное здесь , которое при соблюдениидо, может быть скомпилировано PyTorch.Писать модули Torch Script труднее, чем трассировать обычные подклассы nn.Module
, но он допускает некоторые дополнительные функции по сравнению с трассировкой, в частности, управление потоком, например операторы if
или циклы for
.Трассировка рассматривает такое управление потоком как «постоянное» - другими словами, если в вашем модуле есть предложение if model.training
и трассировка с помощью training=True
, оно всегда будет вести себя таким образом, даже если вы измените переменную training
наFalse
позже.
Чтобы ответить на ваш первый вопрос, вам нужно , чтобы использовать jit
, если вы хотите развернуть свои модели вне Python, а в противном случае должны используйте jit
, если вы хотите добиться некоторой производительности выполнения за счет дополнительных усилий по разработке (поскольку не каждая модель может быть просто приведена в соответствие с jit
).В частности, вы должны использовать Torch Script, если ваш код не может быть jit
отредактирован только с помощью трассировки, поскольку он опирается на некоторые функции, такие как операторы if
.Для максимальной эргономики, вы, вероятно, захотите смешать два в каждом конкретном случае.
Наконец, для как их следует использовать, обратитесь квся документация и учебные ссылки.