Spec-Zone.ru › PyTorch 1

torch.utils.bottleneck

torch.utils.bottleneck — это инструмент, который можно использовать в качестве начального шага для отладки узких мест в вашей программе. Он обобщает запуски вашего скрипта с помощью профилировщика Python и профилировщика автоградиента PyTorch.

Запустите его в командной строке с помощью

python -m torch.utils.bottleneck /path/to/source/script.py [args]

где [args] — любое количество аргументов для script.py, или запустите python -m torch.utils.bottleneck -h для получения дополнительных инструкций по использованию.

Предупреждение

Поскольку ваш скрипт будет профилироваться, убедитесь, что он завершается за конечное время.

Предупреждение

Из-за асинхронной природы ядер CUDA при работе с кодом CUDA выходные данные cProfile и профилировщики автоградиента в режиме CPU могут не показывать правильные временные отметки: указанное время CPU отображает время, затраченное на запуск ядер, но не включает время, потраченное ядром на выполнение на GPU, если операция не выполняет синхронизацию. Операции, выполняющие синхронизацию, кажутся чрезвычайно дорогими в обычных профилировщиках в режиме CPU. В этих случаях, когда временные отметки неверны, может быть полезен профилировщик автоградиента в режиме CUDA.

Примечание

Чтобы определить, какой выход профилировщика автоградиента (в режиме только CPU или в режиме CUDA) следует рассматривать, сначала необходимо проверить, ограничен ли ваш скрипт процессором («общее время CPU значительно больше, чем общее время CUDA»). Если он ограничен процессором, просмотр результатов профилировщика автоградиента в режиме CPU будет полезен. Если, с другой стороны, ваш скрипт большую часть времени тратит на выполнение на GPU, имеет смысл начать поиск ответственных операторов CUDA в выводе профилировщика автоградиента в режиме CUDA.

Конечно, реальность гораздо сложнее, и ваш скрипт может не находиться в одном из этих двух крайних случаев в зависимости от части модели, которую вы оцениваете. Если выходные данные профилировщика не помогают, вы можете попробовать посмотреть на результат torch.autograd.profiler.emit_nvtx() с nvprof. Однако, пожалуйста, учтите, что накладные расходы NVTX очень высоки и часто дают сильно искаженную временную шкалу. Аналогично, Intel® VTune™ Profiler помогает проанализировать производительность на платформах Intel более подробно с помощью torch.autograd.profiler.emit_itt().

Предупреждение

Если вы профилируете код CUDA, первый профилировщик, который bottleneck запускает (cProfile), включит время запуска CUDA (стоимость выделения буфера CUDA) в своем отчете о времени. Это не должно иметь значения, если ваши узкие места приводят к коду, который намного медленнее, чем время запуска CUDA.

Для более сложных случаев использования профилировщиков (например, в случае с несколькими GPU), см. https://docs.python.org/3/library/profile.html или torch.autograd.profiler.profile() для получения дополнительной информации.

© 2024, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://pytorch.org/docs/1.13/bottleneck.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API