gpt4 book ai didi

tensorflow - 使用 tfprof 分析 TensorFlow

转载 作者:行者123 更新时间:2023-12-04 15:40:43 37 4
gpt4 key购买 nike

我正在尝试分析 TensorFlow 的计算/内存使用情况,发现 tfprof是我的目的的正确工具。但是,我无法获得所有运营商的 FLOPS。

以下是我在 TensorFlow 存储库 (tensorflow/models/image/cifar10/cifar10_train.py) 中使用 cifar10 教程按照 tfprof 教程所做的操作:

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==========================

然而,结果并不包含所有的操作,例如最大池化、relu、conv 层的梯度。也许这些操作的 flops 统计数据没有定义(RegisterStatistics('flops'))。因此,为了提供运行时信息,如在 tfprof 教程 11) 中,我尝试创建 OpLog (见上面的代码)。

但是,我不确定如何添加操作信息(如何获取操作的条目名称?)。有没有办法添加它包含的所有操作?

或任何其他工具而不是 tfprof?也许是 NVIDIA 的分析工具?

最佳答案

您是对的,其他运算符(operator)在没有 RegisterStatistics('flops') 之前没有 flops。欢迎您做出贡献。

我不确定 NVIDA 是否有工具。

关于tensorflow - 使用 tfprof 分析 TensorFlow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42309202/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com