Puis-je mesurer le temps d'exécution des opérations individuelles avec TensorFlow?



3 Answers

J'ai utilisé l' objet Timeline pour obtenir l'heure d'exécution pour chaque noeud dans le graphique:

  • vous utilisez un sess.run() classique sess.run() mais aussi les options optionnelles arguments et run_metadata
  • vous créez ensuite un objet Timeline avec les données run_metadata.step_stats

Voici un exemple de programme qui mesure la performance d'une multiplication matricielle:

import tensorflow as tf
from tensorflow.python.client import timeline

x = tf.random_normal([1000, 1000])
y = tf.random_normal([1000, 1000])
res = tf.matmul(x, y)

# Run the graph with full trace option
with tf.Session() as sess:
    run_options = tf.RunOptions(trace_level=tf.RunOptions.FULL_TRACE)
    run_metadata = tf.RunMetadata()
    sess.run(res, options=run_options, run_metadata=run_metadata)

    # Create the Timeline object, and write it to a json
    tl = timeline.Timeline(run_metadata.step_stats)
    ctf = tl.generate_chrome_trace_format()
    with open('timeline.json', 'w') as f:
        f.write(ctf)

Vous pouvez ensuite ouvrir Google Chrome, aller à la page chrome://tracing et charger le fichier timeline.json . Vous devriez voir quelque chose comme:

Question

Je sais que je peux mesurer le temps d'exécution d'un appel à sess.run() , mais est-il possible d'obtenir une granularité plus fine et de mesurer le temps d'exécution des opérations individuelles?




Pour les commentaires de fat-lobyte sous la réponse d' Olivier Moindrot , si vous voulez rassembler le scénario sur toutes les sessions, vous pouvez changer " open('timeline.json', 'w') " en " open('timeline.json', 'a') ".




Pour profiler automatiquement les sessions TensorFlow, vous pouvez utiliser le profileur StackImpact . Pas besoin d'instrumenter des sessions ou d'ajouter des options. Vous avez juste besoin d'initialiser le profileur:

import stackimpact

agent = stackimpact.start(
    agent_key = 'agent key here',
    app_name = 'MyApp')

Les profils d'heure d'exécution et de mémoire seront disponibles dans le tableau de bord.

Informations détaillées dans cet article: Profilage TensorFlow dans les environnements de développement et de production .

Disclaimer: Je travaille pour StackImpact.







Related



Tags

tensorflow tensorflow