network - ¿Cómo perfilar las redes TensorFlow?
tensorflow neural network (3)
En este momento, la mejor forma externa es compilar con un generador de perfiles de CPU / GPU, pero esto debe hacerse manualmente cambiando las opciones en los archivos BUILD
y tensorflow.bzl
(no estoy seguro de dónde).
A continuación, puede obtener información de perfil sobre las funciones que gperftools más tiempo, etc. gperftools usted, puede ejecutar usando gperftools y visualizando mediante pprof
Dado que el código de TensorFlow está vinculado mediante un swig
, no estoy 100% seguro de lo fácil que será obtener los símbolos al leer el perfil a través de pprof
. Es posible que pueda .so
archivo .so
que se creó.
¡Pruébalo y haznos saber si funciona para ti!
¿Hay una manera de calcular el costo de tiempo para cada nodo en una red TensorFlow?
Me resulta difícil localizar los cuellos de botella de rendimiento.
EDITAR: El perfilador de la Timeline
es realmente impresionante ( https://stackoverflow.com/a/37774470/3632556 ).
Si desea saber cuánto tiempo se invirtió en cada operación en TF, puede hacerlo en tensorboard utilizando estadísticas de tiempo de ejecución . Necesitará hacer algo como esto (ver el ejemplo completo en el enlace mencionado anteriormente):
run_options = tf.RunOptions(trace_level=tf.RunOptions.FULL_TRACE)
run_metadata = tf.RunMetadata()
sess.run(<values_you_want_to_execute>, options=run_options, run_metadata=run_metadata)
your_writer.add_run_metadata(run_metadata, ''step%d'' % i)
Mejor que simplemente imprimirlo, lo puedes ver en tensorboard:
Además, al hacer clic en un nodo se mostrará la memoria total exacta, el tiempo de cómputo y los tamaños de salida del tensor.
También ahora tensorflow tiene un debugger . Aquí hay un tutorial de cómo usarlo.
https://github.com/tensorflow/tensorflow/tree/master/tensorflow/core/profiler
Características principales:
Medición de parámetros del modelo, operaciones de flotación, tensor de formas.
Perfile los tiempos de ejecución, el tamaño de memoria solicitado y la ubicación del dispositivo.
Inspeccionar las formas y sus valores de los tensores de control.
Operaciones selectivas de grupo, filtro, cuenta y orden.