Инструмент профилирования памяти

С помощью инструмента «Профиль памяти» можно визуализировать использование памяти вашими ускорителями с течением времени. Инструмент «Профиль памяти» отслеживает использование памяти вашего устройства в течение интервала профилирования. Вы можете использовать этот инструмент для:

  • Для устранения проблем, связанных с нехваткой памяти (OOM), необходимо точно определить пиковое использование памяти и соответствующее выделение памяти для операций фреймворка.
  • Отладка проблем фрагментации памяти.

Поддерживаемые платформы

Поддерживаются как TPU, так и GPU.

Использование инструмента профилирования памяти

Профиль памяти включает следующие компоненты:

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

    Выбор идентификатора хоста и идентификатора памяти для профиля памяти

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

    • В сводке профиля памяти отображается общее количество выделений и освобождений памяти за интервал профилирования; общий объем памяти выбранной системы; пиковое использование кучи за все время работы модели (обратите внимание, что это может выходить за пределы интервала профилирования); и пиковое использование памяти в течение интервала профилирования.

      Сводка профиля памяти

    • График «Временная шкала памяти» отображает использование памяти во времени (представлено осью Y слева на графике) и процент фрагментации за интервал профилирования (представлен осью Y справа на графике). В каждый момент времени по оси X общий объем памяти разбит на три категории: стек (красный), куча (оранжевый) и свободная память (зеленый). Наведите курсор на определенную временную метку, чтобы просмотреть подробную информацию о событиях выделения/освобождения памяти в этот момент, как показано ниже: Выбранная метка времени на графике временной шкалы памяти, отображающая информационную карточку с подробной информацией о событиях выделения/освобождения памяти.

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

Профиль памяти

Выделение и освобождение памяти осуществляется (и добавляется в профиль) модулем распределения памяти среды выполнения XLA, которому принадлежит все пространство памяти HBM.

Показатель фрагментации в сводке профиля памяти и на графике временной шкалы памяти (в процентах) помогают выявить проблемы фрагментации памяти. Высокое значение фрагментации указывает на то, что, хотя общего объема свободной памяти может быть достаточно, она не является непрерывной, и, следовательно, запрос на выделение большого объема памяти может завершиться неудачей.

Следует отметить, что профилирование памяти обычно более интересно и ценно для профилирования GPU, чем для рабочих нагрузок TPU. Модель выполнения TPU обычно предполагает большое предварительное выделение памяти компилятором XLA, а не во время обучения или вывода модели. Поэтому вы часто будете видеть, что диаграмма выделения памяти выглядит как плоская горизонтальная линия; все выделения, скорее всего, произошли в самом начале профилирования (если профилировщик был активен к этому моменту выполнения), что затрудняет их обнаружение.

Основные отличия этого инструмента от инструмента Memory Viewer :

  • Memory Viewer — это полностью статическая программа, ориентированная на порядок выполнения программ; Memory Profile предоставляет динамический обзор во времени в течение интервала профилирования.
  • Memory Viewer визуализирует выделение памяти для каждого модуля XLA отдельно; для рабочих нагрузок, состоящих из нескольких модулей XLA, Memory Profile предоставляет глобальное представление об использовании памяти.