Commencer l'enregistrement de l'historique de la mémoire CUDA(StartRecordCUDAMemoryHistory)
Ce nœud appelle la fonction torch。
Start Record CUDA Memory History
Le nœud Commencer l'enregistrement de l'historique de la mémoire CUDA initie le suivi et l'enregistrement de l'historique des allocations et désallocations de mémoire CUDA. Ce nœud s'exécute toujours, quel que soit son statut de contournement ou de muet. C'est un outil de diagnostic conçu pour aider les utilisateurs à obtenir des informations approfondies sur l'utilisation de la mémoire GPU lors de l'exécution du modèle, fournissant une base de données pour les analyses de performances ultérieures et la détection de fuites de mémoire. Ce nœud est généralement utilisé conjointement avec le nœud EndRecordCUDAMemoryHistory pour compléter un cycle d'enregistrement complet.
Fonctionnalités du nœud
Ce nœud implémente sa fonctionnalité principale en appelant l'interface torch.cuda.memory._record_memory_history de PyTorch. Les utilisateurs peuvent configurer la portée de l'enregistrement (enabled), le niveau de détail des informations de la pile d'appels (context et stacks) ainsi que le nombre maximum d'entrées à enregistrer (max_entries). Avant de commencer l'enregistrement, le nœud effectue une purge douce du cache et réinitialise les statistiques de mémoire de pointe pour garantir l'exactitude des données enregistrées.
Explication des paramètres du nœud - Commencer l'enregistrement de l'historique de la mémoire CUDA
Entrées de connexion (Inputs)
| Nom du paramètre | Type de données | Requis | Valeur par défaut | Plage de valeurs/Options | Description |
|---|---|---|---|---|---|
input | IO | Oui | - | - | Transmet les données d'entrée reçues telles quelles aux nœuds suivants, maintenant la connectivité du flux de travail. |
Paramètres de contrôle (Parameters)
| Nom du paramètre | Type de données | Requis | Valeur par défaut | Plage de valeurs/Options | Description |
|---|---|---|---|---|---|
enabled | COMBO | Oui | all | "all", "state", "None" | Contrôle la portée de l'enregistrement de l'historique de la mémoire. Les valeurs possibles sont "all" (enregistrer tous les événements mémoire), "state" (enregistrer uniquement les informations sur la mémoire allouée) ou "None" (désactiver l'enregistrement). |
context | COMBO | Oui | all | "all", "state", "alloc", "None" | Contrôle les opérations mémoire pour lesquelles les piles d'appels sont enregistrées. Les valeurs possibles sont "all" (enregistrer pour toutes les opérations), "alloc" (enregistrer pour les appels d'allocation), "state" (enregistrer pour la mémoire allouée) ou "None" (ne pas enregistrer les piles d'appels). |
stacks | COMBO | Oui | python | "python", "all" | Détermine le niveau de détail de l'enregistrement des informations de la pile d'appels. Les valeurs possibles sont "python" (enregistrer uniquement les frameworks Python/TorchScript/inductor) ou "all" (enregistrer également les frameworks C++). |
max_entries | INT | Oui | 100000 | 1000 - 10000000 | Nombre maximum d'entrées à enregistrer. |
Sortie (Output)
| Nom du paramètre | Type de données | Description |
|---|---|---|
| input | ANY | Transmet les données d'entrée reçues telles quelles aux nœuds suivants, maintenant la connectivité du flux de travail. |
Scénarios d'utilisation
Lorsque vous construisez un flux de travail complexe de génération d'images ou d'inférence de modèle, et que vous soupçonnez une fuite de mémoire ou souhaitez optimiser l'efficacité de l'utilisation de la mémoire, vous pouvez insérer ce nœud au début du flux de travail. Ensuite, utilisez le nœud EndRecordCUDAMemoryHistory à la fin du processus pour arrêter l'enregistrement et sauvegarder le fichier d'instantané. Enfin, utilisez un outil d'analyse (comme torch.cuda.memory._snapshot()) pour consulter l'historique détaillé des événements mémoire.
Notes importantes
Veuillez noter que ce nœud est une fonctionnalité expérimentale, et son API sous-jacente peut changer avec les mises à jour de PyTorch. L'activation d'un enregistrement détaillé (en particulier avec stacks défini sur "all") peut entraîner une certaine surcharge de performance à l'exécution et consommer de la mémoire supplémentaire pour stocker les informations enregistrées.
Lien vers le code source du nœud Commencer l'enregistrement de l'historique de la mémoire CUDA
Le nœud Commencer l'enregistrement de l'historique de la mémoire CUDA provient du pack de nœuds ComfyUI-KJNodes.
Commentaires
Connectez-vous avec GitHub pour rejoindre la discussion.