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メモリの割り当てと解放の履歴の追跡記録を開始します。このノードは常に実行されます(バイパスまたはミュートのステータスに関わらず)。これは診断ツールであり、モデル実行時のGPUメモリ使用状況を深く理解し、後のパフォーマンス分析やメモリリークの調査にデータ基盤を提供することを目的としています。このノードは通常、EndRecordCUDAMemoryHistory ノードと対になって使用され、完全な記録サイクルを完了させます。

ノード機能

このノードは、PyTorchの torch.cuda.memory._record_memory_history インターフェースを呼び出すことで中核機能を実現します。ユーザーは、記録の範囲(enabled)、コールスタック情報の詳細度(contextstacks)、および記録エントリの最大数(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記録するエントリの最大数

出力 (Outputs)

パラメータ名データ型説明
inputANY受信した入力データをそのまま下流ノードに渡し、ワークフローの接続性を維持します。

使用シナリオ

複雑な画像生成やモデル推論のワークフローを構築中に、メモリリークが疑われる場合やメモリ使用効率を最適化したい場合に、このノードをワークフローの開始位置に挿入できます。その後、プロセスの終端で EndRecordCUDAMemoryHistory ノードを使用して記録を終了し、スナップショットファイルを保存します。最後に、分析ツール(例: torch.cuda.memory._snapshot())を使用して詳細なメモリイベント履歴を確認します。

注意事項

このノードは実験的機能であり、その基盤となるAPIはPyTorchのバージョン更新に伴って変更される可能性があることに注意してください。詳細な履歴記録(特に stacks"all" に設定した場合)を有効にすると、一定のランタイムパフォーマンスオーバーヘッドが生じ、記録情報を保存するために追加のメモリを消費する可能性があります。

Start Recording CUDAMemory History ノードソースコードリンク

Start Recording CUDAMemory History ノードは ComfyUI-KJNodes ノードパッケージに含まれています。

コメント

GitHubでサインインしてディスカッションに参加しましょう。

コメントを読み込み中…