Что такое скрипты в PyTorch? - PullRequest
0 голосов
/ 23 декабря 2018

Я только что обнаружил, что документы PyTorch раскрывают что-то, что называется Сценарии факелов .Однако я не знаю:

  • Когда их следует использовать?
  • Как их следует использовать?
  • В чем их преимущества?

1 Ответ

0 голосов
/ 23 декабря 2018

Torch Script - это один из двух режимов использования PyTorch как раз вовремя компилятора , другой - tracing .Преимущества объясняются в связанной документации:

Torch Script - это способ создания сериализуемых и оптимизируемых моделей из кода PyTorch.Любой код, написанный в Torch Script, может быть сохранен из вашего процесса Python и загружен в процесс, в котором нет зависимости Python.

Приведенная выше цитата действительно верна как для сценариев, так и для трассировки.Итак,

  1. Вы получаете возможность сериализовать свои модели и позже запускать их вне Python через LibTorch, собственный модуль C ++.Это позволяет вам встраивать ваши модели DL в различные производственные среды, такие как мобильные или IoT.Существует официальное руководство по экспорту моделей в C ++ здесь .
  2. 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.Для максимальной эргономики, вы, вероятно, захотите смешать два в каждом конкретном случае.

Наконец, для как их следует использовать, обратитесь квся документация и учебные ссылки.

...