Est-il un moyen de déterminer la quantité de mémoire graphique est en cours d'utilisation par TensorFlow?
Tensorflow tend à préallouer la totalité de la mémoire disponible sur le Gpu. Pour le débogage, il est un moyen de dire combien de mémoire est effectivement en cours d'utilisation?
Cela va générer un fichier de suivi nommée calendrier, que vous pouvez ouvrir avec google chrome://traçage. Notez que cela ne donne qu'une approximation à la mémoire GPU des statistiques d'utilisation. Essentiellement, il a procédé à une simulation de GPU d'exécution, mais qui n'ont pas accès à la totalité du graphe de métadonnées. Il a également ne peut pas savoir combien de variables ont été attribuées pour le GPU.
(2) Pour une très grosse mesure de la consommation de mémoire graphique, nvidia-smi affiche le montant total de l'appareil utilisation de la mémoire lors de l'exécution de la commande.
nvprof peut montrer la sur-puce de mémoire partagée d'utilisation et d'enregistrer l'utilisation du CUDA de niveau noyau, mais ne montre pas le mondial appareil/mémoire d'utilisation.
Voici un exemple de commande: nvprof --print-gpu-trace matrixMul
Il y a un peu de code dans tensorflow.contrib.memory_stats ce:
from tensorflow.contrib.memory_stats.python.ops.memory_stats_ops import BytesInUse
with tf.device('/device:GPU:0'): # Replace with device you are interested in
bytes_in_use = BytesInUse()
with tf.Session() as sess:
print(sess.run(bytes_in_use))
(1) Il y a une prise en charge limitée avec Montage pour l'enregistrement des allocations de mémoire. Voici un exemple de son utilisation:
Vous pouvez donner ce code d'essayer avec le MNIST exemple (mnist, avec des résumés)
Cela va générer un fichier de suivi nommée calendrier, que vous pouvez ouvrir avec google chrome://traçage. Notez que cela ne donne qu'une approximation à la mémoire GPU des statistiques d'utilisation. Essentiellement, il a procédé à une simulation de GPU d'exécution, mais qui n'ont pas accès à la totalité du graphe de métadonnées. Il a également ne peut pas savoir combien de variables ont été attribuées pour le GPU.
(2) Pour une très grosse mesure de la consommation de mémoire graphique, nvidia-smi affiche le montant total de l'appareil utilisation de la mémoire lors de l'exécution de la commande.
nvprof peut montrer la sur-puce de mémoire partagée d'utilisation et d'enregistrer l'utilisation du CUDA de niveau noyau, mais ne montre pas le mondial appareil/mémoire d'utilisation.
Voici un exemple de commande: nvprof --print-gpu-trace matrixMul
Et plus de détails ici:
http://docs.nvidia.com/cuda/profiler-users-guide/#abstract
OriginalL'auteur Yao Zhang
La TensorFlow profiler a amélioré la chronologie de la mémoire qui est basé sur de vrais gpu allocateur de mémoire de l'information
https://github.com/tensorflow/tensorflow/tree/master/tensorflow/core/profiler#visualize-time-and-memory
OriginalL'auteur Peter
Il y a un peu de code dans
tensorflow.contrib.memory_stats
ce:OriginalL'auteur Steve
Voici une solution pratique qui a bien fonctionné pour moi:
Désactiver le GPU, la mémoire de pré-allocation de l'aide TF configuration de la session:
exécuter nvidia-smi -l (ou un autre utilitaire) pour surveiller la mémoire GPU de la consommation.
Étape par le biais de votre code avec le débogueur jusqu'à ce que vous voyez à l'inattendu de la mémoire graphique de la consommation.
OriginalL'auteur eitanrich