Spec-Zone.ru › PyTorch 2

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 («общее время CPU намного больше, чем общее время CUDA»). Если это ограничение по CPU, просмотр результатов профилировщика автоградиента в режиме 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/2.1/bottleneck.html

Spec-Zone.ru

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