KJNodes/memorygenerated

开始记录 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 内存分配和释放历史的追踪记录。此节点始终运行,无论处于绕过还是禁用状态。它是一个诊断工具,旨在帮助用户深入了解模型运行时的 GPU 内存使用情况,为后续的性能分析和内存泄漏排查提供数据基础。该节点通常与 EndRecordCUDAMemoryHistory 节点配对使用,以完成一个完整的记录周期。

节点功能

该节点通过调用 PyTorch 的 torch.cuda.memory._record_memory_history 接口来实现核心功能。用户可以配置记录的范围(enabled)、调用栈信息的详细程度(contextstacks)以及记录条目的最大数量(max_entries)。在开始记录前,节点会执行软清空缓存和重置峰值内存统计的操作,以确保记录数据的准确性。

节点参数说明 - Start Recording CUDAMemory History

连接输入 (Inputs)

参数名称数据类型必填默认值取值范围/选项说明
inputIO--将接收到的输入数据原样传递至下游节点,保持工作流的连通性。

控件参数 (Parameters)

参数名称数据类型必填默认值取值范围/选项说明
enabledCOMBOall"all", "state", "None"控制内存历史记录的范围。可选值为 "all"(记录所有内存事件)、"state"(仅记录已分配内存的信息)或 "None"(禁用记录)。
contextCOMBOall"all", "state", "alloc", "None"控制哪些内存操作记录其调用栈。可选值为 "all"(记录所有操作)、"alloc"(为分配调用记录)、"state"(为已分配内存记录)或 "None"(不记录调用栈)。
stacksCOMBOpython"python", "all"决定调用栈信息记录的详细程度。可选值为 "python"(仅记录 Python/TorchScript/inductor 框架)或 "all"(同时记录 C++ 框架)。
max_entriesINT1000001000 - 10000000记录条目的最大数量。

输出 (Output)

参数名称数据类型说明
inputANY将接收到的输入数据原样传递至下游节点,保持工作流的连通性。

使用场景

当你在构建一个复杂的图像生成或模型推理工作流,并怀疑存在内存泄漏或希望优化内存使用效率时,可以将此节点插入到工作流的起始位置。随后,在流程的末端使用 EndRecordCUDAMemoryHistory 节点来停止记录并保存快照文件。最后,通过分析工具(如 torch.cuda.memory._snapshot())来查看详细的内存事件历史。

注意事项

请注意,此节点属于实验性功能,其底层 API 可能随 PyTorch 版本更新而变动。启用详细的历史记录(尤其是 stacks 设为 "all")可能会带来一定的运行时性能开销,并消耗额外的内存来存储记录信息。

Start Recording CUDAMemory History 节点源码链接

Start Recording CUDAMemory History 节点来自 ComfyUI-KJNodes 节点包。

评论

使用 GitHub 登录后即可参与讨论。

评论加载中…