Отслеживание времени жизни тензоров и выявление утечек памяти.

В этом руководстве описывается, как использовать инструменты XProf для отслеживания времени жизни тензоров и выявления тензоров или буферов, которые не освобождаются должным образом, что может привести к утечкам памяти или ошибкам нехватки памяти (OOM).

Обзор

XProf предоставляет несколько дополнительных инструментов для анализа закономерностей выделения и освобождения памяти:

  • Профиль памяти : Динамическое отображение выделения и освобождения памяти в режиме реального времени, включая таблицу распределения памяти;
  • Memory Viewer : Статическое представление выделения буферов в порядке выполнения программы, основанное на компиляторе;
  • Trace Viewer : Визуализация временной шкалы, отображающая выполнение операций и зависимости.

Начните с создания своего профиля .

Анализ временной шкалы памяти с помощью профиля памяти.

Откройте инструмент «Профиль памяти», чтобы получить динамическое представление о выделении и освобождении памяти. Убедитесь, что вы выбрали соответствующий идентификатор памяти (обычно HBM для GPU/TPU).

  1. Изучите график временной шкалы памяти :

    • Увеличение использования памяти : Обратите внимание на тенденцию к увеличению использования кучи (оранжевым цветом), которая никогда не снижается, поскольку это может указывать на утечки памяти.
    • Отсутствие освобождения памяти : Если объем памяти постоянно увеличивается на разных этапах, освобождение памяти может не происходить.
    • Всплески фрагментации : Высокая фрагментация может указывать на неэффективное управление памятью. Для получения дополнительной информации см. раздел «Диагностика фрагментации» .
  2. Проверьте сводку профиля памяти : общее количество выделений памяти и освобождений должно быть примерно сбалансировано. Если количество выделений памяти превышает количество освобождений в течение периода профилирования, значит, в памяти происходит накопление тензоров.

Таблица распределения памяти, расположенная в нижней части интерфейса инструмента профилирования памяти, показывает, какие операции фреймворка вносят наибольший вклад в пиковое использование памяти, а также может использоваться для выявления ошибок нехватки памяти (OOM) или утечек памяти.

Отслеживайте время жизни отдельных буферов с помощью Memory Viewer.

Для детального статического анализа времени жизни буферов используйте Memory Viewer.

  1. Выберите инструмент «Просмотр памяти» и из выпадающего списка выберите модуль HLO, который хотите проанализировать.
  2. Изучите временную шкалу выделения памяти: щелкните ссылку «временная шкала» рядом с пунктом «Размер выделения памяти (МиБ) в зависимости от порядка выполнения программы (последовательность HLO)». Это отобразит визуализацию выделения памяти с рядом цветных прямоугольников, по одному на каждое выделение.

    • Каждый цветной блок представляет собой одно выделение;
    • Ширина каждого блока представляет собой время жизни в порядке выполнения программы;
    • Высота каждого блока представляет собой размер выделенной области;
    • Вертикальное расположение каждого блока соответствует его начальному адресу в памяти (смещению).

    Найдите блоки, охватывающие всю программу, что означает, что они никогда не были освобождены. Вы можете навести курсор на эти блоки, чтобы получить дополнительную информацию о представленной операции HLO.

    В XProf отображается временная шкала выделения памяти с помощью цветных блоков, представляющих собой распределение памяти.

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

    Инструмент Memory Viewer отображает диаграммы буферов с длительным временем выделения памяти.