Ефим Головин. Как профилирование помогло разобраться со скачками утилизации GPU

 

Ефим Головин MLOps-инженер, Selectel Когда Increase Batch Size не спасает. Как профилирование помогло разобраться со скачками утилизации GPU Почему пайплайн в облаке может работать хуже, чем у заказчика на железе? В нашем случае итерация была сильно дольше, чем у клиента на собственной инфраструктуре. Чтение батча данных, его подготовка, forward-шаг, расчёт метрик, backward-шаг, сохранение промежуточных весов модели — все эти процессы шли сильно медленнее, чем ожидалось… Пошли разбираться, в чём же причина. При просмотре утилизации ядер GPU заметили, что она скачет, улетая в ноль. Советы в стиле «увеличить размер батча» никак не помогали её стабилизировать, и, соответственно, время итерации тоже никак не улучшилось. Как пофиксить утилизацию? Можно ли обойтись какими-то твиками в коде, или проблема в том числе в железе? Как вообще подходить к анализу такой проблемы? Спойлер — профилирование кода. В докладе рассмотрим, какие есть инструменты профилирования и какие у них области применения, ограничения.