Инструмент профилирования памяти
Вы можете использовать профиль памяти для визуализации использования памяти вашими ускорителями с течением времени. Инструмент «Профиль памяти» отслеживает использование памяти вашего устройства в течение интервала профилирования. Вы можете использовать этот инструмент для:
- Отладка проблем нехватки памяти (OOM) путем определения пикового использования памяти и соответствующего выделения памяти операциям фреймворка.
- Устранение проблем фрагментации памяти.
Поддерживаемые платформы
Поддерживаются как TPU, так и GPU.
Использование инструмента профиля памяти
Профиль памяти состоит из следующих компонентов:
- Селектор идентификатора хоста в верхней части страницы позволяет выбирать между различными хостами для профилирования.
Селектор идентификатора памяти в верхней части страницы позволяет сосредоточиться на памяти с высокой пропускной способностью (HBM), подключенной к одному из различных ускорителей, которые могут быть подключены к профилируемому хосту, или даже к памяти хоста в некоторых случаях.

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

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

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

Выделение и освобождение памяти управляются (и добавляются в профиль) распределителем времени выполнения XLA, которому принадлежит все пространство памяти HBM.
Метрика фрагментации в сводке профиля памяти и график временной шкалы памяти (в процентах) помогают выявить проблемы фрагментации памяти. Высокое значение фрагментации указывает на то, что, хотя общего объёма свободной памяти может быть достаточно, она не является непрерывной, и, следовательно, запрос на выделение большого объёма может быть не выполнен.
Обратите внимание, что профиль памяти обычно более интересен и ценен для профилирования графических процессоров, чем для рабочих нагрузок TPU. Модель выполнения TPU обычно предполагает значительное предварительное выделение памяти компилятором XLA, а не во время обучения модели или вывода. Поэтому график распределения часто выглядит как плоская горизонтальная линия; все выделения, вероятно, произошли в самом начале профилирования (если профилировщик был активен к этому моменту выполнения), что затрудняет их отслеживание.
Некоторые ключевые различия между этим инструментом и инструментом Memory Viewer :
- Memory Viewer является полностью статичным и фокусируется на порядке программ; Memory Profile обеспечивает динамическое представление с течением времени в течение интервала профилирования.
- Memory Viewer визуализирует распределение памяти по модулям XLA; для рабочих нагрузок, состоящих из нескольких модулей XLA, Memory Profile обеспечивает глобальное представление памяти.