阅读(6.3k) 书签 (0)

TensorFlow函数教程:tf.profiler.ProfileOptionBuilder

2019-02-16 17:21 更新

tf.profiler.ProfileOptionBuilder函数

类 ProfileOptionBuilder

定义在:tensorflow/python/profiler/option_builder.py。

用于Profiling API的Option Builder。

有关选项的教程,请参阅https://github.com/tensorflow/tensorflow/tree/master/tensorflow/core/profiler/g3doc/options.md

# Users can use pre-built options:
opts = (
    tf.profiler.ProfileOptionBuilder.trainable_variables_parameter())

# Or, build your own options:
opts = (tf.profiler.ProfileOptionBuilder()
    .with_max_depth(10)
    .with_min_micros(1000)
    .select(['accelerator_micros'])
    .with_stdout_output()
    .build()

# Or customize the pre-built options:
opts = (tf.profiler.ProfileOptionBuilder(
    tf.profiler.ProfileOptionBuilder.time_and_memory())
    .with_displaying_options(show_name_regexes=['.*rnn.*'])
    .build())

# Finally, profiling with the options:
_ = tf.profiler.profile(tf.get_default_graph(),
                        run_meta=run_meta,
                        cmd='scope',
                        options=opts)

__init__

__init__(options=None)

构造函数。

参数:

  • options:以可选的初始选项dict开使。

方法

account_displayed_op_only

account_displayed_op_only(is_true)

是否仅考虑显示的profiler节点的统计信息。

参数:

  • is_true:如果为true,则仅显示输出最终显示的节点的统计信息。否则,节点的统计信息由其父节点计算,只要它的类型匹配'account_type_regexes',即使它在输出中隐藏,例如hide_name_regexes。

返回:

self

build

build()

构建profiling选项。

返回:

profiling选项的词典。

float_operation

@staticmethod
float_operation()

用于配置float操作的选项。

有关计算float操作的注意事项,请参阅https://github.com/tensorflow/tensorflow/tree/master/tensorflow/core/profiler/g3doc/profile_model_architecture.md。

返回:

profiling选项的词典。

order_by

order_by(attribute)

根据属性对显示的profiler节点进行排序。

支持的属性包括micros,bytes,occurrence,params等。参考https://github.com/tensorflow/tensorflow/tree/master/tensorflow/core/profiler/g3doc/options.md

参数:

  • attribute:profiler节点具有的属性。

返回:

self

select

select(attributes)

选择要显示的属性。

有关支持的属性,请参阅https://github.com/tensorflow/tensorflow/tree/master/tensorflow/core/profiler/g3doc/options.md。

参数:

  • attributes:profiler节点具有的属性列表。

返回:

self

time_and_memory

@staticmethod
time_and_memory(
    min_micros=1,
    min_bytes=1,
    min_accelerator_micros=0,
    min_cpu_micros=0,
    min_peak_bytes=0,
    min_residual_bytes=0,
    min_output_bytes=0
)

显示操作时间和内存消耗。

参数:

  • min_micros:仅显示执行时间不小于此的profiler节点。它总结了加速器和CPU时间。
  • min_bytes:仅显示请求分配不低于此的字节的profiler节点。
  • min_accelerator_micros:仅显示在加速器(例如GPU)上花费不少于此时间的profiler节点。
  • min_cpu_micros:只显示在cpu上花费的时间不少于此时间的profiler节点。
  • min_peak_bytes:仅显示在峰值时使用不小于此字节的profiler节点。对于由多个图节点组成的profiler节点,它将图节点的peak_bytes相加。
  • min_residual_bytes:只有显示不小于此字节的profiler节点,其在Compute()结束后不会取消分配。对于由多个图节点组成的profiler节点,它对图节点的residual_bytes求和。
  • min_output_bytes:仅显示具有不小于此字节输出的profiler节点。输出不一定由此profiler节点分配。

返回:

profiling选项的词典。

trainable_variables_parameter

@staticmethod
trainable_variables_parameter()

用于配置可训练变量参数的选项。

通常与“scope”视图一起使用。

返回:

profiling选项的词典。

with_accounted_types

with_accounted_types(account_type_regexes)

根据节点类型有选择地计数统计信息。

这里,'types'表示profiler节点的属性。默认情况下,profiler将设备名称(例如:/job:xx/.../device:GPU:0)和操作类型(例如:MatMul)视为profiler节点的属性。用户还可以通过OpLogProto proto将自定义的“类型”关联到profiler节点。

例如,用户可以使用account_type_regexes=['.*gpu:0.*']选择放置在gpu:0上的profiler节点: 

如果节点的属性都不匹配指定的正则表达式,则不显示或计算节点。

参数:

  • account_type_regexes:指定类型的正则表达式列表。

返回:

self

with_empty_output

with_empty_output()

不要生成副作用输出。

with_file_output

with_file_output(outfile)

将结果打印到文件。

with_max_depth

with_max_depth(max_depth)

设置显示的最大深度。

深度取决于profiling视图。对于“scope”视图,它是名称范围层次结构(树)的深度,对于“op”视图,它是操作类型(列表)的数量等。

参数:

  • max_depth:要显示的数据结构的最大深度。

返回:

self

with_min_execution_time

with_min_execution_time(
    min_micros=0,
    min_accelerator_micros=0,
    min_cpu_micros=0
)

只显示消耗不少于“min_micros”的profiler节点。

参数:

  • min_micros:仅显示执行时间不小于此的profiler节点。它总结了加速器和CPU时间。
  • min_accelerator_micros:仅显示在加速器(例如GPU)上花费不少于此时间的profiler节点。
  • min_cpu_micros:只显示在cpu上花费的时间不少于此时间的profiler节点。

返回:

self

with_min_float_operations

with_min_float_operations(min_float_ops)

只显示消耗不少于“min_float_ops”的profiler节点。

有关计算float操作的注意事项,请参阅https://github.com/tensorflow/tensorflow/tree/master/tensorflow/core/profiler/g3doc/profile_model_architecture.md。

参数:

  • min_float_ops:仅显示具有不小于此值的float操作的profiler节点。

返回:

self

with_min_memory

with_min_memory(
    min_bytes=0,
    min_peak_bytes=0,
    min_residual_bytes=0,
    min_output_bytes=0
)

仅显示消耗不少于'min_bytes'的profiler节点。

参数:

  • min_bytes:仅显示请求分配不少于此字节数的profiler节点。
  • min_peak_bytes:仅显示在峰值时使用不小于此字节的profiler节点。对于由多个图节点组成的profiler节点,它将图节点的peak_bytes相加。
  • min_residual_bytes:只有显示不小于此字节的profiler节点,在Compute()结束后不会取消分配。对于由多个图节点组成的profiler节点,它对图节点的residual_bytes求和。
  • min_output_bytes:仅显示具有不小于此字节输出的profiler节点。输出不一定由此profiler节点分配。

返回:

self

with_min_occurrence

with_min_occurrence(min_occurrence)

仅显示包含不少于“min_occurrence”图节点的profiler节点。

“node”表示profiler输出节点,其可以是python线(代码视图),操作类型(op视图)或图形节点(graph/scope视图)。python行包括由该行创建的所有图形节点,而操作类型包括该类型的所有图形节点。

参数:

  • min_occurrence:仅显示包含不少于此的节点。

返回:

self

with_min_parameters

with_min_parameters(min_params)

仅显示不超过'min_params'参数的profiler节点。

'Parameters'通常是指TensorFlow变量的权重。它反映了模型的“capacity”。

参数:

  • min_params:仅显示保存数字参数不小于此值的profiler节点。

返回:

self

with_node_names

with_node_names(
    start_name_regexes=None,
    show_name_regexes=None,
    hide_name_regexes=None,
    trim_name_regexes=None
)

用于选择要显示的profiler节点的正则表达式。

在评估'with_accounted_types'之后,'with_node_names'的计算方法如下:

对于profile数据结构,profile首先找到与“start_name_regexes”匹配的profile节点,并从那里开始显示profile节点。然后,如果节点与“show_name_regexes”匹配且与“hide_name_regexes”不匹配,则会显示该节点。如果节点与'trim_name_regexes'匹配,则profile将停止进一步搜索该分支。

参数:

  • start_name_regexes:要开始显示的node_names正则表达式列表。
  • show_name_regexes:要显示的node_names正则表达式列表。
  • hide_name_regexes:应隐藏的node_names正则表达式列表。
  • trim_name_regexes:从哪里停止的node_names正则表达式列表。

返回:

self

with_pprof_output

with_pprof_output(pprof_file)

生成pprof配置文件gzip文件。

使用pprof文件:

pprof -png --nodecount = 100 --sample_index = 1

参数:

  • pprof_file:输出的文件名,通常以“.pb.gz”为后缀。

返回:

self

with_stdout_output

with_stdout_output()

将结果打印到stdout。

with_step

with_step(step)

用于profiling的配置文件步骤。

这里的“step”是指Profiler.add_step() API 定义的步骤。

参数:

  • step:当配置文件的多个步骤可用时,选择要使用的步骤配置文件。如果为-1,则使用所有可用步骤的平均值。

返回:

self

with_timeline_output

with_timeline_output(timeline_file)

生成时间轴json文件。