Start Recording CUDAMemory History(StartRecordCUDAMemoryHistory)
Этот узел вызывает функцию PyTorch torch。
Start Record CUDA Memory History
Узел 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)
| Название параметра | Тип данных | Обязательный | Значение по умолчанию | Допустимые значения/опции | Описание |
|---|---|---|---|---|---|
input | IO | Да | - | - | Передает полученные входные данные без изменений на последующие узлы, сохраняя связность рабочего процесса. |
Параметры управления (Parameters)
| Название параметра | Тип данных | Обязательный | Значение по умолчанию | Допустимые значения/опции | Описание |
|---|---|---|---|---|---|
enabled | COMBO | Да | all | "all", "state", "None" | Определяет, какие события памяти записывать. "all" (записывать все события), "state" (записывать информацию только о выделенной памяти) или "None" (отключить запись). |
context | COMBO | Да | all | "all", "state", "alloc", "None" | Определяет, для каких событий записывать стек вызовов. "all" (для всех событий), "alloc" (для вызовов выделения памяти), "state" (для выделенной памяти) или "None" (не записывать стек вызовов). |
stacks | COMBO | Да | python | "python", "all" | Определяет уровень детализации записи информации о стеке вызовов. Допустимые значения: "python" (записывать только фреймворки Python/TorchScript/inductor) или "all" (записывать также фреймворки C++). |
max_entries | INT | Да | 100000 | 1000 - 10000000 | Максимальное количество записей для записи. |
Выходные данные (Output)
| Название параметра | Тип данных | Описание |
|---|---|---|
| input | ANY | Передает полученные входные данные без изменений на последующие узлы, сохраняя связность рабочего процесса. |
Сценарии использования
Когда вы создаете сложный рабочий процесс для генерации изображений или вывода модели и подозреваете наличие утечки памяти или хотите оптимизировать эффективность использования памяти, вы можете вставить этот узел в начало рабочего процесса. Затем в конце процесса используйте узел EndRecordCUDAMemoryHistory для завершения записи и сохранения файла снимка. Наконец, с помощью инструментов анализа (таких как torch.cuda.memory._snapshot()) можно просмотреть подробную историю событий памяти.
Важные замечания
Обратите внимание, что этот узел является экспериментальной функцией, и его базовый API может изменяться с обновлениями версий PyTorch. Включение подробной записи истории (особенно при установке stacks в "all") может привести к определенным накладным расходам на производительность во время выполнения и потреблять дополнительную память для хранения записанной информации.
Ссылка на исходный код узла Start Recording CUDAMemory History
Узел Start Recording CUDAMemory History взят из пакета узлов ComfyUI-KJNodes.
Комментарии
Войдите через GitHub, чтобы участвовать в обсуждении.