KJNodes/memorygenerated

Start Recording CUDAMemory History(StartRecordCUDAMemoryHistory)

Этот узел вызывает функцию PyTorch torch。

Start Record CUDA Memory History

input
input
COMBO
enabled
all
context
all
stacks
all
max_entries
100000
KJNodes

Узел Start Recording CUDAMemory History запускает отслеживание и запись истории выделения и освобождения памяти CUDA. Этот узел всегда выполняется, независимо от статуса обхода (bypass) или отключения (mute). Это диагностический инструмент, предназначенный для того, чтобы помочь пользователям получить глубокое понимание использования памяти GPU во время выполнения модели, предоставляя основу данных для последующего анализа производительности и исследования утечек памяти. Этот узел обычно используется вместе с узлом EndRecordCUDAMemoryHistory для завершения полного цикла записи.

Функциональность узла

Основная функциональность этого узла реализуется путем вызова интерфейса PyTorch torch.cuda.memory._record_memory_history. Пользователи могут настраивать область записи (enabled), уровень детализации информации о стеке вызовов (context и stacks), а также максимальное количество записываемых записей (max_entries). Перед началом записи узел выполняет операцию мягкой очистки кэша и сброса статистики пикового использования памяти, чтобы обеспечить точность записываемых данных.

Описание параметров узла - Start Recording CUDAMemory History

Входные соединения (Inputs)

Название параметраТип данныхОбязательныйЗначение по умолчаниюДопустимые значения/опцииОписание
inputIOДа--Передает полученные входные данные без изменений на последующие узлы, сохраняя связность рабочего процесса.

Параметры управления (Parameters)

Название параметраТип данныхОбязательныйЗначение по умолчаниюДопустимые значения/опцииОписание
enabledCOMBOДаall"all", "state", "None"Определяет, какие события памяти записывать. "all" (записывать все события), "state" (записывать информацию только о выделенной памяти) или "None" (отключить запись).
contextCOMBOДаall"all", "state", "alloc", "None"Определяет, для каких событий записывать стек вызовов. "all" (для всех событий), "alloc" (для вызовов выделения памяти), "state" (для выделенной памяти) или "None" (не записывать стек вызовов).
stacksCOMBOДаpython"python", "all"Определяет уровень детализации записи информации о стеке вызовов. Допустимые значения: "python" (записывать только фреймворки Python/TorchScript/inductor) или "all" (записывать также фреймворки C++).
max_entriesINTДа1000001000 - 10000000Максимальное количество записей для записи.

Выходные данные (Output)

Название параметраТип данныхОписание
inputANYПередает полученные входные данные без изменений на последующие узлы, сохраняя связность рабочего процесса.

Сценарии использования

Когда вы создаете сложный рабочий процесс для генерации изображений или вывода модели и подозреваете наличие утечки памяти или хотите оптимизировать эффективность использования памяти, вы можете вставить этот узел в начало рабочего процесса. Затем в конце процесса используйте узел EndRecordCUDAMemoryHistory для завершения записи и сохранения файла снимка. Наконец, с помощью инструментов анализа (таких как torch.cuda.memory._snapshot()) можно просмотреть подробную историю событий памяти.

Важные замечания

Обратите внимание, что этот узел является экспериментальной функцией, и его базовый API может изменяться с обновлениями версий PyTorch. Включение подробной записи истории (особенно при установке stacks в "all") может привести к определенным накладным расходам на производительность во время выполнения и потреблять дополнительную память для хранения записанной информации.

Ссылка на исходный код узла Start Recording CUDAMemory History

Узел Start Recording CUDAMemory History взят из пакета узлов ComfyUI-KJNodes.

Комментарии

Войдите через GitHub, чтобы участвовать в обсуждении.

Загрузка комментариев…