В этом руководстве описывается, как использовать инструменты XProf для отслеживания времени жизни тензоров и выявления тензоров или буферов, которые не освобождаются должным образом, что может привести к утечкам памяти или ошибкам нехватки памяти (OOM).
Обзор
XProf предоставляет несколько дополнительных инструментов для анализа закономерностей выделения и освобождения памяти:
- Профиль памяти : Динамическое отображение выделения и освобождения памяти в режиме реального времени, включая таблицу распределения памяти;
- Memory Viewer : Статическое представление выделения буферов в порядке выполнения программы, основанное на компиляторе;
- Trace Viewer : Визуализация временной шкалы, отображающая выполнение операций и зависимости.
Начните с создания своего профиля .
Анализ временной шкалы памяти с помощью профиля памяти.
Откройте инструмент «Профиль памяти», чтобы получить динамическое представление о выделении и освобождении памяти. Убедитесь, что вы выбрали соответствующий идентификатор памяти (обычно HBM для GPU/TPU).
Изучите график временной шкалы памяти :
- Увеличение использования памяти : Обратите внимание на тенденцию к увеличению использования кучи (оранжевым цветом), которая никогда не снижается, поскольку это может указывать на утечки памяти.
- Отсутствие освобождения памяти : Если объем памяти постоянно увеличивается на разных этапах, освобождение памяти может не происходить.
- Всплески фрагментации : Высокая фрагментация может указывать на неэффективное управление памятью. Для получения дополнительной информации см. раздел «Диагностика фрагментации» .
Проверьте сводку профиля памяти : общее количество выделений памяти и освобождений должно быть примерно сбалансировано. Если количество выделений памяти превышает количество освобождений в течение периода профилирования, значит, в памяти происходит накопление тензоров.
Таблица распределения памяти, расположенная в нижней части интерфейса инструмента профилирования памяти, показывает, какие операции фреймворка вносят наибольший вклад в пиковое использование памяти, а также может использоваться для выявления ошибок нехватки памяти (OOM) или утечек памяти.
Отслеживайте время жизни отдельных буферов с помощью Memory Viewer.
Для детального статического анализа времени жизни буферов используйте Memory Viewer.
- Выберите инструмент «Просмотр памяти» и из выпадающего списка выберите модуль HLO, который хотите проанализировать.
Изучите временную шкалу выделения памяти: щелкните ссылку «временная шкала» рядом с пунктом «Размер выделения памяти (МиБ) в зависимости от порядка выполнения программы (последовательность HLO)». Это отобразит визуализацию выделения памяти с рядом цветных прямоугольников, по одному на каждое выделение.
- Каждый цветной блок представляет собой одно выделение;
- Ширина каждого блока представляет собой время жизни в порядке выполнения программы;
- Высота каждого блока представляет собой размер выделенной области;
- Вертикальное расположение каждого блока соответствует его начальному адресу в памяти (смещению).
Найдите блоки, охватывающие всю программу, что означает, что они никогда не были освобождены. Вы можете навести курсор на эти блоки, чтобы получить дополнительную информацию о представленной операции HLO.

Изучите графики буферов в инструменте «Просмотр памяти», чтобы выявить длительные выделения памяти. После выбора модуля HLO, который вы хотите проверить, перейдите в раздел «Операции HLO в пиковое время выделения памяти» этого инструмента. Наведите курсор на отдельные буферы на графиках, чтобы увидеть дополнительную информацию о представленной операции. Если доступно, наложение на линейный график показывает точки выделения и освобождения памяти. Буферы, которые никогда не освобождаются, будут иметь полосы, простирающиеся до конца.
