2017-02-17 44 views
5

Я пытаюсь профилировать вычисления/использование памяти 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?

ответ

2

Вы правы, что другие операторы не имеют флопов, прежде чем у них нет RegisterStatistics («flops»). Вы можете внести свой вклад.

Я не уверен, что у NVIDA есть инструменты для этого.

+0

Для этих операционных систем даже OpLog и runtime_meta не предоставляют статистику по флопам? – enc

 Смежные вопросы

  • Нет связанных вопросов^_^