Я пытаюсь профилировать вычисления/использование памяти TensorFlow и обнаружил, что tfprof - правильный инструмент для моей цели. Однако я не смог получить FLOPS всех операторов.Профилирование TensorFlow с использованием tfprof
Вот что я сделал после tfprof учебника использования cifar10 учебника в TensorFlow хранилище (tensorflow/модель/изображение/cifar10/cifar10_train.py):
run_metadata = tf.RunMetadata()
_, loss_value = sess.run([train_op, loss],
options=tf.RunOptions(trace_level=tf.RunOptions.FULL_TRACE),
run_metadata=run_metadata)
op_log = tfprof_log_pb2.OpLog()
// TODO: add op information
tf.contrib.tfprof.tfprof_logger.write_op_log(
tf.get_default_graph(),
log_dir="/tmp/log_dir",
op_log=op_log,
run_meta=run_metadata)
tf.contrib.tfprof.model_analyzer.print_model_analysis(
tf.get_default_graph(),
run_metadata=run_metadata,
op_log=op_log,
tfprof_options=tf.contrib.tfprof.model_analyzer.FLOAT_OPS_OPTIONS)
И результат
Parsing GraphDef...
Parsing RunMetadata...
Parsing OpLog...
Preparing Views...
=========================Options=============================
-max_depth 10000
-min_bytes 0
-min_micros 0
-min_params 0
-min_float_ops 1
-device_regexes .*
-order_by float_ops
-account_type_regexes .*
-start_name_regexes .*
-trim_name_regexes
-show_name_regexes .*
-hide_name_regexes
-account_displayed_op_only true
-select float_ops
-viz false
-dump_to_file
==================Model Analysis Report======================
_TFProfRoot (0/5.23b flops)
conv2/Conv2D (3.77b/3.77b flops)
conv1/Conv2D (707.79m/707.79m flops)
gradients/local3/MatMul_grad/MatMul (226.49m/226.49m flops)
gradients/local3/MatMul_grad/MatMul_1 (226.49m/226.49m flops)
local3/MatMul (226.49m/226.49m flops)
gradients/local4/MatMul_grad/MatMul (18.87m/18.87m flops)
gradients/local4/MatMul_grad/MatMul_1 (18.87m/18.87m flops)
local4/MatMul (18.87m/18.87m flops)
conv1/BiasAdd (4.72m/4.72m flops)
conv2/BiasAdd (1.18m/1.18m flops)
gradients/softmax_linear/MatMul_grad/MatMul (491.52k/491.52k flops)
gradients/softmax_linear/MatMul_grad/MatMul_1 (491.52k/491.52k flops)
softmax_linear/MatMul (491.52k/491.52k flops)
======================End of Report==========================
Однако результат не содержит всех ops, таких как max pooling, relu, gradient of conv layers. Возможно, статистика флопов этих опций не определена (RegisterStatistics («flops»)). Поэтому, чтобы предоставить информацию о времени выполнения, как в учебнике tfprof 11), я попытался создать OpLog
(см. Код выше).
Тем не менее, я не уверен, как добавить информацию о op (как я могу получить имя входа в ops?). Есть ли способ добавить ВСЕ ops содержит?
Или любой другой инструмент, а не tfprof? Возможно, инструмент профилирования от NVIDIA?
Для этих операционных систем даже OpLog и runtime_meta не предоставляют статистику по флопам? – enc